{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.6v3AIeXQ/b1/dune-grid_2.9.0-4_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.6v3AIeXQ/b2/dune-grid_2.9.0-4_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,4 +1,4 @@\n \n ae45125d1f036e3601f110cce2c5a258 8365624 debug optional libdune-grid-dev-dbgsym_2.9.0-4_amd64.deb\n a30d171ac63db8784a37f820b4f40f44 1066824 libdevel optional libdune-grid-dev_2.9.0-4_amd64.deb\n- 5461d187dd489538cc7b4f720a0cc497 8287684 doc optional libdune-grid-doc_2.9.0-4_all.deb\n+ fdd895ee3250c7e8467b14b6d5e6982e 8287948 doc optional libdune-grid-doc_2.9.0-4_all.deb\n"}, {"source1": "libdune-grid-doc_2.9.0-4_all.deb", "source2": "libdune-grid-doc_2.9.0-4_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-04-30 15:22:38.000000 debian-binary\n--rw-r--r-- 0 0 0 41404 2024-04-30 15:22:38.000000 control.tar.xz\n--rw-r--r-- 0 0 0 8246088 2024-04-30 15:22:38.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 41412 2024-04-30 15:22:38.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 8246344 2024-04-30 15:22:38.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}, {"source1": "line order", "source2": "line order", "unified_diff": "@@ -1,136 +1,136 @@\n usr/share/doc/libdune-grid-doc/changelog.Debian.gz\n usr/share/doc/libdune-grid-doc/changelog.gz\n usr/share/doc/libdune-grid-doc/copyright\n-usr/share/doc/libdune-grid-doc/doxygen/a00143.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00146.html\n usr/share/doc/libdune-grid-doc/doxygen/a00149.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00155.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00155_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00158.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00158_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00161.html\n usr/share/doc/libdune-grid-doc/doxygen/a00161_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00164.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00164_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00167.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00167_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00170.html\n usr/share/doc/libdune-grid-doc/doxygen/a00170_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00185.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00185_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00176.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00176_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00179.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00179_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00188.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00188_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00194.html\n usr/share/doc/libdune-grid-doc/doxygen/a00194_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00200.html\n usr/share/doc/libdune-grid-doc/doxygen/a00200_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00203.html\n usr/share/doc/libdune-grid-doc/doxygen/a00203_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00209.html\n usr/share/doc/libdune-grid-doc/doxygen/a00209_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00212.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00212_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00215.html\n usr/share/doc/libdune-grid-doc/doxygen/a00215_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00218.html\n usr/share/doc/libdune-grid-doc/doxygen/a00218_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00221.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00221_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00224.html\n usr/share/doc/libdune-grid-doc/doxygen/a00224_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00233.html\n usr/share/doc/libdune-grid-doc/doxygen/a00233_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00236.html\n usr/share/doc/libdune-grid-doc/doxygen/a00236_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00245.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00245_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00251.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00251_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00254.html\n usr/share/doc/libdune-grid-doc/doxygen/a00254_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00260.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00260_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00269.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00269_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00275.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00275_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00257.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00257_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00278.html\n usr/share/doc/libdune-grid-doc/doxygen/a00278_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00287.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00287_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00290.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00290_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00299.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00299_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00308.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00308_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00311.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00311_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00320.html\n usr/share/doc/libdune-grid-doc/doxygen/a00320_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00323.html\n usr/share/doc/libdune-grid-doc/doxygen/a00323_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00326.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00326_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00329.html\n usr/share/doc/libdune-grid-doc/doxygen/a00329_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00335.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00335_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00332.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00332_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00347.html\n usr/share/doc/libdune-grid-doc/doxygen/a00347_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00362.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00362_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00566.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00566_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00569.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00569_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00350.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00350_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00572.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00572_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00578.html\n usr/share/doc/libdune-grid-doc/doxygen/a00578_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00581.html\n usr/share/doc/libdune-grid-doc/doxygen/a00581_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00587.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00587_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00584.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00584_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00590.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00590_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00593.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00593_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00596.html\n usr/share/doc/libdune-grid-doc/doxygen/a00596_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00599.html\n usr/share/doc/libdune-grid-doc/doxygen/a00599_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00605.html\n usr/share/doc/libdune-grid-doc/doxygen/a00605_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00608.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00608_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00614.html\n usr/share/doc/libdune-grid-doc/doxygen/a00614_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00617.html\n usr/share/doc/libdune-grid-doc/doxygen/a00617_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00620.html\n usr/share/doc/libdune-grid-doc/doxygen/a00620_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00623.html\n usr/share/doc/libdune-grid-doc/doxygen/a00623_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00626.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00626_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00629.html\n usr/share/doc/libdune-grid-doc/doxygen/a00629_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00635.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00635_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00638.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00638_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00641.html\n usr/share/doc/libdune-grid-doc/doxygen/a00641_source.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00644.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00644_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00647.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00647_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00650.html\n usr/share/doc/libdune-grid-doc/doxygen/a00650_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00653.html\n usr/share/doc/libdune-grid-doc/doxygen/a00653_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00656.html\n usr/share/doc/libdune-grid-doc/doxygen/a00656_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00659.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00659_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00662.html\n usr/share/doc/libdune-grid-doc/doxygen/a00662_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00665.html\n usr/share/doc/libdune-grid-doc/doxygen/a00665_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00668.html\n usr/share/doc/libdune-grid-doc/doxygen/a00668_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00671.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00674.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00671_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00677.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00677_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00680.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00680_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00683.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00683_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00686.html\n usr/share/doc/libdune-grid-doc/doxygen/a00686_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00689.html\n usr/share/doc/libdune-grid-doc/doxygen/a00689_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00692.html\n usr/share/doc/libdune-grid-doc/doxygen/a00692_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00695.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00695_source.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00698.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00698_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00701.html\n usr/share/doc/libdune-grid-doc/doxygen/a00701_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00704.html\n usr/share/doc/libdune-grid-doc/doxygen/a00704_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00707.html\n usr/share/doc/libdune-grid-doc/doxygen/a00707_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00710.html\n@@ -180,103 +180,103 @@\n usr/share/doc/libdune-grid-doc/doxygen/a00776.html\n usr/share/doc/libdune-grid-doc/doxygen/a00776_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00779.html\n usr/share/doc/libdune-grid-doc/doxygen/a00779_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00782.html\n usr/share/doc/libdune-grid-doc/doxygen/a00782_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00785.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00785_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00788.html\n usr/share/doc/libdune-grid-doc/doxygen/a00788_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00791.html\n usr/share/doc/libdune-grid-doc/doxygen/a00791_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00794.html\n usr/share/doc/libdune-grid-doc/doxygen/a00794_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00797.html\n usr/share/doc/libdune-grid-doc/doxygen/a00797_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00800.html\n usr/share/doc/libdune-grid-doc/doxygen/a00800_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00803.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00803_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00806.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00806_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00809.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00809_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00812.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00812_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00815.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00815_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00818.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00818_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00821.html\n usr/share/doc/libdune-grid-doc/doxygen/a00821_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00824.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00824_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00827.html\n usr/share/doc/libdune-grid-doc/doxygen/a00827_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00830.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00830_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00833.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00833_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00836.html\n usr/share/doc/libdune-grid-doc/doxygen/a00836_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00839.html\n usr/share/doc/libdune-grid-doc/doxygen/a00842.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00842_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00845.html\n usr/share/doc/libdune-grid-doc/doxygen/a00845_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00848.html\n usr/share/doc/libdune-grid-doc/doxygen/a00848_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00851.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00851_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00854.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00854_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00857.html\n usr/share/doc/libdune-grid-doc/doxygen/a00857_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00860.html\n usr/share/doc/libdune-grid-doc/doxygen/a00860_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00863.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00863_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00866.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00866_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00869.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00869_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00872.html\n usr/share/doc/libdune-grid-doc/doxygen/a00875.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00875_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00878.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00878_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00881.html\n+usr/share/doc/libdune-grid-doc/doxygen/a00881_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00884.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00884_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00887.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00887_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00890.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00890_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00893.html\n usr/share/doc/libdune-grid-doc/doxygen/a00893_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00896.html\n usr/share/doc/libdune-grid-doc/doxygen/a00896_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00899.html\n usr/share/doc/libdune-grid-doc/doxygen/a00899_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00902.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00902_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00905.html\n usr/share/doc/libdune-grid-doc/doxygen/a00905_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00908.html\n usr/share/doc/libdune-grid-doc/doxygen/a00908_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00911.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00911_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00914.html\n usr/share/doc/libdune-grid-doc/doxygen/a00914_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00917.html\n usr/share/doc/libdune-grid-doc/doxygen/a00917_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00920.html\n usr/share/doc/libdune-grid-doc/doxygen/a00920_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00923.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00923_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00926.html\n usr/share/doc/libdune-grid-doc/doxygen/a00926_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00929.html\n usr/share/doc/libdune-grid-doc/doxygen/a00929_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00932.html\n usr/share/doc/libdune-grid-doc/doxygen/a00932_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00935.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00935_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00938.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00938_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00941.html\n-usr/share/doc/libdune-grid-doc/doxygen/a00941_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00944.html\n usr/share/doc/libdune-grid-doc/doxygen/a00944_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00947.html\n usr/share/doc/libdune-grid-doc/doxygen/a00947_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00950.html\n usr/share/doc/libdune-grid-doc/doxygen/a00950_source.html\n usr/share/doc/libdune-grid-doc/doxygen/a00953.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": "@@ -3,338 +3,338 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-30 15:22:38.000000 ./usr/share/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-30 15:22:38.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/\n -rw-r--r-- 0 root (0) root (0) 1119 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 5359 2022-10-20 19:04:08.000000 ./usr/share/doc/libdune-grid-doc/changelog.gz\n -rw-r--r-- 0 root (0) root (0) 3525 2023-01-12 15:07:29.000000 ./usr/share/doc/libdune-grid-doc/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/\n--rw-r--r-- 0 root (0) root (0) 5805 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00143.html\n--rw-r--r-- 0 root (0) root (0) 5418 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00149.html\n--rw-r--r-- 0 root (0) root (0) 5199 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00155.html\n--rw-r--r-- 0 root (0) root (0) 25461 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00155_source.html\n--rw-r--r-- 0 root (0) root (0) 7013 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00158.html\n--rw-r--r-- 0 root (0) root (0) 103976 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00158_source.html\n--rw-r--r-- 0 root (0) root (0) 9565 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00161.html\n--rw-r--r-- 0 root (0) root (0) 63478 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00161_source.html\n--rw-r--r-- 0 root (0) root (0) 6609 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00164.html\n--rw-r--r-- 0 root (0) root (0) 18593 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00164_source.html\n+-rw-r--r-- 0 root (0) root (0) 5418 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00146.html\n+-rw-r--r-- 0 root (0) root (0) 5805 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00149.html\n+-rw-r--r-- 0 root (0) root (0) 5199 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00161.html\n+-rw-r--r-- 0 root (0) root (0) 25461 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00161_source.html\n+-rw-r--r-- 0 root (0) root (0) 6609 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00167.html\n+-rw-r--r-- 0 root (0) root (0) 18593 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00167_source.html\n -rw-r--r-- 0 root (0) root (0) 5385 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00170.html\n -rw-r--r-- 0 root (0) root (0) 20167 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00170_source.html\n--rw-r--r-- 0 root (0) root (0) 13228 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00185.html\n--rw-r--r-- 0 root (0) root (0) 196700 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00185_source.html\n--rw-r--r-- 0 root (0) root (0) 5120 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00194.html\n--rw-r--r-- 0 root (0) root (0) 17469 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00194_source.html\n--rw-r--r-- 0 root (0) root (0) 5196 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00200.html\n--rw-r--r-- 0 root (0) root (0) 31839 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00200_source.html\n--rw-r--r-- 0 root (0) root (0) 9780 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00203.html\n--rw-r--r-- 0 root (0) root (0) 51805 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00203_source.html\n--rw-r--r-- 0 root (0) root (0) 5063 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00209.html\n--rw-r--r-- 0 root (0) root (0) 17474 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00209_source.html\n--rw-r--r-- 0 root (0) root (0) 6091 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00215.html\n--rw-r--r-- 0 root (0) root (0) 30251 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00215_source.html\n--rw-r--r-- 0 root (0) root (0) 6300 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00218.html\n--rw-r--r-- 0 root (0) root (0) 23517 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00218_source.html\n--rw-r--r-- 0 root (0) root (0) 6661 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00221.html\n--rw-r--r-- 0 root (0) root (0) 214461 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00221_source.html\n--rw-r--r-- 0 root (0) root (0) 4799 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00224.html\n--rw-r--r-- 0 root (0) root (0) 16219 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00224_source.html\n--rw-r--r-- 0 root (0) root (0) 5309 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00233.html\n--rw-r--r-- 0 root (0) root (0) 68410 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00233_source.html\n--rw-r--r-- 0 root (0) root (0) 6340 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00236.html\n--rw-r--r-- 0 root (0) root (0) 65891 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00236_source.html\n--rw-r--r-- 0 root (0) root (0) 5373 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00254.html\n--rw-r--r-- 0 root (0) root (0) 21853 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00254_source.html\n--rw-r--r-- 0 root (0) root (0) 12860 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00260.html\n--rw-r--r-- 0 root (0) root (0) 36325 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00260_source.html\n--rw-r--r-- 0 root (0) root (0) 11053 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00269.html\n--rw-r--r-- 0 root (0) root (0) 67815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00269_source.html\n--rw-r--r-- 0 root (0) root (0) 6320 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00275.html\n--rw-r--r-- 0 root (0) root (0) 31789 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00275_source.html\n--rw-r--r-- 0 root (0) root (0) 5689 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00278.html\n--rw-r--r-- 0 root (0) root (0) 34593 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00278_source.html\n--rw-r--r-- 0 root (0) root (0) 19517 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00287.html\n--rw-r--r-- 0 root (0) root (0) 49951 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00287_source.html\n--rw-r--r-- 0 root (0) root (0) 8742 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00290.html\n--rw-r--r-- 0 root (0) root (0) 110591 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00290_source.html\n--rw-r--r-- 0 root (0) root (0) 5886 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00299.html\n--rw-r--r-- 0 root (0) root (0) 61147 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00299_source.html\n--rw-r--r-- 0 root (0) root (0) 7585 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00320.html\n--rw-r--r-- 0 root (0) root (0) 61183 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00320_source.html\n--rw-r--r-- 0 root (0) root (0) 4951 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00323.html\n--rw-r--r-- 0 root (0) root (0) 7312 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00323_source.html\n--rw-r--r-- 0 root (0) root (0) 5746 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00329.html\n--rw-r--r-- 0 root (0) root (0) 24813 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00329_source.html\n--rw-r--r-- 0 root (0) root (0) 6590 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00335.html\n--rw-r--r-- 0 root (0) root (0) 34707 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00335_source.html\n--rw-r--r-- 0 root (0) root (0) 4572 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00347.html\n--rw-r--r-- 0 root (0) root (0) 56514 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00347_source.html\n--rw-r--r-- 0 root (0) root (0) 6482 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00362.html\n--rw-r--r-- 0 root (0) root (0) 37355 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00362_source.html\n--rw-r--r-- 0 root (0) root (0) 6305 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00566.html\n--rw-r--r-- 0 root (0) root (0) 45978 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00566_source.html\n--rw-r--r-- 0 root (0) root (0) 8409 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00569.html\n--rw-r--r-- 0 root (0) root (0) 117489 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00569_source.html\n--rw-r--r-- 0 root (0) root (0) 8579 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00578.html\n--rw-r--r-- 0 root (0) root (0) 70890 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00578_source.html\n--rw-r--r-- 0 root (0) root (0) 5365 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00581.html\n--rw-r--r-- 0 root (0) root (0) 14557 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00581_source.html\n--rw-r--r-- 0 root (0) root (0) 4939 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00587.html\n--rw-r--r-- 0 root (0) root (0) 20260 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00587_source.html\n--rw-r--r-- 0 root (0) root (0) 6163 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00596.html\n--rw-r--r-- 0 root (0) root (0) 44588 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00596_source.html\n--rw-r--r-- 0 root (0) root (0) 4784 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00599.html\n--rw-r--r-- 0 root (0) root (0) 12571 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00599_source.html\n--rw-r--r-- 0 root (0) root (0) 5298 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00605.html\n--rw-r--r-- 0 root (0) root (0) 22762 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00605_source.html\n--rw-r--r-- 0 root (0) root (0) 4124 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00608.html\n--rw-r--r-- 0 root (0) root (0) 6412 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00608_source.html\n--rw-r--r-- 0 root (0) root (0) 6562 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00614.html\n--rw-r--r-- 0 root (0) root (0) 206945 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00614_source.html\n--rw-r--r-- 0 root (0) root (0) 5911 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00617.html\n--rw-r--r-- 0 root (0) root (0) 41408 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00617_source.html\n--rw-r--r-- 0 root (0) root (0) 8066 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00620.html\n--rw-r--r-- 0 root (0) root (0) 75019 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00620_source.html\n--rw-r--r-- 0 root (0) root (0) 6134 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00623.html\n--rw-r--r-- 0 root (0) root (0) 105403 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00623_source.html\n+-rw-r--r-- 0 root (0) root (0) 6661 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00176.html\n+-rw-r--r-- 0 root (0) root (0) 214461 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00176_source.html\n+-rw-r--r-- 0 root (0) root (0) 7013 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00179.html\n+-rw-r--r-- 0 root (0) root (0) 103976 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00179_source.html\n+-rw-r--r-- 0 root (0) root (0) 6091 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00188.html\n+-rw-r--r-- 0 root (0) root (0) 30251 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00188_source.html\n+-rw-r--r-- 0 root (0) root (0) 6300 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00194.html\n+-rw-r--r-- 0 root (0) root (0) 23517 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00194_source.html\n+-rw-r--r-- 0 root (0) root (0) 13228 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00200.html\n+-rw-r--r-- 0 root (0) root (0) 196700 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00200_source.html\n+-rw-r--r-- 0 root (0) root (0) 9565 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00203.html\n+-rw-r--r-- 0 root (0) root (0) 63478 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00203_source.html\n+-rw-r--r-- 0 root (0) root (0) 4799 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00209.html\n+-rw-r--r-- 0 root (0) root (0) 16219 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00209_source.html\n+-rw-r--r-- 0 root (0) root (0) 5196 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00212.html\n+-rw-r--r-- 0 root (0) root (0) 31839 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00212_source.html\n+-rw-r--r-- 0 root (0) root (0) 5120 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00215.html\n+-rw-r--r-- 0 root (0) root (0) 17469 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00215_source.html\n+-rw-r--r-- 0 root (0) root (0) 5309 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00218.html\n+-rw-r--r-- 0 root (0) root (0) 68410 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00218_source.html\n+-rw-r--r-- 0 root (0) root (0) 5063 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00224.html\n+-rw-r--r-- 0 root (0) root (0) 17474 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00224_source.html\n+-rw-r--r-- 0 root (0) root (0) 9780 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00233.html\n+-rw-r--r-- 0 root (0) root (0) 51805 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00233_source.html\n+-rw-r--r-- 0 root (0) root (0) 11053 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00236.html\n+-rw-r--r-- 0 root (0) root (0) 67815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00236_source.html\n+-rw-r--r-- 0 root (0) root (0) 6590 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00245.html\n+-rw-r--r-- 0 root (0) root (0) 34707 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00245_source.html\n+-rw-r--r-- 0 root (0) root (0) 4951 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00251.html\n+-rw-r--r-- 0 root (0) root (0) 7312 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00251_source.html\n+-rw-r--r-- 0 root (0) root (0) 5689 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00254.html\n+-rw-r--r-- 0 root (0) root (0) 34593 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00254_source.html\n+-rw-r--r-- 0 root (0) root (0) 12860 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00257.html\n+-rw-r--r-- 0 root (0) root (0) 36325 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00257_source.html\n+-rw-r--r-- 0 root (0) root (0) 6340 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00278.html\n+-rw-r--r-- 0 root (0) root (0) 65891 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00278_source.html\n+-rw-r--r-- 0 root (0) root (0) 8742 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00308.html\n+-rw-r--r-- 0 root (0) root (0) 110591 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00308_source.html\n+-rw-r--r-- 0 root (0) root (0) 4572 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00311.html\n+-rw-r--r-- 0 root (0) root (0) 56514 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00311_source.html\n+-rw-r--r-- 0 root (0) root (0) 5373 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00320.html\n+-rw-r--r-- 0 root (0) root (0) 21853 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00320_source.html\n+-rw-r--r-- 0 root (0) root (0) 19517 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00323.html\n+-rw-r--r-- 0 root (0) root (0) 49951 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00323_source.html\n+-rw-r--r-- 0 root (0) root (0) 6320 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00326.html\n+-rw-r--r-- 0 root (0) root (0) 31789 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00326_source.html\n+-rw-r--r-- 0 root (0) root (0) 7585 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00329.html\n+-rw-r--r-- 0 root (0) root (0) 61183 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00329_source.html\n+-rw-r--r-- 0 root (0) root (0) 5886 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00332.html\n+-rw-r--r-- 0 root (0) root (0) 61147 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00332_source.html\n+-rw-r--r-- 0 root (0) root (0) 5746 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00347.html\n+-rw-r--r-- 0 root (0) root (0) 24813 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00347_source.html\n+-rw-r--r-- 0 root (0) root (0) 6482 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00350.html\n+-rw-r--r-- 0 root (0) root (0) 37355 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00350_source.html\n+-rw-r--r-- 0 root (0) root (0) 5365 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00572.html\n+-rw-r--r-- 0 root (0) root (0) 14557 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00572_source.html\n+-rw-r--r-- 0 root (0) root (0) 4784 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00578.html\n+-rw-r--r-- 0 root (0) root (0) 12571 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00578_source.html\n+-rw-r--r-- 0 root (0) root (0) 4939 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00581.html\n+-rw-r--r-- 0 root (0) root (0) 20260 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00581_source.html\n+-rw-r--r-- 0 root (0) root (0) 6163 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00584.html\n+-rw-r--r-- 0 root (0) root (0) 44588 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00584_source.html\n+-rw-r--r-- 0 root (0) root (0) 8409 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00590.html\n+-rw-r--r-- 0 root (0) root (0) 117489 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00590_source.html\n+-rw-r--r-- 0 root (0) root (0) 5298 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00593.html\n+-rw-r--r-- 0 root (0) root (0) 22762 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00593_source.html\n+-rw-r--r-- 0 root (0) root (0) 4124 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00596.html\n+-rw-r--r-- 0 root (0) root (0) 6412 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00596_source.html\n+-rw-r--r-- 0 root (0) root (0) 8579 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00599.html\n+-rw-r--r-- 0 root (0) root (0) 70890 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00599_source.html\n+-rw-r--r-- 0 root (0) root (0) 6305 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00605.html\n+-rw-r--r-- 0 root (0) root (0) 45978 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00605_source.html\n+-rw-r--r-- 0 root (0) root (0) 5246 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00614.html\n+-rw-r--r-- 0 root (0) root (0) 28785 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00614_source.html\n+-rw-r--r-- 0 root (0) root (0) 27809 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00617.html\n+-rw-r--r-- 0 root (0) root (0) 144963 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00617_source.html\n+-rw-r--r-- 0 root (0) root (0) 5490 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00620.html\n+-rw-r--r-- 0 root (0) root (0) 47805 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00620_source.html\n+-rw-r--r-- 0 root (0) root (0) 6328 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00623.html\n+-rw-r--r-- 0 root (0) root (0) 109815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00623_source.html\n+-rw-r--r-- 0 root (0) root (0) 5911 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00626.html\n+-rw-r--r-- 0 root (0) root (0) 41408 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00626_source.html\n -rw-r--r-- 0 root (0) root (0) 7362 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00629.html\n -rw-r--r-- 0 root (0) root (0) 124772 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00629_source.html\n--rw-r--r-- 0 root (0) root (0) 6020 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00635.html\n--rw-r--r-- 0 root (0) root (0) 55374 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00635_source.html\n--rw-r--r-- 0 root (0) root (0) 5048 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00641.html\n--rw-r--r-- 0 root (0) root (0) 27137 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00641_source.html\n--rw-r--r-- 0 root (0) root (0) 4529 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00647.html\n--rw-r--r-- 0 root (0) root (0) 5593 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00650.html\n--rw-r--r-- 0 root (0) root (0) 65602 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00650_source.html\n--rw-r--r-- 0 root (0) root (0) 5483 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00653.html\n--rw-r--r-- 0 root (0) root (0) 33204 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00653_source.html\n--rw-r--r-- 0 root (0) root (0) 13662 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00656.html\n--rw-r--r-- 0 root (0) root (0) 30515 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00656_source.html\n--rw-r--r-- 0 root (0) root (0) 5060 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00659.html\n--rw-r--r-- 0 root (0) root (0) 5066 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00662.html\n--rw-r--r-- 0 root (0) root (0) 18611 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00662_source.html\n--rw-r--r-- 0 root (0) root (0) 5260 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00665.html\n--rw-r--r-- 0 root (0) root (0) 84757 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00665_source.html\n--rw-r--r-- 0 root (0) root (0) 3890 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00668.html\n--rw-r--r-- 0 root (0) root (0) 128353 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00668_source.html\n--rw-r--r-- 0 root (0) root (0) 4981 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00671.html\n--rw-r--r-- 0 root (0) root (0) 4342 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00674.html\n--rw-r--r-- 0 root (0) root (0) 4823 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00677.html\n--rw-r--r-- 0 root (0) root (0) 22391 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00677_source.html\n--rw-r--r-- 0 root (0) root (0) 6541 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00680.html\n--rw-r--r-- 0 root (0) root (0) 60303 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00680_source.html\n--rw-r--r-- 0 root (0) root (0) 3890 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00683.html\n--rw-r--r-- 0 root (0) root (0) 67786 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00683_source.html\n--rw-r--r-- 0 root (0) root (0) 8632 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00686.html\n--rw-r--r-- 0 root (0) root (0) 91922 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00686_source.html\n--rw-r--r-- 0 root (0) root (0) 5246 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00689.html\n--rw-r--r-- 0 root (0) root (0) 28785 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00689_source.html\n--rw-r--r-- 0 root (0) root (0) 4919 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00692.html\n--rw-r--r-- 0 root (0) root (0) 35859 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00692_source.html\n--rw-r--r-- 0 root (0) root (0) 5490 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00695.html\n--rw-r--r-- 0 root (0) root (0) 47805 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00695_source.html\n--rw-r--r-- 0 root (0) root (0) 6062 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00698.html\n--rw-r--r-- 0 root (0) root (0) 86688 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00698_source.html\n--rw-r--r-- 0 root (0) root (0) 27809 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00701.html\n--rw-r--r-- 0 root (0) root (0) 144963 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00701_source.html\n--rw-r--r-- 0 root (0) root (0) 9467 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00704.html\n--rw-r--r-- 0 root (0) root (0) 156238 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00704_source.html\n--rw-r--r-- 0 root (0) root (0) 6328 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00707.html\n--rw-r--r-- 0 root (0) root (0) 109815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00707_source.html\n--rw-r--r-- 0 root (0) root (0) 9099 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00710.html\n--rw-r--r-- 0 root (0) root (0) 14880 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00710_source.html\n--rw-r--r-- 0 root (0) root (0) 5242 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00713.html\n--rw-r--r-- 0 root (0) root (0) 28809 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00713_source.html\n--rw-r--r-- 0 root (0) root (0) 5326 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00716.html\n--rw-r--r-- 0 root (0) root (0) 40679 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00716_source.html\n--rw-r--r-- 0 root (0) root (0) 5953 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00719.html\n--rw-r--r-- 0 root (0) root (0) 107307 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00719_source.html\n+-rw-r--r-- 0 root (0) root (0) 4342 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00635.html\n+-rw-r--r-- 0 root (0) root (0) 5242 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00638.html\n+-rw-r--r-- 0 root (0) root (0) 28809 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00638_source.html\n+-rw-r--r-- 0 root (0) root (0) 6541 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00641.html\n+-rw-r--r-- 0 root (0) root (0) 60303 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00641_source.html\n+-rw-r--r-- 0 root (0) root (0) 13662 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00644.html\n+-rw-r--r-- 0 root (0) root (0) 30515 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00644_source.html\n+-rw-r--r-- 0 root (0) root (0) 5953 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00647.html\n+-rw-r--r-- 0 root (0) root (0) 107307 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00647_source.html\n+-rw-r--r-- 0 root (0) root (0) 5048 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00650.html\n+-rw-r--r-- 0 root (0) root (0) 27137 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00650_source.html\n+-rw-r--r-- 0 root (0) root (0) 9099 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00653.html\n+-rw-r--r-- 0 root (0) root (0) 14880 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00653_source.html\n+-rw-r--r-- 0 root (0) root (0) 6134 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00656.html\n+-rw-r--r-- 0 root (0) root (0) 105403 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00656_source.html\n+-rw-r--r-- 0 root (0) root (0) 8632 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00659.html\n+-rw-r--r-- 0 root (0) root (0) 91922 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00659_source.html\n+-rw-r--r-- 0 root (0) root (0) 5260 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00662.html\n+-rw-r--r-- 0 root (0) root (0) 84757 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00662_source.html\n+-rw-r--r-- 0 root (0) root (0) 5593 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00665.html\n+-rw-r--r-- 0 root (0) root (0) 65602 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00665_source.html\n+-rw-r--r-- 0 root (0) root (0) 5483 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00668.html\n+-rw-r--r-- 0 root (0) root (0) 33204 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00668_source.html\n+-rw-r--r-- 0 root (0) root (0) 9467 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00671.html\n+-rw-r--r-- 0 root (0) root (0) 156238 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00671_source.html\n+-rw-r--r-- 0 root (0) root (0) 4529 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00677.html\n+-rw-r--r-- 0 root (0) root (0) 5060 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00680.html\n+-rw-r--r-- 0 root (0) root (0) 4981 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00683.html\n+-rw-r--r-- 0 root (0) root (0) 3890 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00686.html\n+-rw-r--r-- 0 root (0) root (0) 67786 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00686_source.html\n+-rw-r--r-- 0 root (0) root (0) 8066 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00689.html\n+-rw-r--r-- 0 root (0) root (0) 75019 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00689_source.html\n+-rw-r--r-- 0 root (0) root (0) 3890 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00692.html\n+-rw-r--r-- 0 root (0) root (0) 128353 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00692_source.html\n+-rw-r--r-- 0 root (0) root (0) 5326 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00701.html\n+-rw-r--r-- 0 root (0) root (0) 40679 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00701_source.html\n+-rw-r--r-- 0 root (0) root (0) 6062 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00704.html\n+-rw-r--r-- 0 root (0) root (0) 86688 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00704_source.html\n+-rw-r--r-- 0 root (0) root (0) 5066 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00707.html\n+-rw-r--r-- 0 root (0) root (0) 18611 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00707_source.html\n+-rw-r--r-- 0 root (0) root (0) 4823 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00710.html\n+-rw-r--r-- 0 root (0) root (0) 22391 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00710_source.html\n+-rw-r--r-- 0 root (0) root (0) 4919 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00713.html\n+-rw-r--r-- 0 root (0) root (0) 35859 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00713_source.html\n+-rw-r--r-- 0 root (0) root (0) 6020 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00716.html\n+-rw-r--r-- 0 root (0) root (0) 55374 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00716_source.html\n+-rw-r--r-- 0 root (0) root (0) 6562 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00719.html\n+-rw-r--r-- 0 root (0) root (0) 206945 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00719_source.html\n -rw-r--r-- 0 root (0) root (0) 3857 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00722.html\n -rw-r--r-- 0 root (0) root (0) 6308 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00722_source.html\n -rw-r--r-- 0 root (0) root (0) 3640 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00725.html\n -rw-r--r-- 0 root (0) root (0) 5092 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00725_source.html\n -rw-r--r-- 0 root (0) root (0) 7065 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00728.html\n -rw-r--r-- 0 root (0) root (0) 110161 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00728_source.html\n--rw-r--r-- 0 root (0) root (0) 5267 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00731.html\n--rw-r--r-- 0 root (0) root (0) 17735 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00731_source.html\n--rw-r--r-- 0 root (0) root (0) 5262 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00734.html\n--rw-r--r-- 0 root (0) root (0) 17911 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00734_source.html\n--rw-r--r-- 0 root (0) root (0) 5366 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00737.html\n--rw-r--r-- 0 root (0) root (0) 17749 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00737_source.html\n--rw-r--r-- 0 root (0) root (0) 5777 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00740.html\n--rw-r--r-- 0 root (0) root (0) 97545 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00740_source.html\n--rw-r--r-- 0 root (0) root (0) 6250 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00743.html\n--rw-r--r-- 0 root (0) root (0) 75966 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00743_source.html\n+-rw-r--r-- 0 root (0) root (0) 5366 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00731.html\n+-rw-r--r-- 0 root (0) root (0) 17749 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00731_source.html\n+-rw-r--r-- 0 root (0) root (0) 6250 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00734.html\n+-rw-r--r-- 0 root (0) root (0) 75966 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00734_source.html\n+-rw-r--r-- 0 root (0) root (0) 5777 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00737.html\n+-rw-r--r-- 0 root (0) root (0) 97545 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00737_source.html\n+-rw-r--r-- 0 root (0) root (0) 5314 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00740.html\n+-rw-r--r-- 0 root (0) root (0) 15637 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00740_source.html\n+-rw-r--r-- 0 root (0) root (0) 6010 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00743.html\n+-rw-r--r-- 0 root (0) root (0) 70782 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00743_source.html\n -rw-r--r-- 0 root (0) root (0) 5205 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00746.html\n -rw-r--r-- 0 root (0) root (0) 32992 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00746_source.html\n--rw-r--r-- 0 root (0) root (0) 5314 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00749.html\n--rw-r--r-- 0 root (0) root (0) 15637 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00749_source.html\n--rw-r--r-- 0 root (0) root (0) 6010 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00752.html\n--rw-r--r-- 0 root (0) root (0) 70782 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00752_source.html\n+-rw-r--r-- 0 root (0) root (0) 5267 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00749.html\n+-rw-r--r-- 0 root (0) root (0) 17735 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00749_source.html\n+-rw-r--r-- 0 root (0) root (0) 5262 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00752.html\n+-rw-r--r-- 0 root (0) root (0) 17911 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00752_source.html\n -rw-r--r-- 0 root (0) root (0) 6398 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00755.html\n -rw-r--r-- 0 root (0) root (0) 30303 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00755_source.html\n--rw-r--r-- 0 root (0) root (0) 5282 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00758.html\n--rw-r--r-- 0 root (0) root (0) 29538 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00758_source.html\n--rw-r--r-- 0 root (0) root (0) 10479 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00761.html\n--rw-r--r-- 0 root (0) root (0) 202684 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00761_source.html\n--rw-r--r-- 0 root (0) root (0) 4773 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00764.html\n--rw-r--r-- 0 root (0) root (0) 21274 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00764_source.html\n--rw-r--r-- 0 root (0) root (0) 5561 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00767.html\n--rw-r--r-- 0 root (0) root (0) 44060 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00767_source.html\n--rw-r--r-- 0 root (0) root (0) 6755 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00770.html\n--rw-r--r-- 0 root (0) root (0) 24441 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00770_source.html\n--rw-r--r-- 0 root (0) root (0) 7292 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00773.html\n--rw-r--r-- 0 root (0) root (0) 63574 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00773_source.html\n--rw-r--r-- 0 root (0) root (0) 6207 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00776.html\n--rw-r--r-- 0 root (0) root (0) 83430 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00776_source.html\n--rw-r--r-- 0 root (0) root (0) 5876 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00779.html\n--rw-r--r-- 0 root (0) root (0) 50355 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00779_source.html\n--rw-r--r-- 0 root (0) root (0) 7174 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00782.html\n--rw-r--r-- 0 root (0) root (0) 181940 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00782_source.html\n--rw-r--r-- 0 root (0) root (0) 4782 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00785.html\n--rw-r--r-- 0 root (0) root (0) 5609 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00788.html\n--rw-r--r-- 0 root (0) root (0) 46924 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00788_source.html\n--rw-r--r-- 0 root (0) root (0) 5727 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00791.html\n--rw-r--r-- 0 root (0) root (0) 49716 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00791_source.html\n--rw-r--r-- 0 root (0) root (0) 5075 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00794.html\n--rw-r--r-- 0 root (0) root (0) 7074 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00794_source.html\n--rw-r--r-- 0 root (0) root (0) 6878 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00797.html\n--rw-r--r-- 0 root (0) root (0) 31190 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00797_source.html\n--rw-r--r-- 0 root (0) root (0) 5419 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00800.html\n--rw-r--r-- 0 root (0) root (0) 14734 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00800_source.html\n--rw-r--r-- 0 root (0) root (0) 4809 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00803.html\n--rw-r--r-- 0 root (0) root (0) 4812 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00806.html\n--rw-r--r-- 0 root (0) root (0) 4824 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00809.html\n--rw-r--r-- 0 root (0) root (0) 4842 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00812.html\n--rw-r--r-- 0 root (0) root (0) 4824 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00815.html\n--rw-r--r-- 0 root (0) root (0) 4815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00818.html\n--rw-r--r-- 0 root (0) root (0) 5679 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00821.html\n--rw-r--r-- 0 root (0) root (0) 20083 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00821_source.html\n--rw-r--r-- 0 root (0) root (0) 4806 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00824.html\n--rw-r--r-- 0 root (0) root (0) 6145 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00827.html\n--rw-r--r-- 0 root (0) root (0) 67658 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00827_source.html\n--rw-r--r-- 0 root (0) root (0) 4812 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00830.html\n--rw-r--r-- 0 root (0) root (0) 4842 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00833.html\n--rw-r--r-- 0 root (0) root (0) 5392 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00836.html\n--rw-r--r-- 0 root (0) root (0) 18253 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00836_source.html\n--rw-r--r-- 0 root (0) root (0) 4800 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00839.html\n--rw-r--r-- 0 root (0) root (0) 6511 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00842.html\n--rw-r--r-- 0 root (0) root (0) 38497 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00842_source.html\n--rw-r--r-- 0 root (0) root (0) 5485 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00845.html\n--rw-r--r-- 0 root (0) root (0) 16907 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00845_source.html\n--rw-r--r-- 0 root (0) root (0) 5367 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00848.html\n--rw-r--r-- 0 root (0) root (0) 12766 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00848_source.html\n--rw-r--r-- 0 root (0) root (0) 5422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00851.html\n--rw-r--r-- 0 root (0) root (0) 15611 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00851_source.html\n--rw-r--r-- 0 root (0) root (0) 4830 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00854.html\n--rw-r--r-- 0 root (0) root (0) 5671 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00857.html\n--rw-r--r-- 0 root (0) root (0) 25335 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00857_source.html\n--rw-r--r-- 0 root (0) root (0) 5422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00860.html\n--rw-r--r-- 0 root (0) root (0) 16725 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00860_source.html\n--rw-r--r-- 0 root (0) root (0) 5457 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00863.html\n--rw-r--r-- 0 root (0) root (0) 15223 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00863_source.html\n--rw-r--r-- 0 root (0) root (0) 6379 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00866.html\n--rw-r--r-- 0 root (0) root (0) 27389 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00866_source.html\n--rw-r--r-- 0 root (0) root (0) 10435 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00869.html\n--rw-r--r-- 0 root (0) root (0) 4803 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00872.html\n--rw-r--r-- 0 root (0) root (0) 5409 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00875.html\n--rw-r--r-- 0 root (0) root (0) 22813 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00875_source.html\n--rw-r--r-- 0 root (0) root (0) 6427 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00878.html\n--rw-r--r-- 0 root (0) root (0) 6698 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00881.html\n--rw-r--r-- 0 root (0) root (0) 6507 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00884.html\n--rw-r--r-- 0 root (0) root (0) 56749 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00884_source.html\n--rw-r--r-- 0 root (0) root (0) 5428 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00887.html\n--rw-r--r-- 0 root (0) root (0) 35449 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00887_source.html\n--rw-r--r-- 0 root (0) root (0) 5596 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00890.html\n--rw-r--r-- 0 root (0) root (0) 32470 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00890_source.html\n--rw-r--r-- 0 root (0) root (0) 4588 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00893.html\n--rw-r--r-- 0 root (0) root (0) 33396 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00893_source.html\n--rw-r--r-- 0 root (0) root (0) 8073 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00896.html\n--rw-r--r-- 0 root (0) root (0) 109305 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00896_source.html\n--rw-r--r-- 0 root (0) root (0) 5053 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00899.html\n--rw-r--r-- 0 root (0) root (0) 19595 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00899_source.html\n--rw-r--r-- 0 root (0) root (0) 4392 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00902.html\n--rw-r--r-- 0 root (0) root (0) 7042 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00902_source.html\n--rw-r--r-- 0 root (0) root (0) 5728 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00905.html\n--rw-r--r-- 0 root (0) root (0) 59110 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00905_source.html\n--rw-r--r-- 0 root (0) root (0) 5681 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00908.html\n--rw-r--r-- 0 root (0) root (0) 31399 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00908_source.html\n--rw-r--r-- 0 root (0) root (0) 18468 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00911.html\n--rw-r--r-- 0 root (0) root (0) 70984 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00911_source.html\n--rw-r--r-- 0 root (0) root (0) 6101 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00914.html\n--rw-r--r-- 0 root (0) root (0) 90923 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00914_source.html\n--rw-r--r-- 0 root (0) root (0) 5405 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00917.html\n--rw-r--r-- 0 root (0) root (0) 16806 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00917_source.html\n--rw-r--r-- 0 root (0) root (0) 5775 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00920.html\n--rw-r--r-- 0 root (0) root (0) 26815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00920_source.html\n--rw-r--r-- 0 root (0) root (0) 7112 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00923.html\n--rw-r--r-- 0 root (0) root (0) 52837 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00923_source.html\n--rw-r--r-- 0 root (0) root (0) 9039 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00926.html\n--rw-r--r-- 0 root (0) root (0) 93746 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00926_source.html\n--rw-r--r-- 0 root (0) root (0) 5595 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00929.html\n--rw-r--r-- 0 root (0) root (0) 20374 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00929_source.html\n--rw-r--r-- 0 root (0) root (0) 6971 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00932.html\n--rw-r--r-- 0 root (0) root (0) 53204 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00932_source.html\n--rw-r--r-- 0 root (0) root (0) 7167 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00935.html\n--rw-r--r-- 0 root (0) root (0) 37022 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00935_source.html\n--rw-r--r-- 0 root (0) root (0) 5630 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00938.html\n--rw-r--r-- 0 root (0) root (0) 35213 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00938_source.html\n--rw-r--r-- 0 root (0) root (0) 6046 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00941.html\n--rw-r--r-- 0 root (0) root (0) 49272 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00941_source.html\n--rw-r--r-- 0 root (0) root (0) 5610 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00944.html\n--rw-r--r-- 0 root (0) root (0) 34861 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00944_source.html\n--rw-r--r-- 0 root (0) root (0) 5461 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00947.html\n--rw-r--r-- 0 root (0) root (0) 19623 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00947_source.html\n--rw-r--r-- 0 root (0) root (0) 9681 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00950.html\n--rw-r--r-- 0 root (0) root (0) 93783 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00950_source.html\n--rw-r--r-- 0 root (0) root (0) 5653 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00953.html\n--rw-r--r-- 0 root (0) root (0) 25024 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00953_source.html\n--rw-r--r-- 0 root (0) root (0) 11343 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00956.html\n--rw-r--r-- 0 root (0) root (0) 294404 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00956_source.html\n--rw-r--r-- 0 root (0) root (0) 5576 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00959.html\n--rw-r--r-- 0 root (0) root (0) 20605 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00959_source.html\n--rw-r--r-- 0 root (0) root (0) 6276 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00962.html\n--rw-r--r-- 0 root (0) root (0) 22625 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00962_source.html\n--rw-r--r-- 0 root (0) root (0) 5926 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00965.html\n--rw-r--r-- 0 root (0) root (0) 75093 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00965_source.html\n--rw-r--r-- 0 root (0) root (0) 5776 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00968.html\n--rw-r--r-- 0 root (0) root (0) 39431 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00968_source.html\n+-rw-r--r-- 0 root (0) root (0) 5405 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00758.html\n+-rw-r--r-- 0 root (0) root (0) 16806 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00758_source.html\n+-rw-r--r-- 0 root (0) root (0) 9681 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00761.html\n+-rw-r--r-- 0 root (0) root (0) 93783 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00761_source.html\n+-rw-r--r-- 0 root (0) root (0) 6046 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00764.html\n+-rw-r--r-- 0 root (0) root (0) 49272 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00764_source.html\n+-rw-r--r-- 0 root (0) root (0) 5610 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00767.html\n+-rw-r--r-- 0 root (0) root (0) 34861 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00767_source.html\n+-rw-r--r-- 0 root (0) root (0) 6971 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00770.html\n+-rw-r--r-- 0 root (0) root (0) 53204 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00770_source.html\n+-rw-r--r-- 0 root (0) root (0) 5461 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00773.html\n+-rw-r--r-- 0 root (0) root (0) 19623 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00773_source.html\n+-rw-r--r-- 0 root (0) root (0) 5681 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00776.html\n+-rw-r--r-- 0 root (0) root (0) 31399 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00776_source.html\n+-rw-r--r-- 0 root (0) root (0) 5630 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00779.html\n+-rw-r--r-- 0 root (0) root (0) 35213 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00779_source.html\n+-rw-r--r-- 0 root (0) root (0) 5728 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00782.html\n+-rw-r--r-- 0 root (0) root (0) 59110 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00782_source.html\n+-rw-r--r-- 0 root (0) root (0) 6101 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00785.html\n+-rw-r--r-- 0 root (0) root (0) 90923 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00785_source.html\n+-rw-r--r-- 0 root (0) root (0) 6276 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00788.html\n+-rw-r--r-- 0 root (0) root (0) 22625 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00788_source.html\n+-rw-r--r-- 0 root (0) root (0) 5926 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00791.html\n+-rw-r--r-- 0 root (0) root (0) 75093 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00791_source.html\n+-rw-r--r-- 0 root (0) root (0) 18468 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00794.html\n+-rw-r--r-- 0 root (0) root (0) 70984 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00794_source.html\n+-rw-r--r-- 0 root (0) root (0) 5595 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00797.html\n+-rw-r--r-- 0 root (0) root (0) 20374 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00797_source.html\n+-rw-r--r-- 0 root (0) root (0) 9039 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00800.html\n+-rw-r--r-- 0 root (0) root (0) 93746 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00800_source.html\n+-rw-r--r-- 0 root (0) root (0) 5576 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00803.html\n+-rw-r--r-- 0 root (0) root (0) 20605 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00803_source.html\n+-rw-r--r-- 0 root (0) root (0) 7167 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00806.html\n+-rw-r--r-- 0 root (0) root (0) 37022 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00806_source.html\n+-rw-r--r-- 0 root (0) root (0) 11343 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00809.html\n+-rw-r--r-- 0 root (0) root (0) 294404 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00809_source.html\n+-rw-r--r-- 0 root (0) root (0) 5775 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00812.html\n+-rw-r--r-- 0 root (0) root (0) 26815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00812_source.html\n+-rw-r--r-- 0 root (0) root (0) 7112 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00815.html\n+-rw-r--r-- 0 root (0) root (0) 52837 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00815_source.html\n+-rw-r--r-- 0 root (0) root (0) 5653 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00818.html\n+-rw-r--r-- 0 root (0) root (0) 25024 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00818_source.html\n+-rw-r--r-- 0 root (0) root (0) 5609 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00821.html\n+-rw-r--r-- 0 root (0) root (0) 46924 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00821_source.html\n+-rw-r--r-- 0 root (0) root (0) 5876 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00824.html\n+-rw-r--r-- 0 root (0) root (0) 50355 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00824_source.html\n+-rw-r--r-- 0 root (0) root (0) 5727 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00827.html\n+-rw-r--r-- 0 root (0) root (0) 49716 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00827_source.html\n+-rw-r--r-- 0 root (0) root (0) 5596 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00830.html\n+-rw-r--r-- 0 root (0) root (0) 32470 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00830_source.html\n+-rw-r--r-- 0 root (0) root (0) 7292 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00833.html\n+-rw-r--r-- 0 root (0) root (0) 63574 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00833_source.html\n+-rw-r--r-- 0 root (0) root (0) 6507 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00836.html\n+-rw-r--r-- 0 root (0) root (0) 56749 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00836_source.html\n+-rw-r--r-- 0 root (0) root (0) 6698 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00839.html\n+-rw-r--r-- 0 root (0) root (0) 6427 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00842.html\n+-rw-r--r-- 0 root (0) root (0) 6207 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00845.html\n+-rw-r--r-- 0 root (0) root (0) 83430 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00845_source.html\n+-rw-r--r-- 0 root (0) root (0) 5428 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00848.html\n+-rw-r--r-- 0 root (0) root (0) 35449 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00848_source.html\n+-rw-r--r-- 0 root (0) root (0) 4782 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00851.html\n+-rw-r--r-- 0 root (0) root (0) 5053 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00854.html\n+-rw-r--r-- 0 root (0) root (0) 19595 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00854_source.html\n+-rw-r--r-- 0 root (0) root (0) 4588 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00857.html\n+-rw-r--r-- 0 root (0) root (0) 33396 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00857_source.html\n+-rw-r--r-- 0 root (0) root (0) 5075 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00860.html\n+-rw-r--r-- 0 root (0) root (0) 7074 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00860_source.html\n+-rw-r--r-- 0 root (0) root (0) 4830 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00863.html\n+-rw-r--r-- 0 root (0) root (0) 4806 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00866.html\n+-rw-r--r-- 0 root (0) root (0) 5679 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00869.html\n+-rw-r--r-- 0 root (0) root (0) 20083 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00869_source.html\n+-rw-r--r-- 0 root (0) root (0) 4842 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00872.html\n+-rw-r--r-- 0 root (0) root (0) 4812 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00875.html\n+-rw-r--r-- 0 root (0) root (0) 5422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00878.html\n+-rw-r--r-- 0 root (0) root (0) 16725 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00878_source.html\n+-rw-r--r-- 0 root (0) root (0) 6511 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00881.html\n+-rw-r--r-- 0 root (0) root (0) 38497 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00881_source.html\n+-rw-r--r-- 0 root (0) root (0) 4812 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00884.html\n+-rw-r--r-- 0 root (0) root (0) 4800 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00887.html\n+-rw-r--r-- 0 root (0) root (0) 4809 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00890.html\n+-rw-r--r-- 0 root (0) root (0) 5422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00893.html\n+-rw-r--r-- 0 root (0) root (0) 15611 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00893_source.html\n+-rw-r--r-- 0 root (0) root (0) 5485 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00896.html\n+-rw-r--r-- 0 root (0) root (0) 16907 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00896_source.html\n+-rw-r--r-- 0 root (0) root (0) 5392 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00899.html\n+-rw-r--r-- 0 root (0) root (0) 18253 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00899_source.html\n+-rw-r--r-- 0 root (0) root (0) 4824 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00902.html\n+-rw-r--r-- 0 root (0) root (0) 6878 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00905.html\n+-rw-r--r-- 0 root (0) root (0) 31190 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00905_source.html\n+-rw-r--r-- 0 root (0) root (0) 5671 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00908.html\n+-rw-r--r-- 0 root (0) root (0) 25335 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00908_source.html\n+-rw-r--r-- 0 root (0) root (0) 4842 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00911.html\n+-rw-r--r-- 0 root (0) root (0) 5409 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00914.html\n+-rw-r--r-- 0 root (0) root (0) 22813 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00914_source.html\n+-rw-r--r-- 0 root (0) root (0) 5419 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00917.html\n+-rw-r--r-- 0 root (0) root (0) 14734 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00917_source.html\n+-rw-r--r-- 0 root (0) root (0) 6379 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00920.html\n+-rw-r--r-- 0 root (0) root (0) 27389 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00920_source.html\n+-rw-r--r-- 0 root (0) root (0) 4803 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00923.html\n+-rw-r--r-- 0 root (0) root (0) 5457 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00926.html\n+-rw-r--r-- 0 root (0) root (0) 15223 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00926_source.html\n+-rw-r--r-- 0 root (0) root (0) 6145 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00929.html\n+-rw-r--r-- 0 root (0) root (0) 67658 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00929_source.html\n+-rw-r--r-- 0 root (0) root (0) 5367 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00932.html\n+-rw-r--r-- 0 root (0) root (0) 12766 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00932_source.html\n+-rw-r--r-- 0 root (0) root (0) 4824 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00935.html\n+-rw-r--r-- 0 root (0) root (0) 4815 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00938.html\n+-rw-r--r-- 0 root (0) root (0) 10435 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00941.html\n+-rw-r--r-- 0 root (0) root (0) 8073 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00944.html\n+-rw-r--r-- 0 root (0) root (0) 109305 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00944_source.html\n+-rw-r--r-- 0 root (0) root (0) 7174 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00947.html\n+-rw-r--r-- 0 root (0) root (0) 181940 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00947_source.html\n+-rw-r--r-- 0 root (0) root (0) 10479 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00950.html\n+-rw-r--r-- 0 root (0) root (0) 202684 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00950_source.html\n+-rw-r--r-- 0 root (0) root (0) 5282 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00953.html\n+-rw-r--r-- 0 root (0) root (0) 29538 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00953_source.html\n+-rw-r--r-- 0 root (0) root (0) 5561 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00956.html\n+-rw-r--r-- 0 root (0) root (0) 44060 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00956_source.html\n+-rw-r--r-- 0 root (0) root (0) 6755 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00959.html\n+-rw-r--r-- 0 root (0) root (0) 24441 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00959_source.html\n+-rw-r--r-- 0 root (0) root (0) 5776 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00962.html\n+-rw-r--r-- 0 root (0) root (0) 39431 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00962_source.html\n+-rw-r--r-- 0 root (0) root (0) 4392 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00965.html\n+-rw-r--r-- 0 root (0) root (0) 7042 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00965_source.html\n+-rw-r--r-- 0 root (0) root (0) 4773 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00968.html\n+-rw-r--r-- 0 root (0) root (0) 21274 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00968_source.html\n -rw-r--r-- 0 root (0) root (0) 11084 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00971.html\n -rw-r--r-- 0 root (0) root (0) 85247 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00971_source.html\n -rw-r--r-- 0 root (0) root (0) 20497 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00974.html\n -rw-r--r-- 0 root (0) root (0) 131930 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00974_source.html\n -rw-r--r-- 0 root (0) root (0) 6267 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00977.html\n -rw-r--r-- 0 root (0) root (0) 34603 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00977_source.html\n--rw-r--r-- 0 root (0) root (0) 5797 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00980.html\n--rw-r--r-- 0 root (0) root (0) 15177 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00980_source.html\n--rw-r--r-- 0 root (0) root (0) 6976 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00983.html\n--rw-r--r-- 0 root (0) root (0) 72069 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00983_source.html\n--rw-r--r-- 0 root (0) root (0) 5748 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00986.html\n--rw-r--r-- 0 root (0) root (0) 75408 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00986_source.html\n--rw-r--r-- 0 root (0) root (0) 4860 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00989.html\n--rw-r--r-- 0 root (0) root (0) 28013 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00989_source.html\n--rw-r--r-- 0 root (0) root (0) 3901 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00992.html\n--rw-r--r-- 0 root (0) root (0) 7474 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00992_source.html\n--rw-r--r-- 0 root (0) root (0) 6057 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00995.html\n--rw-r--r-- 0 root (0) root (0) 31609 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00995_source.html\n--rw-r--r-- 0 root (0) root (0) 5913 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00998.html\n--rw-r--r-- 0 root (0) root (0) 35730 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00998_source.html\n--rw-r--r-- 0 root (0) root (0) 4930 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01001.html\n--rw-r--r-- 0 root (0) root (0) 35765 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01001_source.html\n--rw-r--r-- 0 root (0) root (0) 8466 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01004.html\n--rw-r--r-- 0 root (0) root (0) 89922 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01004_source.html\n--rw-r--r-- 0 root (0) root (0) 6737 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01007.html\n--rw-r--r-- 0 root (0) root (0) 35422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01007_source.html\n--rw-r--r-- 0 root (0) root (0) 5394 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01010.html\n--rw-r--r-- 0 root (0) root (0) 13066 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01010_source.html\n--rw-r--r-- 0 root (0) root (0) 5084 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01013.html\n--rw-r--r-- 0 root (0) root (0) 41563 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01013_source.html\n--rw-r--r-- 0 root (0) root (0) 6274 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01016.html\n--rw-r--r-- 0 root (0) root (0) 45892 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01016_source.html\n--rw-r--r-- 0 root (0) root (0) 4586 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01019.html\n--rw-r--r-- 0 root (0) root (0) 36100 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01019_source.html\n+-rw-r--r-- 0 root (0) root (0) 4930 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00980.html\n+-rw-r--r-- 0 root (0) root (0) 35765 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00980_source.html\n+-rw-r--r-- 0 root (0) root (0) 4586 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00983.html\n+-rw-r--r-- 0 root (0) root (0) 36100 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00983_source.html\n+-rw-r--r-- 0 root (0) root (0) 6057 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00986.html\n+-rw-r--r-- 0 root (0) root (0) 31609 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00986_source.html\n+-rw-r--r-- 0 root (0) root (0) 8466 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00989.html\n+-rw-r--r-- 0 root (0) root (0) 89922 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00989_source.html\n+-rw-r--r-- 0 root (0) root (0) 5084 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00992.html\n+-rw-r--r-- 0 root (0) root (0) 41563 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00992_source.html\n+-rw-r--r-- 0 root (0) root (0) 4860 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00995.html\n+-rw-r--r-- 0 root (0) root (0) 28013 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00995_source.html\n+-rw-r--r-- 0 root (0) root (0) 6737 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00998.html\n+-rw-r--r-- 0 root (0) root (0) 35422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a00998_source.html\n+-rw-r--r-- 0 root (0) root (0) 5394 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01001.html\n+-rw-r--r-- 0 root (0) root (0) 13066 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01001_source.html\n+-rw-r--r-- 0 root (0) root (0) 3901 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01004.html\n+-rw-r--r-- 0 root (0) root (0) 7474 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01004_source.html\n+-rw-r--r-- 0 root (0) root (0) 6976 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01007.html\n+-rw-r--r-- 0 root (0) root (0) 72069 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01007_source.html\n+-rw-r--r-- 0 root (0) root (0) 6274 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01010.html\n+-rw-r--r-- 0 root (0) root (0) 45892 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01010_source.html\n+-rw-r--r-- 0 root (0) root (0) 5748 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01013.html\n+-rw-r--r-- 0 root (0) root (0) 75408 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01013_source.html\n+-rw-r--r-- 0 root (0) root (0) 5797 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01016.html\n+-rw-r--r-- 0 root (0) root (0) 15177 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01016_source.html\n+-rw-r--r-- 0 root (0) root (0) 5913 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01019.html\n+-rw-r--r-- 0 root (0) root (0) 35730 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01019_source.html\n -rw-r--r-- 0 root (0) root (0) 12012 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01022.html\n -rw-r--r-- 0 root (0) root (0) 426919 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01022_source.html\n -rw-r--r-- 0 root (0) root (0) 13644 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01025.html\n -rw-r--r-- 0 root (0) root (0) 11824 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01026.html\n -rw-r--r-- 0 root (0) root (0) 3567 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01027.html\n -rw-r--r-- 0 root (0) root (0) 12041 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01028.html\n -rw-r--r-- 0 root (0) root (0) 12838 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/a01028.png\n@@ -1913,15 +1913,15 @@\n -rw-r--r-- 0 root (0) root (0) 10279 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dir_e5ae0335e78259a61f16e105bf289391.html\n -rw-r--r-- 0 root (0) root (0) 19649 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dir_e5ae0335e78259a61f16e105bf289391_dep.png\n -rw-r--r-- 0 root (0) root (0) 15164 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dir_e674d52c20e1458e445f655f7f65f7ce.html\n -rw-r--r-- 0 root (0) root (0) 3025 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dir_e674d52c20e1458e445f655f7f65f7ce_dep.png\n -rw-r--r-- 0 root (0) root (0) 4976 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dir_e68e8157741866f444e17edd764ebbae.html\n -rw-r--r-- 0 root (0) root (0) 4837 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dir_e68e8157741866f444e17edd764ebbae_dep.png\n -rw-r--r-- 0 root (0) root (0) 45631 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/doxygen.css\n--rw-r--r-- 0 root (0) root (0) 220212 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dune-grid.tag.gz\n+-rw-r--r-- 0 root (0) root (0) 220224 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dune-grid.tag.gz\n -rw-r--r-- 0 root (0) root (0) 7704 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/dynsections.js\n -rw-r--r-- 0 root (0) root (0) 1265 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/examplegrid1c.png\n -rw-r--r-- 0 root (0) root (0) 1949 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/examplegrid1cs.png\n -rw-r--r-- 0 root (0) root (0) 2042 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/examplegrid1gen.png\n -rw-r--r-- 0 root (0) root (0) 2422 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/examplegrid1genangle.png\n -rw-r--r-- 0 root (0) root (0) 2247 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/examplegrid1s.png\n -rw-r--r-- 0 root (0) root (0) 5575 2024-04-30 15:22:38.000000 ./usr/share/doc/libdune-grid-doc/doxygen/examplegrid2a.png\n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00149.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00149.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: recipe-iterate-over-grid.cc File Reference\n+dune-grid: recipe-integration.cc File Reference\n \n \n \n \n \n \n \n@@ -71,22 +71,24 @@\n \n \n \n
\n
\n Functions
\n-
recipe-iterate-over-grid.cc File Reference
\n+
recipe-integration.cc File Reference
\n
\n
\n
#include <math.h>
\n #include <iostream>
\n #include <dune/common/parallel/mpihelper.hh>
\n #include <dune/common/parametertreeparser.hh>
\n #include <dune/common/timer.hh>
\n+#include <dune/geometry/referenceelements.hh>
\n+#include <dune/geometry/quadraturerules.hh>
\n #include <dune/grid/yaspgrid.hh>
\n
\n \n \n \n

\n Functions

int main (int argc, char **argv)
 
\n@@ -113,18 +115,21 @@\n \n )\n \n \n \n
\n

[set up grid]

\n-

[extract gridview]

\n-

[iterate over codim]

\n-

[iterate over grid view]

\n-

[access to subentities]

\n+

[small vectors and matrices]

\n+

[a function to integrate]

\n+

[integration with midpoint rule]

\n+

[integration with quadrature rule]

\n+

[integrating a flux]

\n+
Examples
recipe-integration.cc, and recipe-iterate-over-grid.cc.
\n+
\n \n
\n \n \n \n
\n Generated by \"doxygen\"/ 1.9.8\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,34 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bo_\bc\n * _\br_\be_\bc_\bi_\bp_\be_\bs\n _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-recipe-iterate-over-grid.cc File Reference\n+recipe-integration.cc File Reference\n #include \n #include \n #include \n #include \n #include \n+#include \n+#include \n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n int\u00a0 _\bm_\ba_\bi_\bn (int argc, char **argv)\n \u00a0\n *\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bai\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n int main ( int\u00a0 a\bar\brg\bgc\bc,\n char **\u00a0 a\bar\brg\bgv\bv\u00a0\n )\n [set up grid]\n-[extract gridview]\n-[iterate over codim]\n-[iterate over grid view]\n-[access to subentities]\n+[small vectors and matrices]\n+[a function to integrate]\n+[integration with midpoint rule]\n+[integration with quadrature rule]\n+[integrating a flux]\n+ Examples\n+ _\br_\be_\bc_\bi_\bp_\be_\b-_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\b._\bc_\bc, and _\br_\be_\bc_\bi_\bp_\be_\b-_\bi_\bt_\be_\br_\ba_\bt_\be_\b-_\bo_\bv_\be_\br_\b-_\bg_\br_\bi_\bd_\b._\bc_\bc.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00161.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00161.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordinates.hh File Reference\n+dune-grid: yaspgridindexsets.hh File Reference\n \n \n \n \n \n \n \n@@ -71,63 +71,38 @@\n \n \n \n
\n \n-
coordinates.hh File Reference
\n+Namespaces
\n+
yaspgridindexsets.hh File Reference
\n \n
\n \n-

This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here. \n+

level-wise, non-persistent, consecutive indices for YaspGrid \n More...

\n-
#include <array>
\n-#include <bitset>
\n-#include <vector>
\n-#include <dune/common/fvector.hh>
\n-
\n+\n

Go to the source code of this file.

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

\n Classes

class  Dune::EquidistantCoordinates< ct, dim >
 Container for equidistant coordinates in a YaspGrid. More...
 
class  Dune::EquidistantOffsetCoordinates< ct, dim >
 Container for equidistant coordinates in a YaspGrid with non-trivial origin. More...
 
class  Dune::TensorProductCoordinates< ct, dim >
 Coordinate container for a tensor product YaspGrid. More...
class  Dune::YaspIndexSet< GridImp, isLeafIndexSet >
 Implementation of Level- and LeafIndexSets for YaspGrid. More...
 
\n \n \n \n \n-\n-\n-

\n Namespaces

namespace  Dune
 Include standard header files.
 
namespace  Dune::Yasp
 
\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

\n-Functions

template<class ct , int dim>
std::ostream & Dune::operator<< (std::ostream &s, EquidistantCoordinates< ct, dim > &c)
 
template<class ct , int dim>
std::ostream & Dune::operator<< (std::ostream &s, EquidistantOffsetCoordinates< ct, dim > &c)
 
template<class ct , int dim>
std::ostream & Dune::operator<< (std::ostream &s, TensorProductCoordinates< ct, dim > &c)
 
\n

Detailed Description

\n-

This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here.

\n+

level-wise, non-persistent, consecutive indices for YaspGrid

\n
\n \n
\n Generated by \"doxygen\"/ 1.9.8\n
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,55 +1,23 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\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-coordinates.hh File Reference\n-This provides container classes for the coordinates to be used in YaspGrid Upon\n-implementation of the tensorproduct feature, the coordinate information has\n-been encapsulated to keep performance for the equidistant grid. Containers for\n-equidistant and tensorproduct grids are provided here. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+yaspgridindexsets.hh File Reference\n+level-wise, non-persistent, consecutive indices for YaspGrid _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Container for equidistant coordinates in a _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Container for equidistant coordinates in a _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with non-trivial\n- origin. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Coordinate container for a tensor product _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bi_\bs_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b _\b>\n+\u00a0 Implementation of Level- and LeafIndexSets for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp\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 &s, _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs< ct,\n- dim > &c)\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 &s,\n- _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs< ct, dim > &c)\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 &s, _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs<\n- ct, dim > &c)\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-This provides container classes for the coordinates to be used in YaspGrid Upon\n-implementation of the tensorproduct feature, the coordinate information has\n-been encapsulated to keep performance for the equidistant grid. Containers for\n-equidistant and tensorproduct grids are provided here.\n+level-wise, non-persistent, consecutive indices for YaspGrid\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00161_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00161_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordinates.hh Source File\n+dune-grid: yaspgridindexsets.hh Source File\n \n \n \n \n \n \n \n@@ -74,384 +74,143 @@\n \n \n
\n
\n-
coordinates.hh
\n+
yaspgridindexsets.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
\n
4// vi: set et ts=4 sw=2 sts=2:
\n-
5#ifndef DUNE_GRID_YASPGRID_COORDINATES_HH
\n-
6#define DUNE_GRID_YASPGRID_COORDINATES_HH
\n+
5#ifndef DUNE_GRID_YASPGRIDINDEXSET_HH
\n+
6#define DUNE_GRID_YASPGRIDINDEXSET_HH
\n
7
\n-
8#include <array>
\n-
9#include <bitset>
\n-
10#include <vector>
\n-
11
\n-
12#include <dune/common/fvector.hh>
\n-
13
\n-
21namespace Dune
\n-
22{
\n-
27 template<class ct, int dim>
\n-
\n-\n-
29 {
\n-
30 public:
\n-
32 typedef ct ctype;
\n-
34 static const int dimension = dim;
\n-
35
\n-\n-
38
\n-
\n-
45 EquidistantCoordinates(const Dune::FieldVector<ct,dim>& upperRight, const std::array<int,dim>& s)
\n-
46 : _s(s)
\n-
47 {
\n-
48 for (int i=0; i<dim; i++)
\n-
49 _h[i] = upperRight[i] / _s[i];
\n-
50 }
\n-
\n+
14namespace Dune {
\n+
15
\n+
22 template<class GridImp, bool isLeafIndexSet>
\n+
\n+\n+
24 : public IndexSet< GridImp, YaspIndexSet< GridImp, isLeafIndexSet >, unsigned int >
\n+
25 {
\n+\n+\n+
28
\n+
29 public:
\n+
30 typedef typename Base::IndexType IndexType;
\n+
31
\n+
32 using Base::subIndex;
\n+
33
\n+
\n+
35 YaspIndexSet ( const GridImp &g, int l )
\n+
36 : grid( g ),
\n+
37 level( l )
\n+
38 {
\n+
39 assert(not isLeafIndexSet);
\n+
40
\n+
41 // contains a single element type;
\n+
42 for (int codim=0; codim<=GridImp::dimension; codim++)
\n+
43 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));
\n+
44 }
\n+
\n+
45
\n+
\n+
47 YaspIndexSet ( const GridImp &g )
\n+
48 : grid( g )
\n+
49 {
\n+
50 assert(isLeafIndexSet);
\n
51
\n-
\n-
56 inline ct meshsize(int d, [[maybe_unused]] int i) const
\n-
57 {
\n-
58 return _h[d];
\n-
59 }
\n-
\n-
60
\n-
\n-
65 inline ct coordinate(int d, int i) const
\n-
66 {
\n-
67 return i*_h[d];
\n-
68 }
\n+
52 // contains a single element type;
\n+
53 for (int codim=0; codim<=GridImp::dimension; codim++)
\n+
54 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));
\n+
55 }
\n+
\n+
56
\n+
58 template<int cc>
\n+
\n+
59 IndexType index (const typename std::remove_const<GridImp>::type::Traits::template Codim<cc>::Entity& e) const
\n+
60 {
\n+
61 return e.impl().compressedIndex();
\n+
62 }
\n+
\n+
63
\n+
65 template< int cc >
\n+
\n+
66 IndexType subIndex ( const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e,
\n+
67 int i, unsigned int codim ) const
\n+
68 {
\n+
69 return e.impl().subCompressedIndex(i, codim);
\n+
70 }
\n
\n-
69
\n+
71
\n
\n-
73 inline int size(int d) const
\n+
73 std::size_t size (GeometryType type) const
\n
74 {
\n-
75 return _s[d];
\n-
76 }
\n-
\n-
77
\n-
\n-
84 EquidistantCoordinates<ct,dim> refine(std::bitset<dim> ovlp_low, std::bitset<dim> ovlp_up, int overlap, bool keep_ovlp) const
\n-
85 {
\n-
86 //determine new size and meshsize
\n-
87 std::array<int,dim> news;
\n-
88 Dune::FieldVector<ct,dim> newUpperRight;
\n-
89
\n-
90 for (int i=0; i<dim; i++)
\n-
91 {
\n-
92 news[i] = 2 * _s[i];
\n-
93 if (!keep_ovlp)
\n-
94 {
\n-
95 if (ovlp_low[i])
\n-
96 news[i] -= overlap;
\n-
97 if (ovlp_up[i])
\n-
98 news[i] -= overlap;
\n-
99 }
\n-
100
\n-
101 newUpperRight[i] = (_h[i] / ct(2.)) * news[i];
\n-
102 }
\n-
103 return EquidistantCoordinates<ct,dim>(newUpperRight,news);
\n-
104 }
\n-
\n-
105
\n-
\n-
107 void print(std::ostream& s) const
\n-
108 {
\n-
109 s << "Printing equidistant coordinate information:" << std::endl;
\n-
110 s << "Meshsize: " << _h << std::endl << "Size: " << _s << std::endl;
\n-
111 }
\n+
75 return (isLeafIndexSet)
\n+
76 ? grid.size( type )
\n+
77 : grid.size( level, type );
\n+
78 }
\n+
\n+
79
\n+
\n+
81 std::size_t size (int codim) const
\n+
82 {
\n+
83 return (isLeafIndexSet)
\n+
84 ? grid.size( codim )
\n+
85 : grid.size( level, codim );
\n+
86 }
\n+
\n+
87
\n+
89 template<class EntityType>
\n+
\n+
90 bool contains (const EntityType& e) const
\n+
91 {
\n+
92 return (isLeafIndexSet)
\n+
93 ? e.level() == grid.maxLevel()
\n+
94 : e.level() == level;
\n+
95 }
\n+
\n+
96
\n+
97 std::vector< GeometryType > types ( int codim ) const { return mytypes[ codim ]; }
\n+
98
\n+
\n+
100 const std::vector<GeometryType>& geomTypes (int codim) const
\n+
101 {
\n+
102 return mytypes[codim];
\n+
103 }
\n+
\n+
104
\n+
105 private:
\n+
106 const GridImp& grid;
\n+
107 int level;
\n+
108 std::vector<GeometryType> mytypes[std::remove_const<GridImp>::type::dimension+1];
\n+
109 };
\n
\n+
110
\n+
111} // namespace Dune
\n
112
\n-
113 private:
\n-
114 Dune::FieldVector<ct,dim> _h;
\n-
115 std::array<int,dim> _s;
\n-
116 };
\n-
\n-
117
\n-
118 template<class ct, int dim>
\n-
\n-
119 inline std::ostream& operator<< (std::ostream& s, EquidistantCoordinates<ct,dim>& c)
\n-
120 {
\n-
121 c.print(s);
\n-
122 return s;
\n-
123 }
\n-
\n-
124
\n-
129 template<class ct, int dim>
\n-
\n-\n-
131 {
\n-
132 public:
\n-
134 typedef ct ctype;
\n-
136 static const int dimension = dim;
\n-
137
\n-\n-
140
\n-
\n-
149 EquidistantOffsetCoordinates(const Dune::FieldVector<ct,dim>& lowerLeft, const Dune::FieldVector<ct,dim>& upperRight, const std::array<int,dim>& s)
\n-
150 : _origin(lowerLeft), _s(s)
\n-
151 {
\n-
152 for (int i=0; i<dim; i++)
\n-
153 _h[i] = (upperRight[i] - lowerLeft[i]) / s[i];
\n-
154 }
\n-
\n-
155
\n-
\n-
160 inline ct meshsize(int d, [[maybe_unused]] int i) const
\n-
161 {
\n-
162 return _h[d];
\n-
163 }
\n-
\n-
164
\n-
\n-
169 inline ct coordinate(int d, int i) const
\n-
170 {
\n-
171 return _origin[d] + i*_h[d];
\n-
172 }
\n-
\n-
173
\n-
\n-
177 inline int size(int d) const
\n-
178 {
\n-
179 return _s[d];
\n-
180 }
\n-
\n-
181
\n-
\n-
185 inline ct origin(int d) const
\n-
186 {
\n-
187 return _origin[d];
\n-
188 }
\n-
\n-
189
\n-
\n-
196 EquidistantOffsetCoordinates<ct,dim> refine(std::bitset<dim> ovlp_low, std::bitset<dim> ovlp_up, int overlap, bool keep_ovlp) const
\n-
197 {
\n-
198 //determine new size and meshsize
\n-
199 std::array<int,dim> news;
\n-
200 Dune::FieldVector<ct,dim> newUpperRight;
\n-
201
\n-
202 for (int i=0; i<dim; i++)
\n-
203 {
\n-
204 news[i] = 2 * _s[i];
\n-
205 if (!keep_ovlp)
\n-
206 {
\n-
207 if (ovlp_low[i])
\n-
208 news[i] -= overlap;
\n-
209 if (ovlp_up[i])
\n-
210 news[i] -= overlap;
\n-
211 }
\n-
212
\n-
213 newUpperRight[i] = _origin[i] + (_h[i] / ct(2.)) * news[i];
\n-
214 }
\n-
215 return EquidistantOffsetCoordinates<ct,dim>(_origin,newUpperRight,news);
\n-
216 }
\n-
\n-
217
\n-
\n-
219 void print(std::ostream& s) const
\n-
220 {
\n-
221 s << "Printing equidistant coordinate information:" << std::endl;
\n-
222 s << "Meshsize: " << _h << std::endl << "Size: " << _s << std::endl;
\n-
223 s << "Offset to origin: " << _origin << std::endl;
\n-
224 }
\n-
\n-
225
\n-
226 private:
\n-
227 Dune::FieldVector<ct,dim> _origin;
\n-
228 Dune::FieldVector<ct,dim> _h;
\n-
229 std::array<int,dim> _s;
\n-
230 };
\n-
\n-
231
\n-
232 template<class ct, int dim>
\n-
\n-
233 inline std::ostream& operator<< (std::ostream& s, EquidistantOffsetCoordinates<ct,dim>& c)
\n-
234 {
\n-
235 c.print(s);
\n-
236 return s;
\n-
237 }
\n-
\n-
238
\n-
243 template<class ct, int dim>
\n-
\n-\n-
245 {
\n-
246 public:
\n-
248 typedef ct ctype;
\n-
250 static const int dimension = dim;
\n-
251
\n-\n-
254
\n-
\n-
261 TensorProductCoordinates(const std::array<std::vector<ct>,dim>& c, const std::array<int,dim>& offset)
\n-
262 : _c(c),_offset(offset)
\n-
263 {}
\n-
\n-
264
\n-
\n-
269 inline ct meshsize(int d, int i) const
\n-
270 {
\n-
271 return _c[d][i+1-_offset[d]] - _c[d][i-_offset[d]];
\n-
272 }
\n-
\n-
273
\n-
\n-
278 inline ct coordinate(int d, int i) const
\n-
279 {
\n-
280 return _c[d][i-_offset[d]];
\n-
281 }
\n-
\n-
282
\n-
\n-
286 inline int size(int d) const
\n-
287 {
\n-
288 return _c[d].size() - 1;
\n-
289 }
\n-
\n-
290
\n-
\n-
297 TensorProductCoordinates<ct,dim> refine(std::bitset<dim> ovlp_low, std::bitset<dim> ovlp_up, int overlap, bool keep_ovlp) const
\n-
298 {
\n-
299 std::array<std::vector<ct>,dim> newcoords;
\n-
300 std::array<int,dim> newoffset(_offset);
\n-
301 for (int i=0; i<dim; i++)
\n-
302 {
\n-
303 newoffset[i] *= 2;
\n-
304
\n-
305 //determine new size
\n-
306 int newsize = 2 * _c[i].size() - 1;
\n-
307 if (!keep_ovlp)
\n-
308 {
\n-
309 if (ovlp_low[i])
\n-
310 {
\n-
311 newoffset[i] += overlap;
\n-
312 newsize -= overlap;
\n-
313 }
\n-
314 if (ovlp_up[i])
\n-
315 newsize -= overlap;
\n-
316 }
\n-
317 newcoords[i].resize(newsize);
\n-
318
\n-
319 typename std::vector<ct>::const_iterator it = _c[i].begin();
\n-
320 typename std::vector<ct>::const_iterator end = _c[i].end()-1;
\n-
321 typename std::vector<ct>::iterator iit = newcoords[i].begin() - 1;
\n-
322 if (!keep_ovlp)
\n-
323 {
\n-
324 if (ovlp_low[i])
\n-
325 {
\n-
326 it += overlap/2;
\n-
327 if (overlap%2)
\n-
328 *(++iit) = (*it + *(++it)) / ct(2.);
\n-
329 }
\n-
330 if (ovlp_up[i])
\n-
331 end -= overlap/2;
\n-
332 }
\n-
333
\n-
334 for (;it!=end;)
\n-
335 {
\n-
336 *(++iit) = *it;
\n-
337 *(++iit) = (*it + *(++it)) / ct(2.);
\n-
338 }
\n-
339
\n-
340 if (++iit != newcoords[i].end())
\n-
341 *iit = *it;
\n-
342 }
\n-
343 return TensorProductCoordinates<ct,dim>(newcoords, newoffset);
\n-
344 }
\n-
\n-
345
\n-
\n-
347 void print(std::ostream& s) const
\n-
348 {
\n-
349 s << "Printing TensorProduct Coordinate information:" << std::endl;
\n-
350 for (int i=0; i<dim; i++)
\n-
351 {
\n-
352 s << "Direction " << i << ": " << _c[i].size() << " coordinates" << std::endl;
\n-
353 for (std::size_t j=0; j<_c[i].size(); j++)
\n-
354 s << _c[i][j] << std::endl;
\n-
355 }
\n-
356 }
\n-
\n-
357
\n-
358 private:
\n-
359 std::array<std::vector<ct>,dim> _c;
\n-
360 std::array<int,dim> _offset;
\n-
361 };
\n-
\n-
362
\n-
363 template<class ct, int dim>
\n-
\n-
364 inline std::ostream& operator<< (std::ostream& s, TensorProductCoordinates<ct,dim>& c)
\n-
365 {
\n-
366 c.print(s);
\n-
367 return s;
\n-
368 }
\n-
\n-
369
\n-
\n-
370 namespace Yasp {
\n-
371 template<class ctype, std::size_t dim>
\n-
372 bool checkIfMonotonous(const std::array<std::vector<ctype>, dim>& coords)
\n-
373 {
\n-
374 for (std::size_t i=0; i<dim; i++)
\n-
375 {
\n-
376 if (coords[i].size() <= 1)
\n-
377 return false;
\n-
378 for (std::size_t j=1; j<coords[i].size(); j++)
\n-
379 if (coords[i][j] < coords[i][j-1])
\n-
380 return false;
\n-
381 }
\n-
382 return true;
\n-
383 }
\n-
384 } // namespace Yasp
\n-
\n-
385} // namespace Dune
\n-
386
\n-
387#endif
\n-
std::ostream & operator<<(std::ostream &out, const PartitionType &type)
write a PartitionType to a stream
Definition gridenums.hh:72
\n+
113#endif // DUNE_GRID_YASPGRIDINDEXSET_HH
\n
Include standard header files.
Definition agrid.hh:60
\n-
Container for equidistant coordinates in a YaspGrid.
Definition coordinates.hh:29
\n-
ct coordinate(int d, int i) const
Definition coordinates.hh:65
\n-
int size(int d) const
Definition coordinates.hh:73
\n-
static const int dimension
export dimension
Definition coordinates.hh:34
\n-
void print(std::ostream &s) const
print information on this container
Definition coordinates.hh:107
\n-
EquidistantCoordinates()
default constructor
Definition coordinates.hh:37
\n-
EquidistantCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
Definition coordinates.hh:84
\n-
ct ctype
export the coordinate type
Definition coordinates.hh:32
\n-
EquidistantCoordinates(const Dune::FieldVector< ct, dim > &upperRight, const std::array< int, dim > &s)
construct a container with all necessary information
Definition coordinates.hh:45
\n-
ct meshsize(int d, int i) const
Definition coordinates.hh:56
\n-
Container for equidistant coordinates in a YaspGrid with non-trivial origin.
Definition coordinates.hh:131
\n-
EquidistantOffsetCoordinates()
default constructor
Definition coordinates.hh:139
\n-
EquidistantOffsetCoordinates(const Dune::FieldVector< ct, dim > &lowerLeft, const Dune::FieldVector< ct, dim > &upperRight, const std::array< int, dim > &s)
construct a container with all necessary information
Definition coordinates.hh:149
\n-
EquidistantOffsetCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
Definition coordinates.hh:196
\n-
void print(std::ostream &s) const
print information on this container
Definition coordinates.hh:219
\n-
ct meshsize(int d, int i) const
Definition coordinates.hh:160
\n-
ct origin(int d) const
Definition coordinates.hh:185
\n-
int size(int d) const
Definition coordinates.hh:177
\n-
ct ctype
export the coordinate type
Definition coordinates.hh:134
\n-
static const int dimension
export dimension
Definition coordinates.hh:136
\n-
ct coordinate(int d, int i) const
Definition coordinates.hh:169
\n-
Coordinate container for a tensor product YaspGrid.
Definition coordinates.hh:245
\n-
void print(std::ostream &s) const
print information on this container
Definition coordinates.hh:347
\n-
ct meshsize(int d, int i) const
Definition coordinates.hh:269
\n-
ct coordinate(int d, int i) const
Definition coordinates.hh:278
\n-
static const int dimension
export dimension
Definition coordinates.hh:250
\n-
TensorProductCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
Definition coordinates.hh:297
\n-
TensorProductCoordinates(const std::array< std::vector< ct >, dim > &c, const std::array< int, dim > &offset)
construct a container with all necessary information
Definition coordinates.hh:261
\n-
TensorProductCoordinates()
the default constructor
Definition coordinates.hh:253
\n-
ct ctype
export the coordinate type
Definition coordinates.hh:248
\n-
int size(int d) const
Definition coordinates.hh:286
\n+
Index Set Interface base class.
Definition indexidset.hh:78
\n+
IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
Map a subentity to an index.
Definition indexidset.hh:153
\n+
Export the type of the entity used as parameter in the index(...) method.
Definition indexidset.hh:87
\n+
Implementation of Level- and LeafIndexSets for YaspGrid.
Definition yaspgridindexsets.hh:25
\n+
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition yaspgridindexsets.hh:100
\n+
YaspIndexSet(const GridImp &g)
Level grid view constructor stores reference to a grid and level.
Definition yaspgridindexsets.hh:47
\n+
YaspIndexSet(const GridImp &g, int l)
Level grid view constructor stores reference to a grid and level.
Definition yaspgridindexsets.hh:35
\n+
IndexType index(const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e) const
get index of an entity
Definition yaspgridindexsets.hh:59
\n+
bool contains(const EntityType &e) const
return true if the given entity is contained in .
Definition yaspgridindexsets.hh:90
\n+
std::size_t size(GeometryType type) const
get number of entities of given type and level (the level is known to the object)
Definition yaspgridindexsets.hh:73
\n+
IndexType subIndex(const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
get index of subentity of an entity
Definition yaspgridindexsets.hh:66
\n+
std::vector< GeometryType > types(int codim) const
Definition yaspgridindexsets.hh:97
\n+
std::size_t size(int codim) const
return size of set for a given codim
Definition yaspgridindexsets.hh:81
\n+
Base::IndexType IndexType
Definition yaspgridindexsets.hh:30
\n
\n \n
\n Generated by \"doxygen\"/ 1.9.8\n
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,426 +1,168 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-coordinates.hh\n+yaspgridindexsets.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRID_COORDINATES_HH\n-6#define DUNE_GRID_YASPGRID_COORDINATES_HH\n+5#ifndef DUNE_GRID_YASPGRIDINDEXSET_HH\n+6#define DUNE_GRID_YASPGRIDINDEXSET_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13\n-21namespace _\bD_\bu_\bn_\be\n-22{\n-27 template\n-_\b2_\b8 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-29 {\n-30 public:\n-_\b3_\b2 typedef ct _\bc_\bt_\by_\bp_\be;\n-_\b3_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-35\n-_\b3_\b7 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs() {}\n-38\n-_\b4_\b5 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs(const Dune::FieldVector& upperRight, const\n-std::array& s)\n-46 : _s(s)\n-47 {\n-48 for (int i=0; i\n+_\b2_\b3 class _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+24 : public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt< GridImp, YaspIndexSet< GridImp, isLeafIndexSet >,\n+unsigned int >\n+25 {\n+26 typedef _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bi_\bs_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b _\b> _\bT_\bh_\bi_\bs;\n+27 typedef _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bT_\bh_\bi_\bs_\b,_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b> _\bB_\ba_\bs_\be;\n+28\n+29 public:\n+_\b3_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n+31\n+32 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx;\n+33\n+_\b3_\b5 _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( const GridImp &g, int l )\n+36 : grid( g ),\n+37 level( l )\n+38 {\n+39 assert(not isLeafIndexSet);\n+40\n+41 // contains a single element type;\n+42 for (int codim=0; codim<=GridImp::dimension; codim++)\n+43 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));\n+44 }\n+45\n+_\b4_\b7 _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( const GridImp &g )\n+48 : grid( g )\n+49 {\n+50 assert(isLeafIndexSet);\n 51\n-_\b5_\b6 inline ct _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(int d, [[maybe_unused]] int i) const\n-57 {\n-58 return _h[d];\n-59 }\n-60\n-_\b6_\b5 inline ct _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be(int d, int i) const\n-66 {\n-67 return i*_h[d];\n-68 }\n-69\n-_\b7_\b3 inline int _\bs_\bi_\bz_\be(int d) const\n+52 // contains a single element type;\n+53 for (int codim=0; codim<=GridImp::dimension; codim++)\n+54 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));\n+55 }\n+56\n+58 template\n+_\b5_\b9 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const typename std::remove_const::type::Traits::\n+template Codim::Entity& e) const\n+60 {\n+61 return e.impl().compressedIndex();\n+62 }\n+63\n+65 template< int cc >\n+_\b6_\b6 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const typename std::remove_const< GridImp >::type::\n+Traits::template Codim< cc >::Entity &e,\n+67 int i, unsigned int codim ) const\n+68 {\n+69 return e.impl().subCompressedIndex(i, codim);\n+70 }\n+71\n+_\b7_\b3 std::size_t _\bs_\bi_\bz_\be (GeometryType type) const\n 74 {\n-75 return _s[d];\n-76 }\n-77\n-_\b8_\b4 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b> _\br_\be_\bf_\bi_\bn_\be(std::bitset ovlp_low, std::\n-bitset ovlp_up, int overlap, bool keep_ovlp) const\n-85 {\n-86 //determine new size and meshsize\n-87 std::array news;\n-88 Dune::FieldVector newUpperRight;\n-89\n-90 for (int i=0; i\n+_\b9_\b0 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e) const\n 91 {\n-92 news[i] = 2 * _s[i];\n-93 if (!keep_ovlp)\n-94 {\n-95 if (ovlp_low[i])\n-96 news[i] -= overlap;\n-97 if (ovlp_up[i])\n-98 news[i] -= overlap;\n-99 }\n-100\n-101 newUpperRight[i] = (_h[i] / ct(2.)) * news[i];\n-102 }\n-103 return _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>(newUpperRight,news);\n-104 }\n-105\n-_\b1_\b0_\b7 void _\bp_\br_\bi_\bn_\bt(std::ostream& s) const\n-108 {\n-109 s << \"Printing equidistant coordinate information:\" << std::endl;\n-110 s << \"Meshsize: \" << _h << std::endl << \"Size: \" << _s << std::endl;\n-111 }\n+92 return (isLeafIndexSet)\n+93 ? e.level() == grid.maxLevel()\n+94 : e.level() == level;\n+95 }\n+96\n+_\b9_\b7 std::vector< GeometryType > _\bt_\by_\bp_\be_\bs ( int codim ) const { return mytypes\n+[ codim ]; }\n+98\n+_\b1_\b0_\b0 const std::vector& _\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs (int codim) const\n+101 {\n+102 return mytypes[codim];\n+103 }\n+104\n+105 private:\n+106 const GridImp& grid;\n+107 int level;\n+108 std::vector mytypes[std::remove_const::type::\n+dimension+1];\n+109 };\n+110\n+111} // namespace Dune\n 112\n-113 private:\n-114 Dune::FieldVector _h;\n-115 std::array _s;\n-116 };\n-117\n-118 template\n-_\b1_\b1_\b9 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n-_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>& c)\n-120 {\n-121 c._\bp_\br_\bi_\bn_\bt(s);\n-122 return s;\n-123 }\n-124\n-129 template\n-_\b1_\b3_\b0 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-131 {\n-132 public:\n-_\b1_\b3_\b4 typedef ct _\bc_\bt_\by_\bp_\be;\n-_\b1_\b3_\b6 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-137\n-_\b1_\b3_\b9 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs() {}\n-140\n-_\b1_\b4_\b9 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs(const Dune::FieldVector& lowerLeft,\n-const Dune::FieldVector& upperRight, const std::array& s)\n-150 : _origin(lowerLeft), _s(s)\n-151 {\n-152 for (int i=0; i _\br_\be_\bf_\bi_\bn_\be(std::bitset ovlp_low,\n-std::bitset ovlp_up, int overlap, bool keep_ovlp) const\n-197 {\n-198 //determine new size and meshsize\n-199 std::array news;\n-200 Dune::FieldVector newUpperRight;\n-201\n-202 for (int i=0; i(_origin,newUpperRight,news);\n-216 }\n-217\n-_\b2_\b1_\b9 void _\bp_\br_\bi_\bn_\bt(std::ostream& s) const\n-220 {\n-221 s << \"Printing equidistant coordinate information:\" << std::endl;\n-222 s << \"Meshsize: \" << _h << std::endl << \"Size: \" << _s << std::endl;\n-223 s << \"Offset to origin: \" << _origin << std::endl;\n-224 }\n-225\n-226 private:\n-227 Dune::FieldVector _origin;\n-228 Dune::FieldVector _h;\n-229 std::array _s;\n-230 };\n-231\n-232 template\n-_\b2_\b3_\b3 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n-_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>& c)\n-234 {\n-235 c._\bp_\br_\bi_\bn_\bt(s);\n-236 return s;\n-237 }\n-238\n-243 template\n-_\b2_\b4_\b4 class _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-245 {\n-246 public:\n-_\b2_\b4_\b8 typedef ct _\bc_\bt_\by_\bp_\be;\n-_\b2_\b5_\b0 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-251\n-_\b2_\b5_\b3 _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs() {}\n-254\n-_\b2_\b6_\b1 _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs(const std::array,dim>& c, const\n-std::array& offset)\n-262 : _c(c),_offset(offset)\n-263 {}\n-264\n-_\b2_\b6_\b9 inline ct _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(int d, int i) const\n-270 {\n-271 return _c[d][i+1-_offset[d]] - _c[d][i-_offset[d]];\n-272 }\n-273\n-_\b2_\b7_\b8 inline ct _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be(int d, int i) const\n-279 {\n-280 return _c[d][i-_offset[d]];\n-281 }\n-282\n-_\b2_\b8_\b6 inline int _\bs_\bi_\bz_\be(int d) const\n-287 {\n-288 return _c[d].size() - 1;\n-289 }\n-290\n-_\b2_\b9_\b7 _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b> _\br_\be_\bf_\bi_\bn_\be(std::bitset ovlp_low, std::\n-bitset ovlp_up, int overlap, bool keep_ovlp) const\n-298 {\n-299 std::array,dim> newcoords;\n-300 std::array newoffset(_offset);\n-301 for (int i=0; i::const_iterator it = _c[i].begin();\n-320 typename std::vector::const_iterator end = _c[i].end()-1;\n-321 typename std::vector::iterator iit = newcoords[i].begin() - 1;\n-322 if (!keep_ovlp)\n-323 {\n-324 if (ovlp_low[i])\n-325 {\n-326 it += overlap/2;\n-327 if (overlap%2)\n-328 *(++iit) = (*it + *(++it)) / ct(2.);\n-329 }\n-330 if (ovlp_up[i])\n-331 end -= overlap/2;\n-332 }\n-333\n-334 for (;it!=end;)\n-335 {\n-336 *(++iit) = *it;\n-337 *(++iit) = (*it + *(++it)) / ct(2.);\n-338 }\n-339\n-340 if (++iit != newcoords[i].end())\n-341 *iit = *it;\n-342 }\n-343 return _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>(newcoords, newoffset);\n-344 }\n-345\n-_\b3_\b4_\b7 void _\bp_\br_\bi_\bn_\bt(std::ostream& s) const\n-348 {\n-349 s << \"Printing TensorProduct Coordinate information:\" << std::endl;\n-350 for (int i=0; i,dim> _c;\n-360 std::array _offset;\n-361 };\n-362\n-363 template\n-_\b3_\b6_\b4 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n-_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>& c)\n-365 {\n-366 c._\bp_\br_\bi_\bn_\bt(s);\n-367 return s;\n-368 }\n-369\n-_\b3_\b7_\b0 namespace Yasp {\n-371 template\n-372 bool checkIfMonotonous(const std::array, dim>& coords)\n-373 {\n-374 for (std::size_t i=0; i refine(std::bitset< dim > ovlp_low, std::\n-bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-export the coordinate type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-EquidistantCoordinates(const Dune::FieldVector< ct, dim > &upperRight, const\n-std::array< int, dim > &s)\n-construct a container with all necessary information\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-ct meshsize(int d, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Container for equidistant coordinates in a YaspGrid with non-trivial origin.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-EquidistantOffsetCoordinates()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-EquidistantOffsetCoordinates(const Dune::FieldVector< ct, dim > &lowerLeft,\n-const Dune::FieldVector< ct, dim > &upperRight, const std::array< int, dim >\n-&s)\n-construct a container with all necessary information\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n-EquidistantOffsetCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low,\n-std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print(std::ostream &s) const\n-print information on this container\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-ct meshsize(int d, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bo_\br_\bi_\bg_\bi_\bn\n-ct origin(int d) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int d) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-export the coordinate type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-export dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-ct coordinate(int d, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:169\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Coordinate container for a tensor product YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:245\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print(std::ostream &s) const\n-print information on this container\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:347\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-ct meshsize(int d, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:269\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-ct coordinate(int d, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:278\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-export dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n-TensorProductCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::\n-bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:297\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-TensorProductCoordinates(const std::array< std::vector< ct >, dim > &c, const\n-std::array< int, dim > &offset)\n-construct a container with all necessary information\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:261\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-TensorProductCoordinates()\n-the default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-export the coordinate type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int d) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:286\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Index Set Interface base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int\n+i, unsigned int codim) const\n+Map a subentity to an index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+Export the type of the entity used as parameter in the index(...) method.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Implementation of Level- and LeafIndexSets for YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs\n+const std::vector< GeometryType > & geomTypes(int codim) const\n+deliver all geometry types used in this grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+YaspIndexSet(const GridImp &g)\n+Level grid view constructor stores reference to a grid and level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+YaspIndexSet(const GridImp &g, int l)\n+Level grid view constructor stores reference to a grid and level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+IndexType index(const typename std::remove_const< GridImp >::type::Traits::\n+template Codim< cc >::Entity &e) const\n+get index of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const EntityType &e) const\n+return true if the given entity is contained in .\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(GeometryType type) const\n+get number of entities of given type and level (the level is known to the\n+object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+IndexType subIndex(const typename std::remove_const< GridImp >::type::Traits::\n+template Codim< cc >::Entity &e, int i, unsigned int codim) const\n+get index of subentity of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n+std::vector< GeometryType > types(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(int codim) const\n+return size of set for a given codim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+Base::IndexType IndexType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.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-grid-doc/doxygen/a00194.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00194.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridentityseed.hh File Reference\n+dune-grid: structuredyaspgridfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -72,37 +72,42 @@\n
  • dune
  • grid
  • yaspgrid
  • \n
    \n \n
    \n \n-
    yaspgridentityseed.hh File Reference
    \n+
    structuredyaspgridfactory.hh File Reference
    \n
    \n
    \n \n-

    The YaspEntitySeed class. \n+

    Specialization of the StructuredGridFactory class for YaspGrid. \n More...

    \n-\n+
    #include <memory>
    \n+#include <dune/grid/utility/structuredgridfactory.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::YaspEntitySeed< codim, GridImp >
     Describes the minimal information necessary to create a fully functional YaspEntity. More...
    class  Dune::StructuredGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > >
     Specialization of the StructuredGridFactory for YaspGrid. More...
     
    class  Dune::StructuredGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > >
     Specialization of the StructuredGridFactory for YaspGrid<EquidistantOffsetCoordinates> More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The YaspEntitySeed class.

    \n+

    Specialization of the StructuredGridFactory class for YaspGrid.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,23 +2,30 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-yaspgridentityseed.hh File Reference\n-The YaspEntitySeed class. _\bM_\bo_\br_\be_\b._\b._\b.\n+structuredyaspgridfactory.hh File Reference\n+Specialization of the StructuredGridFactory class for YaspGrid. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\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:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 Describes the minimal information necessary to create a fully\n- functional _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n+ _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n+\u00a0 Specialization of the _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,\n+ _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n+\u00a0 Specialization of the _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by for\n+ YaspGrid _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The YaspEntitySeed class.\n+Specialization of the StructuredGridFactory class for YaspGrid.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00194_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00194_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridentityseed.hh Source File\n+dune-grid: structuredyaspgridfactory.hh Source File\n \n \n \n \n \n \n \n@@ -74,82 +74,126 @@\n \n \n
    \n
    \n-
    yaspgridentityseed.hh
    \n+
    structuredyaspgridfactory.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDENTITYSEED_HH
    \n-
    6#define DUNE_GRID_YASPGRIDENTITYSEED_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH
    \n+
    6#define DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH
    \n
    7
    \n-
    12namespace Dune {
    \n-
    13
    \n-
    16 template<int codim, class GridImp>
    \n-
    \n-\n-
    18 {
    \n-
    20 constexpr static int dim = GridImp::dimension;
    \n-
    21
    \n-
    22 public:
    \n-
    24 constexpr static int codimension = codim;
    \n-
    25
    \n-
    \n-\n-
    28 : _l(-1), _o(0)
    \n-
    29 {
    \n-
    30 std::fill(_c.begin(),_c.end(),0);
    \n-
    31 }
    \n-
    \n+
    8#include <memory>
    \n+
    9
    \n+\n+
    11
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    27 template<class ctype, int dim>
    \n+
    \n+\n+
    29 {
    \n+\n+
    31 static const int dimworld = GridType::dimensionworld;
    \n
    32
    \n-
    \n-
    34 YaspEntitySeed (int level, std::array<int, dim> coord, int o = 0)
    \n-
    35 : _l(level), _c(coord), _o(o)
    \n-
    36 {}
    \n-
    \n-
    37
    \n-
    \n-
    39 bool isValid() const
    \n-
    40 {
    \n-
    41 return _l != -1;
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    44 int level () const { return _l; }
    \n-
    45 const std::array<int, dim> & coord() const { return _c; }
    \n-
    46 int offset () const { return _o; }
    \n-
    47
    \n-
    48 protected:
    \n-
    49 int _l; // grid level
    \n-
    50 std::array<int, dim> _c; // coord in the global grid
    \n-
    51 int _o; // the offset: which YGridComponent, does the entity belong to
    \n-
    52 };
    \n-
    \n-
    53
    \n-
    54} // namespace Dune
    \n-
    55
    \n-
    56#endif // DUNE_GRID_YASPGRIDENTITYSEED_HH
    \n+
    33 public:
    \n+
    44 static std::unique_ptr<GridType>
    \n+
    \n+
    45 createCubeGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n+
    46 const FieldVector<ctype,dimworld>& upperRight,
    \n+
    47 const std::array<unsigned int,dim>& elements)
    \n+
    48 {
    \n+
    49 using std::abs;
    \n+
    50 for(int d = 0; d < dimworld; ++d)
    \n+
    51 if(abs(lowerLeft[d]) > abs(upperRight[d])*1e-10)
    \n+
    52 DUNE_THROW(GridError, className<StructuredGridFactory>()
    \n+
    53 << "::createCubeGrid(): You have to use Yaspgrid<dim"
    \n+
    54 ", EquidistantOffsetCoordinates<ctype,dim> > as your"
    \n+
    55 "grid type for non-trivial origin." );
    \n+
    56
    \n+
    57 // construct array of ints instead of unsigned ints
    \n+
    58 std::array<int, dim> elem;
    \n+
    59 std::copy(elements.begin(), elements.end(), elem.begin());
    \n+
    60
    \n+
    61 return std::make_unique<GridType>(upperRight, elem,
    \n+
    62 std::bitset<dim>(), 1); // default constructor of bitset sets to zero
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    70 static std::unique_ptr<GridType>
    \n+
    \n+
    71 createSimplexGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n+
    72 const FieldVector<ctype,dimworld>& upperRight,
    \n+
    73 const std::array<unsigned int,dim>& elements)
    \n+
    74 {
    \n+
    75 DUNE_THROW(GridError, className<StructuredGridFactory>()
    \n+
    76 << "::createSimplexGrid(): Simplices are not supported "
    \n+
    77 "by YaspGrid.");
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    80 };
    \n+
    \n+
    81
    \n+
    89 template<class ctype, int dim>
    \n+
    \n+\n+\n+
    92 static const int dimworld = GridType::dimensionworld;
    \n+
    93
    \n+
    94 public:
    \n+
    101 static std::unique_ptr<GridType>
    \n+
    \n+
    102 createCubeGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n+
    103 const FieldVector<ctype,dimworld>& upperRight,
    \n+
    104 const std::array<unsigned int,dim>& elements)
    \n+
    105 {
    \n+
    106 // construct array of ints instead of unsigned ints
    \n+
    107 std::array<int, dim> elem;
    \n+
    108 std::copy(elements.begin(), elements.end(), elem.begin());
    \n+
    109
    \n+
    110 return std::make_unique<GridType>(lowerLeft, upperRight, elem,
    \n+
    111 std::bitset<dim>(), 1); // default constructor of bitset sets to zero
    \n+
    112 }
    \n+
    \n+
    113
    \n+
    119 static std::unique_ptr<GridType>
    \n+
    \n+
    120 createSimplexGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n+
    121 const FieldVector<ctype,dimworld>& upperRight,
    \n+
    122 const std::array<unsigned int,dim>& elements)
    \n+
    123 {
    \n+
    124 DUNE_THROW(GridError, className<StructuredGridFactory>()
    \n+
    125 << "::createSimplexGrid(): Simplices are not supported "
    \n+
    126 "by YaspGrid.");
    \n+
    127 }
    \n+
    \n+
    128
    \n+
    129 };
    \n+
    \n+
    130
    \n+
    131} // namespace Dune
    \n+
    132#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Describes the minimal information necessary to create a fully functional YaspEntity.
    Definition yaspgridentityseed.hh:18
    \n-
    int _o
    Definition yaspgridentityseed.hh:51
    \n-
    std::array< int, dim > _c
    Definition yaspgridentityseed.hh:50
    \n-
    int _l
    Definition yaspgridentityseed.hh:49
    \n-
    int level() const
    Definition yaspgridentityseed.hh:44
    \n-
    YaspEntitySeed()
    default construct an invalid entity seed
    Definition yaspgridentityseed.hh:27
    \n-
    YaspEntitySeed(int level, std::array< int, dim > coord, int o=0)
    constructor
    Definition yaspgridentityseed.hh:34
    \n-
    int offset() const
    Definition yaspgridentityseed.hh:46
    \n-
    static constexpr int codimension
    codimension of entity
    Definition yaspgridentityseed.hh:24
    \n-
    const std::array< int, dim > & coord() const
    Definition yaspgridentityseed.hh:45
    \n-
    bool isValid() const
    check whether the EntitySeed refers to a valid Entity
    Definition yaspgridentityseed.hh:39
    \n+
    Construct structured cube and simplex grids in unstructured grid managers.
    Definition utility/structuredgridfactory.hh:31
    \n+
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n+
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n+
    Container for equidistant coordinates in a YaspGrid.
    Definition coordinates.hh:29
    \n+
    Container for equidistant coordinates in a YaspGrid with non-trivial origin.
    Definition coordinates.hh:131
    \n+
    static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured cube grid.
    Definition structuredyaspgridfactory.hh:45
    \n+
    static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured simplex grid.
    Definition structuredyaspgridfactory.hh:71
    \n+
    static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured cube grid.
    Definition structuredyaspgridfactory.hh:102
    \n+
    static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured simplex grid.
    Definition structuredyaspgridfactory.hh:120
    \n+
    A class to construct structured cube and simplex grids using the grid factory.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,98 +1,148 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridentityseed.hh\n+structuredyaspgridfactory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDENTITYSEED_HH\n-6#define DUNE_GRID_YASPGRIDENTITYSEED_HH\n+5#ifndef DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH\n+6#define DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH\n 7\n-12namespace _\bD_\bu_\bn_\be {\n-13\n-16 template\n-_\b1_\b7 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-18 {\n-20 constexpr static int dim = GridImp::dimension;\n-21\n-22 public:\n-_\b2_\b4 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n-25\n-_\b2_\b7 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd ()\n-28 : _\b__\bl(-1), _\b__\bo(0)\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+11\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+27 template\n+_\b2_\b8 class _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by<_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n+> >\n 29 {\n-30 std::fill(_\b__\bc.begin(),_\b__\bc.end(),0);\n-31 }\n+30 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd_\bT_\by_\bp_\be;\n+31 static const int dimworld = GridType::dimensionworld;\n 32\n-_\b3_\b4 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd (int _\bl_\be_\bv_\be_\bl, std::array _\bc_\bo_\bo_\br_\bd, int o = 0)\n-35 : _\b__\bl(_\bl_\be_\bv_\be_\bl), _\b__\bc(_\bc_\bo_\bo_\br_\bd), _\b__\bo(o)\n-36 {}\n-37\n-_\b3_\b9 bool _\bi_\bs_\bV_\ba_\bl_\bi_\bd() const\n-40 {\n-41 return _\b__\bl != -1;\n-42 }\n-43\n-_\b4_\b4 int _\bl_\be_\bv_\be_\bl () const { return _\b__\bl; }\n-_\b4_\b5 const std::array & _\bc_\bo_\bo_\br_\bd() const { return _\b__\bc; }\n-_\b4_\b6 int _\bo_\bf_\bf_\bs_\be_\bt () const { return _\b__\bo; }\n-47\n-48 protected:\n-_\b4_\b9 int _\b__\bl; // grid level\n-_\b5_\b0 std::array _\b__\bc; // coord in the global grid\n-_\b5_\b1 int _\b__\bo; // the offset: which YGridComponent, does the entity belong to\n-52 };\n-53\n-54} // namespace Dune\n-55\n-56#endif // DUNE_GRID_YASPGRIDENTITYSEED_HH\n+33 public:\n+44 static std::unique_ptr\n+_\b4_\b5 _\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n+46 const FieldVector& upperRight,\n+47 const std::array& elements)\n+48 {\n+49 using std::abs;\n+50 for(int d = 0; d < dimworld; ++d)\n+51 if(abs(lowerLeft[d]) > abs(upperRight[d])*1e-10)\n+52 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, className()\n+53 << \"::createCubeGrid(): You have to use Yaspgrid > as your\"\n+55 \"grid type for non-trivial origin.\" );\n+56\n+57 // construct array of ints instead of unsigned ints\n+58 std::array elem;\n+59 std::copy(elements.begin(), elements.end(), elem.begin());\n+60\n+61 return std::make_unique(upperRight, elem,\n+62 std::bitset(), 1); // default constructor of bitset sets to zero\n+63 }\n+64\n+70 static std::unique_ptr\n+_\b7_\b1 _\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n+72 const FieldVector& upperRight,\n+73 const std::array& elements)\n+74 {\n+75 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, className()\n+76 << \"::createSimplexGrid(): Simplices are not supported \"\n+77 \"by YaspGrid.\");\n+78 }\n+79\n+80 };\n+81\n+89 template\n+_\b9_\b0 class _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by<_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > > {\n+91 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd_\bT_\by_\bp_\be;\n+92 static const int dimworld = GridType::dimensionworld;\n+93\n+94 public:\n+101 static std::unique_ptr\n+_\b1_\b0_\b2 _\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n+103 const FieldVector& upperRight,\n+104 const std::array& elements)\n+105 {\n+106 // construct array of ints instead of unsigned ints\n+107 std::array elem;\n+108 std::copy(elements.begin(), elements.end(), elem.begin());\n+109\n+110 return std::make_unique(lowerLeft, upperRight, elem,\n+111 std::bitset(), 1); // default constructor of bitset sets to zero\n+112 }\n+113\n+119 static std::unique_ptr\n+_\b1_\b2_\b0 _\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n+121 const FieldVector& upperRight,\n+122 const std::array& elements)\n+123 {\n+124 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, className()\n+125 << \"::createSimplexGrid(): Simplices are not supported \"\n+126 \"by YaspGrid.\");\n+127 }\n+128\n+129 };\n+130\n+131} // namespace Dune\n+132#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-Describes the minimal information necessary to create a fully functional\n-YaspEntity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\b__\bo\n-int _o\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\b__\bc\n-std::array< int, dim > _c\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\b__\bl\n-int _l\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-YaspEntitySeed()\n-default construct an invalid entity seed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-YaspEntitySeed(int level, std::array< int, dim > coord, int o=0)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n-int offset() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-codimension of entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bo_\br_\bd\n-const std::array< int, dim > & coord() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bi_\bs_\bV_\ba_\bl_\bi_\bd\n-bool isValid() const\n-check whether the EntitySeed refers to a valid Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Construct structured cube and simplex grids in unstructured grid managers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/structuredgridfactory.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+Base class for exceptions in Dune grid modules.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n+[ provides Dune::Grid ]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Container for equidistant coordinates in a YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Container for equidistant coordinates in a YaspGrid with non-trivial origin.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm\n+_\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd\n+static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype,\n+dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n+std::array< unsigned int, dim > &elements)\n+Create a structured cube grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm\n+_\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd\n+static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype,\n+dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n+std::array< unsigned int, dim > &elements)\n+Create a structured simplex grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n+_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd\n+static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype,\n+dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n+std::array< unsigned int, dim > &elements)\n+Create a structured cube grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n+_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd\n+static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype,\n+dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n+std::array< unsigned int, dim > &elements)\n+Create a structured simplex grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:120\n+_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+A class to construct structured cube and simplex grids using the grid factory.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00200.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00200.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridhierarchiciterator.hh File Reference\n+dune-grid: ygrid.hh File Reference\n \n \n \n \n \n \n \n@@ -71,36 +71,81 @@\n \n \n \n
    \n \n-
    yaspgridhierarchiciterator.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    ygrid.hh File Reference
    \n \n
    \n \n+

    This provides a YGrid, the elemental component of the yaspgrid implementation. \n+More...

    \n+
    #include <array>
    \n+#include <vector>
    \n+#include <bitset>
    \n+#include <deque>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/common/streamoperators.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 Classes

    class  Dune::YaspHierarchicIterator< GridImp >
     YaspHierarchicIterator enables iteration over son entities of codim 0. More...
    class  Dune::YGridComponent< Coordinates >
     
    class  Dune::YGridComponent< Coordinates >::Iterator
     
    class  Dune::YGrid< Coordinates >
     implements a collection of YGridComponents which form a codimension Entities of given codimension c need to be represented by d choose c YgridComponents. All entities in one such component share the same set of spanning unit vectors. A YGrid is used to iterate over the entire set of components the codimension consists of. It doesn't hold any data, but instead holds an iterator range into an array of components (which is owned by YGridLevel). More...
     
    class  Dune::YGrid< Coordinates >::Iterator
     Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity in YaspGrid. More...
     
    class  Dune::YGridList< Coordinates >
     implements a collection of multiple std::deque<Intersection> Intersections with neighboring processors are stored as std::deque<Intersection>. Eachsuch intersection only holds one YGridComponent. To do all communication associated with one codimension, multiple such deques have to be concatenated. YGridList manges this concatenation. As for YGrids, YGridList doesn't hold any data, but an iterator range into a data array owned by YGridLevel. More...
     
    struct  Dune::YGridList< Coordinates >::Intersection
     type describing an intersection with a neighboring processor More...
     
    class  Dune::YGridList< Coordinates >::Iterator
     
    \n \n \n \n \n+\n+\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Yasp
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<int d, typename ct >
    std::array< int, d > Dune::Yasp::sizeArray (const std::array< std::vector< ct >, d > &v)
     
    template<class Coordinates >
    std::ostream & Dune::operator<< (std::ostream &s, YGridComponent< Coordinates > e)
     Output operator for ygrids.
     
    template<class Coordinates >
    std::ostream & Dune::operator<< (std::ostream &s, typename YGridComponent< Coordinates >::Iterator &e)
     Output operator for ygrids.
     
    template<class Coordinates >
    std::ostream & Dune::operator<< (std::ostream &s, const YGrid< Coordinates > &e)
     Output operator for ygrids.
     
    \n

    Detailed Description

    \n-

    The YaspHierarchicIterator class

    \n-

    Enables iteration over son entities of codim 0

    \n+

    This provides a YGrid, the elemental component of the yaspgrid implementation.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,82 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-yaspgridhierarchiciterator.hh File Reference\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+ygrid.hh File Reference\n+This provides a YGrid, the elemental component of the yaspgrid implementation.\n+_\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br enables iteration over son entities of codim 0.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>\n+ implements a collection of YGridComponents which form a codimension\n+ Entities of given codimension c need to be represented by d choose c\n+ YgridComponents. All entities in one such component share the same set\n+\u00a0 of spanning unit vectors. A _\bY_\bG_\br_\bi_\bd is used to iterate over the entire\n+ set of components the codimension consists of. It doesn't hold any\n+ data, but instead holds an iterator range into an array of components\n+ (which is owned by YGridLevel). _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+\u00a0 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br over a collection o YGrids A _\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br is the heart of\n+ an entity in _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>\n+ implements a collection of multiple std::deque\n+ Intersections with neighboring processors are stored as std::\n+ deque. Eachsuch intersection only holds one\n+\u00a0 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt. To do all communication associated with one\n+ codimension, multiple such deques have to be concatenated. _\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt\n+ manges this concatenation. As for YGrids, _\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt doesn't hold any\n+ data, but an iterator range into a data array owned by YGridLevel.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+\u00a0 type describing an intersection with a neighboring processor _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+std::array< int, d >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bs_\bi_\bz_\be_\bA_\br_\br_\ba_\by (const std::array< std::vector< ct\n+ >, d > &v)\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 &s, _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt<\n+ Coordinates > e)\n+\u00a0 Output operator for ygrids.\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 &s, typename\n+ _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt< Coordinates >::Iterator &e)\n+\u00a0 Output operator for ygrids.\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 &s, const _\bY_\bG_\br_\bi_\bd<\n+ Coordinates > &e)\n+\u00a0 Output operator for ygrids.\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-The YaspHierarchicIterator class\n-Enables iteration over son entities of codim 0\n+This provides a YGrid, the elemental component of the yaspgrid implementation.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00200_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00200_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridhierarchiciterator.hh Source File\n+dune-grid: ygrid.hh Source File\n \n \n \n \n \n \n \n@@ -74,181 +74,1171 @@\n \n \n
    \n
    \n-
    yaspgridhierarchiciterator.hh
    \n+
    ygrid.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH
    \n-
    6#define DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRID_YGRID_HH
    \n+
    6#define DUNE_GRID_YASPGRID_YGRID_HH
    \n
    7
    \n-
    14namespace Dune {
    \n-
    15
    \n-
    18 template<class GridImp>
    \n-
    \n-\n-
    20 {
    \n-
    21 constexpr static int dim = GridImp::dimension;
    \n+
    8#include <array>
    \n+
    9#include <vector>
    \n+
    10#include <bitset>
    \n+
    11#include <deque>
    \n+
    12
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14#include <dune/common/math.hh>
    \n+
    15#include <dune/common/streamoperators.hh>
    \n+
    16
    \n+
    21namespace Dune {
    \n
    22
    \n-\n-
    24
    \n-
    25 public:
    \n-
    26 // types used from grids
    \n-
    27 typedef typename GridImp::YGridLevelIterator YGLI;
    \n-
    28 typedef typename GridImp::YGrid::Iterator I;
    \n-
    29 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    30
    \n-
    32 YaspHierarchicIterator () : _entity(), _maxlevel(-1), stack() {}
    \n-
    33
    \n-
    \n-
    35 YaspHierarchicIterator (const YGLI& g, const I& it, int maxlevel) :
    \n-
    36 _entity(YaspEntity<0, dim, GridImp>(g,it))
    \n-
    37 {
    \n-
    38 // store reference to entity implementation for better readability
    \n-
    39 YaspEntityImp& entity = _entity.impl();
    \n-
    40 // now iterator points to current cell
    \n-
    41 StackElem se(entity._g);
    \n-
    42 std::copy(entity._it.coord().begin(), entity._it.coord().end(), se.coord.begin());
    \n-
    43 stack.push(se);
    \n-
    44
    \n-
    45 // determine maximum level
    \n-
    46 _maxlevel = std::min(maxlevel,entity._g->mg->maxLevel());
    \n-
    47
    \n-
    48 // if maxlevel not reached then push yourself and sons
    \n-
    49 if (entity._g->level()<_maxlevel)
    \n-
    50 {
    \n-
    51 push_sons();
    \n-
    52 }
    \n-
    53
    \n-
    54 // and make iterator point to first son if stack is not empty
    \n-
    55 if (!stack.empty())
    \n-
    56 pop_tos();
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-
    60 void increment ()
    \n-
    61 {
    \n-
    62 // sanity check: do nothing when stack is empty
    \n-
    63 if (stack.empty()) return;
    \n-
    64
    \n-
    65 // if maxlevel not reached then push sons
    \n-
    66 if (_entity.impl()._g->level()<_maxlevel)
    \n-
    67 push_sons();
    \n-
    68
    \n-
    69 // in any case pop one element
    \n-
    70 pop_tos();
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    74 bool equals (const YaspHierarchicIterator& rhs) const
    \n-
    75 {
    \n-
    76 return (_entity == rhs._entity);
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    80 const Entity& dereference() const
    \n-
    81 {
    \n-
    82 return _entity;
    \n-
    83 }
    \n+
    23 namespace Yasp {
    \n+
    28 template<int d, typename ct>
    \n+
    \n+
    29 std::array<int,d> sizeArray(const std::array<std::vector<ct>,d>& v)
    \n+
    30 {
    \n+
    31 std::array<int,d> tmp;
    \n+
    32 for (int i=0; i<d; ++i)
    \n+
    33 tmp[i] = v[i].size() - 1;
    \n+
    34 return tmp;
    \n+
    35 }
    \n
    \n-
    84
    \n+
    36 } //namespace Yasp
    \n+
    37
    \n+
    73 template<class Coordinates>
    \n+
    \n+\n+
    75 {
    \n+
    76 public:
    \n+
    77 //extract coordinate type and dimension from the coordinate container
    \n+
    78 typedef typename Coordinates::ctype ct;
    \n+
    79 static const int d = Coordinates::dimension;
    \n+
    80
    \n+
    81 typedef std::array<int, d> iTupel;
    \n+
    82 typedef FieldVector<ct,d> fTupel;
    \n+
    83
    \n
    \n-
    85 void print (std::ostream& s) const
    \n-
    86 {
    \n-
    87 // store reference to entity implementation for better readability
    \n-
    88 YaspEntityImp& entity = _entity.impl();
    \n-
    89 s << "HIER: " << "level=" << entity._g.level()
    \n-
    90 << " position=" << entity._it.coord()
    \n-
    91 << " superindex=" << entity._it.superindex()
    \n-
    92 << " maxlevel=" << entity._maxlevel
    \n-
    93 << " stacksize=" << stack.size()
    \n-
    94 << std::endl;
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    97 private:
    \n-
    98 Entity _entity;
    \n-
    99
    \n-
    100 int _maxlevel;
    \n-
    101
    \n-
    102 struct StackElem {
    \n-
    103 YGLI g; // grid level of the element
    \n-
    104 std::array<int,dim> coord; // and the coordinates
    \n-
    105 StackElem(YGLI gg) : g(gg) {}
    \n-
    106 };
    \n-
    107 std::stack<StackElem> stack;
    \n-
    108
    \n-
    109 // push sons of current element on the stack
    \n-
    110 void push_sons ()
    \n-
    111 {
    \n-
    112 // store reference to entity implementation for better readability
    \n-
    113 YaspEntityImp& entity = _entity.impl();
    \n-
    114
    \n-
    115 // yes, process all 1<<dim sons
    \n-
    116 YGLI finer = entity._g;
    \n-
    117 ++finer;
    \n-
    118 StackElem se(finer);
    \n-
    119 for (int i=0; i<(1<<dim); i++)
    \n-
    120 {
    \n-
    121 for (int k=0; k<dim; k++)
    \n-
    122 if (i&(1<<k))
    \n-
    123 se.coord[k] = entity._it.coord(k)*2+1;
    \n-
    124 else
    \n-
    125 se.coord[k] = entity._it.coord(k)*2;
    \n-
    126 // not all entities have 2^d subentities due to refineOptions with keep_ovlp==false
    \n-
    127 bool exists = true;
    \n-
    128 for (int k=0; k<dim; k++)
    \n-
    129 if ((se.coord[k] < finer->overlap[0].dataBegin()->origin(k)) || (se.coord[k] >= finer->overlap[0].dataBegin()->origin(k)+finer->overlap[0].dataBegin()->size(k)))
    \n-
    130 exists = false;
    \n-
    131 if (exists)
    \n-
    132 stack.push(se);
    \n-
    133 }
    \n-
    134 }
    \n-
    135
    \n-
    136 // make TOS the current element
    \n-
    137 void pop_tos ()
    \n-
    138 {
    \n-
    139 StackElem se = stack.top();
    \n-
    140 stack.pop();
    \n-
    141 YaspEntityImp& entity = _entity.impl();
    \n-
    142 entity._g = se.g;
    \n-
    143 entity._it.reinit(entity._g->overlap[0],se.coord);
    \n-
    144 }
    \n-
    145 };
    \n+
    85 YGridComponent () : _shift(0ULL)
    \n+
    86 {
    \n+
    87 std::fill(_origin.begin(), _origin.end(), 0);
    \n+
    88 std::fill(_offset.begin(), _offset.end(), 0);
    \n+
    89 std::fill(_size.begin(), _size.end(), 0);
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    \n+\n+
    100 : _origin(origin), _size(size)
    \n+
    101 {}
    \n+
    \n+
    102
    \n+
    \n+\n+
    109 : _origin(origin), _shift(enclosing.shift()), _coords(enclosing.getCoords()), _size(size), _supersize(enclosing.supersize())
    \n+
    110 {
    \n+
    111 for (int i=0; i<d; i++)
    \n+
    112 _offset[i] = origin[i] - enclosing.origin(i) + enclosing.offset(i);
    \n+
    113
    \n+
    114 // compute superincrements
    \n+
    115 int inc = 1;
    \n+
    116 for (int i=0; i<d; ++i)
    \n+
    117 {
    \n+
    118 _superincrement[i] = inc;
    \n+
    119 inc *= _supersize[i];
    \n+
    120 }
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    \n+
    131 YGridComponent (iTupel origin, std::bitset<d> shift, Coordinates* coords, iTupel size, iTupel offset, iTupel supersize)
    \n+
    132 : _origin(origin), _shift(shift), _coords(coords), _size(size), _offset(offset), _supersize(supersize)
    \n+
    133 {
    \n+
    134 // compute superincrements
    \n+
    135 int inc = 1;
    \n+
    136 for (int i=0; i<d; ++i)
    \n+
    137 {
    \n+
    138 _superincrement[i] = inc;
    \n+
    139 inc *= _supersize[i];
    \n+
    140 }
    \n+
    141 }
    \n+
    \n+
    142
    \n+
    \n+
    144 int origin (int i) const
    \n+
    145 {
    \n+
    146 return _origin[i];
    \n+
    147 }
    \n
    \n-
    146
    \n-
    147} // namespace Dune
    \n
    148
    \n-
    149#endif // DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH
    \n+
    \n+
    150 const iTupel& origin () const
    \n+
    151 {
    \n+
    152 return _origin;
    \n+
    153 }
    \n+
    \n+
    154
    \n+
    \n+
    156 bool shift (int i) const
    \n+
    157 {
    \n+
    158 return _shift[i];
    \n+
    159 }
    \n+
    \n+
    160
    \n+
    \n+
    162 const std::bitset<d>& shift () const
    \n+
    163 {
    \n+
    164 return _shift;
    \n+
    165 }
    \n+
    \n+
    166
    \n+
    \n+
    167 Coordinates* getCoords() const
    \n+
    168 {
    \n+
    169 return _coords;
    \n+
    170 }
    \n+
    \n+
    171
    \n+
    \n+
    173 int offset (int i) const
    \n+
    174 {
    \n+
    175 return _offset[i];
    \n+
    176 }
    \n+
    \n+
    177
    \n+
    \n+
    179 const iTupel & offset () const
    \n+
    180 {
    \n+
    181 return _offset;
    \n+
    182 }
    \n+
    \n+
    183
    \n+
    \n+
    185 int supersize (int i) const
    \n+
    186 {
    \n+
    187 return _supersize[i];
    \n+
    188 }
    \n+
    \n+
    189
    \n+
    \n+
    191 const iTupel & supersize () const
    \n+
    192 {
    \n+
    193 return _supersize;
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    \n+
    197 int size (int i) const
    \n+
    198 {
    \n+
    199 return _size[i];
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    \n+
    203 iTupel size () const
    \n+
    204 {
    \n+
    205 return _size;
    \n+
    206 }
    \n+
    \n+
    207
    \n+
    \n+
    209 int totalsize () const
    \n+
    210 {
    \n+
    211 int s=1;
    \n+
    212 for (int i=0; i<d; ++i)
    \n+
    213 s *= size(i);
    \n+
    214 return s;
    \n+
    215 }
    \n+
    \n+
    216
    \n+
    \n+
    218 int min (int i) const
    \n+
    219 {
    \n+
    220 return _origin[i];
    \n+
    221 }
    \n+
    \n+
    222
    \n+
    \n+
    224 int max (int i) const
    \n+
    225 {
    \n+
    226 return _origin[i] + size(i) - 1;
    \n+
    227 }
    \n+
    \n+
    228
    \n+
    \n+
    230 bool empty () const
    \n+
    231 {
    \n+
    232 for (int i=0; i<d; ++i)
    \n+
    233 {
    \n+
    234 if (size(i) == 0)
    \n+
    235 return true;
    \n+
    236 }
    \n+
    237 return false;
    \n+
    238 }
    \n+
    \n+
    239
    \n+
    \n+
    241 bool inside (const iTupel& coord) const
    \n+
    242 {
    \n+
    243 for (int i=0; i<d; i++)
    \n+
    244 {
    \n+
    245 if ((coord[i]<_origin[i]) || (coord[i]>=_origin[i]+_size[i]))
    \n+
    246 return false;
    \n+
    247 }
    \n+
    248 return true;
    \n+
    249 }
    \n+
    \n+
    250
    \n+
    \n+
    252 int index (const iTupel& coord) const
    \n+
    253 {
    \n+
    254 int index = (coord[d-1]-_origin[d-1]);
    \n+
    255
    \n+
    256 for (int i=d-2; i>=0; i--)
    \n+
    257 index = index*_size[i] + (coord[i]-_origin[i]);
    \n+
    258
    \n+
    259 return index;
    \n+
    260 }
    \n+
    \n+
    261
    \n+
    \n+\n+
    264 {
    \n+
    265 for (int i=0; i<d; i++)
    \n+
    266 v[i] += _origin[i];
    \n+
    267 return YGridComponent<Coordinates>(v,_size,*this);
    \n+
    268 }
    \n+
    \n+
    269
    \n+
    \n+\n+
    272 {
    \n+
    273 for (int i=0; i<d; i++)
    \n+
    274 {
    \n+
    275 //empty coordinate vectors result in empty intersections
    \n+
    276 if (empty() || r.empty())
    \n+\n+
    278 }
    \n+
    279
    \n+
    280 iTupel neworigin;
    \n+
    281 iTupel newsize;
    \n+
    282 for (int i=0; i<d; ++i)
    \n+
    283 {
    \n+
    284 neworigin[i] = std::max(origin(i),r.origin(i));
    \n+
    285 newsize[i] = std::min(max(i),r.max(i)) - neworigin[i] + 1;
    \n+
    286 }
    \n+
    287
    \n+
    288 return YGridComponent<Coordinates>(neworigin,newsize,*this);
    \n+
    289 }
    \n+
    \n+
    290
    \n+
    291
    \n+
    \n+
    298 class Iterator {
    \n+
    299 public:
    \n+
    300 // default constructor
    \n+
    301 Iterator () = default;
    \n+
    302
    \n+
    \n+\n+
    305 {
    \n+
    306 iTupel coord(r.origin());
    \n+
    307 reinit(r,coord);
    \n+
    308 }
    \n+
    \n+
    309
    \n+
    \n+\n+
    312 {
    \n+
    313 reinit(r,coord);
    \n+
    314 }
    \n+
    \n+
    315
    \n+
    \n+\n+
    318 {
    \n+
    319 // initialize to given position in index set
    \n+
    320 for (int i=0; i<d; ++i)
    \n+
    321 _coord[i] = coord[i];
    \n+
    322
    \n+
    323 // move superindex to first cell in subgrid
    \n+
    324 _superindex = 0;
    \n+
    325 for (int i=0; i<d; ++i)
    \n+
    326 _superindex += (r.offset(i)+coord[i]-r.origin(i))*r.superincrement(i);
    \n+
    327
    \n+
    328 _grid = &r;
    \n+
    329 }
    \n+
    \n+
    330
    \n+
    \n+
    332 bool operator== (const Iterator& i) const
    \n+
    333 {
    \n+
    334 return _superindex == i._superindex;
    \n+
    335 }
    \n+
    \n+
    336
    \n+
    \n+
    338 bool operator!= (const Iterator& i) const
    \n+
    339 {
    \n+
    340 return _superindex != i._superindex;
    \n+
    341 }
    \n+
    \n+
    342
    \n+
    \n+
    344 int superindex () const
    \n+
    345 {
    \n+
    346 return _superindex;
    \n+
    347 }
    \n+
    \n+
    348
    \n+
    \n+
    350 int coord (int i) const
    \n+
    351 {
    \n+
    352 return _coord[i];
    \n+
    353 }
    \n+
    \n+
    354
    \n+
    \n+
    356 const iTupel& coord () const
    \n+
    357 {
    \n+
    358 return _coord;
    \n+
    359 }
    \n+
    \n+
    360
    \n+
    \n+
    362 void move (int i, int dist)
    \n+
    363 {
    \n+
    364 _coord[i] += dist;
    \n+
    365 _superindex += dist*_grid->superincrement(i);
    \n+
    366 }
    \n+
    \n+
    367
    \n+
    \n+
    369 void move (const iTupel& dist)
    \n+
    370 {
    \n+
    371 for (int i = 0; i < d; ++i)
    \n+
    372 {
    \n+
    373 _coord[i] += dist[i];
    \n+
    374 _superindex += dist[i]*_grid->superincrement(i);
    \n+
    375 }
    \n+
    376 }
    \n+
    \n+
    377
    \n+
    \n+\n+
    380 {
    \n+
    381 for (int i=0; i<d; i++) // check for wrap around
    \n+
    382 {
    \n+
    383 _superindex += _grid->superincrement(i); // move on cell in direction i
    \n+
    384 if (++_coord[i] <= _grid->max(i))
    \n+
    385 return *this;
    \n+
    386 else
    \n+
    387 {
    \n+
    388 _coord[i] = _grid->origin(i); // move back to origin in direction i
    \n+
    389 _superindex -= _grid->size(i) * _grid->superincrement(i);
    \n+
    390 }
    \n+
    391 }
    \n+
    392 // if we wrapped around, back to to begin(), we must put the iterator to end()
    \n+
    393 if (_coord == _grid->origin())
    \n+
    394 {
    \n+
    395 for (int i=0; i<d; i++)
    \n+
    396 _superindex += (_grid->size(i)-1) * _grid->superincrement(i);
    \n+
    397 _superindex += _grid->superincrement(0);
    \n+
    398 }
    \n+
    399 return *this;
    \n+
    400 }
    \n+
    \n+
    401
    \n+
    \n+
    403 ct lowerleft(int i) const
    \n+
    404 {
    \n+
    405 return _grid->getCoords()->coordinate(i,_coord[i]);
    \n+
    406 }
    \n+
    \n+
    407
    \n+
    \n+\n+
    410 {
    \n+
    411 fTupel ll;
    \n+
    412 for (int i=0; i<d; i++)
    \n+
    413 ll[i] = lowerleft(i);
    \n+
    414 return ll;
    \n+
    415 }
    \n+
    \n+
    416
    \n+
    \n+
    418 ct upperright(int i) const
    \n+
    419 {
    \n+
    420 int coord = _coord[i];
    \n+
    421 if (shift(i))
    \n+
    422 coord++;
    \n+
    423 return _grid->getCoords()->coordinate(i,coord);
    \n+
    424 }
    \n+
    \n+
    425
    \n+
    \n+\n+
    428 {
    \n+
    429 fTupel ur;
    \n+
    430 for (int i=0; i<d; i++)
    \n+
    431 ur[i] = upperright(i);
    \n+
    432 return ur;
    \n+
    433 }
    \n+
    \n+
    434
    \n+
    \n+
    436 ct meshsize (int i) const
    \n+
    437 {
    \n+
    438 return _grid->getCoords()->meshsize(i,_coord[i]);
    \n+
    439 }
    \n+
    \n+
    440
    \n+
    \n+\n+
    443 {
    \n+
    444 fTupel h;
    \n+
    445 for (int i=0; i<d; i++)
    \n+
    446 h[i] = meshsize(i);
    \n+
    447 return h;
    \n+
    448 }
    \n+
    \n+
    449
    \n+
    \n+
    450 bool shift (int i) const
    \n+
    451 {
    \n+
    452 return _grid->shift(i);
    \n+
    453 }
    \n+
    \n+
    454
    \n+
    \n+
    455 std::bitset<d> shift() const
    \n+
    456 {
    \n+
    457 return _grid->shift();
    \n+
    458 }
    \n+
    \n+
    459
    \n+
    \n+
    460 Coordinates* coordCont() const
    \n+
    461 {
    \n+
    462 return _grid->getCoords();
    \n+
    463 }
    \n+
    \n+
    464
    \n+
    465 protected:
    \n+\n+
    467 int _superindex = 0;
    \n+\n+
    469 };
    \n+
    \n+
    470
    \n+
    471
    \n+
    \n+
    472 int superindex(iTupel coord) const
    \n+
    473 {
    \n+
    474 // move superindex to first cell in subgrid
    \n+
    475 int si = 0;
    \n+
    476 for (int i=0; i<d; ++i)
    \n+
    477 si += (offset(i)+coord[i]-origin(i))*_superincrement[i];
    \n+
    478 return si;
    \n+
    479 }
    \n+
    \n+
    480
    \n+
    \n+
    481 int superincrement(int i) const
    \n+
    482 {
    \n+
    483 return _superincrement[i];
    \n+
    484 }
    \n+
    \n+
    485
    \n+
    \n+\n+
    488 {
    \n+
    489 return Iterator(*this);
    \n+
    490 }
    \n+
    \n+
    491
    \n+
    \n+
    493 Iterator begin (const iTupel& co) const
    \n+
    494 {
    \n+
    495 return Iterator(*this,co);
    \n+
    496 }
    \n+
    \n+
    497
    \n+
    \n+
    499 Iterator end () const
    \n+
    500 {
    \n+
    501 iTupel last;
    \n+
    502 for (int i=0; i<d; i++)
    \n+
    503 last[i] = max(i);
    \n+
    504 last[0] += 1;
    \n+
    505 return Iterator(*this,last);
    \n+
    506 }
    \n+
    \n+
    507
    \n+
    508 private:
    \n+
    509 iTupel _origin;
    \n+
    510 std::bitset<d> _shift;
    \n+
    511 Coordinates* _coords;
    \n+
    512 iTupel _size;
    \n+
    513 iTupel _offset;
    \n+
    514 iTupel _supersize;
    \n+
    515 iTupel _superincrement;
    \n+
    516
    \n+
    517 };
    \n+
    \n+
    518
    \n+
    519
    \n+
    521 template <class Coordinates>
    \n+
    \n+
    522 inline std::ostream& operator<< (std::ostream& s, YGridComponent<Coordinates> e)
    \n+
    523 {
    \n+
    524 s << "Printing YGridComponent structure:" << std::endl;
    \n+
    525 s << "Origin: " << e.origin() << std::endl;
    \n+
    526 s << "Shift: " << e.shift() << std::endl;
    \n+
    527 s << "Size: " << e.size() << std::endl;
    \n+
    528 s << "Offset: " << e.offset() << std::endl;
    \n+
    529 s << "Supersize: " << e.supersize() << std::endl;
    \n+
    530 return s;
    \n+
    531 }
    \n+
    \n+
    532
    \n+
    534 template <class Coordinates>
    \n+
    \n+
    535 inline std::ostream& operator<< (std::ostream& s, typename YGridComponent<Coordinates>::Iterator& e)
    \n+
    536 {
    \n+
    537 s << "Printing YGridComponent Iterator:" << std::endl << "Iterator at " << e.coord() << " (index ";
    \n+
    538 s << e.index() << "), position " << e.position();
    \n+
    539 return s;
    \n+
    540 }
    \n+
    \n+
    541
    \n+
    549 template<class Coordinates>
    \n+
    \n+
    550 class YGrid
    \n+
    551 {
    \n+
    552 public:
    \n+
    553 static const int dim = Coordinates::dimension;
    \n+
    554
    \n+
    555 // define data array iterator
    \n+\n+
    557
    \n+
    558 typedef typename std::array<int, dim> iTupel;
    \n+
    559
    \n+
    \n+\n+
    562 {
    \n+
    563 _begin = begin;
    \n+
    564 }
    \n+
    \n+
    565
    \n+
    \n+
    567 int shiftmapping(const std::bitset<dim>& shift) const
    \n+
    568 {
    \n+
    569 return _shiftmapping[shift.to_ulong()];
    \n+
    570 }
    \n+
    \n+
    571
    \n+
    \n+\n+
    574 {
    \n+
    575 return _begin;
    \n+
    576 }
    \n+
    \n+
    577
    \n+
    \n+
    579 DAI dataEnd() const
    \n+
    580 {
    \n+
    581 return _end;
    \n+
    582 }
    \n+
    \n+
    583
    \n+
    \n+
    585 bool inside(const iTupel& coord, const std::bitset<dim>& shift = std::bitset<dim>()) const
    \n+
    586 {
    \n+
    587 return (_begin+_shiftmapping[shift.to_ulong()])->inside(coord);
    \n+
    588 }
    \n+
    \n+
    589
    \n+
    \n+\n+
    594 {
    \n+
    595 public:
    \n+
    596
    \n+
    598 Iterator () = default;
    \n+
    599
    \n+
    \n+
    601 Iterator (const YGrid<Coordinates>& yg, const std::array<int,dim>& coords, int which = 0)
    \n+
    602 : _which(which), _yg(&yg)
    \n+
    603 {
    \n+
    604 _it = typename YGridComponent<Coordinates>::Iterator(*(_yg->dataBegin()+which),coords);
    \n+
    605 }
    \n+
    \n+
    606
    \n+
    \n+
    608 Iterator (const YGrid<Coordinates>& yg, bool end=false) : _yg(&yg)
    \n+
    609 {
    \n+
    610 if (end)
    \n+
    611 {
    \n+
    612 _it = _yg->_itends.back();
    \n+
    613 _which = _yg->_itends.size() - 1;
    \n+
    614 }
    \n+
    615 else
    \n+
    616 {
    \n+
    617 _it = _yg->_itbegins[0];
    \n+
    618 _which = 0;
    \n+
    619 }
    \n+
    620 }
    \n+
    \n+
    621
    \n+
    \n+
    623 void reinit(const YGrid<Coordinates>& yg, const std::array<int,dim>& coords, int which = 0)
    \n+
    624 {
    \n+
    625 _yg = &yg;
    \n+
    626 _which = which;
    \n+
    627 _it = typename YGridComponent<Coordinates>::Iterator(*(_yg->dataBegin()+which),coords);
    \n+
    628 }
    \n+
    \n+
    629
    \n+
    \n+
    631 int coord (int i) const
    \n+
    632 {
    \n+
    633 return _it.coord(i);
    \n+
    634 }
    \n+
    \n+
    635
    \n+
    \n+
    637 const std::array<int, dim>& coord () const
    \n+
    638 {
    \n+
    639 return _it.coord();
    \n+
    640 }
    \n+
    \n+
    641
    \n+
    \n+
    642 typename Coordinates::ctype lowerleft(int i) const
    \n+
    643 {
    \n+
    644 return _it.lowerleft(i);
    \n+
    645 }
    \n+
    \n+
    646
    \n+
    \n+
    647 Dune::FieldVector<typename Coordinates::ctype,dim> lowerleft() const
    \n+
    648 {
    \n+
    649 return _it.lowerleft();
    \n+
    650 }
    \n+
    \n+
    651
    \n+
    \n+
    652 typename Coordinates::ctype upperright(int i) const
    \n+
    653 {
    \n+
    654 return _it.upperright(i);
    \n+
    655 }
    \n+
    \n+
    656
    \n+
    \n+
    657 Dune::FieldVector<typename Coordinates::ctype,dim> upperright() const
    \n+
    658 {
    \n+
    659 return _it.upperright();
    \n+
    660 }
    \n+
    \n+
    661
    \n+
    \n+
    663 typename Coordinates::ctype meshsize (int i) const
    \n+
    664 {
    \n+
    665 return _it.meshsize(i);
    \n+
    666 }
    \n+
    \n+
    667
    \n+
    \n+
    669 Dune::FieldVector<typename Coordinates::ctype,dim> meshsize() const
    \n+
    670 {
    \n+
    671 return _it.meshsize();
    \n+
    672 }
    \n+
    \n+
    673
    \n+
    \n+
    675 bool shift (int i) const
    \n+
    676 {
    \n+
    677 return _it.shift(i);
    \n+
    678 }
    \n+
    \n+
    679
    \n+
    \n+
    681 std::bitset<dim> shift () const
    \n+
    682 {
    \n+
    683 return _it.shift();
    \n+
    684 }
    \n+
    \n+
    685
    \n+
    \n+
    687 int superindex() const
    \n+
    688 {
    \n+
    689 // the offset of the current component has to be taken into account
    \n+
    690 return _yg->_indexOffset[_which] + _it.superindex();
    \n+
    691 }
    \n+
    \n+
    692
    \n+
    \n+\n+
    695 {
    \n+
    696 if ((++_it == _yg->_itends[_which]) && (_which < _yg->_itends.size()-1))
    \n+
    697 _it = _yg->_itbegins[++_which];
    \n+
    698 return *this;
    \n+
    699 }
    \n+
    \n+
    700
    \n+
    \n+
    702 bool operator==(const Iterator& i) const
    \n+
    703 {
    \n+
    704 if (_which != i._which)
    \n+
    705 return false;
    \n+
    706 return _it == i._it;
    \n+
    707 }
    \n+
    \n+
    708
    \n+
    \n+
    710 bool operator!=(const Iterator& i) const
    \n+
    711 {
    \n+
    712 if (_it != i._it)
    \n+
    713 return true;
    \n+
    714 return _which != i._which;
    \n+
    715 }
    \n+
    \n+
    716
    \n+
    \n+
    718 int which() const
    \n+
    719 {
    \n+
    720 return _which;
    \n+
    721 }
    \n+
    \n+
    722
    \n+
    \n+
    724 void move(int i, int dist)
    \n+
    725 {
    \n+
    726 _it.move(i,dist);
    \n+
    727 }
    \n+
    \n+
    728
    \n+
    \n+
    729 void move(const iTupel& dist)
    \n+
    730 {
    \n+
    731 _it.move(dist);
    \n+
    732 }
    \n+
    \n+
    733
    \n+
    \n+
    734 Coordinates* coordCont() const
    \n+
    735 {
    \n+
    736 return _it.coordCont();
    \n+
    737 }
    \n+
    \n+
    738
    \n+
    739
    \n+
    740 private:
    \n+
    741 unsigned int _which = 0;
    \n+
    742 const YGrid<Coordinates>* _yg = nullptr;
    \n+\n+
    744 };
    \n+
    \n+
    745
    \n+
    \n+\n+
    748 {
    \n+
    749 return Iterator(*this);
    \n+
    750 }
    \n+
    \n+
    751
    \n+
    \n+
    753 Iterator begin(const std::array<int, dim>& coord, int which = 0) const
    \n+
    754 {
    \n+
    755 return Iterator(*this, coord, which);
    \n+
    756 }
    \n+
    \n+
    757
    \n+
    \n+
    759 Iterator end() const
    \n+
    760 {
    \n+
    761 return Iterator(*this,true);
    \n+
    762 }
    \n+
    \n+
    763
    \n+
    \n+
    764 int superindex(const iTupel& coord, int which) const
    \n+
    765 {
    \n+
    766 return _indexOffset[which] + (dataBegin()+which)->superindex(coord);
    \n+
    767 }
    \n+
    \n+
    768
    \n+
    769
    \n+
    770 // finalize the ygrid construction by storing component iterators
    \n+
    \n+
    771 void finalize(const DAI& end, int artificialOffset = 0)
    \n+
    772 {
    \n+
    773 // set the end iterator in the ygrid component array
    \n+
    774 _end = end;
    \n+
    775
    \n+
    776 _indexOffset.push_back(artificialOffset);
    \n+
    777 int k = 0;
    \n+
    778 for (DAI i=_begin; i != _end; ++i, ++k)
    \n+
    779 {
    \n+
    780 //store begin and end iterators
    \n+
    781 _itbegins.push_back(i->begin());
    \n+
    782 _itends.push_back(i->end());
    \n+
    783
    \n+
    784 // store index offset
    \n+
    785 _indexOffset.push_back(_indexOffset.back() + i->totalsize());
    \n+
    786
    \n+
    787 // store shift to component mapping
    \n+
    788 _shiftmapping[i->shift().to_ulong()] = k;
    \n+
    789 }
    \n+
    790 _indexOffset.resize(_itends.size());
    \n+
    791 }
    \n+
    \n+
    792
    \n+
    793 private:
    \n+
    794
    \n+
    795 friend class YGrid<Coordinates>::Iterator;
    \n+
    796 DAI _begin;
    \n+
    797 DAI _end;
    \n+
    798 std::array<int,Dune::power(2,dim)> _shiftmapping;
    \n+
    799 std::vector<typename YGridComponent<Coordinates>::Iterator> _itbegins;
    \n+
    800 std::vector<typename YGridComponent<Coordinates>::Iterator> _itends;
    \n+
    801 std::vector<int> _indexOffset;
    \n+
    802 };
    \n+
    \n+
    803
    \n+
    805 template <class Coordinates>
    \n+
    \n+
    806 inline std::ostream& operator<< (std::ostream& s, const YGrid<Coordinates>& e)
    \n+
    807 {
    \n+
    808 s << "Printing YGrid structure:" << std::endl;
    \n+
    809 for (auto it = e.dataBegin(); it != e.dataEnd(); ++it)
    \n+
    810 s << *it << std::endl;
    \n+
    811 return s;
    \n+
    812 }
    \n+
    \n+
    813
    \n+
    821 template<class Coordinates>
    \n+
    \n+
    822 class YGridList
    \n+
    823 {
    \n+
    824 public:
    \n+
    825 static const int dim = Coordinates::dimension;
    \n+
    826
    \n+
    \n+
    828 struct Intersection
    \n+
    829 {
    \n+
    831 YGridComponent<Coordinates> grid;
    \n+
    833 int rank;
    \n+
    835 int distance;
    \n+
    837 YGrid<Coordinates> yg;
    \n+
    838 };
    \n+
    \n+
    839
    \n+
    840 // define data array iterator type
    \n+
    841 typedef typename std::array<std::deque<Intersection>, Dune::power(2,dim)>::iterator DAI;
    \n+
    842
    \n+
    843 // iterator that allows to iterate over a concatenation of deques. namely those
    \n+
    844 // that belong to the same codimension.
    \n+
    \n+
    845 class Iterator
    \n+
    846 {
    \n+
    847 public:
    \n+
    848
    \n+
    \n+
    850 Iterator(const YGridList<Coordinates>& ygl, bool end=false) : _end(ygl.dataEnd()), _which(ygl.dataBegin())
    \n+
    851 {
    \n+
    852 _it = _which->begin();
    \n+
    853
    \n+
    854 // advance the iterator to the first element that exists.
    \n+
    855 // some deques might be empty and should be skipped
    \n+
    856 while ((_which != _end) && (_it == _which->end()))
    \n+
    857 {
    \n+
    858 ++_which;
    \n+
    859 if (_which != _end)
    \n+
    860 _it = _which->begin();
    \n+
    861 }
    \n+
    862 // the iterator is at the end if and only if _which==_end
    \n+
    863 if (end)
    \n+
    864 {
    \n+
    865 _which = _end;
    \n+
    866 }
    \n+
    867 }
    \n+
    \n+
    868
    \n+
    \n+
    870 Iterator& operator++ ()
    \n+
    871 {
    \n+
    872 ++_it;
    \n+
    873 // advance the iterator to the next element that exists.
    \n+
    874 // some deques might be empty and should be skipped
    \n+
    875 while ((_which != _end) && (_it == _which->end()))
    \n+
    876 {
    \n+
    877 ++_which;
    \n+
    878 if (_which != _end)
    \n+
    879 _it = _which->begin();
    \n+
    880 }
    \n+
    881 return *this;
    \n+
    882 }
    \n+
    \n+
    883
    \n+
    \n+
    885 typename std::deque<Intersection>::iterator operator->() const
    \n+
    886 {
    \n+
    887 return _it;
    \n+
    888 }
    \n+
    \n+
    889
    \n+
    \n+
    891 typename std::deque<Intersection>::iterator operator*() const
    \n+
    892 {
    \n+
    893 return _it;
    \n+
    894 }
    \n+
    \n+
    895
    \n+
    \n+
    897 bool operator== (const Iterator& i) const
    \n+
    898 {
    \n+
    899 if (_which != i._which)
    \n+
    900 return false;
    \n+
    901 if (_which == _end)
    \n+
    902 return true;
    \n+
    903 return _it == i._it;
    \n+
    904 }
    \n+
    \n+
    905
    \n+
    \n+
    907 bool operator!= (const Iterator& i) const
    \n+
    908 {
    \n+
    909 if (_which != i._which)
    \n+
    910 return true;
    \n+
    911 if (_which == _end)
    \n+
    912 return false;
    \n+
    913 return _it != i._it;
    \n+
    914 }
    \n+
    \n+
    915
    \n+
    916 private:
    \n+
    917 typename std::deque<Intersection>::iterator _it;
    \n+
    918 DAI _end;
    \n+
    919 DAI _which;
    \n+
    920 };
    \n+
    \n+
    921
    \n+
    \n+
    923 Iterator begin() const
    \n+
    924 {
    \n+
    925 return Iterator(*this);
    \n+
    926 }
    \n+
    \n+
    927
    \n+
    \n+
    929 Iterator end() const
    \n+
    930 {
    \n+
    931 return Iterator(*this,true);
    \n+
    932 }
    \n+
    \n+
    933
    \n+
    \n+
    935 void setBegin(typename std::array<std::deque<Intersection>, Dune::power(2,dim)>::iterator begin)
    \n+
    936 {
    \n+
    937 _begin = begin;
    \n+
    938 }
    \n+
    \n+
    939
    \n+
    \n+
    941 DAI dataBegin() const
    \n+
    942 {
    \n+
    943 return _begin;
    \n+
    944 }
    \n+
    \n+
    945
    \n+
    \n+
    947 DAI dataEnd() const
    \n+
    948 {
    \n+
    949 return _end;
    \n+
    950 }
    \n+
    \n+
    951
    \n+
    \n+
    953 int size() const
    \n+
    954 {
    \n+
    955 int count = 0;
    \n+
    956 for (DAI it = _begin; it != _end; ++it)
    \n+
    957 count += it->size();
    \n+
    958 return count;
    \n+
    959 }
    \n+
    \n+
    960
    \n+
    \n+
    962 void finalize(DAI end, const YGrid<Coordinates>& ygrid)
    \n+
    963 {
    \n+
    964 // Instead of directly iterating over the intersection deques, this code
    \n+
    965 // iterates over the components of an associated ygrid and works its way
    \n+
    966 // through the list of intersection deques in parallel.
    \n+
    967 // The reason for this convoluted iteration technique is that there are not
    \n+
    968 // necessarily intersections for all possible shifts, but we have to make
    \n+
    969 // sure that we stop at each shift to update the per-component index shift.
    \n+
    970 // This is ensured by iterating over the ygrid, which is guaranteed to have
    \n+
    971 // a component for each shift vector.
    \n+
    972
    \n+
    973 // set end iterator in the data array
    \n+
    974 _end = end;
    \n+
    975
    \n+
    977 int offset = 0;
    \n+
    978
    \n+
    979 DAI i = _begin;
    \n+
    980
    \n+
    981 // make sure that we have a valid deque (i.e. a non-empty one)
    \n+
    982 while (i != _end && i->begin() == i->end())
    \n+
    983 ++i;
    \n+
    984
    \n+
    985 for (auto yit = ygrid.dataBegin(); yit != ygrid.dataEnd(); ++yit)
    \n+
    986 {
    \n+
    987 if (i == _end)
    \n+
    988 break;
    \n+
    989 auto it = i->begin();
    \n+
    990 if (it->grid.shift() == yit->shift())
    \n+
    991 {
    \n+
    992 // iterate over the intersections in the deque and set the offset
    \n+
    993 for (; it != i->end(); ++it)
    \n+
    994 {
    \n+
    995 it->yg.setBegin(&(it->grid));
    \n+
    996 it->yg.finalize(&(it->grid)+1, offset);
    \n+
    997 }
    \n+
    998
    \n+
    999 // advance to next non-empty deque
    \n+
    1000 ++i;
    \n+
    1001 while (i != _end && i->begin() == i->end())
    \n+
    1002 ++i;
    \n+
    1003 }
    \n+
    1004
    \n+
    1005 // update the offset from the ygrid component
    \n+
    1006 int add = 1;
    \n+
    1007 for (int j=0; j<dim; j++)
    \n+
    1008 add *= yit->supersize(j);
    \n+
    1009 offset += add;
    \n+
    1010 }
    \n+
    1011 assert (i == end);
    \n+
    1012 }
    \n+
    \n+
    1013
    \n+
    1014 private:
    \n+
    1015 DAI _begin;
    \n+
    1016 DAI _end;
    \n+
    1017 };
    \n+
    \n+
    1018
    \n+
    1019} // namespace Dune
    \n+
    1020
    \n+
    1021#endif
    \n+
    std::ostream & operator<<(std::ostream &out, const PartitionType &type)
    write a PartitionType to a stream
    Definition gridenums.hh:72
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    Implementation & impl()
    access to the underlying implementation
    Definition common/entity.hh:80
    \n-
    Definition yaspgridentity.hh:268
    \n-
    YGLI _g
    Definition yaspgridentity.hh:426
    \n-
    I _it
    Definition yaspgridentity.hh:425
    \n-
    YaspHierarchicIterator enables iteration over son entities of codim 0.
    Definition yaspgridhierarchiciterator.hh:20
    \n-
    YaspHierarchicIterator()
    default constructor creating empty iterator
    Definition yaspgridhierarchiciterator.hh:32
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition yaspgridhierarchiciterator.hh:29
    \n-
    void print(std::ostream &s) const
    Definition yaspgridhierarchiciterator.hh:85
    \n-
    GridImp::YGrid::Iterator I
    Definition yaspgridhierarchiciterator.hh:28
    \n-
    const Entity & dereference() const
    dereferencing
    Definition yaspgridhierarchiciterator.hh:80
    \n-
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridhierarchiciterator.hh:27
    \n-
    void increment()
    increment
    Definition yaspgridhierarchiciterator.hh:60
    \n-
    bool equals(const YaspHierarchicIterator &rhs) const
    equality
    Definition yaspgridhierarchiciterator.hh:74
    \n-
    YaspHierarchicIterator(const YGLI &g, const I &it, int maxlevel)
    constructor
    Definition yaspgridhierarchiciterator.hh:35
    \n+
    std::array< int, d > sizeArray(const std::array< std::vector< ct >, d > &v)
    Definition ygrid.hh:29
    \n+
    Definition ygrid.hh:75
    \n+
    int index(const iTupel &coord) const
    given a tupel compute its index in the lexicographic numbering
    Definition ygrid.hh:252
    \n+
    int offset(int i) const
    Return offset to origin of enclosing grid.
    Definition ygrid.hh:173
    \n+
    std::array< int, d > iTupel
    Definition ygrid.hh:81
    \n+
    YGridComponent< Coordinates > move(iTupel v) const
    return grid moved by the vector v
    Definition ygrid.hh:263
    \n+
    iTupel size() const
    retrun size
    Definition ygrid.hh:203
    \n+
    static const int d
    Definition ygrid.hh:79
    \n+
    YGridComponent< Coordinates > intersection(const YGridComponent< Coordinates > &r) const
    Return YGridComponent of supergrid of self which is the intersection of self and another YGridCompone...
    Definition ygrid.hh:271
    \n+
    Coordinates::ctype ct
    Definition ygrid.hh:78
    \n+
    Coordinates * getCoords() const
    Definition ygrid.hh:167
    \n+
    int min(int i) const
    Return minimum index in direction i.
    Definition ygrid.hh:218
    \n+
    YGridComponent(iTupel origin, iTupel size)
    make ygrid without coordinate information
    Definition ygrid.hh:99
    \n+
    int totalsize() const
    Return total size of index set which is the product of all size per direction.
    Definition ygrid.hh:209
    \n+
    YGridComponent(iTupel origin, iTupel size, const YGridComponent< Coordinates > &enclosing)
    make a subgrid by taking coordinates from a larger grid
    Definition ygrid.hh:108
    \n+
    const iTupel & supersize() const
    return size of enclosing grid
    Definition ygrid.hh:191
    \n+
    YGridComponent(iTupel origin, std::bitset< d > shift, Coordinates *coords, iTupel size, iTupel offset, iTupel supersize)
    Make YGridComponent by giving all parameters.
    Definition ygrid.hh:131
    \n+
    int superindex(iTupel coord) const
    Definition ygrid.hh:472
    \n+
    Iterator begin() const
    return iterator to first element of index set
    Definition ygrid.hh:487
    \n+
    FieldVector< ct, d > fTupel
    Definition ygrid.hh:82
    \n+
    Iterator begin(const iTupel &co) const
    return iterator to given element of index set
    Definition ygrid.hh:493
    \n+
    YGridComponent()
    make uninitialized ygrid
    Definition ygrid.hh:85
    \n+
    int origin(int i) const
    Return origin in direction i.
    Definition ygrid.hh:144
    \n+
    int supersize(int i) const
    return size of enclosing grid
    Definition ygrid.hh:185
    \n+
    int size(int i) const
    return size in direction i
    Definition ygrid.hh:197
    \n+
    int max(int i) const
    Return maximum index in direction i.
    Definition ygrid.hh:224
    \n+
    const std::bitset< d > & shift() const
    Return shift tupel.
    Definition ygrid.hh:162
    \n+
    int superincrement(int i) const
    Definition ygrid.hh:481
    \n+
    bool shift(int i) const
    Return shift in direction i.
    Definition ygrid.hh:156
    \n+
    Iterator end() const
    return subiterator to last element of index set
    Definition ygrid.hh:499
    \n+
    bool inside(const iTupel &coord) const
    given a coordinate, return true if it is in the grid
    Definition ygrid.hh:241
    \n+
    bool empty() const
    Return true if YGrid is empty, i.e. has size 0 in all directions.
    Definition ygrid.hh:230
    \n+
    const iTupel & offset() const
    Return offset to origin of enclosing grid.
    Definition ygrid.hh:179
    \n+
    const iTupel & origin() const
    return reference to origin
    Definition ygrid.hh:150
    \n+
    Definition ygrid.hh:298
    \n+
    Iterator & operator++()
    Increment iterator to next cell with position.
    Definition ygrid.hh:379
    \n+
    int superindex() const
    Return consecutive index in enclosing grid.
    Definition ygrid.hh:344
    \n+
    bool operator!=(const Iterator &i) const
    Return true when two iterators over the same grid are not equal (!).
    Definition ygrid.hh:338
    \n+
    ct lowerleft(int i) const
    Return ith component of lower left corner of the entity associated with the current coordinates and s...
    Definition ygrid.hh:403
    \n+
    std::bitset< d > shift() const
    Definition ygrid.hh:455
    \n+\n+
    ct meshsize(int i) const
    Return meshsize in direction i.
    Definition ygrid.hh:436
    \n+
    bool shift(int i) const
    Definition ygrid.hh:450
    \n+
    const YGridComponent< Coordinates > * _grid
    Definition ygrid.hh:468
    \n+
    void reinit(const YGridComponent< Coordinates > &r, const iTupel &coord)
    reinitialize iterator to given position
    Definition ygrid.hh:317
    \n+
    void move(const iTupel &dist)
    move this iterator dist cells in direction i
    Definition ygrid.hh:369
    \n+
    fTupel meshsize() const
    Return meshsize of current cell as reference.
    Definition ygrid.hh:442
    \n+
    fTupel lowerleft() const
    Return lower left corner of the entity associated with the current coordinates and shift.
    Definition ygrid.hh:409
    \n+
    Coordinates * coordCont() const
    Definition ygrid.hh:460
    \n+
    iTupel _coord
    current position in index set
    Definition ygrid.hh:466
    \n+
    const iTupel & coord() const
    Return coordinate of the cell as reference (do not modify).
    Definition ygrid.hh:356
    \n+
    void move(int i, int dist)
    move this iterator dist cells in direction i
    Definition ygrid.hh:362
    \n+
    Iterator(const YGridComponent< Coordinates > &r)
    Make iterator pointing to first cell in a grid.
    Definition ygrid.hh:304
    \n+
    ct upperright(int i) const
    Return ith component of upper right corder of the entity associated with the current coordinates and ...
    Definition ygrid.hh:418
    \n+
    int coord(int i) const
    Return coordinate of the cell in direction i.
    Definition ygrid.hh:350
    \n+
    fTupel upperright() const
    Return upper right corder of the entity associated with the current coordinates and shift.
    Definition ygrid.hh:427
    \n+
    bool operator==(const Iterator &i) const
    Return true when two iterators over the same grid are equal (!).
    Definition ygrid.hh:332
    \n+
    Iterator(const YGridComponent< Coordinates > &r, const iTupel &coord)
    Make iterator pointing to given cell in a grid.
    Definition ygrid.hh:311
    \n+
    int _superindex
    consecutive index in enclosing grid
    Definition ygrid.hh:467
    \n+
    implements a collection of YGridComponents which form a codimension Entities of given codimension c n...
    Definition ygrid.hh:551
    \n+
    int shiftmapping(const std::bitset< dim > &shift) const
    get which component belongs to a given shift vector
    Definition ygrid.hh:567
    \n+
    DAI dataBegin() const
    get start iterator in the data array
    Definition ygrid.hh:573
    \n+
    Iterator begin() const
    return begin iterator for the codimension and partition the ygrid represents
    Definition ygrid.hh:747
    \n+
    DAI dataEnd() const
    get end iterator in the data array
    Definition ygrid.hh:579
    \n+
    std::array< int, dim > iTupel
    Definition ygrid.hh:558
    \n+
    static const int dim
    Definition ygrid.hh:553
    \n+
    void setBegin(DAI begin)
    set start iterator in the data array
    Definition ygrid.hh:561
    \n+
    bool inside(const iTupel &coord, const std::bitset< dim > &shift=std::bitset< dim >()) const
    decide whether a coordinate is in the grid (depending on the component)
    Definition ygrid.hh:585
    \n+
    int superindex(const iTupel &coord, int which) const
    Definition ygrid.hh:764
    \n+
    Iterator begin(const std::array< int, dim > &coord, int which=0) const
    return iterator pointint to a specified position
    Definition ygrid.hh:753
    \n+
    YGridComponent< Coordinates > * DAI
    Definition ygrid.hh:556
    \n+
    void finalize(const DAI &end, int artificialOffset=0)
    Definition ygrid.hh:771
    \n+
    Iterator end() const
    return end iterator for the codimension and partition the ygrid represents
    Definition ygrid.hh:759
    \n+
    Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity in YaspGrid.
    Definition ygrid.hh:594
    \n+
    Iterator()=default
    default constructor
    \n+
    int which() const
    return the current component number
    Definition ygrid.hh:718
    \n+
    void move(int i, int dist)
    move the grid, this is only done and needed for codim 0
    Definition ygrid.hh:724
    \n+
    bool operator==(const Iterator &i) const
    compare two iterators: component has to match
    Definition ygrid.hh:702
    \n+
    Coordinates::ctype lowerleft(int i) const
    Definition ygrid.hh:642
    \n+
    Dune::FieldVector< typename Coordinates::ctype, dim > meshsize() const
    return the current meshsize vector
    Definition ygrid.hh:669
    \n+
    Iterator(const YGrid< Coordinates > &yg, const std::array< int, dim > &coords, int which=0)
    construct an iterator from coordinates and component
    Definition ygrid.hh:601
    \n+
    Coordinates * coordCont() const
    Definition ygrid.hh:734
    \n+
    Coordinates::ctype upperright(int i) const
    Definition ygrid.hh:652
    \n+
    std::bitset< dim > shift() const
    return the shift vector
    Definition ygrid.hh:681
    \n+
    bool shift(int i) const
    return the shift in direction i
    Definition ygrid.hh:675
    \n+
    bool operator!=(const Iterator &i) const
    compare two iterators: component has to match
    Definition ygrid.hh:710
    \n+
    void move(const iTupel &dist)
    Definition ygrid.hh:729
    \n+
    Dune::FieldVector< typename Coordinates::ctype, dim > upperright() const
    Definition ygrid.hh:657
    \n+
    const std::array< int, dim > & coord() const
    return coordinate array at the current position
    Definition ygrid.hh:637
    \n+
    Iterator & operator++()
    increment to the next entity jumping to next component if necessary
    Definition ygrid.hh:694
    \n+
    Coordinates::ctype meshsize(int i) const
    return the current meshsize in direction i
    Definition ygrid.hh:663
    \n+
    int coord(int i) const
    return coordinate at the current position (direction i)
    Definition ygrid.hh:631
    \n+
    Iterator(const YGrid< Coordinates > &yg, bool end=false)
    create an iterator to start or end of the codimension
    Definition ygrid.hh:608
    \n+
    Dune::FieldVector< typename Coordinates::ctype, dim > lowerleft() const
    Definition ygrid.hh:647
    \n+
    int superindex() const
    return the superindex
    Definition ygrid.hh:687
    \n+
    void reinit(const YGrid< Coordinates > &yg, const std::array< int, dim > &coords, int which=0)
    reinitializes an iterator, as if it was just constructed.
    Definition ygrid.hh:623
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,205 +1,1253 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridhierarchiciterator.hh\n+ygrid.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH\n-6#define DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH\n+5#ifndef DUNE_GRID_YASPGRID_YGRID_HH\n+6#define DUNE_GRID_YASPGRID_YGRID_HH\n 7\n-14namespace _\bD_\bu_\bn_\be {\n-15\n-18 template\n-_\b1_\b9 class _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-20 {\n-21 constexpr static int dim = GridImp::dimension;\n+8#include \n+9#include \n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15#include \n+16\n+21namespace _\bD_\bu_\bn_\be {\n 22\n-23 typedef _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n-24\n-25 public:\n-26 // types used from grids\n-_\b2_\b7 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n-_\b2_\b8 typedef typename GridImp::YGrid::Iterator _\bI;\n-_\b2_\b9 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-30\n-_\b3_\b2 _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br () : _entity(), _maxlevel(-1), stack() {}\n-33\n-_\b3_\b5 _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\bL_\bI& g, const _\bI& it, int maxlevel) :\n-36 _entity(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by<0, dim, GridImp>(g,it))\n-37 {\n-38 // store reference to entity implementation for better readability\n-39 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp& entity = _entity.impl();\n-40 // now iterator points to current cell\n-41 StackElem se(entity._\b__\bg);\n-42 std::copy(entity._\b__\bi_\bt.coord().begin(), entity._\b__\bi_\bt.coord().end(),\n-se.coord.begin());\n-43 stack.push(se);\n-44\n-45 // determine maximum level\n-46 _maxlevel = std::min(maxlevel,entity._\b__\bg->mg->maxLevel());\n-47\n-48 // if maxlevel not reached then push yourself and sons\n-49 if (entity._\b__\bg->level()<_maxlevel)\n-50 {\n-51 push_sons();\n-52 }\n-53\n-54 // and make iterator point to first son if stack is not empty\n-55 if (!stack.empty())\n-56 pop_tos();\n-57 }\n-58\n-_\b6_\b0 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-61 {\n-62 // sanity check: do nothing when stack is empty\n-63 if (stack.empty()) return;\n-64\n-65 // if maxlevel not reached then push sons\n-66 if (_entity.impl()._g->level()<_maxlevel)\n-67 push_sons();\n-68\n-69 // in any case pop one element\n-70 pop_tos();\n-71 }\n-72\n-_\b7_\b4 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n+23 namespace Yasp {\n+28 template\n+_\b2_\b9 std::array _\bs_\bi_\bz_\be_\bA_\br_\br_\ba_\by(const std::array,d>& v)\n+30 {\n+31 std::array tmp;\n+32 for (int i=0; i\n+_\b7_\b4 class _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n 75 {\n-76 return (_entity == rhs._entity);\n-77 }\n-78\n-_\b8_\b0 const _\bE_\bn_\bt_\bi_\bt_\by& _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n-81 {\n-82 return _entity;\n-83 }\n-84\n-_\b8_\b5 void _\bp_\br_\bi_\bn_\bt (std::ostream& s) const\n+76 public:\n+77 //extract coordinate type and dimension from the coordinate container\n+_\b7_\b8 typedef typename Coordinates::ctype _\bc_\bt;\n+_\b7_\b9 static const int _\bd = Coordinates::dimension;\n+80\n+_\b8_\b1 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n+_\b8_\b2 typedef FieldVector _\bf_\bT_\bu_\bp_\be_\bl;\n+83\n+_\b8_\b5 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt () : _shift(0ULL)\n 86 {\n-87 // store reference to entity implementation for better readability\n-88 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp& entity = _entity.impl();\n-89 s << \"HIER: \" << \"level=\" << entity._\b__\bg.level()\n-90 << \" position=\" << entity._\b__\bi_\bt.coord()\n-91 << \" superindex=\" << entity._\b__\bi_\bt.superindex()\n-92 << \" maxlevel=\" << entity._maxlevel\n-93 << \" stacksize=\" << stack.size()\n-94 << std::endl;\n-95 }\n-96\n-97 private:\n-98 _\bE_\bn_\bt_\bi_\bt_\by _entity;\n-99\n-100 int _maxlevel;\n-101\n-102 struct StackElem {\n-103 _\bY_\bG_\bL_\bI g; // grid level of the element\n-104 std::array coord; // and the coordinates\n-105 StackElem(_\bY_\bG_\bL_\bI gg) : g(gg) {}\n-106 };\n-107 std::stack stack;\n-108\n-109 // push sons of current element on the stack\n-110 void push_sons ()\n-111 {\n-112 // store reference to entity implementation for better readability\n-113 YaspEntityImp& entity = _entity._\bi_\bm_\bp_\bl();\n-114\n-115 // yes, process all 1<overlap[0].dataBegin()->origin(k)) || (se.coord\n-[k] >= finer->overlap[0].dataBegin()->origin(k)+finer->overlap[0].dataBegin()-\n->size(k)))\n-130 exists = false;\n-131 if (exists)\n-132 stack.push(se);\n-133 }\n-134 }\n-135\n-136 // make TOS the current element\n-137 void pop_tos ()\n-138 {\n-139 StackElem se = stack.top();\n-140 stack.pop();\n-141 YaspEntityImp& entity = _entity._\bi_\bm_\bp_\bl();\n-142 entity._g = se.g;\n-143 entity._it.reinit(entity._g->overlap[0],se.coord);\n-144 }\n-145 };\n-146\n-147} // namespace Dune\n+87 std::fill(_origin.begin(), _origin.end(), 0);\n+88 std::fill(_offset.begin(), _offset.end(), 0);\n+89 std::fill(_size.begin(), _size.end(), 0);\n+90 }\n+91\n+_\b9_\b9 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt(_\bi_\bT_\bu_\bp_\be_\bl _\bo_\br_\bi_\bg_\bi_\bn, _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be)\n+100 : _origin(_\bo_\br_\bi_\bg_\bi_\bn), _size(_\bs_\bi_\bz_\be)\n+101 {}\n+102\n+_\b1_\b0_\b8 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt (_\bi_\bT_\bu_\bp_\be_\bl _\bo_\br_\bi_\bg_\bi_\bn, _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be, const\n+_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& enclosing)\n+109 : _origin(_\bo_\br_\bi_\bg_\bi_\bn), _shift(enclosing._\bs_\bh_\bi_\bf_\bt()), _coords(enclosing._\bg_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs\n+()), _size(_\bs_\bi_\bz_\be), _supersize(enclosing._\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be())\n+110 {\n+111 for (int i=0; i<_\bd; i++)\n+112 _offset[i] = _\bo_\br_\bi_\bg_\bi_\bn[i] - enclosing._\bo_\br_\bi_\bg_\bi_\bn(i) + enclosing._\bo_\bf_\bf_\bs_\be_\bt(i);\n+113\n+114 // compute superincrements\n+115 int inc = 1;\n+116 for (int i=0; i<_\bd; ++i)\n+117 {\n+118 _superincrement[i] = inc;\n+119 inc *= _supersize[i];\n+120 }\n+121 }\n+122\n+_\b1_\b3_\b1 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt (_\bi_\bT_\bu_\bp_\be_\bl _\bo_\br_\bi_\bg_\bi_\bn, std::bitset _\bs_\bh_\bi_\bf_\bt, Coordinates* coords,\n+_\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be, _\bi_\bT_\bu_\bp_\be_\bl _\bo_\bf_\bf_\bs_\be_\bt, _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be)\n+132 : _origin(_\bo_\br_\bi_\bg_\bi_\bn), _shift(_\bs_\bh_\bi_\bf_\bt), _coords(coords), _size(_\bs_\bi_\bz_\be), _offset\n+(_\bo_\bf_\bf_\bs_\be_\bt), _supersize(_\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be)\n+133 {\n+134 // compute superincrements\n+135 int inc = 1;\n+136 for (int i=0; i<_\bd; ++i)\n+137 {\n+138 _superincrement[i] = inc;\n+139 inc *= _supersize[i];\n+140 }\n+141 }\n+142\n+_\b1_\b4_\b4 int _\bo_\br_\bi_\bg_\bi_\bn (int i) const\n+145 {\n+146 return _origin[i];\n+147 }\n 148\n-149#endif // DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH\n+_\b1_\b5_\b0 const _\bi_\bT_\bu_\bp_\be_\bl& _\bo_\br_\bi_\bg_\bi_\bn () const\n+151 {\n+152 return _origin;\n+153 }\n+154\n+_\b1_\b5_\b6 bool _\bs_\bh_\bi_\bf_\bt (int i) const\n+157 {\n+158 return _shift[i];\n+159 }\n+160\n+_\b1_\b6_\b2 const std::bitset& _\bs_\bh_\bi_\bf_\bt () const\n+163 {\n+164 return _shift;\n+165 }\n+166\n+_\b1_\b6_\b7 Coordinates* _\bg_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs() const\n+168 {\n+169 return _coords;\n+170 }\n+171\n+_\b1_\b7_\b3 int _\bo_\bf_\bf_\bs_\be_\bt (int i) const\n+174 {\n+175 return _offset[i];\n+176 }\n+177\n+_\b1_\b7_\b9 const _\bi_\bT_\bu_\bp_\be_\bl & _\bo_\bf_\bf_\bs_\be_\bt () const\n+180 {\n+181 return _offset;\n+182 }\n+183\n+_\b1_\b8_\b5 int _\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be (int i) const\n+186 {\n+187 return _supersize[i];\n+188 }\n+189\n+_\b1_\b9_\b1 const _\bi_\bT_\bu_\bp_\be_\bl & _\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be () const\n+192 {\n+193 return _supersize;\n+194 }\n+195\n+_\b1_\b9_\b7 int _\bs_\bi_\bz_\be (int i) const\n+198 {\n+199 return _size[i];\n+200 }\n+201\n+_\b2_\b0_\b3 _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be () const\n+204 {\n+205 return _size;\n+206 }\n+207\n+_\b2_\b0_\b9 int _\bt_\bo_\bt_\ba_\bl_\bs_\bi_\bz_\be () const\n+210 {\n+211 int s=1;\n+212 for (int i=0; i<_\bd; ++i)\n+213 s *= _\bs_\bi_\bz_\be(i);\n+214 return s;\n+215 }\n+216\n+_\b2_\b1_\b8 int _\bm_\bi_\bn (int i) const\n+219 {\n+220 return _origin[i];\n+221 }\n+222\n+_\b2_\b2_\b4 int _\bm_\ba_\bx (int i) const\n+225 {\n+226 return _origin[i] + _\bs_\bi_\bz_\be(i) - 1;\n+227 }\n+228\n+_\b2_\b3_\b0 bool _\be_\bm_\bp_\bt_\by () const\n+231 {\n+232 for (int i=0; i<_\bd; ++i)\n+233 {\n+234 if (_\bs_\bi_\bz_\be(i) == 0)\n+235 return true;\n+236 }\n+237 return false;\n+238 }\n+239\n+_\b2_\b4_\b1 bool _\bi_\bn_\bs_\bi_\bd_\be (const _\bi_\bT_\bu_\bp_\be_\bl& coord) const\n+242 {\n+243 for (int i=0; i<_\bd; i++)\n+244 {\n+245 if ((coord[i]<_origin[i]) || (coord[i]>=_origin[i]+_size[i]))\n+246 return false;\n+247 }\n+248 return true;\n+249 }\n+250\n+_\b2_\b5_\b2 int _\bi_\bn_\bd_\be_\bx (const _\bi_\bT_\bu_\bp_\be_\bl& coord) const\n+253 {\n+254 int _\bi_\bn_\bd_\be_\bx = (coord[_\bd-1]-_origin[_\bd-1]);\n+255\n+256 for (int i=_\bd-2; i>=0; i--)\n+257 _\bi_\bn_\bd_\be_\bx = _\bi_\bn_\bd_\be_\bx*_size[i] + (coord[i]-_origin[i]);\n+258\n+259 return _\bi_\bn_\bd_\be_\bx;\n+260 }\n+261\n+_\b2_\b6_\b3 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b> _\bm_\bo_\bv_\be (_\bi_\bT_\bu_\bp_\be_\bl v) const\n+264 {\n+265 for (int i=0; i<_\bd; i++)\n+266 v[i] += _origin[i];\n+267 return _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>(v,_size,*this);\n+268 }\n+269\n+_\b2_\b7_\b1 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b> _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn (const\n+_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r) const\n+272 {\n+273 for (int i=0; i<_\bd; i++)\n+274 {\n+275 //empty coordinate vectors result in empty intersections\n+276 if (_\be_\bm_\bp_\bt_\by() || r._\be_\bm_\bp_\bt_\by())\n+277 return _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>();\n+278 }\n+279\n+280 _\bi_\bT_\bu_\bp_\be_\bl neworigin;\n+281 _\bi_\bT_\bu_\bp_\be_\bl newsize;\n+282 for (int i=0; i<_\bd; ++i)\n+283 {\n+284 neworigin[i] = std::max(_\bo_\br_\bi_\bg_\bi_\bn(i),r._\bo_\br_\bi_\bg_\bi_\bn(i));\n+285 newsize[i] = std::min(_\bm_\ba_\bx(i),r._\bm_\ba_\bx(i)) - neworigin[i] + 1;\n+286 }\n+287\n+288 return _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>(neworigin,newsize,*this);\n+289 }\n+290\n+291\n+_\b2_\b9_\b8 class _\bI_\bt_\be_\br_\ba_\bt_\bo_\br {\n+299 public:\n+300 // default constructor\n+_\b3_\b0_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br () = default;\n+302\n+_\b3_\b0_\b4 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r) : _\b__\bg_\br_\bi_\bd(&r)\n+305 {\n+306 _\bi_\bT_\bu_\bp_\be_\bl _\bc_\bo_\bo_\br_\bd(r._\bo_\br_\bi_\bg_\bi_\bn());\n+307 _\br_\be_\bi_\bn_\bi_\bt(r,_\bc_\bo_\bo_\br_\bd);\n+308 }\n+309\n+_\b3_\b1_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r, const _\bi_\bT_\bu_\bp_\be_\bl& _\bc_\bo_\bo_\br_\bd)\n+312 {\n+313 _\br_\be_\bi_\bn_\bi_\bt(r,_\bc_\bo_\bo_\br_\bd);\n+314 }\n+315\n+_\b3_\b1_\b7 void _\br_\be_\bi_\bn_\bi_\bt (const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r, const _\bi_\bT_\bu_\bp_\be_\bl& _\bc_\bo_\bo_\br_\bd)\n+318 {\n+319 // initialize to given position in index set\n+320 for (int i=0; i<_\bd; ++i)\n+321 _\b__\bc_\bo_\bo_\br_\bd[i] = _\bc_\bo_\bo_\br_\bd[i];\n+322\n+323 // move superindex to first cell in subgrid\n+324 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx = 0;\n+325 for (int i=0; i<_\bd; ++i)\n+326 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += (r._\bo_\bf_\bf_\bs_\be_\bt(i)+_\bc_\bo_\bo_\br_\bd[i]-r._\bo_\br_\bi_\bg_\bi_\bn(i))*r._\bs_\bu_\bp_\be_\br_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt(i);\n+327\n+328 _\b__\bg_\br_\bi_\bd = &r;\n+329 }\n+330\n+_\b3_\b3_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b (const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n+333 {\n+334 return _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx == i._\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx;\n+335 }\n+336\n+_\b3_\b3_\b8 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b (const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n+339 {\n+340 return _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx != i._\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx;\n+341 }\n+342\n+_\b3_\b4_\b4 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx () const\n+345 {\n+346 return _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx;\n+347 }\n+348\n+_\b3_\b5_\b0 int _\bc_\bo_\bo_\br_\bd (int i) const\n+351 {\n+352 return _\b__\bc_\bo_\bo_\br_\bd[i];\n+353 }\n+354\n+_\b3_\b5_\b6 const _\bi_\bT_\bu_\bp_\be_\bl& _\bc_\bo_\bo_\br_\bd () const\n+357 {\n+358 return _\b__\bc_\bo_\bo_\br_\bd;\n+359 }\n+360\n+_\b3_\b6_\b2 void _\bm_\bo_\bv_\be (int i, int dist)\n+363 {\n+364 _\b__\bc_\bo_\bo_\br_\bd[i] += dist;\n+365 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += dist*_\b__\bg_\br_\bi_\bd->superincrement(i);\n+366 }\n+367\n+_\b3_\b6_\b9 void _\bm_\bo_\bv_\be (const _\bi_\bT_\bu_\bp_\be_\bl& dist)\n+370 {\n+371 for (int i = 0; i < _\bd; ++i)\n+372 {\n+373 _\b__\bc_\bo_\bo_\br_\bd[i] += dist[i];\n+374 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += dist[i]*_\b__\bg_\br_\bi_\bd->superincrement(i);\n+375 }\n+376 }\n+377\n+_\b3_\b7_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b ()\n+380 {\n+381 for (int i=0; i<_\bd; i++) // check for wrap around\n+382 {\n+383 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += _\b__\bg_\br_\bi_\bd->superincrement(i); // move on cell in direction i\n+384 if (++_\b__\bc_\bo_\bo_\br_\bd[i] <= _\b__\bg_\br_\bi_\bd->max(i))\n+385 return *this;\n+386 else\n+387 {\n+388 _\b__\bc_\bo_\bo_\br_\bd[i] = _\b__\bg_\br_\bi_\bd->origin(i); // move back to origin in direction i\n+389 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx -= _\b__\bg_\br_\bi_\bd->size(i) * _\b__\bg_\br_\bi_\bd->superincrement(i);\n+390 }\n+391 }\n+392 // if we wrapped around, back to to begin(), we must put the iterator to\n+end()\n+393 if (_\b__\bc_\bo_\bo_\br_\bd == _\b__\bg_\br_\bi_\bd->origin())\n+394 {\n+395 for (int i=0; i<_\bd; i++)\n+396 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += (_\b__\bg_\br_\bi_\bd->size(i)-1) * _\b__\bg_\br_\bi_\bd->superincrement(i);\n+397 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += _\b__\bg_\br_\bi_\bd->superincrement(0);\n+398 }\n+399 return *this;\n+400 }\n+401\n+_\b4_\b0_\b3 _\bc_\bt _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(int i) const\n+404 {\n+405 return _\b__\bg_\br_\bi_\bd->getCoords()->coordinate(i,_\b__\bc_\bo_\bo_\br_\bd[i]);\n+406 }\n+407\n+_\b4_\b0_\b9 _\bf_\bT_\bu_\bp_\be_\bl _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt() const\n+410 {\n+411 _\bf_\bT_\bu_\bp_\be_\bl ll;\n+412 for (int i=0; i<_\bd; i++)\n+413 ll[i] = _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(i);\n+414 return ll;\n+415 }\n+416\n+_\b4_\b1_\b8 _\bc_\bt _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(int i) const\n+419 {\n+420 int _\bc_\bo_\bo_\br_\bd = _\b__\bc_\bo_\bo_\br_\bd[i];\n+421 if (_\bs_\bh_\bi_\bf_\bt(i))\n+422 _\bc_\bo_\bo_\br_\bd++;\n+423 return _\b__\bg_\br_\bi_\bd->getCoords()->coordinate(i,_\bc_\bo_\bo_\br_\bd);\n+424 }\n+425\n+_\b4_\b2_\b7 _\bf_\bT_\bu_\bp_\be_\bl _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt() const\n+428 {\n+429 _\bf_\bT_\bu_\bp_\be_\bl ur;\n+430 for (int i=0; i<_\bd; i++)\n+431 ur[i] = _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(i);\n+432 return ur;\n+433 }\n+434\n+_\b4_\b3_\b6 _\bc_\bt _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be (int i) const\n+437 {\n+438 return _\b__\bg_\br_\bi_\bd->getCoords()->meshsize(i,_\b__\bc_\bo_\bo_\br_\bd[i]);\n+439 }\n+440\n+_\b4_\b4_\b2 _\bf_\bT_\bu_\bp_\be_\bl _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be () const\n+443 {\n+444 _\bf_\bT_\bu_\bp_\be_\bl h;\n+445 for (int i=0; i<_\bd; i++)\n+446 h[i] = _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(i);\n+447 return h;\n+448 }\n+449\n+_\b4_\b5_\b0 bool _\bs_\bh_\bi_\bf_\bt (int i) const\n+451 {\n+452 return _\b__\bg_\br_\bi_\bd->shift(i);\n+453 }\n+454\n+_\b4_\b5_\b5 std::bitset _\bs_\bh_\bi_\bf_\bt() const\n+456 {\n+457 return _\b__\bg_\br_\bi_\bd->shift();\n+458 }\n+459\n+_\b4_\b6_\b0 Coordinates* _\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt() const\n+461 {\n+462 return _\b__\bg_\br_\bi_\bd->getCoords();\n+463 }\n+464\n+465 protected:\n+_\b4_\b6_\b6 _\bi_\bT_\bu_\bp_\be_\bl _\b__\bc_\bo_\bo_\br_\bd;\n+_\b4_\b6_\b7 int _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx = 0;\n+_\b4_\b6_\b8 const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>* _\b__\bg_\br_\bi_\bd = nullptr;\n+469 };\n+470\n+471\n+_\b4_\b7_\b2 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx(_\bi_\bT_\bu_\bp_\be_\bl coord) const\n+473 {\n+474 // move superindex to first cell in subgrid\n+475 int si = 0;\n+476 for (int i=0; i<_\bd; ++i)\n+477 si += (_\bo_\bf_\bf_\bs_\be_\bt(i)+coord[i]-_\bo_\br_\bi_\bg_\bi_\bn(i))*_superincrement[i];\n+478 return si;\n+479 }\n+480\n+_\b4_\b8_\b1 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt(int i) const\n+482 {\n+483 return _superincrement[i];\n+484 }\n+485\n+_\b4_\b8_\b7 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const\n+488 {\n+489 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this);\n+490 }\n+491\n+_\b4_\b9_\b3 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& co) const\n+494 {\n+495 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this,co);\n+496 }\n+497\n+_\b4_\b9_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const\n+500 {\n+501 _\bi_\bT_\bu_\bp_\be_\bl last;\n+502 for (int i=0; i<_\bd; i++)\n+503 last[i] = _\bm_\ba_\bx(i);\n+504 last[0] += 1;\n+505 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this,last);\n+506 }\n+507\n+508 private:\n+509 _\bi_\bT_\bu_\bp_\be_\bl _origin;\n+510 std::bitset _shift;\n+511 Coordinates* _coords;\n+512 _\bi_\bT_\bu_\bp_\be_\bl _size;\n+513 _\bi_\bT_\bu_\bp_\be_\bl _offset;\n+514 _\bi_\bT_\bu_\bp_\be_\bl _supersize;\n+515 _\bi_\bT_\bu_\bp_\be_\bl _superincrement;\n+516\n+517 };\n+518\n+519\n+521 template \n+_\b5_\b2_\b2 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n+_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b> e)\n+523 {\n+524 s << \"Printing YGridComponent structure:\" << std::endl;\n+525 s << \"Origin: \" << e._\bo_\br_\bi_\bg_\bi_\bn() << std::endl;\n+526 s << \"Shift: \" << e._\bs_\bh_\bi_\bf_\bt() << std::endl;\n+527 s << \"Size: \" << e._\bs_\bi_\bz_\be() << std::endl;\n+528 s << \"Offset: \" << e._\bo_\bf_\bf_\bs_\be_\bt() << std::endl;\n+529 s << \"Supersize: \" << e._\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be() << std::endl;\n+530 return s;\n+531 }\n+532\n+534 template \n+_\b5_\b3_\b5 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s, typename\n+_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& e)\n+536 {\n+537 s << \"Printing YGridComponent Iterator:\" << std::endl << \"Iterator at \" <<\n+e._\bc_\bo_\bo_\br_\bd() << \" (index \";\n+538 s << e.index() << \"), position \" << e.position();\n+539 return s;\n+540 }\n+541\n+549 template\n+_\b5_\b5_\b0 class _\bY_\bG_\br_\bi_\bd\n+551 {\n+552 public:\n+_\b5_\b5_\b3 static const int _\bd_\bi_\bm = Coordinates::dimension;\n+554\n+555 // define data array iterator\n+_\b5_\b5_\b6 typedef _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>* _\bD_\bA_\bI;\n+557\n+_\b5_\b5_\b8 typedef typename std::array _\bi_\bT_\bu_\bp_\be_\bl;\n+559\n+_\b5_\b6_\b1 void _\bs_\be_\bt_\bB_\be_\bg_\bi_\bn(_\bD_\bA_\bI _\bb_\be_\bg_\bi_\bn)\n+562 {\n+563 _begin = _\bb_\be_\bg_\bi_\bn;\n+564 }\n+565\n+_\b5_\b6_\b7 int _\bs_\bh_\bi_\bf_\bt_\bm_\ba_\bp_\bp_\bi_\bn_\bg(const std::bitset& shift) const\n+568 {\n+569 return _shiftmapping[shift.to_ulong()];\n+570 }\n+571\n+_\b5_\b7_\b3 _\bD_\bA_\bI _\bd_\ba_\bt_\ba_\bB_\be_\bg_\bi_\bn() const\n+574 {\n+575 return _begin;\n+576 }\n+577\n+_\b5_\b7_\b9 _\bD_\bA_\bI _\bd_\ba_\bt_\ba_\bE_\bn_\bd() const\n+580 {\n+581 return _end;\n+582 }\n+583\n+_\b5_\b8_\b5 bool _\bi_\bn_\bs_\bi_\bd_\be(const _\bi_\bT_\bu_\bp_\be_\bl& coord, const std::bitset& shift = std::\n+bitset()) const\n+586 {\n+587 return (_begin+_shiftmapping[shift.to_ulong()])->inside(coord);\n+588 }\n+589\n+_\b5_\b9_\b3 class _\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+594 {\n+595 public:\n+596\n+_\b5_\b9_\b8 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br () = default;\n+599\n+_\b6_\b0_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& yg, const std::array& coords,\n+int _\bw_\bh_\bi_\bc_\bh = 0)\n+602 : _which(_\bw_\bh_\bi_\bc_\bh), _yg(&yg)\n+603 {\n+604 _it = typename _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*(_yg->dataBegin\n+()+_\bw_\bh_\bi_\bc_\bh),coords);\n+605 }\n+606\n+_\b6_\b0_\b8 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& yg, bool _\be_\bn_\bd=false) : _yg(&yg)\n+609 {\n+610 if (_\be_\bn_\bd)\n+611 {\n+612 _it = _yg->_itends.back();\n+613 _which = _yg->_itends.size() - 1;\n+614 }\n+615 else\n+616 {\n+617 _it = _yg->_itbegins[0];\n+618 _which = 0;\n+619 }\n+620 }\n+621\n+_\b6_\b2_\b3 void _\br_\be_\bi_\bn_\bi_\bt(const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& yg, const std::array&\n+coords, int _\bw_\bh_\bi_\bc_\bh = 0)\n+624 {\n+625 _yg = &yg;\n+626 _which = _\bw_\bh_\bi_\bc_\bh;\n+627 _it = typename _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*(_yg->dataBegin\n+()+_\bw_\bh_\bi_\bc_\bh),coords);\n+628 }\n+629\n+_\b6_\b3_\b1 int _\bc_\bo_\bo_\br_\bd (int i) const\n+632 {\n+633 return _it._\bc_\bo_\bo_\br_\bd(i);\n+634 }\n+635\n+_\b6_\b3_\b7 const std::array& _\bc_\bo_\bo_\br_\bd () const\n+638 {\n+639 return _it._\bc_\bo_\bo_\br_\bd();\n+640 }\n+641\n+_\b6_\b4_\b2 typename Coordinates::ctype _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(int i) const\n+643 {\n+644 return _it._\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(i);\n+645 }\n+646\n+_\b6_\b4_\b7 Dune::FieldVector _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt() const\n+648 {\n+649 return _it._\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt();\n+650 }\n+651\n+_\b6_\b5_\b2 typename Coordinates::ctype _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(int i) const\n+653 {\n+654 return _it._\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(i);\n+655 }\n+656\n+_\b6_\b5_\b7 Dune::FieldVector _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt() const\n+658 {\n+659 return _it._\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt();\n+660 }\n+661\n+_\b6_\b6_\b3 typename Coordinates::ctype _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be (int i) const\n+664 {\n+665 return _it._\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(i);\n+666 }\n+667\n+_\b6_\b6_\b9 Dune::FieldVector _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be() const\n+670 {\n+671 return _it._\bm_\be_\bs_\bh_\bs_\bi_\bz_\be();\n+672 }\n+673\n+_\b6_\b7_\b5 bool _\bs_\bh_\bi_\bf_\bt (int i) const\n+676 {\n+677 return _it._\bs_\bh_\bi_\bf_\bt(i);\n+678 }\n+679\n+_\b6_\b8_\b1 std::bitset _\bs_\bh_\bi_\bf_\bt () const\n+682 {\n+683 return _it._\bs_\bh_\bi_\bf_\bt();\n+684 }\n+685\n+_\b6_\b8_\b7 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx() const\n+688 {\n+689 // the offset of the current component has to be taken into account\n+690 return _yg->_indexOffset[_which] + _it._\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx();\n+691 }\n+692\n+_\b6_\b9_\b4 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b ()\n+695 {\n+696 if ((++_it == _yg->_itends[_which]) && (_which < _yg->_itends.size()-1))\n+697 _it = _yg->_itbegins[++_which];\n+698 return *this;\n+699 }\n+700\n+_\b7_\b0_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n+703 {\n+704 if (_which != i._which)\n+705 return false;\n+706 return _it == i._it;\n+707 }\n+708\n+_\b7_\b1_\b0 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n+711 {\n+712 if (_it != i._it)\n+713 return true;\n+714 return _which != i._which;\n+715 }\n+716\n+_\b7_\b1_\b8 int _\bw_\bh_\bi_\bc_\bh() const\n+719 {\n+720 return _which;\n+721 }\n+722\n+_\b7_\b2_\b4 void _\bm_\bo_\bv_\be(int i, int dist)\n+725 {\n+726 _it._\bm_\bo_\bv_\be(i,dist);\n+727 }\n+728\n+_\b7_\b2_\b9 void _\bm_\bo_\bv_\be(const _\bi_\bT_\bu_\bp_\be_\bl& dist)\n+730 {\n+731 _it._\bm_\bo_\bv_\be(dist);\n+732 }\n+733\n+_\b7_\b3_\b4 Coordinates* _\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt() const\n+735 {\n+736 return _it._\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt();\n+737 }\n+738\n+739\n+740 private:\n+741 unsigned int _which = 0;\n+742 const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>* _yg = nullptr;\n+743 typename _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _it;\n+744 };\n+745\n+_\b7_\b4_\b7 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn() const\n+748 {\n+749 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this);\n+750 }\n+751\n+_\b7_\b5_\b3 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn(const std::array& coord, int which = 0) const\n+754 {\n+755 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this, coord, which);\n+756 }\n+757\n+_\b7_\b5_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd() const\n+760 {\n+761 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this,true);\n+762 }\n+763\n+_\b7_\b6_\b4 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx(const _\bi_\bT_\bu_\bp_\be_\bl& coord, int which) const\n+765 {\n+766 return _indexOffset[which] + (_\bd_\ba_\bt_\ba_\bB_\be_\bg_\bi_\bn()+which)->_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx(coord);\n+767 }\n+768\n+769\n+770 // finalize the ygrid construction by storing component iterators\n+_\b7_\b7_\b1 void _\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be(const _\bD_\bA_\bI& _\be_\bn_\bd, int artificialOffset = 0)\n+772 {\n+773 // set the end iterator in the ygrid component array\n+774 _end = _\be_\bn_\bd;\n+775\n+776 _indexOffset.push_back(artificialOffset);\n+777 int k = 0;\n+778 for (_\bD_\bA_\bI i=_begin; i != _end; ++i, ++k)\n+779 {\n+780 //store begin and end iterators\n+781 _itbegins.push_back(i->begin());\n+782 _itends.push_back(i->end());\n+783\n+784 // store index offset\n+785 _indexOffset.push_back(_indexOffset.back() + i->totalsize());\n+786\n+787 // store shift to component mapping\n+788 _shiftmapping[i->shift().to_ulong()] = k;\n+789 }\n+790 _indexOffset.resize(_itends.size());\n+791 }\n+792\n+793 private:\n+794\n+_\b7_\b9_\b5 friend class _\bY_\bG_\br_\bi_\bd::_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+796 _\bD_\bA_\bI _begin;\n+797 _\bD_\bA_\bI _end;\n+798 std::array _shiftmapping;\n+799 std::vector::Iterator> _itbegins;\n+800 std::vector::Iterator> _itends;\n+801 std::vector _indexOffset;\n+802 };\n+803\n+805 template \n+_\b8_\b0_\b6 inline std::ostream& operator<< (std::ostream& s, const YGrid&\n+e)\n+807 {\n+808 s << \"Printing YGrid structure:\" << std::endl;\n+809 for (auto it = e.dataBegin(); it != e.dataEnd(); ++it)\n+810 s << *it << std::endl;\n+811 return s;\n+812 }\n+813\n+821 template\n+_\b8_\b2_\b2 class YGridList\n+823 {\n+824 public:\n+_\b8_\b2_\b5 static const int dim = Coordinates::dimension;\n+826\n+_\b8_\b2_\b8 struct Intersection\n+829 {\n+_\b8_\b3_\b1 YGridComponent grid;\n+_\b8_\b3_\b3 int rank;\n+_\b8_\b3_\b5 int distance;\n+_\b8_\b3_\b7 YGrid yg;\n+838 };\n+839\n+840 // define data array iterator type\n+_\b8_\b4_\b1 typedef typename std::array, Dune::power(2,dim)>::\n+iterator DAI;\n+842\n+843 // iterator that allows to iterate over a concatenation of deques. namely\n+those\n+844 // that belong to the same codimension.\n+_\b8_\b4_\b5 class Iterator\n+846 {\n+847 public:\n+848\n+_\b8_\b5_\b0 Iterator(const YGridList& ygl, bool end=false) : _end\n+(ygl.dataEnd()), _which(ygl.dataBegin())\n+851 {\n+852 _it = _which->begin();\n+853\n+854 // advance the iterator to the first element that exists.\n+855 // some deques might be empty and should be skipped\n+856 while ((_which != _end) && (_it == _which->end()))\n+857 {\n+858 ++_which;\n+859 if (_which != _end)\n+860 _it = _which->begin();\n+861 }\n+862 // the iterator is at the end if and only if _which==_end\n+863 if (end)\n+864 {\n+865 _which = _end;\n+866 }\n+867 }\n+868\n+_\b8_\b7_\b0 Iterator& operator++ ()\n+871 {\n+872 ++_it;\n+873 // advance the iterator to the next element that exists.\n+874 // some deques might be empty and should be skipped\n+875 while ((_which != _end) && (_it == _which->end()))\n+876 {\n+877 ++_which;\n+878 if (_which != _end)\n+879 _it = _which->begin();\n+880 }\n+881 return *this;\n+882 }\n+883\n+_\b8_\b8_\b5 typename std::deque::iterator operator->() const\n+886 {\n+887 return _it;\n+888 }\n+889\n+_\b8_\b9_\b1 typename std::deque::iterator operator*() const\n+892 {\n+893 return _it;\n+894 }\n+895\n+_\b8_\b9_\b7 bool operator== (const Iterator& i) const\n+898 {\n+899 if (_which != i._which)\n+900 return false;\n+901 if (_which == _end)\n+902 return true;\n+903 return _it == i._it;\n+904 }\n+905\n+_\b9_\b0_\b7 bool operator!= (const Iterator& i) const\n+908 {\n+909 if (_which != i._which)\n+910 return true;\n+911 if (_which == _end)\n+912 return false;\n+913 return _it != i._it;\n+914 }\n+915\n+916 private:\n+917 typename std::deque::iterator _it;\n+918 DAI _end;\n+919 DAI _which;\n+920 };\n+921\n+_\b9_\b2_\b3 Iterator begin() const\n+924 {\n+925 return Iterator(*this);\n+926 }\n+927\n+_\b9_\b2_\b9 Iterator end() const\n+930 {\n+931 return Iterator(*this,true);\n+932 }\n+933\n+_\b9_\b3_\b5 void setBegin(typename std::array, Dune::power\n+(2,dim)>::iterator begin)\n+936 {\n+937 _begin = begin;\n+938 }\n+939\n+_\b9_\b4_\b1 DAI dataBegin() const\n+942 {\n+943 return _begin;\n+944 }\n+945\n+_\b9_\b4_\b7 DAI dataEnd() const\n+948 {\n+949 return _end;\n+950 }\n+951\n+_\b9_\b5_\b3 int size() const\n+954 {\n+955 int count = 0;\n+956 for (DAI it = _begin; it != _end; ++it)\n+957 count += it->size();\n+958 return count;\n+959 }\n+960\n+_\b9_\b6_\b2 void finalize(DAI end, const YGrid& ygrid)\n+963 {\n+964 // Instead of directly iterating over the intersection deques, this code\n+965 // iterates over the components of an associated ygrid and works its way\n+966 // through the list of intersection deques in parallel.\n+967 // The reason for this convoluted iteration technique is that there are not\n+968 // necessarily intersections for all possible shifts, but we have to make\n+969 // sure that we stop at each shift to update the per-component index shift.\n+970 // This is ensured by iterating over the ygrid, which is guaranteed to have\n+971 // a component for each shift vector.\n+972\n+973 // set end iterator in the data array\n+974 _end = end;\n+975\n+977 int offset = 0;\n+978\n+979 DAI i = _begin;\n+980\n+981 // make sure that we have a valid deque (i.e. a non-empty one)\n+982 while (i != _end && i->begin() == i->end())\n+983 ++i;\n+984\n+985 for (auto yit = ygrid.dataBegin(); yit != ygrid.dataEnd(); ++yit)\n+986 {\n+987 if (i == _end)\n+988 break;\n+989 auto it = i->_\bb_\be_\bg_\bi_\bn();\n+990 if (it->grid.shift() == yit->shift())\n+991 {\n+992 // iterate over the intersections in the deque and set the offset\n+993 for (; it != i->end(); ++it)\n+994 {\n+995 it->yg.setBegin(&(it->grid));\n+996 it->yg.finalize(&(it->grid)+1, offset);\n+997 }\n+998\n+999 // advance to next non-empty deque\n+1000 ++i;\n+1001 while (i != _end && i->begin() == i->end())\n+1002 ++i;\n+1003 }\n+1004\n+1005 // update the offset from the ygrid component\n+1006 int add = 1;\n+1007 for (int j=0; j<_\bd_\bi_\bm; j++)\n+1008 add *= yit->supersize(j);\n+1009 offset += add;\n+1010 }\n+1011 assert (i == end);\n+1012 }\n+1013\n+1014 private:\n+1015 DAI _begin;\n+1016 DAI _end;\n+1017 };\n+1018\n+1019} // namespace Dune\n+1020\n+1021#endif\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 PartitionType &type)\n+write a PartitionType to a stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:72\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bi_\bm_\bp_\bl\n-Implementation & impl()\n-access to the underlying implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bg\n-YGLI _g\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bi_\bt\n-I _it\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:425\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspHierarchicIterator enables iteration over son entities of codim 0.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspHierarchicIterator()\n-default constructor creating empty iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print(std::ostream &s) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI\n-GridImp::YGrid::Iterator I\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-const Entity & dereference() const\n-dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\bG_\bL_\bI\n-GridImp::YGridLevelIterator YGLI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspHierarchicIterator &rhs) const\n-equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspHierarchicIterator(const YGLI &g, const I &it, int maxlevel)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bs_\bi_\bz_\be_\bA_\br_\br_\ba_\by\n+std::array< int, d > sizeArray(const std::array< std::vector< ct >, d > &v)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+int index(const iTupel &coord) const\n+given a tupel compute its index in the lexicographic numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n+int offset(int i) const\n+Return offset to origin of enclosing grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:173\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bm_\bo_\bv_\be\n+YGridComponent< Coordinates > move(iTupel v) const\n+return grid moved by the vector v\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:263\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+iTupel size() const\n+retrun size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:203\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bd\n+static const int d\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+YGridComponent< Coordinates > intersection(const YGridComponent< Coordinates >\n+&r) const\n+Return YGridComponent of supergrid of self which is the intersection of self\n+and another YGridCompone...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bc_\bt\n+Coordinates::ctype ct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bg_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs\n+Coordinates * getCoords() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bm_\bi_\bn\n+int min(int i) const\n+Return minimum index in direction i.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n+YGridComponent(iTupel origin, iTupel size)\n+make ygrid without coordinate information\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bt_\bo_\bt_\ba_\bl_\bs_\bi_\bz_\be\n+int totalsize() const\n+Return total size of index set which is the product of all size per direction.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n+YGridComponent(iTupel origin, iTupel size, const YGridComponent< Coordinates >\n+&enclosing)\n+make a subgrid by taking coordinates from a larger grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be\n+const iTupel & supersize() const\n+return size of enclosing grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n+YGridComponent(iTupel origin, std::bitset< d > shift, Coordinates *coords,\n+iTupel size, iTupel offset, iTupel supersize)\n+Make YGridComponent by giving all parameters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n+int superindex(iTupel coord) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:472\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin() const\n+return iterator to first element of index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:487\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bf_\bT_\bu_\bp_\be_\bl\n+FieldVector< ct, d > fTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin(const iTupel &co) const\n+return iterator to given element of index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:493\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n+YGridComponent()\n+make uninitialized ygrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\br_\bi_\bg_\bi_\bn\n+int origin(int i) const\n+Return origin in direction i.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be\n+int supersize(int i) const\n+return size of enclosing grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int i) const\n+return size in direction i\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bm_\ba_\bx\n+int max(int i) const\n+Return maximum index in direction i.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+const std::bitset< d > & shift() const\n+Return shift tupel.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+int superincrement(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:481\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+bool shift(int i) const\n+Return shift in direction i.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\be_\bn_\bd\n+Iterator end() const\n+return subiterator to last element of index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:499\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+bool inside(const iTupel &coord) const\n+given a coordinate, return true if it is in the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:241\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\be_\bm_\bp_\bt_\by\n+bool empty() const\n+Return true if YGrid is empty, i.e. has size 0 in all directions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n+const iTupel & offset() const\n+Return offset to origin of enclosing grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\br_\bi_\bg_\bi_\bn\n+const iTupel & origin() const\n+return reference to origin\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:298\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n+Iterator & operator++()\n+Increment iterator to next cell with position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:379\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n+int superindex() const\n+Return consecutive index in enclosing grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:344\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n+bool operator!=(const Iterator &i) const\n+Return true when two iterators over the same grid are not equal (!).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:338\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n+ct lowerleft(int i) const\n+Return ith component of lower left corner of the entity associated with the\n+current coordinates and s...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:403\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+std::bitset< d > shift() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:455\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+ct meshsize(int i) const\n+Return meshsize in direction i.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:436\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+bool shift(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:450\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\bg_\br_\bi_\bd\n+const YGridComponent< Coordinates > * _grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:468\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\bi_\bn_\bi_\bt\n+void reinit(const YGridComponent< Coordinates > &r, const iTupel &coord)\n+reinitialize iterator to given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:317\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n+void move(const iTupel &dist)\n+move this iterator dist cells in direction i\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:369\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+fTupel meshsize() const\n+Return meshsize of current cell as reference.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:442\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n+fTupel lowerleft() const\n+Return lower left corner of the entity associated with the current coordinates\n+and shift.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:409\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt\n+Coordinates * coordCont() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:460\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\bc_\bo_\bo_\br_\bd\n+iTupel _coord\n+current position in index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:466\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n+const iTupel & coord() const\n+Return coordinate of the cell as reference (do not modify).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:356\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n+void move(int i, int dist)\n+move this iterator dist cells in direction i\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:362\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator(const YGridComponent< Coordinates > &r)\n+Make iterator pointing to first cell in a grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:304\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n+ct upperright(int i) const\n+Return ith component of upper right corder of the entity associated with the\n+current coordinates and ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:418\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n+int coord(int i) const\n+Return coordinate of the cell in direction i.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:350\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n+fTupel upperright() const\n+Return upper right corder of the entity associated with the current coordinates\n+and shift.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:427\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(const Iterator &i) const\n+Return true when two iterators over the same grid are equal (!).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:332\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator(const YGridComponent< Coordinates > &r, const iTupel &coord)\n+Make iterator pointing to given cell in a grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:311\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n+int _superindex\n+consecutive index in enclosing grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:467\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd\n+implements a collection of YGridComponents which form a codimension Entities of\n+given codimension c n...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:551\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bs_\bh_\bi_\bf_\bt_\bm_\ba_\bp_\bp_\bi_\bn_\bg\n+int shiftmapping(const std::bitset< dim > &shift) const\n+get which component belongs to a given shift vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:567\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bd_\ba_\bt_\ba_\bB_\be_\bg_\bi_\bn\n+DAI dataBegin() const\n+get start iterator in the data array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:573\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin() const\n+return begin iterator for the codimension and partition the ygrid represents\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:747\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bd_\ba_\bt_\ba_\bE_\bn_\bd\n+DAI dataEnd() const\n+get end iterator in the data array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:579\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, dim > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:558\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm\n+static const int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:553\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bs_\be_\bt_\bB_\be_\bg_\bi_\bn\n+void setBegin(DAI begin)\n+set start iterator in the data array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:561\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+bool inside(const iTupel &coord, const std::bitset< dim > &shift=std::bitset<\n+dim >()) const\n+decide whether a coordinate is in the grid (depending on the component)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:585\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n+int superindex(const iTupel &coord, int which) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:764\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin(const std::array< int, dim > &coord, int which=0) const\n+return iterator pointint to a specified position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:753\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bD_\bA_\bI\n+YGridComponent< Coordinates > * DAI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:556\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be\n+void finalize(const DAI &end, int artificialOffset=0)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:771\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\be_\bn_\bd\n+Iterator end() const\n+return end iterator for the codimension and partition the ygrid represents\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:759\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity\n+in YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:594\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator()=default\n+default constructor\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bw_\bh_\bi_\bc_\bh\n+int which() const\n+return the current component number\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:718\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n+void move(int i, int dist)\n+move the grid, this is only done and needed for codim 0\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:724\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(const Iterator &i) const\n+compare two iterators: component has to match\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:702\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n+Coordinates::ctype lowerleft(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:642\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+Dune::FieldVector< typename Coordinates::ctype, dim > meshsize() const\n+return the current meshsize vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:669\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator(const YGrid< Coordinates > &yg, const std::array< int, dim > &coords,\n+int which=0)\n+construct an iterator from coordinates and component\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:601\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt\n+Coordinates * coordCont() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:734\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n+Coordinates::ctype upperright(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:652\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+std::bitset< dim > shift() const\n+return the shift vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:681\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+bool shift(int i) const\n+return the shift in direction i\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:675\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n+bool operator!=(const Iterator &i) const\n+compare two iterators: component has to match\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:710\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n+void move(const iTupel &dist)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:729\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n+Dune::FieldVector< typename Coordinates::ctype, dim > upperright() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:657\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n+const std::array< int, dim > & coord() const\n+return coordinate array at the current position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:637\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n+Iterator & operator++()\n+increment to the next entity jumping to next component if necessary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:694\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+Coordinates::ctype meshsize(int i) const\n+return the current meshsize in direction i\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:663\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n+int coord(int i) const\n+return coordinate at the current position (direction i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:631\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator(const YGrid< Coordinates > &yg, bool end=false)\n+create an iterator to start or end of the codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:608\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n+Dune::FieldVector< typename Coordinates::ctype, dim > lowerleft() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:647\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n+int superindex() const\n+return the superindex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:687\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\bi_\bn_\bi_\bt\n+void reinit(const YGrid< Coordinates > &yg, const std::array< int, dim >\n+&coords, int which=0)\n+reinitializes an iterator, as if it was just constructed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:623\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00203.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00203.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: partitioning.hh File Reference\n+dune-grid: coordinates.hh File Reference\n \n \n \n \n \n \n \n@@ -71,65 +71,63 @@\n \n
    \n \n
    \n \n-
    partitioning.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    coordinates.hh File Reference
    \n \n
    \n \n-

    This file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning. \n+

    This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here. \n More...

    \n
    #include <array>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/common/deprecated.hh>
    \n+#include <bitset>
    \n+#include <vector>
    \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-\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::Yasp::Partitioning< d >
     a base class for the yaspgrid partitioning strategy More...
    class  Dune::EquidistantCoordinates< ct, dim >
     Container for equidistant coordinates in a YaspGrid. More...
     
    class  Dune::Yasp::DefaultPartitioning< d >
    class  Dune::EquidistantOffsetCoordinates< ct, dim >
     Container for equidistant coordinates in a YaspGrid with non-trivial origin. More...
     
    class  Dune::Yasp::PowerDPartitioning< d >
     Implement yaspgrid load balance strategy for P=x^{dim} processors. More...
     
    class  Dune::Yasp::FixedSizePartitioning< d >
     Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't match the number of processors, the grid should be distributed to, an exception is thrown. More...
     
    class  Dune::YLoadBalance< d >
     a base class for the yaspgrid partitioning strategy More...
     
    class  Dune::YLoadBalanceForward< d >
     
    class  Dune::YLoadBalanceDefault< d >
     Implement the default load balance strategy of yaspgrid. More...
     
    class  Dune::YLoadBalancePowerD< d >
     Implement yaspgrid load balance strategy for P=x^{dim} processors. More...
     
    class  Dune::YaspFixedSizePartitioner< d >
     Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't match the number of processors, the grid should be distributed to, an exception is thrown. More...
    class  Dune::TensorProductCoordinates< ct, dim >
     Coordinate container for a tensor product YaspGrid. More...
     
    \n \n \n \n \n \n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Yasp
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<class ct , int dim>
    std::ostream & Dune::operator<< (std::ostream &s, EquidistantCoordinates< ct, dim > &c)
     
    template<class ct , int dim>
    std::ostream & Dune::operator<< (std::ostream &s, EquidistantOffsetCoordinates< ct, dim > &c)
     
    template<class ct , int dim>
    std::ostream & Dune::operator<< (std::ostream &s, TensorProductCoordinates< ct, dim > &c)
     
    \n

    Detailed Description

    \n-

    This file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning.

    \n+

    This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,62 +1,55 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-partitioning.hh File Reference\n-This file provides tools to partition YaspGrids. If you want to write your own\n-partitioner, inherit from Yasp::Partitioning and implement the partition()\n-method. You can also browse this file for already available useful\n-partitioners, like Yasp::FixedSizePartitioning. _\bM_\bo_\br_\be_\b._\b._\b.\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+coordinates.hh File Reference\n+This provides container classes for the coordinates to be used in YaspGrid Upon\n+implementation of the tensorproduct feature, the coordinate information has\n+been encapsulated to keep performance for the equidistant grid. Containers for\n+equidistant and tensorproduct grids are provided here. _\bM_\bo_\br_\be_\b._\b._\b.\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:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n-\u00a0 a base class for the yaspgrid partitioning strategy _\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_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Container for equidistant coordinates in a _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Container for equidistant coordinates in a _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with non-trivial\n+ origin. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n-\u00a0 Implement yaspgrid load balance strategy for P=x^{dim} processors.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n- Implement partitioner that gets a fixed partitioning from an array If\n-\u00a0 the given partitioning doesn't match the number of processors, the grid\n- should be distributed to, an exception is thrown. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b<_\b _\bd_\b _\b>\n-\u00a0 a base class for the yaspgrid partitioning strategy _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b<_\b _\bd_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt_\b<_\b _\bd_\b _\b>\n-\u00a0 Implement the default load balance strategy of yaspgrid. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD_\b<_\b _\bd_\b _\b>\n-\u00a0 Implement yaspgrid load balance strategy for P=x^{dim} processors.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br_\b<_\b _\bd_\b _\b>\n- Implement partitioner that gets a fixed partitioning from an array If\n-\u00a0 the given partitioning doesn't match the number of processors, the grid\n- should be distributed to, an exception is thrown. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Coordinate container for a tensor product _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp\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 &s, _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs< ct,\n+ dim > &c)\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 &s,\n+ _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs< ct, dim > &c)\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 &s, _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs<\n+ ct, dim > &c)\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-This file provides tools to partition YaspGrids. If you want to write your own\n-partitioner, inherit from Yasp::Partitioning and implement the partition()\n-method. You can also browse this file for already available useful\n-partitioners, like Yasp::FixedSizePartitioning.\n+This provides container classes for the coordinates to be used in YaspGrid Upon\n+implementation of the tensorproduct feature, the coordinate information has\n+been encapsulated to keep performance for the equidistant grid. Containers for\n+equidistant and tensorproduct grids are provided here.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00203_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00203_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: partitioning.hh Source File\n+dune-grid: coordinates.hh Source File\n \n \n \n \n \n \n \n@@ -74,285 +74,384 @@\n \n \n
    \n
    \n-
    partitioning.hh
    \n+
    coordinates.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_GRID_YASPGRID_PARTITIONING_HH
    \n-
    4#define DUNE_GRID_YASPGRID_PARTITIONING_HH
    \n-
    5
    \n-
    13#include<array>
    \n-
    14
    \n-
    15#include<dune/common/math.hh>
    \n-
    16#include <dune/common/deprecated.hh>
    \n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20
    \n-
    21 namespace Yasp
    \n-
    22 {
    \n-
    23
    \n-
    37 template<int d>
    \n-
    \n-\n-
    39 {
    \n-
    40 public:
    \n-
    41 using iTupel = std::array<int, d>;
    \n-
    42 virtual ~Partitioning() = default;
    \n-
    43 virtual void partition(const iTupel&, int, iTupel&, int) const = 0;
    \n-
    44 };
    \n-
    \n-
    45
    \n-
    46 template<int d>
    \n-
    \n-\n-
    48 {
    \n-
    49 public:
    \n-
    50 using iTupel = std::array<int, d>;
    \n+
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=4 sw=2 sts=2:
    \n+
    5#ifndef DUNE_GRID_YASPGRID_COORDINATES_HH
    \n+
    6#define DUNE_GRID_YASPGRID_COORDINATES_HH
    \n+
    7
    \n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13
    \n+
    21namespace Dune
    \n+
    22{
    \n+
    27 template<class ct, int dim>
    \n+
    \n+\n+
    29 {
    \n+
    30 public:
    \n+
    32 typedef ct ctype;
    \n+
    34 static const int dimension = dim;
    \n+
    35
    \n+\n+
    38
    \n+
    \n+
    45 EquidistantCoordinates(const Dune::FieldVector<ct,dim>& upperRight, const std::array<int,dim>& s)
    \n+
    46 : _s(s)
    \n+
    47 {
    \n+
    48 for (int i=0; i<dim; i++)
    \n+
    49 _h[i] = upperRight[i] / _s[i];
    \n+
    50 }
    \n+
    \n
    51
    \n-
    \n-
    57 void partition (const iTupel& size, int P, iTupel& dims, int overlap) const final
    \n-
    58 {
    \n-
    59 double opt=1E100;
    \n-
    60 iTupel trydims;
    \n-
    61
    \n-
    62 trydims.fill(-1);
    \n-
    63 dims.fill(-1);
    \n-
    64
    \n-
    65 optimize_dims(d-1,size,P,dims,trydims,opt,overlap);
    \n-
    66 if (dims[0] == -1)
    \n-
    67 DUNE_THROW(Dune::GridError, "Failed to find a suitable partition");
    \n-
    68 }
    \n+
    \n+
    56 inline ct meshsize(int d, [[maybe_unused]] int i) const
    \n+
    57 {
    \n+
    58 return _h[d];
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    65 inline ct coordinate(int d, int i) const
    \n+
    66 {
    \n+
    67 return i*_h[d];
    \n+
    68 }
    \n
    \n
    69
    \n-
    70 private:
    \n-
    71 void optimize_dims (int i, const iTupel& size, int P, iTupel& dims, iTupel& trydims, double &opt, int overlap ) const
    \n-
    72 {
    \n-
    73 if (i>0) // test all subdivisions recursively
    \n-
    74 {
    \n-
    75 for (int k=1; k<=P; k++)
    \n-
    76 if (
    \n-
    77 P%k==0 // k devides P
    \n-
    78 and (
    \n-
    79 k == 1 // no neighbors
    \n-
    80 or
    \n-
    81 size[i] / k >= 2*overlap // size sufficient for overlap
    \n-
    82 )
    \n-
    83 )
    \n-
    84 {
    \n-
    85 // P divisible by k
    \n-
    86 trydims[i] = k;
    \n-
    87 optimize_dims(i-1,size,P/k,dims,trydims,opt,overlap);
    \n-
    88 }
    \n-
    89 }
    \n-
    90 else
    \n-
    91 {
    \n-
    92 // found a possible combination
    \n-
    93 if (
    \n-
    94 P == 1 // no neighbors
    \n-
    95 or
    \n-
    96 size[0] / P >= 2*overlap // size sufficient for overlap
    \n-
    97 )
    \n-
    98 trydims[0] = P;
    \n-
    99 else
    \n-
    100 return;
    \n-
    101
    \n-
    102 // check for optimality
    \n-
    103 double m = -1.0;
    \n-
    104
    \n-
    105 for (int k=0; k<d; k++)
    \n-
    106 {
    \n-
    107 double mm=((double)size[k])/((double)trydims[k]);
    \n-
    108 if (fmod((double)size[k],(double)trydims[k])>0.0001) mm*=3;
    \n-
    109 if ( mm > m ) m = mm;
    \n-
    110 }
    \n-
    111 //if (_rank==0) std::cout << "optimize_dims: " << size << " | " << trydims << " norm=" << m << std::endl;
    \n-
    112 if (m<opt)
    \n-
    113 {
    \n-
    114 opt = m;
    \n-
    115 dims = trydims;
    \n-
    116 }
    \n-
    117 }
    \n-
    118 }
    \n-
    119 };
    \n-
    \n-
    120
    \n-
    123 template<int d>
    \n-
    \n-\n-
    125 {
    \n-
    126 public:
    \n-
    127 typedef std::array<int, d> iTupel;
    \n-\n-
    129
    \n-
    \n-
    130 void partition (const iTupel& size, int P, iTupel& dims, int overlap) const final
    \n-
    131 {
    \n-
    132 for (int i=1; i<=P; ++i)
    \n-
    133 if (Dune::power(i, d) == P) {
    \n-
    134 std::fill(dims.begin(), dims.end(),i);
    \n-
    135 return;
    \n-
    136 }
    \n+
    \n+
    73 inline int size(int d) const
    \n+
    74 {
    \n+
    75 return _s[d];
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    \n+
    84 EquidistantCoordinates<ct,dim> refine(std::bitset<dim> ovlp_low, std::bitset<dim> ovlp_up, int overlap, bool keep_ovlp) const
    \n+
    85 {
    \n+
    86 //determine new size and meshsize
    \n+
    87 std::array<int,dim> news;
    \n+
    88 Dune::FieldVector<ct,dim> newUpperRight;
    \n+
    89
    \n+
    90 for (int i=0; i<dim; i++)
    \n+
    91 {
    \n+
    92 news[i] = 2 * _s[i];
    \n+
    93 if (!keep_ovlp)
    \n+
    94 {
    \n+
    95 if (ovlp_low[i])
    \n+
    96 news[i] -= overlap;
    \n+
    97 if (ovlp_up[i])
    \n+
    98 news[i] -= overlap;
    \n+
    99 }
    \n+
    100
    \n+
    101 newUpperRight[i] = (_h[i] / ct(2.)) * news[i];
    \n+
    102 }
    \n+
    103 return EquidistantCoordinates<ct,dim>(newUpperRight,news);
    \n+
    104 }
    \n+
    \n+
    105
    \n+
    \n+
    107 void print(std::ostream& s) const
    \n+
    108 {
    \n+
    109 s << "Printing equidistant coordinate information:" << std::endl;
    \n+
    110 s << "Meshsize: " << _h << std::endl << "Size: " << _s << std::endl;
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    113 private:
    \n+
    114 Dune::FieldVector<ct,dim> _h;
    \n+
    115 std::array<int,dim> _s;
    \n+
    116 };
    \n+
    \n+
    117
    \n+
    118 template<class ct, int dim>
    \n+
    \n+
    119 inline std::ostream& operator<< (std::ostream& s, EquidistantCoordinates<ct,dim>& c)
    \n+
    120 {
    \n+
    121 c.print(s);
    \n+
    122 return s;
    \n+
    123 }
    \n+
    \n+
    124
    \n+
    129 template<class ct, int dim>
    \n+
    \n+\n+
    131 {
    \n+
    132 public:
    \n+
    134 typedef ct ctype;
    \n+
    136 static const int dimension = dim;
    \n
    137
    \n-
    138 DUNE_THROW(GridError, "Power partitioning failed: your number of processes needs to be a " << d << "-th power.");
    \n-
    139 }
    \n-
    \n-
    140 };
    \n+\n+
    140
    \n+
    \n+
    149 EquidistantOffsetCoordinates(const Dune::FieldVector<ct,dim>& lowerLeft, const Dune::FieldVector<ct,dim>& upperRight, const std::array<int,dim>& s)
    \n+
    150 : _origin(lowerLeft), _s(s)
    \n+
    151 {
    \n+
    152 for (int i=0; i<dim; i++)
    \n+
    153 _h[i] = (upperRight[i] - lowerLeft[i]) / s[i];
    \n+
    154 }
    \n+
    \n+
    155
    \n+
    \n+
    160 inline ct meshsize(int d, [[maybe_unused]] int i) const
    \n+
    161 {
    \n+
    162 return _h[d];
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    \n+
    169 inline ct coordinate(int d, int i) const
    \n+
    170 {
    \n+
    171 return _origin[d] + i*_h[d];
    \n+
    172 }
    \n+
    \n+
    173
    \n+
    \n+
    177 inline int size(int d) const
    \n+
    178 {
    \n+
    179 return _s[d];
    \n+
    180 }
    \n+
    \n+
    181
    \n+
    \n+
    185 inline ct origin(int d) const
    \n+
    186 {
    \n+
    187 return _origin[d];
    \n+
    188 }
    \n
    \n-
    141
    \n-
    146 template<int d>
    \n-
    \n-\n-
    148 {
    \n-
    149 public:
    \n-
    150 FixedSizePartitioning(const std::array<int,d>& dims) : _dims(dims) {}
    \n-
    151
    \n-\n-
    153
    \n-
    \n-
    154 void partition(const std::array<int,d>&, int P, std::array<int,d>& dims, int overlap) const final
    \n-
    155 {
    \n-
    156 int prod = 1;
    \n-
    157 for (int i=0; i<d; i++)
    \n-
    158 prod *= _dims[i];
    \n-
    159 if (P != prod)
    \n-
    160 DUNE_THROW(Dune::Exception,"Your processor number doesn't match your partitioning information");
    \n-
    161 dims = _dims;
    \n-
    162 }
    \n-
    \n-
    163
    \n-
    164 private:
    \n-
    165 std::array<int,d> _dims;
    \n-
    166 };
    \n-
    \n-
    167
    \n-
    169 }
    \n-
    170
    \n-
    174 template<int d>
    \n-
    \n-\n-
    176 {
    \n-
    177 public:
    \n-
    178 typedef std::array<int, d> iTupel;
    \n-
    179 [[deprecated("use the new interface of Yasp::Partitioning")]]
    \n-
    180 virtual ~YLoadBalance() {}
    \n-
    \n-
    181 void partition (const iTupel& size, int P, iTupel& dims, int overlap) const final {
    \n-
    182 this->loadbalance(size,P,dims);
    \n-
    183 }
    \n-
    \n-
    184 virtual void loadbalance(const iTupel&, int, iTupel&) const = 0;
    \n-
    185 };
    \n-
    \n-
    186
    \n-
    187DUNE_NO_DEPRECATED_BEGIN
    \n-
    188 template<int d>
    \n-
    \n-\n-
    190 {
    \n-
    191 std::unique_ptr<Yasp::Partitioning<d>> p_;
    \n-
    192 public:
    \n-
    193 typedef std::array<int, d> iTupel;
    \n-
    194 YLoadBalanceForward(std::unique_ptr<Yasp::Partitioning<d>> && p) : p_(std::move(p)) {}
    \n-\n+
    189
    \n
    \n-
    196 void loadbalance(const iTupel& size, int P, iTupel& dims) const final {
    \n-
    197 return p_->partition(size,P,dims,1); // assuming the usual overlap of 1
    \n-
    198 }
    \n-
    \n-
    199 };
    \n-
    \n-
    200
    \n-
    204 template<int d>
    \n-
    \n-\n-
    206 {
    \n-
    207 public:
    \n-
    \n-\n-
    209 YLoadBalanceForward<d>(std::make_unique<Yasp::DefaultPartitioning<d>>())
    \n-
    210 {}
    \n-
    \n-
    211 };
    \n-
    \n+
    196 EquidistantOffsetCoordinates<ct,dim> refine(std::bitset<dim> ovlp_low, std::bitset<dim> ovlp_up, int overlap, bool keep_ovlp) const
    \n+
    197 {
    \n+
    198 //determine new size and meshsize
    \n+
    199 std::array<int,dim> news;
    \n+
    200 Dune::FieldVector<ct,dim> newUpperRight;
    \n+
    201
    \n+
    202 for (int i=0; i<dim; i++)
    \n+
    203 {
    \n+
    204 news[i] = 2 * _s[i];
    \n+
    205 if (!keep_ovlp)
    \n+
    206 {
    \n+
    207 if (ovlp_low[i])
    \n+
    208 news[i] -= overlap;
    \n+
    209 if (ovlp_up[i])
    \n+
    210 news[i] -= overlap;
    \n+
    211 }
    \n
    212
    \n-
    216 template<int d>
    \n-
    \n-\n-
    218 {
    \n-
    219 public:
    \n-
    220 typedef std::array<int, d> iTupel;
    \n-
    \n-\n-
    222 YLoadBalanceForward<d>(std::make_unique<Yasp::PowerDPartitioning<d>>())
    \n-
    223 {}
    \n-
    \n-
    224 };
    \n+
    213 newUpperRight[i] = _origin[i] + (_h[i] / ct(2.)) * news[i];
    \n+
    214 }
    \n+
    215 return EquidistantOffsetCoordinates<ct,dim>(_origin,newUpperRight,news);
    \n+
    216 }
    \n+
    \n+
    217
    \n+
    \n+
    219 void print(std::ostream& s) const
    \n+
    220 {
    \n+
    221 s << "Printing equidistant coordinate information:" << std::endl;
    \n+
    222 s << "Meshsize: " << _h << std::endl << "Size: " << _s << std::endl;
    \n+
    223 s << "Offset to origin: " << _origin << std::endl;
    \n+
    224 }
    \n
    \n
    225
    \n-
    231 template<int d>
    \n-
    \n-\n-
    233 {
    \n-
    234 public:
    \n-
    235 typedef std::array<int, d> iTupel;
    \n-
    \n-
    236 YaspFixedSizePartitioner(const std::array<int,d>& dims) :
    \n-
    237 YLoadBalanceForward<d>(std::make_unique<Yasp::FixedSizePartitioning<d>>(dims))
    \n-
    238 {}
    \n-
    \n-
    239 };
    \n-
    \n-
    240
    \n-
    241DUNE_NO_DEPRECATED_END
    \n-
    242}
    \n-
    243
    \n-
    244#endif
    \n-
    STL namespace.
    \n+
    226 private:
    \n+
    227 Dune::FieldVector<ct,dim> _origin;
    \n+
    228 Dune::FieldVector<ct,dim> _h;
    \n+
    229 std::array<int,dim> _s;
    \n+
    230 };
    \n+
    \n+
    231
    \n+
    232 template<class ct, int dim>
    \n+
    \n+
    233 inline std::ostream& operator<< (std::ostream& s, EquidistantOffsetCoordinates<ct,dim>& c)
    \n+
    234 {
    \n+
    235 c.print(s);
    \n+
    236 return s;
    \n+
    237 }
    \n+
    \n+
    238
    \n+
    243 template<class ct, int dim>
    \n+
    \n+\n+
    245 {
    \n+
    246 public:
    \n+
    248 typedef ct ctype;
    \n+
    250 static const int dimension = dim;
    \n+
    251
    \n+\n+
    254
    \n+
    \n+
    261 TensorProductCoordinates(const std::array<std::vector<ct>,dim>& c, const std::array<int,dim>& offset)
    \n+
    262 : _c(c),_offset(offset)
    \n+
    263 {}
    \n+
    \n+
    264
    \n+
    \n+
    269 inline ct meshsize(int d, int i) const
    \n+
    270 {
    \n+
    271 return _c[d][i+1-_offset[d]] - _c[d][i-_offset[d]];
    \n+
    272 }
    \n+
    \n+
    273
    \n+
    \n+
    278 inline ct coordinate(int d, int i) const
    \n+
    279 {
    \n+
    280 return _c[d][i-_offset[d]];
    \n+
    281 }
    \n+
    \n+
    282
    \n+
    \n+
    286 inline int size(int d) const
    \n+
    287 {
    \n+
    288 return _c[d].size() - 1;
    \n+
    289 }
    \n+
    \n+
    290
    \n+
    \n+
    297 TensorProductCoordinates<ct,dim> refine(std::bitset<dim> ovlp_low, std::bitset<dim> ovlp_up, int overlap, bool keep_ovlp) const
    \n+
    298 {
    \n+
    299 std::array<std::vector<ct>,dim> newcoords;
    \n+
    300 std::array<int,dim> newoffset(_offset);
    \n+
    301 for (int i=0; i<dim; i++)
    \n+
    302 {
    \n+
    303 newoffset[i] *= 2;
    \n+
    304
    \n+
    305 //determine new size
    \n+
    306 int newsize = 2 * _c[i].size() - 1;
    \n+
    307 if (!keep_ovlp)
    \n+
    308 {
    \n+
    309 if (ovlp_low[i])
    \n+
    310 {
    \n+
    311 newoffset[i] += overlap;
    \n+
    312 newsize -= overlap;
    \n+
    313 }
    \n+
    314 if (ovlp_up[i])
    \n+
    315 newsize -= overlap;
    \n+
    316 }
    \n+
    317 newcoords[i].resize(newsize);
    \n+
    318
    \n+
    319 typename std::vector<ct>::const_iterator it = _c[i].begin();
    \n+
    320 typename std::vector<ct>::const_iterator end = _c[i].end()-1;
    \n+
    321 typename std::vector<ct>::iterator iit = newcoords[i].begin() - 1;
    \n+
    322 if (!keep_ovlp)
    \n+
    323 {
    \n+
    324 if (ovlp_low[i])
    \n+
    325 {
    \n+
    326 it += overlap/2;
    \n+
    327 if (overlap%2)
    \n+
    328 *(++iit) = (*it + *(++it)) / ct(2.);
    \n+
    329 }
    \n+
    330 if (ovlp_up[i])
    \n+
    331 end -= overlap/2;
    \n+
    332 }
    \n+
    333
    \n+
    334 for (;it!=end;)
    \n+
    335 {
    \n+
    336 *(++iit) = *it;
    \n+
    337 *(++iit) = (*it + *(++it)) / ct(2.);
    \n+
    338 }
    \n+
    339
    \n+
    340 if (++iit != newcoords[i].end())
    \n+
    341 *iit = *it;
    \n+
    342 }
    \n+
    343 return TensorProductCoordinates<ct,dim>(newcoords, newoffset);
    \n+
    344 }
    \n+
    \n+
    345
    \n+
    \n+
    347 void print(std::ostream& s) const
    \n+
    348 {
    \n+
    349 s << "Printing TensorProduct Coordinate information:" << std::endl;
    \n+
    350 for (int i=0; i<dim; i++)
    \n+
    351 {
    \n+
    352 s << "Direction " << i << ": " << _c[i].size() << " coordinates" << std::endl;
    \n+
    353 for (std::size_t j=0; j<_c[i].size(); j++)
    \n+
    354 s << _c[i][j] << std::endl;
    \n+
    355 }
    \n+
    356 }
    \n+
    \n+
    357
    \n+
    358 private:
    \n+
    359 std::array<std::vector<ct>,dim> _c;
    \n+
    360 std::array<int,dim> _offset;
    \n+
    361 };
    \n+
    \n+
    362
    \n+
    363 template<class ct, int dim>
    \n+
    \n+
    364 inline std::ostream& operator<< (std::ostream& s, TensorProductCoordinates<ct,dim>& c)
    \n+
    365 {
    \n+
    366 c.print(s);
    \n+
    367 return s;
    \n+
    368 }
    \n+
    \n+
    369
    \n+
    \n+
    370 namespace Yasp {
    \n+
    371 template<class ctype, std::size_t dim>
    \n+
    372 bool checkIfMonotonous(const std::array<std::vector<ctype>, dim>& coords)
    \n+
    373 {
    \n+
    374 for (std::size_t i=0; i<dim; i++)
    \n+
    375 {
    \n+
    376 if (coords[i].size() <= 1)
    \n+
    377 return false;
    \n+
    378 for (std::size_t j=1; j<coords[i].size(); j++)
    \n+
    379 if (coords[i][j] < coords[i][j-1])
    \n+
    380 return false;
    \n+
    381 }
    \n+
    382 return true;
    \n+
    383 }
    \n+
    384 } // namespace Yasp
    \n+
    \n+
    385} // namespace Dune
    \n+
    386
    \n+
    387#endif
    \n+
    std::ostream & operator<<(std::ostream &out, const PartitionType &type)
    write a PartitionType to a stream
    Definition gridenums.hh:72
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    a base class for the yaspgrid partitioning strategy
    Definition partitioning.hh:39
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:41
    \n-
    virtual ~Partitioning()=default
    \n-
    virtual void partition(const iTupel &, int, iTupel &, int) const =0
    \n-
    Definition partitioning.hh:48
    \n-
    void partition(const iTupel &size, int P, iTupel &dims, int overlap) const final
    Distribute a structured grid across a set of processors.
    Definition partitioning.hh:57
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:50
    \n-
    Implement yaspgrid load balance strategy for P=x^{dim} processors.
    Definition partitioning.hh:125
    \n-
    virtual ~PowerDPartitioning()
    Definition partitioning.hh:128
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:127
    \n-
    void partition(const iTupel &size, int P, iTupel &dims, int overlap) const final
    Definition partitioning.hh:130
    \n-
    Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't ...
    Definition partitioning.hh:148
    \n-
    void partition(const std::array< int, d > &, int P, std::array< int, d > &dims, int overlap) const final
    Definition partitioning.hh:154
    \n-
    FixedSizePartitioning(const std::array< int, d > &dims)
    Definition partitioning.hh:150
    \n-
    virtual ~FixedSizePartitioning()
    Definition partitioning.hh:152
    \n-
    a base class for the yaspgrid partitioning strategy
    Definition partitioning.hh:176
    \n-
    void partition(const iTupel &size, int P, iTupel &dims, int overlap) const final
    Definition partitioning.hh:181
    \n-
    virtual void loadbalance(const iTupel &, int, iTupel &) const =0
    \n-
    virtual ~YLoadBalance()
    Definition partitioning.hh:180
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:178
    \n-
    Definition partitioning.hh:190
    \n-
    void loadbalance(const iTupel &size, int P, iTupel &dims) const final
    Definition partitioning.hh:196
    \n-
    YLoadBalanceForward(std::unique_ptr< Yasp::Partitioning< d > > &&p)
    Definition partitioning.hh:194
    \n-
    virtual ~YLoadBalanceForward()
    Definition partitioning.hh:195
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:193
    \n-
    Implement the default load balance strategy of yaspgrid.
    Definition partitioning.hh:206
    \n-
    YLoadBalanceDefault()
    Definition partitioning.hh:208
    \n-
    Implement yaspgrid load balance strategy for P=x^{dim} processors.
    Definition partitioning.hh:218
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:220
    \n-
    YLoadBalancePowerD()
    Definition partitioning.hh:221
    \n-
    Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't ...
    Definition partitioning.hh:233
    \n-
    YaspFixedSizePartitioner(const std::array< int, d > &dims)
    Definition partitioning.hh:236
    \n-
    std::array< int, d > iTupel
    Definition partitioning.hh:235
    \n+
    Container for equidistant coordinates in a YaspGrid.
    Definition coordinates.hh:29
    \n+
    ct coordinate(int d, int i) const
    Definition coordinates.hh:65
    \n+
    int size(int d) const
    Definition coordinates.hh:73
    \n+
    static const int dimension
    export dimension
    Definition coordinates.hh:34
    \n+
    void print(std::ostream &s) const
    print information on this container
    Definition coordinates.hh:107
    \n+
    EquidistantCoordinates()
    default constructor
    Definition coordinates.hh:37
    \n+
    EquidistantCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
    Definition coordinates.hh:84
    \n+
    ct ctype
    export the coordinate type
    Definition coordinates.hh:32
    \n+
    EquidistantCoordinates(const Dune::FieldVector< ct, dim > &upperRight, const std::array< int, dim > &s)
    construct a container with all necessary information
    Definition coordinates.hh:45
    \n+
    ct meshsize(int d, int i) const
    Definition coordinates.hh:56
    \n+
    Container for equidistant coordinates in a YaspGrid with non-trivial origin.
    Definition coordinates.hh:131
    \n+
    EquidistantOffsetCoordinates()
    default constructor
    Definition coordinates.hh:139
    \n+
    EquidistantOffsetCoordinates(const Dune::FieldVector< ct, dim > &lowerLeft, const Dune::FieldVector< ct, dim > &upperRight, const std::array< int, dim > &s)
    construct a container with all necessary information
    Definition coordinates.hh:149
    \n+
    EquidistantOffsetCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
    Definition coordinates.hh:196
    \n+
    void print(std::ostream &s) const
    print information on this container
    Definition coordinates.hh:219
    \n+
    ct meshsize(int d, int i) const
    Definition coordinates.hh:160
    \n+
    ct origin(int d) const
    Definition coordinates.hh:185
    \n+
    int size(int d) const
    Definition coordinates.hh:177
    \n+
    ct ctype
    export the coordinate type
    Definition coordinates.hh:134
    \n+
    static const int dimension
    export dimension
    Definition coordinates.hh:136
    \n+
    ct coordinate(int d, int i) const
    Definition coordinates.hh:169
    \n+
    Coordinate container for a tensor product YaspGrid.
    Definition coordinates.hh:245
    \n+
    void print(std::ostream &s) const
    print information on this container
    Definition coordinates.hh:347
    \n+
    ct meshsize(int d, int i) const
    Definition coordinates.hh:269
    \n+
    ct coordinate(int d, int i) const
    Definition coordinates.hh:278
    \n+
    static const int dimension
    export dimension
    Definition coordinates.hh:250
    \n+
    TensorProductCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
    Definition coordinates.hh:297
    \n+
    TensorProductCoordinates(const std::array< std::vector< ct >, dim > &c, const std::array< int, dim > &offset)
    construct a container with all necessary information
    Definition coordinates.hh:261
    \n+
    TensorProductCoordinates()
    the default constructor
    Definition coordinates.hh:253
    \n+
    ct ctype
    export the coordinate type
    Definition coordinates.hh:248
    \n+
    int size(int d) const
    Definition coordinates.hh:286
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,329 +1,426 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-partitioning.hh\n+coordinates.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3#ifndef DUNE_GRID_YASPGRID_PARTITIONING_HH\n-4#define DUNE_GRID_YASPGRID_PARTITIONING_HH\n-5\n-13#include\n-14\n-15#include\n-16#include \n-17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-20\n-21 namespace Yasp\n-22 {\n-23\n-37 template\n-_\b3_\b8 class _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-39 {\n-40 public:\n-_\b4_\b1 using _\bi_\bT_\bu_\bp_\be_\bl = std::array;\n-_\b4_\b2 virtual _\b~_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg() = default;\n-_\b4_\b3 virtual void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn(const _\bi_\bT_\bu_\bp_\be_\bl&, int, _\bi_\bT_\bu_\bp_\be_\bl&, int) const = 0;\n-44 };\n-45\n-46 template\n-_\b4_\b7 class _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg : public _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-48 {\n-49 public:\n-_\b5_\b0 using _\bi_\bT_\bu_\bp_\be_\bl = std::array;\n+3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+4// vi: set et ts=4 sw=2 sts=2:\n+5#ifndef DUNE_GRID_YASPGRID_COORDINATES_HH\n+6#define DUNE_GRID_YASPGRID_COORDINATES_HH\n+7\n+8#include \n+9#include \n+10#include \n+11\n+12#include \n+13\n+21namespace _\bD_\bu_\bn_\be\n+22{\n+27 template\n+_\b2_\b8 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+29 {\n+30 public:\n+_\b3_\b2 typedef ct _\bc_\bt_\by_\bp_\be;\n+_\b3_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+35\n+_\b3_\b7 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs() {}\n+38\n+_\b4_\b5 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs(const Dune::FieldVector& upperRight, const\n+std::array& s)\n+46 : _s(s)\n+47 {\n+48 for (int i=0; i0) // test all subdivisions recursively\n+_\b7_\b3 inline int _\bs_\bi_\bz_\be(int d) const\n 74 {\n-75 for (int k=1; k<=P; k++)\n-76 if (\n-77 P%k==0 // k devides P\n-78 and (\n-79 k == 1 // no neighbors\n-80 or\n-81 size[i] / k >= 2*overlap // size sufficient for overlap\n-82 )\n-83 )\n-84 {\n-85 // P divisible by k\n-86 trydims[i] = k;\n-87 optimize_dims(i-1,size,P/k,dims,trydims,opt,overlap);\n-88 }\n-89 }\n-90 else\n+75 return _s[d];\n+76 }\n+77\n+_\b8_\b4 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b> _\br_\be_\bf_\bi_\bn_\be(std::bitset ovlp_low, std::\n+bitset ovlp_up, int overlap, bool keep_ovlp) const\n+85 {\n+86 //determine new size and meshsize\n+87 std::array news;\n+88 Dune::FieldVector newUpperRight;\n+89\n+90 for (int i=0; i= 2*overlap // size sufficient for overlap\n-97 )\n-98 trydims[0] = P;\n-99 else\n-100 return;\n-101\n-102 // check for optimality\n-103 double m = -1.0;\n-104\n-105 for (int k=0; k0.0001) mm*=3;\n-109 if ( mm > m ) m = mm;\n-110 }\n-111 //if (_rank==0) std::cout << \"optimize_dims: \" << size << \" | \" << trydims\n-<< \" norm=\" << m << std::endl;\n-112 if (m\n-_\b1_\b2_\b4 class _\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg : public _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-125 {\n-126 public:\n-_\b1_\b2_\b7 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-_\b1_\b2_\b8 virtual _\b~_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg() {}\n-129\n-_\b1_\b3_\b0 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims, int overlap) const\n-final\n+92 news[i] = 2 * _s[i];\n+93 if (!keep_ovlp)\n+94 {\n+95 if (ovlp_low[i])\n+96 news[i] -= overlap;\n+97 if (ovlp_up[i])\n+98 news[i] -= overlap;\n+99 }\n+100\n+101 newUpperRight[i] = (_h[i] / ct(2.)) * news[i];\n+102 }\n+103 return _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>(newUpperRight,news);\n+104 }\n+105\n+_\b1_\b0_\b7 void _\bp_\br_\bi_\bn_\bt(std::ostream& s) const\n+108 {\n+109 s << \"Printing equidistant coordinate information:\" << std::endl;\n+110 s << \"Meshsize: \" << _h << std::endl << \"Size: \" << _s << std::endl;\n+111 }\n+112\n+113 private:\n+114 Dune::FieldVector _h;\n+115 std::array _s;\n+116 };\n+117\n+118 template\n+_\b1_\b1_\b9 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n+_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>& c)\n+120 {\n+121 c._\bp_\br_\bi_\bn_\bt(s);\n+122 return s;\n+123 }\n+124\n+129 template\n+_\b1_\b3_\b0 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n 131 {\n-132 for (int i=1; i<=P; ++i)\n-133 if (Dune::power(i, d) == P) {\n-134 std::fill(dims.begin(), dims.end(),i);\n-135 return;\n-136 }\n+132 public:\n+_\b1_\b3_\b4 typedef ct _\bc_\bt_\by_\bp_\be;\n+_\b1_\b3_\b6 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n 137\n-138 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Power partitioning failed: your number of processes\n-needs to be a \" << d << \"-th power.\");\n-139 }\n-140 };\n-141\n-146 template\n-_\b1_\b4_\b7 class _\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg : public _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-148 {\n-149 public:\n-_\b1_\b5_\b0 _\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg(const std::array& dims) : _dims(dims) {}\n-151\n-_\b1_\b5_\b2 virtual _\b~_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg() {}\n-153\n-_\b1_\b5_\b4 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn(const std::array&, int P, std::array& dims,\n-int overlap) const final\n-155 {\n-156 int prod = 1;\n-157 for (int i=0; i _dims;\n-166 };\n-167\n-169 }\n-170\n-174 template\n-_\b1_\b7_\b5 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be : public _\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-176 {\n-177 public:\n-_\b1_\b7_\b8 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-179 [[deprecated(\"use the new interface of Yasp::Partitioning\")]]\n-_\b1_\b8_\b0 virtual _\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be() {}\n-_\b1_\b8_\b1 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims, int overlap) const\n-final {\n-182 this->_\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be(size,P,dims);\n-183 }\n-_\b1_\b8_\b4 virtual void _\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be(const _\bi_\bT_\bu_\bp_\be_\bl&, int, _\bi_\bT_\bu_\bp_\be_\bl&) const = 0;\n-185 };\n-186\n-187DUNE_NO_DEPRECATED_BEGIN\n-188 template\n-_\b1_\b8_\b9 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n-190 {\n-191 std::unique_ptr> p_;\n-192 public:\n-_\b1_\b9_\b3 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-_\b1_\b9_\b4 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(std::unique_ptr<_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\bd_\b>> && p) : p_(_\bs_\bt_\bd::\n-move(p)) {}\n-_\b1_\b9_\b5 virtual _\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd() {}\n-_\b1_\b9_\b6 void _\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be(const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims) const final {\n-197 return p_->partition(size,P,dims,1); // assuming the usual overlap of 1\n-198 }\n-199 };\n-200\n-204 template\n-_\b2_\b0_\b5 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n+_\b1_\b3_\b9 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs() {}\n+140\n+_\b1_\b4_\b9 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs(const Dune::FieldVector& lowerLeft,\n+const Dune::FieldVector& upperRight, const std::array& s)\n+150 : _origin(lowerLeft), _s(s)\n+151 {\n+152 for (int i=0; i _\br_\be_\bf_\bi_\bn_\be(std::bitset ovlp_low,\n+std::bitset ovlp_up, int overlap, bool keep_ovlp) const\n+197 {\n+198 //determine new size and meshsize\n+199 std::array news;\n+200 Dune::FieldVector newUpperRight;\n+201\n+202 for (int i=0; i(_\bs_\bt_\bd::make_unique>())\n-210 {}\n-211 };\n+207 if (ovlp_low[i])\n+208 news[i] -= overlap;\n+209 if (ovlp_up[i])\n+210 news[i] -= overlap;\n+211 }\n 212\n-216 template\n-_\b2_\b1_\b7 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n-218 {\n-219 public:\n-_\b2_\b2_\b0 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-_\b2_\b2_\b1 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD() :\n-222 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(_\bs_\bt_\bd::make_unique>())\n-223 {}\n-224 };\n+213 newUpperRight[i] = _origin[i] + (_h[i] / ct(2.)) * news[i];\n+214 }\n+215 return _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>(_origin,newUpperRight,news);\n+216 }\n+217\n+_\b2_\b1_\b9 void _\bp_\br_\bi_\bn_\bt(std::ostream& s) const\n+220 {\n+221 s << \"Printing equidistant coordinate information:\" << std::endl;\n+222 s << \"Meshsize: \" << _h << std::endl << \"Size: \" << _s << std::endl;\n+223 s << \"Offset to origin: \" << _origin << std::endl;\n+224 }\n 225\n-231 template\n-_\b2_\b3_\b2 class _\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n-233 {\n-234 public:\n-_\b2_\b3_\b5 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-_\b2_\b3_\b6 _\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br(const std::array& dims) :\n-237 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(_\bs_\bt_\bd::make_unique>\n-(dims))\n-238 {}\n-239 };\n-240\n-241DUNE_NO_DEPRECATED_END\n-242}\n-243\n-244#endif\n-_\bs_\bt_\bd\n-STL namespace.\n+226 private:\n+227 Dune::FieldVector _origin;\n+228 Dune::FieldVector _h;\n+229 std::array _s;\n+230 };\n+231\n+232 template\n+_\b2_\b3_\b3 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n+_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>& c)\n+234 {\n+235 c._\bp_\br_\bi_\bn_\bt(s);\n+236 return s;\n+237 }\n+238\n+243 template\n+_\b2_\b4_\b4 class _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+245 {\n+246 public:\n+_\b2_\b4_\b8 typedef ct _\bc_\bt_\by_\bp_\be;\n+_\b2_\b5_\b0 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+251\n+_\b2_\b5_\b3 _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs() {}\n+254\n+_\b2_\b6_\b1 _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs(const std::array,dim>& c, const\n+std::array& offset)\n+262 : _c(c),_offset(offset)\n+263 {}\n+264\n+_\b2_\b6_\b9 inline ct _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(int d, int i) const\n+270 {\n+271 return _c[d][i+1-_offset[d]] - _c[d][i-_offset[d]];\n+272 }\n+273\n+_\b2_\b7_\b8 inline ct _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be(int d, int i) const\n+279 {\n+280 return _c[d][i-_offset[d]];\n+281 }\n+282\n+_\b2_\b8_\b6 inline int _\bs_\bi_\bz_\be(int d) const\n+287 {\n+288 return _c[d].size() - 1;\n+289 }\n+290\n+_\b2_\b9_\b7 _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b> _\br_\be_\bf_\bi_\bn_\be(std::bitset ovlp_low, std::\n+bitset ovlp_up, int overlap, bool keep_ovlp) const\n+298 {\n+299 std::array,dim> newcoords;\n+300 std::array newoffset(_offset);\n+301 for (int i=0; i::const_iterator it = _c[i].begin();\n+320 typename std::vector::const_iterator end = _c[i].end()-1;\n+321 typename std::vector::iterator iit = newcoords[i].begin() - 1;\n+322 if (!keep_ovlp)\n+323 {\n+324 if (ovlp_low[i])\n+325 {\n+326 it += overlap/2;\n+327 if (overlap%2)\n+328 *(++iit) = (*it + *(++it)) / ct(2.);\n+329 }\n+330 if (ovlp_up[i])\n+331 end -= overlap/2;\n+332 }\n+333\n+334 for (;it!=end;)\n+335 {\n+336 *(++iit) = *it;\n+337 *(++iit) = (*it + *(++it)) / ct(2.);\n+338 }\n+339\n+340 if (++iit != newcoords[i].end())\n+341 *iit = *it;\n+342 }\n+343 return _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>(newcoords, newoffset);\n+344 }\n+345\n+_\b3_\b4_\b7 void _\bp_\br_\bi_\bn_\bt(std::ostream& s) const\n+348 {\n+349 s << \"Printing TensorProduct Coordinate information:\" << std::endl;\n+350 for (int i=0; i,dim> _c;\n+360 std::array _offset;\n+361 };\n+362\n+363 template\n+_\b3_\b6_\b4 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n+_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\b,_\bd_\bi_\bm_\b>& c)\n+365 {\n+366 c._\bp_\br_\bi_\bn_\bt(s);\n+367 return s;\n+368 }\n+369\n+_\b3_\b7_\b0 namespace Yasp {\n+371 template\n+372 bool checkIfMonotonous(const std::array, dim>& coords)\n+373 {\n+374 for (std::size_t i=0; i iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\b~_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-virtual ~Partitioning()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-virtual void partition(const iTupel &, int, iTupel &, int) const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-void partition(const iTupel &size, int P, iTupel &dims, int overlap) const\n-final\n-Distribute a structured grid across a set of processors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-Implement yaspgrid load balance strategy for P=x^{dim} processors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\b~_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-virtual ~PowerDPartitioning()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-void partition(const iTupel &size, int P, iTupel &dims, int overlap) const\n-final\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-Implement partitioner that gets a fixed partitioning from an array If the given\n-partitioning doesn't ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-void partition(const std::array< int, d > &, int P, std::array< int, d > &dims,\n-int overlap) const final\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-FixedSizePartitioning(const std::array< int, d > &dims)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\b~_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n-virtual ~FixedSizePartitioning()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:152\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n-a base class for the yaspgrid partitioning strategy\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-void partition(const iTupel &size, int P, iTupel &dims, int overlap) const\n-final\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be\n-virtual void loadbalance(const iTupel &, int, iTupel &) const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n-virtual ~YLoadBalance()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:180\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:190\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be\n-void loadbalance(const iTupel &size, int P, iTupel &dims) const final\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n-YLoadBalanceForward(std::unique_ptr< Yasp::Partitioning< d > > &&p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n-virtual ~YLoadBalanceForward()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt\n-Implement the default load balance strategy of yaspgrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:206\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt\n-YLoadBalanceDefault()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:208\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD\n-Implement yaspgrid load balance strategy for P=x^{dim} processors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD\n-YLoadBalancePowerD()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:221\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br\n-Implement partitioner that gets a fixed partitioning from an array If the given\n-partitioning doesn't ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:233\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br\n-YaspFixedSizePartitioner(const std::array< int, d > &dims)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:235\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Container for equidistant coordinates in a YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+ct coordinate(int d, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int d) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+export dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std::ostream &s) const\n+print information on this container\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+EquidistantCoordinates()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n+EquidistantCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::\n+bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+export the coordinate type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+EquidistantCoordinates(const Dune::FieldVector< ct, dim > &upperRight, const\n+std::array< int, dim > &s)\n+construct a container with all necessary information\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+ct meshsize(int d, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Container for equidistant coordinates in a YaspGrid with non-trivial origin.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+EquidistantOffsetCoordinates()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+EquidistantOffsetCoordinates(const Dune::FieldVector< ct, dim > &lowerLeft,\n+const Dune::FieldVector< ct, dim > &upperRight, const std::array< int, dim >\n+&s)\n+construct a container with all necessary information\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n+EquidistantOffsetCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low,\n+std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std::ostream &s) const\n+print information on this container\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+ct meshsize(int d, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bo_\br_\bi_\bg_\bi_\bn\n+ct origin(int d) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int d) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+export the coordinate type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+export dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+ct coordinate(int d, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:169\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Coordinate container for a tensor product YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:245\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std::ostream &s) const\n+print information on this container\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:347\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n+ct meshsize(int d, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:269\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+ct coordinate(int d, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:278\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+export dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n+TensorProductCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::\n+bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:297\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+TensorProductCoordinates(const std::array< std::vector< ct >, dim > &c, const\n+std::array< int, dim > &offset)\n+construct a container with all necessary information\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+TensorProductCoordinates()\n+the default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+export the coordinate type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int d) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:286\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00209.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00209.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridleveliterator.hh File Reference\n+dune-grid: yaspgrididset.hh File Reference\n \n \n \n \n \n \n \n@@ -72,37 +72,32 @@\n
  • dune
  • grid
  • yaspgrid
  • \n
    \n
    \n
    \n \n-
    yaspgridleveliterator.hh File Reference
    \n+
    yaspgrididset.hh File Reference
    \n
    \n
    \n \n-

    The YaspLevelIterator class. \n-More...

    \n-\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::YaspLevelIterator< codim, pitype, GridImp >
     Iterates over entities of one grid level. More...
    class  Dune::YaspGlobalIdSet< GridImp >
     persistent, globally unique Ids More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-

    Detailed Description

    \n-

    The YaspLevelIterator class.

    \n-
    \n+\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,22 +2,19 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-yaspgridleveliterator.hh File Reference\n-The YaspLevelIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n+yaspgrididset.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:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 Iterates over entities of one grid level. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 persistent, globally unique Ids _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The YaspLevelIterator class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00209_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00209_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridleveliterator.hh Source File\n+dune-grid: yaspgrididset.hh Source File\n \n \n \n \n \n \n \n@@ -74,91 +74,88 @@\n \n \n \n
    \n-
    yaspgridleveliterator.hh
    \n+
    yaspgrididset.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDLEVELITERATOR_HH
    \n-
    6#define DUNE_GRID_YASPGRIDLEVELITERATOR_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRIDIDSET_HH
    \n+
    6#define DUNE_GRID_YASPGRIDIDSET_HH
    \n
    7
    \n-
    12namespace Dune {
    \n-
    13
    \n-
    14
    \n-
    17 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n-
    \n-\n-
    19 {
    \n-
    21 constexpr static int dim = GridImp::dimension;
    \n-
    23 constexpr static int dimworld = GridImp::dimensionworld;
    \n-
    24 typedef typename GridImp::ctype ctype;
    \n-
    25 public:
    \n-
    26 typedef typename GridImp::template Codim<codim>::Entity Entity;
    \n-
    27 typedef typename GridImp::YGridLevelIterator YGLI;
    \n-
    28 typedef typename GridImp::YGrid::Iterator I;
    \n-
    29
    \n-
    \n-\n-
    32 {}
    \n-
    \n+
    8
    \n+
    9namespace Dune {
    \n+
    10
    \n+
    11 //========================================================================
    \n+
    16 //========================================================================
    \n+
    17
    \n+
    18 template<class GridImp>
    \n+
    \n+
    19 class YaspGlobalIdSet : public IdSet<GridImp,YaspGlobalIdSet<GridImp>,
    \n+
    20 typename std::remove_const<GridImp>::type::PersistentIndexType >
    \n+
    21 /*
    \n+
    22 We used the remove_const to extract the Type from the mutable class,
    \n+
    23 because the const class is not instantiated yet.
    \n+
    24 */
    \n+
    25 {
    \n+\n+
    27
    \n+
    28 public:
    \n+
    30 typedef typename std::remove_const<GridImp>::type::PersistentIndexType IdType;
    \n+
    31
    \n+
    32 using IdSet<GridImp, This, IdType>::subId;
    \n
    33
    \n
    \n-
    35 YaspLevelIterator (const YGLI & g, const I& it)
    \n-
    36 : _entity(YaspEntity<codim, dim, GridImp>(g,it))
    \n-
    37 {}
    \n-
    \n-
    38
    \n-
    \n-
    40 void increment()
    \n-
    41 {
    \n-
    42 ++(_entity.impl()._it);
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 bool equals (const YaspLevelIterator& rhs) const
    \n-
    47 {
    \n-
    48 return (_entity == rhs._entity);
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    52 const Entity& dereference() const
    \n-
    53 {
    \n-
    54 return _entity;
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    57 protected:
    \n-\n-
    59 };
    \n-
    \n-
    60
    \n-
    61}
    \n-
    62
    \n-
    63#endif // DUNE_GRID_YASPGRIDLEVELITERATOR_HH
    \n+\n+
    36 {}
    \n+
    \n+
    37
    \n+
    39 /*
    \n+
    40 We use the remove_const to extract the Type from the mutable class,
    \n+
    41 because the const class is not instantiated yet.
    \n+
    42 */
    \n+
    43 template<int cd>
    \n+
    \n+
    44 IdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
    \n+
    45 {
    \n+
    46 return e.impl().persistentIndex();
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    50 /*
    \n+
    51 We use the remove_const to extract the Type from the mutable class,
    \n+
    52 because the const class is not instantiated yet.
    \n+
    53 */
    \n+
    \n+
    54 IdType subId (const typename std::remove_const<GridImp>::type::Traits::template Codim< 0 >::Entity &e,
    \n+
    55 int i, unsigned int codim ) const
    \n+
    56 {
    \n+
    57 return e.impl().subPersistentIndex(i,codim);
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    60 };
    \n+
    \n+
    61
    \n+
    62} // namespace Dune
    \n+
    63
    \n+
    64#endif // DUNE_GRID_YASPGRIDIDSET_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition yaspgridentity.hh:268
    \n-
    Iterates over entities of one grid level.
    Definition yaspgridleveliterator.hh:19
    \n-
    Entity _entity
    entity
    Definition yaspgridleveliterator.hh:58
    \n-
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridleveliterator.hh:27
    \n-
    GridImp::template Codim< codim >::Entity Entity
    Definition yaspgridleveliterator.hh:26
    \n-
    void increment()
    increment
    Definition yaspgridleveliterator.hh:40
    \n-
    GridImp::YGrid::Iterator I
    Definition yaspgridleveliterator.hh:28
    \n-
    YaspLevelIterator(const YGLI &g, const I &it)
    constructor
    Definition yaspgridleveliterator.hh:35
    \n-
    bool equals(const YaspLevelIterator &rhs) const
    equality
    Definition yaspgridleveliterator.hh:46
    \n-
    YaspLevelIterator()
    default constructor
    Definition yaspgridleveliterator.hh:31
    \n-
    const Entity & dereference() const
    dereferencing
    Definition yaspgridleveliterator.hh:52
    \n+
    Id Set Interface.
    Definition indexidset.hh:452
    \n+
    persistent, globally unique Ids
    Definition yaspgrididset.hh:25
    \n+
    IdType subId(const typename std::remove_const< GridImp >::type::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    get id of subentity
    Definition yaspgrididset.hh:54
    \n+
    std::remove_const< GridImp >::type::PersistentIndexType IdType
    define the type used for persistent indices
    Definition yaspgrididset.hh:30
    \n+
    YaspGlobalIdSet()
    Only default-constructible.
    Definition yaspgrididset.hh:35
    \n+
    IdType id(const typename std::remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
    get id of an entity
    Definition yaspgrididset.hh:44
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,103 +1,98 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridleveliterator.hh\n+yaspgrididset.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDLEVELITERATOR_HH\n-6#define DUNE_GRID_YASPGRIDLEVELITERATOR_HH\n+5#ifndef DUNE_GRID_YASPGRIDIDSET_HH\n+6#define DUNE_GRID_YASPGRIDIDSET_HH\n 7\n-12namespace _\bD_\bu_\bn_\be {\n-13\n-14\n-17 template\n-_\b1_\b8 class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-19 {\n-21 constexpr static int dim = GridImp::dimension;\n-23 constexpr static int dimworld = GridImp::dimensionworld;\n-24 typedef typename GridImp::ctype ctype;\n-25 public:\n-_\b2_\b6 typedef typename GridImp::template Codim::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b2_\b7 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n-_\b2_\b8 typedef typename GridImp::YGrid::Iterator _\bI;\n-29\n-_\b3_\b1 _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-32 {}\n+8\n+9namespace _\bD_\bu_\bn_\be {\n+10\n+11 //========================================================================\n+16 //========================================================================\n+17\n+18 template\n+_\b1_\b9 class _\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt : public _\bI_\bd_\bS_\be_\bt,\n+20 typename std::remove_const::type::PersistentIndexType >\n+21 /*\n+22 We used the remove_const to extract the Type from the mutable class,\n+23 because the const class is not instantiated yet.\n+24 */\n+25 {\n+26 typedef _\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+27\n+28 public:\n+_\b3_\b0 typedef typename std::remove_const::type::PersistentIndexType\n+_\bI_\bd_\bT_\by_\bp_\be;\n+31\n+32 using _\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd;\n 33\n-_\b3_\b5 _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\bL_\bI & g, const _\bI& it)\n-36 : _\b__\be_\bn_\bt_\bi_\bt_\by(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by(g,it))\n-37 {}\n-38\n-_\b4_\b0 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt()\n-41 {\n-42 ++(_\b__\be_\bn_\bt_\bi_\bt_\by.impl()._it);\n-43 }\n-44\n-_\b4_\b6 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n-47 {\n-48 return (_\b__\be_\bn_\bt_\bi_\bt_\by == rhs._\b__\be_\bn_\bt_\bi_\bt_\by);\n-49 }\n-50\n-_\b5_\b2 const _\bE_\bn_\bt_\bi_\bt_\by& _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n-53 {\n-54 return _\b__\be_\bn_\bt_\bi_\bt_\by;\n-55 }\n-56\n-57 protected:\n-_\b5_\b8 _\bE_\bn_\bt_\bi_\bt_\by _\b__\be_\bn_\bt_\bi_\bt_\by;\n-59 };\n-60\n-61}\n-62\n-63#endif // DUNE_GRID_YASPGRIDLEVELITERATOR_HH\n+_\b3_\b5 _\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt()\n+36 {}\n+37\n+39 /*\n+40 We use the remove_const to extract the Type from the mutable class,\n+41 because the const class is not instantiated yet.\n+42 */\n+43 template\n+_\b4_\b4 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename std::remove_const::type::Traits::template\n+Codim::Entity& e) const\n+45 {\n+46 return e.impl().persistentIndex();\n+47 }\n+48\n+50 /*\n+51 We use the remove_const to extract the Type from the mutable class,\n+52 because the const class is not instantiated yet.\n+53 */\n+_\b5_\b4 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename std::remove_const::type::Traits::\n+template Codim< 0 >::Entity &e,\n+55 int i, unsigned int codim ) const\n+56 {\n+57 return e.impl().subPersistentIndex(i,codim);\n+58 }\n+59\n+60 };\n+61\n+62} // namespace Dune\n+63\n+64#endif // DUNE_GRID_YASPGRIDIDSET_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterates over entities of one grid level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\be_\bn_\bt_\bi_\bt_\by\n-Entity _entity\n-entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\bG_\bL_\bI\n-GridImp::YGridLevelIterator YGLI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI\n-GridImp::YGrid::Iterator I\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspLevelIterator(const YGLI &g, const I &it)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspLevelIterator &rhs) const\n-equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspLevelIterator()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-const Entity & dereference() const\n-dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+Id Set Interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+persistent, globally unique Ids\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename std::remove_const< GridImp >::type::Traits::\n+template Codim< 0 >::Entity &e, int i, unsigned int codim) const\n+get id of subentity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n+std::remove_const< GridImp >::type::PersistentIndexType IdType\n+define the type used for persistent indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+YaspGlobalIdSet()\n+Only default-constructible.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const typename std::remove_const< GridImp >::type::Traits::template\n+Codim< cd >::Entity &e) const\n+get id of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:44\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00215.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00215.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridpersistentcontainer.hh File Reference\n+dune-grid: yaspgridentityseed.hh File Reference\n \n \n \n \n \n \n \n@@ -72,44 +72,37 @@\n
  • dune
  • grid
  • yaspgrid
  • \n \n \n
    \n \n-
    yaspgridpersistentcontainer.hh File Reference
    \n+
    yaspgridentityseed.hh File Reference
    \n
    \n
    \n \n-

    Specialization of the PersistentContainer for YaspGrid. \n+

    The YaspEntitySeed class. \n More...

    \n-
    #include <cassert>
    \n-#include <vector>
    \n-#include <dune/grid/utility/persistentcontainer.hh>
    \n-#include <dune/grid/utility/persistentcontainervector.hh>
    \n-#include "../yaspgrid.hh"
    \n-
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::YaspPersistentContainerIndex< Grid >
     
    class  Dune::PersistentContainer< YaspGrid< dim, CoordCont >, T >
     Specialization of the PersistentContainer for YaspGrid. More...
    class  Dune::YaspEntitySeed< codim, GridImp >
     Describes the minimal information necessary to create a fully functional YaspEntity. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Specialization of the PersistentContainer for YaspGrid.

    \n+

    The YaspEntitySeed class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,23 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-yaspgridpersistentcontainer.hh File Reference\n-Specialization of the PersistentContainer for YaspGrid. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n-#include \"_\b._\b._\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh\"\n+yaspgridentityseed.hh File Reference\n+The YaspEntitySeed class. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b _\b>_\b,_\b _\bT_\b _\b>\n-\u00a0 Specialization of the _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 Describes the minimal information necessary to create a fully\n+ functional _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-Specialization of the PersistentContainer for YaspGrid.\n+The YaspEntitySeed class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00215_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00215_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridpersistentcontainer.hh Source File\n+dune-grid: yaspgridentityseed.hh Source File\n \n \n \n \n \n \n \n@@ -74,153 +74,82 @@\n \n \n
    \n
    \n-
    yaspgridpersistentcontainer.hh
    \n+
    yaspgridentityseed.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDPERSISTENTCONTAINER_HH
    \n-
    6#define DUNE_GRID_YASPGRIDPERSISTENTCONTAINER_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRIDENTITYSEED_HH
    \n+
    6#define DUNE_GRID_YASPGRIDENTITYSEED_HH
    \n
    7
    \n-
    12#include <cassert>
    \n-
    13#include <vector>
    \n-
    14
    \n-\n-\n-
    17#include "../yaspgrid.hh"
    \n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n+
    12namespace Dune {
    \n+
    13
    \n+
    16 template<int codim, class GridImp>
    \n+
    \n+\n+
    18 {
    \n+
    20 constexpr static int dim = GridImp::dimension;
    \n
    21
    \n-
    33 template<typename Grid>
    \n-
    \n-\n-
    35 {
    \n-
    36
    \n-
    37 public:
    \n-
    \n-
    38 YaspPersistentContainerIndex(const Grid & grid, int codim)
    \n-
    39 : _grid(grid), _codim(codim)
    \n-
    40 {
    \n-
    41 recomputeOffsets();
    \n+
    22 public:
    \n+
    24 constexpr static int codimension = codim;
    \n+
    25
    \n+
    \n+\n+
    28 : _l(-1), _o(0)
    \n+
    29 {
    \n+
    30 std::fill(_c.begin(),_c.end(),0);
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+
    34 YaspEntitySeed (int level, std::array<int, dim> coord, int o = 0)
    \n+
    35 : _l(level), _c(coord), _o(o)
    \n+
    36 {}
    \n+
    \n+
    37
    \n+
    \n+
    39 bool isValid() const
    \n+
    40 {
    \n+
    41 return _l != -1;
    \n
    42 }
    \n
    \n
    43
    \n-
    45 typedef std::size_t IndexType;
    \n-
    46
    \n-
    48 template<class Entity>
    \n-
    \n-
    49 IndexType index (const Entity& e) const
    \n-
    50 {
    \n-
    51 static const int cc = Entity::codimension;
    \n-
    52 std::size_t level = e.level();
    \n-
    53 return _grid.indexsets[level]->template index<cc>(e) + _offsets[level];
    \n-
    54 }
    \n+
    44 int level () const { return _l; }
    \n+
    45 const std::array<int, dim> & coord() const { return _c; }
    \n+
    46 int offset () const { return _o; }
    \n+
    47
    \n+
    48 protected:
    \n+
    49 int _l; // grid level
    \n+
    50 std::array<int, dim> _c; // coord in the global grid
    \n+
    51 int _o; // the offset: which YGridComponent, does the entity belong to
    \n+
    52 };
    \n
    \n+
    53
    \n+
    54} // namespace Dune
    \n
    55
    \n-
    57 template< class Entity >
    \n-
    \n-
    58 IndexType subIndex ( const Entity &e, int i, unsigned int codim ) const
    \n-
    59 {
    \n-
    60
    \n-
    61 static const int cc = Entity::codimension;
    \n-
    62 std::size_t level = e.level();
    \n-
    63 return _grid.indexsets[level]->template subIndex<cc>(e,i,codim) + _offsets[level];
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    67 std::size_t size (int /* codim */) const
    \n-
    68 {
    \n-
    69 if (_grid.indexsets.size()+1 != _offsets.size())
    \n-
    70 recomputeOffsets();
    \n-
    71 return _offsets.back();
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    74 private:
    \n-
    75 void recomputeOffsets() const
    \n-
    76 {
    \n-
    77 _offsets.resize(_grid.indexsets.size()+1,0);
    \n-
    78 _offsets[0] = 0;
    \n-
    79 for (std::size_t i=0; i<_grid.indexsets.size(); i++)
    \n-
    80 _offsets[i+1] = _offsets[i] + _grid.indexsets[i]->size(_codim);
    \n-
    81 }
    \n-
    82
    \n-
    83 const Grid& _grid;
    \n-
    84 int _codim;
    \n-
    85 mutable std::vector<std::size_t> _offsets;
    \n-
    86 };
    \n-
    \n-
    87
    \n-
    94 template<int dim, class CoordCont, class T>
    \n-
    \n-
    95 class PersistentContainer< YaspGrid<dim, CoordCont>, T >
    \n-
    96 /* We have to pass the reference to the IndexSet to the constructor
    \n-
    97 of the PersistentContainerVector. In order to have a valid
    \n-
    98 indexset available, we inherit from a private indexset
    \n-
    99 */
    \n-
    100 : private YaspPersistentContainerIndex< const YaspGrid<dim, CoordCont> >,
    \n-
    101 public PersistentContainerVector< YaspGrid<dim, CoordCont>,
    \n-
    102 YaspPersistentContainerIndex< const YaspGrid<dim, CoordCont> >,
    \n-
    103 std::vector<T> >
    \n-
    104 {
    \n-\n-\n-
    107
    \n-
    108 public:
    \n-
    109 typedef typename Base::Grid Grid;
    \n-
    110 typedef typename Base::Value Value;
    \n-
    111
    \n-
    112 using Base::size;
    \n-
    113
    \n-
    \n-
    114 PersistentContainer ( const Grid &grid, int codim, const Value &value = Value() )
    \n-
    115 : IndexSet(grid, codim),
    \n-
    116 Base(*this, codim, value)
    \n-
    117 {}
    \n-
    \n-
    118 };
    \n-
    \n-
    119
    \n-
    120} // end namespace Dune
    \n-
    121
    \n-
    122#endif // end DUNE_GRID_YASPGRIDPERSISTENTCONTAINER_HH
    \n-\n+
    56#endif // DUNE_GRID_YASPGRIDENTITYSEED_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    int level() const
    The level of this entity.
    Definition common/entity.hh:124
    \n-
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    int size(int level, int codim) const
    Return number of grid entities of a given codim on a given level in this process.
    Definition common/grid.hh:552
    \n-
    A class for storing data during an adaptation cycle.
    Definition utility/persistentcontainer.hh:22
    \n-
    Base::Value Value
    Definition utility/persistentcontainer.hh:27
    \n-
    const Grid & grid() const
    Definition persistentcontainermap.hh:114
    \n-
    Size size() const
    Definition persistentcontainermap.hh:85
    \n-
    vector-based implementation of the PersistentContainer
    Definition persistentcontainervector.hh:51
    \n-
    Vector::value_type Value
    Definition persistentcontainervector.hh:57
    \n-
    G Grid
    Definition persistentcontainervector.hh:55
    \n-
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n-
    Definition yaspgridpersistentcontainer.hh:35
    \n-
    IndexType index(const Entity &e) const
    Map entity to index. The result of calling this method with an entity that is not in the index set is...
    Definition yaspgridpersistentcontainer.hh:49
    \n-
    std::size_t size(int) const
    Return total number of entities of given geometry type in entity set .
    Definition yaspgridpersistentcontainer.hh:67
    \n-
    IndexType subIndex(const Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition yaspgridpersistentcontainer.hh:58
    \n-
    YaspPersistentContainerIndex(const Grid &grid, int codim)
    Definition yaspgridpersistentcontainer.hh:38
    \n-
    std::size_t IndexType
    The type used for the indices.
    Definition yaspgridpersistentcontainer.hh:45
    \n-
    Base::Grid Grid
    Definition yaspgridpersistentcontainer.hh:109
    \n-
    Base::Value Value
    Definition yaspgridpersistentcontainer.hh:110
    \n-
    PersistentContainer(const Grid &grid, int codim, const Value &value=Value())
    Definition yaspgridpersistentcontainer.hh:114
    \n-\n+
    Describes the minimal information necessary to create a fully functional YaspEntity.
    Definition yaspgridentityseed.hh:18
    \n+
    int _o
    Definition yaspgridentityseed.hh:51
    \n+
    std::array< int, dim > _c
    Definition yaspgridentityseed.hh:50
    \n+
    int _l
    Definition yaspgridentityseed.hh:49
    \n+
    int level() const
    Definition yaspgridentityseed.hh:44
    \n+
    YaspEntitySeed()
    default construct an invalid entity seed
    Definition yaspgridentityseed.hh:27
    \n+
    YaspEntitySeed(int level, std::array< int, dim > coord, int o=0)
    constructor
    Definition yaspgridentityseed.hh:34
    \n+
    int offset() const
    Definition yaspgridentityseed.hh:46
    \n+
    static constexpr int codimension
    codimension of entity
    Definition yaspgridentityseed.hh:24
    \n+
    const std::array< int, dim > & coord() const
    Definition yaspgridentityseed.hh:45
    \n+
    bool isValid() const
    check whether the EntitySeed refers to a valid Entity
    Definition yaspgridentityseed.hh:39
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,193 +1,98 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridpersistentcontainer.hh\n+yaspgridentityseed.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDPERSISTENTCONTAINER_HH\n-6#define DUNE_GRID_YASPGRIDPERSISTENTCONTAINER_HH\n+5#ifndef DUNE_GRID_YASPGRIDENTITYSEED_HH\n+6#define DUNE_GRID_YASPGRIDENTITYSEED_HH\n 7\n-12#include \n-13#include \n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n-17#include \"../yaspgrid.hh\"\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n+12namespace _\bD_\bu_\bn_\be {\n+13\n+16 template\n+_\b1_\b7 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+18 {\n+20 constexpr static int dim = GridImp::dimension;\n 21\n-33 template\n-_\b3_\b4 class _\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx\n-35 {\n-36\n-37 public:\n-_\b3_\b8 _\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx(const _\bG_\br_\bi_\bd & grid, int codim)\n-39 : _grid(grid), _codim(codim)\n+22 public:\n+_\b2_\b4 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n+25\n+_\b2_\b7 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd ()\n+28 : _\b__\bl(-1), _\b__\bo(0)\n+29 {\n+30 std::fill(_\b__\bc.begin(),_\b__\bc.end(),0);\n+31 }\n+32\n+_\b3_\b4 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd (int _\bl_\be_\bv_\be_\bl, std::array _\bc_\bo_\bo_\br_\bd, int o = 0)\n+35 : _\b__\bl(_\bl_\be_\bv_\be_\bl), _\b__\bc(_\bc_\bo_\bo_\br_\bd), _\b__\bo(o)\n+36 {}\n+37\n+_\b3_\b9 bool _\bi_\bs_\bV_\ba_\bl_\bi_\bd() const\n 40 {\n-41 recomputeOffsets();\n+41 return _\b__\bl != -1;\n 42 }\n 43\n-_\b4_\b5 typedef std::size_t _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-46\n-48 template\n-_\b4_\b9 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const _\bE_\bn_\bt_\bi_\bt_\by& e) const\n-50 {\n-51 static const int cc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-52 std::size_t level = e._\bl_\be_\bv_\be_\bl();\n-53 return _grid.indexsets[level]->template index(e) + _offsets[level];\n-54 }\n+_\b4_\b4 int _\bl_\be_\bv_\be_\bl () const { return _\b__\bl; }\n+_\b4_\b5 const std::array & _\bc_\bo_\bo_\br_\bd() const { return _\b__\bc; }\n+_\b4_\b6 int _\bo_\bf_\bf_\bs_\be_\bt () const { return _\b__\bo; }\n+47\n+48 protected:\n+_\b4_\b9 int _\b__\bl; // grid level\n+_\b5_\b0 std::array _\b__\bc; // coord in the global grid\n+_\b5_\b1 int _\b__\bo; // the offset: which YGridComponent, does the entity belong to\n+52 };\n+53\n+54} // namespace Dune\n 55\n-57 template< class Entity >\n-_\b5_\b8 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const _\bE_\bn_\bt_\bi_\bt_\by &e, int i, unsigned int codim ) const\n-59 {\n-60\n-61 static const int cc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-62 std::size_t level = e._\bl_\be_\bv_\be_\bl();\n-63 return _grid.indexsets[level]->template subIndex(e,i,codim) + _offsets\n-[level];\n-64 }\n-65\n-_\b6_\b7 std::size_t _\bs_\bi_\bz_\be (int /* codim */) const\n-68 {\n-69 if (_grid.indexsets._\bs_\bi_\bz_\be()+1 != _offsets.size())\n-70 recomputeOffsets();\n-71 return _offsets.back();\n-72 }\n-73\n-74 private:\n-75 void recomputeOffsets() const\n-76 {\n-77 _offsets.resize(_grid.indexsets._\bs_\bi_\bz_\be()+1,0);\n-78 _offsets[0] = 0;\n-79 for (std::size_t i=0; i<_grid.indexsets._\bs_\bi_\bz_\be(); i++)\n-80 _offsets[i+1] = _offsets[i] + _grid.indexsets[i]->_\bs_\bi_\bz_\be(_codim);\n-81 }\n-82\n-83 const Grid& _grid;\n-84 int _codim;\n-85 mutable std::vector _offsets;\n-86 };\n-87\n-94 template\n-_\b9_\b5 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd, T >\n-96 /* We have to pass the reference to the IndexSet to the constructor\n-97 of the PersistentContainerVector. In order to have a valid\n-98 indexset available, we inherit from a private indexset\n-99 */\n-100 : private _\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx< const YaspGrid >,\n-101 public _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br< YaspGrid,\n-102 YaspPersistentContainerIndex< const YaspGrid >,\n-103 std::vector >\n-104 {\n-105 typedef _\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b> >\n-_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-106 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b>, _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt,\n-std::vector > _\bB_\ba_\bs_\be;\n-107\n-108 public:\n-_\b1_\b0_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n-_\b1_\b1_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bV_\ba_\bl_\bu_\be _\bV_\ba_\bl_\bu_\be;\n-111\n-112 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bi_\bz_\be;\n-113\n-_\b1_\b1_\b4 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br ( const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd, int codim, const _\bV_\ba_\bl_\bu_\be &value =\n-_\bV_\ba_\bl_\bu_\be() )\n-115 : _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(_\bg_\br_\bi_\bd, codim),\n-116 _\bB_\ba_\bs_\be(*this, codim, value)\n-117 {}\n-118 };\n-119\n-120} // end namespace Dune\n-121\n-122#endif // end DUNE_GRID_YASPGRIDPERSISTENTCONTAINER_HH\n-_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n+56#endif // DUNE_GRID_YASPGRIDENTITYSEED_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+Describes the minimal information necessary to create a fully functional\n+YaspEntity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\b__\bo\n+int _o\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\b__\bc\n+std::array< int, dim > _c\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\b__\bl\n+int _l\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl\n int level() const\n-The level of this entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+YaspEntitySeed()\n+default construct an invalid entity seed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+YaspEntitySeed(int level, std::array< int, dim > coord, int o=0)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n+int offset() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n static constexpr int codimension\n-Know your own codimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int level, int codim) const\n-Return number of grid entities of a given codim on a given level in this\n-process.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:552\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-A class for storing data during an adaptation cycle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-Base::Value Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bG_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b,_\b _\bs_\bt_\bd_\b:_\b:_\bm_\ba_\bp_\b<_\b _\bG_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:\n-_\bI_\bd_\bT_\by_\bp_\be_\b,_\b _\bT_\b _\b>_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n-const Grid & grid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bi_\bz_\be\n-Size size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-vector-based implementation of the PersistentContainer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-Vector::value_type Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n-[ provides Dune::Grid ]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-IndexType index(const Entity &e) const\n-Map entity to index. The result of calling this method with an entity that is\n-not in the index set is...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(int) const\n-Return total number of entities of given geometry type in entity set .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-IndexType subIndex(const Entity &e, int i, unsigned int codim) const\n-Map a subentity to an index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx\n-YaspPersistentContainerIndex(const Grid &grid, int codim)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-std::size_t IndexType\n-The type used for the indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b _\b>_\b,_\b _\bT_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n-Base::Grid Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b _\b>_\b,_\b _\bT_\b _\b>_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-Base::Value Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b _\b>_\b,_\b _\bT_\b _\b>_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-PersistentContainer(const Grid &grid, int codim, const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridpersistentcontainer.hh:114\n-_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh\n+codimension of entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bo_\br_\bd\n+const std::array< int, dim > & coord() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bi_\bs_\bV_\ba_\bl_\bi_\bd\n+bool isValid() const\n+check whether the EntitySeed refers to a valid Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:39\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00218.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00218.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: structuredyaspgridfactory.hh File Reference\n+dune-grid: yaspgridintersection.hh File Reference\n \n \n \n \n \n \n \n@@ -72,42 +72,38 @@\n
  • dune
  • grid
  • yaspgrid
  • \n
    \n
    \n
    \n \n-
    structuredyaspgridfactory.hh File Reference
    \n+
    yaspgridintersection.hh File Reference
    \n
    \n
    \n \n-

    Specialization of the StructuredGridFactory class for YaspGrid. \n+

    The YaspIntersection class. \n More...

    \n-
    #include <memory>
    \n-#include <dune/grid/utility/structuredgridfactory.hh>
    \n-
    \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::StructuredGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > >
     Specialization of the StructuredGridFactory for YaspGrid. More...
     
    class  Dune::StructuredGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > >
     Specialization of the StructuredGridFactory for YaspGrid<EquidistantOffsetCoordinates> More...
    class  Dune::YaspIntersection< GridImp >
     YaspIntersection provides data about intersection with neighboring codim 0 entities. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Specialization of the StructuredGridFactory class for YaspGrid.

    \n+

    The YaspIntersection class.

    \n+

    YaspIntersection provides data about intersection with neighboring codim 0 entities.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,30 +2,25 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-structuredyaspgridfactory.hh File Reference\n-Specialization of the StructuredGridFactory class for YaspGrid. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+yaspgridintersection.hh File Reference\n+The YaspIntersection class. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n- _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n-\u00a0 Specialization of the _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,\n- _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n-\u00a0 Specialization of the _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by for\n- YaspGrid _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn provides data about intersection with neighboring\n+ codim 0 entities. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-Specialization of the StructuredGridFactory class for YaspGrid.\n+The YaspIntersection class.\n+YaspIntersection provides data about intersection with neighboring codim 0\n+entities.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00218_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00218_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: structuredyaspgridfactory.hh Source File\n+dune-grid: yaspgridintersection.hh Source File\n \n \n \n \n \n \n \n@@ -74,126 +74,401 @@\n \n \n
    \n
    \n-
    structuredyaspgridfactory.hh
    \n+
    yaspgridintersection.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH
    \n-
    6#define DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRIDINTERSECTION_HH
    \n+
    6#define DUNE_GRID_YASPGRIDINTERSECTION_HH
    \n
    7
    \n-
    8#include <memory>
    \n-
    9
    \n-\n-
    11
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    27 template<class ctype, int dim>
    \n-
    \n-\n-
    29 {
    \n-\n-
    31 static const int dimworld = GridType::dimensionworld;
    \n-
    32
    \n-
    33 public:
    \n-
    44 static std::unique_ptr<GridType>
    \n-
    \n-
    45 createCubeGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n-
    46 const FieldVector<ctype,dimworld>& upperRight,
    \n-
    47 const std::array<unsigned int,dim>& elements)
    \n-
    48 {
    \n-
    49 using std::abs;
    \n-
    50 for(int d = 0; d < dimworld; ++d)
    \n-
    51 if(abs(lowerLeft[d]) > abs(upperRight[d])*1e-10)
    \n-
    52 DUNE_THROW(GridError, className<StructuredGridFactory>()
    \n-
    53 << "::createCubeGrid(): You have to use Yaspgrid<dim"
    \n-
    54 ", EquidistantOffsetCoordinates<ctype,dim> > as your"
    \n-
    55 "grid type for non-trivial origin." );
    \n-
    56
    \n-
    57 // construct array of ints instead of unsigned ints
    \n-
    58 std::array<int, dim> elem;
    \n-
    59 std::copy(elements.begin(), elements.end(), elem.begin());
    \n-
    60
    \n-
    61 return std::make_unique<GridType>(upperRight, elem,
    \n-
    62 std::bitset<dim>(), 1); // default constructor of bitset sets to zero
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    70 static std::unique_ptr<GridType>
    \n-
    \n-
    71 createSimplexGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n-
    72 const FieldVector<ctype,dimworld>& upperRight,
    \n-
    73 const std::array<unsigned int,dim>& elements)
    \n-
    74 {
    \n-
    75 DUNE_THROW(GridError, className<StructuredGridFactory>()
    \n-
    76 << "::createSimplexGrid(): Simplices are not supported "
    \n-
    77 "by YaspGrid.");
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    80 };
    \n-
    \n-
    81
    \n-
    89 template<class ctype, int dim>
    \n-
    \n-\n-\n-
    92 static const int dimworld = GridType::dimensionworld;
    \n-
    93
    \n-
    94 public:
    \n-
    101 static std::unique_ptr<GridType>
    \n-
    \n-
    102 createCubeGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n-
    103 const FieldVector<ctype,dimworld>& upperRight,
    \n-
    104 const std::array<unsigned int,dim>& elements)
    \n-
    105 {
    \n-
    106 // construct array of ints instead of unsigned ints
    \n-
    107 std::array<int, dim> elem;
    \n-
    108 std::copy(elements.begin(), elements.end(), elem.begin());
    \n-
    109
    \n-
    110 return std::make_unique<GridType>(lowerLeft, upperRight, elem,
    \n-
    111 std::bitset<dim>(), 1); // default constructor of bitset sets to zero
    \n-
    112 }
    \n-
    \n-
    113
    \n-
    119 static std::unique_ptr<GridType>
    \n-
    \n-
    120 createSimplexGrid(const FieldVector<ctype,dimworld>& lowerLeft,
    \n-
    121 const FieldVector<ctype,dimworld>& upperRight,
    \n-
    122 const std::array<unsigned int,dim>& elements)
    \n-
    123 {
    \n-
    124 DUNE_THROW(GridError, className<StructuredGridFactory>()
    \n-
    125 << "::createSimplexGrid(): Simplices are not supported "
    \n-
    126 "by YaspGrid.");
    \n-
    127 }
    \n-
    \n-
    128
    \n-
    129 };
    \n-
    \n-
    130
    \n-
    131} // namespace Dune
    \n-
    132#endif
    \n+
    15namespace Dune {
    \n+
    16
    \n+
    20 template<class GridImp>
    \n+
    \n+\n+
    22 {
    \n+
    23 constexpr static int dim = GridImp::dimension;
    \n+
    24 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    25 typedef typename GridImp::ctype ctype;
    \n+
    26
    \n+
    27 typedef typename GridImp::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
    \n+
    28 typedef typename GridImp::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
    \n+
    29
    \n+
    30 friend class YaspIntersectionIterator<GridImp>;
    \n+
    31
    \n+
    32 public:
    \n+
    33 // types used from grids
    \n+
    34 typedef typename GridImp::YGridLevelIterator YGLI;
    \n+
    35 typedef typename GridImp::YGrid::Iterator I;
    \n+
    36 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n+
    37 typedef typename GridImp::template Codim<1>::Geometry Geometry;
    \n+
    38 typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
    \n+
    39
    \n+
    \n+
    40 void update() {
    \n+
    41
    \n+
    42 // vector with per-direction movements
    \n+
    43 std::array<int,dim> dist{{0}};
    \n+
    44
    \n+
    45 // first move: back to center
    \n+
    46 dist[_dir] = 1 - 2*_face;
    \n+
    47
    \n+
    48 // update face info
    \n+
    49 _dir = _count / 2;
    \n+
    50 _face = _count % 2;
    \n+
    51
    \n+
    52 // second move: to new neighbor
    \n+
    53 dist[_dir] += -1 + 2*_face;
    \n+
    54
    \n+
    55 // move transforming iterator
    \n+
    56 _outside.transformingsubiterator().move(dist);
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+
    62 bool boundary () const
    \n+
    63 {
    \n+
    64 // Coordinate of intersection in its direction
    \n+
    65 int coord = _inside.transformingsubiterator().coord(_dir) + _face;
    \n+
    66 if (_inside.gridlevel()->mg->isPeriodic(_dir))
    \n+
    67 return false;
    \n+
    68 else
    \n+
    69 return coord == 0
    \n+
    70 ||
    \n+
    71 coord == _inside.gridlevel()->mg->levelSize(_inside.gridlevel()->level(),_dir);
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+
    75 bool neighbor () const
    \n+
    76 {
    \n+
    77 // Coordinate of intersection in its direction
    \n+
    78 int coord = _inside.transformingsubiterator().coord(_dir) + _face;
    \n+
    79 return coord > _inside.gridlevel()->overlap[0].dataBegin()->min(_dir)
    \n+
    80 &&
    \n+
    81 coord <= _inside.gridlevel()->overlap[0].dataBegin()->max(_dir);
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    \n+
    85 bool conforming () const
    \n+
    86 {
    \n+
    87 return true;
    \n+
    88 }
    \n+
    \n+
    89
    \n+
    \n+
    92 Entity inside() const
    \n+
    93 {
    \n+
    94 return Entity(_inside);
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    \n+\n+
    99 {
    \n+
    100 return Entity(_outside);
    \n+
    101 }
    \n+
    \n+
    102
    \n+
    \n+\n+
    106 {
    \n+
    107 if(! boundary())
    \n+
    108 DUNE_THROW(GridError, "called boundarySegmentIndex while boundary() == false");
    \n+
    109 // size of local macro grid
    \n+
    110 const std::array<int, dim> & size = _inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->size();
    \n+
    111 const std::array<int, dim> & origin = _inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->origin();
    \n+
    112 std::array<int, dim> sides;
    \n+
    113 {
    \n+
    114 for (int i=0; i<dim; i++)
    \n+
    115 {
    \n+
    116 sides[i] =
    \n+
    117 ((_inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->origin(i)
    \n+
    118 == 0)+
    \n+
    119 (_inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->origin(i) +
    \n+
    120 _inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->size(i)
    \n+
    121 ==
    \n+
    122 _inside.gridlevel()->mg->levelSize(0,i)));
    \n+
    123
    \n+
    124 }
    \n+
    125 }
    \n+
    126 // global position of the cell on macro grid
    \n+
    127 std::array<int, dim> pos = _inside.transformingsubiterator().coord();
    \n+
    128 for(int i=0; i<dim; i++)
    \n+
    129 {
    \n+
    130 pos[i] = pos[i] / (1<<_inside.level());
    \n+
    131 pos[i] = pos[i] - origin[i];
    \n+
    132 }
    \n+
    133 // compute unit-cube-face-sizes
    \n+
    134 std::array<int, dim> fsize;
    \n+
    135 {
    \n+
    136 int vol = 1;
    \n+
    137 for (int k=0; k<dim; k++)
    \n+
    138 vol *= size[k];
    \n+
    139 for (int k=0; k<dim; k++)
    \n+
    140 fsize[k] = vol/size[k];
    \n+
    141 }
    \n+
    142 // compute index in the unit-cube-face
    \n+
    143 int index = 0;
    \n+
    144 {
    \n+
    145 int localoffset = 1;
    \n+
    146 for (int k=dim-1; k>=0; k--)
    \n+
    147 {
    \n+
    148 if (k == _dir) continue;
    \n+
    149 index += (pos[k]) * localoffset;
    \n+
    150 localoffset *= size[k];
    \n+
    151 }
    \n+
    152 }
    \n+
    153 // add unit-cube-face-offsets
    \n+
    154 {
    \n+
    155 for (int k=0; k<_dir; k++)
    \n+
    156 index += sides[k] * fsize[k];
    \n+
    157 // add fsize if we are on the right face and there is a left-face-boundary on this processor
    \n+
    158 index += _face * (sides[_dir]>1) * fsize[_dir];
    \n+
    159 }
    \n+
    160
    \n+
    161 return index;
    \n+
    162 }
    \n+
    \n+
    163
    \n+
    \n+
    165 FieldVector<ctype, dimworld> outerNormal (const FieldVector<ctype, dim-1>& /* local */) const
    \n+
    166 {
    \n+
    167 return centerUnitOuterNormal();
    \n+
    168 }
    \n+
    \n+
    169
    \n+
    \n+
    171 FieldVector<ctype, dimworld> unitOuterNormal (const FieldVector<ctype, dim-1>& /* local */) const
    \n+
    172 {
    \n+
    173 return centerUnitOuterNormal();
    \n+
    174 }
    \n+
    \n+
    175
    \n+
    \n+
    177 FieldVector<ctype, dimworld> centerUnitOuterNormal () const
    \n+
    178 {
    \n+
    179 FieldVector<ctype, dimworld> normal(0);
    \n+
    180 normal[_dir] = (_face==0) ? -1.0 : 1.0;
    \n+
    181 return normal;
    \n+
    182 }
    \n+
    \n+
    183
    \n+
    \n+
    187 FieldVector<ctype, dimworld> integrationOuterNormal ([[maybe_unused]] const FieldVector<ctype, dim-1>& local) const
    \n+
    188 {
    \n+
    189 return geometry().volume() * centerUnitOuterNormal();
    \n+
    190 }
    \n+
    \n+
    191
    \n+
    \n+\n+
    196 {
    \n+
    197 // set of dimensions that span the intersection
    \n+
    198 std::bitset<dim> s;
    \n+
    199 s.set();
    \n+
    200 s[_dir] = false;
    \n+
    201
    \n+
    202 // lower-left and upper-right corners
    \n+
    203 Dune::FieldVector<ctype, dim> ll(0.0);
    \n+
    204 Dune::FieldVector<ctype, dim> ur(1.0);
    \n+
    205
    \n+
    206 ll[_dir] = ur[_dir] = (_face==0) ? 0.0 : 1.0;
    \n+
    207
    \n+
    208 return LocalGeometry(LocalGeometryImpl(ll,ur,s));
    \n+
    209 }
    \n+
    \n+
    210
    \n+
    \n+\n+
    215 {
    \n+
    216 // set of dimensions that span the intersection
    \n+
    217 std::bitset<dim> s;
    \n+
    218 s.set();
    \n+
    219 s[_dir] = false;
    \n+
    220
    \n+
    221 // lower-left and upper-right corners
    \n+
    222 Dune::FieldVector<ctype, dim> ll(0.0);
    \n+
    223 Dune::FieldVector<ctype, dim> ur(1.0);
    \n+
    224
    \n+
    225 ll[_dir] = ur[_dir] = (_face==1) ? 0.0 : 1.0;
    \n+
    226
    \n+
    227 return LocalGeometry(LocalGeometryImpl(ll,ur,s));
    \n+
    228 }
    \n+
    \n+
    229
    \n+
    \n+\n+
    233 {
    \n+
    234
    \n+
    235 std::bitset<dim> shift;
    \n+
    236 shift.set();
    \n+
    237 shift[_dir] = false;
    \n+
    238
    \n+
    239 Dune::FieldVector<ctype,dimworld> ll, ur;
    \n+
    240 for (int i=0; i<dimworld; i++)
    \n+
    241 {
    \n+
    242 int coord = _inside.transformingsubiterator().coord(i);
    \n+
    243
    \n+
    244 if ((i == _dir) and (_face))
    \n+
    245 coord++;
    \n+
    246
    \n+
    247 ll[i] = _inside.transformingsubiterator().coordCont()->coordinate(i,coord);
    \n+
    248 if (i != _dir)
    \n+
    249 coord++;
    \n+
    250 ur[i] = _inside.transformingsubiterator().coordCont()->coordinate(i,coord);
    \n+
    251
    \n+
    252 // If on periodic overlap, transform coordinates by domain size
    \n+
    253 if (_inside.gridlevel()->mg->isPeriodic(i)) {
    \n+
    254 int coordPeriodic = _inside.transformingsubiterator().coord(i);
    \n+
    255 if (coordPeriodic < 0) {
    \n+
    256 auto size = _inside.gridlevel()->mg->domainSize()[i];
    \n+
    257 ll[i] += size;
    \n+
    258 ur[i] += size;
    \n+
    259 } else if (coordPeriodic + 1 > _inside.gridlevel()->mg->levelSize(_inside.gridlevel()->level(),i)) {
    \n+
    260 auto size = _inside.gridlevel()->mg->domainSize()[i];
    \n+
    261 ll[i] -= size;
    \n+
    262 ur[i] -= size;
    \n+
    263 }
    \n+
    264 }
    \n+
    265 }
    \n+
    266
    \n+
    267 GeometryImpl _is_global(ll,ur,shift);
    \n+
    268 return Geometry( _is_global );
    \n+
    269 }
    \n+
    \n+
    270
    \n+
    \n+
    272 GeometryType type () const
    \n+
    273 {
    \n+
    274 return GeometryTypes::cube(dim-1);
    \n+
    275 }
    \n+
    \n+
    276
    \n+
    \n+
    278 int indexInInside () const
    \n+
    279 {
    \n+
    280 return _count;
    \n+
    281 }
    \n+
    \n+
    282
    \n+
    \n+
    284 int indexInOutside () const
    \n+
    285 {
    \n+
    286 // flip the last bit
    \n+
    287 return _count^1;
    \n+
    288 }
    \n+
    \n+
    289
    \n+
    \n+\n+
    291 : _count(~std::uint8_t(0)) // Use as marker for invalid intersection
    \n+
    292 , _dir(0)
    \n+
    293 , _face(0)
    \n+
    294 {}
    \n+
    \n+
    295
    \n+
    \n+
    297 YaspIntersection (const YaspEntity<0,dim,GridImp>& myself, bool toend) :
    \n+
    298 _inside(myself.gridlevel(),
    \n+
    299 myself.transformingsubiterator()),
    \n+
    300 _outside(myself.gridlevel(),
    \n+
    301 myself.transformingsubiterator()),
    \n+
    302 // initialize to first neighbor
    \n+
    303 _count(0),
    \n+
    304 _dir(0),
    \n+
    305 _face(0)
    \n+
    306 {
    \n+
    307 if (toend)
    \n+
    308 {
    \n+
    309 // initialize end iterator
    \n+
    310 _count = 2*dim;
    \n+
    311 return;
    \n+
    312 }
    \n+
    313 _count = 0;
    \n+
    314
    \n+
    315 // move transforming iterator
    \n+
    316 _outside.transformingsubiterator().move(_dir,-1);
    \n+
    317 }
    \n+
    \n+
    318
    \n+
    320
    \n+
    \n+
    322 void assign (const YaspIntersection& it)
    \n+
    323 {
    \n+
    324 *this = it;
    \n+
    325 }
    \n+
    \n+
    326
    \n+
    \n+
    327 bool equals(const YaspIntersection& other) const
    \n+
    328 {
    \n+
    329 // compare counts first -- that's cheaper if the test fails
    \n+
    330 return _count == other._count && _inside.equals(other._inside);
    \n+
    331 }
    \n+
    \n+
    332
    \n+
    333 private:
    \n+
    334 /* The two entities that make up the intersection */
    \n+\n+\n+
    337 /* current position */
    \n+
    338 std::uint8_t _count;
    \n+
    339 std::uint8_t _dir;
    \n+
    340 std::uint8_t _face;
    \n+
    341 };
    \n+
    \n+
    342} // namespace Dune
    \n+
    343
    \n+
    344#endif // DUNE_GRID_YASPGRIDINTERSECTION_HH
    \n+
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Construct structured cube and simplex grids in unstructured grid managers.
    Definition utility/structuredgridfactory.hh:31
    \n
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n-
    Container for equidistant coordinates in a YaspGrid.
    Definition coordinates.hh:29
    \n-
    Container for equidistant coordinates in a YaspGrid with non-trivial origin.
    Definition coordinates.hh:131
    \n-
    static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured cube grid.
    Definition structuredyaspgridfactory.hh:45
    \n-
    static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured simplex grid.
    Definition structuredyaspgridfactory.hh:71
    \n-
    static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured cube grid.
    Definition structuredyaspgridfactory.hh:102
    \n-
    static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured simplex grid.
    Definition structuredyaspgridfactory.hh:120
    \n-
    A class to construct structured cube and simplex grids using the grid factory.
    \n+
    Definition yaspgridentity.hh:268
    \n+
    int level() const
    level of this element
    Definition yaspgridentity.hh:282
    \n+
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:420
    \n+
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:419
    \n+
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:347
    \n+
    YaspIntersectionIterator enables iteration over intersections with neighboring codim 0 entities.
    Definition yaspgridintersectioniterator.hh:22
    \n+
    YaspIntersection provides data about intersection with neighboring codim 0 entities.
    Definition yaspgridintersection.hh:22
    \n+
    FieldVector< ctype, dimworld > centerUnitOuterNormal() const
    return unit outer normal at center of intersection geometry
    Definition yaspgridintersection.hh:177
    \n+
    bool equals(const YaspIntersection &other) const
    Definition yaspgridintersection.hh:327
    \n+
    Entity inside() const
    Definition yaspgridintersection.hh:92
    \n+
    Geometry geometry() const
    Definition yaspgridintersection.hh:232
    \n+
    GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
    Definition yaspgridintersection.hh:38
    \n+
    YaspIntersection()
    Definition yaspgridintersection.hh:290
    \n+
    int indexInOutside() const
    local index of codim 1 entity in neighbor where intersection is contained in
    Definition yaspgridintersection.hh:284
    \n+
    LocalGeometry geometryInInside() const
    Definition yaspgridintersection.hh:195
    \n+
    int boundarySegmentIndex() const
    Definition yaspgridintersection.hh:105
    \n+
    GridImp::template Codim< 1 >::Geometry Geometry
    Definition yaspgridintersection.hh:37
    \n+
    bool conforming() const
    Yasp is always conform.
    Definition yaspgridintersection.hh:85
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition yaspgridintersection.hh:36
    \n+
    bool neighbor() const
    return true if neighbor across intersection exists in this processor
    Definition yaspgridintersection.hh:75
    \n+
    FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &) const
    return unit outer normal, this should be dependent on local coordinates for higher order boundary
    Definition yaspgridintersection.hh:165
    \n+
    YaspIntersection(const YaspEntity< 0, dim, GridImp > &myself, bool toend)
    make intersection iterator from entity, initialize to first neighbor
    Definition yaspgridintersection.hh:297
    \n+
    GeometryType type() const
    obtain the type of reference element for this intersection
    Definition yaspgridintersection.hh:272
    \n+
    void assign(const YaspIntersection &it)
    copy constructor \u2013 use default
    Definition yaspgridintersection.hh:322
    \n+
    int indexInInside() const
    local index of codim 1 entity in self where intersection is contained in
    Definition yaspgridintersection.hh:278
    \n+
    FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
    Definition yaspgridintersection.hh:187
    \n+
    GridImp::YGrid::Iterator I
    Definition yaspgridintersection.hh:35
    \n+
    LocalGeometry geometryInOutside() const
    Definition yaspgridintersection.hh:214
    \n+
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridintersection.hh:34
    \n+
    Entity outside() const
    return Entity on the outside of this intersection
    Definition yaspgridintersection.hh:98
    \n+
    bool boundary() const
    Definition yaspgridintersection.hh:62
    \n+
    FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &) const
    return unit outer normal, this should be dependent on local coordinates for higher order boundary
    Definition yaspgridintersection.hh:171
    \n+
    void update()
    Definition yaspgridintersection.hh:40
    \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,148 +1,453 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-structuredyaspgridfactory.hh\n+yaspgridintersection.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH\n-6#define DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH\n+5#ifndef DUNE_GRID_YASPGRIDINTERSECTION_HH\n+6#define DUNE_GRID_YASPGRIDINTERSECTION_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-11\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-27 template\n-_\b2_\b8 class _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by<_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n-> >\n-29 {\n-30 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd_\bT_\by_\bp_\be;\n-31 static const int dimworld = GridType::dimensionworld;\n-32\n-33 public:\n-44 static std::unique_ptr\n-_\b4_\b5 _\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n-46 const FieldVector& upperRight,\n-47 const std::array& elements)\n-48 {\n-49 using std::abs;\n-50 for(int d = 0; d < dimworld; ++d)\n-51 if(abs(lowerLeft[d]) > abs(upperRight[d])*1e-10)\n-52 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, className()\n-53 << \"::createCubeGrid(): You have to use Yaspgrid > as your\"\n-55 \"grid type for non-trivial origin.\" );\n-56\n-57 // construct array of ints instead of unsigned ints\n-58 std::array elem;\n-59 std::copy(elements.begin(), elements.end(), elem.begin());\n-60\n-61 return std::make_unique(upperRight, elem,\n-62 std::bitset(), 1); // default constructor of bitset sets to zero\n-63 }\n-64\n-70 static std::unique_ptr\n-_\b7_\b1 _\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n-72 const FieldVector& upperRight,\n-73 const std::array& elements)\n-74 {\n-75 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, className()\n-76 << \"::createSimplexGrid(): Simplices are not supported \"\n-77 \"by YaspGrid.\");\n-78 }\n-79\n-80 };\n-81\n-89 template\n-_\b9_\b0 class _\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by<_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > > {\n-91 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd_\bT_\by_\bp_\be;\n-92 static const int dimworld = GridType::dimensionworld;\n-93\n-94 public:\n-101 static std::unique_ptr\n-_\b1_\b0_\b2 _\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n-103 const FieldVector& upperRight,\n-104 const std::array& elements)\n-105 {\n-106 // construct array of ints instead of unsigned ints\n-107 std::array elem;\n-108 std::copy(elements.begin(), elements.end(), elem.begin());\n-109\n-110 return std::make_unique(lowerLeft, upperRight, elem,\n-111 std::bitset(), 1); // default constructor of bitset sets to zero\n-112 }\n-113\n-119 static std::unique_ptr\n-_\b1_\b2_\b0 _\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd(const FieldVector& lowerLeft,\n-121 const FieldVector& upperRight,\n-122 const std::array& elements)\n-123 {\n-124 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, className()\n-125 << \"::createSimplexGrid(): Simplices are not supported \"\n-126 \"by YaspGrid.\");\n-127 }\n-128\n-129 };\n-130\n-131} // namespace Dune\n-132#endif\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+20 template\n+_\b2_\b1 class _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+22 {\n+23 constexpr static int dim = GridImp::dimension;\n+24 constexpr static int dimworld = GridImp::dimensionworld;\n+25 typedef typename GridImp::ctype ctype;\n+26\n+27 typedef typename GridImp::Traits::template Codim< 1 >::GeometryImpl\n+GeometryImpl;\n+_\b2_\b8 typedef typename GridImp::Traits::template Codim< 1 >::LocalGeometryImpl\n+LocalGeometryImpl;\n+29\n+30 friend class _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+31\n+32 public:\n+33 // types used from grids\n+_\b3_\b4 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n+_\b3_\b5 typedef typename GridImp::YGrid::Iterator _\bI;\n+_\b3_\b6 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b3_\b7 typedef typename GridImp::template Codim<1>::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b3_\b8 typedef typename GridImp::template Codim<1>::LocalGeometry _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+39\n+_\b4_\b0 void _\bu_\bp_\bd_\ba_\bt_\be() {\n+41\n+42 // vector with per-direction movements\n+43 std::array dist{{0}};\n+44\n+45 // first move: back to center\n+46 dist[_dir] = 1 - 2*_face;\n+47\n+48 // update face info\n+49 _dir = _count / 2;\n+50 _face = _count % 2;\n+51\n+52 // second move: to new neighbor\n+53 dist[_dir] += -1 + 2*_face;\n+54\n+55 // move transforming iterator\n+56 _outside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().move(dist);\n+57 }\n+58\n+_\b6_\b2 bool _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const\n+63 {\n+64 // Coordinate of intersection in its direction\n+65 int coord = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(_dir) + _face;\n+66 if (_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->isPeriodic(_dir))\n+67 return false;\n+68 else\n+69 return coord == 0\n+70 ||\n+71 coord == _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize(_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->level\n+(),_dir);\n+72 }\n+73\n+_\b7_\b5 bool _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const\n+76 {\n+77 // Coordinate of intersection in its direction\n+78 int coord = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(_dir) + _face;\n+79 return coord > _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->overlap[0].dataBegin()->min(_dir)\n+80 &&\n+81 coord <= _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->overlap[0].dataBegin()->max(_dir);\n+82 }\n+83\n+_\b8_\b5 bool _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg () const\n+86 {\n+87 return true;\n+88 }\n+89\n+_\b9_\b2 _\bE_\bn_\bt_\bi_\bt_\by _\bi_\bn_\bs_\bi_\bd_\be() const\n+93 {\n+94 return _\bE_\bn_\bt_\bi_\bt_\by(_inside);\n+95 }\n+96\n+_\b9_\b8 _\bE_\bn_\bt_\bi_\bt_\by _\bo_\bu_\bt_\bs_\bi_\bd_\be() const\n+99 {\n+100 return _\bE_\bn_\bt_\bi_\bt_\by(_outside);\n+101 }\n+102\n+_\b1_\b0_\b5 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() const\n+106 {\n+107 if(! _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by())\n+108 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"called boundarySegmentIndex while boundary() ==\n+false\");\n+109 // size of local macro grid\n+110 const std::array & size = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()-\n+>overlap[0].dataBegin()->size();\n+111 const std::array & origin = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()-\n+>overlap[0].dataBegin()->origin();\n+112 std::array sides;\n+113 {\n+114 for (int i=0; img->begin()->overlap[0].dataBegin()->origin(i)\n+118 == 0)+\n+119 (_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()->overlap[0].dataBegin()->origin(i) +\n+120 _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()->overlap[0].dataBegin()->size(i)\n+121 ==\n+122 _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize(0,i)));\n+123\n+124 }\n+125 }\n+126 // global position of the cell on macro grid\n+127 std::array pos = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord();\n+128 for(int i=0; i fsize;\n+135 {\n+136 int vol = 1;\n+137 for (int k=0; k=0; k--)\n+147 {\n+148 if (k == _dir) continue;\n+149 index += (pos[k]) * localoffset;\n+150 localoffset *= size[k];\n+151 }\n+152 }\n+153 // add unit-cube-face-offsets\n+154 {\n+155 for (int k=0; k<_dir; k++)\n+156 index += sides[k] * fsize[k];\n+157 // add fsize if we are on the right face and there is a left-face-boundary\n+on this processor\n+158 index += _face * (sides[_dir]>1) * fsize[_dir];\n+159 }\n+160\n+161 return index;\n+162 }\n+163\n+_\b1_\b6_\b5 FieldVector _\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector&\n+/* local */) const\n+166 {\n+167 return _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl();\n+168 }\n+169\n+_\b1_\b7_\b1 FieldVector _\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector& /* local */) const\n+172 {\n+173 return _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl();\n+174 }\n+175\n+_\b1_\b7_\b7 FieldVector _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const\n+178 {\n+179 FieldVector normal(0);\n+180 normal[_dir] = (_face==0) ? -1.0 : 1.0;\n+181 return normal;\n+182 }\n+183\n+_\b1_\b8_\b7 FieldVector _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl ([[maybe_unused]] const\n+FieldVector& local) const\n+188 {\n+189 return _\bg_\be_\bo_\bm_\be_\bt_\br_\by().volume() * _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl();\n+190 }\n+191\n+_\b1_\b9_\b5 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n+196 {\n+197 // set of dimensions that span the intersection\n+198 std::bitset s;\n+199 s.set();\n+200 s[_dir] = false;\n+201\n+202 // lower-left and upper-right corners\n+203 Dune::FieldVector ll(0.0);\n+204 Dune::FieldVector ur(1.0);\n+205\n+206 ll[_dir] = ur[_dir] = (_face==0) ? 0.0 : 1.0;\n+207\n+208 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by(LocalGeometryImpl(ll,ur,s));\n+209 }\n+210\n+_\b2_\b1_\b4 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n+215 {\n+216 // set of dimensions that span the intersection\n+217 std::bitset s;\n+218 s.set();\n+219 s[_dir] = false;\n+220\n+221 // lower-left and upper-right corners\n+222 Dune::FieldVector ll(0.0);\n+223 Dune::FieldVector ur(1.0);\n+224\n+225 ll[_dir] = ur[_dir] = (_face==1) ? 0.0 : 1.0;\n+226\n+227 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by(LocalGeometryImpl(ll,ur,s));\n+228 }\n+229\n+_\b2_\b3_\b2 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+233 {\n+234\n+235 std::bitset shift;\n+236 shift.set();\n+237 shift[_dir] = false;\n+238\n+239 Dune::FieldVector ll, ur;\n+240 for (int i=0; icoordinate(i,coord);\n+248 if (i != _dir)\n+249 coord++;\n+250 ur[i] = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coordCont()->coordinate(i,coord);\n+251\n+252 // If on periodic overlap, transform coordinates by domain size\n+253 if (_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->isPeriodic(i)) {\n+254 int coordPeriodic = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(i);\n+255 if (coordPeriodic < 0) {\n+256 auto size = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->domainSize()[i];\n+257 ll[i] += size;\n+258 ur[i] += size;\n+259 } else if (coordPeriodic + 1 > _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize\n+(_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->level(),i)) {\n+260 auto size = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->domainSize()[i];\n+261 ll[i] -= size;\n+262 ur[i] -= size;\n+263 }\n+264 }\n+265 }\n+266\n+267 GeometryImpl _is_global(ll,ur,shift);\n+268 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _is_global );\n+269 }\n+270\n+_\b2_\b7_\b2 GeometryType _\bt_\by_\bp_\be () const\n+273 {\n+274 return GeometryTypes::cube(dim-1);\n+275 }\n+276\n+_\b2_\b7_\b8 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n+279 {\n+280 return _count;\n+281 }\n+282\n+_\b2_\b8_\b4 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n+285 {\n+286 // flip the last bit\n+287 return _count^1;\n+288 }\n+289\n+_\b2_\b9_\b0 _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn()\n+291 : _count(~_\bs_\bt_\bd::uint8_t(0)) // Use as marker for invalid intersection\n+292 , _dir(0)\n+293 , _face(0)\n+294 {}\n+295\n+_\b2_\b9_\b7 _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>& myself, bool toend) :\n+298 _inside(myself.gridlevel(),\n+299 myself.transformingsubiterator()),\n+300 _outside(myself.gridlevel(),\n+301 myself.transformingsubiterator()),\n+302 // initialize to first neighbor\n+303 _count(0),\n+304 _dir(0),\n+305 _face(0)\n+306 {\n+307 if (toend)\n+308 {\n+309 // initialize end iterator\n+310 _count = 2*dim;\n+311 return;\n+312 }\n+313 _count = 0;\n+314\n+315 // move transforming iterator\n+316 _outside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().move(_dir,-1);\n+317 }\n+318\n+320\n+_\b3_\b2_\b2 void _\ba_\bs_\bs_\bi_\bg_\bn (const _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& it)\n+323 {\n+324 *this = it;\n+325 }\n+326\n+_\b3_\b2_\b7 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& other) const\n+328 {\n+329 // compare counts first -- that's cheaper if the test fails\n+330 return _count == other._count && _inside._\be_\bq_\bu_\ba_\bl_\bs(other._inside);\n+331 }\n+332\n+333 private:\n+334 /* The two entities that make up the intersection */\n+335 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _inside;\n+336 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _outside;\n+337 /* current position */\n+338 std::uint8_t _count;\n+339 std::uint8_t _dir;\n+340 std::uint8_t _face;\n+341 };\n+342} // namespace Dune\n+343\n+344#endif // DUNE_GRID_YASPGRIDINTERSECTION_HH\n+_\bs_\bt_\bd\n+STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Construct structured cube and simplex grids in unstructured grid managers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/structuredgridfactory.hh:31\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n Base class for exceptions in Dune grid modules.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n-[ provides Dune::Grid ]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Container for equidistant coordinates in a YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Container for equidistant coordinates in a YaspGrid with non-trivial origin.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm\n-_\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd\n-static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype,\n-dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n-std::array< unsigned int, dim > &elements)\n-Create a structured cube grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm\n-_\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd\n-static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype,\n-dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n-std::array< unsigned int, dim > &elements)\n-Create a structured simplex grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n-_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bC_\bu_\bb_\be_\bG_\br_\bi_\bd\n-static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype,\n-dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n-std::array< unsigned int, dim > &elements)\n-Create a structured cube grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n-_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd\n-static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype,\n-dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const\n-std::array< unsigned int, dim > &elements)\n-Create a structured simplex grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn structuredyaspgridfactory.hh:120\n-_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-A class to construct structured cube and simplex grids using the grid factory.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+level of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:282\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+const YGLI & gridlevel() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:420\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+const I & transformingsubiterator() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:419\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspEntity &e) const\n+Return true when two iterators over the same grid are equal (!).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:347\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspIntersectionIterator enables iteration over intersections with neighboring\n+codim 0 entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersectioniterator.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+YaspIntersection provides data about intersection with neighboring codim 0\n+entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > centerUnitOuterNormal() const\n+return unit outer normal at center of intersection geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspIntersection &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:327\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+Entity inside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 1 >::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+YaspIntersection()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:290\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+int indexInOutside() const\n+local index of codim 1 entity in neighbor where intersection is contained in\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:284\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+LocalGeometry geometryInInside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+int boundarySegmentIndex() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 1 >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+bool conforming() const\n+Yasp is always conform.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+bool neighbor() const\n+return true if neighbor across intersection exists in this processor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &)\n+const\n+return unit outer normal, this should be dependent on local coordinates for\n+higher order boundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+YaspIntersection(const YaspEntity< 0, dim, GridImp > &myself, bool toend)\n+make intersection iterator from entity, initialize to first neighbor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:297\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+obtain the type of reference element for this intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const YaspIntersection &it)\n+copy constructor \u00e2\u0080\u0093 use default\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:322\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+local index of codim 1 entity in self where intersection is contained in\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:278\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype,\n+dim-1 > &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI\n+GridImp::YGrid::Iterator I\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+LocalGeometry geometryInOutside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bY_\bG_\bL_\bI\n+GridImp::YGridLevelIterator YGLI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n+Entity outside() const\n+return Entity on the outside of this intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool boundary() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-\n+1 > &) const\n+return unit outer normal, this should be dependent on local coordinates for\n+higher order boundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.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-grid-doc/doxygen/a00224.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00224.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgrididset.hh File Reference\n+dune-grid: yaspgridleveliterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,32 +72,37 @@\n
  • dune
  • grid
  • yaspgrid
  • \n \n \n
    \n \n-
    yaspgrididset.hh File Reference
    \n+
    yaspgridleveliterator.hh File Reference
    \n
    \n
    \n \n+

    The YaspLevelIterator class. \n+More...

    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::YaspGlobalIdSet< GridImp >
     persistent, globally unique Ids More...
    class  Dune::YaspLevelIterator< codim, pitype, GridImp >
     Iterates over entities of one grid level. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    The YaspLevelIterator class.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,19 +2,22 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-yaspgrididset.hh File Reference\n+yaspgridleveliterator.hh File Reference\n+The YaspLevelIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 persistent, globally unique Ids _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 Iterates over entities of one grid level. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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+The YaspLevelIterator class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00224_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00224_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgrididset.hh Source File\n+dune-grid: yaspgridleveliterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,88 +74,91 @@\n \n \n \n
    \n-
    yaspgrididset.hh
    \n+
    yaspgridleveliterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDIDSET_HH
    \n-
    6#define DUNE_GRID_YASPGRIDIDSET_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRIDLEVELITERATOR_HH
    \n+
    6#define DUNE_GRID_YASPGRIDLEVELITERATOR_HH
    \n
    7
    \n-
    8
    \n-
    9namespace Dune {
    \n-
    10
    \n-
    11 //========================================================================
    \n-
    16 //========================================================================
    \n-
    17
    \n-
    18 template<class GridImp>
    \n-
    \n-
    19 class YaspGlobalIdSet : public IdSet<GridImp,YaspGlobalIdSet<GridImp>,
    \n-
    20 typename std::remove_const<GridImp>::type::PersistentIndexType >
    \n-
    21 /*
    \n-
    22 We used the remove_const to extract the Type from the mutable class,
    \n-
    23 because the const class is not instantiated yet.
    \n-
    24 */
    \n-
    25 {
    \n-\n-
    27
    \n-
    28 public:
    \n-
    30 typedef typename std::remove_const<GridImp>::type::PersistentIndexType IdType;
    \n-
    31
    \n-
    32 using IdSet<GridImp, This, IdType>::subId;
    \n+
    12namespace Dune {
    \n+
    13
    \n+
    14
    \n+
    17 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n+
    \n+\n+
    19 {
    \n+
    21 constexpr static int dim = GridImp::dimension;
    \n+
    23 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    24 typedef typename GridImp::ctype ctype;
    \n+
    25 public:
    \n+
    26 typedef typename GridImp::template Codim<codim>::Entity Entity;
    \n+
    27 typedef typename GridImp::YGridLevelIterator YGLI;
    \n+
    28 typedef typename GridImp::YGrid::Iterator I;
    \n+
    29
    \n+
    \n+\n+
    32 {}
    \n+
    \n
    33
    \n
    \n-\n-
    36 {}
    \n-
    \n-
    37
    \n-
    39 /*
    \n-
    40 We use the remove_const to extract the Type from the mutable class,
    \n-
    41 because the const class is not instantiated yet.
    \n-
    42 */
    \n-
    43 template<int cd>
    \n-
    \n-
    44 IdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
    \n-
    45 {
    \n-
    46 return e.impl().persistentIndex();
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    50 /*
    \n-
    51 We use the remove_const to extract the Type from the mutable class,
    \n-
    52 because the const class is not instantiated yet.
    \n-
    53 */
    \n-
    \n-
    54 IdType subId (const typename std::remove_const<GridImp>::type::Traits::template Codim< 0 >::Entity &e,
    \n-
    55 int i, unsigned int codim ) const
    \n-
    56 {
    \n-
    57 return e.impl().subPersistentIndex(i,codim);
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    60 };
    \n-
    \n-
    61
    \n-
    62} // namespace Dune
    \n-
    63
    \n-
    64#endif // DUNE_GRID_YASPGRIDIDSET_HH
    \n+
    35 YaspLevelIterator (const YGLI & g, const I& it)
    \n+
    36 : _entity(YaspEntity<codim, dim, GridImp>(g,it))
    \n+
    37 {}
    \n+
    \n+
    38
    \n+
    \n+
    40 void increment()
    \n+
    41 {
    \n+
    42 ++(_entity.impl()._it);
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 bool equals (const YaspLevelIterator& rhs) const
    \n+
    47 {
    \n+
    48 return (_entity == rhs._entity);
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    52 const Entity& dereference() const
    \n+
    53 {
    \n+
    54 return _entity;
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    57 protected:
    \n+\n+
    59 };
    \n+
    \n+
    60
    \n+
    61}
    \n+
    62
    \n+
    63#endif // DUNE_GRID_YASPGRIDLEVELITERATOR_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Id Set Interface.
    Definition indexidset.hh:452
    \n-
    persistent, globally unique Ids
    Definition yaspgrididset.hh:25
    \n-
    IdType subId(const typename std::remove_const< GridImp >::type::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    get id of subentity
    Definition yaspgrididset.hh:54
    \n-
    std::remove_const< GridImp >::type::PersistentIndexType IdType
    define the type used for persistent indices
    Definition yaspgrididset.hh:30
    \n-
    YaspGlobalIdSet()
    Only default-constructible.
    Definition yaspgrididset.hh:35
    \n-
    IdType id(const typename std::remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
    get id of an entity
    Definition yaspgrididset.hh:44
    \n+
    Definition yaspgridentity.hh:268
    \n+
    Iterates over entities of one grid level.
    Definition yaspgridleveliterator.hh:19
    \n+
    Entity _entity
    entity
    Definition yaspgridleveliterator.hh:58
    \n+
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridleveliterator.hh:27
    \n+
    GridImp::template Codim< codim >::Entity Entity
    Definition yaspgridleveliterator.hh:26
    \n+
    void increment()
    increment
    Definition yaspgridleveliterator.hh:40
    \n+
    GridImp::YGrid::Iterator I
    Definition yaspgridleveliterator.hh:28
    \n+
    YaspLevelIterator(const YGLI &g, const I &it)
    constructor
    Definition yaspgridleveliterator.hh:35
    \n+
    bool equals(const YaspLevelIterator &rhs) const
    equality
    Definition yaspgridleveliterator.hh:46
    \n+
    YaspLevelIterator()
    default constructor
    Definition yaspgridleveliterator.hh:31
    \n+
    const Entity & dereference() const
    dereferencing
    Definition yaspgridleveliterator.hh:52
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,98 +1,103 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgrididset.hh\n+yaspgridleveliterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDIDSET_HH\n-6#define DUNE_GRID_YASPGRIDIDSET_HH\n+5#ifndef DUNE_GRID_YASPGRIDLEVELITERATOR_HH\n+6#define DUNE_GRID_YASPGRIDLEVELITERATOR_HH\n 7\n-8\n-9namespace _\bD_\bu_\bn_\be {\n-10\n-11 //========================================================================\n-16 //========================================================================\n-17\n-18 template\n-_\b1_\b9 class _\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt : public _\bI_\bd_\bS_\be_\bt,\n-20 typename std::remove_const::type::PersistentIndexType >\n-21 /*\n-22 We used the remove_const to extract the Type from the mutable class,\n-23 because the const class is not instantiated yet.\n-24 */\n-25 {\n-26 typedef _\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n-27\n-28 public:\n-_\b3_\b0 typedef typename std::remove_const::type::PersistentIndexType\n-_\bI_\bd_\bT_\by_\bp_\be;\n-31\n-32 using _\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd;\n+12namespace _\bD_\bu_\bn_\be {\n+13\n+14\n+17 template\n+_\b1_\b8 class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+19 {\n+21 constexpr static int dim = GridImp::dimension;\n+23 constexpr static int dimworld = GridImp::dimensionworld;\n+24 typedef typename GridImp::ctype ctype;\n+25 public:\n+_\b2_\b6 typedef typename GridImp::template Codim::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b2_\b7 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n+_\b2_\b8 typedef typename GridImp::YGrid::Iterator _\bI;\n+29\n+_\b3_\b1 _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+32 {}\n 33\n-_\b3_\b5 _\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt()\n-36 {}\n-37\n-39 /*\n-40 We use the remove_const to extract the Type from the mutable class,\n-41 because the const class is not instantiated yet.\n-42 */\n-43 template\n-_\b4_\b4 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename std::remove_const::type::Traits::template\n-Codim::Entity& e) const\n-45 {\n-46 return e.impl().persistentIndex();\n-47 }\n-48\n-50 /*\n-51 We use the remove_const to extract the Type from the mutable class,\n-52 because the const class is not instantiated yet.\n-53 */\n-_\b5_\b4 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename std::remove_const::type::Traits::\n-template Codim< 0 >::Entity &e,\n-55 int i, unsigned int codim ) const\n-56 {\n-57 return e.impl().subPersistentIndex(i,codim);\n-58 }\n-59\n-60 };\n-61\n-62} // namespace Dune\n-63\n-64#endif // DUNE_GRID_YASPGRIDIDSET_HH\n+_\b3_\b5 _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\bL_\bI & g, const _\bI& it)\n+36 : _\b__\be_\bn_\bt_\bi_\bt_\by(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by(g,it))\n+37 {}\n+38\n+_\b4_\b0 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt()\n+41 {\n+42 ++(_\b__\be_\bn_\bt_\bi_\bt_\by.impl()._it);\n+43 }\n+44\n+_\b4_\b6 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n+47 {\n+48 return (_\b__\be_\bn_\bt_\bi_\bt_\by == rhs._\b__\be_\bn_\bt_\bi_\bt_\by);\n+49 }\n+50\n+_\b5_\b2 const _\bE_\bn_\bt_\bi_\bt_\by& _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n+53 {\n+54 return _\b__\be_\bn_\bt_\bi_\bt_\by;\n+55 }\n+56\n+57 protected:\n+_\b5_\b8 _\bE_\bn_\bt_\bi_\bt_\by _\b__\be_\bn_\bt_\bi_\bt_\by;\n+59 };\n+60\n+61}\n+62\n+63#endif // DUNE_GRID_YASPGRIDLEVELITERATOR_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-Id Set Interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-persistent, globally unique Ids\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename std::remove_const< GridImp >::type::Traits::\n-template Codim< 0 >::Entity &e, int i, unsigned int codim) const\n-get id of subentity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n-std::remove_const< GridImp >::type::PersistentIndexType IdType\n-define the type used for persistent indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-YaspGlobalIdSet()\n-Only default-constructible.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const typename std::remove_const< GridImp >::type::Traits::template\n-Codim< cd >::Entity &e) const\n-get id of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterates over entities of one grid level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\be_\bn_\bt_\bi_\bt_\by\n+Entity _entity\n+entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\bG_\bL_\bI\n+GridImp::YGridLevelIterator YGLI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI\n+GridImp::YGrid::Iterator I\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspLevelIterator(const YGLI &g, const I &it)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspLevelIterator &rhs) const\n+equality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspLevelIterator()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+const Entity & dereference() const\n+dereferencing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:52\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00233.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00233.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridintersection.hh File Reference\n+dune-grid: partitioning.hh File Reference\n \n \n \n \n \n \n \n@@ -72,38 +72,64 @@\n
  • dune
  • grid
  • yaspgrid
  • \n \n \n
    \n \n-
    yaspgridintersection.hh File Reference
    \n+
    partitioning.hh File Reference
    \n
    \n
    \n \n-

    The YaspIntersection class. \n+

    This file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning. \n More...

    \n-\n+
    #include <array>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/common/deprecated.hh>
    \n+
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::YaspIntersection< GridImp >
     YaspIntersection provides data about intersection with neighboring codim 0 entities. More...
    class  Dune::Yasp::Partitioning< d >
     a base class for the yaspgrid partitioning strategy More...
     
    class  Dune::Yasp::DefaultPartitioning< d >
     
    class  Dune::Yasp::PowerDPartitioning< d >
     Implement yaspgrid load balance strategy for P=x^{dim} processors. More...
     
    class  Dune::Yasp::FixedSizePartitioning< d >
     Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't match the number of processors, the grid should be distributed to, an exception is thrown. More...
     
    class  Dune::YLoadBalance< d >
     a base class for the yaspgrid partitioning strategy More...
     
    class  Dune::YLoadBalanceForward< d >
     
    class  Dune::YLoadBalanceDefault< d >
     Implement the default load balance strategy of yaspgrid. More...
     
    class  Dune::YLoadBalancePowerD< d >
     Implement yaspgrid load balance strategy for P=x^{dim} processors. More...
     
    class  Dune::YaspFixedSizePartitioner< d >
     Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't match the number of processors, the grid should be distributed to, an exception is thrown. More...
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Yasp
     
    \n

    Detailed Description

    \n-

    The YaspIntersection class.

    \n-

    YaspIntersection provides data about intersection with neighboring codim 0 entities.

    \n+

    This file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,25 +2,61 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-yaspgridintersection.hh File Reference\n-The YaspIntersection class. _\bM_\bo_\br_\be_\b._\b._\b.\n+partitioning.hh File Reference\n+This file provides tools to partition YaspGrids. If you want to write your own\n+partitioner, inherit from Yasp::Partitioning and implement the partition()\n+method. You can also browse this file for already available useful\n+partitioners, like Yasp::FixedSizePartitioning. _\bM_\bo_\br_\be_\b._\b._\b.\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:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn provides data about intersection with neighboring\n- codim 0 entities. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n+\u00a0 a base class for the yaspgrid partitioning strategy _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n+\u00a0 Implement yaspgrid load balance strategy for P=x^{dim} processors.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\b _\bd_\b _\b>\n+ Implement partitioner that gets a fixed partitioning from an array If\n+\u00a0 the given partitioning doesn't match the number of processors, the grid\n+ should be distributed to, an exception is thrown. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b<_\b _\bd_\b _\b>\n+\u00a0 a base class for the yaspgrid partitioning strategy _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b<_\b _\bd_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt_\b<_\b _\bd_\b _\b>\n+\u00a0 Implement the default load balance strategy of yaspgrid. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD_\b<_\b _\bd_\b _\b>\n+\u00a0 Implement yaspgrid load balance strategy for P=x^{dim} processors.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br_\b<_\b _\bd_\b _\b>\n+ Implement partitioner that gets a fixed partitioning from an array If\n+\u00a0 the given partitioning doesn't match the number of processors, the grid\n+ should be distributed to, an exception is thrown. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp\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-The YaspIntersection class.\n-YaspIntersection provides data about intersection with neighboring codim 0\n-entities.\n+This file provides tools to partition YaspGrids. If you want to write your own\n+partitioner, inherit from Yasp::Partitioning and implement the partition()\n+method. You can also browse this file for already available useful\n+partitioners, like Yasp::FixedSizePartitioning.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00233_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00233_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridintersection.hh Source File\n+dune-grid: partitioning.hh Source File\n \n \n \n \n \n \n \n@@ -74,401 +74,285 @@\n \n \n
    \n
    \n-
    yaspgridintersection.hh
    \n+
    partitioning.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDINTERSECTION_HH
    \n-
    6#define DUNE_GRID_YASPGRIDINTERSECTION_HH
    \n-
    7
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    20 template<class GridImp>
    \n-
    \n-\n+
    3#ifndef DUNE_GRID_YASPGRID_PARTITIONING_HH
    \n+
    4#define DUNE_GRID_YASPGRID_PARTITIONING_HH
    \n+
    5
    \n+
    13#include<array>
    \n+
    14
    \n+
    15#include<dune/common/math.hh>
    \n+
    16#include <dune/common/deprecated.hh>
    \n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    20
    \n+
    21 namespace Yasp
    \n
    22 {
    \n-
    23 constexpr static int dim = GridImp::dimension;
    \n-
    24 constexpr static int dimworld = GridImp::dimensionworld;
    \n-
    25 typedef typename GridImp::ctype ctype;
    \n-
    26
    \n-
    27 typedef typename GridImp::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
    \n-
    28 typedef typename GridImp::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
    \n-
    29
    \n-
    30 friend class YaspIntersectionIterator<GridImp>;
    \n-
    31
    \n-
    32 public:
    \n-
    33 // types used from grids
    \n-
    34 typedef typename GridImp::YGridLevelIterator YGLI;
    \n-
    35 typedef typename GridImp::YGrid::Iterator I;
    \n-
    36 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    37 typedef typename GridImp::template Codim<1>::Geometry Geometry;
    \n-
    38 typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
    \n-
    39
    \n-
    \n-
    40 void update() {
    \n-
    41
    \n-
    42 // vector with per-direction movements
    \n-
    43 std::array<int,dim> dist{{0}};
    \n-
    44
    \n-
    45 // first move: back to center
    \n-
    46 dist[_dir] = 1 - 2*_face;
    \n-
    47
    \n-
    48 // update face info
    \n-
    49 _dir = _count / 2;
    \n-
    50 _face = _count % 2;
    \n+
    23
    \n+
    37 template<int d>
    \n+
    \n+\n+
    39 {
    \n+
    40 public:
    \n+
    41 using iTupel = std::array<int, d>;
    \n+
    42 virtual ~Partitioning() = default;
    \n+
    43 virtual void partition(const iTupel&, int, iTupel&, int) const = 0;
    \n+
    44 };
    \n+
    \n+
    45
    \n+
    46 template<int d>
    \n+
    \n+\n+
    48 {
    \n+
    49 public:
    \n+
    50 using iTupel = std::array<int, d>;
    \n
    51
    \n-
    52 // second move: to new neighbor
    \n-
    53 dist[_dir] += -1 + 2*_face;
    \n-
    54
    \n-
    55 // move transforming iterator
    \n-
    56 _outside.transformingsubiterator().move(dist);
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-
    62 bool boundary () const
    \n-
    63 {
    \n-
    64 // Coordinate of intersection in its direction
    \n-
    65 int coord = _inside.transformingsubiterator().coord(_dir) + _face;
    \n-
    66 if (_inside.gridlevel()->mg->isPeriodic(_dir))
    \n-
    67 return false;
    \n-
    68 else
    \n-
    69 return coord == 0
    \n-
    70 ||
    \n-
    71 coord == _inside.gridlevel()->mg->levelSize(_inside.gridlevel()->level(),_dir);
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    \n-
    75 bool neighbor () const
    \n-
    76 {
    \n-
    77 // Coordinate of intersection in its direction
    \n-
    78 int coord = _inside.transformingsubiterator().coord(_dir) + _face;
    \n-
    79 return coord > _inside.gridlevel()->overlap[0].dataBegin()->min(_dir)
    \n-
    80 &&
    \n-
    81 coord <= _inside.gridlevel()->overlap[0].dataBegin()->max(_dir);
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    \n-
    85 bool conforming () const
    \n-
    86 {
    \n-
    87 return true;
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    \n-
    92 Entity inside() const
    \n-
    93 {
    \n-
    94 return Entity(_inside);
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    \n-\n-
    99 {
    \n-
    100 return Entity(_outside);
    \n-
    101 }
    \n-
    \n-
    102
    \n-
    \n-\n-
    106 {
    \n-
    107 if(! boundary())
    \n-
    108 DUNE_THROW(GridError, "called boundarySegmentIndex while boundary() == false");
    \n-
    109 // size of local macro grid
    \n-
    110 const std::array<int, dim> & size = _inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->size();
    \n-
    111 const std::array<int, dim> & origin = _inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->origin();
    \n-
    112 std::array<int, dim> sides;
    \n-
    113 {
    \n-
    114 for (int i=0; i<dim; i++)
    \n-
    115 {
    \n-
    116 sides[i] =
    \n-
    117 ((_inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->origin(i)
    \n-
    118 == 0)+
    \n-
    119 (_inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->origin(i) +
    \n-
    120 _inside.gridlevel()->mg->begin()->overlap[0].dataBegin()->size(i)
    \n-
    121 ==
    \n-
    122 _inside.gridlevel()->mg->levelSize(0,i)));
    \n-
    123
    \n-
    124 }
    \n-
    125 }
    \n-
    126 // global position of the cell on macro grid
    \n-
    127 std::array<int, dim> pos = _inside.transformingsubiterator().coord();
    \n-
    128 for(int i=0; i<dim; i++)
    \n-
    129 {
    \n-
    130 pos[i] = pos[i] / (1<<_inside.level());
    \n-
    131 pos[i] = pos[i] - origin[i];
    \n-
    132 }
    \n-
    133 // compute unit-cube-face-sizes
    \n-
    134 std::array<int, dim> fsize;
    \n-
    135 {
    \n-
    136 int vol = 1;
    \n-
    137 for (int k=0; k<dim; k++)
    \n-
    138 vol *= size[k];
    \n-
    139 for (int k=0; k<dim; k++)
    \n-
    140 fsize[k] = vol/size[k];
    \n-
    141 }
    \n-
    142 // compute index in the unit-cube-face
    \n-
    143 int index = 0;
    \n-
    144 {
    \n-
    145 int localoffset = 1;
    \n-
    146 for (int k=dim-1; k>=0; k--)
    \n-
    147 {
    \n-
    148 if (k == _dir) continue;
    \n-
    149 index += (pos[k]) * localoffset;
    \n-
    150 localoffset *= size[k];
    \n-
    151 }
    \n-
    152 }
    \n-
    153 // add unit-cube-face-offsets
    \n-
    154 {
    \n-
    155 for (int k=0; k<_dir; k++)
    \n-
    156 index += sides[k] * fsize[k];
    \n-
    157 // add fsize if we are on the right face and there is a left-face-boundary on this processor
    \n-
    158 index += _face * (sides[_dir]>1) * fsize[_dir];
    \n-
    159 }
    \n-
    160
    \n-
    161 return index;
    \n-
    162 }
    \n+
    \n+
    57 void partition (const iTupel& size, int P, iTupel& dims, int overlap) const final
    \n+
    58 {
    \n+
    59 double opt=1E100;
    \n+
    60 iTupel trydims;
    \n+
    61
    \n+
    62 trydims.fill(-1);
    \n+
    63 dims.fill(-1);
    \n+
    64
    \n+
    65 optimize_dims(d-1,size,P,dims,trydims,opt,overlap);
    \n+
    66 if (dims[0] == -1)
    \n+
    67 DUNE_THROW(Dune::GridError, "Failed to find a suitable partition");
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    70 private:
    \n+
    71 void optimize_dims (int i, const iTupel& size, int P, iTupel& dims, iTupel& trydims, double &opt, int overlap ) const
    \n+
    72 {
    \n+
    73 if (i>0) // test all subdivisions recursively
    \n+
    74 {
    \n+
    75 for (int k=1; k<=P; k++)
    \n+
    76 if (
    \n+
    77 P%k==0 // k devides P
    \n+
    78 and (
    \n+
    79 k == 1 // no neighbors
    \n+
    80 or
    \n+
    81 size[i] / k >= 2*overlap // size sufficient for overlap
    \n+
    82 )
    \n+
    83 )
    \n+
    84 {
    \n+
    85 // P divisible by k
    \n+
    86 trydims[i] = k;
    \n+
    87 optimize_dims(i-1,size,P/k,dims,trydims,opt,overlap);
    \n+
    88 }
    \n+
    89 }
    \n+
    90 else
    \n+
    91 {
    \n+
    92 // found a possible combination
    \n+
    93 if (
    \n+
    94 P == 1 // no neighbors
    \n+
    95 or
    \n+
    96 size[0] / P >= 2*overlap // size sufficient for overlap
    \n+
    97 )
    \n+
    98 trydims[0] = P;
    \n+
    99 else
    \n+
    100 return;
    \n+
    101
    \n+
    102 // check for optimality
    \n+
    103 double m = -1.0;
    \n+
    104
    \n+
    105 for (int k=0; k<d; k++)
    \n+
    106 {
    \n+
    107 double mm=((double)size[k])/((double)trydims[k]);
    \n+
    108 if (fmod((double)size[k],(double)trydims[k])>0.0001) mm*=3;
    \n+
    109 if ( mm > m ) m = mm;
    \n+
    110 }
    \n+
    111 //if (_rank==0) std::cout << "optimize_dims: " << size << " | " << trydims << " norm=" << m << std::endl;
    \n+
    112 if (m<opt)
    \n+
    113 {
    \n+
    114 opt = m;
    \n+
    115 dims = trydims;
    \n+
    116 }
    \n+
    117 }
    \n+
    118 }
    \n+
    119 };
    \n+
    \n+
    120
    \n+
    123 template<int d>
    \n+
    \n+\n+
    125 {
    \n+
    126 public:
    \n+
    127 typedef std::array<int, d> iTupel;
    \n+\n+
    129
    \n+
    \n+
    130 void partition (const iTupel& size, int P, iTupel& dims, int overlap) const final
    \n+
    131 {
    \n+
    132 for (int i=1; i<=P; ++i)
    \n+
    133 if (Dune::power(i, d) == P) {
    \n+
    134 std::fill(dims.begin(), dims.end(),i);
    \n+
    135 return;
    \n+
    136 }
    \n+
    137
    \n+
    138 DUNE_THROW(GridError, "Power partitioning failed: your number of processes needs to be a " << d << "-th power.");
    \n+
    139 }
    \n+
    \n+
    140 };
    \n+
    \n+
    141
    \n+
    146 template<int d>
    \n+
    \n+\n+
    148 {
    \n+
    149 public:
    \n+
    150 FixedSizePartitioning(const std::array<int,d>& dims) : _dims(dims) {}
    \n+
    151
    \n+\n+
    153
    \n+
    \n+
    154 void partition(const std::array<int,d>&, int P, std::array<int,d>& dims, int overlap) const final
    \n+
    155 {
    \n+
    156 int prod = 1;
    \n+
    157 for (int i=0; i<d; i++)
    \n+
    158 prod *= _dims[i];
    \n+
    159 if (P != prod)
    \n+
    160 DUNE_THROW(Dune::Exception,"Your processor number doesn't match your partitioning information");
    \n+
    161 dims = _dims;
    \n+
    162 }
    \n
    \n
    163
    \n-
    \n-
    165 FieldVector<ctype, dimworld> outerNormal (const FieldVector<ctype, dim-1>& /* local */) const
    \n-
    166 {
    \n-
    167 return centerUnitOuterNormal();
    \n-
    168 }
    \n-
    \n-
    169
    \n-
    \n-
    171 FieldVector<ctype, dimworld> unitOuterNormal (const FieldVector<ctype, dim-1>& /* local */) const
    \n-
    172 {
    \n-
    173 return centerUnitOuterNormal();
    \n-
    174 }
    \n-
    \n-
    175
    \n-
    \n-
    177 FieldVector<ctype, dimworld> centerUnitOuterNormal () const
    \n-
    178 {
    \n-
    179 FieldVector<ctype, dimworld> normal(0);
    \n-
    180 normal[_dir] = (_face==0) ? -1.0 : 1.0;
    \n-
    181 return normal;
    \n-
    182 }
    \n-
    \n-
    183
    \n-
    \n-
    187 FieldVector<ctype, dimworld> integrationOuterNormal ([[maybe_unused]] const FieldVector<ctype, dim-1>& local) const
    \n-
    188 {
    \n-
    189 return geometry().volume() * centerUnitOuterNormal();
    \n-
    190 }
    \n-
    \n-
    191
    \n-
    \n-\n-
    196 {
    \n-
    197 // set of dimensions that span the intersection
    \n-
    198 std::bitset<dim> s;
    \n-
    199 s.set();
    \n-
    200 s[_dir] = false;
    \n-
    201
    \n-
    202 // lower-left and upper-right corners
    \n-
    203 Dune::FieldVector<ctype, dim> ll(0.0);
    \n-
    204 Dune::FieldVector<ctype, dim> ur(1.0);
    \n-
    205
    \n-
    206 ll[_dir] = ur[_dir] = (_face==0) ? 0.0 : 1.0;
    \n-
    207
    \n-
    208 return LocalGeometry(LocalGeometryImpl(ll,ur,s));
    \n-
    209 }
    \n-
    \n-
    210
    \n-
    \n-\n-
    215 {
    \n-
    216 // set of dimensions that span the intersection
    \n-
    217 std::bitset<dim> s;
    \n-
    218 s.set();
    \n-
    219 s[_dir] = false;
    \n-
    220
    \n-
    221 // lower-left and upper-right corners
    \n-
    222 Dune::FieldVector<ctype, dim> ll(0.0);
    \n-
    223 Dune::FieldVector<ctype, dim> ur(1.0);
    \n-
    224
    \n-
    225 ll[_dir] = ur[_dir] = (_face==1) ? 0.0 : 1.0;
    \n-
    226
    \n-
    227 return LocalGeometry(LocalGeometryImpl(ll,ur,s));
    \n-
    228 }
    \n-
    \n-
    229
    \n-
    \n-\n-
    233 {
    \n-
    234
    \n-
    235 std::bitset<dim> shift;
    \n-
    236 shift.set();
    \n-
    237 shift[_dir] = false;
    \n-
    238
    \n-
    239 Dune::FieldVector<ctype,dimworld> ll, ur;
    \n-
    240 for (int i=0; i<dimworld; i++)
    \n-
    241 {
    \n-
    242 int coord = _inside.transformingsubiterator().coord(i);
    \n+
    164 private:
    \n+
    165 std::array<int,d> _dims;
    \n+
    166 };
    \n+
    \n+
    167
    \n+
    169 }
    \n+
    170
    \n+
    174 template<int d>
    \n+
    \n+\n+
    176 {
    \n+
    177 public:
    \n+
    178 typedef std::array<int, d> iTupel;
    \n+
    179 [[deprecated("use the new interface of Yasp::Partitioning")]]
    \n+
    180 virtual ~YLoadBalance() {}
    \n+
    \n+
    181 void partition (const iTupel& size, int P, iTupel& dims, int overlap) const final {
    \n+
    182 this->loadbalance(size,P,dims);
    \n+
    183 }
    \n+
    \n+
    184 virtual void loadbalance(const iTupel&, int, iTupel&) const = 0;
    \n+
    185 };
    \n+
    \n+
    186
    \n+
    187DUNE_NO_DEPRECATED_BEGIN
    \n+
    188 template<int d>
    \n+
    \n+\n+
    190 {
    \n+
    191 std::unique_ptr<Yasp::Partitioning<d>> p_;
    \n+
    192 public:
    \n+
    193 typedef std::array<int, d> iTupel;
    \n+
    194 YLoadBalanceForward(std::unique_ptr<Yasp::Partitioning<d>> && p) : p_(std::move(p)) {}
    \n+\n+
    \n+
    196 void loadbalance(const iTupel& size, int P, iTupel& dims) const final {
    \n+
    197 return p_->partition(size,P,dims,1); // assuming the usual overlap of 1
    \n+
    198 }
    \n+
    \n+
    199 };
    \n+
    \n+
    200
    \n+
    204 template<int d>
    \n+
    \n+\n+
    206 {
    \n+
    207 public:
    \n+
    \n+\n+
    209 YLoadBalanceForward<d>(std::make_unique<Yasp::DefaultPartitioning<d>>())
    \n+
    210 {}
    \n+
    \n+
    211 };
    \n+
    \n+
    212
    \n+
    216 template<int d>
    \n+
    \n+\n+
    218 {
    \n+
    219 public:
    \n+
    220 typedef std::array<int, d> iTupel;
    \n+
    \n+\n+
    222 YLoadBalanceForward<d>(std::make_unique<Yasp::PowerDPartitioning<d>>())
    \n+
    223 {}
    \n+
    \n+
    224 };
    \n+
    \n+
    225
    \n+
    231 template<int d>
    \n+
    \n+\n+
    233 {
    \n+
    234 public:
    \n+
    235 typedef std::array<int, d> iTupel;
    \n+
    \n+
    236 YaspFixedSizePartitioner(const std::array<int,d>& dims) :
    \n+
    237 YLoadBalanceForward<d>(std::make_unique<Yasp::FixedSizePartitioning<d>>(dims))
    \n+
    238 {}
    \n+
    \n+
    239 };
    \n+
    \n+
    240
    \n+
    241DUNE_NO_DEPRECATED_END
    \n+
    242}
    \n
    243
    \n-
    244 if ((i == _dir) and (_face))
    \n-
    245 coord++;
    \n-
    246
    \n-
    247 ll[i] = _inside.transformingsubiterator().coordCont()->coordinate(i,coord);
    \n-
    248 if (i != _dir)
    \n-
    249 coord++;
    \n-
    250 ur[i] = _inside.transformingsubiterator().coordCont()->coordinate(i,coord);
    \n-
    251
    \n-
    252 // If on periodic overlap, transform coordinates by domain size
    \n-
    253 if (_inside.gridlevel()->mg->isPeriodic(i)) {
    \n-
    254 int coordPeriodic = _inside.transformingsubiterator().coord(i);
    \n-
    255 if (coordPeriodic < 0) {
    \n-
    256 auto size = _inside.gridlevel()->mg->domainSize()[i];
    \n-
    257 ll[i] += size;
    \n-
    258 ur[i] += size;
    \n-
    259 } else if (coordPeriodic + 1 > _inside.gridlevel()->mg->levelSize(_inside.gridlevel()->level(),i)) {
    \n-
    260 auto size = _inside.gridlevel()->mg->domainSize()[i];
    \n-
    261 ll[i] -= size;
    \n-
    262 ur[i] -= size;
    \n-
    263 }
    \n-
    264 }
    \n-
    265 }
    \n-
    266
    \n-
    267 GeometryImpl _is_global(ll,ur,shift);
    \n-
    268 return Geometry( _is_global );
    \n-
    269 }
    \n-
    \n-
    270
    \n-
    \n-
    272 GeometryType type () const
    \n-
    273 {
    \n-
    274 return GeometryTypes::cube(dim-1);
    \n-
    275 }
    \n-
    \n-
    276
    \n-
    \n-
    278 int indexInInside () const
    \n-
    279 {
    \n-
    280 return _count;
    \n-
    281 }
    \n-
    \n-
    282
    \n-
    \n-
    284 int indexInOutside () const
    \n-
    285 {
    \n-
    286 // flip the last bit
    \n-
    287 return _count^1;
    \n-
    288 }
    \n-
    \n-
    289
    \n-
    \n-\n-
    291 : _count(~std::uint8_t(0)) // Use as marker for invalid intersection
    \n-
    292 , _dir(0)
    \n-
    293 , _face(0)
    \n-
    294 {}
    \n-
    \n-
    295
    \n-
    \n-
    297 YaspIntersection (const YaspEntity<0,dim,GridImp>& myself, bool toend) :
    \n-
    298 _inside(myself.gridlevel(),
    \n-
    299 myself.transformingsubiterator()),
    \n-
    300 _outside(myself.gridlevel(),
    \n-
    301 myself.transformingsubiterator()),
    \n-
    302 // initialize to first neighbor
    \n-
    303 _count(0),
    \n-
    304 _dir(0),
    \n-
    305 _face(0)
    \n-
    306 {
    \n-
    307 if (toend)
    \n-
    308 {
    \n-
    309 // initialize end iterator
    \n-
    310 _count = 2*dim;
    \n-
    311 return;
    \n-
    312 }
    \n-
    313 _count = 0;
    \n-
    314
    \n-
    315 // move transforming iterator
    \n-
    316 _outside.transformingsubiterator().move(_dir,-1);
    \n-
    317 }
    \n-
    \n-
    318
    \n-
    320
    \n-
    \n-
    322 void assign (const YaspIntersection& it)
    \n-
    323 {
    \n-
    324 *this = it;
    \n-
    325 }
    \n-
    \n-
    326
    \n-
    \n-
    327 bool equals(const YaspIntersection& other) const
    \n-
    328 {
    \n-
    329 // compare counts first -- that's cheaper if the test fails
    \n-
    330 return _count == other._count && _inside.equals(other._inside);
    \n-
    331 }
    \n-
    \n-
    332
    \n-
    333 private:
    \n-
    334 /* The two entities that make up the intersection */
    \n-\n-\n-
    337 /* current position */
    \n-
    338 std::uint8_t _count;
    \n-
    339 std::uint8_t _dir;
    \n-
    340 std::uint8_t _face;
    \n-
    341 };
    \n-
    \n-
    342} // namespace Dune
    \n-
    343
    \n-
    344#endif // DUNE_GRID_YASPGRIDINTERSECTION_HH
    \n+
    244#endif
    \n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    Definition yaspgridentity.hh:268
    \n-
    int level() const
    level of this element
    Definition yaspgridentity.hh:282
    \n-
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:420
    \n-
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:419
    \n-
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:347
    \n-
    YaspIntersectionIterator enables iteration over intersections with neighboring codim 0 entities.
    Definition yaspgridintersectioniterator.hh:22
    \n-
    YaspIntersection provides data about intersection with neighboring codim 0 entities.
    Definition yaspgridintersection.hh:22
    \n-
    FieldVector< ctype, dimworld > centerUnitOuterNormal() const
    return unit outer normal at center of intersection geometry
    Definition yaspgridintersection.hh:177
    \n-
    bool equals(const YaspIntersection &other) const
    Definition yaspgridintersection.hh:327
    \n-
    Entity inside() const
    Definition yaspgridintersection.hh:92
    \n-
    Geometry geometry() const
    Definition yaspgridintersection.hh:232
    \n-
    GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
    Definition yaspgridintersection.hh:38
    \n-
    YaspIntersection()
    Definition yaspgridintersection.hh:290
    \n-
    int indexInOutside() const
    local index of codim 1 entity in neighbor where intersection is contained in
    Definition yaspgridintersection.hh:284
    \n-
    LocalGeometry geometryInInside() const
    Definition yaspgridintersection.hh:195
    \n-
    int boundarySegmentIndex() const
    Definition yaspgridintersection.hh:105
    \n-
    GridImp::template Codim< 1 >::Geometry Geometry
    Definition yaspgridintersection.hh:37
    \n-
    bool conforming() const
    Yasp is always conform.
    Definition yaspgridintersection.hh:85
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition yaspgridintersection.hh:36
    \n-
    bool neighbor() const
    return true if neighbor across intersection exists in this processor
    Definition yaspgridintersection.hh:75
    \n-
    FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &) const
    return unit outer normal, this should be dependent on local coordinates for higher order boundary
    Definition yaspgridintersection.hh:165
    \n-
    YaspIntersection(const YaspEntity< 0, dim, GridImp > &myself, bool toend)
    make intersection iterator from entity, initialize to first neighbor
    Definition yaspgridintersection.hh:297
    \n-
    GeometryType type() const
    obtain the type of reference element for this intersection
    Definition yaspgridintersection.hh:272
    \n-
    void assign(const YaspIntersection &it)
    copy constructor \u2013 use default
    Definition yaspgridintersection.hh:322
    \n-
    int indexInInside() const
    local index of codim 1 entity in self where intersection is contained in
    Definition yaspgridintersection.hh:278
    \n-
    FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
    Definition yaspgridintersection.hh:187
    \n-
    GridImp::YGrid::Iterator I
    Definition yaspgridintersection.hh:35
    \n-
    LocalGeometry geometryInOutside() const
    Definition yaspgridintersection.hh:214
    \n-
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridintersection.hh:34
    \n-
    Entity outside() const
    return Entity on the outside of this intersection
    Definition yaspgridintersection.hh:98
    \n-
    bool boundary() const
    Definition yaspgridintersection.hh:62
    \n-
    FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &) const
    return unit outer normal, this should be dependent on local coordinates for higher order boundary
    Definition yaspgridintersection.hh:171
    \n-
    void update()
    Definition yaspgridintersection.hh:40
    \n+
    a base class for the yaspgrid partitioning strategy
    Definition partitioning.hh:39
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:41
    \n+
    virtual ~Partitioning()=default
    \n+
    virtual void partition(const iTupel &, int, iTupel &, int) const =0
    \n+
    Definition partitioning.hh:48
    \n+
    void partition(const iTupel &size, int P, iTupel &dims, int overlap) const final
    Distribute a structured grid across a set of processors.
    Definition partitioning.hh:57
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:50
    \n+
    Implement yaspgrid load balance strategy for P=x^{dim} processors.
    Definition partitioning.hh:125
    \n+
    virtual ~PowerDPartitioning()
    Definition partitioning.hh:128
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:127
    \n+
    void partition(const iTupel &size, int P, iTupel &dims, int overlap) const final
    Definition partitioning.hh:130
    \n+
    Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't ...
    Definition partitioning.hh:148
    \n+
    void partition(const std::array< int, d > &, int P, std::array< int, d > &dims, int overlap) const final
    Definition partitioning.hh:154
    \n+
    FixedSizePartitioning(const std::array< int, d > &dims)
    Definition partitioning.hh:150
    \n+
    virtual ~FixedSizePartitioning()
    Definition partitioning.hh:152
    \n+
    a base class for the yaspgrid partitioning strategy
    Definition partitioning.hh:176
    \n+
    void partition(const iTupel &size, int P, iTupel &dims, int overlap) const final
    Definition partitioning.hh:181
    \n+
    virtual void loadbalance(const iTupel &, int, iTupel &) const =0
    \n+
    virtual ~YLoadBalance()
    Definition partitioning.hh:180
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:178
    \n+
    Definition partitioning.hh:190
    \n+
    void loadbalance(const iTupel &size, int P, iTupel &dims) const final
    Definition partitioning.hh:196
    \n+
    YLoadBalanceForward(std::unique_ptr< Yasp::Partitioning< d > > &&p)
    Definition partitioning.hh:194
    \n+
    virtual ~YLoadBalanceForward()
    Definition partitioning.hh:195
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:193
    \n+
    Implement the default load balance strategy of yaspgrid.
    Definition partitioning.hh:206
    \n+
    YLoadBalanceDefault()
    Definition partitioning.hh:208
    \n+
    Implement yaspgrid load balance strategy for P=x^{dim} processors.
    Definition partitioning.hh:218
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:220
    \n+
    YLoadBalancePowerD()
    Definition partitioning.hh:221
    \n+
    Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't ...
    Definition partitioning.hh:233
    \n+
    YaspFixedSizePartitioner(const std::array< int, d > &dims)
    Definition partitioning.hh:236
    \n+
    std::array< int, d > iTupel
    Definition partitioning.hh:235
    \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,453 +1,329 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridintersection.hh\n+partitioning.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDINTERSECTION_HH\n-6#define DUNE_GRID_YASPGRIDINTERSECTION_HH\n-7\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-20 template\n-_\b2_\b1 class _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+3#ifndef DUNE_GRID_YASPGRID_PARTITIONING_HH\n+4#define DUNE_GRID_YASPGRID_PARTITIONING_HH\n+5\n+13#include\n+14\n+15#include\n+16#include \n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n+20\n+21 namespace Yasp\n 22 {\n-23 constexpr static int dim = GridImp::dimension;\n-24 constexpr static int dimworld = GridImp::dimensionworld;\n-25 typedef typename GridImp::ctype ctype;\n-26\n-27 typedef typename GridImp::Traits::template Codim< 1 >::GeometryImpl\n-GeometryImpl;\n-_\b2_\b8 typedef typename GridImp::Traits::template Codim< 1 >::LocalGeometryImpl\n-LocalGeometryImpl;\n-29\n-30 friend class _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-31\n-32 public:\n-33 // types used from grids\n-_\b3_\b4 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n-_\b3_\b5 typedef typename GridImp::YGrid::Iterator _\bI;\n-_\b3_\b6 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b3_\b7 typedef typename GridImp::template Codim<1>::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b3_\b8 typedef typename GridImp::template Codim<1>::LocalGeometry _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-39\n-_\b4_\b0 void _\bu_\bp_\bd_\ba_\bt_\be() {\n-41\n-42 // vector with per-direction movements\n-43 std::array dist{{0}};\n-44\n-45 // first move: back to center\n-46 dist[_dir] = 1 - 2*_face;\n-47\n-48 // update face info\n-49 _dir = _count / 2;\n-50 _face = _count % 2;\n+23\n+37 template\n+_\b3_\b8 class _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+39 {\n+40 public:\n+_\b4_\b1 using _\bi_\bT_\bu_\bp_\be_\bl = std::array;\n+_\b4_\b2 virtual _\b~_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg() = default;\n+_\b4_\b3 virtual void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn(const _\bi_\bT_\bu_\bp_\be_\bl&, int, _\bi_\bT_\bu_\bp_\be_\bl&, int) const = 0;\n+44 };\n+45\n+46 template\n+_\b4_\b7 class _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg : public _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+48 {\n+49 public:\n+_\b5_\b0 using _\bi_\bT_\bu_\bp_\be_\bl = std::array;\n 51\n-52 // second move: to new neighbor\n-53 dist[_dir] += -1 + 2*_face;\n-54\n-55 // move transforming iterator\n-56 _outside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().move(dist);\n-57 }\n-58\n-_\b6_\b2 bool _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const\n-63 {\n-64 // Coordinate of intersection in its direction\n-65 int coord = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(_dir) + _face;\n-66 if (_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->isPeriodic(_dir))\n-67 return false;\n-68 else\n-69 return coord == 0\n-70 ||\n-71 coord == _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize(_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->level\n-(),_dir);\n-72 }\n-73\n-_\b7_\b5 bool _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const\n-76 {\n-77 // Coordinate of intersection in its direction\n-78 int coord = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(_dir) + _face;\n-79 return coord > _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->overlap[0].dataBegin()->min(_dir)\n-80 &&\n-81 coord <= _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->overlap[0].dataBegin()->max(_dir);\n-82 }\n-83\n-_\b8_\b5 bool _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg () const\n-86 {\n-87 return true;\n+_\b5_\b7 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims, int overlap) const\n+final\n+58 {\n+59 double opt=1E100;\n+60 _\bi_\bT_\bu_\bp_\be_\bl trydims;\n+61\n+62 trydims.fill(-1);\n+63 dims.fill(-1);\n+64\n+65 optimize_dims(d-1,size,P,dims,trydims,opt,overlap);\n+66 if (dims[0] == -1)\n+67 DUNE_THROW(_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Failed to find a suitable partition\");\n+68 }\n+69\n+70 private:\n+71 void optimize_dims (int i, const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims, _\bi_\bT_\bu_\bp_\be_\bl&\n+trydims, double &opt, int overlap ) const\n+72 {\n+73 if (i>0) // test all subdivisions recursively\n+74 {\n+75 for (int k=1; k<=P; k++)\n+76 if (\n+77 P%k==0 // k devides P\n+78 and (\n+79 k == 1 // no neighbors\n+80 or\n+81 size[i] / k >= 2*overlap // size sufficient for overlap\n+82 )\n+83 )\n+84 {\n+85 // P divisible by k\n+86 trydims[i] = k;\n+87 optimize_dims(i-1,size,P/k,dims,trydims,opt,overlap);\n 88 }\n-89\n-_\b9_\b2 _\bE_\bn_\bt_\bi_\bt_\by _\bi_\bn_\bs_\bi_\bd_\be() const\n-93 {\n-94 return _\bE_\bn_\bt_\bi_\bt_\by(_inside);\n-95 }\n-96\n-_\b9_\b8 _\bE_\bn_\bt_\bi_\bt_\by _\bo_\bu_\bt_\bs_\bi_\bd_\be() const\n-99 {\n-100 return _\bE_\bn_\bt_\bi_\bt_\by(_outside);\n-101 }\n-102\n-_\b1_\b0_\b5 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() const\n+89 }\n+90 else\n+91 {\n+92 // found a possible combination\n+93 if (\n+94 P == 1 // no neighbors\n+95 or\n+96 size[0] / P >= 2*overlap // size sufficient for overlap\n+97 )\n+98 trydims[0] = P;\n+99 else\n+100 return;\n+101\n+102 // check for optimality\n+103 double m = -1.0;\n+104\n+105 for (int k=0; k & size = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()-\n->overlap[0].dataBegin()->size();\n-111 const std::array & origin = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()-\n->overlap[0].dataBegin()->origin();\n-112 std::array sides;\n+107 double mm=((double)size[k])/((double)trydims[k]);\n+108 if (fmod((double)size[k],(double)trydims[k])>0.0001) mm*=3;\n+109 if ( mm > m ) m = mm;\n+110 }\n+111 //if (_rank==0) std::cout << \"optimize_dims: \" << size << \" | \" << trydims\n+<< \" norm=\" << m << std::endl;\n+112 if (mmg->begin()->overlap[0].dataBegin()->origin(i)\n-118 == 0)+\n-119 (_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()->overlap[0].dataBegin()->origin(i) +\n-120 _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->begin()->overlap[0].dataBegin()->size(i)\n-121 ==\n-122 _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize(0,i)));\n-123\n-124 }\n-125 }\n-126 // global position of the cell on macro grid\n-127 std::array pos = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord();\n-128 for(int i=0; i fsize;\n-135 {\n-136 int vol = 1;\n-137 for (int k=0; k=0; k--)\n-147 {\n-148 if (k == _dir) continue;\n-149 index += (pos[k]) * localoffset;\n-150 localoffset *= size[k];\n-151 }\n-152 }\n-153 // add unit-cube-face-offsets\n-154 {\n-155 for (int k=0; k<_dir; k++)\n-156 index += sides[k] * fsize[k];\n-157 // add fsize if we are on the right face and there is a left-face-boundary\n-on this processor\n-158 index += _face * (sides[_dir]>1) * fsize[_dir];\n-159 }\n-160\n-161 return index;\n+114 opt = m;\n+115 dims = trydims;\n+116 }\n+117 }\n+118 }\n+119 };\n+120\n+123 template\n+_\b1_\b2_\b4 class _\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg : public _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+125 {\n+126 public:\n+_\b1_\b2_\b7 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n+_\b1_\b2_\b8 virtual _\b~_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg() {}\n+129\n+_\b1_\b3_\b0 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims, int overlap) const\n+final\n+131 {\n+132 for (int i=1; i<=P; ++i)\n+133 if (Dune::power(i, d) == P) {\n+134 std::fill(dims.begin(), dims.end(),i);\n+135 return;\n+136 }\n+137\n+138 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Power partitioning failed: your number of processes\n+needs to be a \" << d << \"-th power.\");\n+139 }\n+140 };\n+141\n+146 template\n+_\b1_\b4_\b7 class _\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg : public _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+148 {\n+149 public:\n+_\b1_\b5_\b0 _\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg(const std::array& dims) : _dims(dims) {}\n+151\n+_\b1_\b5_\b2 virtual _\b~_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg() {}\n+153\n+_\b1_\b5_\b4 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn(const std::array&, int P, std::array& dims,\n+int overlap) const final\n+155 {\n+156 int prod = 1;\n+157 for (int i=0; i _\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector&\n-/* local */) const\n-166 {\n-167 return _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl();\n-168 }\n-169\n-_\b1_\b7_\b1 FieldVector _\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector& /* local */) const\n-172 {\n-173 return _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl();\n-174 }\n-175\n-_\b1_\b7_\b7 FieldVector _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const\n-178 {\n-179 FieldVector normal(0);\n-180 normal[_dir] = (_face==0) ? -1.0 : 1.0;\n-181 return normal;\n-182 }\n-183\n-_\b1_\b8_\b7 FieldVector _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl ([[maybe_unused]] const\n-FieldVector& local) const\n-188 {\n-189 return _\bg_\be_\bo_\bm_\be_\bt_\br_\by().volume() * _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl();\n-190 }\n-191\n-_\b1_\b9_\b5 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n-196 {\n-197 // set of dimensions that span the intersection\n-198 std::bitset s;\n-199 s.set();\n-200 s[_dir] = false;\n-201\n-202 // lower-left and upper-right corners\n-203 Dune::FieldVector ll(0.0);\n-204 Dune::FieldVector ur(1.0);\n-205\n-206 ll[_dir] = ur[_dir] = (_face==0) ? 0.0 : 1.0;\n-207\n-208 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by(LocalGeometryImpl(ll,ur,s));\n-209 }\n-210\n-_\b2_\b1_\b4 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n-215 {\n-216 // set of dimensions that span the intersection\n-217 std::bitset s;\n-218 s.set();\n-219 s[_dir] = false;\n-220\n-221 // lower-left and upper-right corners\n-222 Dune::FieldVector ll(0.0);\n-223 Dune::FieldVector ur(1.0);\n-224\n-225 ll[_dir] = ur[_dir] = (_face==1) ? 0.0 : 1.0;\n-226\n-227 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by(LocalGeometryImpl(ll,ur,s));\n-228 }\n-229\n-_\b2_\b3_\b2 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+164 private:\n+165 std::array _dims;\n+166 };\n+167\n+169 }\n+170\n+174 template\n+_\b1_\b7_\b5 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be : public _\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+176 {\n+177 public:\n+_\b1_\b7_\b8 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n+179 [[deprecated(\"use the new interface of Yasp::Partitioning\")]]\n+_\b1_\b8_\b0 virtual _\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be() {}\n+_\b1_\b8_\b1 void _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims, int overlap) const\n+final {\n+182 this->_\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be(size,P,dims);\n+183 }\n+_\b1_\b8_\b4 virtual void _\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be(const _\bi_\bT_\bu_\bp_\be_\bl&, int, _\bi_\bT_\bu_\bp_\be_\bl&) const = 0;\n+185 };\n+186\n+187DUNE_NO_DEPRECATED_BEGIN\n+188 template\n+_\b1_\b8_\b9 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n+190 {\n+191 std::unique_ptr> p_;\n+192 public:\n+_\b1_\b9_\b3 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n+_\b1_\b9_\b4 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(std::unique_ptr<_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b<_\bd_\b>> && p) : p_(_\bs_\bt_\bd::\n+move(p)) {}\n+_\b1_\b9_\b5 virtual _\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd() {}\n+_\b1_\b9_\b6 void _\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be(const _\bi_\bT_\bu_\bp_\be_\bl& size, int P, _\bi_\bT_\bu_\bp_\be_\bl& dims) const final {\n+197 return p_->partition(size,P,dims,1); // assuming the usual overlap of 1\n+198 }\n+199 };\n+200\n+204 template\n+_\b2_\b0_\b5 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n+206 {\n+207 public:\n+_\b2_\b0_\b8 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt() :\n+209 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(_\bs_\bt_\bd::make_unique>())\n+210 {}\n+211 };\n+212\n+216 template\n+_\b2_\b1_\b7 class _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n+218 {\n+219 public:\n+_\b2_\b2_\b0 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n+_\b2_\b2_\b1 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD() :\n+222 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(_\bs_\bt_\bd::make_unique>())\n+223 {}\n+224 };\n+225\n+231 template\n+_\b2_\b3_\b2 class _\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br : public _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n 233 {\n-234\n-235 std::bitset shift;\n-236 shift.set();\n-237 shift[_dir] = false;\n-238\n-239 Dune::FieldVector ll, ur;\n-240 for (int i=0; i _\bi_\bT_\bu_\bp_\be_\bl;\n+_\b2_\b3_\b6 _\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br(const std::array& dims) :\n+237 _\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd(_\bs_\bt_\bd::make_unique>\n+(dims))\n+238 {}\n+239 };\n+240\n+241DUNE_NO_DEPRECATED_END\n+242}\n 243\n-244 if ((i == _dir) and (_face))\n-245 coord++;\n-246\n-247 ll[i] = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coordCont()->coordinate(i,coord);\n-248 if (i != _dir)\n-249 coord++;\n-250 ur[i] = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coordCont()->coordinate(i,coord);\n-251\n-252 // If on periodic overlap, transform coordinates by domain size\n-253 if (_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->isPeriodic(i)) {\n-254 int coordPeriodic = _inside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(i);\n-255 if (coordPeriodic < 0) {\n-256 auto size = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->domainSize()[i];\n-257 ll[i] += size;\n-258 ur[i] += size;\n-259 } else if (coordPeriodic + 1 > _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize\n-(_inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->level(),i)) {\n-260 auto size = _inside._\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->domainSize()[i];\n-261 ll[i] -= size;\n-262 ur[i] -= size;\n-263 }\n-264 }\n-265 }\n-266\n-267 GeometryImpl _is_global(ll,ur,shift);\n-268 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _is_global );\n-269 }\n-270\n-_\b2_\b7_\b2 GeometryType _\bt_\by_\bp_\be () const\n-273 {\n-274 return GeometryTypes::cube(dim-1);\n-275 }\n-276\n-_\b2_\b7_\b8 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n-279 {\n-280 return _count;\n-281 }\n-282\n-_\b2_\b8_\b4 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n-285 {\n-286 // flip the last bit\n-287 return _count^1;\n-288 }\n-289\n-_\b2_\b9_\b0 _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn()\n-291 : _count(~_\bs_\bt_\bd::uint8_t(0)) // Use as marker for invalid intersection\n-292 , _dir(0)\n-293 , _face(0)\n-294 {}\n-295\n-_\b2_\b9_\b7 _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>& myself, bool toend) :\n-298 _inside(myself.gridlevel(),\n-299 myself.transformingsubiterator()),\n-300 _outside(myself.gridlevel(),\n-301 myself.transformingsubiterator()),\n-302 // initialize to first neighbor\n-303 _count(0),\n-304 _dir(0),\n-305 _face(0)\n-306 {\n-307 if (toend)\n-308 {\n-309 // initialize end iterator\n-310 _count = 2*dim;\n-311 return;\n-312 }\n-313 _count = 0;\n-314\n-315 // move transforming iterator\n-316 _outside._\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().move(_dir,-1);\n-317 }\n-318\n-320\n-_\b3_\b2_\b2 void _\ba_\bs_\bs_\bi_\bg_\bn (const _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& it)\n-323 {\n-324 *this = it;\n-325 }\n-326\n-_\b3_\b2_\b7 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& other) const\n-328 {\n-329 // compare counts first -- that's cheaper if the test fails\n-330 return _count == other._count && _inside._\be_\bq_\bu_\ba_\bl_\bs(other._inside);\n-331 }\n-332\n-333 private:\n-334 /* The two entities that make up the intersection */\n-335 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _inside;\n-336 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _outside;\n-337 /* current position */\n-338 std::uint8_t _count;\n-339 std::uint8_t _dir;\n-340 std::uint8_t _face;\n-341 };\n-342} // namespace Dune\n-343\n-344#endif // DUNE_GRID_YASPGRIDINTERSECTION_HH\n+244#endif\n _\bs_\bt_\bd\n STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n Base class for exceptions in Dune grid modules.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-level of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:282\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-const YGLI & gridlevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:420\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-const I & transformingsubiterator() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:419\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspEntity &e) const\n-Return true when two iterators over the same grid are equal (!).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:347\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspIntersectionIterator enables iteration over intersections with neighboring\n-codim 0 entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersectioniterator.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-YaspIntersection provides data about intersection with neighboring codim 0\n-entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > centerUnitOuterNormal() const\n-return unit outer normal at center of intersection geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspIntersection &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:327\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n-Entity inside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 1 >::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-YaspIntersection()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:290\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-int indexInOutside() const\n-local index of codim 1 entity in neighbor where intersection is contained in\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:284\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-LocalGeometry geometryInInside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-int boundarySegmentIndex() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 1 >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-bool conforming() const\n-Yasp is always conform.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-bool neighbor() const\n-return true if neighbor across intersection exists in this processor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &)\n-const\n-return unit outer normal, this should be dependent on local coordinates for\n-higher order boundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-YaspIntersection(const YaspEntity< 0, dim, GridImp > &myself, bool toend)\n-make intersection iterator from entity, initialize to first neighbor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:297\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-obtain the type of reference element for this intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:272\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const YaspIntersection &it)\n-copy constructor \u00e2\u0080\u0093 use default\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:322\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-int indexInInside() const\n-local index of codim 1 entity in self where intersection is contained in\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:278\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype,\n-dim-1 > &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI\n-GridImp::YGrid::Iterator I\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-LocalGeometry geometryInOutside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bY_\bG_\bL_\bI\n-GridImp::YGridLevelIterator YGLI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n-Entity outside() const\n-return Entity on the outside of this intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool boundary() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-\n-1 > &) const\n-return unit outer normal, this should be dependent on local coordinates for\n-higher order boundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersection.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+a base class for the yaspgrid partitioning strategy\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\b~_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+virtual ~Partitioning()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+virtual void partition(const iTupel &, int, iTupel &, int) const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+void partition(const iTupel &size, int P, iTupel &dims, int overlap) const\n+final\n+Distribute a structured grid across a set of processors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+Implement yaspgrid load balance strategy for P=x^{dim} processors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\b~_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+virtual ~PowerDPartitioning()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bP_\bo_\bw_\be_\br_\bD_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+void partition(const iTupel &size, int P, iTupel &dims, int overlap) const\n+final\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+Implement partitioner that gets a fixed partitioning from an array If the given\n+partitioning doesn't ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+void partition(const std::array< int, d > &, int P, std::array< int, d > &dims,\n+int overlap) const final\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+FixedSizePartitioning(const std::array< int, d > &dims)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg_\b:_\b:_\b~_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bi_\bn_\bg\n+virtual ~FixedSizePartitioning()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:152\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n+a base class for the yaspgrid partitioning strategy\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+void partition(const iTupel &size, int P, iTupel &dims, int overlap) const\n+final\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be\n+virtual void loadbalance(const iTupel &, int, iTupel &) const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n+virtual ~YLoadBalance()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:178\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:190\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\bl_\bo_\ba_\bd_\bb_\ba_\bl_\ba_\bn_\bc_\be\n+void loadbalance(const iTupel &size, int P, iTupel &dims) const final\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n+YLoadBalanceForward(std::unique_ptr< Yasp::Partitioning< d > > &&p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\b~_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd\n+virtual ~YLoadBalanceForward()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bF_\bo_\br_\bw_\ba_\br_\bd_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt\n+Implement the default load balance strategy of yaspgrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:206\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bD_\be_\bf_\ba_\bu_\bl_\bt\n+YLoadBalanceDefault()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:208\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD\n+Implement yaspgrid load balance strategy for P=x^{dim} processors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD_\b:_\b:_\bY_\bL_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be_\bP_\bo_\bw_\be_\br_\bD\n+YLoadBalancePowerD()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:221\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br\n+Implement partitioner that gets a fixed partitioning from an array If the given\n+partitioning doesn't ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:233\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br\n+YaspFixedSizePartitioner(const std::array< int, d > &dims)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bF_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\be_\br_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+std::array< int, d > iTupel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitioning.hh:235\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00236.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00236.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryprojection.hh File Reference\n+dune-grid: mcmgmapper.hh File Reference\n \n \n \n \n \n \n \n@@ -71,46 +71,79 @@\n \n
    \n \n
    \n \n-
    boundaryprojection.hh File Reference
    \n+Namespaces |\n+Typedefs |\n+Functions
    \n+
    mcmgmapper.hh File Reference
    \n \n
    \n-
    #include <cmath>
    \n-#include <memory>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/multilineargeometry.hh>
    \n-#include <dune/grid/common/boundarysegment.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n-#include <dune/grid/io/file/gmshreader.hh>
    \n+\n+

    Mapper for multiple codim and multiple geometry types. \n+More...

    \n+
    #include <functional>
    \n+#include <iostream>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/rangeutilities.hh>
    \n+#include <dune/geometry/dimension.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/typeindex.hh>
    \n+#include "mapper.hh"
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::DuneBoundaryProjection< dimworld >
     Interface class for vertex projection at the boundary. More...
     
    class  Dune::BoundaryProjectionWrapper< dimworld >
    class  Dune::MultipleCodimMultipleGeomTypeMapper< GV >
     Implementation class for a multiple codim and multiple geometry type mapper. More...
     
    class  Dune::BoundarySegmentWrapper< dim, dimworld >
    class  Dune::LeafMultipleCodimMultipleGeomTypeMapper< G >
     Multiple codim and multiple geometry type mapper for leaf entities. More...
     
    struct  Dune::CircleBoundaryProjection< dimworld >
    class  Dune::LevelMultipleCodimMultipleGeomTypeMapper< G >
     Multiple codim and multiple geometry type mapper for entities of one level. More...
     
    \n \n \n \n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n+\n+\n+\n+\n+

    \n+Typedefs

    using Dune::MCMGLayout = std::function< size_t(GeometryType, int)>
     layout function for MultipleCodimMultipleGeomTypeMapper
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<int codim>
    MCMGLayout Dune::mcmgLayout (Codim< codim >)
     layout for entities of codimension codim
     
    template<int dim>
    MCMGLayout Dune::mcmgLayout (Dim< dim >)
     layout for entities of dimension dim
     
    MCMGLayout Dune::mcmgElementLayout ()
     layout for elements (codim-0 entities)
     
    MCMGLayout Dune::mcmgVertexLayout ()
     layout for vertices (dim-0 entities)
     
    \n-
    \n+

    Detailed Description

    \n+

    Mapper for multiple codim and multiple geometry types.

    \n+
    Author
    Peter Bastian
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,62 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-boundaryprojection.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\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 | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+mcmgmapper.hh File Reference\n+Mapper for multiple codim and multiple geometry types. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \"_\bm_\ba_\bp_\bp_\be_\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:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n-\u00a0 Interface class for vertex projection at the boundary. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\bV_\b _\b>\n+\u00a0 Implementation class for a multiple codim and multiple geometry type\n+ mapper. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b _\b>\n+\u00a0 Multiple codim and multiple geometry type mapper for leaf entities.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b _\b>\n+\u00a0 Multiple codim and multiple geometry type mapper for entities of one\n+ level. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt = std::function< size_t(GeometryType, int)>\n+\u00a0 layout function for _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt (Codim< codim >)\n+\u00a0 layout for entities of codimension codim\n+\u00a0\n+template\n+_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt (Dim< dim >)\n+\u00a0 layout for entities of dimension dim\n+\u00a0\n+_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt ()\n+\u00a0 layout for elements (codim-0 entities)\n+\u00a0\n+_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt ()\n+\u00a0 layout for vertices (dim-0 entities)\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+Mapper for multiple codim and multiple geometry types.\n+ Author\n+ Peter Bastian\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00236_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00236_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryprojection.hh Source File\n+dune-grid: mcmgmapper.hh Source File\n \n \n \n \n \n \n \n@@ -74,346 +74,384 @@\n \n
    \n \n
    \n \n
    \n-
    boundaryprojection.hh
    \n+
    mcmgmapper.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH
    \n-
    6#define DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH
    \n-
    7
    \n-
    8//- system includes
    \n-
    9#include <cmath>
    \n-
    10#include <memory>
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_COMMON_MCMGMAPPER_HH
    \n+
    7#define DUNE_GRID_COMMON_MCMGMAPPER_HH
    \n+
    8
    \n+
    9#include <functional>
    \n+
    10#include <iostream>
    \n
    11
    \n-
    12//- Dune includes
    \n-
    13#include <dune/common/fvector.hh>
    \n-
    14
    \n-
    15#include <dune/geometry/multilineargeometry.hh>
    \n-
    16
    \n-\n-\n-\n+
    12#include <dune/common/exceptions.hh>
    \n+
    13#include <dune/common/rangeutilities.hh>
    \n+
    14#include <dune/geometry/dimension.hh>
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16#include <dune/geometry/type.hh>
    \n+
    17#include <dune/geometry/typeindex.hh>
    \n+
    18
    \n+
    19#include "mapper.hh"
    \n
    20
    \n-
    21namespace Dune
    \n-
    22{
    \n-
    25 template <int dimworld>
    \n-
    26 struct DuneBoundaryProjection;
    \n-
    27
    \n-
    30 template <int dimworld>
    \n-
    \n-\n-
    32 : public BoundarySegmentBackupRestore< DuneBoundaryProjection< dimworld > >
    \n-
    33 {
    \n-\n-\n-
    36 typedef typename BaseType :: ObjectStreamType ObjectStreamType;
    \n-
    37
    \n-
    38 using BaseType :: restore;
    \n-\n-
    40
    \n-
    42 typedef FieldVector< double, dimworld> CoordinateType;
    \n-\n-
    45
    \n-
    47 virtual CoordinateType operator() (const CoordinateType& global) const = 0;
    \n-
    48
    \n-
    \n-
    52 virtual void backup( [[maybe_unused]] ObjectStreamType& buffer ) const
    \n-
    53 {
    \n-
    54 DUNE_THROW(NotImplemented,"DuneBoundaryProjection::backup not overloaded!");
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    57 template <class BufferImp>
    \n-
    \n-
    58 void toBuffer( BufferImp& buffer ) const
    \n-
    59 {
    \n-
    60 MessageBufferIF< BufferImp > buf( buffer );
    \n-
    61 toBuffer( buf );
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    64 template <class BufferImp>
    \n-
    \n-\n-
    66 {
    \n-\n-
    68 // call virtual interface backup
    \n-
    69 backup( str );
    \n-
    70 std::string data = str.str();
    \n-
    71 const size_t size = data.size();
    \n-
    72 buffer.write( size );
    \n-
    73 for( size_t i=0; i<size; ++i )
    \n-
    74 buffer.write( data[ i ] );
    \n-
    75 }
    \n-
    \n-
    76
    \n-
    77 template <class BufferImp>
    \n-
    \n-
    78 static std::unique_ptr< ThisType > restoreFromBuffer( BufferImp & buffer )
    \n-
    79 {
    \n-
    80 MessageBufferIF< BufferImp > buf( buffer );
    \n-
    81 return restoreFromBuffer( buf );
    \n-
    82 }
    \n+
    27namespace Dune
    \n+
    28{
    \n+
    36 //
    \n+
    37 // Common Layout templates
    \n+
    38 //
    \n+
    39
    \n+
    64 using MCMGLayout = std::function<size_t(GeometryType, int)>;
    \n+
    65
    \n+
    71 template<int codim>
    \n+
    \n+
    72 MCMGLayout mcmgLayout(Codim<codim>)
    \n+
    73 {
    \n+
    74 return [](GeometryType gt, int dimgrid) {
    \n+
    75 return dimgrid - gt.dim() == codim;
    \n+
    76 };
    \n+
    77 }
    \n
    \n-
    83
    \n-
    84 template <class BufferImp>
    \n+
    78
    \n+
    84 template<int dim>
    \n
    \n-
    85 static std::unique_ptr< ThisType > restoreFromBuffer( MessageBufferIF< BufferImp > & buffer )
    \n-
    86 {
    \n-
    87 std::string data;
    \n-
    88 size_t size = 0;
    \n-
    89 buffer.read( size );
    \n-
    90 data.resize( size );
    \n-
    91 for( size_t i=0; i<size; ++i )
    \n-
    92 buffer.read( data[ i ] );
    \n-
    93
    \n-\n-
    95 str.write( data.c_str(), size );
    \n-
    96 return BaseType::restore( str );
    \n-
    97 }
    \n-
    \n-
    98 };
    \n-
    \n-
    99
    \n-
    100 template < int dimworld >
    \n-
    \n-\n-
    102 : public DuneBoundaryProjection< dimworld >
    \n-
    103 {
    \n-
    104 protected:
    \n-\n-\n-
    107 public:
    \n-
    109 typedef typename BaseType :: CoordinateType CoordinateType;
    \n-
    110
    \n-
    111 // constructor taking other projection
    \n-
    \n-\n-
    113 : proj_( proje )
    \n-
    114 {}
    \n-
    \n-
    115
    \n-\n-
    118
    \n-
    \n-\n-
    121 {
    \n-
    122 return proj_( global );
    \n-
    123 }
    \n-
    \n-
    124 };
    \n-
    \n-
    125
    \n-
    126 // BoundarySegmentWrapper
    \n-
    127 // ----------------------
    \n-
    128
    \n-
    130 template< int dim, int dimworld >
    \n-
    \n-\n-
    132 : public DuneBoundaryProjection< dimworld >
    \n-
    133 {
    \n-\n-\n-
    136
    \n-
    137 typedef typename Base :: ObjectStreamType ObjectStreamType;
    \n-
    138
    \n-
    139 typedef MultiLinearGeometry<typename Base::CoordinateType::value_type,dim-1,dimworld> FaceMapping;
    \n-
    140
    \n-
    141 public:
    \n-\n-\n-
    144
    \n-
    \n-
    153 BoundarySegmentWrapper ( const GeometryType &type,
    \n-
    154 const std::vector< CoordinateType > &vertices,
    \n-
    155 const std::shared_ptr< BoundarySegment > &boundarySegment )
    \n-
    156 : faceMapping_( FaceMapping( type, vertices ) ),
    \n-
    157 boundarySegment_( boundarySegment )
    \n-
    158 {}
    \n-
    \n-
    159
    \n-
    \n-
    160 BoundarySegmentWrapper( ObjectStreamType& buffer )
    \n-
    161 : faceMapping_( readFaceMapping( buffer ) ),
    \n-
    162 boundarySegment_( BoundarySegment::restore( buffer ).release() )
    \n-
    163 {
    \n-
    164 }
    \n-
    \n-
    165
    \n-
    \n-\n-
    167 {
    \n-
    168 return boundarySegment() ( faceMapping_.local( global ) );
    \n-
    169 }
    \n+\n+
    86 {
    \n+
    87 return [](GeometryType gt, int) {
    \n+
    88 return gt.dim() == dim;
    \n+
    89 };
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    \n+\n+
    98 {
    \n+
    99 return mcmgLayout(Codim<0>());
    \n+
    100 }
    \n+
    \n+
    101
    \n+
    \n+\n+
    108 {
    \n+
    109 return mcmgLayout(Dim<0>());
    \n+
    110 }
    \n+
    \n+
    111
    \n+
    113 //
    \n+
    114 // MultipleCodimMultipleGeomTypeMapper
    \n+
    115 //
    \n+
    116
    \n+
    126 template <typename GV>
    \n+
    \n+\n+
    128 public Mapper<typename GV::Grid,MultipleCodimMultipleGeomTypeMapper<GV>, typename GV::IndexSet::IndexType >
    \n+
    129 {
    \n+
    130 public:
    \n+
    131
    \n+
    133 typedef GV GridView;
    \n+
    134
    \n+
    136 typedef typename GV::IndexSet::IndexType Index;
    \n+
    137
    \n+
    142 using size_type = decltype(std::declval<typename GV::IndexSet>().size(0));
    \n+
    143
    \n+
    \n+\n+
    156 : gridView_(gridView)
    \n+
    157 , indexSet_(&gridView_.indexSet())
    \n+
    158 , layout_(layout)
    \n+
    159 {
    \n+\n+
    161 }
    \n
    \n-
    170
    \n+
    162
    \n+
    170 template<class EntityType>
    \n
    \n-\n+
    171 Index index (const EntityType& e) const
    \n
    172 {
    \n-
    173 return *boundarySegment_;
    \n-
    174 }
    \n-
    \n-
    175
    \n-
    \n-
    176 void backup( ObjectStreamType& buffer ) const
    \n-
    177 {
    \n-
    178 // write identifier key first
    \n-
    179 buffer.write( (const char *) &key(), sizeof(int));
    \n-
    180 // now all data
    \n-
    181 GeometryType type = faceMapping_.type();
    \n-
    182 buffer.write( (const char *) &type, sizeof(GeometryType) );
    \n-
    183
    \n-
    184 int corners = faceMapping_.corners() ;
    \n-
    185 buffer.write( (const char *) &corners, sizeof(int) );
    \n-
    186
    \n-
    187 CoordinateType corner( 0 );
    \n-
    188 for( int i=0; i<corners; ++i )
    \n-
    189 {
    \n-
    190 corner = faceMapping_.corner( i );
    \n-
    191 buffer.write( (const char *) &corner[ 0 ], sizeof(double)*CoordinateType::dimension );
    \n-
    192 }
    \n-
    193
    \n-
    194 boundarySegment_->backup( buffer );
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    \n-
    197 static void registerFactory()
    \n-
    198 {
    \n-
    199 if( key() < 0 )
    \n-
    200 {
    \n-
    201 key() = Base::template registerFactory< ThisType >();
    \n-
    202 }
    \n-
    203 }
    \n-
    \n-
    204
    \n-
    205 protected:
    \n-
    \n-
    206 static int& key()
    \n-
    207 {
    \n-
    208 static int k = -1;
    \n-
    209 return k;
    \n-
    210 }
    \n-
    \n-
    211
    \n-
    \n-
    212 FaceMapping readFaceMapping( ObjectStreamType& buffer )
    \n-
    213 {
    \n-
    214 GeometryType type;
    \n-
    215 buffer.read( (char *) &type, sizeof(GeometryType) );
    \n-
    216 int corners = 0;
    \n-
    217 buffer.read( (char *) &corners, sizeof(int) );
    \n-
    218 std::vector< CoordinateType > vertices( corners, CoordinateType(0) );
    \n-
    219 for( int i=0; i<corners; ++i )
    \n-
    220 {
    \n-
    221 buffer.read( (char *) &vertices[ i ][ 0 ], sizeof(double)*CoordinateType::dimension );
    \n-
    222 }
    \n-
    223 return FaceMapping( type, vertices );
    \n-
    224 }
    \n-
    \n-
    225
    \n-
    226 private:
    \n-
    227 FaceMapping faceMapping_;
    \n-
    228 const std::shared_ptr< BoundarySegment > boundarySegment_;
    \n-
    229 };
    \n-
    \n-
    230
    \n-
    231
    \n-
    232
    \n-
    234 //
    \n-
    235 // Example of boundary projection projection to a circle
    \n-
    236 //
    \n-
    238 template <int dimworld>
    \n-
    \n-\n-
    240 {
    \n-
    242 typedef FieldVector< double, dimworld> CoordinateType;
    \n-
    243
    \n-
    \n-
    245 CircleBoundaryProjection(const double radius = std::sqrt( (double)dimworld ))
    \n-
    246 : radius_( radius ) {}
    \n-
    \n-
    247
    \n-\n-
    250
    \n-
    \n-
    252 virtual CoordinateType operator() (const CoordinateType& global) const
    \n-
    253 {
    \n-
    254 CoordinateType prj( global );
    \n-
    255 // get adjustment factor
    \n-
    256 const double factor = radius_ / global.two_norm();
    \n-
    257 // adjust
    \n-
    258 prj *= factor;
    \n-
    259 return prj;
    \n-
    260 }
    \n-
    \n-
    261
    \n-
    262 protected:
    \n-
    264 const double radius_;
    \n-
    265 };
    \n-
    \n-
    266
    \n-
    267} // end namespace
    \n-
    268
    \n-
    269#endif // #ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH
    \n-
    Base class for grid boundary segments of arbitrary geometry.
    \n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n-\n+
    173 const GeometryType gt = e.type();
    \n+
    174 assert(offset(gt) != invalidOffset);
    \n+
    175 return indexSet_->index(e)*blockSize(gt) + offset(gt);
    \n+
    176 }
    \n+
    \n+
    177
    \n+
    \n+
    185 Index subIndex (const typename GV::template Codim<0>::Entity& e, int i, unsigned int codim) const
    \n+
    186 {
    \n+
    187 const GeometryType eType = e.type();
    \n+
    188 GeometryType gt = eType.isNone() ?
    \n+
    189 GeometryTypes::none( GV::dimension - codim ) :
    \n+
    190 ReferenceElements<double,GV::dimension>::general(eType).type(i,codim) ;
    \n+
    191 //GeometryType gt=ReferenceElements<double,GV::dimension>::general(e.type()).type(i,codim);
    \n+
    192 assert(offset(gt) != invalidOffset);
    \n+
    193 return indexSet_->subIndex(e, i, codim)*blockSize(gt) + offset(gt);
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    \n+\n+
    205 {
    \n+
    206 return n;
    \n+
    207 }
    \n+
    \n+
    208
    \n+
    \n+
    210 size_type size(GeometryType gt) const
    \n+
    211 {
    \n+
    212 return blockSize(gt);
    \n+
    213 }
    \n+
    \n+
    214
    \n+
    \n+
    216 const std::vector< GeometryType >& types ( int codim ) const
    \n+
    217 {
    \n+
    218 return myTypes_[ codim ];
    \n+
    219 }
    \n+
    \n+
    220
    \n+
    230 template<class EntityType>
    \n+
    \n+
    231 IntegralRange<Index> indices (const EntityType& e) const
    \n+
    232 {
    \n+
    233 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)
    \n+
    234 return {0,0};
    \n+
    235 Index start = index(e);
    \n+
    236 return {start, start+blockSize(e.type())};
    \n+
    237 }
    \n+
    \n+
    238
    \n+
    \n+
    250 IntegralRange<Index> indices (const typename GV::template Codim<0>::Entity& e, int i, int cc) const
    \n+
    251 {
    \n+
    252 const GeometryType eType = e.type();
    \n+
    253 const GeometryType gt = eType.isNone() ?
    \n+
    254 GeometryTypes::none(GV::dimension - cc) :
    \n+
    255 ReferenceElements<double,GV::dimension>::general(eType).type(i,cc) ;
    \n+
    256 if (offset(gt) == invalidOffset)
    \n+
    257 return {0,0};
    \n+
    258 else
    \n+
    259 {
    \n+
    260 Index start = subIndex(e,i,cc);
    \n+
    261 return {start, start+blockSize(gt)};
    \n+
    262 }
    \n+
    263 }
    \n+
    \n+
    264
    \n+
    271 template<class EntityType>
    \n+
    \n+
    272 bool contains (const EntityType& e, Index& result) const
    \n+
    273 {
    \n+
    274 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)
    \n+
    275 {
    \n+
    276 result = 0;
    \n+
    277 return false;
    \n+
    278 }
    \n+
    279 result = index(e);
    \n+
    280 return true;
    \n+
    281 }
    \n+
    \n+
    282
    \n+
    \n+
    291 bool contains (const typename GV::template Codim<0>::Entity& e, int i, int cc, Index& result) const
    \n+
    292 {
    \n+
    293 const GeometryType eType = e.type();
    \n+
    294 const GeometryType gt = eType.isNone() ?
    \n+
    295 GeometryTypes::none( GV::dimension - cc ) :
    \n+
    296 ReferenceElements<double,GV::dimension>::general(eType).type(i,cc) ;
    \n+
    297 if (offset(gt) == invalidOffset)
    \n+
    298 return false;
    \n+
    299 result = indexSet_->subIndex(e, i, cc)*blockSize(gt) + offset(gt);
    \n+
    300 return true;
    \n+
    301 }
    \n+
    \n+
    302
    \n+
    \n+
    308 void update (const GV& gridView)
    \n+
    309 {
    \n+
    310 gridView_ = gridView;
    \n+
    311 indexSet_ = &gridView_.indexSet();
    \n+
    312 update_();
    \n+
    313 }
    \n+
    \n+
    314
    \n+
    \n+
    320 void update (GV&& gridView)
    \n+
    321 {
    \n+
    322 gridView_ = std::move(gridView);
    \n+
    323 indexSet_ = &gridView_.indexSet();
    \n+
    324 update_();
    \n+
    325 }
    \n+
    \n+
    326
    \n+
    329 [[deprecated("Use update(gridView) instead! Will be removed after release 2.8.")]]
    \n+
    \n+
    330 void update ()
    \n+
    331 {
    \n+
    332 update_();
    \n+
    333 }
    \n+
    \n+
    334
    \n+
    335 const MCMGLayout &layout () const { return layout_; }
    \n+
    336 const GridView &gridView () const { return gridView_; }
    \n+
    337
    \n+
    338 private:
    \n+
    339 void update_()
    \n+
    340 {
    \n+
    341 n = 0;
    \n+
    342
    \n+
    343 std::fill(offsets.begin(),offsets.end(),Index(0));
    \n+
    344 std::fill(blocks.begin(),blocks.end(),Index(0));
    \n+
    345
    \n+
    346 for (unsigned int codim = 0; codim <= GV::dimension; ++codim)
    \n+
    347 {
    \n+
    348 // walk over all geometry types in the codimension
    \n+
    349 for (const GeometryType& gt : indexSet_->types(codim)) {
    \n+
    350 Index offset;
    \n+
    351 size_t block = layout()(gt, GV::Grid::dimension);
    \n+
    352
    \n+
    353 // if the geometry type is contained in the layout, increment offset
    \n+
    354 // and store geometry type
    \n+
    355 if (block) {
    \n+
    356 offset = n;
    \n+
    357 n += indexSet_->size(gt) * block;
    \n+
    358 myTypes_[codim].push_back(gt);
    \n+
    359 }
    \n+
    360 else {
    \n+
    361 offset = invalidOffset;
    \n+
    362 }
    \n+
    363
    \n+
    364 offsets[GlobalGeometryTypeIndex::index(gt)] = offset;
    \n+
    365 blocks[GlobalGeometryTypeIndex::index(gt)] = block;
    \n+
    366 }
    \n+
    367 }
    \n+
    368 }
    \n+
    369
    \n+
    370 Index offset(GeometryType gt) const
    \n+
    371 { return offsets[GlobalGeometryTypeIndex::index(gt)]; }
    \n+
    372 Index blockSize(GeometryType gt) const
    \n+
    373 { return blocks[GlobalGeometryTypeIndex::index(gt)]; }
    \n+
    374
    \n+
    375 static const Index invalidOffset = std::numeric_limits<Index>::max();
    \n+
    376
    \n+
    377 // number of data elements required
    \n+
    378 unsigned int n;
    \n+
    379 // GridView is needed to keep the IndexSet valid
    \n+
    380 GV gridView_;
    \n+
    381 const typename GV::IndexSet* indexSet_;
    \n+
    382 // provide an array for the offsets
    \n+
    383 std::array<Index, GlobalGeometryTypeIndex::size(GV::dimension)> offsets;
    \n+
    384 std::array<Index, GlobalGeometryTypeIndex::size(GV::dimension)> blocks;
    \n+
    385 const MCMGLayout layout_; // get layout object
    \n+
    386 std::vector<GeometryType> myTypes_[GV::dimension+1];
    \n+
    387 };
    \n+
    \n+
    388
    \n+
    390 //
    \n+
    391 // Leaf and level mapper
    \n+
    392 //
    \n+
    393
    \n+
    400 template <typename G>
    \n+
    \n+
    401 class [[deprecated("Use MultipleCodimMultipleGeomTypeMapper instead! Will be removed after release 2.8.")]]
    \n+\n+
    403 : public MultipleCodimMultipleGeomTypeMapper<typename G::LeafGridView>
    \n+
    404 {
    \n+\n+
    406 public:
    \n+
    407
    \n+
    \n+\n+
    415 : Base(grid.leafGridView(), layout)
    \n+
    416 , gridPtr_(&grid)
    \n+
    417 {}
    \n+
    \n+
    418
    \n+
    \n+
    424 void update ()
    \n+
    425 {
    \n+
    426 Base::update(gridPtr_->leafGridView());
    \n+
    427 }
    \n+
    \n+
    428
    \n+
    429 private:
    \n+
    430 const G* gridPtr_;
    \n+
    431 };
    \n+
    \n+
    432
    \n+
    440 template <typename G>
    \n+
    \n+
    441 class [[deprecated("Use MultipleCodimMultipleGeomTypeMapper instead! Will be removed after release 2.8.")]]
    \n+\n+
    443 : public MultipleCodimMultipleGeomTypeMapper<typename G::LevelGridView> {
    \n+\n+
    445 public:
    \n+
    446
    \n+
    \n+
    454 LevelMultipleCodimMultipleGeomTypeMapper (const G& grid, int level, const MCMGLayout& layout)
    \n+
    455 : Base(grid.levelGridView(level),layout)
    \n+
    456 , gridPtr_(&grid)
    \n+
    457 , level_(level)
    \n+
    458 {}
    \n+
    \n+
    459
    \n+
    \n+
    465 void update ()
    \n+
    466 {
    \n+
    467 Base::update(gridPtr_->levelGridView(level_));
    \n+
    468 }
    \n+
    \n+
    469
    \n+
    470 private:
    \n+
    471 const G* gridPtr_;
    \n+
    472 int level_;
    \n+
    473 };
    \n+
    \n+
    474
    \n+
    476}
    \n+
    477#endif
    \n+
    Provides classes with basic mappers which are used to attach data to a grid.
    \n+
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n+
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n+
    MCMGLayout mcmgLayout(Codim< codim >)
    layout for entities of codimension codim
    Definition mcmgmapper.hh:72
    \n+
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n+
    std::function< size_t(GeometryType, int)> MCMGLayout
    layout function for MultipleCodimMultipleGeomTypeMapper
    Definition mcmgmapper.hh:64
    \n+
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Interface class for vertex projection at the boundary.
    Definition boundaryprojection.hh:33
    \n-
    DuneBoundaryProjection< dimworld > ThisType
    Definition boundaryprojection.hh:34
    \n-
    virtual void backup(ObjectStreamType &buffer) const
    write DuneBoundaryProjection's data to stream buffer
    Definition boundaryprojection.hh:52
    \n-
    static std::unique_ptr< ThisType > restoreFromBuffer(MessageBufferIF< BufferImp > &buffer)
    Definition boundaryprojection.hh:85
    \n-
    virtual CoordinateType operator()(const CoordinateType &global) const =0
    projection operator projection a global coordinate
    \n-
    void toBuffer(BufferImp &buffer) const
    Definition boundaryprojection.hh:58
    \n-
    BaseType::ObjectStreamType ObjectStreamType
    Definition boundaryprojection.hh:36
    \n-
    virtual ~DuneBoundaryProjection()
    destructor
    Definition boundaryprojection.hh:44
    \n-
    static std::unique_ptr< ThisType > restoreFromBuffer(BufferImp &buffer)
    Definition boundaryprojection.hh:78
    \n-
    FieldVector< double, dimworld > CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:42
    \n-
    void toBuffer(MessageBufferIF< BufferImp > &buffer) const
    Definition boundaryprojection.hh:65
    \n-
    BoundarySegmentBackupRestore< DuneBoundaryProjection< dimworld > > BaseType
    Definition boundaryprojection.hh:35
    \n-
    Definition boundaryprojection.hh:103
    \n-
    BaseType::CoordinateType CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:109
    \n-
    BoundaryProjectionWrapper(const BaseType &proje)
    Definition boundaryprojection.hh:112
    \n-
    const BaseType & proj_
    Definition boundaryprojection.hh:106
    \n-
    DuneBoundaryProjection< dimworld > BaseType
    Definition boundaryprojection.hh:105
    \n-
    CoordinateType operator()(const CoordinateType &global) const
    projection operator projection a global coordinate
    Definition boundaryprojection.hh:120
    \n-
    ~BoundaryProjectionWrapper()
    destructor
    Definition boundaryprojection.hh:117
    \n-
    Definition boundaryprojection.hh:133
    \n-
    CoordinateType operator()(const CoordinateType &global) const
    projection operator projection a global coordinate
    Definition boundaryprojection.hh:166
    \n-
    void backup(ObjectStreamType &buffer) const
    write DuneBoundaryProjection's data to stream buffer
    Definition boundaryprojection.hh:176
    \n-
    static int & key()
    Definition boundaryprojection.hh:206
    \n-
    const BoundarySegment & boundarySegment() const
    Definition boundaryprojection.hh:171
    \n-
    BoundarySegmentWrapper(const GeometryType &type, const std::vector< CoordinateType > &vertices, const std::shared_ptr< BoundarySegment > &boundarySegment)
    Definition boundaryprojection.hh:153
    \n-
    BoundarySegmentWrapper(ObjectStreamType &buffer)
    Definition boundaryprojection.hh:160
    \n-
    Dune::BoundarySegment< dim, dimworld > BoundarySegment
    Definition boundaryprojection.hh:143
    \n-
    static void registerFactory()
    Definition boundaryprojection.hh:197
    \n-
    FaceMapping readFaceMapping(ObjectStreamType &buffer)
    Definition boundaryprojection.hh:212
    \n-
    Base::CoordinateType CoordinateType
    Definition boundaryprojection.hh:142
    \n-
    Definition boundaryprojection.hh:240
    \n-
    FieldVector< double, dimworld > CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:242
    \n-
    CircleBoundaryProjection(const double radius=std::sqrt((double) dimworld))
    constructor taking radius of circle (default = sqrt( dimworld ) )
    Definition boundaryprojection.hh:245
    \n-
    virtual CoordinateType operator()(const CoordinateType &global) const
    projection operator projection a global coordinate
    Definition boundaryprojection.hh:252
    \n-
    virtual ~CircleBoundaryProjection()
    destructor
    Definition boundaryprojection.hh:249
    \n-
    const double radius_
    radius of circ
    Definition boundaryprojection.hh:264
    \n-
    Base class for classes implementing geometries of boundary segments.
    Definition boundarysegment.hh:94
    \n-
    Definition boundarysegment.hh:41
    \n-
    static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)
    create an object of BoundarySegment type from a previously registered factory linked to key.
    Definition boundarysegment.hh:59
    \n-
    static int registerFactory()
    Definition boundarysegment.hh:70
    \n-
    Communication message buffer interface. This class describes the interface for reading and writing da...
    Definition datahandleif.hh:33
    \n-
    void write(const T &val)
    just wraps the call of the internal buffer method write which writes the data of type T from the buff...
    Definition datahandleif.hh:45
    \n-
    void read(T &val)
    just wraps the call of the internal buffer method read which reads the data of type T from the buffer...
    Definition datahandleif.hh:59
    \n+
    Mapper interface.
    Definition mapper.hh:110
    \n+
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n+
    bool contains(const EntityType &e, Index &result) const
    Returns true if the entity is contained in the index set.
    Definition mcmgmapper.hh:272
    \n+
    size_type size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mcmgmapper.hh:204
    \n+
    Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity of codim 0 entity to starting index in array for dof block.
    Definition mcmgmapper.hh:185
    \n+
    MultipleCodimMultipleGeomTypeMapper(const GV &gridView, const MCMGLayout &layout)
    construct mapper from grid and layout description
    Definition mcmgmapper.hh:155
    \n+
    bool contains(const typename GV::template Codim< 0 >::Entity &e, int i, int cc, Index &result) const
    Returns true if the entity is contained in the index set.
    Definition mcmgmapper.hh:291
    \n+
    IntegralRange< Index > indices(const EntityType &e) const
    Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the ...
    Definition mcmgmapper.hh:231
    \n+
    decltype(std::declval< typename GV::IndexSet >().size(0)) size_type
    Number type used for the overall size (the return value of the 'size' method)
    Definition mcmgmapper.hh:142
    \n+
    Index index(const EntityType &e) const
    Map entity to starting index in array for dof block.
    Definition mcmgmapper.hh:171
    \n+
    const GridView & gridView() const
    Definition mcmgmapper.hh:336
    \n+
    void update(const GV &gridView)
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:308
    \n+
    GV::IndexSet::IndexType Index
    Number type used for indices.
    Definition mcmgmapper.hh:136
    \n+
    size_type size(GeometryType gt) const
    return number of entries for a given geometry type
    Definition mcmgmapper.hh:210
    \n+
    const MCMGLayout & layout() const
    Definition mcmgmapper.hh:335
    \n+
    IntegralRange< Index > indices(const typename GV::template Codim< 0 >::Entity &e, int i, int cc) const
    Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the ...
    Definition mcmgmapper.hh:250
    \n+
    void update()
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:330
    \n+
    GV GridView
    Underlying GridView.
    Definition mcmgmapper.hh:133
    \n+
    const std::vector< GeometryType > & types(int codim) const
    return the geometry types with entries
    Definition mcmgmapper.hh:216
    \n+
    void update(GV &&gridView)
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:320
    \n+
    Multiple codim and multiple geometry type mapper for leaf entities.
    Definition mcmgmapper.hh:404
    \n+
    void update()
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:424
    \n+
    LeafMultipleCodimMultipleGeomTypeMapper(const G &grid, const MCMGLayout &layout)
    constructor
    Definition mcmgmapper.hh:414
    \n+
    Multiple codim and multiple geometry type mapper for entities of one level.
    Definition mcmgmapper.hh:443
    \n+
    void update()
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:465
    \n+
    LevelMultipleCodimMultipleGeomTypeMapper(const G &grid, int level, const MCMGLayout &layout)
    constructor
    Definition mcmgmapper.hh:454
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,417 +1,448 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-boundaryprojection.hh\n+mcmgmapper.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH\n-6#define DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH\n-7\n-8//- system includes\n-9#include \n-10#include \n+5\n+6#ifndef DUNE_GRID_COMMON_MCMGMAPPER_HH\n+7#define DUNE_GRID_COMMON_MCMGMAPPER_HH\n+8\n+9#include \n+10#include \n 11\n-12//- Dune includes\n-13#include \n-14\n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+12#include \n+13#include \n+14#include \n+15#include \n+16#include \n+17#include \n+18\n+19#include \"_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\"\n 20\n-21namespace _\bD_\bu_\bn_\be\n-22{\n-25 template \n-26 struct DuneBoundaryProjection;\n-27\n-30 template \n-_\b3_\b1 struct _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-32 : public _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be< DuneBoundaryProjection< dimworld > >\n-33 {\n-_\b3_\b4 typedef _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n-_\b3_\b5 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> >\n-_\bB_\ba_\bs_\be_\bT_\by_\bp_\be;\n-_\b3_\b6 typedef typename BaseType :: ObjectStreamType _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be;\n-37\n-38 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bs_\bt_\bo_\br_\be;\n-39 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-40\n-_\b4_\b2 typedef FieldVector< double, dimworld> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n-_\b4_\b4 virtual _\b~_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn() {}\n-45\n-_\b4_\b7 virtual _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b (const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be& global) const = 0;\n-48\n-_\b5_\b2 virtual void _\bb_\ba_\bc_\bk_\bu_\bp( [[maybe_unused]] _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& buffer ) const\n-53 {\n-54 DUNE_THROW(NotImplemented,\"DuneBoundaryProjection::backup not overloaded!\");\n-55 }\n-56\n-57 template \n-_\b5_\b8 void _\bt_\bo_\bB_\bu_\bf_\bf_\be_\br( BufferImp& buffer ) const\n-59 {\n-60 _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<_\b _\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> buf( buffer );\n-61 _\bt_\bo_\bB_\bu_\bf_\bf_\be_\br( buf );\n-62 }\n-63\n-64 template \n-_\b6_\b5 void _\bt_\bo_\bB_\bu_\bf_\bf_\be_\br( _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<_\b _\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> & buffer ) const\n-66 {\n-67 _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be str;\n-68 // call virtual interface backup\n-69 _\bb_\ba_\bc_\bk_\bu_\bp( str );\n-70 std::string data = str.str();\n-71 const size_t size = data.size();\n-72 buffer._\bw_\br_\bi_\bt_\be( size );\n-73 for( size_t i=0; i\n-_\b7_\b8 static std::unique_ptr< ThisType > _\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br( BufferImp & buffer )\n-79 {\n-80 _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<_\b _\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> buf( buffer );\n-81 return _\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br( buf );\n-82 }\n-83\n-84 template \n-_\b8_\b5 static std::unique_ptr< ThisType > _\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br( _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<\n-_\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> & buffer )\n+27namespace _\bD_\bu_\bn_\be\n+28{\n+36 //\n+37 // Common Layout templates\n+38 //\n+39\n+_\b6_\b4 using _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt = std::function;\n+65\n+71 template\n+_\b7_\b2 _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Codim)\n+73 {\n+74 return [](GeometryType gt, int dimgrid) {\n+75 return dimgrid - gt.dim() == codim;\n+76 };\n+77 }\n+78\n+84 template\n+_\b8_\b5 _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Dim)\n 86 {\n-87 std::string data;\n-88 size_t size = 0;\n-89 buffer._\br_\be_\ba_\bd( size );\n-90 data.resize( size );\n-91 for( size_t i=0; i\n-_\b1_\b0_\b1 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-102 : public _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn< dimworld >\n-103 {\n-104 protected:\n-_\b1_\b0_\b5 typedef _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bB_\ba_\bs_\be_\bT_\by_\bp_\be;\n-_\b1_\b0_\b6 const _\bB_\ba_\bs_\be_\bT_\by_\bp_\be& _\bp_\br_\bo_\bj_\b_;\n-107 public:\n-_\b1_\b0_\b9 typedef typename BaseType :: CoordinateType _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n-110\n-111 // constructor taking other projection\n-_\b1_\b1_\b2 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br( const _\bB_\ba_\bs_\be_\bT_\by_\bp_\be& proje )\n-113 : _\bp_\br_\bo_\bj_\b_( proje )\n-114 {}\n-115\n-_\b1_\b1_\b7 _\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br () {}\n-118\n-_\b1_\b2_\b0 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b (const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be& global) const\n-121 {\n-122 return _\bp_\br_\bo_\bj_\b_( global );\n-123 }\n-124 };\n-125\n-126 // BoundarySegmentWrapper\n-127 // ----------------------\n-128\n-130 template< int dim, int dimworld >\n-_\b1_\b3_\b1 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n-132 : public _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn< dimworld >\n-133 {\n-134 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n-135 typedef _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bB_\ba_\bs_\be;\n-136\n-137 typedef typename Base :: ObjectStreamType ObjectStreamType;\n-138\n-139 typedef MultiLinearGeometry FaceMapping;\n-140\n-141 public:\n-_\b1_\b4_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n-_\b1_\b4_\b3 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt;\n-144\n-_\b1_\b5_\b3 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br ( const GeometryType &type,\n-154 const std::vector< CoordinateType > &vertices,\n-155 const std::shared_ptr< BoundarySegment > &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt )\n-156 : faceMapping_( FaceMapping( type, vertices ) ),\n-157 boundarySegment_( _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt )\n-158 {}\n-159\n-_\b1_\b6_\b0 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br( ObjectStreamType& buffer )\n-161 : faceMapping_( _\br_\be_\ba_\bd_\bF_\ba_\bc_\be_\bM_\ba_\bp_\bp_\bi_\bn_\bg( buffer ) ),\n-162 boundarySegment_( _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt::_\br_\be_\bs_\bt_\bo_\br_\be( buffer ).release() )\n-163 {\n-164 }\n-165\n-_\b1_\b6_\b6 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be &global ) const\n-167 {\n-168 return _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt() ( faceMapping_.local( global ) );\n-169 }\n-170\n-_\b1_\b7_\b1 const _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt () const\n+87 return [](GeometryType gt, int) {\n+88 return gt.dim() == dim;\n+89 };\n+90 }\n+91\n+_\b9_\b7 inline _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt()\n+98 {\n+99 return _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Codim<0>());\n+100 }\n+101\n+_\b1_\b0_\b7 inline _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt()\n+108 {\n+109 return _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Dim<0>());\n+110 }\n+111\n+113 //\n+114 // MultipleCodimMultipleGeomTypeMapper\n+115 //\n+116\n+126 template \n+_\b1_\b2_\b7 class _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br :\n+128 public _\bM_\ba_\bp_\bp_\be_\br,\n+typename GV::IndexSet::IndexType >\n+129 {\n+130 public:\n+131\n+_\b1_\b3_\b3 typedef GV _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n+134\n+_\b1_\b3_\b6 typedef typename GV::IndexSet::IndexType _\bI_\bn_\bd_\be_\bx;\n+137\n+_\b1_\b4_\b2 using _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be = decltype(std::declval().size(0));\n+143\n+_\b1_\b5_\b5 _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br(const GV& _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw, const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt&\n+_\bl_\ba_\by_\bo_\bu_\bt)\n+156 : gridView_(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw)\n+157 , indexSet_(&gridView_.indexSet())\n+158 , layout_(_\bl_\ba_\by_\bo_\bu_\bt)\n+159 {\n+160 _\bu_\bp_\bd_\ba_\bt_\be(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw);\n+161 }\n+162\n+170 template\n+_\b1_\b7_\b1 _\bI_\bn_\bd_\be_\bx _\bi_\bn_\bd_\be_\bx (const EntityType& e) const\n 172 {\n-173 return *boundarySegment_;\n-174 }\n-175\n-_\b1_\b7_\b6 void _\bb_\ba_\bc_\bk_\bu_\bp( ObjectStreamType& buffer ) const\n-177 {\n-178 // write identifier key first\n-179 buffer.write( (const char *) &_\bk_\be_\by(), sizeof(int));\n-180 // now all data\n-181 GeometryType type = faceMapping_.type();\n-182 buffer.write( (const char *) &type, sizeof(GeometryType) );\n-183\n-184 int corners = faceMapping_.corners() ;\n-185 buffer.write( (const char *) &corners, sizeof(int) );\n-186\n-187 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be corner( 0 );\n-188 for( int i=0; ibackup( buffer );\n-195 }\n-196\n-_\b1_\b9_\b7 static void _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by()\n-198 {\n-199 if( _\bk_\be_\by() < 0 )\n-200 {\n-201 _\bk_\be_\by() = Base::template registerFactory< ThisType >();\n-202 }\n-203 }\n-204\n-205 protected:\n-_\b2_\b0_\b6 static int& _\bk_\be_\by()\n-207 {\n-208 static int k = -1;\n-209 return k;\n-210 }\n-211\n-_\b2_\b1_\b2 FaceMapping _\br_\be_\ba_\bd_\bF_\ba_\bc_\be_\bM_\ba_\bp_\bp_\bi_\bn_\bg( ObjectStreamType& buffer )\n-213 {\n-214 GeometryType type;\n-215 buffer.read( (char *) &type, sizeof(GeometryType) );\n-216 int corners = 0;\n-217 buffer.read( (char *) &corners, sizeof(int) );\n-218 std::vector< CoordinateType > vertices( corners, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be(0) );\n-219 for( int i=0; i boundarySegment_;\n-229 };\n-230\n-231\n-232\n-234 //\n-235 // Example of boundary projection projection to a circle\n-236 //\n-238 template \n-_\b2_\b3_\b9 struct _\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn : public _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn< dimworld >\n-240 {\n-_\b2_\b4_\b2 typedef FieldVector< double, dimworld> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n-243\n-_\b2_\b4_\b5 _\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn(const double radius = std::sqrt( (double)dimworld\n-))\n-246 : _\br_\ba_\bd_\bi_\bu_\bs_\b_( radius ) {}\n-247\n-_\b2_\b4_\b9 virtual _\b~_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn() {}\n-250\n-_\b2_\b5_\b2 virtual _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b (const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be& global) const\n-253 {\n-254 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be prj( global );\n-255 // get adjustment factor\n-256 const double factor = _\br_\ba_\bd_\bi_\bu_\bs_\b_ / global.two_norm();\n-257 // adjust\n-258 prj *= factor;\n-259 return prj;\n-260 }\n-261\n-262 protected:\n-_\b2_\b6_\b4 const double _\br_\ba_\bd_\bi_\bu_\bs_\b_;\n-265 };\n-266\n-267} // end namespace\n-268\n-269#endif // #ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh\n-Base class for grid boundary segments of arbitrary geometry.\n-_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n-Describes the parallel communication interface class for MessageBuffers and\n-DataHandles.\n-_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n+173 const GeometryType gt = e.type();\n+174 assert(offset(gt) != invalidOffset);\n+175 return indexSet_->index(e)*blockSize(gt) + offset(gt);\n+176 }\n+177\n+_\b1_\b8_\b5 _\bI_\bn_\bd_\be_\bx _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename GV::template Codim<0>::Entity& e, int i,\n+unsigned int codim) const\n+186 {\n+187 const GeometryType eType = e.type();\n+188 GeometryType gt = eType.isNone() ?\n+189 GeometryTypes::none( GV::dimension - codim ) :\n+190 ReferenceElements::general(eType).type(i,codim) ;\n+191 //GeometryType gt=ReferenceElements::general(e.type\n+()).type(i,codim);\n+192 assert(offset(gt) != invalidOffset);\n+193 return indexSet_->subIndex(e, i, codim)*blockSize(gt) + offset(gt);\n+194 }\n+195\n+_\b2_\b0_\b4 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be () const\n+205 {\n+206 return n;\n+207 }\n+208\n+_\b2_\b1_\b0 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be(GeometryType gt) const\n+211 {\n+212 return blockSize(gt);\n+213 }\n+214\n+_\b2_\b1_\b6 const std::vector< GeometryType >& _\bt_\by_\bp_\be_\bs ( int codim ) const\n+217 {\n+218 return myTypes_[ codim ];\n+219 }\n+220\n+230 template\n+_\b2_\b3_\b1 IntegralRange _\bi_\bn_\bd_\bi_\bc_\be_\bs (const EntityType& e) const\n+232 {\n+233 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)\n+234 return {0,0};\n+235 _\bI_\bn_\bd_\be_\bx start = _\bi_\bn_\bd_\be_\bx(e);\n+236 return {start, start+blockSize(e.type())};\n+237 }\n+238\n+_\b2_\b5_\b0 IntegralRange _\bi_\bn_\bd_\bi_\bc_\be_\bs (const typename GV::template Codim<0>::Entity&\n+e, int i, int cc) const\n+251 {\n+252 const GeometryType eType = e.type();\n+253 const GeometryType gt = eType.isNone() ?\n+254 GeometryTypes::none(GV::dimension - cc) :\n+255 ReferenceElements::general(eType).type(i,cc) ;\n+256 if (offset(gt) == invalidOffset)\n+257 return {0,0};\n+258 else\n+259 {\n+260 _\bI_\bn_\bd_\be_\bx start = _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(e,i,cc);\n+261 return {start, start+blockSize(gt)};\n+262 }\n+263 }\n+264\n+271 template\n+_\b2_\b7_\b2 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e, _\bI_\bn_\bd_\be_\bx& result) const\n+273 {\n+274 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)\n+275 {\n+276 result = 0;\n+277 return false;\n+278 }\n+279 result = _\bi_\bn_\bd_\be_\bx(e);\n+280 return true;\n+281 }\n+282\n+_\b2_\b9_\b1 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const typename GV::template Codim<0>::Entity& e, int i, int\n+cc, _\bI_\bn_\bd_\be_\bx& result) const\n+292 {\n+293 const GeometryType eType = e.type();\n+294 const GeometryType gt = eType.isNone() ?\n+295 GeometryTypes::none( GV::dimension - cc ) :\n+296 ReferenceElements::general(eType).type(i,cc) ;\n+297 if (offset(gt) == invalidOffset)\n+298 return false;\n+299 result = indexSet_->subIndex(e, i, cc)*blockSize(gt) + offset(gt);\n+300 return true;\n+301 }\n+302\n+_\b3_\b0_\b8 void _\bu_\bp_\bd_\ba_\bt_\be (const GV& _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw)\n+309 {\n+310 gridView_ = _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw;\n+311 indexSet_ = &gridView_.indexSet();\n+312 update_();\n+313 }\n+314\n+_\b3_\b2_\b0 void _\bu_\bp_\bd_\ba_\bt_\be (GV&& _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw)\n+321 {\n+322 gridView_ = std::move(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw);\n+323 indexSet_ = &gridView_.indexSet();\n+324 update_();\n+325 }\n+326\n+329 [[deprecated(\"Use update(gridView) instead! Will be removed after release\n+2.8.\")]]\n+_\b3_\b3_\b0 void _\bu_\bp_\bd_\ba_\bt_\be ()\n+331 {\n+332 update_();\n+333 }\n+334\n+_\b3_\b3_\b5 const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt &_\bl_\ba_\by_\bo_\bu_\bt () const { return layout_; }\n+_\b3_\b3_\b6 const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw () const { return gridView_; }\n+337\n+338 private:\n+339 void update_()\n+340 {\n+341 n = 0;\n+342\n+343 std::fill(offsets.begin(),offsets.end(),_\bI_\bn_\bd_\be_\bx(0));\n+344 std::fill(blocks.begin(),blocks.end(),_\bI_\bn_\bd_\be_\bx(0));\n+345\n+346 for (unsigned int codim = 0; codim <= GV::dimension; ++codim)\n+347 {\n+348 // walk over all geometry types in the codimension\n+349 for (const GeometryType& gt : indexSet_->_\bt_\by_\bp_\be_\bs(codim)) {\n+350 _\bI_\bn_\bd_\be_\bx offset;\n+351 size_t block = _\bl_\ba_\by_\bo_\bu_\bt()(gt, GV::Grid::dimension);\n+352\n+353 // if the geometry type is contained in the layout, increment offset\n+354 // and store geometry type\n+355 if (block) {\n+356 offset = n;\n+357 n += indexSet_->size(gt) * block;\n+358 myTypes_[codim].push_back(gt);\n+359 }\n+360 else {\n+361 offset = invalidOffset;\n+362 }\n+363\n+364 offsets[GlobalGeometryTypeIndex::index(gt)] = offset;\n+365 blocks[GlobalGeometryTypeIndex::index(gt)] = block;\n+366 }\n+367 }\n+368 }\n+369\n+370 _\bI_\bn_\bd_\be_\bx offset(GeometryType gt) const\n+371 { return offsets[GlobalGeometryTypeIndex::index(gt)]; }\n+372 _\bI_\bn_\bd_\be_\bx blockSize(GeometryType gt) const\n+373 { return blocks[GlobalGeometryTypeIndex::index(gt)]; }\n+374\n+375 static const _\bI_\bn_\bd_\be_\bx invalidOffset = std::numeric_limits::max();\n+376\n+377 // number of data elements required\n+378 unsigned int n;\n+379 // GridView is needed to keep the IndexSet valid\n+380 GV gridView_;\n+381 const typename GV::IndexSet* indexSet_;\n+382 // provide an array for the offsets\n+383 std::array<_\bI_\bn_\bd_\be_\bx, GlobalGeometryTypeIndex::size(GV::dimension)> offsets;\n+384 std::array<_\bI_\bn_\bd_\be_\bx, GlobalGeometryTypeIndex::size(GV::dimension)> blocks;\n+385 const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt layout_; // get layout object\n+386 std::vector myTypes_[GV::dimension+1];\n+387 };\n+388\n+390 //\n+391 // Leaf and level mapper\n+392 //\n+393\n+400 template \n+_\b4_\b0_\b1 class [[deprecated(\"Use MultipleCodimMultipleGeomTypeMapper instead! Will\n+be removed after release 2.8.\")]]\n+402 _\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+403 : public _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+404 {\n+405 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\b:_\b:_\bL_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> _\bB_\ba_\bs_\be;\n+406 public:\n+407\n+_\b4_\b1_\b4 _\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br (const G& grid, const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt&\n+layout)\n+415 : _\bB_\ba_\bs_\be(grid._\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(), layout)\n+416 , gridPtr_(&grid)\n+417 {}\n+418\n+_\b4_\b2_\b4 void _\bu_\bp_\bd_\ba_\bt_\be ()\n+425 {\n+426 Base::update(gridPtr_->leafGridView());\n+427 }\n+428\n+429 private:\n+430 const G* gridPtr_;\n+431 };\n+432\n+440 template \n+_\b4_\b4_\b1 class [[deprecated(\"Use MultipleCodimMultipleGeomTypeMapper instead! Will\n+be removed after release 2.8.\")]]\n+442 _\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+443 : public _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br {\n+444 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>\n+_\bB_\ba_\bs_\be;\n+445 public:\n+446\n+_\b4_\b5_\b4 _\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br (const G& grid, int level, const\n+_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt& layout)\n+455 : _\bB_\ba_\bs_\be(grid._\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level),layout)\n+456 , gridPtr_(&grid)\n+457 , level_(level)\n+458 {}\n+459\n+_\b4_\b6_\b5 void _\bu_\bp_\bd_\ba_\bt_\be ()\n+466 {\n+467 Base::update(gridPtr_->levelGridView(level_));\n+468 }\n+469\n+470 private:\n+471 const G* gridPtr_;\n+472 int level_;\n+473 };\n+474\n+476}\n+477#endif\n+_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n+Provides classes with basic mappers which are used to attach data to a grid.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n+dim, dimworld, ct, GridFamily > &grid)\n+leaf grid view for the given grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:819\n+_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid<\n+dim, dimworld, ct, GridFamily > &grid, int level)\n+level grid view for the given grid and level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:802\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgLayout(Codim< codim >)\n+layout for entities of codimension codim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgElementLayout()\n+layout for elements (codim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\n+std::function< size_t(GeometryType, int)> MCMGLayout\n+layout function for MultipleCodimMultipleGeomTypeMapper\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgVertexLayout()\n+layout for vertices (dim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-Interface class for vertex projection at the boundary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\bh_\bi_\bs_\bT_\by_\bp_\be\n-DuneBoundaryProjection< dimworld > ThisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp\n-virtual void backup(ObjectStreamType &buffer) const\n-write DuneBoundaryProjection's data to stream buffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br\n-static std::unique_ptr< ThisType > restoreFromBuffer(MessageBufferIF< BufferImp\n-> &buffer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-virtual CoordinateType operator()(const CoordinateType &global) const =0\n-projection operator projection a global coordinate\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\bo_\bB_\bu_\bf_\bf_\be_\br\n-void toBuffer(BufferImp &buffer) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be\n-BaseType::ObjectStreamType ObjectStreamType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-virtual ~DuneBoundaryProjection()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br\n-static std::unique_ptr< ThisType > restoreFromBuffer(BufferImp &buffer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n-FieldVector< double, dimworld > CoordinateType\n-type of coordinate vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\bo_\bB_\bu_\bf_\bf_\be_\br\n-void toBuffer(MessageBufferIF< BufferImp > &buffer) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\ba_\bs_\be_\bT_\by_\bp_\be\n-BoundarySegmentBackupRestore< DuneBoundaryProjection< dimworld > > BaseType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n-BaseType::CoordinateType CoordinateType\n-type of coordinate vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-BoundaryProjectionWrapper(const BaseType &proje)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bp_\br_\bo_\bj_\b_\n-const BaseType & proj_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\ba_\bs_\be_\bT_\by_\bp_\be\n-DuneBoundaryProjection< dimworld > BaseType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-CoordinateType operator()(const CoordinateType &global) const\n-projection operator projection a global coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-~BoundaryProjectionWrapper()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-CoordinateType operator()(const CoordinateType &global) const\n-projection operator projection a global coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp\n-void backup(ObjectStreamType &buffer) const\n-write DuneBoundaryProjection's data to stream buffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bk_\be_\by\n-static int & key()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:206\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n-const BoundarySegment & boundarySegment() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n-BoundarySegmentWrapper(const GeometryType &type, const std::vector<\n-CoordinateType > &vertices, const std::shared_ptr< BoundarySegment >\n-&boundarySegment)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n-BoundarySegmentWrapper(ObjectStreamType &buffer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n-Dune::BoundarySegment< dim, dimworld > BoundarySegment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-static void registerFactory()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bF_\ba_\bc_\be_\bM_\ba_\bp_\bp_\bi_\bn_\bg\n-FaceMapping readFaceMapping(ObjectStreamType &buffer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:212\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n-Base::CoordinateType CoordinateType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n-FieldVector< double, dimworld > CoordinateType\n-type of coordinate vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-CircleBoundaryProjection(const double radius=std::sqrt((double) dimworld))\n-constructor taking radius of circle (default = sqrt( dimworld ) )\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:245\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-virtual CoordinateType operator()(const CoordinateType &global) const\n-projection operator projection a global coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-virtual ~CircleBoundaryProjection()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\br_\ba_\bd_\bi_\bu_\bs_\b_\n-const double radius_\n-radius of circ\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n-Base class for classes implementing geometries of boundary segments.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:\n-_\br_\be_\bs_\bt_\bo_\br_\be\n-static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)\n-create an object of BoundarySegment type from a previously registered factory\n-linked to key.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:\n-_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-static int registerFactory()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF\n-Communication message buffer interface. This class describes the interface for\n-reading and writing da...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(const T &val)\n-just wraps the call of the internal buffer method write which writes the data\n-of type T from the buff...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b:_\b:_\br_\be_\ba_\bd\n-void read(T &val)\n-just wraps the call of the internal buffer method read which reads the data of\n-type T from the buffer...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br\n+Mapper interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+Implementation class for a multiple codim and multiple geometry type mapper.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const EntityType &e, Index &result) const\n+Returns true if the entity is contained in the index set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size() const\n+Return total number of entities in the entity set managed by the mapper.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:204\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i,\n+unsigned int codim) const\n+Map subentity of codim 0 entity to starting index in array for dof block.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+MultipleCodimMultipleGeomTypeMapper(const GV &gridView, const MCMGLayout\n+&layout)\n+construct mapper from grid and layout description\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const typename GV::template Codim< 0 >::Entity &e, int i, int cc,\n+Index &result) const\n+Returns true if the entity is contained in the index set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:291\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\bi_\bc_\be_\bs\n+IntegralRange< Index > indices(const EntityType &e) const\n+Returns a pair with the starting point in the dof vector and the number of\n+degrees of freedom if the ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n+decltype(std::declval< typename GV::IndexSet >().size(0)) size_type\n+Number type used for the overall size (the return value of the 'size' method)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+Index index(const EntityType &e) const\n+Map entity to starting index in array for dof block.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw\n+const GridView & gridView() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:336\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(const GV &gridView)\n+Recalculates indices after grid adaptation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:308\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+GV::IndexSet::IndexType Index\n+Number type used for indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size(GeometryType gt) const\n+return number of entries for a given geometry type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bl_\ba_\by_\bo_\bu_\bt\n+const MCMGLayout & layout() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\bi_\bc_\be_\bs\n+IntegralRange< Index > indices(const typename GV::template Codim< 0 >::Entity\n+&e, int i, int cc) const\n+Returns a pair with the starting point in the dof vector and the number of\n+degrees of freedom if the ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+Recalculates indices after grid adaptation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:330\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+GV GridView\n+Underlying GridView.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bt_\by_\bp_\be_\bs\n+const std::vector< GeometryType > & types(int codim) const\n+return the geometry types with entries\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(GV &&gridView)\n+Recalculates indices after grid adaptation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+Multiple codim and multiple geometry type mapper for leaf entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:404\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+Recalculates indices after grid adaptation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:424\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:\n+_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+LeafMultipleCodimMultipleGeomTypeMapper(const G &grid, const MCMGLayout\n+&layout)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:414\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+Multiple codim and multiple geometry type mapper for entities of one level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:443\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+Recalculates indices after grid adaptation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:465\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:\n+_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+LevelMultipleCodimMultipleGeomTypeMapper(const G &grid, int level, const\n+MCMGLayout &layout)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:454\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00254.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00254.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: mapper.hh File Reference\n+dune-grid: entityiterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,40 +72,39 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n \n-
    mapper.hh File Reference
    \n+
    entityiterator.hh File Reference
    \n
    \n
    \n-\n-

    Provides classes with basic mappers which are used to attach data to a grid. \n-More...

    \n-
    #include <utility>
    \n-#include <dune/common/bartonnackmanifcheck.hh>
    \n+
    #include <cstddef>
    \n+#include <iterator>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::Mapper< G, MapperImp, IndexType >
     Mapper interface. More...
    class  Dune::EntityIterator< codim, Grid, IteratorImp >
     interface class for an iterator over grid entities More...
     
    struct  std::iterator_traits< Dune::EntityIterator< codim, Grid, IteratorImp > >
     
    \n \n \n \n \n+\n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  std
     STL namespace.
     
    \n-

    Detailed Description

    \n-

    Provides classes with basic mappers which are used to attach data to a grid.

    \n-
    Author
    Peter Bastian
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,27 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-mapper.hh File Reference\n-Provides classes with basic mappers which are used to attach data to a grid.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n+entityiterator.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b,_\b _\bM_\ba_\bp_\bp_\be_\br_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 _\bM_\ba_\bp_\bp_\be_\br interface. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>\n+\u00a0 interface class for an iterator over grid entities _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>\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 Include standard header files.\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-Provides classes with basic mappers which are used to attach data to a grid.\n- Author\n- Peter Bastian\n+namespace \u00a0 _\bs_\bt_\bd\n+\u00a0 STL namespace.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00254_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00254_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: mapper.hh Source File\n+dune-grid: entityiterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,123 +74,180 @@\n \n
    \n \n
    \n \n
    \n-
    mapper.hh
    \n+
    entityiterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_MAPPER_HH
    \n-
    6#define DUNE_GRID_COMMON_MAPPER_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH
    \n+
    6#define DUNE_GRID_COMMON_ENTITYITERATOR_HH
    \n
    7
    \n-
    8#include <utility>
    \n-
    9
    \n-
    10#include <dune/common/bartonnackmanifcheck.hh>
    \n-
    11
    \n-
    89namespace Dune
    \n-
    90{
    \n-
    108 template <typename G, typename MapperImp, typename IndexType=int>
    \n-
    \n-
    109 class Mapper
    \n-
    110 {
    \n-
    111 public:
    \n-
    112
    \n-
    114 using Index = IndexType;
    \n+
    8#include <cstddef>
    \n+
    9#include <iterator>
    \n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13
    \n+
    30 template< int codim, class Grid, class IteratorImp >
    \n+
    \n+\n+
    32 {
    \n+
    33 protected:
    \n+
    34 IteratorImp realIterator;
    \n+
    35
    \n+
    36 public:
    \n+
    42 typedef IteratorImp Implementation;
    \n+
    43
    \n+\n+
    55 const Implementation &impl () const { return realIterator; }
    \n+
    56
    \n+
    57 typedef typename Grid::template Codim< codim >::Entity Entity;
    \n+
    58
    \n+
    60 typedef typename std::conditional<
    \n+
    61 std::is_lvalue_reference<
    \n+
    62 decltype(realIterator.dereference())
    \n+
    63 >::value,
    \n+
    64 const Entity&,
    \n+
    65 Entity
    \n+
    66 >::type Reference;
    \n+
    67
    \n+
    \n+\n+
    70 {
    \n+
    71 realIterator.increment();
    \n+
    72 return *this;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    \n+\n+
    77 {
    \n+
    78 EntityIterator tmp(*this);
    \n+
    79 realIterator.increment();
    \n+
    80 return tmp;
    \n+
    81 }
    \n+
    \n+
    82
    \n+
    83 // The behavior when dereferencing the EntityIterator facade depends on
    \n+
    84 // the way the grid implementation handles returning entities. The implementation
    \n+
    85 // may either return a reference to an entity stored inside the EntityIterator
    \n+
    86 // implementation or a temporary Entity object. This object has to be forwarded through
    \n+
    87 // the facade to the user, which requires a little trickery, especially for operator->().
    \n+
    88 //
    \n+
    89 // In order to avoid confusing users reading the Doxygen documentation, we provide "clean"
    \n+
    90 // function signatures to Doxygen and hide the actual implementations.
    \n+
    91
    \n+
    92
    \n+
    93#ifdef DOXYGEN
    \n+
    94
    \n+
    96 const Entity& operator*() const;
    \n+
    97
    \n+
    99 const Entity& operator->() const;
    \n+
    100
    \n+
    101#else // DOXYGEN
    \n+
    102
    \n+
    104 typename std::conditional<
    \n+
    105 std::is_lvalue_reference<
    \n+
    106 decltype(realIterator.dereference())
    \n+
    107 >::value,
    \n+
    108 const Entity&,
    \n+
    109 Entity
    \n+
    110 >::type
    \n+
    111 operator*() const
    \n+
    112 {
    \n+
    113 return realIterator.dereference();
    \n+
    114 }
    \n
    115
    \n-
    121 template<class EntityType>
    \n-
    \n-
    122 Index index (const EntityType& e) const
    \n-
    123 {
    \n-
    124 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e)));
    \n-
    125 return asImp().index(e);
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    128
    \n-
    \n-
    136 Index subIndex (const typename G::Traits::template Codim<0>::Entity& e,
    \n-
    137 int i,
    \n-
    138 unsigned int codim) const
    \n-
    139 {
    \n-
    140 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e,i,codim)));
    \n-
    141 return asImp().subIndex(e,i,codim);
    \n-
    142 }
    \n-
    \n-
    143
    \n-
    \n-
    152 auto size () const
    \n-
    153 {
    \n-
    154 CHECK_INTERFACE_IMPLEMENTATION((asImp().size()));
    \n-
    155 return asImp().size();
    \n-
    156 }
    \n-
    \n-
    157
    \n-
    158
    \n-
    166 template<class EntityType>
    \n-
    \n-
    167 bool contains (const EntityType& e, IndexType& result) const
    \n-
    168 {
    \n-
    169 CHECK_INTERFACE_IMPLEMENTATION((asImp().contains(e,result )));
    \n-
    170 return asImp().contains(e,result );
    \n-
    171 }
    \n-
    \n-
    172
    \n-
    173
    \n-
    \n-
    183 bool contains (const typename G::Traits::template Codim<0>::Entity& e, int i, int cc, IndexType& result) const
    \n-
    184 {
    \n-
    185 CHECK_INTERFACE_IMPLEMENTATION((asImp().contains(e,i,cc,result)))
    \n-
    186 return asImp().contains(e,i,cc,result);
    \n-
    187 }
    \n-
    \n-
    188
    \n-
    191 template <class GridView>
    \n-
    \n-
    192 void update (GridView&& gridView)
    \n-
    193 {
    \n-
    194 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp().update(std::forward<GridView>(gridView))));
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    199 [[deprecated("Use update(gridView) instead! Will be removed after release 2.8. Mappers have to implement update(gridView).")]]
    \n-
    \n-
    200 void update ()
    \n-
    201 {
    \n-
    202 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp().update()));
    \n-
    203 }
    \n-
    \n-
    204
    \n-
    205 private:
    \n-
    207 MapperImp& asImp () {return static_cast<MapperImp &> (*this);}
    \n-
    209 const MapperImp& asImp () const {return static_cast<const MapperImp &>(*this);}
    \n-
    210 };
    \n-
    \n-
    211
    \n-
    214#undef CHECK_INTERFACE_IMPLEMENTATION
    \n-
    215#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
    \n-
    216
    \n-
    217}
    \n-
    218#endif
    \n+
    117 decltype(handle_proxy_member_access(realIterator.dereference()))
    \n+
    118 operator->() const
    \n+
    119 {
    \n+
    120 return handle_proxy_member_access(realIterator.dereference());
    \n+
    121 }
    \n+
    122
    \n+
    123#endif // DOXYGEN
    \n+
    124
    \n+
    125
    \n+
    \n+
    127 bool operator==(const EntityIterator& rhs) const
    \n+
    128 {
    \n+
    129 return this->realIterator.equals(rhs.realIterator);
    \n+
    130 }
    \n+
    \n+
    131
    \n+
    \n+
    133 bool operator!=(const EntityIterator& rhs) const
    \n+
    134 {
    \n+
    135 return !this->realIterator.equals(rhs.realIterator);
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    138
    \n+
    \n+\n+
    145 {}
    \n+
    \n+
    146
    \n+
    \n+
    148 EntityIterator ( const IteratorImp &imp )
    \n+
    149 : realIterator( imp )
    \n+
    150 {}
    \n+
    \n+
    151
    \n+
    153 };
    \n+
    \n+
    154
    \n+
    155} // namespace Dune
    \n+
    156
    \n+
    157namespace std
    \n+
    158{
    \n+
    159
    \n+
    160 template< int codim, class Grid, class IteratorImp >
    \n+
    \n+
    161 struct iterator_traits< Dune::EntityIterator< codim, Grid, IteratorImp > >
    \n+
    162 {
    \n+
    163 typedef ptrdiff_t difference_type;
    \n+
    164 typedef const typename IteratorImp::Entity value_type;
    \n+\n+\n+
    167 typedef forward_iterator_tag iterator_category;
    \n+
    168 };
    \n+
    \n+
    169
    \n+
    170} // namespace std
    \n+
    171
    \n+
    172#endif // #ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH
    \n+
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    Mapper interface.
    Definition mapper.hh:110
    \n-
    auto size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mapper.hh:152
    \n-
    void update(GridView &&gridView)
    Reinitialize mapper after grid has been modified.
    Definition mapper.hh:192
    \n-
    void update()
    Reinitialize mapper after grid has been modified.
    Definition mapper.hh:200
    \n-
    Index index(const EntityType &e) const
    Map entity to array index.
    Definition mapper.hh:122
    \n-
    IndexType Index
    Number type used for indices.
    Definition mapper.hh:114
    \n-
    Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity i of codim cc of a codim 0 entity to array index.
    Definition mapper.hh:136
    \n-
    bool contains(const typename G::Traits::template Codim< 0 >::Entity &e, int i, int cc, IndexType &result) const
    Returns true if the subentity is contained in the index set and at the same time the array index is r...
    Definition mapper.hh:183
    \n-
    bool contains(const EntityType &e, IndexType &result) const
    Returns true if the entity is contained in the index set and at the same time the array index is retu...
    Definition mapper.hh:167
    \n+
    interface class for an iterator over grid entities
    Definition entityiterator.hh:32
    \n+
    IteratorImp Implementation
    type of underlying implementation
    Definition entityiterator.hh:42
    \n+
    Implementation & impl()
    access to the underlying implementation
    Definition entityiterator.hh:49
    \n+
    IteratorImp realIterator
    Definition entityiterator.hh:34
    \n+
    Grid::template Codim< codim >::Entity Entity
    Definition entityiterator.hh:57
    \n+
    EntityIterator(const IteratorImp &imp)
    copy constructor from implementaton
    Definition entityiterator.hh:148
    \n+
    const Entity & operator*() const
    Dereferencing operator.
    \n+
    bool operator!=(const EntityIterator &rhs) const
    Checks for inequality.
    Definition entityiterator.hh:133
    \n+
    EntityIterator()
    default construct (undefined) iterator
    Definition entityiterator.hh:144
    \n+
    EntityIterator & operator++()
    prefix increment operator
    Definition entityiterator.hh:69
    \n+
    const Implementation & impl() const
    access to the underlying implementation
    Definition entityiterator.hh:55
    \n+
    std::conditional< std::is_lvalue_reference< decltype(realIterator.dereference())>::value, constEntity &, Entity >::type Reference
    Type of the reference used when derefencing the Ptr.
    Definition entityiterator.hh:66
    \n+
    bool operator==(const EntityIterator &rhs) const
    Checks for equality.
    Definition entityiterator.hh:127
    \n+
    const Entity & operator->() const
    Pointer operator.
    \n+
    const IteratorImp::Entity value_type
    Definition entityiterator.hh:164
    \n+
    forward_iterator_tag iterator_category
    Definition entityiterator.hh:167
    \n+\n+\n+\n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,140 +1,222 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-mapper.hh\n+entityiterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_MAPPER_HH\n-6#define DUNE_GRID_COMMON_MAPPER_HH\n+5#ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH\n+6#define DUNE_GRID_COMMON_ENTITYITERATOR_HH\n 7\n-8#include \n-9\n-10#include \n-11\n-89namespace _\bD_\bu_\bn_\be\n-90{\n-108 template \n-_\b1_\b0_\b9 class _\bM_\ba_\bp_\bp_\be_\br\n-110 {\n-111 public:\n-112\n-_\b1_\b1_\b4 using _\bI_\bn_\bd_\be_\bx = IndexType;\n+8#include \n+9#include \n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+13\n+30 template< int codim, class Grid, class IteratorImp >\n+_\b3_\b1 class _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+32 {\n+33 protected:\n+_\b3_\b4 IteratorImp _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+35\n+36 public:\n+_\b4_\b2 typedef IteratorImp _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn;\n+43\n+_\b4_\b9 _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\bi_\bm_\bp_\bl () { return _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br; }\n+_\b5_\b5 const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\bi_\bm_\bp_\bl () const { return _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br; }\n+56\n+_\b5_\b7 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< codim >::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+58\n+60 typedef typename std::conditional<\n+61 std::is_lvalue_reference<\n+62 decltype(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference())\n+63 >::value,\n+64 const _\bE_\bn_\bt_\bi_\bt_\by&,\n+65 _\bE_\bn_\bt_\bi_\bt_\by\n+_\b6_\b6 >::type _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+67\n+_\b6_\b9 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b ()\n+70 {\n+71 _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.increment();\n+72 return *this;\n+73 }\n+74\n+_\b7_\b6 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b (int)\n+77 {\n+78 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br tmp(*this);\n+79 _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.increment();\n+80 return tmp;\n+81 }\n+82\n+83 // The behavior when dereferencing the EntityIterator facade depends on\n+84 // the way the grid implementation handles returning entities. The\n+implementation\n+85 // may either return a reference to an entity stored inside the\n+EntityIterator\n+86 // implementation or a temporary Entity object. This object has to be\n+forwarded through\n+87 // the facade to the user, which requires a little trickery, especially for\n+operator->().\n+88 //\n+89 // In order to avoid confusing users reading the Doxygen documentation, we\n+provide \"clean\"\n+90 // function signatures to Doxygen and hide the actual implementations.\n+91\n+92\n+93#ifdef DOXYGEN\n+94\n+_\b9_\b6 const _\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() const;\n+97\n+_\b9_\b9 const _\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() const;\n+100\n+101#else // DOXYGEN\n+102\n+104 typename std::conditional<\n+105 std::is_lvalue_reference<\n+106 decltype(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference())\n+107 >::value,\n+108 const _\bE_\bn_\bt_\bi_\bt_\by&,\n+109 _\bE_\bn_\bt_\bi_\bt_\by\n+110 >::type\n+111 operator*() const\n+112 {\n+113 return _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference();\n+114 }\n 115\n-121 template\n-_\b1_\b2_\b2 _\bI_\bn_\bd_\be_\bx _\bi_\bn_\bd_\be_\bx (const EntityType& e) const\n-123 {\n-124 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e)));\n-125 return asImp().index(e);\n-126 }\n-127\n-128\n-_\b1_\b3_\b6 _\bI_\bn_\bd_\be_\bx _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename G::Traits::template Codim<0>::Entity& e,\n-137 int i,\n-138 unsigned int codim) const\n-139 {\n-140 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e,i,codim)));\n-141 return asImp().subIndex(e,i,codim);\n-142 }\n-143\n-_\b1_\b5_\b2 auto _\bs_\bi_\bz_\be () const\n-153 {\n-154 CHECK_INTERFACE_IMPLEMENTATION((asImp()._\bs_\bi_\bz_\be()));\n-155 return asImp().size();\n-156 }\n-157\n-158\n-166 template\n-_\b1_\b6_\b7 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e, IndexType& result) const\n-168 {\n-169 CHECK_INTERFACE_IMPLEMENTATION((asImp()._\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs(e,result )));\n-170 return asImp().contains(e,result );\n-171 }\n-172\n-173\n-_\b1_\b8_\b3 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const typename G::Traits::template Codim<0>::Entity& e, int\n-i, int cc, IndexType& result) const\n-184 {\n-185 CHECK_INTERFACE_IMPLEMENTATION((asImp()._\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs(e,i,cc,result)))\n-186 return asImp().contains(e,i,cc,result);\n-187 }\n-188\n-191 template \n-_\b1_\b9_\b2 void _\bu_\bp_\bd_\ba_\bt_\be (_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw&& gridView)\n-193 {\n-194 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp()._\bu_\bp_\bd_\ba_\bt_\be(std::\n-forward(gridView))));\n-195 }\n-196\n-199 [[deprecated(\"Use update(gridView) instead! Will be removed after release\n-2.8. Mappers have to implement update(gridView).\")]]\n-_\b2_\b0_\b0 void _\bu_\bp_\bd_\ba_\bt_\be ()\n-201 {\n-202 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp()._\bu_\bp_\bd_\ba_\bt_\be()));\n-203 }\n-204\n-205 private:\n-207 MapperImp& asImp () {return static_cast (*this);}\n-209 const MapperImp& asImp () const {return static_cast\n-(*this);}\n-210 };\n-211\n-214#undef CHECK_INTERFACE_IMPLEMENTATION\n-215#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION\n-216\n-217}\n-218#endif\n+117 decltype(handle_proxy_member_access(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference()))\n+118 operator->() const\n+119 {\n+120 return handle_proxy_member_access(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference());\n+121 }\n+122\n+123#endif // DOXYGEN\n+124\n+125\n+_\b1_\b2_\b7 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(const _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n+128 {\n+129 return this->realIterator.equals(rhs._\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br);\n+130 }\n+131\n+_\b1_\b3_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(const _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n+134 {\n+135 return !this->realIterator.equals(rhs._\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br);\n+136 }\n+137\n+138\n+_\b1_\b4_\b4 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( )\n+145 {}\n+146\n+_\b1_\b4_\b8 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const IteratorImp &imp )\n+149 : _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( imp )\n+150 {}\n+151\n+153 };\n+154\n+155} // namespace Dune\n+156\n+157namespace _\bs_\bt_\bd\n+158{\n+159\n+160 template< int codim, class Grid, class IteratorImp >\n+_\b1_\b6_\b1 struct iterator_traits< _\bD_\bu_\bn_\be::EntityIterator< codim, Grid, IteratorImp > >\n+162 {\n+_\b1_\b6_\b3 typedef ptrdiff_t _\bd_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\b__\bt_\by_\bp_\be;\n+_\b1_\b6_\b4 typedef const typename IteratorImp::Entity _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be;\n+_\b1_\b6_\b5 typedef _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be *_\bp_\bo_\bi_\bn_\bt_\be_\br;\n+_\b1_\b6_\b6 typedef _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be &_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+_\b1_\b6_\b7 typedef forward_iterator_tag _\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by;\n+168 };\n+169\n+170} // namespace std\n+171\n+172#endif // #ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH\n+_\bs_\bt_\bd\n+STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br\n-Mapper interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-auto size() const\n-Return total number of entities in the entity set managed by the mapper.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:152\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(GridView &&gridView)\n-Reinitialize mapper after grid has been modified.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:192\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-Reinitialize mapper after grid has been modified.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:200\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-Index index(const EntityType &e) const\n-Map entity to array index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-IndexType Index\n-Number type used for indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i,\n-unsigned int codim) const\n-Map subentity i of codim cc of a codim 0 entity to array index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const typename G::Traits::template Codim< 0 >::Entity &e, int i,\n-int cc, IndexType &result) const\n-Returns true if the subentity is contained in the index set and at the same\n-time the array index is r...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:183\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const EntityType &e, IndexType &result) const\n-Returns true if the entity is contained in the index set and at the same time\n-the array index is retu...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+interface class for an iterator over grid entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+IteratorImp Implementation\n+type of underlying implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bm_\bp_\bl\n+Implementation & impl()\n+access to the underlying implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IteratorImp realIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Grid::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+EntityIterator(const IteratorImp &imp)\n+copy constructor from implementaton\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+const Entity & operator*() const\n+Dereferencing operator.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n+bool operator!=(const EntityIterator &rhs) const\n+Checks for inequality.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+EntityIterator()\n+default construct (undefined) iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n+EntityIterator & operator++()\n+prefix increment operator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bm_\bp_\bl\n+const Implementation & impl() const\n+access to the underlying implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+std::conditional< std::is_lvalue_reference< decltype(realIterator.dereference\n+())>::value, constEntity &, Entity >::type Reference\n+Type of the reference used when derefencing the Ptr.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(const EntityIterator &rhs) const\n+Checks for equality.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n+const Entity & operator->() const\n+Pointer operator.\n+_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n+const IteratorImp::Entity value_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:164\n+_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n+_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by\n+forward_iterator_tag iterator_category\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:167\n+_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n+_\bd_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\b__\bt_\by_\bp_\be\n+ptrdiff_t difference_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:163\n+_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n+_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+value_type & reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:166\n+_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n+_\bp_\bo_\bi_\bn_\bt_\be_\br\n+value_type * pointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00278.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00278.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entityiterator.hh File Reference\n+dune-grid: boundaryprojection.hh File Reference\n \n \n \n \n \n \n \n@@ -72,38 +72,44 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n \n-
    entityiterator.hh File Reference
    \n+
    boundaryprojection.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <iterator>
    \n+
    #include <cmath>
    \n+#include <memory>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/multilineargeometry.hh>
    \n+#include <dune/grid/common/boundarysegment.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/grid/io/file/gmshreader.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::EntityIterator< codim, Grid, IteratorImp >
     interface class for an iterator over grid entities More...
    struct  Dune::DuneBoundaryProjection< dimworld >
     Interface class for vertex projection at the boundary. More...
     
    struct  std::iterator_traits< Dune::EntityIterator< codim, Grid, IteratorImp > >
    class  Dune::BoundaryProjectionWrapper< dimworld >
     
    class  Dune::BoundarySegmentWrapper< dim, dimworld >
     
    struct  Dune::CircleBoundaryProjection< dimworld >
     
    \n \n \n \n \n-\n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  std
     STL namespace.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,27 +2,32 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-entityiterator.hh File Reference\n-#include \n-#include \n+boundaryprojection.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\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:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>\n-\u00a0 interface class for an iterator over grid entities _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+\u00a0 Interface class for vertex projection at the boundary. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>\n- _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bs_\bt_\bd\n-\u00a0 STL namespace.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00278_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00278_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entityiterator.hh Source File\n+dune-grid: boundaryprojection.hh Source File\n \n \n \n \n \n \n \n@@ -74,180 +74,346 @@\n \n
    \n \n
    \n
    \n
    \n-
    entityiterator.hh
    \n+
    boundaryprojection.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH
    \n-
    6#define DUNE_GRID_COMMON_ENTITYITERATOR_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH
    \n+
    6#define DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <iterator>
    \n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13
    \n-
    30 template< int codim, class Grid, class IteratorImp >
    \n+
    8//- system includes
    \n+
    9#include <cmath>
    \n+
    10#include <memory>
    \n+
    11
    \n+
    12//- Dune includes
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14
    \n+
    15#include <dune/geometry/multilineargeometry.hh>
    \n+
    16
    \n+\n+\n+\n+
    20
    \n+
    21namespace Dune
    \n+
    22{
    \n+
    25 template <int dimworld>
    \n+
    26 struct DuneBoundaryProjection;
    \n+
    27
    \n+
    30 template <int dimworld>
    \n
    \n-\n-
    32 {
    \n-
    33 protected:
    \n-
    34 IteratorImp realIterator;
    \n-
    35
    \n-
    36 public:
    \n-
    42 typedef IteratorImp Implementation;
    \n-
    43
    \n-\n-
    55 const Implementation &impl () const { return realIterator; }
    \n+\n+
    32 : public BoundarySegmentBackupRestore< DuneBoundaryProjection< dimworld > >
    \n+
    33 {
    \n+\n+\n+
    36 typedef typename BaseType :: ObjectStreamType ObjectStreamType;
    \n+
    37
    \n+
    38 using BaseType :: restore;
    \n+\n+
    40
    \n+
    42 typedef FieldVector< double, dimworld> CoordinateType;
    \n+\n+
    45
    \n+
    47 virtual CoordinateType operator() (const CoordinateType& global) const = 0;
    \n+
    48
    \n+
    \n+
    52 virtual void backup( [[maybe_unused]] ObjectStreamType& buffer ) const
    \n+
    53 {
    \n+
    54 DUNE_THROW(NotImplemented,"DuneBoundaryProjection::backup not overloaded!");
    \n+
    55 }
    \n+
    \n
    56
    \n-
    57 typedef typename Grid::template Codim< codim >::Entity Entity;
    \n-
    58
    \n-
    60 typedef typename std::conditional<
    \n-
    61 std::is_lvalue_reference<
    \n-
    62 decltype(realIterator.dereference())
    \n-
    63 >::value,
    \n-
    64 const Entity&,
    \n-
    65 Entity
    \n-
    66 >::type Reference;
    \n-
    67
    \n-
    \n-\n-
    70 {
    \n-
    71 realIterator.increment();
    \n-
    72 return *this;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    \n-\n-
    77 {
    \n-
    78 EntityIterator tmp(*this);
    \n-
    79 realIterator.increment();
    \n-
    80 return tmp;
    \n-
    81 }
    \n-
    \n-
    82
    \n-
    83 // The behavior when dereferencing the EntityIterator facade depends on
    \n-
    84 // the way the grid implementation handles returning entities. The implementation
    \n-
    85 // may either return a reference to an entity stored inside the EntityIterator
    \n-
    86 // implementation or a temporary Entity object. This object has to be forwarded through
    \n-
    87 // the facade to the user, which requires a little trickery, especially for operator->().
    \n-
    88 //
    \n-
    89 // In order to avoid confusing users reading the Doxygen documentation, we provide "clean"
    \n-
    90 // function signatures to Doxygen and hide the actual implementations.
    \n-
    91
    \n-
    92
    \n-
    93#ifdef DOXYGEN
    \n-
    94
    \n-
    96 const Entity& operator*() const;
    \n-
    97
    \n-
    99 const Entity& operator->() const;
    \n-
    100
    \n-
    101#else // DOXYGEN
    \n-
    102
    \n-
    104 typename std::conditional<
    \n-
    105 std::is_lvalue_reference<
    \n-
    106 decltype(realIterator.dereference())
    \n-
    107 >::value,
    \n-
    108 const Entity&,
    \n-
    109 Entity
    \n-
    110 >::type
    \n-
    111 operator*() const
    \n-
    112 {
    \n-
    113 return realIterator.dereference();
    \n-
    114 }
    \n+
    57 template <class BufferImp>
    \n+
    \n+
    58 void toBuffer( BufferImp& buffer ) const
    \n+
    59 {
    \n+
    60 MessageBufferIF< BufferImp > buf( buffer );
    \n+
    61 toBuffer( buf );
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    64 template <class BufferImp>
    \n+
    \n+\n+
    66 {
    \n+\n+
    68 // call virtual interface backup
    \n+
    69 backup( str );
    \n+
    70 std::string data = str.str();
    \n+
    71 const size_t size = data.size();
    \n+
    72 buffer.write( size );
    \n+
    73 for( size_t i=0; i<size; ++i )
    \n+
    74 buffer.write( data[ i ] );
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    77 template <class BufferImp>
    \n+
    \n+
    78 static std::unique_ptr< ThisType > restoreFromBuffer( BufferImp & buffer )
    \n+
    79 {
    \n+
    80 MessageBufferIF< BufferImp > buf( buffer );
    \n+
    81 return restoreFromBuffer( buf );
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    84 template <class BufferImp>
    \n+
    \n+
    85 static std::unique_ptr< ThisType > restoreFromBuffer( MessageBufferIF< BufferImp > & buffer )
    \n+
    86 {
    \n+
    87 std::string data;
    \n+
    88 size_t size = 0;
    \n+
    89 buffer.read( size );
    \n+
    90 data.resize( size );
    \n+
    91 for( size_t i=0; i<size; ++i )
    \n+
    92 buffer.read( data[ i ] );
    \n+
    93
    \n+\n+
    95 str.write( data.c_str(), size );
    \n+
    96 return BaseType::restore( str );
    \n+
    97 }
    \n+
    \n+
    98 };
    \n+
    \n+
    99
    \n+
    100 template < int dimworld >
    \n+
    \n+\n+
    102 : public DuneBoundaryProjection< dimworld >
    \n+
    103 {
    \n+
    104 protected:
    \n+\n+\n+
    107 public:
    \n+
    109 typedef typename BaseType :: CoordinateType CoordinateType;
    \n+
    110
    \n+
    111 // constructor taking other projection
    \n+
    \n+\n+
    113 : proj_( proje )
    \n+
    114 {}
    \n+
    \n
    115
    \n-
    117 decltype(handle_proxy_member_access(realIterator.dereference()))
    \n-
    118 operator->() const
    \n-
    119 {
    \n-
    120 return handle_proxy_member_access(realIterator.dereference());
    \n-
    121 }
    \n-
    122
    \n-
    123#endif // DOXYGEN
    \n-
    124
    \n-
    125
    \n-
    \n-
    127 bool operator==(const EntityIterator& rhs) const
    \n-
    128 {
    \n-
    129 return this->realIterator.equals(rhs.realIterator);
    \n-
    130 }
    \n-
    \n-
    131
    \n-
    \n-
    133 bool operator!=(const EntityIterator& rhs) const
    \n-
    134 {
    \n-
    135 return !this->realIterator.equals(rhs.realIterator);
    \n-
    136 }
    \n+\n+
    118
    \n+
    \n+\n+
    121 {
    \n+
    122 return proj_( global );
    \n+
    123 }
    \n
    \n-
    137
    \n+
    124 };
    \n+
    \n+
    125
    \n+
    126 // BoundarySegmentWrapper
    \n+
    127 // ----------------------
    \n+
    128
    \n+
    130 template< int dim, int dimworld >
    \n+
    \n+\n+
    132 : public DuneBoundaryProjection< dimworld >
    \n+
    133 {
    \n+\n+\n+
    136
    \n+
    137 typedef typename Base :: ObjectStreamType ObjectStreamType;
    \n
    138
    \n-
    \n-\n-
    145 {}
    \n-
    \n-
    146
    \n-
    \n-
    148 EntityIterator ( const IteratorImp &imp )
    \n-
    149 : realIterator( imp )
    \n-
    150 {}
    \n-
    \n-
    151
    \n-
    153 };
    \n-
    \n-
    154
    \n-
    155} // namespace Dune
    \n-
    156
    \n-
    157namespace std
    \n-
    158{
    \n+
    139 typedef MultiLinearGeometry<typename Base::CoordinateType::value_type,dim-1,dimworld> FaceMapping;
    \n+
    140
    \n+
    141 public:
    \n+\n+\n+
    144
    \n+
    \n+
    153 BoundarySegmentWrapper ( const GeometryType &type,
    \n+
    154 const std::vector< CoordinateType > &vertices,
    \n+
    155 const std::shared_ptr< BoundarySegment > &boundarySegment )
    \n+
    156 : faceMapping_( FaceMapping( type, vertices ) ),
    \n+
    157 boundarySegment_( boundarySegment )
    \n+
    158 {}
    \n+
    \n
    159
    \n-
    160 template< int codim, class Grid, class IteratorImp >
    \n-
    \n-
    161 struct iterator_traits< Dune::EntityIterator< codim, Grid, IteratorImp > >
    \n-
    162 {
    \n-
    163 typedef ptrdiff_t difference_type;
    \n-
    164 typedef const typename IteratorImp::Entity value_type;
    \n-\n-\n-
    167 typedef forward_iterator_tag iterator_category;
    \n-
    168 };
    \n-
    \n-
    169
    \n-
    170} // namespace std
    \n-
    171
    \n-
    172#endif // #ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH
    \n-
    STL namespace.
    \n+
    \n+
    160 BoundarySegmentWrapper( ObjectStreamType& buffer )
    \n+
    161 : faceMapping_( readFaceMapping( buffer ) ),
    \n+
    162 boundarySegment_( BoundarySegment::restore( buffer ).release() )
    \n+
    163 {
    \n+
    164 }
    \n+
    \n+
    165
    \n+
    \n+\n+
    167 {
    \n+
    168 return boundarySegment() ( faceMapping_.local( global ) );
    \n+
    169 }
    \n+
    \n+
    170
    \n+
    \n+\n+
    172 {
    \n+
    173 return *boundarySegment_;
    \n+
    174 }
    \n+
    \n+
    175
    \n+
    \n+
    176 void backup( ObjectStreamType& buffer ) const
    \n+
    177 {
    \n+
    178 // write identifier key first
    \n+
    179 buffer.write( (const char *) &key(), sizeof(int));
    \n+
    180 // now all data
    \n+
    181 GeometryType type = faceMapping_.type();
    \n+
    182 buffer.write( (const char *) &type, sizeof(GeometryType) );
    \n+
    183
    \n+
    184 int corners = faceMapping_.corners() ;
    \n+
    185 buffer.write( (const char *) &corners, sizeof(int) );
    \n+
    186
    \n+
    187 CoordinateType corner( 0 );
    \n+
    188 for( int i=0; i<corners; ++i )
    \n+
    189 {
    \n+
    190 corner = faceMapping_.corner( i );
    \n+
    191 buffer.write( (const char *) &corner[ 0 ], sizeof(double)*CoordinateType::dimension );
    \n+
    192 }
    \n+
    193
    \n+
    194 boundarySegment_->backup( buffer );
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    \n+
    197 static void registerFactory()
    \n+
    198 {
    \n+
    199 if( key() < 0 )
    \n+
    200 {
    \n+
    201 key() = Base::template registerFactory< ThisType >();
    \n+
    202 }
    \n+
    203 }
    \n+
    \n+
    204
    \n+
    205 protected:
    \n+
    \n+
    206 static int& key()
    \n+
    207 {
    \n+
    208 static int k = -1;
    \n+
    209 return k;
    \n+
    210 }
    \n+
    \n+
    211
    \n+
    \n+
    212 FaceMapping readFaceMapping( ObjectStreamType& buffer )
    \n+
    213 {
    \n+
    214 GeometryType type;
    \n+
    215 buffer.read( (char *) &type, sizeof(GeometryType) );
    \n+
    216 int corners = 0;
    \n+
    217 buffer.read( (char *) &corners, sizeof(int) );
    \n+
    218 std::vector< CoordinateType > vertices( corners, CoordinateType(0) );
    \n+
    219 for( int i=0; i<corners; ++i )
    \n+
    220 {
    \n+
    221 buffer.read( (char *) &vertices[ i ][ 0 ], sizeof(double)*CoordinateType::dimension );
    \n+
    222 }
    \n+
    223 return FaceMapping( type, vertices );
    \n+
    224 }
    \n+
    \n+
    225
    \n+
    226 private:
    \n+
    227 FaceMapping faceMapping_;
    \n+
    228 const std::shared_ptr< BoundarySegment > boundarySegment_;
    \n+
    229 };
    \n+
    \n+
    230
    \n+
    231
    \n+
    232
    \n+
    234 //
    \n+
    235 // Example of boundary projection projection to a circle
    \n+
    236 //
    \n+
    238 template <int dimworld>
    \n+
    \n+\n+
    240 {
    \n+
    242 typedef FieldVector< double, dimworld> CoordinateType;
    \n+
    243
    \n+
    \n+
    245 CircleBoundaryProjection(const double radius = std::sqrt( (double)dimworld ))
    \n+
    246 : radius_( radius ) {}
    \n+
    \n+
    247
    \n+\n+
    250
    \n+
    \n+
    252 virtual CoordinateType operator() (const CoordinateType& global) const
    \n+
    253 {
    \n+
    254 CoordinateType prj( global );
    \n+
    255 // get adjustment factor
    \n+
    256 const double factor = radius_ / global.two_norm();
    \n+
    257 // adjust
    \n+
    258 prj *= factor;
    \n+
    259 return prj;
    \n+
    260 }
    \n+
    \n+
    261
    \n+
    262 protected:
    \n+
    264 const double radius_;
    \n+
    265 };
    \n+
    \n+
    266
    \n+
    267} // end namespace
    \n+
    268
    \n+
    269#endif // #ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH
    \n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+
    Base class for grid boundary segments of arbitrary geometry.
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    interface class for an iterator over grid entities
    Definition entityiterator.hh:32
    \n-
    IteratorImp Implementation
    type of underlying implementation
    Definition entityiterator.hh:42
    \n-
    Implementation & impl()
    access to the underlying implementation
    Definition entityiterator.hh:49
    \n-
    IteratorImp realIterator
    Definition entityiterator.hh:34
    \n-
    Grid::template Codim< codim >::Entity Entity
    Definition entityiterator.hh:57
    \n-
    EntityIterator(const IteratorImp &imp)
    copy constructor from implementaton
    Definition entityiterator.hh:148
    \n-
    const Entity & operator*() const
    Dereferencing operator.
    \n-
    bool operator!=(const EntityIterator &rhs) const
    Checks for inequality.
    Definition entityiterator.hh:133
    \n-
    EntityIterator()
    default construct (undefined) iterator
    Definition entityiterator.hh:144
    \n-
    EntityIterator & operator++()
    prefix increment operator
    Definition entityiterator.hh:69
    \n-
    const Implementation & impl() const
    access to the underlying implementation
    Definition entityiterator.hh:55
    \n-
    std::conditional< std::is_lvalue_reference< decltype(realIterator.dereference())>::value, constEntity &, Entity >::type Reference
    Type of the reference used when derefencing the Ptr.
    Definition entityiterator.hh:66
    \n-
    bool operator==(const EntityIterator &rhs) const
    Checks for equality.
    Definition entityiterator.hh:127
    \n-
    const Entity & operator->() const
    Pointer operator.
    \n-
    const IteratorImp::Entity value_type
    Definition entityiterator.hh:164
    \n-
    forward_iterator_tag iterator_category
    Definition entityiterator.hh:167
    \n-\n-\n-\n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    Interface class for vertex projection at the boundary.
    Definition boundaryprojection.hh:33
    \n+
    DuneBoundaryProjection< dimworld > ThisType
    Definition boundaryprojection.hh:34
    \n+
    virtual void backup(ObjectStreamType &buffer) const
    write DuneBoundaryProjection's data to stream buffer
    Definition boundaryprojection.hh:52
    \n+
    static std::unique_ptr< ThisType > restoreFromBuffer(MessageBufferIF< BufferImp > &buffer)
    Definition boundaryprojection.hh:85
    \n+
    virtual CoordinateType operator()(const CoordinateType &global) const =0
    projection operator projection a global coordinate
    \n+
    void toBuffer(BufferImp &buffer) const
    Definition boundaryprojection.hh:58
    \n+
    BaseType::ObjectStreamType ObjectStreamType
    Definition boundaryprojection.hh:36
    \n+
    virtual ~DuneBoundaryProjection()
    destructor
    Definition boundaryprojection.hh:44
    \n+
    static std::unique_ptr< ThisType > restoreFromBuffer(BufferImp &buffer)
    Definition boundaryprojection.hh:78
    \n+
    FieldVector< double, dimworld > CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:42
    \n+
    void toBuffer(MessageBufferIF< BufferImp > &buffer) const
    Definition boundaryprojection.hh:65
    \n+
    BoundarySegmentBackupRestore< DuneBoundaryProjection< dimworld > > BaseType
    Definition boundaryprojection.hh:35
    \n+
    Definition boundaryprojection.hh:103
    \n+
    BaseType::CoordinateType CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:109
    \n+
    BoundaryProjectionWrapper(const BaseType &proje)
    Definition boundaryprojection.hh:112
    \n+
    const BaseType & proj_
    Definition boundaryprojection.hh:106
    \n+
    DuneBoundaryProjection< dimworld > BaseType
    Definition boundaryprojection.hh:105
    \n+
    CoordinateType operator()(const CoordinateType &global) const
    projection operator projection a global coordinate
    Definition boundaryprojection.hh:120
    \n+
    ~BoundaryProjectionWrapper()
    destructor
    Definition boundaryprojection.hh:117
    \n+
    Definition boundaryprojection.hh:133
    \n+
    CoordinateType operator()(const CoordinateType &global) const
    projection operator projection a global coordinate
    Definition boundaryprojection.hh:166
    \n+
    void backup(ObjectStreamType &buffer) const
    write DuneBoundaryProjection's data to stream buffer
    Definition boundaryprojection.hh:176
    \n+
    static int & key()
    Definition boundaryprojection.hh:206
    \n+
    const BoundarySegment & boundarySegment() const
    Definition boundaryprojection.hh:171
    \n+
    BoundarySegmentWrapper(const GeometryType &type, const std::vector< CoordinateType > &vertices, const std::shared_ptr< BoundarySegment > &boundarySegment)
    Definition boundaryprojection.hh:153
    \n+
    BoundarySegmentWrapper(ObjectStreamType &buffer)
    Definition boundaryprojection.hh:160
    \n+
    Dune::BoundarySegment< dim, dimworld > BoundarySegment
    Definition boundaryprojection.hh:143
    \n+
    static void registerFactory()
    Definition boundaryprojection.hh:197
    \n+
    FaceMapping readFaceMapping(ObjectStreamType &buffer)
    Definition boundaryprojection.hh:212
    \n+
    Base::CoordinateType CoordinateType
    Definition boundaryprojection.hh:142
    \n+
    Definition boundaryprojection.hh:240
    \n+
    FieldVector< double, dimworld > CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:242
    \n+
    CircleBoundaryProjection(const double radius=std::sqrt((double) dimworld))
    constructor taking radius of circle (default = sqrt( dimworld ) )
    Definition boundaryprojection.hh:245
    \n+
    virtual CoordinateType operator()(const CoordinateType &global) const
    projection operator projection a global coordinate
    Definition boundaryprojection.hh:252
    \n+
    virtual ~CircleBoundaryProjection()
    destructor
    Definition boundaryprojection.hh:249
    \n+
    const double radius_
    radius of circ
    Definition boundaryprojection.hh:264
    \n+
    Base class for classes implementing geometries of boundary segments.
    Definition boundarysegment.hh:94
    \n+
    Definition boundarysegment.hh:41
    \n+
    static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)
    create an object of BoundarySegment type from a previously registered factory linked to key.
    Definition boundarysegment.hh:59
    \n+
    static int registerFactory()
    Definition boundarysegment.hh:70
    \n+
    Communication message buffer interface. This class describes the interface for reading and writing da...
    Definition datahandleif.hh:33
    \n+
    void write(const T &val)
    just wraps the call of the internal buffer method write which writes the data of type T from the buff...
    Definition datahandleif.hh:45
    \n+
    void read(T &val)
    just wraps the call of the internal buffer method read which reads the data of type T from the buffer...
    Definition datahandleif.hh:59
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,222 +1,417 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-entityiterator.hh\n+boundaryprojection.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH\n-6#define DUNE_GRID_COMMON_ENTITYITERATOR_HH\n+5#ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH\n+6#define DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH\n 7\n-8#include \n-9#include \n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-13\n-30 template< int codim, class Grid, class IteratorImp >\n-_\b3_\b1 class _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-32 {\n-33 protected:\n-_\b3_\b4 IteratorImp _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-35\n-36 public:\n-_\b4_\b2 typedef IteratorImp _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn;\n-43\n-_\b4_\b9 _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\bi_\bm_\bp_\bl () { return _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br; }\n-_\b5_\b5 const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\bi_\bm_\bp_\bl () const { return _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br; }\n+8//- system includes\n+9#include \n+10#include \n+11\n+12//- Dune includes\n+13#include \n+14\n+15#include \n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be\n+22{\n+25 template \n+26 struct DuneBoundaryProjection;\n+27\n+30 template \n+_\b3_\b1 struct _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+32 : public _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be< DuneBoundaryProjection< dimworld > >\n+33 {\n+_\b3_\b4 typedef _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n+_\b3_\b5 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> >\n+_\bB_\ba_\bs_\be_\bT_\by_\bp_\be;\n+_\b3_\b6 typedef typename BaseType :: ObjectStreamType _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be;\n+37\n+38 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bs_\bt_\bo_\br_\be;\n+39 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+40\n+_\b4_\b2 typedef FieldVector< double, dimworld> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n+_\b4_\b4 virtual _\b~_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn() {}\n+45\n+_\b4_\b7 virtual _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b (const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be& global) const = 0;\n+48\n+_\b5_\b2 virtual void _\bb_\ba_\bc_\bk_\bu_\bp( [[maybe_unused]] _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& buffer ) const\n+53 {\n+54 DUNE_THROW(NotImplemented,\"DuneBoundaryProjection::backup not overloaded!\");\n+55 }\n 56\n-_\b5_\b7 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< codim >::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-58\n-60 typedef typename std::conditional<\n-61 std::is_lvalue_reference<\n-62 decltype(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference())\n-63 >::value,\n-64 const _\bE_\bn_\bt_\bi_\bt_\by&,\n-65 _\bE_\bn_\bt_\bi_\bt_\by\n-_\b6_\b6 >::type _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-67\n-_\b6_\b9 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b ()\n-70 {\n-71 _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.increment();\n-72 return *this;\n-73 }\n-74\n-_\b7_\b6 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b (int)\n-77 {\n-78 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br tmp(*this);\n-79 _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.increment();\n-80 return tmp;\n-81 }\n-82\n-83 // The behavior when dereferencing the EntityIterator facade depends on\n-84 // the way the grid implementation handles returning entities. The\n-implementation\n-85 // may either return a reference to an entity stored inside the\n-EntityIterator\n-86 // implementation or a temporary Entity object. This object has to be\n-forwarded through\n-87 // the facade to the user, which requires a little trickery, especially for\n-operator->().\n-88 //\n-89 // In order to avoid confusing users reading the Doxygen documentation, we\n-provide \"clean\"\n-90 // function signatures to Doxygen and hide the actual implementations.\n-91\n-92\n-93#ifdef DOXYGEN\n-94\n-_\b9_\b6 const _\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() const;\n-97\n-_\b9_\b9 const _\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() const;\n-100\n-101#else // DOXYGEN\n-102\n-104 typename std::conditional<\n-105 std::is_lvalue_reference<\n-106 decltype(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference())\n-107 >::value,\n-108 const _\bE_\bn_\bt_\bi_\bt_\by&,\n-109 _\bE_\bn_\bt_\bi_\bt_\by\n-110 >::type\n-111 operator*() const\n-112 {\n-113 return _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference();\n-114 }\n+57 template \n+_\b5_\b8 void _\bt_\bo_\bB_\bu_\bf_\bf_\be_\br( BufferImp& buffer ) const\n+59 {\n+60 _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<_\b _\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> buf( buffer );\n+61 _\bt_\bo_\bB_\bu_\bf_\bf_\be_\br( buf );\n+62 }\n+63\n+64 template \n+_\b6_\b5 void _\bt_\bo_\bB_\bu_\bf_\bf_\be_\br( _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<_\b _\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> & buffer ) const\n+66 {\n+67 _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be str;\n+68 // call virtual interface backup\n+69 _\bb_\ba_\bc_\bk_\bu_\bp( str );\n+70 std::string data = str.str();\n+71 const size_t size = data.size();\n+72 buffer._\bw_\br_\bi_\bt_\be( size );\n+73 for( size_t i=0; i\n+_\b7_\b8 static std::unique_ptr< ThisType > _\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br( BufferImp & buffer )\n+79 {\n+80 _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<_\b _\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> buf( buffer );\n+81 return _\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br( buf );\n+82 }\n+83\n+84 template \n+_\b8_\b5 static std::unique_ptr< ThisType > _\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br( _\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b<\n+_\bB_\bu_\bf_\bf_\be_\br_\bI_\bm_\bp_\b _\b> & buffer )\n+86 {\n+87 std::string data;\n+88 size_t size = 0;\n+89 buffer._\br_\be_\ba_\bd( size );\n+90 data.resize( size );\n+91 for( size_t i=0; i\n+_\b1_\b0_\b1 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+102 : public _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn< dimworld >\n+103 {\n+104 protected:\n+_\b1_\b0_\b5 typedef _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bB_\ba_\bs_\be_\bT_\by_\bp_\be;\n+_\b1_\b0_\b6 const _\bB_\ba_\bs_\be_\bT_\by_\bp_\be& _\bp_\br_\bo_\bj_\b_;\n+107 public:\n+_\b1_\b0_\b9 typedef typename BaseType :: CoordinateType _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n+110\n+111 // constructor taking other projection\n+_\b1_\b1_\b2 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br( const _\bB_\ba_\bs_\be_\bT_\by_\bp_\be& proje )\n+113 : _\bp_\br_\bo_\bj_\b_( proje )\n+114 {}\n 115\n-117 decltype(handle_proxy_member_access(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference()))\n-118 operator->() const\n-119 {\n-120 return handle_proxy_member_access(_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.dereference());\n-121 }\n-122\n-123#endif // DOXYGEN\n-124\n+_\b1_\b1_\b7 _\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br () {}\n+118\n+_\b1_\b2_\b0 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b (const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be& global) const\n+121 {\n+122 return _\bp_\br_\bo_\bj_\b_( global );\n+123 }\n+124 };\n 125\n-_\b1_\b2_\b7 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(const _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n-128 {\n-129 return this->realIterator.equals(rhs._\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br);\n-130 }\n-131\n-_\b1_\b3_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(const _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n-134 {\n-135 return !this->realIterator.equals(rhs._\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br);\n-136 }\n-137\n+126 // BoundarySegmentWrapper\n+127 // ----------------------\n+128\n+130 template< int dim, int dimworld >\n+_\b1_\b3_\b1 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n+132 : public _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn< dimworld >\n+133 {\n+134 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n+135 typedef _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bB_\ba_\bs_\be;\n+136\n+137 typedef typename Base :: ObjectStreamType ObjectStreamType;\n 138\n-_\b1_\b4_\b4 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( )\n-145 {}\n-146\n-_\b1_\b4_\b8 _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const IteratorImp &imp )\n-149 : _\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( imp )\n-150 {}\n-151\n-153 };\n-154\n-155} // namespace Dune\n-156\n-157namespace _\bs_\bt_\bd\n-158{\n+139 typedef MultiLinearGeometry FaceMapping;\n+140\n+141 public:\n+_\b1_\b4_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n+_\b1_\b4_\b3 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt;\n+144\n+_\b1_\b5_\b3 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br ( const GeometryType &type,\n+154 const std::vector< CoordinateType > &vertices,\n+155 const std::shared_ptr< BoundarySegment > &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt )\n+156 : faceMapping_( FaceMapping( type, vertices ) ),\n+157 boundarySegment_( _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt )\n+158 {}\n 159\n-160 template< int codim, class Grid, class IteratorImp >\n-_\b1_\b6_\b1 struct iterator_traits< _\bD_\bu_\bn_\be::EntityIterator< codim, Grid, IteratorImp > >\n-162 {\n-_\b1_\b6_\b3 typedef ptrdiff_t _\bd_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\b__\bt_\by_\bp_\be;\n-_\b1_\b6_\b4 typedef const typename IteratorImp::Entity _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be;\n-_\b1_\b6_\b5 typedef _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be *_\bp_\bo_\bi_\bn_\bt_\be_\br;\n-_\b1_\b6_\b6 typedef _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be &_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-_\b1_\b6_\b7 typedef forward_iterator_tag _\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by;\n-168 };\n-169\n-170} // namespace std\n-171\n-172#endif // #ifndef DUNE_GRID_COMMON_ENTITYITERATOR_HH\n-_\bs_\bt_\bd\n-STL namespace.\n+_\b1_\b6_\b0 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br( ObjectStreamType& buffer )\n+161 : faceMapping_( _\br_\be_\ba_\bd_\bF_\ba_\bc_\be_\bM_\ba_\bp_\bp_\bi_\bn_\bg( buffer ) ),\n+162 boundarySegment_( _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt::_\br_\be_\bs_\bt_\bo_\br_\be( buffer ).release() )\n+163 {\n+164 }\n+165\n+_\b1_\b6_\b6 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be &global ) const\n+167 {\n+168 return _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt() ( faceMapping_.local( global ) );\n+169 }\n+170\n+_\b1_\b7_\b1 const _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt () const\n+172 {\n+173 return *boundarySegment_;\n+174 }\n+175\n+_\b1_\b7_\b6 void _\bb_\ba_\bc_\bk_\bu_\bp( ObjectStreamType& buffer ) const\n+177 {\n+178 // write identifier key first\n+179 buffer.write( (const char *) &_\bk_\be_\by(), sizeof(int));\n+180 // now all data\n+181 GeometryType type = faceMapping_.type();\n+182 buffer.write( (const char *) &type, sizeof(GeometryType) );\n+183\n+184 int corners = faceMapping_.corners() ;\n+185 buffer.write( (const char *) &corners, sizeof(int) );\n+186\n+187 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be corner( 0 );\n+188 for( int i=0; ibackup( buffer );\n+195 }\n+196\n+_\b1_\b9_\b7 static void _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by()\n+198 {\n+199 if( _\bk_\be_\by() < 0 )\n+200 {\n+201 _\bk_\be_\by() = Base::template registerFactory< ThisType >();\n+202 }\n+203 }\n+204\n+205 protected:\n+_\b2_\b0_\b6 static int& _\bk_\be_\by()\n+207 {\n+208 static int k = -1;\n+209 return k;\n+210 }\n+211\n+_\b2_\b1_\b2 FaceMapping _\br_\be_\ba_\bd_\bF_\ba_\bc_\be_\bM_\ba_\bp_\bp_\bi_\bn_\bg( ObjectStreamType& buffer )\n+213 {\n+214 GeometryType type;\n+215 buffer.read( (char *) &type, sizeof(GeometryType) );\n+216 int corners = 0;\n+217 buffer.read( (char *) &corners, sizeof(int) );\n+218 std::vector< CoordinateType > vertices( corners, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be(0) );\n+219 for( int i=0; i boundarySegment_;\n+229 };\n+230\n+231\n+232\n+234 //\n+235 // Example of boundary projection projection to a circle\n+236 //\n+238 template \n+_\b2_\b3_\b9 struct _\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn : public _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn< dimworld >\n+240 {\n+_\b2_\b4_\b2 typedef FieldVector< double, dimworld> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be;\n+243\n+_\b2_\b4_\b5 _\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn(const double radius = std::sqrt( (double)dimworld\n+))\n+246 : _\br_\ba_\bd_\bi_\bu_\bs_\b_( radius ) {}\n+247\n+_\b2_\b4_\b9 virtual _\b~_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn() {}\n+250\n+_\b2_\b5_\b2 virtual _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b (const _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be& global) const\n+253 {\n+254 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be prj( global );\n+255 // get adjustment factor\n+256 const double factor = _\br_\ba_\bd_\bi_\bu_\bs_\b_ / global.two_norm();\n+257 // adjust\n+258 prj *= factor;\n+259 return prj;\n+260 }\n+261\n+262 protected:\n+_\b2_\b6_\b4 const double _\br_\ba_\bd_\bi_\bu_\bs_\b_;\n+265 };\n+266\n+267} // end namespace\n+268\n+269#endif // #ifndef DUNE_GRID_COMMON_BOUNDARYPROJECTION_HH\n+_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n+Describes the parallel communication interface class for MessageBuffers and\n+DataHandles.\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh\n+Base class for grid boundary segments of arbitrary geometry.\n+_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-interface class for an iterator over grid entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-IteratorImp Implementation\n-type of underlying implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bm_\bp_\bl\n-Implementation & impl()\n-access to the underlying implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\ba_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IteratorImp realIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Grid::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-EntityIterator(const IteratorImp &imp)\n-copy constructor from implementaton\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-const Entity & operator*() const\n-Dereferencing operator.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n-bool operator!=(const EntityIterator &rhs) const\n-Checks for inequality.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-EntityIterator()\n-default construct (undefined) iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n-EntityIterator & operator++()\n-prefix increment operator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bm_\bp_\bl\n-const Implementation & impl() const\n-access to the underlying implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-std::conditional< std::is_lvalue_reference< decltype(realIterator.dereference\n-())>::value, constEntity &, Entity >::type Reference\n-Type of the reference used when derefencing the Ptr.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(const EntityIterator &rhs) const\n-Checks for equality.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n-const Entity & operator->() const\n-Pointer operator.\n-_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n-const IteratorImp::Entity value_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:164\n-_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n-_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by\n-forward_iterator_tag iterator_category\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:167\n-_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n-_\bd_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\b__\bt_\by_\bp_\be\n-ptrdiff_t difference_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:163\n-_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n-_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-value_type & reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:166\n-_\bs_\bt_\bd_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bI_\bm_\bp_\b _\b>_\b _\b>_\b:_\b:\n-_\bp_\bo_\bi_\bn_\bt_\be_\br\n-value_type * pointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entityiterator.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+Interface class for vertex projection at the boundary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\bh_\bi_\bs_\bT_\by_\bp_\be\n+DuneBoundaryProjection< dimworld > ThisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp\n+virtual void backup(ObjectStreamType &buffer) const\n+write DuneBoundaryProjection's data to stream buffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br\n+static std::unique_ptr< ThisType > restoreFromBuffer(MessageBufferIF< BufferImp\n+> &buffer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+virtual CoordinateType operator()(const CoordinateType &global) const =0\n+projection operator projection a global coordinate\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\bo_\bB_\bu_\bf_\bf_\be_\br\n+void toBuffer(BufferImp &buffer) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be\n+BaseType::ObjectStreamType ObjectStreamType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+virtual ~DuneBoundaryProjection()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bF_\br_\bo_\bm_\bB_\bu_\bf_\bf_\be_\br\n+static std::unique_ptr< ThisType > restoreFromBuffer(BufferImp &buffer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n+FieldVector< double, dimworld > CoordinateType\n+type of coordinate vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\bo_\bB_\bu_\bf_\bf_\be_\br\n+void toBuffer(MessageBufferIF< BufferImp > &buffer) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\ba_\bs_\be_\bT_\by_\bp_\be\n+BoundarySegmentBackupRestore< DuneBoundaryProjection< dimworld > > BaseType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n+BaseType::CoordinateType CoordinateType\n+type of coordinate vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+BoundaryProjectionWrapper(const BaseType &proje)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bp_\br_\bo_\bj_\b_\n+const BaseType & proj_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\ba_\bs_\be_\bT_\by_\bp_\be\n+DuneBoundaryProjection< dimworld > BaseType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+CoordinateType operator()(const CoordinateType &global) const\n+projection operator projection a global coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+~BoundaryProjectionWrapper()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+CoordinateType operator()(const CoordinateType &global) const\n+projection operator projection a global coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp\n+void backup(ObjectStreamType &buffer) const\n+write DuneBoundaryProjection's data to stream buffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bk_\be_\by\n+static int & key()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:206\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n+const BoundarySegment & boundarySegment() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n+BoundarySegmentWrapper(const GeometryType &type, const std::vector<\n+CoordinateType > &vertices, const std::shared_ptr< BoundarySegment >\n+&boundarySegment)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br\n+BoundarySegmentWrapper(ObjectStreamType &buffer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n+Dune::BoundarySegment< dim, dimworld > BoundarySegment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:143\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+static void registerFactory()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bF_\ba_\bc_\be_\bM_\ba_\bp_\bp_\bi_\bn_\bg\n+FaceMapping readFaceMapping(ObjectStreamType &buffer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:212\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n+Base::CoordinateType CoordinateType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bT_\by_\bp_\be\n+FieldVector< double, dimworld > CoordinateType\n+type of coordinate vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+CircleBoundaryProjection(const double radius=std::sqrt((double) dimworld))\n+constructor taking radius of circle (default = sqrt( dimworld ) )\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:245\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+virtual CoordinateType operator()(const CoordinateType &global) const\n+projection operator projection a global coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+virtual ~CircleBoundaryProjection()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bi_\br_\bc_\bl_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\br_\ba_\bd_\bi_\bu_\bs_\b_\n+const double radius_\n+radius of circ\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryprojection.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n+Base class for classes implementing geometries of boundary segments.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:\n+_\br_\be_\bs_\bt_\bo_\br_\be\n+static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)\n+create an object of BoundarySegment type from a previously registered factory\n+linked to key.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:\n+_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+static int registerFactory()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF\n+Communication message buffer interface. This class describes the interface for\n+reading and writing da...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(const T &val)\n+just wraps the call of the internal buffer method write which writes the data\n+of type T from the buff...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\be_\bs_\bs_\ba_\bg_\be_\bB_\bu_\bf_\bf_\be_\br_\bI_\bF_\b:_\b:_\br_\be_\ba_\bd\n+void read(T &val)\n+just wraps the call of the internal buffer method read which reads the data of\n+type T from the buffer...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:59\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00320.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00320.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: indexidset.hh File Reference\n+dune-grid: mapper.hh File Reference\n \n \n \n \n \n \n \n@@ -72,54 +72,40 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n \n-
    indexidset.hh File Reference
    \n+
    mapper.hh File Reference
    \n
    \n
    \n \n-

    Provides base classes for index and id sets. \n+

    Provides classes with basic mappers which are used to attach data to a grid. \n More...

    \n-
    #include <vector>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n+
    #include <utility>
    \n #include <dune/common/bartonnackmanifcheck.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp >
     Index Set Interface base class. More...
     
    struct  Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp >::Codim< cc >
     Export the type of the entity used as parameter in the index(...) method. More...
     
    class  Dune::IndexSetDefaultImplementation< GridImp, IndexSetImp >
     Provide default implementation of method if IndexSet. More...
     
    class  Dune::IdSet< GridImp, IdSetImp, IdTypeImp >
     Id Set Interface. More...
     
    struct  Dune::IdSet< GridImp, IdSetImp, IdTypeImp >::Codim< cc >
     Export the type of the entity used as parameter in the id(...) method. More...
    class  Dune::Mapper< G, MapperImp, IndexType >
     Mapper interface. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Provides base classes for index and id sets.

    \n-
    Author
    Peter Bastian
    \n+

    Provides classes with basic mappers which are used to attach data to a grid.

    \n+
    Author
    Peter Bastian
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,43 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-indexidset.hh File Reference\n-Provides base classes for index and id sets. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+mapper.hh File Reference\n+Provides classes with basic mappers which are used to attach data to a grid.\n+_\bM_\bo_\br_\be_\b._\b._\b.\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:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\bI_\bm_\bp_\b,_\b _\bT_\by_\bp_\be_\bs_\bI_\bm_\bp_\b _\b>\n-\u00a0 Index Set Interface base class. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\bI_\bm_\bp_\b,_\b _\bT_\by_\bp_\be_\bs_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b<\n- _\bc_\bc_\b _\b>\n-\u00a0 Export the type of the entity used as parameter in the index(...)\n- method. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b _\b>\n-\u00a0 Provide default implementation of method if _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bT_\by_\bp_\be_\bI_\bm_\bp_\b _\b>\n-\u00a0 Id Set Interface. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bT_\by_\bp_\be_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bc_\b _\b>\n-\u00a0 Export the type of the entity used as parameter in the id(...) method.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b,_\b _\bM_\ba_\bp_\bp_\be_\br_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 _\bM_\ba_\bp_\bp_\be_\br interface. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-Provides base classes for index and id sets.\n+Provides classes with basic mappers which are used to attach data to a grid.\n Author\n Peter Bastian\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00320_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00320_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: indexidset.hh Source File\n+dune-grid: mapper.hh Source File\n \n \n \n \n \n \n \n@@ -74,301 +74,123 @@\n \n
    \n \n
    \n
    \n
    \n-
    indexidset.hh
    \n+
    mapper.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_COMMON_INDEXIDSET_HH
    \n-
    7#define DUNE_GRID_COMMON_INDEXIDSET_HH
    \n-
    8
    \n-
    9#include <vector>
    \n-
    10#include <dune/common/exceptions.hh>
    \n-\n-
    12
    \n-
    13
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21
    \n-
    22#include <dune/common/bartonnackmanifcheck.hh>
    \n-
    23
    \n-
    76 template< class GridImp, class IndexSetImp, class IndexTypeImp, class TypesImp >
    \n-
    \n-\n-
    78 {
    \n-
    79 /* We use the remove_const to extract the Type from the mutable class,
    \n-
    80 because the const class is not instantiated yet. */
    \n-
    81 typedef typename std::remove_const< GridImp >::type::Traits Traits;
    \n-
    82
    \n-
    83 public:
    \n-
    85 template <int cc>
    \n-
    \n-
    86 struct Codim
    \n-
    87 {
    \n-
    88 typedef typename Traits :: template Codim<cc> :: Entity Entity;
    \n-
    89 };
    \n-
    \n-
    90
    \n-\n-
    93
    \n-
    95 typedef TypesImp Types;
    \n-
    96
    \n-
    98 static const int dimension = std::remove_const< GridImp >::type::dimension;
    \n-
    99
    \n-
    100 //===========================================================
    \n-
    104 //===========================================================
    \n-
    105
    \n-
    112 template<int cc>
    \n-
    \n-
    113 IndexType index (const typename Traits::template Codim<cc>::Entity& e) const
    \n-
    114 {
    \n-
    115 CHECK_INTERFACE_IMPLEMENTATION((asImp().template index<cc>(e)));
    \n-
    116 return asImp().template index<cc>(e);
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    128 template<class Entity>
    \n-
    \n-
    129 IndexType index (const Entity& e) const
    \n-
    130 {
    \n-
    131 constexpr static int cc = Entity::codimension;
    \n-
    132 CHECK_INTERFACE_IMPLEMENTATION((asImp().template index<cc>(e)));
    \n-
    133 return asImp().template index<cc>(e);
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    152 template< int cc >
    \n-
    \n-
    153 IndexType subIndex ( const typename Traits::template Codim< cc >::Entity &e,
    \n-
    154 int i, unsigned int codim ) const
    \n-
    155 {
    \n-\n-
    157 return asImp().template subIndex< cc >(e,i,codim);
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    181 template< class Entity >
    \n-
    \n-
    182 IndexType subIndex ( const Entity &e, int i, unsigned int codim ) const
    \n-
    183 {
    \n-
    184 static const int cc = Entity::codimension;
    \n-
    185 return asImp().template subIndex< cc >( e, i, codim );
    \n-
    186 }
    \n+
    5#ifndef DUNE_GRID_COMMON_MAPPER_HH
    \n+
    6#define DUNE_GRID_COMMON_MAPPER_HH
    \n+
    7
    \n+
    8#include <utility>
    \n+
    9
    \n+
    10#include <dune/common/bartonnackmanifcheck.hh>
    \n+
    11
    \n+
    89namespace Dune
    \n+
    90{
    \n+
    108 template <typename G, typename MapperImp, typename IndexType=int>
    \n+
    \n+
    109 class Mapper
    \n+
    110 {
    \n+
    111 public:
    \n+
    112
    \n+
    114 using Index = IndexType;
    \n+
    115
    \n+
    121 template<class EntityType>
    \n+
    \n+
    122 Index index (const EntityType& e) const
    \n+
    123 {
    \n+
    124 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e)));
    \n+
    125 return asImp().index(e);
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    128
    \n+
    \n+
    136 Index subIndex (const typename G::Traits::template Codim<0>::Entity& e,
    \n+
    137 int i,
    \n+
    138 unsigned int codim) const
    \n+
    139 {
    \n+
    140 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e,i,codim)));
    \n+
    141 return asImp().subIndex(e,i,codim);
    \n+
    142 }
    \n+
    \n+
    143
    \n+
    \n+
    152 auto size () const
    \n+
    153 {
    \n+
    154 CHECK_INTERFACE_IMPLEMENTATION((asImp().size()));
    \n+
    155 return asImp().size();
    \n+
    156 }
    \n+
    \n+
    157
    \n+
    158
    \n+
    166 template<class EntityType>
    \n+
    \n+
    167 bool contains (const EntityType& e, IndexType& result) const
    \n+
    168 {
    \n+
    169 CHECK_INTERFACE_IMPLEMENTATION((asImp().contains(e,result )));
    \n+
    170 return asImp().contains(e,result );
    \n+
    171 }
    \n+
    \n+
    172
    \n+
    173
    \n+
    \n+
    183 bool contains (const typename G::Traits::template Codim<0>::Entity& e, int i, int cc, IndexType& result) const
    \n+
    184 {
    \n+
    185 CHECK_INTERFACE_IMPLEMENTATION((asImp().contains(e,i,cc,result)))
    \n+
    186 return asImp().contains(e,i,cc,result);
    \n+
    187 }
    \n
    \n
    188
    \n-
    189
    \n-
    190 //===========================================================
    \n-
    194 //===========================================================
    \n-
    195
    \n-
    \n-
    211 Types types ( int codim ) const
    \n-
    212 {
    \n-\n-
    214 return asImp().types( codim );
    \n-
    215 }
    \n-
    \n+
    191 template <class GridView>
    \n+
    \n+
    192 void update (GridView&& gridView)
    \n+
    193 {
    \n+
    194 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp().update(std::forward<GridView>(gridView))));
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    199 [[deprecated("Use update(gridView) instead! Will be removed after release 2.8. Mappers have to implement update(gridView).")]]
    \n+
    \n+
    200 void update ()
    \n+
    201 {
    \n+
    202 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp().update()));
    \n+
    203 }
    \n+
    \n+
    204
    \n+
    205 private:
    \n+
    207 MapperImp& asImp () {return static_cast<MapperImp &> (*this);}
    \n+
    209 const MapperImp& asImp () const {return static_cast<const MapperImp &>(*this);}
    \n+
    210 };
    \n+
    \n+
    211
    \n+
    214#undef CHECK_INTERFACE_IMPLEMENTATION
    \n+
    215#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
    \n
    216
    \n-
    \n-
    223 auto size (GeometryType type) const
    \n-
    224 {
    \n-
    225 CHECK_INTERFACE_IMPLEMENTATION((asImp().size(type)));
    \n-
    226 return asImp().size(type);
    \n-
    227 }
    \n-
    \n-
    228
    \n-
    \n-
    236 auto size (int codim) const
    \n-
    237 {
    \n-\n-
    239 return asImp().size(codim);
    \n-
    240 }
    \n-
    \n-
    241
    \n-
    247 template<class Entity>
    \n-
    \n-
    248 bool contains (const Entity& e) const
    \n-
    249 {
    \n-\n-
    251 return asImp().contains(e);
    \n-
    252 }
    \n-
    \n-
    253
    \n-
    254 protected:
    \n-
    255 // Must be explicitly defined although this class should get a default constructor.
    \n-
    256 IndexSet() = default;
    \n-
    257
    \n-
    258 public:
    \n-
    260 IndexSet(const IndexSet&) = delete;
    \n-
    262 IndexSet& operator=(const IndexSet&) = delete;
    \n-
    263
    \n-
    264 private:
    \n-
    266 IndexSetImp& asImp () {return static_cast<IndexSetImp &> (*this);}
    \n-
    268 const IndexSetImp& asImp () const {return static_cast<const IndexSetImp &>(*this);}
    \n-
    269 };
    \n-
    \n-
    270
    \n-
    271#undef CHECK_INTERFACE_IMPLEMENTATION
    \n-
    272#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
    \n-
    273
    \n-
    274
    \n-
    275
    \n-
    279 template<class GridImp, class IndexSetImp>
    \n-
    \n-\n-
    281 : public IndexSet< GridImp, IndexSetImp >
    \n-
    282 {
    \n-\n-
    284 typedef typename std::remove_const< GridImp >::type::Traits Traits;
    \n-
    285
    \n-
    286 public:
    \n-
    288 typedef typename Base::IndexType IndexType;
    \n-
    289
    \n-
    290 typedef typename Base::Types Types;
    \n-
    291
    \n-
    293 static const int dimension = Base::dimension;
    \n-
    294
    \n-
    295 using Base::index;
    \n-
    296 using Base::subIndex;
    \n-
    297
    \n-
    298 //===========================================================
    \n-
    302 //===========================================================
    \n-
    303
    \n-
    304 Types types ( int codim ) const { return asImp().geomTypes( codim ); }
    \n-
    305
    \n-
    \n-
    313 auto size ( const int codim ) const
    \n-
    314 {
    \n-
    315 using SizeType = std::decay_t<decltype( Base::size( Dune::GeometryType() ) )>;
    \n-
    316
    \n-
    317 const std::vector< GeometryType > &geomTs = asImp().geomTypes( codim );
    \n-
    318 typedef typename std::vector< GeometryType >::const_iterator Iterator;
    \n-
    319
    \n-
    320 const Iterator end = geomTs.end();
    \n-
    321
    \n-
    322 SizeType s ( 0 );
    \n-
    323 for( Iterator it = geomTs.begin() ; it != end; ++it )
    \n-
    324 s += Base::size( *it );
    \n-
    325
    \n-
    326 return s;
    \n-
    327 }
    \n-
    \n-
    329
    \n-
    330 private:
    \n-
    331 IndexSetImp &asImp () { return static_cast< IndexSetImp & >( *this );}
    \n-
    332 const IndexSetImp &asImp () const { return static_cast< const IndexSetImp & >( *this ); }
    \n-
    333 };
    \n-
    \n-
    334
    \n-
    335
    \n-
    450 template<class GridImp, class IdSetImp, class IdTypeImp>
    \n-
    \n-
    451 class IdSet
    \n-
    452 {
    \n-
    453 /* We use the remove_const to extract the Type from the mutable class,
    \n-
    454 because the const class is not instantiated yet. */
    \n-
    455 using Traits = typename std::remove_const< GridImp >::type::Traits;
    \n-
    456 public:
    \n-\n-
    459
    \n-
    461 template <int cc>
    \n-
    \n-
    462 struct Codim {
    \n-
    463 using Entity = typename Traits::template Codim<cc>::Entity;
    \n-
    464 };
    \n-
    \n-
    465
    \n-
    467 static constexpr auto dimension = std::remove_const< GridImp >::type::dimension;
    \n-
    468
    \n-
    470 template<class Entity>
    \n-
    \n-
    471 IdType id (const Entity& e) const
    \n-
    472 {
    \n-
    473 constexpr static int cc = Entity::codimension;
    \n-
    474 return asImp().template id<cc>(e);
    \n-
    475 }
    \n-
    \n-
    476
    \n-
    478 template<int cc>
    \n-
    \n-
    479 IdType id (const typename Codim<cc>::Entity& e) const
    \n-
    480 {
    \n-
    481 return asImp().template id<cc>(e);
    \n-
    482 }
    \n-
    \n-
    483
    \n-
    \n-
    486 IdType subId (const typename Codim<0>::Entity& e, int i, unsigned int codim) const
    \n-
    487 {
    \n-
    488 return asImp().subId(e,i,codim);
    \n-
    489 }
    \n-
    \n-
    490
    \n-
    491 protected:
    \n-
    492 // Default constructor (is not provided automatically because copy constructor is private)
    \n-
    493 IdSet() = default;
    \n-
    494
    \n-
    495 public:
    \n-
    497 IdSet(const IdSet&) = delete;
    \n-
    499 IdSet& operator=(const IdSet&) = delete;
    \n-
    500
    \n-
    501 private:
    \n-
    503 IdSetImp& asImp () {return static_cast<IdSetImp &> (*this);}
    \n-
    505 const IdSetImp& asImp () const {return static_cast<const IdSetImp &>(*this);}
    \n-
    506 };
    \n-
    \n-
    507
    \n-
    508}
    \n-
    509
    \n-
    510#endif // DUNE_GRID_COMMON_INDEXIDSET_HH
    \n+
    217}
    \n+
    218#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n-
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n-
    auto size(int codim) const
    Return total number of entities of given codim in the entity set . This is simply a sum over all geom...
    Definition indexidset.hh:236
    \n-
    auto size(GeometryType type) const
    Return total number of entities of given geometry type in entity set .
    Definition indexidset.hh:223
    \n-
    IndexType subIndex(const Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:182
    \n-
    static const int dimension
    dimension of the grid (maximum allowed codimension)
    Definition indexidset.hh:98
    \n-
    IndexSet()=default
    \n-
    IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:153
    \n-
    TypesImp Types
    iterator range for geometry types in domain
    Definition indexidset.hh:95
    \n-
    Types types(int codim) const
    obtain all geometry types of entities in domain
    Definition indexidset.hh:211
    \n-
    IndexSet(const IndexSet &)=delete
    Forbid the copy constructor.
    \n-
    IndexType index(const typename Traits::template Codim< cc >::Entity &e) const
    Map entity to index. The result of calling this method with an entity that is not in the index set is...
    Definition indexidset.hh:113
    \n-
    IndexSet & operator=(const IndexSet &)=delete
    Forbid the assignment operator.
    \n-
    IndexTypeImp IndexType
    The type used for the indices.
    Definition indexidset.hh:92
    \n-
    IndexType index(const Entity &e) const
    Map entity to index. Easier to use than the above because codimension template parameter need not be ...
    Definition indexidset.hh:129
    \n-
    bool contains(const Entity &e) const
    Return true if the given entity is contained in .
    Definition indexidset.hh:248
    \n-
    Id Set Interface.
    Definition indexidset.hh:452
    \n-
    IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Get id of subentity i of co-dimension codim of a co-dimension 0 entity.
    Definition indexidset.hh:486
    \n-
    static constexpr auto dimension
    dimension of the grid (maximum allowed codimension)
    Definition indexidset.hh:467
    \n-
    IdSet(const IdSet &)=delete
    Forbid the copy constructor.
    \n-
    IdSet()=default
    \n-
    IdType id(const typename Codim< cc >::Entity &e) const
    Get id of an entity of codim cc. Unhandy because template parameter must be supplied explicitly.
    Definition indexidset.hh:479
    \n-
    IdTypeImp IdType
    Type used to represent an id.
    Definition indexidset.hh:458
    \n-
    IdSet & operator=(const IdSet &)=delete
    Forbid the assignment operator.
    \n-
    IdType id(const Entity &e) const
    Get id of an entity. This method is simpler to use than the one below.
    Definition indexidset.hh:471
    \n-
    Export the type of the entity used as parameter in the index(...) method.
    Definition indexidset.hh:87
    \n-
    Traits::template Codim< cc >::Entity Entity
    Definition indexidset.hh:88
    \n-
    Provide default implementation of method if IndexSet.
    Definition indexidset.hh:282
    \n-
    Base::IndexType IndexType
    The type used for the indices.
    Definition indexidset.hh:288
    \n-
    Base::Types Types
    Definition indexidset.hh:290
    \n-
    static const int dimension
    dimension of the grid (maximum allowed codimension)
    Definition indexidset.hh:293
    \n-
    Types types(int codim) const
    Definition indexidset.hh:304
    \n-
    auto size(const int codim) const
    Return total number of entities of given codim in the entity set . This is simply a sum over all geom...
    Definition indexidset.hh:313
    \n-
    Export the type of the entity used as parameter in the id(...) method.
    Definition indexidset.hh:462
    \n-
    typename Traits::template Codim< cc >::Entity Entity
    Definition indexidset.hh:463
    \n-
    Different resources needed by all grid implementations.
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    Mapper interface.
    Definition mapper.hh:110
    \n+
    auto size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mapper.hh:152
    \n+
    void update(GridView &&gridView)
    Reinitialize mapper after grid has been modified.
    Definition mapper.hh:192
    \n+
    void update()
    Reinitialize mapper after grid has been modified.
    Definition mapper.hh:200
    \n+
    Index index(const EntityType &e) const
    Map entity to array index.
    Definition mapper.hh:122
    \n+
    IndexType Index
    Number type used for indices.
    Definition mapper.hh:114
    \n+
    Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity i of codim cc of a codim 0 entity to array index.
    Definition mapper.hh:136
    \n+
    bool contains(const typename G::Traits::template Codim< 0 >::Entity &e, int i, int cc, IndexType &result) const
    Returns true if the subentity is contained in the index set and at the same time the array index is r...
    Definition mapper.hh:183
    \n+
    bool contains(const EntityType &e, IndexType &result) const
    Returns true if the entity is contained in the index set and at the same time the array index is retu...
    Definition mapper.hh:167
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,374 +1,140 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-indexidset.hh\n+mapper.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_COMMON_INDEXIDSET_HH\n-7#define DUNE_GRID_COMMON_INDEXIDSET_HH\n-8\n-9#include \n-10#include \n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-12\n-13\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21\n-22#include \n-23\n-76 template< class GridImp, class IndexSetImp, class IndexTypeImp, class\n-TypesImp >\n-_\b7_\b7 class _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-78 {\n-79 /* We use the remove_const to extract the Type from the mutable class,\n-80 because the const class is not instantiated yet. */\n-81 typedef typename std::remove_const< GridImp >::type::Traits Traits;\n-82\n-83 public:\n-85 template \n-_\b8_\b6 struct _\bC_\bo_\bd_\bi_\bm\n-87 {\n-_\b8_\b8 typedef typename Traits :: template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b> _\b:_\b:_\b _\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-89 };\n-90\n-_\b9_\b2 typedef _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\bI_\bm_\bp _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-93\n-_\b9_\b5 typedef _\bT_\by_\bp_\be_\bs_\bI_\bm_\bp _\bT_\by_\bp_\be_\bs;\n-96\n-_\b9_\b8 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = std::remove_const< GridImp >::type::dimension;\n-99\n-100 //===========================================================\n-104 //===========================================================\n-105\n-112 template\n-_\b1_\b1_\b3 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const typename Traits::template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by& _\be)\n-const\n-114 {\n-115 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be)));\n-116 return asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be);\n-117 }\n-118\n-128 template\n-_\b1_\b2_\b9 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const _\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n-130 {\n-131 constexpr static int _\bc_\bc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-132 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be)));\n-133 return asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be);\n-134 }\n-135\n-152 template< int cc >\n-_\b1_\b5_\b3 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const typename Traits::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bc_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-&_\be,\n-154 int i, unsigned int _\bc_\bo_\bd_\bi_\bm ) const\n-155 {\n-156 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp().template _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bc_\b _\b>\n-(_\be,i,_\bc_\bo_\bd_\bi_\bm)));\n-157 return asImp().template _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bc_\b _\b>(_\be,i,_\bc_\bo_\bd_\bi_\bm);\n-158 }\n-159\n-181 template< class Entity >\n-_\b1_\b8_\b2 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const _\bE_\bn_\bt_\bi_\bt_\by &_\be, int i, unsigned int _\bc_\bo_\bd_\bi_\bm ) const\n-183 {\n-184 static const int _\bc_\bc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-185 return asImp().template _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bc_\b _\b>( _\be, i, _\bc_\bo_\bd_\bi_\bm );\n-186 }\n+5#ifndef DUNE_GRID_COMMON_MAPPER_HH\n+6#define DUNE_GRID_COMMON_MAPPER_HH\n+7\n+8#include \n+9\n+10#include \n+11\n+89namespace _\bD_\bu_\bn_\be\n+90{\n+108 template \n+_\b1_\b0_\b9 class _\bM_\ba_\bp_\bp_\be_\br\n+110 {\n+111 public:\n+112\n+_\b1_\b1_\b4 using _\bI_\bn_\bd_\be_\bx = IndexType;\n+115\n+121 template\n+_\b1_\b2_\b2 _\bI_\bn_\bd_\be_\bx _\bi_\bn_\bd_\be_\bx (const EntityType& e) const\n+123 {\n+124 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e)));\n+125 return asImp().index(e);\n+126 }\n+127\n+128\n+_\b1_\b3_\b6 _\bI_\bn_\bd_\be_\bx _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename G::Traits::template Codim<0>::Entity& e,\n+137 int i,\n+138 unsigned int codim) const\n+139 {\n+140 CHECK_INTERFACE_IMPLEMENTATION((asImp().map(e,i,codim)));\n+141 return asImp().subIndex(e,i,codim);\n+142 }\n+143\n+_\b1_\b5_\b2 auto _\bs_\bi_\bz_\be () const\n+153 {\n+154 CHECK_INTERFACE_IMPLEMENTATION((asImp()._\bs_\bi_\bz_\be()));\n+155 return asImp().size();\n+156 }\n+157\n+158\n+166 template\n+_\b1_\b6_\b7 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e, IndexType& result) const\n+168 {\n+169 CHECK_INTERFACE_IMPLEMENTATION((asImp()._\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs(e,result )));\n+170 return asImp().contains(e,result );\n+171 }\n+172\n+173\n+_\b1_\b8_\b3 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const typename G::Traits::template Codim<0>::Entity& e, int\n+i, int cc, IndexType& result) const\n+184 {\n+185 CHECK_INTERFACE_IMPLEMENTATION((asImp()._\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs(e,i,cc,result)))\n+186 return asImp().contains(e,i,cc,result);\n+187 }\n 188\n-189\n-190 //===========================================================\n-194 //===========================================================\n-195\n-_\b2_\b1_\b1 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs ( int _\bc_\bo_\bd_\bi_\bm ) const\n-212 {\n-213 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN( (asImp()._\bt_\by_\bp_\be_\bs( _\bc_\bo_\bd_\bi_\bm )) );\n-214 return asImp().types( _\bc_\bo_\bd_\bi_\bm );\n-215 }\n-216\n-_\b2_\b2_\b3 auto _\bs_\bi_\bz_\be (GeometryType type) const\n-224 {\n-225 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp()._\bs_\bi_\bz_\be(type)));\n-226 return asImp().size(type);\n-227 }\n-228\n-_\b2_\b3_\b6 auto _\bs_\bi_\bz_\be (int _\bc_\bo_\bd_\bi_\bm) const\n-237 {\n-238 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp()._\bs_\bi_\bz_\be(_\bc_\bo_\bd_\bi_\bm)));\n-239 return asImp().size(_\bc_\bo_\bd_\bi_\bm);\n-240 }\n-241\n-247 template\n-_\b2_\b4_\b8 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const _\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n-249 {\n-250 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp()._\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs(_\be)));\n-251 return asImp().contains(_\be);\n-252 }\n-253\n-254 protected:\n-255 // Must be explicitly defined although this class should get a default\n-constructor.\n-_\b2_\b5_\b6 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt() = default;\n-257\n-258 public:\n-_\b2_\b6_\b0 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt&) = delete;\n-_\b2_\b6_\b2 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt&) = delete;\n-263\n-264 private:\n-266 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp& asImp () {return static_cast<_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp &> (*this);}\n-268 const IndexSetImp& asImp () const {return static_cast\n-(*this);}\n-269 };\n-270\n-271#undef CHECK_INTERFACE_IMPLEMENTATION\n-272#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION\n-273\n-274\n-275\n-279 template\n-_\b2_\b8_\b0 class _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-281 : public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt< GridImp, IndexSetImp >\n-282 {\n-283 typedef _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b _\b> _\bB_\ba_\bs_\be;\n-284 typedef typename std::remove_const< GridImp >::type::Traits Traits;\n-285\n-286 public:\n-_\b2_\b8_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-289\n-_\b2_\b9_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\by_\bp_\be_\bs _\bT_\by_\bp_\be_\bs;\n-291\n-_\b2_\b9_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-294\n-295 using _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bd_\be_\bx;\n-296 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx;\n-297\n-298 //===========================================================\n-302 //===========================================================\n-303\n-_\b3_\b0_\b4 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs ( int codim ) const { return asImp().geomTypes( codim ); }\n-305\n-_\b3_\b1_\b3 auto _\bs_\bi_\bz_\be ( const int codim ) const\n-314 {\n-315 using SizeType = std::decay_t;\n-316\n-317 const std::vector< GeometryType > &geomTs = asImp().geomTypes( codim );\n-318 typedef typename std::vector< GeometryType >::const_iterator Iterator;\n-319\n-320 const Iterator end = geomTs.end();\n-321\n-322 SizeType s ( 0 );\n-323 for( Iterator it = geomTs.begin() ; it != end; ++it )\n-324 s += _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bi_\bz_\be( *it );\n-325\n-326 return s;\n-327 }\n-329\n-330 private:\n-331 IndexSetImp &asImp () { return static_cast< IndexSetImp & >( *this );}\n-332 const IndexSetImp &asImp () const { return static_cast< const IndexSetImp &\n->( *this ); }\n-333 };\n-334\n-335\n-450 template\n-_\b4_\b5_\b1 class _\bI_\bd_\bS_\be_\bt\n-452 {\n-453 /* We use the remove_const to extract the Type from the mutable class,\n-454 because the const class is not instantiated yet. */\n-455 using Traits = typename std::remove_const< GridImp >::type::Traits;\n-456 public:\n-_\b4_\b5_\b8 typedef _\bI_\bd_\bT_\by_\bp_\be_\bI_\bm_\bp _\bI_\bd_\bT_\by_\bp_\be;\n-459\n-461 template \n-_\b4_\b6_\b2 struct _\bC_\bo_\bd_\bi_\bm {\n-_\b4_\b6_\b3 using _\bE_\bn_\bt_\bi_\bt_\by = typename Traits::template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by;\n-464 };\n-465\n-_\b4_\b6_\b7 static constexpr auto _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = std::remove_const< GridImp >::type::\n-dimension;\n-468\n-470 template\n-_\b4_\b7_\b1 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const _\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n-472 {\n-473 constexpr static int _\bc_\bc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-474 return asImp().template _\bi_\bd_\b<_\bc_\bc_\b>(_\be);\n-475 }\n-476\n-478 template\n-_\b4_\b7_\b9 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n-480 {\n-481 return asImp().template _\bi_\bd_\b<_\bc_\bc_\b>(_\be);\n-482 }\n-483\n-_\b4_\b8_\b6 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename _\bC_\bo_\bd_\bi_\bm_\b<_\b0_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by& _\be, int i, unsigned int\n-_\bc_\bo_\bd_\bi_\bm) const\n-487 {\n-488 return asImp().subId(_\be,i,_\bc_\bo_\bd_\bi_\bm);\n-489 }\n-490\n-491 protected:\n-492 // Default constructor (is not provided automatically because copy\n-constructor is private)\n-_\b4_\b9_\b3 _\bI_\bd_\bS_\be_\bt() = default;\n-494\n-495 public:\n-_\b4_\b9_\b7 _\bI_\bd_\bS_\be_\bt(const _\bI_\bd_\bS_\be_\bt&) = delete;\n-_\b4_\b9_\b9 _\bI_\bd_\bS_\be_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bd_\bS_\be_\bt&) = delete;\n-500\n-501 private:\n-503 IdSetImp& asImp () {return static_cast (*this);}\n-505 const IdSetImp& asImp () const {return static_cast\n+191 template \n+_\b1_\b9_\b2 void _\bu_\bp_\bd_\ba_\bt_\be (_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw&& gridView)\n+193 {\n+194 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp()._\bu_\bp_\bd_\ba_\bt_\be(std::\n+forward(gridView))));\n+195 }\n+196\n+199 [[deprecated(\"Use update(gridView) instead! Will be removed after release\n+2.8. Mappers have to implement update(gridView).\")]]\n+_\b2_\b0_\b0 void _\bu_\bp_\bd_\ba_\bt_\be ()\n+201 {\n+202 CHECK_AND_CALL_INTERFACE_IMPLEMENTATION((asImp()._\bu_\bp_\bd_\ba_\bt_\be()));\n+203 }\n+204\n+205 private:\n+207 MapperImp& asImp () {return static_cast (*this);}\n+209 const MapperImp& asImp () const {return static_cast\n (*this);}\n-506 };\n-507\n-508}\n-509\n-510#endif // DUNE_GRID_COMMON_INDEXIDSET_HH\n+210 };\n+211\n+214#undef CHECK_INTERFACE_IMPLEMENTATION\n+215#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION\n+216\n+217}\n+218#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-Know your own codimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Index Set Interface base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-auto size(int codim) const\n-Return total number of entities of given codim in the entity set . This is\n-simply a sum over all geom...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-auto size(GeometryType type) const\n-Return total number of entities of given geometry type in entity set .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-IndexType subIndex(const Entity &e, int i, unsigned int codim) const\n-Map a subentity to an index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-dimension of the grid (maximum allowed codimension)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-IndexSet()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int\n-i, unsigned int codim) const\n-Map a subentity to an index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bT_\by_\bp_\be_\bs\n-TypesImp Types\n-iterator range for geometry types in domain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n-Types types(int codim) const\n-obtain all geometry types of entities in domain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-IndexSet(const IndexSet &)=delete\n-Forbid the copy constructor.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-IndexType index(const typename Traits::template Codim< cc >::Entity &e) const\n-Map entity to index. The result of calling this method with an entity that is\n-not in the index set is...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-IndexSet & operator=(const IndexSet &)=delete\n-Forbid the assignment operator.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-IndexTypeImp IndexType\n-The type used for the indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-IndexType index(const Entity &e) const\n-Map entity to index. Easier to use than the above because codimension template\n-parameter need not be ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const Entity &e) const\n-Return true if the given entity is contained in .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-Id Set Interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim)\n-const\n-Get id of subentity i of co-dimension codim of a co-dimension 0 entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:486\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr auto dimension\n-dimension of the grid (maximum allowed codimension)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:467\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-IdSet(const IdSet &)=delete\n-Forbid the copy constructor.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-IdSet()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const typename Codim< cc >::Entity &e) const\n-Get id of an entity of codim cc. Unhandy because template parameter must be\n-supplied explicitly.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:479\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n-IdTypeImp IdType\n-Type used to represent an id.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:458\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-IdSet & operator=(const IdSet &)=delete\n-Forbid the assignment operator.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const Entity &e) const\n-Get id of an entity. This method is simpler to use than the one below.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:471\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-Export the type of the entity used as parameter in the index(...) method.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Traits::template Codim< cc >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-Provide default implementation of method if IndexSet.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:282\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-Base::IndexType IndexType\n-The type used for the indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:288\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\by_\bp_\be_\bs\n-Base::Types Types\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:290\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-dimension of the grid (maximum allowed codimension)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:293\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be_\bs\n-Types types(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:304\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be\n-auto size(const int codim) const\n-Return total number of entities of given codim in the entity set . This is\n-simply a sum over all geom...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:313\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-Export the type of the entity used as parameter in the id(...) method.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:462\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-typename Traits::template Codim< cc >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:463\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid view abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br\n+Mapper interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+auto size() const\n+Return total number of entities in the entity set managed by the mapper.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:152\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(GridView &&gridView)\n+Reinitialize mapper after grid has been modified.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:192\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+Reinitialize mapper after grid has been modified.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:200\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+Index index(const EntityType &e) const\n+Map entity to array index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+IndexType Index\n+Number type used for indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i,\n+unsigned int codim) const\n+Map subentity i of codim cc of a codim 0 entity to array index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const typename G::Traits::template Codim< 0 >::Entity &e, int i,\n+int cc, IndexType &result) const\n+Returns true if the subentity is contained in the index set and at the same\n+time the array index is r...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:183\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const EntityType &e, IndexType &result) const\n+Returns true if the entity is contained in the index set and at the same time\n+the array index is retu...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:167\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00323.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00323.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: exceptions.hh File Reference\n+dune-grid: partitionset.hh File Reference\n \n \n \n \n \n \n \n@@ -71,33 +71,100 @@\n \n
    \n
    \n
    \n \n-
    exceptions.hh File Reference
    \n+Namespaces |\n+Typedefs |\n+Variables
    \n+
    partitionset.hh File Reference
    \n \n
    \n-
    #include <dune/common/exceptions.hh>
    \n+
    #include <dune/common/keywords.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::GridError
     Base class for exceptions in Dune grid modules. More...
    struct  Dune::PartitionSet< partitions >
     A set of PartitionType values. More...
     
    \n \n \n \n \n+\n+\n+\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Partitions
     Predefined PartitionSets for commonly used combinations of parallel grid PartitionTypes.
     
    \n+\n+\n+\n+\n+\n+\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

    typedef PartitionSet<... > Dune::Partitions::Interior
     Type of PartitionSet for the interior partition.
     
    typedef PartitionSet<... > Dune::Partitions::Border
     Type of PartitionSet for the border partition.
     
    typedef PartitionSet<... > Dune::Partitions::Overlap
     Type of PartitionSet for the overlap partition.
     
    typedef PartitionSet<... > Dune::Partitions::Front
     Type of PartitionSet for the front partition.
     
    typedef PartitionSet<... > Dune::Partitions::Ghost
     Type of PartitionSet for the ghost partition.
     
    typedef PartitionSet<... > Dune::Partitions::InteriorBorder
     Type of PartitionSet for the interior and border partitions.
     
    typedef PartitionSet<... > Dune::Partitions::InteriorBorderOverlap
     Type of PartitionSet for the interior, border and overlap partitions.
     
    typedef PartitionSet<... > Dune::Partitions::InteriorBorderOverlapFront
     Type of PartitionSet for the interior, border, overlap and front partitions.
     
    typedef PartitionSet<... > Dune::Partitions::All
     Type of PartitionSet for all partitions.
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Variables

    constexpr Interior Dune::Partitions::interior
     PartitionSet for the interior partition.
     
    constexpr Border Dune::Partitions::border
     PartitionSet for the border partition.
     
    constexpr Overlap Dune::Partitions::overlap
     PartitionSet for the overlap partition.
     
    constexpr Front Dune::Partitions::front
     PartitionSet for the front partition.
     
    constexpr Ghost Dune::Partitions::ghost
     PartitionSet for the ghost partition.
     
    constexpr InteriorBorder Dune::Partitions::interiorBorder
     PartitionSet for the interior and border partitions.
     
    constexpr InteriorBorderOverlap Dune::Partitions::interiorBorderOverlap
     PartitionSet for the interior, border and overlap partitions.
     
    constexpr InteriorBorderOverlapFront Dune::Partitions::interiorBorderOverlapFront
     PartitionSet for the interior, border, overlap and front partitions.
     
    constexpr All Dune::Partitions::all
     PartitionSet for all partitions.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,90 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-exceptions.hh File Reference\n-#include \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 | _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs\n+partitionset.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\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:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-\u00a0 Base class for exceptions in _\bD_\bu_\bn_\be grid modules. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\b _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b _\b>\n+\u00a0 A set of PartitionType values. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs\n+\u00a0 Predefined PartitionSets for commonly used combinations of parallel\n+ grid PartitionTypes.\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior partition.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bB_\bo_\br_\bd_\be_\br\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the border partition.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the overlap partition.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\br_\bo_\bn_\bt\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the front partition.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\bh_\bo_\bs_\bt\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the ghost partition.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior and border\n+ partitions.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\bO_\bv_\be_\br_\bl_\ba_\bp\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior, border and\n+ overlap partitions.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior, border,\n+ overlap and front partitions.\n+\u00a0\n+typedef _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt<... >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bA_\bl_\bl\n+\u00a0 Type of _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for all partitions.\n+\u00a0\n+V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n+ constexpr _\bI_\bn_\bt_\be_\br_\bi_\bo_\br\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior partition.\n+\u00a0\n+ constexpr _\bB_\bo_\br_\bd_\be_\br\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bb_\bo_\br_\bd_\be_\br\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the border partition.\n+\u00a0\n+ constexpr _\bO_\bv_\be_\br_\bl_\ba_\bp\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bo_\bv_\be_\br_\bl_\ba_\bp\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the overlap partition.\n+\u00a0\n+ constexpr _\bF_\br_\bo_\bn_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bf_\br_\bo_\bn_\bt\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the front partition.\n+\u00a0\n+ constexpr _\bG_\bh_\bo_\bs_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bg_\bh_\bo_\bs_\bt\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the ghost partition.\n+\u00a0\n+ constexpr _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior and border\n+ partitions.\n+\u00a0\n+ constexpr _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\bO_\bv_\be_\br_\bl_\ba_\bp\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\bO_\bv_\be_\br_\bl_\ba_\bp\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior, border and\n+ overlap partitions.\n+\u00a0\n+constexpr _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+ _\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for the interior, border,\n+ overlap and front partitions.\n+\u00a0\n+ constexpr _\bA_\bl_\bl\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\ba_\bl_\bl\n+\u00a0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt for all partitions.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00323_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00323_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: exceptions.hh Source File\n+dune-grid: partitionset.hh Source File\n \n \n \n \n \n \n \n@@ -74,43 +74,352 @@\n \n
    \n \n
    \n
    \n
    \n-
    exceptions.hh
    \n+
    partitionset.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH
    \n-
    6#define DUNE_GRID_COMMON_EXCEPTIONS_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_PARTITIONSET_HH
    \n+
    6#define DUNE_GRID_COMMON_PARTITIONSET_HH
    \n
    7
    \n-
    8#include <dune/common/exceptions.hh>
    \n-
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    12
    \n-
    13 // GridError
    \n-
    14 // ---------
    \n-
    15
    \n-
    \n-\n-
    19 : public Exception
    \n-
    20 {};
    \n-
    \n-
    21
    \n-
    22}
    \n-
    23
    \n-
    24#endif // #ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH
    \n+
    8#include <dune/common/keywords.hh>
    \n+
    9#include <dune/common/typetraits.hh>
    \n+\n+
    11
    \n+
    12namespace Dune {
    \n+
    13
    \n+
    19 namespace {
    \n+
    20
    \n+
    21 // Simple TMP to deduce partition iterator type from set of partitions.
    \n+
    22 template<unsigned int partitions>
    \n+
    23 struct derive_partition_iterator_type
    \n+
    24 {
    \n+
    25 // We did not match any specialization, bail out...
    \n+
    26 static_assert(AlwaysFalse<std::integral_constant<unsigned int,partitions> >::value,
    \n+
    27 "There is no partition iterator for this combination of entity partitions");
    \n+
    28 };
    \n+
    29
    \n+
    30
    \n+
    31 // specializations of derive_partition_iterator_type for existing PartitionIteratorTypes
    \n+
    32
    \n+
    33 template<>
    \n+
    34 struct derive_partition_iterator_type<
    \n+
    35 (1 << InteriorEntity)
    \n+
    36 >
    \n+
    37 : public std::integral_constant<PartitionIteratorType,Interior_Partition>
    \n+
    38 {};
    \n+
    39
    \n+
    40 template<>
    \n+
    41 struct derive_partition_iterator_type<
    \n+
    42 (1 << InteriorEntity) |
    \n+
    43 (1 << BorderEntity)
    \n+
    44 >
    \n+
    45 : public std::integral_constant<PartitionIteratorType,InteriorBorder_Partition>
    \n+
    46 {};
    \n+
    47
    \n+
    48 template<>
    \n+
    49 struct derive_partition_iterator_type<
    \n+
    50 (1 << InteriorEntity) |
    \n+
    51 (1 << BorderEntity) |
    \n+
    52 (1 << OverlapEntity)
    \n+
    53 >
    \n+
    54 : public std::integral_constant<PartitionIteratorType,Overlap_Partition>
    \n+
    55 {};
    \n+
    56
    \n+
    57 template<>
    \n+
    58 struct derive_partition_iterator_type<
    \n+
    59 (1 << InteriorEntity) |
    \n+
    60 (1 << BorderEntity) |
    \n+
    61 (1 << OverlapEntity) |
    \n+
    62 (1 << FrontEntity)
    \n+
    63 >
    \n+
    64 : public std::integral_constant<PartitionIteratorType,OverlapFront_Partition>
    \n+
    65 {};
    \n+
    66
    \n+
    67 template<>
    \n+
    68 struct derive_partition_iterator_type<
    \n+
    69 (1 << InteriorEntity) |
    \n+
    70 (1 << BorderEntity) |
    \n+
    71 (1 << OverlapEntity) |
    \n+
    72 (1 << FrontEntity) |
    \n+
    73 (1 << GhostEntity)
    \n+
    74 >
    \n+
    75 : public std::integral_constant<PartitionIteratorType,All_Partition>
    \n+
    76 {};
    \n+
    77
    \n+
    78 template<>
    \n+
    79 struct derive_partition_iterator_type<
    \n+
    80 (1 << GhostEntity)
    \n+
    81 >
    \n+
    82 : public std::integral_constant<PartitionIteratorType,Ghost_Partition>
    \n+
    83 {};
    \n+
    84
    \n+
    85
    \n+
    86 // Simple TMP to deduce set of partitions from partition iterator type.
    \n+
    87
    \n+
    88 template<PartitionIteratorType pitype>
    \n+
    89 struct derive_partition_set;
    \n+
    90
    \n+
    91
    \n+
    92 // specializations of derive_partition_set for existing PartitionIteratorTypes
    \n+
    93
    \n+
    94 template<>
    \n+
    95 struct derive_partition_set<Interior_Partition>
    \n+
    96 : std::integral_constant<unsigned int, (1 << InteriorEntity)>
    \n+
    97 {};
    \n+
    98
    \n+
    99 template<>
    \n+
    100 struct derive_partition_set<InteriorBorder_Partition>
    \n+
    101 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity)>
    \n+
    102 {};
    \n+
    103
    \n+
    104 template<>
    \n+
    105 struct derive_partition_set<Overlap_Partition>
    \n+
    106 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity) | (1 << OverlapEntity)>
    \n+
    107 {};
    \n+
    108
    \n+
    109 template<>
    \n+
    110 struct derive_partition_set<OverlapFront_Partition>
    \n+
    111 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity) | (1 << OverlapEntity) | (1 << FrontEntity)>
    \n+
    112 {};
    \n+
    113
    \n+
    114 template<>
    \n+
    115 struct derive_partition_set<Ghost_Partition>
    \n+
    116 : std::integral_constant<unsigned int, (1 << GhostEntity)>
    \n+
    117 {};
    \n+
    118
    \n+
    119 template<>
    \n+
    120 struct derive_partition_set<All_Partition>
    \n+
    121 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity) | (1 << OverlapEntity) | (1 << FrontEntity) | (1 << GhostEntity)>
    \n+
    122 {};
    \n+
    123
    \n+
    124 } // anonymous namespace
    \n+
    125
    \n+
    126
    \n+
    128
    \n+
    136 template<unsigned int partitions>
    \n+
    \n+
    137 struct PartitionSet
    \n+
    138 {
    \n+
    140 static constexpr unsigned int value = partitions;
    \n+
    141
    \n+
    142
    \n+
    144 template<unsigned int p>
    \n+
    145 struct PartitionSet<partitions | p>
    \n+
    \n+
    146 constexpr operator+(const PartitionSet<p>&) const
    \n+
    147 {
    \n+
    148 return PartitionSet<partitions | p>();
    \n+
    149 }
    \n+
    \n+
    150
    \n+
    152 template<unsigned int p>
    \n+
    153 struct PartitionSet<partitions & ~p>
    \n+
    \n+
    154 constexpr operator-(const PartitionSet<p>&) const
    \n+
    155 {
    \n+
    156 return PartitionSet<partitions & ~p>();
    \n+
    157 }
    \n+
    \n+
    158
    \n+
    \n+
    160 friend std::ostream& operator<<(std::ostream& os, const PartitionSet&)
    \n+
    161 {
    \n+
    162 unsigned int set = partitions;
    \n+
    163 os << "partition set {";
    \n+
    164 bool first = true;
    \n+
    165 for (unsigned int p = 0; set; set &= ~(1 << p++))
    \n+
    166 {
    \n+
    167 if (!(set & (1 << p)))
    \n+
    168 continue;
    \n+
    169 if (!first)
    \n+
    170 os << ",";
    \n+
    171 first = false;
    \n+
    172 os << static_cast<PartitionType>(p);
    \n+
    173 }
    \n+
    174 os << "}";
    \n+
    175 return os;
    \n+
    176 }
    \n+
    \n+
    177
    \n+
    179
    \n+
    \n+
    183 static constexpr PartitionIteratorType partitionIterator()
    \n+
    184 {
    \n+
    185 return derive_partition_iterator_type<partitions>::value;
    \n+
    186 }
    \n+
    \n+
    187
    \n+
    \n+
    189 static constexpr bool contains(PartitionType pt)
    \n+
    190 {
    \n+
    191 return partitions & (1 << pt);
    \n+
    192 }
    \n+
    \n+
    193
    \n+
    195 template<unsigned int contained_partitions>
    \n+
    \n+
    196 static constexpr bool contains(PartitionSet<contained_partitions>)
    \n+
    197 {
    \n+
    198 return (partitions & contained_partitions) == contained_partitions;
    \n+
    199 }
    \n+
    \n+
    200
    \n+
    202 template<unsigned int p2>
    \n+
    \n+
    203 constexpr bool operator==(PartitionSet<p2>) const
    \n+
    204 {
    \n+
    205 return partitions == p2;
    \n+
    206 }
    \n+
    \n+
    207
    \n+
    209 template<unsigned int p2>
    \n+
    \n+
    210 constexpr bool operator!=(PartitionSet<p2>) const
    \n+
    211 {
    \n+
    212 return partitions != p2;
    \n+
    213 }
    \n+
    \n+
    214
    \n+
    215 };
    \n+
    \n+
    216
    \n+
    218
    \n+
    221 template<PartitionType p>
    \n+
    \n+
    222 PartitionSet<(1 << p)> partitionSet()
    \n+
    223 {
    \n+
    224 return PartitionSet<(1 << p)>();
    \n+
    225 }
    \n+
    \n+
    226
    \n+
    231 template<PartitionIteratorType pitype>
    \n+
    \n+
    232 constexpr PartitionSet<derive_partition_set<pitype>::value> partitionSet()
    \n+
    233 {
    \n+
    234 return PartitionSet<derive_partition_set<pitype>::value>();
    \n+
    235 }
    \n+
    \n+
    236
    \n+
    \n+
    238 namespace Partitions {
    \n+
    239
    \n+
    240
    \n+
    241#ifdef DOXYGEN
    \n+
    242
    \n+
    244 typedef PartitionSet<...> Interior;
    \n+
    245
    \n+
    247 typedef PartitionSet<...> Border;
    \n+
    248
    \n+
    250 typedef PartitionSet<...> Overlap;
    \n+
    251
    \n+
    253 typedef PartitionSet<...> Front;
    \n+
    254
    \n+
    256 typedef PartitionSet<...> Ghost;
    \n+
    257
    \n+
    259 typedef PartitionSet<...> InteriorBorder;
    \n+
    260
    \n+
    262 typedef PartitionSet<...> InteriorBorderOverlap;
    \n+
    263
    \n+
    265 typedef PartitionSet<...> InteriorBorderOverlapFront;
    \n+
    266
    \n+
    268 typedef PartitionSet<...> All;
    \n+
    269
    \n+
    270
    \n+
    272 constexpr Interior interior;
    \n+
    273
    \n+
    275 constexpr Border border;
    \n+
    276
    \n+
    278 constexpr Overlap overlap;
    \n+
    279
    \n+
    281 constexpr Front front;
    \n+
    282
    \n+
    284 constexpr Ghost ghost;
    \n+
    285
    \n+
    287 constexpr InteriorBorder interiorBorder;
    \n+
    288
    \n+
    290 constexpr InteriorBorderOverlap interiorBorderOverlap;
    \n+
    291
    \n+
    293 constexpr InteriorBorderOverlapFront interiorBorderOverlapFront;
    \n+
    294
    \n+
    296 constexpr All all;
    \n+
    297
    \n+
    298#else // DOXYGEN
    \n+
    299
    \n+
    300 // First declare the types and objects for individual partitions
    \n+
    301
    \n+
    302 typedef decltype(partitionSet<InteriorEntity>()) Interior;
    \n+
    303 typedef decltype(partitionSet<BorderEntity>()) Border;
    \n+
    304 typedef decltype(partitionSet<OverlapEntity>()) Overlap;
    \n+
    305 typedef decltype(partitionSet<FrontEntity>()) Front;
    \n+
    306 typedef decltype(partitionSet<GhostEntity>()) Ghost;
    \n+
    307
    \n+
    308#ifndef __cpp_inline_variables
    \n+
    309 namespace {
    \n+
    310#endif
    \n+
    311
    \n+
    312 // place global objects in anonymous namespace to ensure that visibility is
    \n+
    313 // restricted to the current translation unit, making it easier for the compiler
    \n+
    314 // to eliminate the actual objects and to avoid linking problems
    \n+
    315
    \n+
    316 DUNE_INLINE_VARIABLE constexpr Interior interior = {};
    \n+
    317 DUNE_INLINE_VARIABLE constexpr Border border = {};
    \n+
    318 DUNE_INLINE_VARIABLE constexpr Overlap overlap = {};
    \n+
    319 DUNE_INLINE_VARIABLE constexpr Front front = {};
    \n+
    320 DUNE_INLINE_VARIABLE constexpr Ghost ghost = {};
    \n+
    321
    \n+
    322#ifndef __cpp_inline_variables
    \n+
    323 }
    \n+
    324#endif
    \n+
    325
    \n+
    326 // Now we can declare the partition sets that are a result of combining partitions
    \n+
    327
    \n+
    328 typedef decltype(interior + border) InteriorBorder;
    \n+
    329 typedef decltype(interior + border + overlap) InteriorBorderOverlap;
    \n+
    330 typedef decltype(interior + border + overlap + front) InteriorBorderOverlapFront;
    \n+
    331 typedef decltype(interior + border + overlap + front + ghost) All;
    \n+
    332
    \n+
    333#ifndef __cpp_inline_variables
    \n+
    334 namespace {
    \n+
    335#endif
    \n+
    336
    \n+
    337 // again, place the global objects in an anonymous namespace
    \n+
    338
    \n+
    339 DUNE_INLINE_VARIABLE constexpr InteriorBorder interiorBorder = {};
    \n+
    340 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlap interiorBorderOverlap = {};
    \n+
    341 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlapFront interiorBorderOverlapFront = {};
    \n+
    342 DUNE_INLINE_VARIABLE constexpr All all = {};
    \n+
    343
    \n+
    344#ifndef __cpp_inline_variables
    \n+
    345 }
    \n+
    346#endif
    \n+
    347
    \n+
    348#endif // DOXYGEN
    \n+
    349
    \n+
    350 } // namespace Partitions
    \n+
    \n+
    351
    \n+
    356} // namespace Dune
    \n+
    357
    \n+
    358#endif // DUNE_GRID_COMMON_PARTITIONSET_HH
    \n+\n+
    @ Interior_Partition
    only interior entities
    Definition gridenums.hh:137
    \n+
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n+
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n+
    @ GhostEntity
    ghost entities
    Definition gridenums.hh:35
    \n+
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n+
    @ OverlapEntity
    all entities lying in the overlap zone
    Definition gridenums.hh:33
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,40 +1,357 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-exceptions.hh\n+partitionset.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH\n-6#define DUNE_GRID_COMMON_EXCEPTIONS_HH\n+5#ifndef DUNE_GRID_COMMON_PARTITIONSET_HH\n+6#define DUNE_GRID_COMMON_PARTITIONSET_HH\n 7\n-8#include \n-9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-12\n-13 // GridError\n-14 // ---------\n-15\n-_\b1_\b8 class _\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-19 : public Exception\n-20 {};\n-21\n-22}\n-23\n-24#endif // #ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH\n+8#include \n+9#include \n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be {\n+13\n+19 namespace {\n+20\n+21 // Simple TMP to deduce partition iterator type from set of partitions.\n+22 template\n+23 struct derive_partition_iterator_type\n+24 {\n+25 // We did not match any specialization, bail out...\n+26 static_assert(AlwaysFalse\n+>::value,\n+27 \"There is no partition iterator for this combination of entity partitions\");\n+28 };\n+29\n+30\n+31 // specializations of derive_partition_iterator_type for existing\n+PartitionIteratorTypes\n+32\n+33 template<>\n+34 struct derive_partition_iterator_type<\n+35 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by)\n+36 >\n+37 : public std::integral_constant\n+38 {};\n+39\n+40 template<>\n+41 struct derive_partition_iterator_type<\n+42 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+43 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by)\n+44 >\n+45 : public std::\n+integral_constant\n+46 {};\n+47\n+48 template<>\n+49 struct derive_partition_iterator_type<\n+50 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+51 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+52 (1 << _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by)\n+53 >\n+54 : public std::integral_constant\n+55 {};\n+56\n+57 template<>\n+58 struct derive_partition_iterator_type<\n+59 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+60 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+61 (1 << _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by) |\n+62 (1 << _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by)\n+63 >\n+64 : public std::\n+integral_constant\n+65 {};\n+66\n+67 template<>\n+68 struct derive_partition_iterator_type<\n+69 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+70 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n+71 (1 << _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by) |\n+72 (1 << _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by) |\n+73 (1 << _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by)\n+74 >\n+75 : public std::integral_constant\n+76 {};\n+77\n+78 template<>\n+79 struct derive_partition_iterator_type<\n+80 (1 << _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by)\n+81 >\n+82 : public std::integral_constant\n+83 {};\n+84\n+85\n+86 // Simple TMP to deduce set of partitions from partition iterator type.\n+87\n+88 template\n+89 struct derive_partition_set;\n+90\n+91\n+92 // specializations of derive_partition_set for existing\n+PartitionIteratorTypes\n+93\n+94 template<>\n+95 struct derive_partition_set<_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn>\n+96 : std::integral_constant\n+97 {};\n+98\n+99 template<>\n+100 struct derive_partition_set\n+101 : std::integral_constant\n+102 {};\n+103\n+104 template<>\n+105 struct derive_partition_set\n+106 : std::integral_constant\n+107 {};\n+108\n+109 template<>\n+110 struct derive_partition_set\n+111 : std::integral_constant\n+112 {};\n+113\n+114 template<>\n+115 struct derive_partition_set\n+116 : std::integral_constant\n+117 {};\n+118\n+119 template<>\n+120 struct derive_partition_set\n+121 : std::integral_constant\n+122 {};\n+123\n+124 } // anonymous namespace\n+125\n+126\n+128\n+136 template\n+_\b1_\b3_\b7 struct PartitionSet\n+138 {\n+140 static constexpr unsigned int value = partitions;\n+141\n+142\n+144 template\n+145 struct PartitionSet\n+_\b1_\b4_\b6 constexpr operator+(const PartitionSet

    &) const\n+147 {\n+148 return PartitionSet();\n+149 }\n+150\n+152 template\n+153 struct PartitionSet\n+_\b1_\b5_\b4 constexpr operator-(const PartitionSet

    &) const\n+155 {\n+156 return PartitionSet();\n+157 }\n+158\n+_\b1_\b6_\b0 friend std::ostream& operator<<(std::ostream& os, const PartitionSet&)\n+161 {\n+162 unsigned int set = partitions;\n+163 os << \"partition set {\";\n+164 bool first = true;\n+165 for (unsigned int p = 0; set; set &= ~(1 << p++))\n+166 {\n+167 if (!(set & (1 << p)))\n+168 continue;\n+169 if (!first)\n+170 os << \",\";\n+171 first = false;\n+172 os << static_cast(p);\n+173 }\n+174 os << \"}\";\n+175 return os;\n+176 }\n+177\n+179\n+_\b1_\b8_\b3 static constexpr PartitionIteratorType partitionIterator()\n+184 {\n+185 return derive_partition_iterator_type::value;\n+186 }\n+187\n+_\b1_\b8_\b9 static constexpr bool contains(PartitionType pt)\n+190 {\n+191 return partitions & (1 << pt);\n+192 }\n+193\n+195 template\n+_\b1_\b9_\b6 static constexpr bool contains(PartitionSet)\n+197 {\n+198 return (partitions & contained_partitions) == contained_partitions;\n+199 }\n+200\n+202 template\n+_\b2_\b0_\b3 constexpr bool operator==(PartitionSet) const\n+204 {\n+205 return partitions == p2;\n+206 }\n+207\n+209 template\n+_\b2_\b1_\b0 constexpr bool operator!=(PartitionSet) const\n+211 {\n+212 return partitions != p2;\n+213 }\n+214\n+215 };\n+216\n+218\n+221 template\n+_\b2_\b2_\b2 PartitionSet<(1 << p)> partitionSet()\n+223 {\n+224 return PartitionSet<(1 << p)>();\n+225 }\n+226\n+231 template\n+_\b2_\b3_\b2 constexpr PartitionSet::value> partitionSet()\n+233 {\n+234 return PartitionSet::value>();\n+235 }\n+236\n+_\b2_\b3_\b8 namespace Partitions {\n+239\n+240\n+241#ifdef DOXYGEN\n+242\n+_\b2_\b4_\b4 typedef PartitionSet<...> Interior;\n+245\n+_\b2_\b4_\b7 typedef PartitionSet<...> Border;\n+248\n+_\b2_\b5_\b0 typedef PartitionSet<...> Overlap;\n+251\n+_\b2_\b5_\b3 typedef PartitionSet<...> Front;\n+254\n+_\b2_\b5_\b6 typedef PartitionSet<...> Ghost;\n+257\n+_\b2_\b5_\b9 typedef PartitionSet<...> InteriorBorder;\n+260\n+_\b2_\b6_\b2 typedef PartitionSet<...> InteriorBorderOverlap;\n+263\n+_\b2_\b6_\b5 typedef PartitionSet<...> InteriorBorderOverlapFront;\n+266\n+_\b2_\b6_\b8 typedef PartitionSet<...> All;\n+269\n+270\n+_\b2_\b7_\b2 constexpr Interior interior;\n+273\n+_\b2_\b7_\b5 constexpr Border border;\n+276\n+_\b2_\b7_\b8 constexpr Overlap overlap;\n+279\n+_\b2_\b8_\b1 constexpr Front front;\n+282\n+_\b2_\b8_\b4 constexpr Ghost ghost;\n+285\n+_\b2_\b8_\b7 constexpr InteriorBorder interiorBorder;\n+288\n+_\b2_\b9_\b0 constexpr InteriorBorderOverlap interiorBorderOverlap;\n+291\n+_\b2_\b9_\b3 constexpr InteriorBorderOverlapFront interiorBorderOverlapFront;\n+294\n+_\b2_\b9_\b6 constexpr All all;\n+297\n+298#else // DOXYGEN\n+299\n+300 // First declare the types and objects for individual partitions\n+301\n+302 typedef decltype(partitionSet()) Interior;\n+303 typedef decltype(partitionSet()) Border;\n+304 typedef decltype(partitionSet()) Overlap;\n+305 typedef decltype(partitionSet()) Front;\n+306 typedef decltype(partitionSet()) Ghost;\n+307\n+308#ifndef __cpp_inline_variables\n+309 namespace {\n+310#endif\n+311\n+312 // place global objects in anonymous namespace to ensure that visibility is\n+313 // restricted to the current translation unit, making it easier for the\n+compiler\n+314 // to eliminate the actual objects and to avoid linking problems\n+315\n+316 DUNE_INLINE_VARIABLE constexpr Interior interior = {};\n+317 DUNE_INLINE_VARIABLE constexpr Border border = {};\n+318 DUNE_INLINE_VARIABLE constexpr Overlap overlap = {};\n+319 DUNE_INLINE_VARIABLE constexpr Front front = {};\n+320 DUNE_INLINE_VARIABLE constexpr Ghost ghost = {};\n+321\n+322#ifndef __cpp_inline_variables\n+323 }\n+324#endif\n+325\n+326 // Now we can declare the partition sets that are a result of combining\n+partitions\n+327\n+328 typedef decltype(interior + border) InteriorBorder;\n+329 typedef decltype(interior + border + overlap) InteriorBorderOverlap;\n+330 typedef decltype(interior + border + overlap + front)\n+InteriorBorderOverlapFront;\n+331 typedef decltype(interior + border + overlap + front + ghost) All;\n+332\n+333#ifndef __cpp_inline_variables\n+334 namespace {\n+335#endif\n+336\n+337 // again, place the global objects in an anonymous namespace\n+338\n+339 DUNE_INLINE_VARIABLE constexpr InteriorBorder interiorBorder = {};\n+340 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlap interiorBorderOverlap\n+= {};\n+341 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlapFront\n+interiorBorderOverlapFront = {};\n+342 DUNE_INLINE_VARIABLE constexpr All all = {};\n+343\n+344#ifndef __cpp_inline_variables\n+345 }\n+346#endif\n+347\n+348#endif // DOXYGEN\n+349\n+350 } // namespace Partitions\n+351\n+356} // namespace Dune\n+357\n+358#endif // DUNE_GRID_COMMON_PARTITIONSET_HH\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+@ Interior_Partition\n+only interior entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+@ FrontEntity\n+on boundary between overlap and ghost\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ InteriorEntity\n+all interior entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+@ GhostEntity\n+ghost entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ BorderEntity\n+on boundary between interior and overlap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+@ OverlapEntity\n+all entities lying in the overlap zone\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:33\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-Base class for exceptions in Dune grid modules.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00329.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00329.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarysegment.hh File Reference\n+dune-grid: indexidset.hh File Reference\n \n \n \n \n \n \n \n@@ -72,44 +72,54 @@\n

  • dune
  • grid
  • common
  • \n \n \n
    \n \n-
    boundarysegment.hh File Reference
    \n+
    indexidset.hh File Reference
    \n
    \n
    \n \n-

    Base class for grid boundary segments of arbitrary geometry. \n+

    Provides base classes for index and id sets. \n More...

    \n-
    #include <map>
    \n-#include <sstream>
    \n-#include <dune/common/singleton.hh>
    \n-#include <dune/common/parameterizedobject.hh>
    \n-#include <dune/common/fvector.hh>
    \n+
    #include <vector>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include <dune/common/bartonnackmanifcheck.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::BoundarySegmentBackupRestore< BndSeg >
    class  Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp >
     Index Set Interface base class. More...
     
    struct  Dune::BoundarySegment< dim, dimworld, ctype >
     Base class for classes implementing geometries of boundary segments. More...
    struct  Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp >::Codim< cc >
     Export the type of the entity used as parameter in the index(...) method. More...
     
    class  Dune::IndexSetDefaultImplementation< GridImp, IndexSetImp >
     Provide default implementation of method if IndexSet. More...
     
    class  Dune::IdSet< GridImp, IdSetImp, IdTypeImp >
     Id Set Interface. More...
     
    struct  Dune::IdSet< GridImp, IdSetImp, IdTypeImp >::Codim< cc >
     Export the type of the entity used as parameter in the id(...) method. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Base class for grid boundary segments of arbitrary geometry.

    \n+

    Provides base classes for index and id sets.

    \n+
    Author
    Peter Bastian
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,30 +2,43 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-boundarysegment.hh File Reference\n-Base class for grid boundary segments of arbitrary geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n+indexidset.hh File Reference\n+Provides base classes for index and id sets. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\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_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bB_\bn_\bd_\bS_\be_\bg_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\bI_\bm_\bp_\b,_\b _\bT_\by_\bp_\be_\bs_\bI_\bm_\bp_\b _\b>\n+\u00a0 Index Set Interface base class. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bc_\bt_\by_\bp_\be_\b _\b>\n-\u00a0 Base class for classes implementing geometries of boundary segments.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\bI_\bm_\bp_\b,_\b _\bT_\by_\bp_\be_\bs_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b<\n+ _\bc_\bc_\b _\b>\n+\u00a0 Export the type of the entity used as parameter in the index(...)\n+ method. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b _\b>\n+\u00a0 Provide default implementation of method if _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bT_\by_\bp_\be_\bI_\bm_\bp_\b _\b>\n+\u00a0 Id Set Interface. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bS_\be_\bt_\bI_\bm_\bp_\b,_\b _\bI_\bd_\bT_\by_\bp_\be_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bc_\b _\b>\n+\u00a0 Export the type of the entity used as parameter in the id(...) method.\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 Include standard header files.\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-Base class for grid boundary segments of arbitrary geometry.\n+Provides base classes for index and id sets.\n+ Author\n+ Peter Bastian\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00329_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00329_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarysegment.hh Source File\n+dune-grid: indexidset.hh Source File\n \n \n \n \n \n \n \n@@ -74,130 +74,301 @@\n \n
    \n \n
    \n
    \n
    \n-
    boundarysegment.hh
    \n+
    indexidset.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH
    \n-
    6#define DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH
    \n-
    7
    \n-
    8#include <map>
    \n-
    9#include <sstream>
    \n-
    10
    \n-
    11#include <dune/common/singleton.hh>
    \n-
    12#include <dune/common/parameterizedobject.hh>
    \n-
    13#include <dune/common/fvector.hh>
    \n-
    14
    \n-
    19namespace Dune {
    \n-
    20
    \n-
    36 template< int dim, int dimworld = dim, class ctype = double >
    \n-
    37 struct BoundarySegment;
    \n-
    38
    \n-
    39 template <class BndSeg>
    \n-
    \n-\n-
    41 {
    \n-
    42 public:
    \n-
    43 // type of object stream used for storing boundary segment information
    \n-
    44 typedef std::stringstream ObjectStreamType ;
    \n-
    45
    \n-
    46 protected:
    \n-
    48 typedef BndSeg BoundarySegment;
    \n-
    49
    \n-
    51 typedef Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment > ( ObjectStreamType& ), int > FactoryType;
    \n-
    52
    \n-
    \n-
    59 static std::unique_ptr< BoundarySegment > restore( ObjectStreamType& in )
    \n-
    60 {
    \n-
    61 int key = -1;
    \n-
    62 // read class key for restore
    \n-
    63 in.read( (char *) &key, sizeof( int ) );
    \n-
    64
    \n-
    65 // factory creates a unique_ptr which can be released later on
    \n-
    66 return factory().create( key, in );
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    69 template <class DerivedType>
    \n-
    \n-
    70 static int registerFactory()
    \n-
    71 {
    \n-
    72 const int key = createKey();
    \n-
    73 // create factory method that produces unique_ptr
    \n-
    74 factory().template define< DerivedType >( key );
    \n-
    75 // return key for storage in derived class
    \n-
    76 return key;
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 private:
    \n-
    80 static int createKey()
    \n-
    81 {
    \n-
    82 static int key = 0;
    \n-
    83 return key++;
    \n-
    84 }
    \n-
    85
    \n-
    86 static FactoryType& factory()
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_COMMON_INDEXIDSET_HH
    \n+
    7#define DUNE_GRID_COMMON_INDEXIDSET_HH
    \n+
    8
    \n+
    9#include <vector>
    \n+
    10#include <dune/common/exceptions.hh>
    \n+\n+
    12
    \n+
    13
    \n+
    19namespace Dune
    \n+
    20{
    \n+
    21
    \n+
    22#include <dune/common/bartonnackmanifcheck.hh>
    \n+
    23
    \n+
    76 template< class GridImp, class IndexSetImp, class IndexTypeImp, class TypesImp >
    \n+
    \n+\n+
    78 {
    \n+
    79 /* We use the remove_const to extract the Type from the mutable class,
    \n+
    80 because the const class is not instantiated yet. */
    \n+
    81 typedef typename std::remove_const< GridImp >::type::Traits Traits;
    \n+
    82
    \n+
    83 public:
    \n+
    85 template <int cc>
    \n+
    \n+
    86 struct Codim
    \n
    87 {
    \n-
    88 return Dune::Singleton< FactoryType > :: instance();
    \n-
    89 }
    \n-
    90 };
    \n-
    \n-
    91
    \n-
    92 template< int dim, int dimworld, class ctype >
    \n-
    \n-
    93 struct BoundarySegment : public BoundarySegmentBackupRestore< BoundarySegment< dim, dimworld, ctype > >
    \n-
    94 {
    \n-\n-\n-
    97
    \n-
    98 typedef typename BaseType :: ObjectStreamType ObjectStreamType;
    \n+
    88 typedef typename Traits :: template Codim<cc> :: Entity Entity;
    \n+
    89 };
    \n+
    \n+
    90
    \n+\n+
    93
    \n+
    95 typedef TypesImp Types;
    \n+
    96
    \n+
    98 static const int dimension = std::remove_const< GridImp >::type::dimension;
    \n
    99
    \n-
    100 using BaseType :: restore;
    \n-\n-
    102
    \n-
    104 virtual ~BoundarySegment() {}
    \n+
    100 //===========================================================
    \n+
    104 //===========================================================
    \n
    105
    \n-
    108 virtual FieldVector< ctype, dimworld >
    \n-
    109 operator() ( const FieldVector< ctype, dim-1> &local ) const = 0;
    \n-
    110
    \n-
    \n-
    114 virtual void backup( [[maybe_unused]] ObjectStreamType& buffer ) const
    \n-
    115 {
    \n-
    116 DUNE_THROW(NotImplemented,"BoundarySegment::backup needs to be overloaded!");
    \n+
    112 template<int cc>
    \n+
    \n+
    113 IndexType index (const typename Traits::template Codim<cc>::Entity& e) const
    \n+
    114 {
    \n+
    115 CHECK_INTERFACE_IMPLEMENTATION((asImp().template index<cc>(e)));
    \n+
    116 return asImp().template index<cc>(e);
    \n
    117 }
    \n
    \n-
    118 };
    \n-
    \n-
    119
    \n-
    120
    \n-
    121} // end namespace Dune
    \n-
    122
    \n-
    123#endif
    \n+
    118
    \n+
    128 template<class Entity>
    \n+
    \n+
    129 IndexType index (const Entity& e) const
    \n+
    130 {
    \n+
    131 constexpr static int cc = Entity::codimension;
    \n+
    132 CHECK_INTERFACE_IMPLEMENTATION((asImp().template index<cc>(e)));
    \n+
    133 return asImp().template index<cc>(e);
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    152 template< int cc >
    \n+
    \n+
    153 IndexType subIndex ( const typename Traits::template Codim< cc >::Entity &e,
    \n+
    154 int i, unsigned int codim ) const
    \n+
    155 {
    \n+\n+
    157 return asImp().template subIndex< cc >(e,i,codim);
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    181 template< class Entity >
    \n+
    \n+
    182 IndexType subIndex ( const Entity &e, int i, unsigned int codim ) const
    \n+
    183 {
    \n+
    184 static const int cc = Entity::codimension;
    \n+
    185 return asImp().template subIndex< cc >( e, i, codim );
    \n+
    186 }
    \n+
    \n+
    188
    \n+
    189
    \n+
    190 //===========================================================
    \n+
    194 //===========================================================
    \n+
    195
    \n+
    \n+
    211 Types types ( int codim ) const
    \n+
    212 {
    \n+\n+
    214 return asImp().types( codim );
    \n+
    215 }
    \n+
    \n+
    216
    \n+
    \n+
    223 auto size (GeometryType type) const
    \n+
    224 {
    \n+
    225 CHECK_INTERFACE_IMPLEMENTATION((asImp().size(type)));
    \n+
    226 return asImp().size(type);
    \n+
    227 }
    \n+
    \n+
    228
    \n+
    \n+
    236 auto size (int codim) const
    \n+
    237 {
    \n+\n+
    239 return asImp().size(codim);
    \n+
    240 }
    \n+
    \n+
    241
    \n+
    247 template<class Entity>
    \n+
    \n+
    248 bool contains (const Entity& e) const
    \n+
    249 {
    \n+\n+
    251 return asImp().contains(e);
    \n+
    252 }
    \n+
    \n+
    253
    \n+
    254 protected:
    \n+
    255 // Must be explicitly defined although this class should get a default constructor.
    \n+
    256 IndexSet() = default;
    \n+
    257
    \n+
    258 public:
    \n+
    260 IndexSet(const IndexSet&) = delete;
    \n+
    262 IndexSet& operator=(const IndexSet&) = delete;
    \n+
    263
    \n+
    264 private:
    \n+
    266 IndexSetImp& asImp () {return static_cast<IndexSetImp &> (*this);}
    \n+
    268 const IndexSetImp& asImp () const {return static_cast<const IndexSetImp &>(*this);}
    \n+
    269 };
    \n+
    \n+
    270
    \n+
    271#undef CHECK_INTERFACE_IMPLEMENTATION
    \n+
    272#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
    \n+
    273
    \n+
    274
    \n+
    275
    \n+
    279 template<class GridImp, class IndexSetImp>
    \n+
    \n+\n+
    281 : public IndexSet< GridImp, IndexSetImp >
    \n+
    282 {
    \n+\n+
    284 typedef typename std::remove_const< GridImp >::type::Traits Traits;
    \n+
    285
    \n+
    286 public:
    \n+
    288 typedef typename Base::IndexType IndexType;
    \n+
    289
    \n+
    290 typedef typename Base::Types Types;
    \n+
    291
    \n+
    293 static const int dimension = Base::dimension;
    \n+
    294
    \n+
    295 using Base::index;
    \n+
    296 using Base::subIndex;
    \n+
    297
    \n+
    298 //===========================================================
    \n+
    302 //===========================================================
    \n+
    303
    \n+
    304 Types types ( int codim ) const { return asImp().geomTypes( codim ); }
    \n+
    305
    \n+
    \n+
    313 auto size ( const int codim ) const
    \n+
    314 {
    \n+
    315 using SizeType = std::decay_t<decltype( Base::size( Dune::GeometryType() ) )>;
    \n+
    316
    \n+
    317 const std::vector< GeometryType > &geomTs = asImp().geomTypes( codim );
    \n+
    318 typedef typename std::vector< GeometryType >::const_iterator Iterator;
    \n+
    319
    \n+
    320 const Iterator end = geomTs.end();
    \n+
    321
    \n+
    322 SizeType s ( 0 );
    \n+
    323 for( Iterator it = geomTs.begin() ; it != end; ++it )
    \n+
    324 s += Base::size( *it );
    \n+
    325
    \n+
    326 return s;
    \n+
    327 }
    \n+
    \n+
    329
    \n+
    330 private:
    \n+
    331 IndexSetImp &asImp () { return static_cast< IndexSetImp & >( *this );}
    \n+
    332 const IndexSetImp &asImp () const { return static_cast< const IndexSetImp & >( *this ); }
    \n+
    333 };
    \n+
    \n+
    334
    \n+
    335
    \n+
    450 template<class GridImp, class IdSetImp, class IdTypeImp>
    \n+
    \n+
    451 class IdSet
    \n+
    452 {
    \n+
    453 /* We use the remove_const to extract the Type from the mutable class,
    \n+
    454 because the const class is not instantiated yet. */
    \n+
    455 using Traits = typename std::remove_const< GridImp >::type::Traits;
    \n+
    456 public:
    \n+\n+
    459
    \n+
    461 template <int cc>
    \n+
    \n+
    462 struct Codim {
    \n+
    463 using Entity = typename Traits::template Codim<cc>::Entity;
    \n+
    464 };
    \n+
    \n+
    465
    \n+
    467 static constexpr auto dimension = std::remove_const< GridImp >::type::dimension;
    \n+
    468
    \n+
    470 template<class Entity>
    \n+
    \n+
    471 IdType id (const Entity& e) const
    \n+
    472 {
    \n+
    473 constexpr static int cc = Entity::codimension;
    \n+
    474 return asImp().template id<cc>(e);
    \n+
    475 }
    \n+
    \n+
    476
    \n+
    478 template<int cc>
    \n+
    \n+
    479 IdType id (const typename Codim<cc>::Entity& e) const
    \n+
    480 {
    \n+
    481 return asImp().template id<cc>(e);
    \n+
    482 }
    \n+
    \n+
    483
    \n+
    \n+
    486 IdType subId (const typename Codim<0>::Entity& e, int i, unsigned int codim) const
    \n+
    487 {
    \n+
    488 return asImp().subId(e,i,codim);
    \n+
    489 }
    \n+
    \n+
    490
    \n+
    491 protected:
    \n+
    492 // Default constructor (is not provided automatically because copy constructor is private)
    \n+
    493 IdSet() = default;
    \n+
    494
    \n+
    495 public:
    \n+
    497 IdSet(const IdSet&) = delete;
    \n+
    499 IdSet& operator=(const IdSet&) = delete;
    \n+
    500
    \n+
    501 private:
    \n+
    503 IdSetImp& asImp () {return static_cast<IdSetImp &> (*this);}
    \n+
    505 const IdSetImp& asImp () const {return static_cast<const IdSetImp &>(*this);}
    \n+
    506 };
    \n+
    \n+
    507
    \n+
    508}
    \n+
    509
    \n+
    510#endif // DUNE_GRID_COMMON_INDEXIDSET_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    BaseType::ObjectStreamType ObjectStreamType
    Definition boundarysegment.hh:98
    \n-
    BoundarySegment< dim, dimworld, ctype > ThisType
    Definition boundarysegment.hh:95
    \n-
    virtual void backup(ObjectStreamType &buffer) const
    write BoundarySegment's data to stream buffer
    Definition boundarysegment.hh:114
    \n-
    BoundarySegmentBackupRestore< BoundarySegment< dim, dimworld, ctype > > BaseType
    Definition boundarysegment.hh:96
    \n-
    virtual FieldVector< ctype, dimworld > operator()(const FieldVector< ctype, dim-1 > &local) const =0
    A function mapping local coordinates on a boundary segment to world coordinates.
    \n-
    virtual ~BoundarySegment()
    Dummy virtual destructor.
    Definition boundarysegment.hh:104
    \n-
    Definition boundarysegment.hh:41
    \n-
    static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)
    create an object of BoundarySegment type from a previously registered factory linked to key.
    Definition boundarysegment.hh:59
    \n-
    Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment >(ObjectStreamType &), int > FactoryType
    type of factory creating a unique_ptr from an ObjectStreamType
    Definition boundarysegment.hh:51
    \n-
    BndSeg BoundarySegment
    type of BoundarySegment interface class
    Definition boundarysegment.hh:48
    \n-
    std::stringstream ObjectStreamType
    Definition boundarysegment.hh:44
    \n-
    static int registerFactory()
    Definition boundarysegment.hh:70
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n+
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n+
    auto size(int codim) const
    Return total number of entities of given codim in the entity set . This is simply a sum over all geom...
    Definition indexidset.hh:236
    \n+
    auto size(GeometryType type) const
    Return total number of entities of given geometry type in entity set .
    Definition indexidset.hh:223
    \n+
    IndexType subIndex(const Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:182
    \n+
    static const int dimension
    dimension of the grid (maximum allowed codimension)
    Definition indexidset.hh:98
    \n+
    IndexSet()=default
    \n+
    IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:153
    \n+
    TypesImp Types
    iterator range for geometry types in domain
    Definition indexidset.hh:95
    \n+
    Types types(int codim) const
    obtain all geometry types of entities in domain
    Definition indexidset.hh:211
    \n+
    IndexSet(const IndexSet &)=delete
    Forbid the copy constructor.
    \n+
    IndexType index(const typename Traits::template Codim< cc >::Entity &e) const
    Map entity to index. The result of calling this method with an entity that is not in the index set is...
    Definition indexidset.hh:113
    \n+
    IndexSet & operator=(const IndexSet &)=delete
    Forbid the assignment operator.
    \n+
    IndexTypeImp IndexType
    The type used for the indices.
    Definition indexidset.hh:92
    \n+
    IndexType index(const Entity &e) const
    Map entity to index. Easier to use than the above because codimension template parameter need not be ...
    Definition indexidset.hh:129
    \n+
    bool contains(const Entity &e) const
    Return true if the given entity is contained in .
    Definition indexidset.hh:248
    \n+
    Id Set Interface.
    Definition indexidset.hh:452
    \n+
    IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Get id of subentity i of co-dimension codim of a co-dimension 0 entity.
    Definition indexidset.hh:486
    \n+
    static constexpr auto dimension
    dimension of the grid (maximum allowed codimension)
    Definition indexidset.hh:467
    \n+
    IdSet(const IdSet &)=delete
    Forbid the copy constructor.
    \n+
    IdSet()=default
    \n+
    IdType id(const typename Codim< cc >::Entity &e) const
    Get id of an entity of codim cc. Unhandy because template parameter must be supplied explicitly.
    Definition indexidset.hh:479
    \n+
    IdTypeImp IdType
    Type used to represent an id.
    Definition indexidset.hh:458
    \n+
    IdSet & operator=(const IdSet &)=delete
    Forbid the assignment operator.
    \n+
    IdType id(const Entity &e) const
    Get id of an entity. This method is simpler to use than the one below.
    Definition indexidset.hh:471
    \n+
    Export the type of the entity used as parameter in the index(...) method.
    Definition indexidset.hh:87
    \n+
    Traits::template Codim< cc >::Entity Entity
    Definition indexidset.hh:88
    \n+
    Provide default implementation of method if IndexSet.
    Definition indexidset.hh:282
    \n+
    Base::IndexType IndexType
    The type used for the indices.
    Definition indexidset.hh:288
    \n+
    Base::Types Types
    Definition indexidset.hh:290
    \n+
    static const int dimension
    dimension of the grid (maximum allowed codimension)
    Definition indexidset.hh:293
    \n+
    Types types(int codim) const
    Definition indexidset.hh:304
    \n+
    auto size(const int codim) const
    Return total number of entities of given codim in the entity set . This is simply a sum over all geom...
    Definition indexidset.hh:313
    \n+
    Export the type of the entity used as parameter in the id(...) method.
    Definition indexidset.hh:462
    \n+
    typename Traits::template Codim< cc >::Entity Entity
    Definition indexidset.hh:463
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,154 +1,374 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-boundarysegment.hh\n+indexidset.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH\n-6#define DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH\n-7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13#include \n-14\n-19namespace _\bD_\bu_\bn_\be {\n-20\n-36 template< int dim, int dimworld = dim, class ctype = double >\n-37 struct BoundarySegment;\n-38\n-39 template \n-_\b4_\b0 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be\n-41 {\n-42 public:\n-43 // type of object stream used for storing boundary segment information\n-_\b4_\b4 typedef std::stringstream _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be ;\n-45\n-46 protected:\n-_\b4_\b8 typedef BndSeg _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt;\n-49\n-_\b5_\b1 typedef Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment >\n-( _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& ), int > _\bF_\ba_\bc_\bt_\bo_\br_\by_\bT_\by_\bp_\be;\n-52\n-_\b5_\b9 static std::unique_ptr< BoundarySegment > _\br_\be_\bs_\bt_\bo_\br_\be( _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& in )\n-60 {\n-61 int key = -1;\n-62 // read class key for restore\n-63 in.read( (char *) &key, sizeof( int ) );\n-64\n-65 // factory creates a unique_ptr which can be released later on\n-66 return factory().create( key, in );\n-67 }\n-68\n-69 template \n-_\b7_\b0 static int _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by()\n-71 {\n-72 const int key = createKey();\n-73 // create factory method that produces unique_ptr\n-74 factory().template define< DerivedType >( key );\n-75 // return key for storage in derived class\n-76 return key;\n-77 }\n-78\n-79 private:\n-80 static int createKey()\n-81 {\n-82 static int key = 0;\n-83 return key++;\n-84 }\n-85\n-86 static _\bF_\ba_\bc_\bt_\bo_\br_\by_\bT_\by_\bp_\be& factory()\n+5\n+6#ifndef DUNE_GRID_COMMON_INDEXIDSET_HH\n+7#define DUNE_GRID_COMMON_INDEXIDSET_HH\n+8\n+9#include \n+10#include \n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+12\n+13\n+19namespace _\bD_\bu_\bn_\be\n+20{\n+21\n+22#include \n+23\n+76 template< class GridImp, class IndexSetImp, class IndexTypeImp, class\n+TypesImp >\n+_\b7_\b7 class _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+78 {\n+79 /* We use the remove_const to extract the Type from the mutable class,\n+80 because the const class is not instantiated yet. */\n+81 typedef typename std::remove_const< GridImp >::type::Traits Traits;\n+82\n+83 public:\n+85 template \n+_\b8_\b6 struct _\bC_\bo_\bd_\bi_\bm\n 87 {\n-88 return Dune::Singleton< FactoryType > :: instance();\n-89 }\n-90 };\n-91\n-92 template< int dim, int dimworld, class ctype >\n-_\b9_\b3 struct _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt : public _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be<\n-BoundarySegment< dim, dimworld, ctype > >\n-94 {\n-_\b9_\b5 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bc_\bt_\by_\bp_\be_\b _\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n-_\b9_\b6 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bc_\bt_\by_\bp_\be\n-_\b> > _\bB_\ba_\bs_\be_\bT_\by_\bp_\be;\n-97\n-_\b9_\b8 typedef typename BaseType :: ObjectStreamType _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be;\n+_\b8_\b8 typedef typename Traits :: template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b> _\b:_\b:_\b _\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+89 };\n+90\n+_\b9_\b2 typedef _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be_\bI_\bm_\bp _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n+93\n+_\b9_\b5 typedef _\bT_\by_\bp_\be_\bs_\bI_\bm_\bp _\bT_\by_\bp_\be_\bs;\n+96\n+_\b9_\b8 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = std::remove_const< GridImp >::type::dimension;\n 99\n-100 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bs_\bt_\bo_\br_\be;\n-101 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-102\n-_\b1_\b0_\b4 virtual _\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt() {}\n+100 //===========================================================\n+104 //===========================================================\n 105\n-108 virtual FieldVector< ctype, dimworld >\n-_\b1_\b0_\b9 _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const FieldVector< ctype, dim-1> &local ) const = 0;\n-110\n-_\b1_\b1_\b4 virtual void _\bb_\ba_\bc_\bk_\bu_\bp( [[maybe_unused]] _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& buffer ) const\n-115 {\n-116 DUNE_THROW(NotImplemented,\"BoundarySegment::backup needs to be\n-overloaded!\");\n+112 template\n+_\b1_\b1_\b3 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const typename Traits::template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by& _\be)\n+const\n+114 {\n+115 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be)));\n+116 return asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be);\n 117 }\n-118 };\n-119\n-120\n-121} // end namespace Dune\n-122\n-123#endif\n+118\n+128 template\n+_\b1_\b2_\b9 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const _\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n+130 {\n+131 constexpr static int _\bc_\bc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+132 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be)));\n+133 return asImp().template _\bi_\bn_\bd_\be_\bx_\b<_\bc_\bc_\b>(_\be);\n+134 }\n+135\n+152 template< int cc >\n+_\b1_\b5_\b3 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const typename Traits::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bc_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+&_\be,\n+154 int i, unsigned int _\bc_\bo_\bd_\bi_\bm ) const\n+155 {\n+156 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp().template _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bc_\b _\b>\n+(_\be,i,_\bc_\bo_\bd_\bi_\bm)));\n+157 return asImp().template _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bc_\b _\b>(_\be,i,_\bc_\bo_\bd_\bi_\bm);\n+158 }\n+159\n+181 template< class Entity >\n+_\b1_\b8_\b2 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const _\bE_\bn_\bt_\bi_\bt_\by &_\be, int i, unsigned int _\bc_\bo_\bd_\bi_\bm ) const\n+183 {\n+184 static const int _\bc_\bc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+185 return asImp().template _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx_\b<_\b _\bc_\bc_\b _\b>( _\be, i, _\bc_\bo_\bd_\bi_\bm );\n+186 }\n+188\n+189\n+190 //===========================================================\n+194 //===========================================================\n+195\n+_\b2_\b1_\b1 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs ( int _\bc_\bo_\bd_\bi_\bm ) const\n+212 {\n+213 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN( (asImp()._\bt_\by_\bp_\be_\bs( _\bc_\bo_\bd_\bi_\bm )) );\n+214 return asImp().types( _\bc_\bo_\bd_\bi_\bm );\n+215 }\n+216\n+_\b2_\b2_\b3 auto _\bs_\bi_\bz_\be (GeometryType type) const\n+224 {\n+225 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp()._\bs_\bi_\bz_\be(type)));\n+226 return asImp().size(type);\n+227 }\n+228\n+_\b2_\b3_\b6 auto _\bs_\bi_\bz_\be (int _\bc_\bo_\bd_\bi_\bm) const\n+237 {\n+238 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp()._\bs_\bi_\bz_\be(_\bc_\bo_\bd_\bi_\bm)));\n+239 return asImp().size(_\bc_\bo_\bd_\bi_\bm);\n+240 }\n+241\n+247 template\n+_\b2_\b4_\b8 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const _\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n+249 {\n+250 _\bC_\bH_\bE_\bC_\bK_\b__\bI_\bN_\bT_\bE_\bR_\bF_\bA_\bC_\bE_\b__\bI_\bM_\bP_\bL_\bE_\bM_\bE_\bN_\bT_\bA_\bT_\bI_\bO_\bN((asImp()._\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs(_\be)));\n+251 return asImp().contains(_\be);\n+252 }\n+253\n+254 protected:\n+255 // Must be explicitly defined although this class should get a default\n+constructor.\n+_\b2_\b5_\b6 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt() = default;\n+257\n+258 public:\n+_\b2_\b6_\b0 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt&) = delete;\n+_\b2_\b6_\b2 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt&) = delete;\n+263\n+264 private:\n+266 _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp& asImp () {return static_cast<_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp &> (*this);}\n+268 const IndexSetImp& asImp () const {return static_cast\n+(*this);}\n+269 };\n+270\n+271#undef CHECK_INTERFACE_IMPLEMENTATION\n+272#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION\n+273\n+274\n+275\n+279 template\n+_\b2_\b8_\b0 class _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+281 : public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt< GridImp, IndexSetImp >\n+282 {\n+283 typedef _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp_\b _\b> _\bB_\ba_\bs_\be;\n+284 typedef typename std::remove_const< GridImp >::type::Traits Traits;\n+285\n+286 public:\n+_\b2_\b8_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n+289\n+_\b2_\b9_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\by_\bp_\be_\bs _\bT_\by_\bp_\be_\bs;\n+291\n+_\b2_\b9_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+294\n+295 using _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bd_\be_\bx;\n+296 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx;\n+297\n+298 //===========================================================\n+302 //===========================================================\n+303\n+_\b3_\b0_\b4 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs ( int codim ) const { return asImp().geomTypes( codim ); }\n+305\n+_\b3_\b1_\b3 auto _\bs_\bi_\bz_\be ( const int codim ) const\n+314 {\n+315 using SizeType = std::decay_t;\n+316\n+317 const std::vector< GeometryType > &geomTs = asImp().geomTypes( codim );\n+318 typedef typename std::vector< GeometryType >::const_iterator Iterator;\n+319\n+320 const Iterator end = geomTs.end();\n+321\n+322 SizeType s ( 0 );\n+323 for( Iterator it = geomTs.begin() ; it != end; ++it )\n+324 s += _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bi_\bz_\be( *it );\n+325\n+326 return s;\n+327 }\n+329\n+330 private:\n+331 IndexSetImp &asImp () { return static_cast< IndexSetImp & >( *this );}\n+332 const IndexSetImp &asImp () const { return static_cast< const IndexSetImp &\n+>( *this ); }\n+333 };\n+334\n+335\n+450 template\n+_\b4_\b5_\b1 class _\bI_\bd_\bS_\be_\bt\n+452 {\n+453 /* We use the remove_const to extract the Type from the mutable class,\n+454 because the const class is not instantiated yet. */\n+455 using Traits = typename std::remove_const< GridImp >::type::Traits;\n+456 public:\n+_\b4_\b5_\b8 typedef _\bI_\bd_\bT_\by_\bp_\be_\bI_\bm_\bp _\bI_\bd_\bT_\by_\bp_\be;\n+459\n+461 template \n+_\b4_\b6_\b2 struct _\bC_\bo_\bd_\bi_\bm {\n+_\b4_\b6_\b3 using _\bE_\bn_\bt_\bi_\bt_\by = typename Traits::template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by;\n+464 };\n+465\n+_\b4_\b6_\b7 static constexpr auto _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = std::remove_const< GridImp >::type::\n+dimension;\n+468\n+470 template\n+_\b4_\b7_\b1 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const _\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n+472 {\n+473 constexpr static int _\bc_\bc = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+474 return asImp().template _\bi_\bd_\b<_\bc_\bc_\b>(_\be);\n+475 }\n+476\n+478 template\n+_\b4_\b7_\b9 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by& _\be) const\n+480 {\n+481 return asImp().template _\bi_\bd_\b<_\bc_\bc_\b>(_\be);\n+482 }\n+483\n+_\b4_\b8_\b6 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename _\bC_\bo_\bd_\bi_\bm_\b<_\b0_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by& _\be, int i, unsigned int\n+_\bc_\bo_\bd_\bi_\bm) const\n+487 {\n+488 return asImp().subId(_\be,i,_\bc_\bo_\bd_\bi_\bm);\n+489 }\n+490\n+491 protected:\n+492 // Default constructor (is not provided automatically because copy\n+constructor is private)\n+_\b4_\b9_\b3 _\bI_\bd_\bS_\be_\bt() = default;\n+494\n+495 public:\n+_\b4_\b9_\b7 _\bI_\bd_\bS_\be_\bt(const _\bI_\bd_\bS_\be_\bt&) = delete;\n+_\b4_\b9_\b9 _\bI_\bd_\bS_\be_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bd_\bS_\be_\bt&) = delete;\n+500\n+501 private:\n+503 IdSetImp& asImp () {return static_cast (*this);}\n+505 const IdSetImp& asImp () const {return static_cast\n+(*this);}\n+506 };\n+507\n+508}\n+509\n+510#endif // DUNE_GRID_COMMON_INDEXIDSET_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be\n-BaseType::ObjectStreamType ObjectStreamType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bT_\bh_\bi_\bs_\bT_\by_\bp_\be\n-BoundarySegment< dim, dimworld, ctype > ThisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp\n-virtual void backup(ObjectStreamType &buffer) const\n-write BoundarySegment's data to stream buffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bB_\ba_\bs_\be_\bT_\by_\bp_\be\n-BoundarySegmentBackupRestore< BoundarySegment< dim, dimworld, ctype > >\n-BaseType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-virtual FieldVector< ctype, dimworld > operator()(const FieldVector< ctype,\n-dim-1 > &local) const =0\n-A function mapping local coordinates on a boundary segment to world\n-coordinates.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n-virtual ~BoundarySegment()\n-Dummy virtual destructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be\n-static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)\n-create an object of BoundarySegment type from a previously registered factory\n-linked to key.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bT_\by_\bp_\be\n-Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment >\n-(ObjectStreamType &), int > FactoryType\n-type of factory creating a unique_ptr from an ObjectStreamType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n-BndSeg BoundarySegment\n-type of BoundarySegment interface class\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be\n-std::stringstream ObjectStreamType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-static int registerFactory()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int codimension\n+Know your own codimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Index Set Interface base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+auto size(int codim) const\n+Return total number of entities of given codim in the entity set . This is\n+simply a sum over all geom...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+auto size(GeometryType type) const\n+Return total number of entities of given geometry type in entity set .\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+IndexType subIndex(const Entity &e, int i, unsigned int codim) const\n+Map a subentity to an index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+dimension of the grid (maximum allowed codimension)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+IndexSet()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int\n+i, unsigned int codim) const\n+Map a subentity to an index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bT_\by_\bp_\be_\bs\n+TypesImp Types\n+iterator range for geometry types in domain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n+Types types(int codim) const\n+obtain all geometry types of entities in domain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+IndexSet(const IndexSet &)=delete\n+Forbid the copy constructor.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+IndexType index(const typename Traits::template Codim< cc >::Entity &e) const\n+Map entity to index. The result of calling this method with an entity that is\n+not in the index set is...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+IndexSet & operator=(const IndexSet &)=delete\n+Forbid the assignment operator.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+IndexTypeImp IndexType\n+The type used for the indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+IndexType index(const Entity &e) const\n+Map entity to index. Easier to use than the above because codimension template\n+parameter need not be ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const Entity &e) const\n+Return true if the given entity is contained in .\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+Id Set Interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim)\n+const\n+Get id of subentity i of co-dimension codim of a co-dimension 0 entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:486\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr auto dimension\n+dimension of the grid (maximum allowed codimension)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:467\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+IdSet(const IdSet &)=delete\n+Forbid the copy constructor.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+IdSet()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const typename Codim< cc >::Entity &e) const\n+Get id of an entity of codim cc. Unhandy because template parameter must be\n+supplied explicitly.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:479\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n+IdTypeImp IdType\n+Type used to represent an id.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:458\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+IdSet & operator=(const IdSet &)=delete\n+Forbid the assignment operator.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const Entity &e) const\n+Get id of an entity. This method is simpler to use than the one below.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:471\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+Export the type of the entity used as parameter in the index(...) method.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Traits::template Codim< cc >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+Provide default implementation of method if IndexSet.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:282\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+Base::IndexType IndexType\n+The type used for the indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:288\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\by_\bp_\be_\bs\n+Base::Types Types\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:290\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+dimension of the grid (maximum allowed codimension)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:293\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be_\bs\n+Types types(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:304\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be\n+auto size(const int codim) const\n+Return total number of entities of given codim in the entity set . This is\n+simply a sum over all geom...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:313\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+Export the type of the entity used as parameter in the id(...) method.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:462\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+typename Traits::template Codim< cc >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:463\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00347.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00347.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: rangegenerators.hh File Reference\n+dune-grid: boundarysegment.hh File Reference\n \n \n \n \n \n \n \n@@ -70,32 +70,46 @@\n
    \n \n
    \n
    \n
    \n \n-
    rangegenerators.hh File Reference
    \n+
    boundarysegment.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/iteratorrange.hh>
    \n-#include <dune/common/rangeutilities.hh>
    \n-#include <dune/geometry/dimension.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/common/partitionset.hh>
    \n+\n+

    Base class for grid boundary segments of arbitrary geometry. \n+More...

    \n+
    #include <map>
    \n+#include <sstream>
    \n+#include <dune/common/singleton.hh>
    \n+#include <dune/common/parameterizedobject.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+Classes

    class  Dune::BoundarySegmentBackupRestore< BndSeg >
     
    struct  Dune::BoundarySegment< dim, dimworld, ctype >
     Base class for classes implementing geometries of boundary segments. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    Base class for grid boundary segments of arbitrary geometry.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,31 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rangegenerators.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+boundarysegment.hh File Reference\n+Base class for grid boundary segments of arbitrary geometry. _\bM_\bo_\br_\be_\b._\b._\b.\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_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bB_\bn_\bd_\bS_\be_\bg_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bc_\bt_\by_\bp_\be_\b _\b>\n+\u00a0 Base class for classes implementing geometries of boundary segments.\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 Include standard header files.\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+Base class for grid boundary segments of arbitrary geometry.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00347_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00347_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: rangegenerators.hh Source File\n+dune-grid: boundarysegment.hh Source File\n \n \n \n \n \n \n \n@@ -74,302 +74,130 @@\n \n
    \n \n
    \n
    \n
    \n-
    rangegenerators.hh
    \n+
    boundarysegment.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_RANGEGENERATORS_HH
    \n-
    6#define DUNE_GRID_COMMON_RANGEGENERATORS_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH
    \n+
    6#define DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH
    \n
    7
    \n-
    8#include <dune/common/iteratorrange.hh>
    \n-
    9#include <dune/common/rangeutilities.hh>
    \n-
    10#include <dune/geometry/dimension.hh>
    \n-\n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17#ifdef DOXYGEN
    \n-
    18
    \n-
    206 // *****************************************************************************************
    \n-
    207 // Doxygen documentation
    \n-
    208 // *****************************************************************************************
    \n-
    209 //
    \n-
    210 // In the following, the range generating functions are documented for Doxygen; the actual
    \n-
    211 // implementations are further down in this file and hidden from Doxygen.
    \n-
    212 // The main reason for this split are the return types of those functions, which either contain
    \n-
    213 // long type listings to obtain the iterator type or (in the case of the forwarded functions
    \n-
    214 // use the new-style function syntax and calculate the return type using decltype. In both cases,
    \n-
    215 // Doxygen generates function signatures that are very confusing to the average user.
    \n-
    216 //
    \n-
    217 // *****************************************************************************************
    \n-
    218
    \n-
    219
    \n-
    220
    \n-
    224
    \n-
    225
    \n-
    227
    \n-
    256 template<typename GV>
    \n-
    257 inline IteratorRange<...> elements(const GV& gv);
    \n-
    258
    \n-
    259
    \n-
    261
    \n-
    290 template<typename GV>
    \n-
    291 inline IteratorRange<...> facets(const GV& gv);
    \n-
    292
    \n-
    293
    \n-
    295
    \n-
    324 template<typename GV>
    \n-
    325 inline IteratorRange<...> edges(const GV& gv);
    \n-
    326
    \n-
    327
    \n-
    329
    \n-
    358 template<typename GV>
    \n-
    359 inline IteratorRange<...> vertices(const GV& gv);
    \n-
    360
    \n-
    361
    \n-
    363
    \n-
    364
    \n-
    365
    \n-
    369
    \n-
    371
    \n-
    394 template<typename GV, typename Entity>
    \n-
    395 inline IteratorRange<...> intersections(const GV& gv, const Entity& e);
    \n-
    396
    \n-
    397
    \n-
    399
    \n-
    400
    \n-
    401
    \n-
    405
    \n-
    406
    \n-
    408
    \n-
    434 template<typename Entity>
    \n-
    435 inline IteratorRange<...> descendantElements(const Entity& e, int maxLevel);
    \n-
    436 // Entity<int dim, class GridImp, template<int,int,class> class EntityImp>
    \n-
    437
    \n-
    439
    \n-
    440
    \n-
    441
    \n-
    445
    \n-
    446
    \n-
    448
    \n-
    486 template<typename GV, int codim>
    \n-
    487 inline IteratorRange<...> entities(const GV& gv, Codim<codim> cd);
    \n-
    488
    \n-
    489
    \n-
    491
    \n-
    531 template<typename GV, int dim>
    \n-
    532 inline IteratorRange<...> entities(const GV& gv, Dim<dim> d);
    \n-
    533
    \n-
    535
    \n-
    536
    \n-
    537
    \n-
    541
    \n-
    542
    \n-
    544
    \n-
    570 template<typename GV, unsigned int partitions>
    \n-\n-
    572
    \n-
    573
    \n-
    575
    \n-
    604 template<typename GV, unsigned int partitions>
    \n-\n-
    606
    \n-
    607
    \n-
    609
    \n-
    635 template<typename GV, unsigned int partitions>
    \n-\n-
    637
    \n-
    638
    \n-
    640
    \n-
    666 template<typename GV, unsigned int partitions>
    \n-\n-
    668
    \n-
    670
    \n-
    671
    \n-
    672
    \n-
    676
    \n-
    677
    \n-
    679
    \n-
    715 template<typename GV, int codim, unsigned int partitions>
    \n-\n-
    717
    \n-
    718
    \n-
    720
    \n-
    756 template<typename GV, int dim, unsigned int partitions>
    \n-\n-
    758
    \n-
    759
    \n-
    761
    \n-
    782 template<typename E, int codim>
    \n-
    783 inline IteratorRange<...> subEntities(const E& e, Codim<codim> c);
    \n-
    784
    \n-
    785
    \n-
    787
    \n-
    788
    \n-
    789#else // DOXYGEN
    \n-
    790
    \n-
    791 // ******************************************************************************************
    \n-
    792 // Implementations
    \n-
    793 // ******************************************************************************************
    \n-
    794
    \n-
    795
    \n-
    805 template<typename GV, int codim, unsigned int partitions>
    \n-
    806 inline auto entities(const GV& gv, Codim<codim>, PartitionSet<partitions>)
    \n-
    807 -> IteratorRange<decltype(gv.template begin<codim,derive_partition_iterator_type<partitions>::value>())>
    \n-
    808 {
    \n-
    809 static_assert(0 <= codim && codim <= GV::dimension, "invalid codimension for given GridView");
    \n-
    810 const PartitionIteratorType pit = derive_partition_iterator_type<partitions>::value;
    \n-
    811 typedef IteratorRange<decltype(gv.template begin<codim,pit>())> return_type;
    \n-
    812 return return_type(gv.template begin<codim,pit>(),gv.template end<codim,pit>());
    \n-
    813 }
    \n-
    814
    \n-
    822 template<typename GV, int codim>
    \n-
    823 inline auto entities(const GV& gv, Codim<codim>)
    \n-
    824 -> IteratorRange<decltype(gv.template begin<codim>())>
    \n-
    825 {
    \n-
    826 static_assert(0 <= codim && codim <= GV::dimension, "invalid codimension for given GridView");
    \n-
    827 typedef IteratorRange<decltype(gv.template begin<codim>())> return_type;
    \n-
    828 return return_type(gv.template begin<codim>(),gv.template end<codim>());
    \n-
    829 }
    \n-
    830
    \n-
    834 template<typename Entity>
    \n-
    835 inline IteratorRange<typename Entity::HierarchicIterator> descendantElements(const Entity& e, int maxLevel)
    \n-
    836 {
    \n-
    837 typedef IteratorRange<typename Entity::HierarchicIterator> return_type;
    \n-
    838 return return_type(e.hbegin(maxLevel),e.hend(maxLevel));
    \n-
    839 }
    \n-
    840
    \n-
    844 template<typename GV, typename Entity>
    \n-
    845 inline auto intersections(const GV& gv, const Entity& e)
    \n-
    846 -> IteratorRange<decltype(gv.ibegin(e))>
    \n-
    847 {
    \n-
    848 return IteratorRange<decltype(gv.ibegin(e))>(gv.ibegin(e),gv.iend(e));
    \n-
    849 }
    \n-
    850
    \n-
    851
    \n-
    857 template<typename GV, int dim, unsigned int partitions>
    \n-
    858 inline auto entities(const GV& gv, Dim<dim>, PartitionSet<partitions>)
    \n-
    859 -> decltype(entities(gv,Codim<GV::dimension - dim>(),PartitionSet<partitions>()))
    \n-
    860 {
    \n-
    861 static_assert(0 <= dim && dim <= GV::dimension, "invalid dimension for given GridView");
    \n-
    862 return entities(gv,Codim<GV::dimension - dim>(),PartitionSet<partitions>());
    \n-
    863 }
    \n-
    864
    \n-
    865 template<typename GV, int dim>
    \n-
    866 inline auto entities(const GV& gv, Dim<dim>)
    \n-
    867 -> decltype(entities(gv,Codim<GV::dimension - dim>()))
    \n-
    868 {
    \n-
    869 static_assert(0 <= dim && dim <= GV::dimension, "invalid dimension for given GridView");
    \n-
    870 return entities(gv,Codim<GV::dimension - dim>());
    \n-
    871 }
    \n-
    872
    \n-
    873 template<typename GV, unsigned int partitions>
    \n-
    874 inline auto elements(const GV& gv, PartitionSet<partitions>)
    \n-
    875 -> decltype(entities(gv,Codim<0>(),PartitionSet<partitions>()))
    \n-
    876 {
    \n-
    877 return entities(gv,Codim<0>(),PartitionSet<partitions>());
    \n-
    878 }
    \n-
    879
    \n-
    880 template<typename GV>
    \n-
    881 inline auto elements(const GV& gv)
    \n-
    882 -> decltype(entities(gv,Codim<0>()))
    \n-
    883 {
    \n-
    884 return entities(gv,Codim<0>());
    \n-
    885 }
    \n-
    886
    \n-
    887 template<typename GV, unsigned int partitions>
    \n-
    888 inline auto facets(const GV& gv, PartitionSet<partitions>)
    \n-
    889 -> decltype(entities(gv,Codim<1>(),PartitionSet<partitions>()))
    \n-
    890 {
    \n-
    891 return entities(gv,Codim<1>(),PartitionSet<partitions>());
    \n-
    892 }
    \n-
    893
    \n-
    894 template<typename GV>
    \n-
    895 inline auto facets(const GV& gv)
    \n-
    896 -> decltype(entities(gv,Codim<1>()))
    \n-
    897 {
    \n-
    898 return entities(gv,Codim<1>());
    \n-
    899 }
    \n-
    900
    \n-
    901 template<typename GV, unsigned int partitions>
    \n-
    902 inline auto edges(const GV& gv, PartitionSet<partitions>)
    \n-
    903 -> decltype(entities(gv,Dim<1>(),PartitionSet<partitions>()))
    \n-
    904 {
    \n-
    905 return entities(gv,Dim<1>(),PartitionSet<partitions>());
    \n-
    906 }
    \n-
    907
    \n-
    908 template<typename GV>
    \n-
    909 inline auto edges(const GV& gv)
    \n-
    910 -> decltype(entities(gv,Dim<1>()))
    \n-
    911 {
    \n-
    912 return entities(gv,Dim<1>());
    \n-
    913 }
    \n-
    914
    \n-
    915 template<typename GV, unsigned int partitions>
    \n-
    916 inline auto vertices(const GV& gv, PartitionSet<partitions>)
    \n-
    917 -> decltype(entities(gv,Dim<0>(),PartitionSet<partitions>()))
    \n-
    918 {
    \n-
    919 return entities(gv,Dim<0>(),PartitionSet<partitions>());
    \n-
    920 }
    \n-
    921
    \n-
    922 template<typename GV>
    \n-
    923 inline auto vertices(const GV& gv)
    \n-
    924 -> decltype(entities(gv,Dim<0>()))
    \n-
    925 {
    \n-
    926 return entities(gv,Dim<0>());
    \n-
    927 }
    \n-
    928
    \n-
    929 template<typename E, int codim>
    \n-
    930 inline auto subEntities(const E& e, Codim<codim> c)
    \n-
    931 {
    \n-
    932 static_assert(E::codimension <= codim,
    \n-
    933 "Can only iterate over sub-entities with equal or larger codimension");
    \n-
    934 return transformedRangeView(
    \n-
    935 range(static_cast<int>(e.subEntities(c))),
    \n-
    936 [&](const int i){ return e.template subEntity<codim>(i); }
    \n-
    937 );
    \n-
    938 }
    \n-
    939
    \n-
    940#endif // DOXYGEN
    \n-
    941
    \n-
    946} // namespace Dune
    \n-
    947
    \n-
    948#endif // DUNE_GRID_COMMON_RANGEGENERATORS_HH
    \n-\n-\n-
    PartitionIteratorType
    Parameter to be used for the parallel level- and leaf iterators.
    Definition gridenums.hh:136
    \n-
    IteratorRange<... > intersections(const GV &gv, const Entity &e)
    Iterates over all Intersections of an Entity with respect to the given GridView.
    \n-
    IteratorRange<... > vertices(const GV &gv)
    Iterates over all vertices (entities with dimension 0) of a GridView.
    \n-
    IteratorRange<... > elements(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all elements / cells (entities with codimension 0) of a GridView that belong to the giv...
    \n-
    IteratorRange<... > entities(const GV &gv, Codim< codim > cd, PartitionSet< partitions > ps)
    Iterates over all entities of a GridView with the given codimension that belong to the given Partitio...
    \n-
    IteratorRange<... > edges(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all edges (entities with dimension 1) of a GridView that belong to the given PartitionS...
    \n-
    IteratorRange<... > entities(const GV &gv, Dim< dim > d, PartitionSet< partitions > ps)
    Iterates over all entities of a GridView with the given dimension that belong to the given PartitionS...
    \n-
    IteratorRange<... > entities(const GV &gv, Dim< dim > d)
    Iterates over all entities of a GridView with the given dimension.
    \n-
    IteratorRange<... > subEntities(const E &e, Codim< codim > c)
    Iterates over all sub-entities of an entity given the codimension of the sub-entities.
    \n-
    IteratorRange<... > vertices(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all vertices (entities with dimension 0) of a GridView that belong to the given Partiti...
    \n-
    IteratorRange<... > elements(const GV &gv)
    Iterates over all elements / cells (entities with codimension 0) of a GridView.
    \n-
    IteratorRange<... > entities(const GV &gv, Codim< codim > cd)
    Iterates over all entities of a GridView with the given codimension.
    \n-
    IteratorRange<... > facets(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all facets (entities with codimension 1) of a GridView that belong to the given Partiti...
    \n-
    IteratorRange<... > facets(const GV &gv)
    Iterates over all facets (entities with codimension 1) of a GridView.
    \n-
    IteratorRange<... > edges(const GV &gv)
    Iterates over all edges (entities with dimension 1) of a GridView.
    \n-
    IteratorRange<... > descendantElements(const Entity &e, int maxLevel)
    Iterates over all descendant elements of the given element up to a maximum level.
    \n+
    8#include <map>
    \n+
    9#include <sstream>
    \n+
    10
    \n+
    11#include <dune/common/singleton.hh>
    \n+
    12#include <dune/common/parameterizedobject.hh>
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14
    \n+
    19namespace Dune {
    \n+
    20
    \n+
    36 template< int dim, int dimworld = dim, class ctype = double >
    \n+
    37 struct BoundarySegment;
    \n+
    38
    \n+
    39 template <class BndSeg>
    \n+
    \n+\n+
    41 {
    \n+
    42 public:
    \n+
    43 // type of object stream used for storing boundary segment information
    \n+
    44 typedef std::stringstream ObjectStreamType ;
    \n+
    45
    \n+
    46 protected:
    \n+
    48 typedef BndSeg BoundarySegment;
    \n+
    49
    \n+
    51 typedef Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment > ( ObjectStreamType& ), int > FactoryType;
    \n+
    52
    \n+
    \n+
    59 static std::unique_ptr< BoundarySegment > restore( ObjectStreamType& in )
    \n+
    60 {
    \n+
    61 int key = -1;
    \n+
    62 // read class key for restore
    \n+
    63 in.read( (char *) &key, sizeof( int ) );
    \n+
    64
    \n+
    65 // factory creates a unique_ptr which can be released later on
    \n+
    66 return factory().create( key, in );
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    69 template <class DerivedType>
    \n+
    \n+
    70 static int registerFactory()
    \n+
    71 {
    \n+
    72 const int key = createKey();
    \n+
    73 // create factory method that produces unique_ptr
    \n+
    74 factory().template define< DerivedType >( key );
    \n+
    75 // return key for storage in derived class
    \n+
    76 return key;
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79 private:
    \n+
    80 static int createKey()
    \n+
    81 {
    \n+
    82 static int key = 0;
    \n+
    83 return key++;
    \n+
    84 }
    \n+
    85
    \n+
    86 static FactoryType& factory()
    \n+
    87 {
    \n+
    88 return Dune::Singleton< FactoryType > :: instance();
    \n+
    89 }
    \n+
    90 };
    \n+
    \n+
    91
    \n+
    92 template< int dim, int dimworld, class ctype >
    \n+
    \n+
    93 struct BoundarySegment : public BoundarySegmentBackupRestore< BoundarySegment< dim, dimworld, ctype > >
    \n+
    94 {
    \n+\n+\n+
    97
    \n+
    98 typedef typename BaseType :: ObjectStreamType ObjectStreamType;
    \n+
    99
    \n+
    100 using BaseType :: restore;
    \n+\n+
    102
    \n+
    104 virtual ~BoundarySegment() {}
    \n+
    105
    \n+
    108 virtual FieldVector< ctype, dimworld >
    \n+
    109 operator() ( const FieldVector< ctype, dim-1> &local ) const = 0;
    \n+
    110
    \n+
    \n+
    114 virtual void backup( [[maybe_unused]] ObjectStreamType& buffer ) const
    \n+
    115 {
    \n+
    116 DUNE_THROW(NotImplemented,"BoundarySegment::backup needs to be overloaded!");
    \n+
    117 }
    \n+
    \n+
    118 };
    \n+
    \n+
    119
    \n+
    120
    \n+
    121} // end namespace Dune
    \n+
    122
    \n+
    123#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n-
    A set of PartitionType values.
    Definition partitionset.hh:138
    \n+
    BaseType::ObjectStreamType ObjectStreamType
    Definition boundarysegment.hh:98
    \n+
    BoundarySegment< dim, dimworld, ctype > ThisType
    Definition boundarysegment.hh:95
    \n+
    virtual void backup(ObjectStreamType &buffer) const
    write BoundarySegment's data to stream buffer
    Definition boundarysegment.hh:114
    \n+
    BoundarySegmentBackupRestore< BoundarySegment< dim, dimworld, ctype > > BaseType
    Definition boundarysegment.hh:96
    \n+
    virtual FieldVector< ctype, dimworld > operator()(const FieldVector< ctype, dim-1 > &local) const =0
    A function mapping local coordinates on a boundary segment to world coordinates.
    \n+
    virtual ~BoundarySegment()
    Dummy virtual destructor.
    Definition boundarysegment.hh:104
    \n+
    Definition boundarysegment.hh:41
    \n+
    static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)
    create an object of BoundarySegment type from a previously registered factory linked to key.
    Definition boundarysegment.hh:59
    \n+
    Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment >(ObjectStreamType &), int > FactoryType
    type of factory creating a unique_ptr from an ObjectStreamType
    Definition boundarysegment.hh:51
    \n+
    BndSeg BoundarySegment
    type of BoundarySegment interface class
    Definition boundarysegment.hh:48
    \n+
    std::stringstream ObjectStreamType
    Definition boundarysegment.hh:44
    \n+
    static int registerFactory()
    Definition boundarysegment.hh:70
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,382 +1,154 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-rangegenerators.hh\n+boundarysegment.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_RANGEGENERATORS_HH\n-6#define DUNE_GRID_COMMON_RANGEGENERATORS_HH\n+5#ifndef DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH\n+6#define DUNE_GRID_COMMON_BOUNDARY_SEGMENT_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17#ifdef DOXYGEN\n-18\n-206 /\n-/\n-*****************************************************************************************\n-207 // Doxygen documentation\n-208 /\n-/\n-*****************************************************************************************\n-209 //\n-210 // In the following, the range generating functions are documented for\n-Doxygen; the actual\n-211 // implementations are further down in this file and hidden from Doxygen.\n-212 // The main reason for this split are the return types of those functions,\n-which either contain\n-213 // long type listings to obtain the iterator type or (in the case of the\n-forwarded functions\n-214 // use the new-style function syntax and calculate the return type using\n-decltype. In both cases,\n-215 // Doxygen generates function signatures that are very confusing to the\n-average user.\n-216 //\n-217 /\n-/\n-*****************************************************************************************\n-218\n-219\n-220\n-224\n-225\n-227\n-256 template\n-_\b2_\b5_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bl_\be_\bm_\be_\bn_\bt_\bs(const _\bG_\bV& gv);\n-258\n-259\n-261\n-290 template\n-_\b2_\b9_\b1 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bf_\ba_\bc_\be_\bt_\bs(const _\bG_\bV& gv);\n-292\n-293\n-295\n-324 template\n-_\b3_\b2_\b5 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bd_\bg_\be_\bs(const _\bG_\bV& gv);\n-326\n-327\n-329\n-358 template\n-_\b3_\b5_\b9 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bv_\be_\br_\bt_\bi_\bc_\be_\bs(const _\bG_\bV& gv);\n-360\n-361\n-363\n-364\n-365\n-369\n-371\n-394 template\n-_\b3_\b9_\b5 inline IteratorRange<...> _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs(const GV& gv, const _\bE_\bn_\bt_\bi_\bt_\by& e);\n-396\n-397\n-399\n-400\n-401\n-405\n-406\n-408\n-434 template\n-_\b4_\b3_\b5 inline IteratorRange<...> _\bd_\be_\bs_\bc_\be_\bn_\bd_\ba_\bn_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs(const _\bE_\bn_\bt_\bi_\bt_\by& e, int\n-maxLevel);\n-436 // Entity class EntityImp>\n-437\n-439\n-440\n-441\n-445\n-446\n-448\n-486 template\n-_\b4_\b8_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bo_\bd_\bi_\bm_\b> _\bc_\bd);\n-488\n-489\n-491\n-531 template\n-_\b5_\b3_\b2 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bD_\bi_\bm_\b<_\bd_\bi_\bm_\b> d);\n-533\n-535\n-536\n-537\n-541\n-542\n-544\n-570 template\n-_\b5_\b7_\b1 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bl_\be_\bm_\be_\bn_\bt_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>\n-_\bp_\bs);\n-572\n-573\n-575\n-604 template\n-_\b6_\b0_\b5 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bf_\ba_\bc_\be_\bt_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>\n-_\bp_\bs);\n-606\n-607\n-609\n-635 template\n-_\b6_\b3_\b6 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bd_\bg_\be_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b> _\bp_\bs);\n-637\n-638\n-640\n-666 template\n-_\b6_\b6_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bv_\be_\br_\bt_\bi_\bc_\be_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>\n-_\bp_\bs);\n-668\n-670\n-671\n-672\n-676\n-677\n-679\n-715 template\n-_\b7_\b1_\b6 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bo_\bd_\bi_\bm_\b> _\bc_\bd,\n-_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b> _\bp_\bs);\n-717\n-718\n-720\n-756 template\n-_\b7_\b5_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bD_\bi_\bm_\b<_\bd_\bi_\bm_\b> d,\n-_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b> _\bp_\bs);\n-758\n-759\n-761\n-782 template\n-_\b7_\b8_\b3 inline IteratorRange<...> _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs(const E& e, Codim c);\n-784\n-785\n-787\n-788\n-789#else // DOXYGEN\n-790\n-791 /\n-/\n-******************************************************************************************\n-792 // Implementations\n-793 /\n-/\n-******************************************************************************************\n-794\n-795\n-805 template\n-806 inline auto entities(const GV& gv, Codim, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>)\n-807 -> IteratorRange::value>())>\n-808 {\n-809 static_assert(0 <= codim && codim <= GV::dimension, \"invalid codimension\n-for given GridView\");\n-810 const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be pit =\n-derive_partition_iterator_type::value;\n-811 typedef IteratorRange())>\n-return_type;\n-812 return return_type(gv.template begin(),gv.template\n-end());\n-813 }\n-814\n-822 template\n-823 inline auto entities(const GV& gv, Codim)\n-824 -> IteratorRange())>\n-825 {\n-826 static_assert(0 <= codim && codim <= GV::dimension, \"invalid codimension\n-for given GridView\");\n-827 typedef IteratorRange())> return_type;\n-828 return return_type(gv.template begin(),gv.template end());\n-829 }\n-830\n-834 template\n-835 inline IteratorRange\n-descendantElements(const Entity& e, int maxLevel)\n-836 {\n-837 typedef IteratorRange return_type;\n-838 return return_type(e.hbegin(maxLevel),e.hend(maxLevel));\n-839 }\n-840\n-844 template\n-845 inline auto intersections(const GV& gv, const Entity& e)\n-846 -> IteratorRange\n-847 {\n-848 return IteratorRange(gv.ibegin(e),gv.iend(e));\n-849 }\n-850\n-851\n-857 template\n-858 inline auto entities(const GV& gv, Dim, PartitionSet)\n-859 -> decltype(entities(gv,Codim\n-(),PartitionSet()))\n-860 {\n-861 static_assert(0 <= dim && dim <= GV::dimension, \"invalid dimension for\n-given GridView\");\n-862 return entities(gv,Codim(),PartitionSet\n-());\n-863 }\n-864\n-865 template\n-866 inline auto entities(const GV& gv, Dim)\n-867 -> decltype(entities(gv,Codim()))\n-868 {\n-869 static_assert(0 <= dim && dim <= GV::dimension, \"invalid dimension for\n-given GridView\");\n-870 return entities(gv,Codim());\n-871 }\n-872\n-873 template\n-874 inline auto elements(const GV& gv, PartitionSet)\n-875 -> decltype(entities(gv,Codim<0>(),PartitionSet()))\n-876 {\n-877 return entities(gv,Codim<0>(),PartitionSet());\n-878 }\n-879\n-880 template\n-881 inline auto elements(const GV& gv)\n-882 -> decltype(entities(gv,Codim<0>()))\n-883 {\n-884 return entities(gv,Codim<0>());\n-885 }\n-886\n-887 template\n-888 inline auto facets(const GV& gv, PartitionSet)\n-889 -> decltype(entities(gv,Codim<1>(),PartitionSet()))\n-890 {\n-891 return entities(gv,Codim<1>(),PartitionSet());\n-892 }\n-893\n-894 template\n-895 inline auto facets(const GV& gv)\n-896 -> decltype(entities(gv,Codim<1>()))\n-897 {\n-898 return entities(gv,Codim<1>());\n-899 }\n-900\n-901 template\n-902 inline auto edges(const GV& gv, PartitionSet)\n-903 -> decltype(entities(gv,Dim<1>(),PartitionSet()))\n-904 {\n-905 return entities(gv,Dim<1>(),PartitionSet());\n-906 }\n-907\n-908 template\n-909 inline auto edges(const GV& gv)\n-910 -> decltype(entities(gv,Dim<1>()))\n-911 {\n-912 return entities(gv,Dim<1>());\n-913 }\n-914\n-915 template\n-916 inline auto vertices(const GV& gv, PartitionSet)\n-917 -> decltype(entities(gv,Dim<0>(),PartitionSet()))\n-918 {\n-919 return entities(gv,Dim<0>(),PartitionSet());\n-920 }\n-921\n-922 template\n-923 inline auto vertices(const GV& gv)\n-924 -> decltype(entities(gv,Dim<0>()))\n-925 {\n-926 return entities(gv,Dim<0>());\n-927 }\n-928\n-929 template\n-930 inline auto subEntities(const E& e, Codim c)\n-931 {\n-932 static_assert(E::codimension <= codim,\n-933 \"Can only iterate over sub-entities with equal or larger codimension\");\n-934 return transformedRangeView(\n-935 range(static_cast(e.subEntities(c))),\n-936 [&](const int i){ return e.template subEntity(i); }\n-937 );\n-938 }\n-939\n-940#endif // DOXYGEN\n-941\n-946} // namespace Dune\n-947\n-948#endif // DUNE_GRID_COMMON_RANGEGENERATORS_HH\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-PartitionIteratorType\n-Parameter to be used for the parallel level- and leaf iterators.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs\n-IteratorRange<... > intersections(const GV &gv, const Entity &e)\n-Iterates over all Intersections of an Entity with respect to the given\n-GridView.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n-IteratorRange<... > vertices(const GV &gv)\n-Iterates over all vertices (entities with dimension 0) of a GridView.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n-IteratorRange<... > elements(const GV &gv, PartitionSet< partitions > ps)\n-Iterates over all elements / cells (entities with codimension 0) of a GridView\n-that belong to the giv...\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-IteratorRange<... > entities(const GV &gv, Codim< codim > cd, PartitionSet<\n-partitions > ps)\n-Iterates over all entities of a GridView with the given codimension that belong\n-to the given Partitio...\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bd_\bg_\be_\bs\n-IteratorRange<... > edges(const GV &gv, PartitionSet< partitions > ps)\n-Iterates over all edges (entities with dimension 1) of a GridView that belong\n-to the given PartitionS...\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-IteratorRange<... > entities(const GV &gv, Dim< dim > d, PartitionSet<\n-partitions > ps)\n-Iterates over all entities of a GridView with the given dimension that belong\n-to the given PartitionS...\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-IteratorRange<... > entities(const GV &gv, Dim< dim > d)\n-Iterates over all entities of a GridView with the given dimension.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-IteratorRange<... > subEntities(const E &e, Codim< codim > c)\n-Iterates over all sub-entities of an entity given the codimension of the sub-\n-entities.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n-IteratorRange<... > vertices(const GV &gv, PartitionSet< partitions > ps)\n-Iterates over all vertices (entities with dimension 0) of a GridView that\n-belong to the given Partiti...\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n-IteratorRange<... > elements(const GV &gv)\n-Iterates over all elements / cells (entities with codimension 0) of a GridView.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-IteratorRange<... > entities(const GV &gv, Codim< codim > cd)\n-Iterates over all entities of a GridView with the given codimension.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bf_\ba_\bc_\be_\bt_\bs\n-IteratorRange<... > facets(const GV &gv, PartitionSet< partitions > ps)\n-Iterates over all facets (entities with codimension 1) of a GridView that\n-belong to the given Partiti...\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bf_\ba_\bc_\be_\bt_\bs\n-IteratorRange<... > facets(const GV &gv)\n-Iterates over all facets (entities with codimension 1) of a GridView.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bd_\bg_\be_\bs\n-IteratorRange<... > edges(const GV &gv)\n-Iterates over all edges (entities with dimension 1) of a GridView.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bd_\be_\bs_\bc_\be_\bn_\bd_\ba_\bn_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-IteratorRange<... > descendantElements(const Entity &e, int maxLevel)\n-Iterates over all descendant elements of the given element up to a maximum\n-level.\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n+13#include \n+14\n+19namespace _\bD_\bu_\bn_\be {\n+20\n+36 template< int dim, int dimworld = dim, class ctype = double >\n+37 struct BoundarySegment;\n+38\n+39 template \n+_\b4_\b0 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be\n+41 {\n+42 public:\n+43 // type of object stream used for storing boundary segment information\n+_\b4_\b4 typedef std::stringstream _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be ;\n+45\n+46 protected:\n+_\b4_\b8 typedef BndSeg _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt;\n+49\n+_\b5_\b1 typedef Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment >\n+( _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& ), int > _\bF_\ba_\bc_\bt_\bo_\br_\by_\bT_\by_\bp_\be;\n+52\n+_\b5_\b9 static std::unique_ptr< BoundarySegment > _\br_\be_\bs_\bt_\bo_\br_\be( _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& in )\n+60 {\n+61 int key = -1;\n+62 // read class key for restore\n+63 in.read( (char *) &key, sizeof( int ) );\n+64\n+65 // factory creates a unique_ptr which can be released later on\n+66 return factory().create( key, in );\n+67 }\n+68\n+69 template \n+_\b7_\b0 static int _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by()\n+71 {\n+72 const int key = createKey();\n+73 // create factory method that produces unique_ptr\n+74 factory().template define< DerivedType >( key );\n+75 // return key for storage in derived class\n+76 return key;\n+77 }\n+78\n+79 private:\n+80 static int createKey()\n+81 {\n+82 static int key = 0;\n+83 return key++;\n+84 }\n+85\n+86 static _\bF_\ba_\bc_\bt_\bo_\br_\by_\bT_\by_\bp_\be& factory()\n+87 {\n+88 return Dune::Singleton< FactoryType > :: instance();\n+89 }\n+90 };\n+91\n+92 template< int dim, int dimworld, class ctype >\n+_\b9_\b3 struct _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt : public _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be<\n+BoundarySegment< dim, dimworld, ctype > >\n+94 {\n+_\b9_\b5 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bc_\bt_\by_\bp_\be_\b _\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n+_\b9_\b6 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b<_\b _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bc_\bt_\by_\bp_\be\n+_\b> > _\bB_\ba_\bs_\be_\bT_\by_\bp_\be;\n+97\n+_\b9_\b8 typedef typename BaseType :: ObjectStreamType _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be;\n+99\n+100 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bs_\bt_\bo_\br_\be;\n+101 using _\bB_\ba_\bs_\be_\bT_\by_\bp_\be _\b:_\b:_\b _\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+102\n+_\b1_\b0_\b4 virtual _\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt() {}\n+105\n+108 virtual FieldVector< ctype, dimworld >\n+_\b1_\b0_\b9 _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const FieldVector< ctype, dim-1> &local ) const = 0;\n+110\n+_\b1_\b1_\b4 virtual void _\bb_\ba_\bc_\bk_\bu_\bp( [[maybe_unused]] _\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be& buffer ) const\n+115 {\n+116 DUNE_THROW(NotImplemented,\"BoundarySegment::backup needs to be\n+overloaded!\");\n+117 }\n+118 };\n+119\n+120\n+121} // end namespace Dune\n+122\n+123#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A struct that collects all associated types of one implementation from the\n-Traits class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt\n-A set of PartitionType values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be\n+BaseType::ObjectStreamType ObjectStreamType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bT_\bh_\bi_\bs_\bT_\by_\bp_\be\n+BoundarySegment< dim, dimworld, ctype > ThisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp\n+virtual void backup(ObjectStreamType &buffer) const\n+write BoundarySegment's data to stream buffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bB_\ba_\bs_\be_\bT_\by_\bp_\be\n+BoundarySegmentBackupRestore< BoundarySegment< dim, dimworld, ctype > >\n+BaseType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+virtual FieldVector< ctype, dimworld > operator()(const FieldVector< ctype,\n+dim-1 > &local) const =0\n+A function mapping local coordinates on a boundary segment to world\n+coordinates.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b:_\b:_\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n+virtual ~BoundarySegment()\n+Dummy virtual destructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be\n+static std::unique_ptr< BoundarySegment > restore(ObjectStreamType &in)\n+create an object of BoundarySegment type from a previously registered factory\n+linked to key.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bT_\by_\bp_\be\n+Dune::ParameterizedObjectFactory< std::unique_ptr< BoundarySegment >\n+(ObjectStreamType &), int > FactoryType\n+type of factory creating a unique_ptr from an ObjectStreamType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n+BndSeg BoundarySegment\n+type of BoundarySegment interface class\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt_\bS_\bt_\br_\be_\ba_\bm_\bT_\by_\bp_\be\n+std::stringstream ObjectStreamType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bB_\ba_\bc_\bk_\bu_\bp_\bR_\be_\bs_\bt_\bo_\br_\be_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+static int registerFactory()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:70\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00578.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00578.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordfunction.hh File Reference\n+dune-grid: identity.hh File Reference\n \n \n \n \n \n \n \n@@ -72,46 +72,31 @@\n
  • dune
  • grid
  • geometrygrid
  • \n \n \n
    \n \n-
    coordfunction.hh File Reference
    \n+
    identity.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/std/type_traits.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::AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >
     Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::AnalyticalCoordFunction and the evaluate method mapping \"$ has to be supplied. More...
     
    class  Dune::AnalyticalCoordFunction< ct, dimD, dimR, Impl >
     Derive an implementation of an analytical coordinate function from this class. More...
     
    class  Dune::DiscreteCoordFunctionInterface< ct, dimR, Impl >
     Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::DiscreteCoordinateFunction and the evaluate method taking an entity of the host grid together with the number of a vertex returns the coordinate in \"$ of that corner. The user must ensure continuity of this mapping. In addition an adapt method is provided which is called whenever adapt() is called on the Dune::GeometryGrid. More...
     
    class  Dune::DiscreteCoordFunction< ct, dimR, Impl >
     Derive an implementation of a discrete coordinate function from this class. More...
    class  Dune::IdenticalCoordFunction< ctype, dim >
     
    \n \n \n \n \n-\n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,45 +2,19 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-coordfunction.hh File Reference\n-#include \n-#include \n-#include \n+identity.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\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:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n- Interface class for using an analytical function to define the geometry\n-\u00a0 of a _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd. An implementation should be derived from\n- _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn and the evaluate method mapping [$ R^d\\to\n- R^r $]has to be supplied. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n-\u00a0 Derive an implementation of an analytical coordinate function from this\n- class. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n- Interface class for using a discrete function to define the geometry of\n- a _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd. An implementation should be derived from Dune::\n- DiscreteCoordinateFunction and the evaluate method taking an entity of\n-\u00a0 the host grid together with the number of a vertex returns the\n- coordinate in [$ R^r $]of that corner. The user must ensure continuity\n- of this mapping. In addition an adapt method is provided which is\n- called whenever _\ba_\bd_\ba_\bp_\bt_\b(_\b) is called on the _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n-\u00a0 Derive an implementation of a discrete coordinate function from this\n- class. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\by_\bp_\be_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n-\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00578_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00578_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordfunction.hh Source File\n+dune-grid: identity.hh Source File\n \n \n \n \n \n \n \n@@ -74,370 +74,69 @@\n \n \n
    \n
    \n-
    coordfunction.hh
    \n+
    identity.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_COORDFUNCTION_HH
    \n-
    6#define DUNE_GEOGRID_COORDFUNCTION_HH
    \n+
    5#ifndef DUNE_GEOGRID_IDENTITY_HH
    \n+
    6#define DUNE_GEOGRID_IDENTITY_HH
    \n
    7
    \n-
    8#include <cassert>
    \n+\n
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/std/type_traits.hh>
    \n+
    10namespace Dune
    \n+
    11{
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 // Internal Forward Declarations
    \n-
    17 // -----------------------------
    \n-
    18
    \n-
    19 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n-
    20 class AnalyticalCoordFunction;
    \n-
    21
    \n-
    22 template< class ct, unsigned int dimR, class Impl >
    \n-
    23 class DiscreteCoordFunction;
    \n+
    13 template< class ctype, unsigned int dim >
    \n+
    \n+\n+\n+
    16 < ctype, dim, dim, IdenticalCoordFunction< ctype, dim > >
    \n+
    17 {
    \n+\n+\n+
    20
    \n+
    21 public:
    \n+
    22 typedef typename Base :: DomainVector DomainVector;
    \n+
    23 typedef typename Base :: RangeVector RangeVector;
    \n
    24
    \n-
    25
    \n-
    26
    \n-
    27 // AnalyticalCoordFunctionInterface
    \n-
    28 // --------------------------------
    \n-
    29
    \n-
    42 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n-
    \n-\n-
    44 {
    \n-\n-
    46
    \n-
    47 friend class AnalyticalCoordFunction< ct, dimD, dimR, Impl >;
    \n-
    48
    \n-
    49 public:
    \n-
    50 typedef This Interface;
    \n-
    51 typedef Impl Implementation;
    \n-
    52
    \n-
    54 typedef ct ctype;
    \n-
    55
    \n-
    57 static const unsigned int dimDomain = dimD;
    \n-
    59 static const unsigned int dimRange = dimR;
    \n-
    60
    \n-
    62 typedef FieldVector< ctype, dimDomain > DomainVector;
    \n-
    64 typedef FieldVector< ctype, dimRange > RangeVector;
    \n-
    65
    \n-
    66 private:
    \n-\n-
    68 AnalyticalCoordFunctionInterface ( const This & ) = default;
    \n-\n-\n-
    71 This &operator= ( const This & ) = default;
    \n-
    72 This &operator= ( This && ) = default;
    \n-
    73
    \n-
    74 // helper for picking the correct version of evaluate further down
    \n-
    75 template<typename F, typename DV>
    \n-
    76 using has_operator_parentheses = decltype(std::declval<F>()(std::declval<DV>()));
    \n-
    77
    \n-
    78 public:
    \n-
    79
    \n-
    80#ifdef DOXYGEN
    \n-
    81
    \n-
    83 void evaluate ( const DomainVector &x, RangeVector &y ) const;
    \n-
    84
    \n-
    85#else
    \n-
    86
    \n-
    87 template<typename DV>
    \n-
    88 std::enable_if_t<
    \n-
    89 Std::is_detected<has_operator_parentheses,Impl,DV>::value
    \n-
    90 >
    \n-
    91 evaluate ( const DV &x, RangeVector &y ) const
    \n-
    92 {
    \n-
    93 y = asImp()(x);
    \n-
    94 }
    \n-
    95
    \n-
    96 template<typename DV>
    \n-
    97 std::enable_if_t<
    \n-
    98 not Std::is_detected<has_operator_parentheses,Impl,DV>::value
    \n-
    99 >
    \n-
    100 evaluate ( const DV &x, RangeVector &y ) const
    \n-
    101 {
    \n-
    102 assert(
    \n-
    103 static_cast<void(This::*)(const DomainVector&, RangeVector&) const>(&This::evaluate) !=
    \n-
    104 static_cast<void(Impl::*)(const DomainVector&, RangeVector&) const>(&Impl::evaluate) &&
    \n-
    105 "You need to implement either operator() or evaluate() in your coordinate function!");
    \n-
    106 asImp().evaluate( x, y );
    \n-
    107 }
    \n-
    108
    \n-
    109#endif // DOXYGEN
    \n-
    110
    \n-
    111 protected:
    \n-
    112
    \n-
    \n-
    113 const Implementation &asImp () const
    \n-
    114 {
    \n-
    115 return static_cast< const Implementation & >( *this );
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-\n-
    119 {
    \n-
    120 return static_cast< Implementation & >( *this );
    \n-
    121 }
    \n-
    \n-
    122 };
    \n-
    \n-
    123
    \n-
    124
    \n-
    125
    \n-
    126 // AnalyticalCoordFunction
    \n-
    127 // -----------------------
    \n-
    131 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n-
    \n-\n-
    133 : public AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >
    \n-
    134 {
    \n-\n-\n-
    137
    \n-
    138 public:
    \n-
    139 typedef typename Base :: DomainVector DomainVector;
    \n-
    140 typedef typename Base :: RangeVector RangeVector;
    \n-
    141
    \n-
    142 protected:
    \n-\n-
    144 AnalyticalCoordFunction ( const This & ) = default;
    \n-\n-\n-
    147 This &operator= ( const This & ) = default;
    \n-
    148 This &operator= ( This && ) = default;
    \n-
    149
    \n-
    150 private:
    \n-
    151
    \n-
    152 };
    \n-
    \n-
    153
    \n-
    154
    \n-
    155
    \n-
    156 // DiscreteCoordFunctionInterface
    \n-
    157 // ------------------------------
    \n-
    158
    \n-
    173 template< class ct, unsigned int dimR, class Impl >
    \n-
    \n-\n-
    175 {
    \n-\n-
    177
    \n-
    178 friend class DiscreteCoordFunction< ct, dimR, Impl >;
    \n-
    179
    \n-
    180 public:
    \n-\n-
    182 typedef Impl Implementation;
    \n-
    183
    \n-
    185 typedef ct ctype;
    \n-
    186
    \n-
    188 static const unsigned int dimRange = dimR;
    \n-
    189
    \n-
    191 typedef FieldVector< ctype, dimRange > RangeVector;
    \n-
    192
    \n-
    193 private:
    \n-\n-
    195 DiscreteCoordFunctionInterface ( const This & ) = default;
    \n-
    196 DiscreteCoordFunctionInterface ( This && ) = default;
    \n-\n-
    198 This &operator= ( const This & ) = default;
    \n-
    199 This &operator= ( This && ) = default;
    \n-
    200
    \n-
    201 public:
    \n-
    210 template< class HostEntity >
    \n-
    \n-
    211 void evaluate ( const HostEntity &hostEntity, unsigned int corner,
    \n-
    212 RangeVector &y ) const
    \n-
    213 {
    \n-
    214 asImp().evaluate( hostEntity, corner, y );
    \n-
    215 }
    \n-
    \n-
    216
    \n-
    \n-
    220 void adapt ()
    \n-
    221 {
    \n-
    222 asImp().adapt();
    \n-
    223 }
    \n-
    \n-
    224
    \n-
    225 protected:
    \n-
    \n-
    226 const Implementation &asImp () const
    \n-
    227 {
    \n-
    228 return static_cast< const Implementation & >( *this );
    \n-
    229 }
    \n-
    \n-
    230
    \n-
    \n-\n-
    232 {
    \n-
    233 return static_cast< Implementation & >( *this );
    \n-
    234 }
    \n-
    \n-
    235 };
    \n-
    \n-
    236
    \n-
    237
    \n-
    238
    \n-
    239 // DiscreteCoordFunction
    \n-
    240 // ---------------------
    \n-
    241 //
    \n-
    245 template< class ct, unsigned int dimR, class Impl >
    \n-
    \n-\n-
    247 : public DiscreteCoordFunctionInterface< ct, dimR, Impl >
    \n-
    248 {
    \n-\n-\n-
    251
    \n-
    252 public:
    \n-
    253 typedef typename Base :: RangeVector RangeVector;
    \n-
    254
    \n-
    255 protected:
    \n-\n-
    257 DiscreteCoordFunction ( const This & ) = default;
    \n-
    258 DiscreteCoordFunction ( This && ) = default;
    \n-\n-
    260 This &operator= ( const This & ) = default;
    \n-
    261 This &operator= ( This && ) = default;
    \n-
    262
    \n-
    \n-
    263 void adapt ()
    \n-
    264 {}
    \n-
    \n-
    265
    \n-
    266 private:
    \n-
    267 template< class HostEntity >
    \n-
    268 void evaluate ( const HostEntity &hostEntity, unsigned int corner,
    \n-
    269 RangeVector &y ) const;
    \n-
    270 };
    \n-
    \n-
    271
    \n-
    272
    \n-
    273
    \n-
    274 namespace GeoGrid
    \n-
    275 {
    \n-
    276
    \n-
    277 // isCoordFunctionInterface
    \n-
    278 // ------------------------
    \n-
    279
    \n-
    280 template< class CoordFunctionInterface >
    \n-
    281 struct isCoordFunctionInterface
    \n-
    282 {
    \n-
    283 static const bool value = false;
    \n-
    284 };
    \n-
    285
    \n-
    286 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n-
    287 struct isCoordFunctionInterface
    \n-
    288 < AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >
    \n-
    289 {
    \n-
    290 static const bool value = true;
    \n-
    291 };
    \n-
    292
    \n-
    293 template< class ct, unsigned int dimR, class Impl >
    \n-
    294 struct isCoordFunctionInterface
    \n-
    295 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n-
    296 {
    \n-
    297 static const bool value = true;
    \n-
    298 };
    \n-
    299
    \n-
    300
    \n-
    301
    \n-
    302 // isDiscreteCoordFunctionInterface
    \n-
    303 // --------------------------------
    \n-
    304
    \n-
    305 template< class CoordFunctionInterface >
    \n-
    306 struct isDiscreteCoordFunctionInterface
    \n-
    307 {
    \n-
    308 static const bool value = false;
    \n-
    309 };
    \n-
    310
    \n-
    311 template< class ct, unsigned int dimR, class Impl >
    \n-
    312 struct isDiscreteCoordFunctionInterface
    \n-
    313 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n-
    314 {
    \n-
    315 static const bool value = true;
    \n-
    316 };
    \n-
    317
    \n-
    318
    \n-
    319
    \n-
    320 // AdaptCoordFunction
    \n-
    321 // ------------------
    \n-
    322
    \n-
    323 template< class CoordFunctionInterface >
    \n-
    324 struct AdaptCoordFunction
    \n-
    325 {
    \n-
    326 static void adapt ( CoordFunctionInterface & )
    \n-
    327 {}
    \n-
    328 };
    \n-
    329
    \n-
    330 template< class ct, unsigned int dimR, class Impl >
    \n-
    331 struct AdaptCoordFunction< DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n-
    332 {
    \n-
    333 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl > CoordFunctionInterface;
    \n-
    334
    \n-
    335 static void adapt ( CoordFunctionInterface &coordFunction )
    \n-
    336 {
    \n-
    337 coordFunction.adapt();
    \n-
    338 }
    \n-
    339 };
    \n-
    340
    \n-
    341 } // namespace GeoGrid
    \n-
    342
    \n-
    343} // namespace Dune
    \n-
    344
    \n-
    345#endif // #ifndef DUNE_GEOGRID_COORDFUNCTION_HH
    \n+
    25 template< typename... Args >
    \n+
    \n+\n+
    27 {}
    \n+
    \n+
    28
    \n+
    \n+\n+
    30 {
    \n+
    31 return x;
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    34 };
    \n+
    \n+
    35
    \n+
    36}
    \n+
    37
    \n+
    38#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Derive an implementation of an analytical coordinate function from this class.
    Definition coordfunction.hh:134
    \n-
    Base::DomainVector DomainVector
    Definition coordfunction.hh:139
    \n-\n-\n-
    AnalyticalCoordFunction(This &&)=default
    \n-
    Base::RangeVector RangeVector
    Definition coordfunction.hh:140
    \n-
    This & operator=(const This &)=default
    \n-
    AnalyticalCoordFunction(const This &)=default
    \n-
    Derive an implementation of a discrete coordinate function from this class.
    Definition coordfunction.hh:248
    \n-
    This & operator=(const This &)=default
    \n-
    void adapt()
    Definition coordfunction.hh:263
    \n-\n-
    DiscreteCoordFunction(This &&)=default
    \n-\n-
    DiscreteCoordFunction(const This &)=default
    \n-
    Base::RangeVector RangeVector
    Definition coordfunction.hh:253
    \n-
    Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid....
    Definition coordfunction.hh:44
    \n-
    Impl Implementation
    Definition coordfunction.hh:51
    \n-
    FieldVector< ctype, dimRange > RangeVector
    range vector for the evaluate method
    Definition coordfunction.hh:64
    \n-
    void evaluate(const DomainVector &x, RangeVector &y) const
    evaluate method for global mapping
    \n-
    static const unsigned int dimRange
    dimension of the range vector
    Definition coordfunction.hh:59
    \n-
    ct ctype
    field type of the coordinate vector
    Definition coordfunction.hh:54
    \n-
    static const unsigned int dimDomain
    dimension of the range vector (dimensionworld of host grid)
    Definition coordfunction.hh:57
    \n-
    const Implementation & asImp() const
    Definition coordfunction.hh:113
    \n-
    This Interface
    Definition coordfunction.hh:50
    \n-
    Implementation & asImp()
    Definition coordfunction.hh:118
    \n-
    FieldVector< ctype, dimDomain > DomainVector
    domain vector for the evaluate method
    Definition coordfunction.hh:62
    \n-
    Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid....
    Definition coordfunction.hh:175
    \n-
    static const unsigned int dimRange
    dimension of the range vector
    Definition coordfunction.hh:188
    \n-
    void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
    evaluate method
    Definition coordfunction.hh:211
    \n-
    Implementation & asImp()
    Definition coordfunction.hh:231
    \n-
    ct ctype
    field type of the coordinate vector
    Definition coordfunction.hh:185
    \n-
    void adapt()
    method called from grid.adapt() method to allow adaptation of the discrete coordinate function
    Definition coordfunction.hh:220
    \n-
    FieldVector< ctype, dimRange > RangeVector
    range vector for the evaluate method
    Definition coordfunction.hh:191
    \n-
    const Implementation & asImp() const
    Definition coordfunction.hh:226
    \n-
    Impl Implementation
    Definition coordfunction.hh:182
    \n-
    This Interface
    Definition coordfunction.hh:181
    \n+
    Definition identity.hh:17
    \n+
    IdenticalCoordFunction(Args &...)
    Definition identity.hh:26
    \n+
    Base::RangeVector RangeVector
    Definition identity.hh:23
    \n+
    RangeVector operator()(const DomainVector &x) const
    Definition identity.hh:29
    \n+
    Base::DomainVector DomainVector
    Definition identity.hh:22
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,429 +1,71 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-coordfunction.hh\n+identity.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_COORDFUNCTION_HH\n-6#define DUNE_GEOGRID_COORDFUNCTION_HH\n+5#ifndef DUNE_GEOGRID_IDENTITY_HH\n+6#define DUNE_GEOGRID_IDENTITY_HH\n 7\n-8#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 9\n-10#include \n-11#include \n+10namespace _\bD_\bu_\bn_\be\n+11{\n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 // Internal Forward Declarations\n-17 // -----------------------------\n-18\n-19 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n-20 class AnalyticalCoordFunction;\n-21\n-22 template< class ct, unsigned int dimR, class Impl >\n-23 class DiscreteCoordFunction;\n+13 template< class ctype, unsigned int dim >\n+_\b1_\b4 class _\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+15 : public _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+16 < ctype, dim, dim, IdenticalCoordFunction< ctype, dim > >\n+17 {\n+18 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+19 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bT_\bh_\bi_\bs_\b _\b> _\bB_\ba_\bs_\be;\n+20\n+21 public:\n+_\b2_\b2 typedef typename Base :: DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+_\b2_\b3 typedef typename Base :: RangeVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n 24\n-25\n-26\n-27 // AnalyticalCoordFunctionInterface\n-28 // --------------------------------\n-29\n-42 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n-_\b4_\b3 class _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-44 {\n-45 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n-46\n-47 friend class _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< ct, dimD, dimR, Impl >;\n-48\n-49 public:\n-_\b5_\b0 typedef _\bT_\bh_\bi_\bs _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n-_\b5_\b1 typedef Impl _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn;\n-52\n-_\b5_\b4 typedef ct _\bc_\bt_\by_\bp_\be;\n-55\n-_\b5_\b7 static const unsigned int _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = dimD;\n-_\b5_\b9 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n-60\n-_\b6_\b2 typedef FieldVector< ctype, dimDomain > _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-_\b6_\b4 typedef FieldVector< ctype, dimRange > _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-65\n-66 private:\n-67 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n-68 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( const _\bT_\bh_\bi_\bs & ) = default;\n-69 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( _\bT_\bh_\bi_\bs && ) = default;\n-70 _\b~_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n-71 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & ) = default;\n-72 _\bT_\bh_\bi_\bs &operator= ( _\bT_\bh_\bi_\bs && ) = default;\n-73\n-74 // helper for picking the correct version of evaluate further down\n-75 template\n-76 using has_operator_parentheses = decltype(std::declval()(std::declval\n-()));\n-77\n-78 public:\n-79\n-80#ifdef DOXYGEN\n-81\n-_\b8_\b3 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const;\n-84\n-85#else\n-86\n-87 template\n-88 std::enable_if_t<\n-89 Std::is_detected::value\n-90 >\n-91 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DV &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n-92 {\n-93 y = _\ba_\bs_\bI_\bm_\bp()(x);\n-94 }\n-95\n-96 template\n-97 std::enable_if_t<\n-98 not Std::is_detected::value\n-99 >\n-100 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DV &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n-101 {\n-102 assert(\n-103 static_cast(&_\bT_\bh_\bi_\bs_\b:_\b:\n-_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be) !=\n-104 static_cast(&Impl::\n-evaluate) &&\n-105 \"You need to implement either operator() or evaluate() in your coordinate\n-function!\");\n-106 _\ba_\bs_\bI_\bm_\bp().evaluate( x, y );\n-107 }\n-108\n-109#endif // DOXYGEN\n-110\n-111 protected:\n-112\n-_\b1_\b1_\b3 const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp () const\n-114 {\n-115 return static_cast< const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n-116 }\n-117\n-_\b1_\b1_\b8 _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp ()\n-119 {\n-120 return static_cast< _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n-121 }\n-122 };\n-123\n-124\n-125\n-126 // AnalyticalCoordFunction\n-127 // -----------------------\n-131 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n-_\b1_\b3_\b2 class _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-133 : public _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< ct, dimD, dimR, Impl >\n-134 {\n-135 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n-136 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bB_\ba_\bs_\be;\n-137\n-138 public:\n-_\b1_\b3_\b9 typedef typename Base :: DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-_\b1_\b4_\b0 typedef typename Base :: RangeVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-141\n-142 protected:\n-_\b1_\b4_\b3 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n-_\b1_\b4_\b4 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const _\bT_\bh_\bi_\bs & ) = default;\n-_\b1_\b4_\b5 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( _\bT_\bh_\bi_\bs && ) = default;\n-_\b1_\b4_\b6 _\b~_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n-_\b1_\b4_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs & ) = default;\n-_\b1_\b4_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bT_\bh_\bi_\bs && ) = default;\n-149\n-150 private:\n-151\n-152 };\n-153\n-154\n-155\n-156 // DiscreteCoordFunctionInterface\n-157 // ------------------------------\n-158\n-173 template< class ct, unsigned int dimR, class Impl >\n-_\b1_\b7_\b4 class _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-175 {\n-176 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n-177\n-178 friend class _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< ct, dimR, Impl >;\n-179\n-180 public:\n-_\b1_\b8_\b1 typedef _\bT_\bh_\bi_\bs _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n-_\b1_\b8_\b2 typedef Impl _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn;\n-183\n-_\b1_\b8_\b5 typedef ct _\bc_\bt_\by_\bp_\be;\n-186\n-_\b1_\b8_\b8 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n-189\n-_\b1_\b9_\b1 typedef FieldVector< ctype, dimRange > _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-192\n-193 private:\n-194 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n-195 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( const _\bT_\bh_\bi_\bs & ) = default;\n-196 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( _\bT_\bh_\bi_\bs && ) = default;\n-197 _\b~_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n-198 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & ) = default;\n-199 _\bT_\bh_\bi_\bs &operator= ( _\bT_\bh_\bi_\bs && ) = default;\n-200\n-201 public:\n-210 template< class HostEntity >\n-_\b2_\b1_\b1 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const HostEntity &hostEntity, unsigned int corner,\n-212 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n-213 {\n-214 _\ba_\bs_\bI_\bm_\bp().evaluate( hostEntity, corner, y );\n-215 }\n-216\n-_\b2_\b2_\b0 void _\ba_\bd_\ba_\bp_\bt ()\n-221 {\n-222 _\ba_\bs_\bI_\bm_\bp().adapt();\n-223 }\n-224\n-225 protected:\n-_\b2_\b2_\b6 const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp () const\n-227 {\n-228 return static_cast< const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n-229 }\n-230\n-_\b2_\b3_\b1 _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp ()\n-232 {\n-233 return static_cast< _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n-234 }\n-235 };\n-236\n-237\n-238\n-239 // DiscreteCoordFunction\n-240 // ---------------------\n-241 //\n-245 template< class ct, unsigned int dimR, class Impl >\n-_\b2_\b4_\b6 class _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-247 : public _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< ct, dimR, Impl >\n-248 {\n-249 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n-250 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bB_\ba_\bs_\be;\n-251\n-252 public:\n-_\b2_\b5_\b3 typedef typename Base :: RangeVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-254\n-255 protected:\n-_\b2_\b5_\b6 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n-_\b2_\b5_\b7 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const _\bT_\bh_\bi_\bs & ) = default;\n-_\b2_\b5_\b8 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( _\bT_\bh_\bi_\bs && ) = default;\n-_\b2_\b5_\b9 _\b~_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n-_\b2_\b6_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs & ) = default;\n-_\b2_\b6_\b1 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bT_\bh_\bi_\bs && ) = default;\n-262\n-_\b2_\b6_\b3 void _\ba_\bd_\ba_\bp_\bt ()\n-264 {}\n-265\n-266 private:\n-267 template< class HostEntity >\n-268 void evaluate ( const HostEntity &hostEntity, unsigned int corner,\n-269 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const;\n-270 };\n-271\n-272\n-273\n-274 namespace GeoGrid\n-275 {\n-276\n-277 // isCoordFunctionInterface\n-278 // ------------------------\n-279\n-280 template< class CoordFunctionInterface >\n-281 struct isCoordFunctionInterface\n-282 {\n-283 static const bool value = false;\n-284 };\n-285\n-286 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n-287 struct isCoordFunctionInterface\n-288 < AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >\n-289 {\n-290 static const bool value = true;\n-291 };\n-292\n-293 template< class ct, unsigned int dimR, class Impl >\n-294 struct isCoordFunctionInterface\n-295 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >\n-296 {\n-297 static const bool value = true;\n-298 };\n-299\n-300\n-301\n-302 // isDiscreteCoordFunctionInterface\n-303 // --------------------------------\n-304\n-305 template< class CoordFunctionInterface >\n-306 struct isDiscreteCoordFunctionInterface\n-307 {\n-308 static const bool value = false;\n-309 };\n-310\n-311 template< class ct, unsigned int dimR, class Impl >\n-312 struct isDiscreteCoordFunctionInterface\n-313 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >\n-314 {\n-315 static const bool value = true;\n-316 };\n-317\n-318\n-319\n-320 // AdaptCoordFunction\n-321 // ------------------\n-322\n-323 template< class CoordFunctionInterface >\n-324 struct AdaptCoordFunction\n-325 {\n-326 static void adapt ( CoordFunctionInterface & )\n-327 {}\n-328 };\n-329\n-330 template< class ct, unsigned int dimR, class Impl >\n-331 struct AdaptCoordFunction< DiscreteCoordFunctionInterface< ct, dimR, Impl >\n->\n-332 {\n-333 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl >\n-CoordFunctionInterface;\n-334\n-335 static void adapt ( CoordFunctionInterface &coordFunction )\n-336 {\n-337 coordFunction.adapt();\n-338 }\n-339 };\n-340\n-341 } // namespace GeoGrid\n-342\n-343} // namespace Dune\n-344\n-345#endif // #ifndef DUNE_GEOGRID_COORDFUNCTION_HH\n+25 template< typename... Args >\n+_\b2_\b6 _\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn( Args&... )\n+27 {}\n+28\n+_\b2_\b9 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br& x) const\n+30 {\n+31 return x;\n+32 }\n+33\n+34 };\n+35\n+36}\n+37\n+38#endif\n+_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n Derive an implementation of an analytical coordinate function from this class.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 coordfunction.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-AnalyticalCoordFunction()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-~AnalyticalCoordFunction()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-AnalyticalCoordFunction(This &&)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const This &)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-AnalyticalCoordFunction(const This &)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Derive an implementation of a discrete coordinate function from this class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const This &)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n-void adapt()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:263\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-DiscreteCoordFunction()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-DiscreteCoordFunction(This &&)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-~DiscreteCoordFunction()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-DiscreteCoordFunction(const This &)=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+IdenticalCoordFunction(Args &...)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface class for using an analytical function to define the geometry of a\n-Dune::GeometryGrid....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-Impl Implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimRange > RangeVector\n-range vector for the evaluate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, RangeVector &y) const\n-evaluate method for global mapping\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const unsigned int dimRange\n-dimension of the range vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-field type of the coordinate vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n-static const unsigned int dimDomain\n-dimension of the range vector (dimensionworld of host grid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n-const Implementation & asImp() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-This Interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n-Implementation & asImp()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimDomain > DomainVector\n-domain vector for the evaluate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface class for using a discrete function to define the geometry of a\n-Dune::GeometryGrid....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const unsigned int dimRange\n-dimension of the range vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector\n-&y) const\n-evaluate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n-Implementation & asImp()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-field type of the coordinate vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n-void adapt()\n-method called from grid.adapt() method to allow adaptation of the discrete\n-coordinate function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimRange > RangeVector\n-range vector for the evaluate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n-const Implementation & asImp() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-Impl Implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-This Interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:181\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+RangeVector operator()(const DomainVector &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 identity.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-grid-doc/doxygen/a00581.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00581.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hostcorners.hh File Reference\n+dune-grid: coordfunctioncaller.hh File Reference\n \n \n \n \n \n \n \n@@ -70,29 +70,23 @@\n \n \n
    \n \n-
    hostcorners.hh File Reference
    \n+
    coordfunctioncaller.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/entity.hh>
    \n+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::GeoGrid::HostCorners< HostEntity >
     
    \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,19 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hostcorners.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh>\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+coordfunctioncaller.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bh_\bo_\bs_\bt_\bc_\bo_\br_\bn_\be_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\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:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b _\b>\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n \u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n \u00a0\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00581_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00581_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hostcorners.hh Source File\n+dune-grid: coordfunctioncaller.hh Source File\n \n \n \n \n \n \n \n@@ -74,90 +74,123 @@\n \n \n \n
    \n-
    hostcorners.hh
    \n+
    coordfunctioncaller.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_HOSTCORNERS_HH
    \n-
    6#define DUNE_GEOGRID_HOSTCORNERS_HH
    \n+
    5#ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
    \n+
    6#define DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+\n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13
    \n
    14 namespace GeoGrid
    \n
    15 {
    \n
    16
    \n-
    17 // HostCorners
    \n-
    18 // -----------
    \n+
    17 // CoordFunctionCaller
    \n+
    18 // -------------------
    \n
    19
    \n-
    20 template< class HostEntity >
    \n-
    \n-\n-
    22 {
    \n-
    23 typedef typename HostEntity::Geometry HostGeometry;
    \n-
    24
    \n-
    25 public:
    \n-
    26 typedef typename HostGeometry::GlobalCoordinate Coordinate;
    \n-
    27
    \n-
    \n-
    28 explicit HostCorners ( const HostEntity &hostEntity )
    \n-
    29 : hostGeometry_( hostEntity.geometry() )
    \n-
    30 {}
    \n-
    \n-
    31
    \n-
    \n-
    32 GeometryType type () const
    \n-
    33 {
    \n-
    34 return hostGeometry_.type();
    \n-
    35 }
    \n-
    \n-
    36
    \n-
    \n-
    37 Coordinate operator[] ( int i ) const
    \n-
    38 {
    \n-
    39 return hostGeometry_.corner( i );
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    42 std::size_t size () const
    \n-
    43 {
    \n-
    44 return hostGeometry_.corners();
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    47 private:
    \n-
    48 HostGeometry hostGeometry_;
    \n-
    49 };
    \n-
    \n-
    50
    \n-
    51 } // namespace GeoGrid
    \n-
    52
    \n-
    53} // namespace Dune
    \n+
    20 template< class HostEntity, class CoordFunctionInterface >
    \n+\n+
    22
    \n+
    23 template< class HostEntity, class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n+
    24 class CoordFunctionCaller< HostEntity, AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >
    \n+
    25 {
    \n+\n+\n+
    28
    \n+
    29 static const int codimension = HostEntity::codimension;
    \n+
    30
    \n+
    31 public:
    \n+
    32 typedef typename CoordFunctionInterface::RangeVector RangeVector;
    \n+
    33
    \n+
    34 CoordFunctionCaller ( const HostEntity &hostEntity,
    \n+
    35 const CoordFunctionInterface &coordFunction )
    \n+
    36 : hostCorners_( hostEntity ),
    \n+
    37 coordFunction_( coordFunction )
    \n+
    38 {}
    \n+
    39
    \n+
    40 void evaluate ( unsigned int i, RangeVector &y ) const
    \n+
    41 {
    \n+
    42 coordFunction_.evaluate( hostCorners_[ i ], y );
    \n+
    43 }
    \n+
    44
    \n+
    45 GeometryType type () const
    \n+
    46 {
    \n+
    47 return hostCorners_.type();
    \n+
    48 }
    \n+
    49
    \n+
    50 std::size_t size () const
    \n+
    51 {
    \n+
    52 return hostCorners_.size();
    \n+
    53 }
    \n
    54
    \n-
    55#endif // #ifndef DUNE_GEOGRID_HOSTCORNERS_HH
    \n+
    55 private:
    \n+
    56 const HostCorners< HostEntity > hostCorners_;
    \n+
    57 const CoordFunctionInterface &coordFunction_;
    \n+
    58 };
    \n+
    59
    \n+
    60 template< class HostEntity, class ct, unsigned int dimR, class Impl >
    \n+
    61 class CoordFunctionCaller< HostEntity, DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n+
    62 {
    \n+
    63 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl > CoordFunctionInterface;
    \n+
    64 typedef CoordFunctionCaller< HostEntity, CoordFunctionInterface > This;
    \n+
    65
    \n+
    66 typedef typename CoordFunctionInterface::RangeVector RangeVector;
    \n+
    67
    \n+
    68 public:
    \n+
    69 CoordFunctionCaller ( const HostEntity &hostEntity,
    \n+
    70 const CoordFunctionInterface &coordFunction )
    \n+
    71 : hostEntity_( hostEntity ),
    \n+
    72 coordFunction_( coordFunction )
    \n+
    73 {}
    \n+
    74
    \n+
    75 void evaluate ( unsigned int i, RangeVector &y ) const
    \n+
    76 {
    \n+
    77 coordFunction_.evaluate( hostEntity_, i, y );
    \n+
    78 }
    \n+
    79
    \n+
    80 GeometryType type () const
    \n+
    81 {
    \n+
    82 return hostEntity_.type();
    \n+
    83 }
    \n+
    84
    \n+
    85 std::size_t size () const
    \n+
    86 {
    \n+
    87 auto refElement = referenceElement< ct, HostEntity::mydimension >( type() );
    \n+
    88 return refElement.size( HostEntity::mydimension );
    \n+
    89 }
    \n+
    90
    \n+
    91 private:
    \n+
    92 const HostEntity &hostEntity_;
    \n+
    93 const CoordFunctionInterface &coordFunction_;
    \n+
    94 };
    \n+
    95
    \n+
    96 } // namespace GeoGrid
    \n+
    97
    \n+
    98} // namespace Dune
    \n+
    99
    \n+
    100#endif // #ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition hostcorners.hh:22
    \n-
    GeometryType type() const
    Definition hostcorners.hh:32
    \n-
    Coordinate operator[](int i) const
    Definition hostcorners.hh:37
    \n-
    HostCorners(const HostEntity &hostEntity)
    Definition hostcorners.hh:28
    \n-
    HostGeometry::GlobalCoordinate Coordinate
    Definition hostcorners.hh:26
    \n-
    std::size_t size() const
    Definition hostcorners.hh:42
    \n-\n+
    GeometryType
    Type representing VTK's entity geometry types.
    Definition common.hh:132
    \n+
    Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid....
    Definition coordfunction.hh:44
    \n+
    Definition coordfunctioncaller.hh:21
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,88 +1,132 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-hostcorners.hh\n+coordfunctioncaller.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_HOSTCORNERS_HH\n-6#define DUNE_GEOGRID_HOSTCORNERS_HH\n+5#ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH\n+6#define DUNE_GEOGRID_COORDFUNCTIONCALLER_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bh_\bo_\bs_\bt_\bc_\bo_\br_\bn_\be_\br_\bs_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+13\n 14 namespace GeoGrid\n 15 {\n 16\n-17 // HostCorners\n-18 // -----------\n+17 // CoordFunctionCaller\n+18 // -------------------\n 19\n-20 template< class HostEntity >\n-_\b2_\b1 class _\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs\n-22 {\n-23 typedef typename HostEntity::Geometry HostGeometry;\n-24\n-25 public:\n-_\b2_\b6 typedef typename HostGeometry::GlobalCoordinate _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-27\n-_\b2_\b8 explicit _\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs ( const HostEntity &hostEntity )\n-29 : hostGeometry_( hostEntity.geometry() )\n-30 {}\n-31\n-_\b3_\b2 GeometryType _\bt_\by_\bp_\be () const\n-33 {\n-34 return hostGeometry_.type();\n-35 }\n-36\n-_\b3_\b7 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const\n-38 {\n-39 return hostGeometry_.corner( i );\n-40 }\n-41\n-_\b4_\b2 std::size_t _\bs_\bi_\bz_\be () const\n-43 {\n-44 return hostGeometry_.corners();\n-45 }\n-46\n-47 private:\n-48 HostGeometry hostGeometry_;\n-49 };\n-50\n-51 } // namespace GeoGrid\n-52\n-53} // namespace Dune\n+20 template< class HostEntity, class CoordFunctionInterface >\n+_\b2_\b1 class _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br;\n+22\n+23 template< class HostEntity, class ct, unsigned int dimD, unsigned int dimR,\n+class Impl >\n+24 class _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br< HostEntity, _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< ct,\n+dimD, dimR, Impl > >\n+25 {\n+26 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n+CoordFunctionInterface;\n+27 typedef _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b> This;\n+28\n+29 static const int codimension = HostEntity::codimension;\n+30\n+31 public:\n+32 typedef typename CoordFunctionInterface::RangeVector RangeVector;\n+33\n+34 _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br ( const HostEntity &hostEntity,\n+35 const CoordFunctionInterface &coordFunction )\n+36 : hostCorners_( hostEntity ),\n+37 coordFunction_( coordFunction )\n+38 {}\n+39\n+40 void evaluate ( unsigned int i, RangeVector &y ) const\n+41 {\n+42 coordFunction_.evaluate( hostCorners_[ i ], y );\n+43 }\n+44\n+45 GeometryType type () const\n+46 {\n+47 return hostCorners_.type();\n+48 }\n+49\n+50 std::size_t size () const\n+51 {\n+52 return hostCorners_.size();\n+53 }\n 54\n-55#endif // #ifndef DUNE_GEOGRID_HOSTCORNERS_HH\n+55 private:\n+56 const HostCorners< HostEntity > hostCorners_;\n+57 const CoordFunctionInterface &coordFunction_;\n+58 };\n+59\n+60 template< class HostEntity, class ct, unsigned int dimR, class Impl >\n+61 class CoordFunctionCaller< HostEntity, DiscreteCoordFunctionInterface< ct,\n+dimR, Impl > >\n+62 {\n+63 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl >\n+CoordFunctionInterface;\n+64 typedef CoordFunctionCaller< HostEntity, CoordFunctionInterface > This;\n+65\n+66 typedef typename CoordFunctionInterface::RangeVector RangeVector;\n+67\n+68 public:\n+69 CoordFunctionCaller ( const HostEntity &hostEntity,\n+70 const CoordFunctionInterface &coordFunction )\n+71 : hostEntity_( hostEntity ),\n+72 coordFunction_( coordFunction )\n+73 {}\n+74\n+75 void evaluate ( unsigned int i, RangeVector &y ) const\n+76 {\n+77 coordFunction_.evaluate( hostEntity_, i, y );\n+78 }\n+79\n+80 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be type () const\n+81 {\n+82 return hostEntity_.type();\n+83 }\n+84\n+85 std::size_t size () const\n+86 {\n+87 auto refElement = referenceElement< ct, HostEntity::mydimension >( type() );\n+88 return refElement.size( HostEntity::mydimension );\n+89 }\n+90\n+91 private:\n+92 const HostEntity &hostEntity_;\n+93 const CoordFunctionInterface &coordFunction_;\n+94 };\n+95\n+96 } // namespace GeoGrid\n+97\n+98} // namespace Dune\n+99\n+100#endif // #ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH\n+_\bh_\bo_\bs_\bt_\bc_\bo_\br_\bn_\be_\br_\bs_\b._\bh_\bh\n+_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-Coordinate operator[](int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs\n-HostCorners(const HostEntity &hostEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-HostGeometry::GlobalCoordinate Coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\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 hostcorners.hh:42\n-_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n+GeometryType\n+Type representing VTK's entity geometry types.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface class for using an analytical function to define the geometry of a\n+Dune::GeometryGrid....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunctioncaller.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-grid-doc/doxygen/a00596.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00596.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cachedcoordfunction.hh File Reference\n+dune-grid: declaration.hh File Reference\n \n \n \n \n \n \n \n@@ -70,44 +70,26 @@\n \n \n
    \n \n-
    cachedcoordfunction.hh File Reference
    \n+
    declaration.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <memory>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/geometrygrid/capabilities.hh>
    \n-#include <dune/grid/geometrygrid/coordfunctioncaller.hh>
    \n-#include <dune/grid/utility/persistentcontainer.hh>
    \n-
    \n+\n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
    \n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::GeoGrid::CoordCache< HostGrid, Coordinate >
     
    class  Dune::CachedCoordFunction< HostGrid, CoordFunction >
     
    \n \n \n \n \n-\n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,31 +1,16 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cachedcoordfunction.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+declaration.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:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n-\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00596_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00596_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cachedcoordfunction.hh Source File\n+dune-grid: declaration.hh Source File\n \n \n \n \n \n \n \n@@ -74,270 +74,34 @@\n \n \n
    \n
    \n-
    cachedcoordfunction.hh
    \n+
    declaration.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH
    \n-
    6#define DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH
    \n+
    5#ifndef DUNE_GEOGRID_DECLARATION_HH
    \n+
    6#define DUNE_GEOGRID_DECLARATION_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <memory>
    \n+
    8namespace Dune
    \n+
    9{
    \n
    10
    \n-
    11#include <dune/common/typetraits.hh>
    \n-
    12
    \n-\n-
    14
    \n-\n-\n-\n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21
    \n-
    22 // Internal Forward Declarations
    \n-
    23 // -----------------------------
    \n-
    24
    \n-
    25 template< class HostGrid, class CoordFunction >
    \n-
    26 class CachedCoordFunction;
    \n-
    27
    \n-
    28
    \n-
    29
    \n-
    30 // GeoGrid::CoordCache
    \n-
    31 // -------------------
    \n-
    32
    \n-
    33 namespace GeoGrid
    \n-
    34 {
    \n-
    35
    \n-
    36 template< class HostGrid, class Coordinate >
    \n-
    \n-\n-
    38 {
    \n-\n-
    40
    \n-
    41 static const unsigned int dimension = HostGrid::dimension;
    \n-
    42
    \n-
    43 typedef typename HostGrid::template Codim< dimension >::Entity Vertex;
    \n-
    44
    \n-\n-
    46
    \n-
    47 public:
    \n-
    \n-
    48 explicit CoordCache ( const HostGrid &hostGrid )
    \n-
    49 : data_( hostGrid, dimension )
    \n-
    50 {}
    \n-
    \n-
    51
    \n-
    52 template< class Entity >
    \n-
    \n-
    53 const Coordinate &operator() ( const Entity &entity, unsigned int corner ) const
    \n-
    54 {
    \n-
    55 return data_( entity, corner );
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    \n-
    58 const Coordinate &operator() ( const Vertex &vertex, unsigned int corner ) const
    \n-
    59 {
    \n-
    60 assert( corner == 0 );
    \n-
    61 return data_[ vertex ];
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    64 template< class Entity >
    \n-
    \n-
    65 Coordinate &operator() ( const Entity &entity, unsigned int corner )
    \n-
    66 {
    \n-
    67 return data_( entity,corner) ;
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 Coordinate &operator() ( const Vertex &vertex, unsigned int corner )
    \n-
    71 {
    \n-
    72 assert( corner == 0 );
    \n-
    73 return data_[ vertex ];
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    \n-
    76 void adapt ()
    \n-
    77 {
    \n-
    78 data_.resize();
    \n-
    79 data_.shrinkToFit();
    \n-
    80 }
    \n-
    \n-
    81
    \n-
    82 private:
    \n-
    83 CoordCache ( const This & );
    \n-
    84 This &operator= ( const This & );
    \n-
    85
    \n-
    86 DataCache data_;
    \n-
    87 };
    \n-
    \n-
    88
    \n-
    89 } // namespace GeoGrid
    \n-
    90
    \n-
    91
    \n-
    92
    \n-
    93 // CachedCoordFunction
    \n-
    94 // -------------------
    \n-
    95
    \n-
    96 template< class HostGrid, class CoordFunction >
    \n-
    \n-\n-
    98 : public DiscreteCoordFunction< typename CoordFunction::ctype, CoordFunction::dimRange, CachedCoordFunction< HostGrid, CoordFunction > >
    \n-
    99 {
    \n-\n-\n-
    102
    \n-
    103 public:
    \n-
    104 typedef typename Base::ctype ctype;
    \n-
    105
    \n-\n-
    107
    \n-
    108 private:
    \n-\n-
    110
    \n-
    111 public:
    \n-
    112 explicit
    \n-
    \n-
    113 CachedCoordFunction ( const HostGrid &hostGrid,
    \n-
    114 const CoordFunction &coordFunction = CoordFunction() )
    \n-
    115 : hostGrid_( hostGrid ),
    \n-
    116 coordFunction_( coordFunction ),
    \n-
    117 cache_( hostGrid )
    \n-
    118 {
    \n-
    119 buildCache();
    \n-
    120 }
    \n-
    \n-
    121
    \n-
    \n-
    122 void adapt ()
    \n-
    123 {
    \n-
    124 cache_.adapt();
    \n-
    125 buildCache();
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    128 void buildCache ();
    \n-
    129
    \n-
    130 template< class HostEntity >
    \n-
    131 void insertEntity ( const HostEntity &hostEntity );
    \n-
    132
    \n-
    133 template< class HostEntity >
    \n-
    \n-
    134 void evaluate ( const HostEntity &hostEntity, unsigned int corner, RangeVector &y ) const
    \n-
    135 {
    \n-
    136 y = cache_( hostEntity, corner );
    \n-
    137#ifndef NDEBUG
    \n-\n-
    139 CoordFunctionCaller;
    \n-
    140
    \n-
    141 RangeVector z;
    \n-
    142 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );
    \n-
    143 coordFunctionCaller.evaluate( corner, z );
    \n-
    144 assert( ((y - z).two_norm() < 1e-6) );
    \n-
    145#endif
    \n-
    146 }
    \n-
    \n-
    147
    \n-
    148 private:
    \n-
    149 const HostGrid &hostGrid_;
    \n-
    150 const CoordFunction &coordFunction_;
    \n-
    151 Cache cache_;
    \n-
    152 };
    \n-
    \n-
    153
    \n-
    154
    \n-
    155
    \n-
    156 // Implementation of CachedCoordFunction
    \n-
    157 // -------------------------------------
    \n-
    158
    \n-
    159 template< class HostGrid, class CoordFunction >
    \n-
    \n-\n-
    161 {
    \n-
    162 typedef typename HostGrid::template Codim< 0 >::Entity Element;
    \n-
    163 typedef typename HostGrid::LevelGridView MacroView;
    \n-
    164 typedef typename HostGrid::HierarchicIterator HierarchicIterator;
    \n-
    165
    \n-
    166 typedef typename MacroView::template Codim< 0 >::template Partition< All_Partition >::Iterator MacroIterator;
    \n-
    167
    \n-
    168 const MacroView macroView = hostGrid_.levelGridView( 0 );
    \n-
    169 const int maxLevel = hostGrid_.maxLevel();
    \n-
    170
    \n-
    171 const MacroIterator mend = macroView.template end< 0, All_Partition >();
    \n-
    172 for( MacroIterator mit = macroView.template begin< 0, All_Partition >(); mit != mend; ++mit )
    \n-
    173 {
    \n-
    174 const Element &macroElement = *mit;
    \n-
    175 insertEntity( macroElement );
    \n-
    176
    \n-
    177 const HierarchicIterator hend = macroElement.hend( maxLevel );
    \n-
    178 for( HierarchicIterator hit = macroElement.hbegin( maxLevel ); hit != hend; ++hit )
    \n-
    179 insertEntity( *hit );
    \n-
    180 }
    \n-
    181 }
    \n-
    \n-
    182
    \n-
    183
    \n-
    184 template< class HostGrid, class CoordFunction >
    \n-
    185 template< class HostEntity >
    \n-\n-
    \n-
    187 ::insertEntity ( const HostEntity &hostEntity )
    \n-
    188 {
    \n-\n-
    190 CoordFunctionCaller;
    \n-
    191
    \n-
    192 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );
    \n-
    193 auto refElement = referenceElement< ctype, HostEntity::dimension >( hostEntity.type() );
    \n-
    194
    \n-
    195 const unsigned int numCorners = refElement.size( HostEntity::dimension );
    \n-
    196 for( unsigned int i = 0; i < numCorners; ++i )
    \n-
    197 coordFunctionCaller.evaluate( i, cache_( hostEntity, i ) );
    \n-
    198 }
    \n-
    \n-
    199
    \n-
    200} // namespace Dune
    \n-
    201
    \n-
    202#endif // #ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH
    \n-\n-\n+
    11 template< class HostGrid, class CoordFunction, class Allocator >
    \n+
    12 class GeometryGrid;
    \n+
    13
    \n+
    14} // namespace Dune
    \n+
    15
    \n+
    16#endif // #ifndef DUNE_GEOGRID_DECLARATION_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition cachedcoordfunction.hh:99
    \n-
    void adapt()
    Definition cachedcoordfunction.hh:122
    \n-
    CachedCoordFunction(const HostGrid &hostGrid, const CoordFunction &coordFunction=CoordFunction())
    Definition cachedcoordfunction.hh:113
    \n-
    void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
    Definition cachedcoordfunction.hh:134
    \n-
    Base::ctype ctype
    Definition cachedcoordfunction.hh:104
    \n-
    Base::RangeVector RangeVector
    Definition cachedcoordfunction.hh:106
    \n-
    void buildCache()
    Definition cachedcoordfunction.hh:160
    \n-
    void insertEntity(const HostEntity &hostEntity)
    Definition cachedcoordfunction.hh:187
    \n-
    Definition cachedcoordfunction.hh:38
    \n-
    void adapt()
    Definition cachedcoordfunction.hh:76
    \n-
    CoordCache(const HostGrid &hostGrid)
    Definition cachedcoordfunction.hh:48
    \n-
    const Coordinate & operator()(const Entity &entity, unsigned int corner) const
    Definition cachedcoordfunction.hh:53
    \n-
    Derive an implementation of a discrete coordinate function from this class.
    Definition coordfunction.hh:248
    \n-
    Base::RangeVector RangeVector
    Definition coordfunction.hh:253
    \n-
    ct ctype
    field type of the coordinate vector
    Definition coordfunction.hh:185
    \n-
    Definition coordfunctioncaller.hh:21
    \n-
    DUNE-conform implementation of the entity.
    Definition geometrygrid/entity.hh:694
    \n-\n-
    void resize(const Value &value=Value())
    Definition persistentcontainermap.hh:87
    \n-
    void shrinkToFit()
    Definition persistentcontainermap.hh:93
    \n-\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,31 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-cachedcoordfunction.hh\n+declaration.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH\n-6#define DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH\n+5#ifndef DUNE_GEOGRID_DECLARATION_HH\n+6#define DUNE_GEOGRID_DECLARATION_HH\n 7\n-8#include \n-9#include \n+8namespace _\bD_\bu_\bn_\be\n+9{\n 10\n-11#include \n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21\n-22 // Internal Forward Declarations\n-23 // -----------------------------\n-24\n-25 template< class HostGrid, class CoordFunction >\n-26 class CachedCoordFunction;\n-27\n-28\n-29\n-30 // GeoGrid::CoordCache\n-31 // -------------------\n-32\n-33 namespace GeoGrid\n-34 {\n-35\n-36 template< class HostGrid, class Coordinate >\n-_\b3_\b7 class _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n-38 {\n-39 typedef _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b> _\bT_\bh_\bi_\bs;\n-40\n-41 static const unsigned int dimension = HostGrid::dimension;\n-42\n-43 typedef typename HostGrid::template Codim< dimension >::Entity Vertex;\n-44\n-45 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b> _\bD_\ba_\bt_\ba_\bC_\ba_\bc_\bh_\be;\n-46\n-47 public:\n-_\b4_\b8 explicit _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be ( const HostGrid &hostGrid )\n-49 : data_( hostGrid, dimension )\n-50 {}\n-51\n-52 template< class Entity >\n-_\b5_\b3 const Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, unsigned int corner )\n-const\n-54 {\n-55 return data_( entity, corner );\n-56 }\n-57\n-_\b5_\b8 const Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const Vertex &vertex, unsigned int corner )\n-const\n-59 {\n-60 assert( corner == 0 );\n-61 return data_[ vertex ];\n-62 }\n-63\n-64 template< class Entity >\n-_\b6_\b5 Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, unsigned int corner )\n-66 {\n-67 return data_( entity,corner) ;\n-68 }\n-69\n-_\b7_\b0 Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const Vertex &vertex, unsigned int corner )\n-71 {\n-72 assert( corner == 0 );\n-73 return data_[ vertex ];\n-74 }\n-75\n-_\b7_\b6 void _\ba_\bd_\ba_\bp_\bt ()\n-77 {\n-78 data_._\br_\be_\bs_\bi_\bz_\be();\n-79 data_._\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt();\n-80 }\n-81\n-82 private:\n-83 _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be ( const This & );\n-84 This &operator= ( const This & );\n-85\n-86 DataCache data_;\n-87 };\n-88\n-89 } // namespace GeoGrid\n-90\n-91\n-92\n-93 // CachedCoordFunction\n-94 // -------------------\n-95\n-96 template< class HostGrid, class CoordFunction >\n-_\b9_\b7 class _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-98 : public _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< typename CoordFunction::ctype,\n-CoordFunction::dimRange, CachedCoordFunction< HostGrid, CoordFunction > >\n-99 {\n-100 typedef _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b> _\bT_\bh_\bi_\bs;\n-101 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be_\b,\n-_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b,_\b _\bT_\bh_\bi_\bs_\b _\b> _\bB_\ba_\bs_\be;\n-102\n-103 public:\n-_\b1_\b0_\b4 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-105\n-_\b1_\b0_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-107\n-108 private:\n-109 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br_\b _\b> _\bC_\ba_\bc_\bh_\be;\n-110\n-111 public:\n-112 explicit\n-_\b1_\b1_\b3 _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const HostGrid &hostGrid,\n-114 const CoordFunction &coordFunction = CoordFunction() )\n-115 : hostGrid_( hostGrid ),\n-116 coordFunction_( coordFunction ),\n-117 cache_( hostGrid )\n-118 {\n-119 _\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be();\n-120 }\n-121\n-_\b1_\b2_\b2 void _\ba_\bd_\ba_\bp_\bt ()\n-123 {\n-124 cache_._\ba_\bd_\ba_\bp_\bt();\n-125 _\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be();\n-126 }\n-127\n-128 void _\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be ();\n-129\n-130 template< class HostEntity >\n-131 void _\bi_\bn_\bs_\be_\br_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const HostEntity &hostEntity );\n-132\n-133 template< class HostEntity >\n-_\b1_\b3_\b4 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const HostEntity &hostEntity, unsigned int corner,\n-_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n-135 {\n-136 y = cache_( hostEntity, corner );\n-137#ifndef NDEBUG\n-138 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-139 CoordFunctionCaller;\n-140\n-141 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br z;\n-142 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );\n-143 coordFunctionCaller.evaluate( corner, z );\n-144 assert( ((y - z).two_norm() < 1e-6) );\n-145#endif\n-146 }\n-147\n-148 private:\n-149 const HostGrid &hostGrid_;\n-150 const CoordFunction &coordFunction_;\n-151 Cache cache_;\n-152 };\n-153\n-154\n-155\n-156 // Implementation of CachedCoordFunction\n-157 // -------------------------------------\n-158\n-159 template< class HostGrid, class CoordFunction >\n-_\b1_\b6_\b0 inline void _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be ()\n-161 {\n-162 typedef typename HostGrid::template Codim< 0 >::Entity Element;\n-163 typedef typename HostGrid::LevelGridView MacroView;\n-164 typedef typename HostGrid::HierarchicIterator HierarchicIterator;\n-165\n-166 typedef typename MacroView::template Codim< 0 >::template Partition<\n-All_Partition >::Iterator MacroIterator;\n-167\n-168 const MacroView macroView = hostGrid_.levelGridView( 0 );\n-169 const int maxLevel = hostGrid_.maxLevel();\n-170\n-171 const MacroIterator mend = macroView.template end< 0, All_Partition >();\n-172 for( MacroIterator mit = macroView.template begin< 0, All_Partition >();\n-mit != mend; ++mit )\n-173 {\n-174 const Element ¯oElement = *mit;\n-175 insertEntity( macroElement );\n-176\n-177 const HierarchicIterator hend = macroElement.hend( maxLevel );\n-178 for( HierarchicIterator hit = macroElement.hbegin( maxLevel ); hit != hend;\n-++hit )\n-179 insertEntity( *hit );\n-180 }\n-181 }\n-182\n-183\n-184 template< class HostGrid, class CoordFunction >\n-185 template< class HostEntity >\n-186 inline void _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>\n-_\b1_\b8_\b7_\b _\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const HostEntity &hostEntity )\n-188 {\n-189 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-190 CoordFunctionCaller;\n-191\n-192 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );\n-193 auto refElement = referenceElement< ctype, HostEntity::dimension >\n-( hostEntity.type() );\n-194\n-195 const unsigned int numCorners = refElement.size( HostEntity::dimension );\n-196 for( unsigned int i = 0; i < numCorners; ++i )\n-197 coordFunctionCaller.evaluate( i, cache_( hostEntity, i ) );\n-198 }\n-199\n-200} // namespace Dune\n-201\n-202#endif // #ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh\n+11 template< class HostGrid, class CoordFunction, class Allocator >\n+12 class GeometryGrid;\n+13\n+14} // namespace Dune\n+15\n+16#endif // #ifndef DUNE_GEOGRID_DECLARATION_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n-void adapt()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-CachedCoordFunction(const HostGrid &hostGrid, const CoordFunction\n-&coordFunction=CoordFunction())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector\n-&y) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Base::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be\n-void buildCache()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-void insertEntity(const HostEntity &hostEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n-void adapt()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n-CoordCache(const HostGrid &hostGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Coordinate & operator()(const Entity &entity, unsigned int corner) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Derive an implementation of a discrete coordinate function from this class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-field type of the coordinate vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunctioncaller.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-DUNE-conform implementation of the entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/entity.hh:694\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:93\n-_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n-_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\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-grid-doc/doxygen/a00599.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00599.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identity.hh File Reference\n+dune-grid: coordfunction.hh File Reference\n \n \n \n \n \n \n \n@@ -72,31 +72,46 @@\n
  • dune
  • grid
  • geometrygrid
  • \n \n \n
    \n \n-
    identity.hh File Reference
    \n+
    coordfunction.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/geometrygrid/coordfunction.hh>
    \n+
    #include <cassert>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/std/type_traits.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::IdenticalCoordFunction< ctype, dim >
    class  Dune::AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >
     Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::AnalyticalCoordFunction and the evaluate method mapping \"$ has to be supplied. More...
     
    class  Dune::AnalyticalCoordFunction< ct, dimD, dimR, Impl >
     Derive an implementation of an analytical coordinate function from this class. More...
     
    class  Dune::DiscreteCoordFunctionInterface< ct, dimR, Impl >
     Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::DiscreteCoordinateFunction and the evaluate method taking an entity of the host grid together with the number of a vertex returns the coordinate in \"$ of that corner. The user must ensure continuity of this mapping. In addition an adapt method is provided which is called whenever adapt() is called on the Dune::GeometryGrid. More...
     
    class  Dune::DiscreteCoordFunction< ct, dimR, Impl >
     Derive an implementation of a discrete coordinate function from this class. More...
     
    \n \n \n \n \n+\n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,19 +2,45 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identity.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+coordfunction.hh File Reference\n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n+ Interface class for using an analytical function to define the geometry\n+\u00a0 of a _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd. An implementation should be derived from\n+ _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn and the evaluate method mapping [$ R^d\\to\n+ R^r $]has to be supplied. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n+\u00a0 Derive an implementation of an analytical coordinate function from this\n+ class. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n+ Interface class for using a discrete function to define the geometry of\n+ a _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd. An implementation should be derived from Dune::\n+ DiscreteCoordinateFunction and the evaluate method taking an entity of\n+\u00a0 the host grid together with the number of a vertex returns the\n+ coordinate in [$ R^r $]of that corner. The user must ensure continuity\n+ of this mapping. In addition an adapt method is provided which is\n+ called whenever _\ba_\bd_\ba_\bp_\bt_\b(_\b) is called on the _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n+\u00a0 Derive an implementation of a discrete coordinate function from this\n+ class. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n+\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00599_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00599_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identity.hh Source File\n+dune-grid: coordfunction.hh Source File\n \n \n \n \n \n \n \n@@ -74,69 +74,370 @@\n \n \n
    \n
    \n-
    identity.hh
    \n+
    coordfunction.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_IDENTITY_HH
    \n-
    6#define DUNE_GEOGRID_IDENTITY_HH
    \n+
    5#ifndef DUNE_GEOGRID_COORDFUNCTION_HH
    \n+
    6#define DUNE_GEOGRID_COORDFUNCTION_HH
    \n
    7
    \n-\n+
    8#include <cassert>
    \n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/std/type_traits.hh>
    \n
    12
    \n-
    13 template< class ctype, unsigned int dim >
    \n-
    \n-\n-\n-
    16 < ctype, dim, dim, IdenticalCoordFunction< ctype, dim > >
    \n-
    17 {
    \n-\n-\n-
    20
    \n-
    21 public:
    \n-
    22 typedef typename Base :: DomainVector DomainVector;
    \n-
    23 typedef typename Base :: RangeVector RangeVector;
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 // Internal Forward Declarations
    \n+
    17 // -----------------------------
    \n+
    18
    \n+
    19 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n+
    20 class AnalyticalCoordFunction;
    \n+
    21
    \n+
    22 template< class ct, unsigned int dimR, class Impl >
    \n+
    23 class DiscreteCoordFunction;
    \n
    24
    \n-
    25 template< typename... Args >
    \n-
    \n-\n-
    27 {}
    \n-
    \n-
    28
    \n-
    \n-\n-
    30 {
    \n-
    31 return x;
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    34 };
    \n-
    \n-
    35
    \n-
    36}
    \n-
    37
    \n-
    38#endif
    \n-\n+
    25
    \n+
    26
    \n+
    27 // AnalyticalCoordFunctionInterface
    \n+
    28 // --------------------------------
    \n+
    29
    \n+
    42 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n+
    \n+\n+
    44 {
    \n+\n+
    46
    \n+
    47 friend class AnalyticalCoordFunction< ct, dimD, dimR, Impl >;
    \n+
    48
    \n+
    49 public:
    \n+
    50 typedef This Interface;
    \n+
    51 typedef Impl Implementation;
    \n+
    52
    \n+
    54 typedef ct ctype;
    \n+
    55
    \n+
    57 static const unsigned int dimDomain = dimD;
    \n+
    59 static const unsigned int dimRange = dimR;
    \n+
    60
    \n+
    62 typedef FieldVector< ctype, dimDomain > DomainVector;
    \n+
    64 typedef FieldVector< ctype, dimRange > RangeVector;
    \n+
    65
    \n+
    66 private:
    \n+\n+
    68 AnalyticalCoordFunctionInterface ( const This & ) = default;
    \n+\n+\n+
    71 This &operator= ( const This & ) = default;
    \n+
    72 This &operator= ( This && ) = default;
    \n+
    73
    \n+
    74 // helper for picking the correct version of evaluate further down
    \n+
    75 template<typename F, typename DV>
    \n+
    76 using has_operator_parentheses = decltype(std::declval<F>()(std::declval<DV>()));
    \n+
    77
    \n+
    78 public:
    \n+
    79
    \n+
    80#ifdef DOXYGEN
    \n+
    81
    \n+
    83 void evaluate ( const DomainVector &x, RangeVector &y ) const;
    \n+
    84
    \n+
    85#else
    \n+
    86
    \n+
    87 template<typename DV>
    \n+
    88 std::enable_if_t<
    \n+
    89 Std::is_detected<has_operator_parentheses,Impl,DV>::value
    \n+
    90 >
    \n+
    91 evaluate ( const DV &x, RangeVector &y ) const
    \n+
    92 {
    \n+
    93 y = asImp()(x);
    \n+
    94 }
    \n+
    95
    \n+
    96 template<typename DV>
    \n+
    97 std::enable_if_t<
    \n+
    98 not Std::is_detected<has_operator_parentheses,Impl,DV>::value
    \n+
    99 >
    \n+
    100 evaluate ( const DV &x, RangeVector &y ) const
    \n+
    101 {
    \n+
    102 assert(
    \n+
    103 static_cast<void(This::*)(const DomainVector&, RangeVector&) const>(&This::evaluate) !=
    \n+
    104 static_cast<void(Impl::*)(const DomainVector&, RangeVector&) const>(&Impl::evaluate) &&
    \n+
    105 "You need to implement either operator() or evaluate() in your coordinate function!");
    \n+
    106 asImp().evaluate( x, y );
    \n+
    107 }
    \n+
    108
    \n+
    109#endif // DOXYGEN
    \n+
    110
    \n+
    111 protected:
    \n+
    112
    \n+
    \n+
    113 const Implementation &asImp () const
    \n+
    114 {
    \n+
    115 return static_cast< const Implementation & >( *this );
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+\n+
    119 {
    \n+
    120 return static_cast< Implementation & >( *this );
    \n+
    121 }
    \n+
    \n+
    122 };
    \n+
    \n+
    123
    \n+
    124
    \n+
    125
    \n+
    126 // AnalyticalCoordFunction
    \n+
    127 // -----------------------
    \n+
    131 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n+
    \n+\n+
    133 : public AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >
    \n+
    134 {
    \n+\n+\n+
    137
    \n+
    138 public:
    \n+
    139 typedef typename Base :: DomainVector DomainVector;
    \n+
    140 typedef typename Base :: RangeVector RangeVector;
    \n+
    141
    \n+
    142 protected:
    \n+\n+
    144 AnalyticalCoordFunction ( const This & ) = default;
    \n+\n+\n+
    147 This &operator= ( const This & ) = default;
    \n+
    148 This &operator= ( This && ) = default;
    \n+
    149
    \n+
    150 private:
    \n+
    151
    \n+
    152 };
    \n+
    \n+
    153
    \n+
    154
    \n+
    155
    \n+
    156 // DiscreteCoordFunctionInterface
    \n+
    157 // ------------------------------
    \n+
    158
    \n+
    173 template< class ct, unsigned int dimR, class Impl >
    \n+
    \n+\n+
    175 {
    \n+\n+
    177
    \n+
    178 friend class DiscreteCoordFunction< ct, dimR, Impl >;
    \n+
    179
    \n+
    180 public:
    \n+\n+
    182 typedef Impl Implementation;
    \n+
    183
    \n+
    185 typedef ct ctype;
    \n+
    186
    \n+
    188 static const unsigned int dimRange = dimR;
    \n+
    189
    \n+
    191 typedef FieldVector< ctype, dimRange > RangeVector;
    \n+
    192
    \n+
    193 private:
    \n+\n+
    195 DiscreteCoordFunctionInterface ( const This & ) = default;
    \n+
    196 DiscreteCoordFunctionInterface ( This && ) = default;
    \n+\n+
    198 This &operator= ( const This & ) = default;
    \n+
    199 This &operator= ( This && ) = default;
    \n+
    200
    \n+
    201 public:
    \n+
    210 template< class HostEntity >
    \n+
    \n+
    211 void evaluate ( const HostEntity &hostEntity, unsigned int corner,
    \n+
    212 RangeVector &y ) const
    \n+
    213 {
    \n+
    214 asImp().evaluate( hostEntity, corner, y );
    \n+
    215 }
    \n+
    \n+
    216
    \n+
    \n+
    220 void adapt ()
    \n+
    221 {
    \n+
    222 asImp().adapt();
    \n+
    223 }
    \n+
    \n+
    224
    \n+
    225 protected:
    \n+
    \n+
    226 const Implementation &asImp () const
    \n+
    227 {
    \n+
    228 return static_cast< const Implementation & >( *this );
    \n+
    229 }
    \n+
    \n+
    230
    \n+
    \n+\n+
    232 {
    \n+
    233 return static_cast< Implementation & >( *this );
    \n+
    234 }
    \n+
    \n+
    235 };
    \n+
    \n+
    236
    \n+
    237
    \n+
    238
    \n+
    239 // DiscreteCoordFunction
    \n+
    240 // ---------------------
    \n+
    241 //
    \n+
    245 template< class ct, unsigned int dimR, class Impl >
    \n+
    \n+\n+
    247 : public DiscreteCoordFunctionInterface< ct, dimR, Impl >
    \n+
    248 {
    \n+\n+\n+
    251
    \n+
    252 public:
    \n+
    253 typedef typename Base :: RangeVector RangeVector;
    \n+
    254
    \n+
    255 protected:
    \n+\n+
    257 DiscreteCoordFunction ( const This & ) = default;
    \n+
    258 DiscreteCoordFunction ( This && ) = default;
    \n+\n+
    260 This &operator= ( const This & ) = default;
    \n+
    261 This &operator= ( This && ) = default;
    \n+
    262
    \n+
    \n+
    263 void adapt ()
    \n+
    264 {}
    \n+
    \n+
    265
    \n+
    266 private:
    \n+
    267 template< class HostEntity >
    \n+
    268 void evaluate ( const HostEntity &hostEntity, unsigned int corner,
    \n+
    269 RangeVector &y ) const;
    \n+
    270 };
    \n+
    \n+
    271
    \n+
    272
    \n+
    273
    \n+
    274 namespace GeoGrid
    \n+
    275 {
    \n+
    276
    \n+
    277 // isCoordFunctionInterface
    \n+
    278 // ------------------------
    \n+
    279
    \n+
    280 template< class CoordFunctionInterface >
    \n+
    281 struct isCoordFunctionInterface
    \n+
    282 {
    \n+
    283 static const bool value = false;
    \n+
    284 };
    \n+
    285
    \n+
    286 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n+
    287 struct isCoordFunctionInterface
    \n+
    288 < AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >
    \n+
    289 {
    \n+
    290 static const bool value = true;
    \n+
    291 };
    \n+
    292
    \n+
    293 template< class ct, unsigned int dimR, class Impl >
    \n+
    294 struct isCoordFunctionInterface
    \n+
    295 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n+
    296 {
    \n+
    297 static const bool value = true;
    \n+
    298 };
    \n+
    299
    \n+
    300
    \n+
    301
    \n+
    302 // isDiscreteCoordFunctionInterface
    \n+
    303 // --------------------------------
    \n+
    304
    \n+
    305 template< class CoordFunctionInterface >
    \n+
    306 struct isDiscreteCoordFunctionInterface
    \n+
    307 {
    \n+
    308 static const bool value = false;
    \n+
    309 };
    \n+
    310
    \n+
    311 template< class ct, unsigned int dimR, class Impl >
    \n+
    312 struct isDiscreteCoordFunctionInterface
    \n+
    313 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n+
    314 {
    \n+
    315 static const bool value = true;
    \n+
    316 };
    \n+
    317
    \n+
    318
    \n+
    319
    \n+
    320 // AdaptCoordFunction
    \n+
    321 // ------------------
    \n+
    322
    \n+
    323 template< class CoordFunctionInterface >
    \n+
    324 struct AdaptCoordFunction
    \n+
    325 {
    \n+
    326 static void adapt ( CoordFunctionInterface & )
    \n+
    327 {}
    \n+
    328 };
    \n+
    329
    \n+
    330 template< class ct, unsigned int dimR, class Impl >
    \n+
    331 struct AdaptCoordFunction< DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n+
    332 {
    \n+
    333 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl > CoordFunctionInterface;
    \n+
    334
    \n+
    335 static void adapt ( CoordFunctionInterface &coordFunction )
    \n+
    336 {
    \n+
    337 coordFunction.adapt();
    \n+
    338 }
    \n+
    339 };
    \n+
    340
    \n+
    341 } // namespace GeoGrid
    \n+
    342
    \n+
    343} // namespace Dune
    \n+
    344
    \n+
    345#endif // #ifndef DUNE_GEOGRID_COORDFUNCTION_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Derive an implementation of an analytical coordinate function from this class.
    Definition coordfunction.hh:134
    \n-
    Definition identity.hh:17
    \n-
    IdenticalCoordFunction(Args &...)
    Definition identity.hh:26
    \n-
    Base::RangeVector RangeVector
    Definition identity.hh:23
    \n-
    RangeVector operator()(const DomainVector &x) const
    Definition identity.hh:29
    \n-
    Base::DomainVector DomainVector
    Definition identity.hh:22
    \n+
    Base::DomainVector DomainVector
    Definition coordfunction.hh:139
    \n+\n+\n+
    AnalyticalCoordFunction(This &&)=default
    \n+
    Base::RangeVector RangeVector
    Definition coordfunction.hh:140
    \n+
    This & operator=(const This &)=default
    \n+
    AnalyticalCoordFunction(const This &)=default
    \n+
    Derive an implementation of a discrete coordinate function from this class.
    Definition coordfunction.hh:248
    \n+
    This & operator=(const This &)=default
    \n+
    void adapt()
    Definition coordfunction.hh:263
    \n+\n+
    DiscreteCoordFunction(This &&)=default
    \n+\n+
    DiscreteCoordFunction(const This &)=default
    \n+
    Base::RangeVector RangeVector
    Definition coordfunction.hh:253
    \n+
    Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid....
    Definition coordfunction.hh:44
    \n+
    Impl Implementation
    Definition coordfunction.hh:51
    \n+
    FieldVector< ctype, dimRange > RangeVector
    range vector for the evaluate method
    Definition coordfunction.hh:64
    \n+
    void evaluate(const DomainVector &x, RangeVector &y) const
    evaluate method for global mapping
    \n+
    static const unsigned int dimRange
    dimension of the range vector
    Definition coordfunction.hh:59
    \n+
    ct ctype
    field type of the coordinate vector
    Definition coordfunction.hh:54
    \n+
    static const unsigned int dimDomain
    dimension of the range vector (dimensionworld of host grid)
    Definition coordfunction.hh:57
    \n+
    const Implementation & asImp() const
    Definition coordfunction.hh:113
    \n+
    This Interface
    Definition coordfunction.hh:50
    \n+
    Implementation & asImp()
    Definition coordfunction.hh:118
    \n+
    FieldVector< ctype, dimDomain > DomainVector
    domain vector for the evaluate method
    Definition coordfunction.hh:62
    \n+
    Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid....
    Definition coordfunction.hh:175
    \n+
    static const unsigned int dimRange
    dimension of the range vector
    Definition coordfunction.hh:188
    \n+
    void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
    evaluate method
    Definition coordfunction.hh:211
    \n+
    Implementation & asImp()
    Definition coordfunction.hh:231
    \n+
    ct ctype
    field type of the coordinate vector
    Definition coordfunction.hh:185
    \n+
    void adapt()
    method called from grid.adapt() method to allow adaptation of the discrete coordinate function
    Definition coordfunction.hh:220
    \n+
    FieldVector< ctype, dimRange > RangeVector
    range vector for the evaluate method
    Definition coordfunction.hh:191
    \n+
    const Implementation & asImp() const
    Definition coordfunction.hh:226
    \n+
    Impl Implementation
    Definition coordfunction.hh:182
    \n+
    This Interface
    Definition coordfunction.hh:181
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,71 +1,429 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-identity.hh\n+coordfunction.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_IDENTITY_HH\n-6#define DUNE_GEOGRID_IDENTITY_HH\n+5#ifndef DUNE_GEOGRID_COORDFUNCTION_HH\n+6#define DUNE_GEOGRID_COORDFUNCTION_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+8#include \n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n+10#include \n+11#include \n 12\n-13 template< class ctype, unsigned int dim >\n-_\b1_\b4 class _\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-15 : public _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-16 < ctype, dim, dim, IdenticalCoordFunction< ctype, dim > >\n-17 {\n-18 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n-19 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bT_\bh_\bi_\bs_\b _\b> _\bB_\ba_\bs_\be;\n-20\n-21 public:\n-_\b2_\b2 typedef typename Base :: DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-_\b2_\b3 typedef typename Base :: RangeVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 // Internal Forward Declarations\n+17 // -----------------------------\n+18\n+19 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n+20 class AnalyticalCoordFunction;\n+21\n+22 template< class ct, unsigned int dimR, class Impl >\n+23 class DiscreteCoordFunction;\n 24\n-25 template< typename... Args >\n-_\b2_\b6 _\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn( Args&... )\n-27 {}\n-28\n-_\b2_\b9 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br& x) const\n-30 {\n-31 return x;\n-32 }\n-33\n-34 };\n-35\n-36}\n-37\n-38#endif\n-_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+25\n+26\n+27 // AnalyticalCoordFunctionInterface\n+28 // --------------------------------\n+29\n+42 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n+_\b4_\b3 class _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+44 {\n+45 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n+46\n+47 friend class _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< ct, dimD, dimR, Impl >;\n+48\n+49 public:\n+_\b5_\b0 typedef _\bT_\bh_\bi_\bs _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n+_\b5_\b1 typedef Impl _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn;\n+52\n+_\b5_\b4 typedef ct _\bc_\bt_\by_\bp_\be;\n+55\n+_\b5_\b7 static const unsigned int _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = dimD;\n+_\b5_\b9 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n+60\n+_\b6_\b2 typedef FieldVector< ctype, dimDomain > _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+_\b6_\b4 typedef FieldVector< ctype, dimRange > _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+65\n+66 private:\n+67 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n+68 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( const _\bT_\bh_\bi_\bs & ) = default;\n+69 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( _\bT_\bh_\bi_\bs && ) = default;\n+70 _\b~_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n+71 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & ) = default;\n+72 _\bT_\bh_\bi_\bs &operator= ( _\bT_\bh_\bi_\bs && ) = default;\n+73\n+74 // helper for picking the correct version of evaluate further down\n+75 template\n+76 using has_operator_parentheses = decltype(std::declval()(std::declval\n+()));\n+77\n+78 public:\n+79\n+80#ifdef DOXYGEN\n+81\n+_\b8_\b3 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const;\n+84\n+85#else\n+86\n+87 template\n+88 std::enable_if_t<\n+89 Std::is_detected::value\n+90 >\n+91 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DV &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n+92 {\n+93 y = _\ba_\bs_\bI_\bm_\bp()(x);\n+94 }\n+95\n+96 template\n+97 std::enable_if_t<\n+98 not Std::is_detected::value\n+99 >\n+100 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DV &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n+101 {\n+102 assert(\n+103 static_cast(&_\bT_\bh_\bi_\bs_\b:_\b:\n+_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be) !=\n+104 static_cast(&Impl::\n+evaluate) &&\n+105 \"You need to implement either operator() or evaluate() in your coordinate\n+function!\");\n+106 _\ba_\bs_\bI_\bm_\bp().evaluate( x, y );\n+107 }\n+108\n+109#endif // DOXYGEN\n+110\n+111 protected:\n+112\n+_\b1_\b1_\b3 const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp () const\n+114 {\n+115 return static_cast< const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n+116 }\n+117\n+_\b1_\b1_\b8 _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp ()\n+119 {\n+120 return static_cast< _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n+121 }\n+122 };\n+123\n+124\n+125\n+126 // AnalyticalCoordFunction\n+127 // -----------------------\n+131 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n+_\b1_\b3_\b2 class _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+133 : public _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< ct, dimD, dimR, Impl >\n+134 {\n+135 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n+136 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bB_\ba_\bs_\be;\n+137\n+138 public:\n+_\b1_\b3_\b9 typedef typename Base :: DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+_\b1_\b4_\b0 typedef typename Base :: RangeVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+141\n+142 protected:\n+_\b1_\b4_\b3 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n+_\b1_\b4_\b4 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const _\bT_\bh_\bi_\bs & ) = default;\n+_\b1_\b4_\b5 _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( _\bT_\bh_\bi_\bs && ) = default;\n+_\b1_\b4_\b6 _\b~_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n+_\b1_\b4_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs & ) = default;\n+_\b1_\b4_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bT_\bh_\bi_\bs && ) = default;\n+149\n+150 private:\n+151\n+152 };\n+153\n+154\n+155\n+156 // DiscreteCoordFunctionInterface\n+157 // ------------------------------\n+158\n+173 template< class ct, unsigned int dimR, class Impl >\n+_\b1_\b7_\b4 class _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+175 {\n+176 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n+177\n+178 friend class _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< ct, dimR, Impl >;\n+179\n+180 public:\n+_\b1_\b8_\b1 typedef _\bT_\bh_\bi_\bs _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n+_\b1_\b8_\b2 typedef Impl _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn;\n+183\n+_\b1_\b8_\b5 typedef ct _\bc_\bt_\by_\bp_\be;\n+186\n+_\b1_\b8_\b8 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n+189\n+_\b1_\b9_\b1 typedef FieldVector< ctype, dimRange > _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+192\n+193 private:\n+194 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n+195 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( const _\bT_\bh_\bi_\bs & ) = default;\n+196 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( _\bT_\bh_\bi_\bs && ) = default;\n+197 _\b~_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () = default;\n+198 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & ) = default;\n+199 _\bT_\bh_\bi_\bs &operator= ( _\bT_\bh_\bi_\bs && ) = default;\n+200\n+201 public:\n+210 template< class HostEntity >\n+_\b2_\b1_\b1 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const HostEntity &hostEntity, unsigned int corner,\n+212 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n+213 {\n+214 _\ba_\bs_\bI_\bm_\bp().evaluate( hostEntity, corner, y );\n+215 }\n+216\n+_\b2_\b2_\b0 void _\ba_\bd_\ba_\bp_\bt ()\n+221 {\n+222 _\ba_\bs_\bI_\bm_\bp().adapt();\n+223 }\n+224\n+225 protected:\n+_\b2_\b2_\b6 const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp () const\n+227 {\n+228 return static_cast< const _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n+229 }\n+230\n+_\b2_\b3_\b1 _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn &_\ba_\bs_\bI_\bm_\bp ()\n+232 {\n+233 return static_cast< _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn & >( *this );\n+234 }\n+235 };\n+236\n+237\n+238\n+239 // DiscreteCoordFunction\n+240 // ---------------------\n+241 //\n+245 template< class ct, unsigned int dimR, class Impl >\n+_\b2_\b4_\b6 class _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+247 : public _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< ct, dimR, Impl >\n+248 {\n+249 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bT_\bh_\bi_\bs;\n+250 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bB_\ba_\bs_\be;\n+251\n+252 public:\n+_\b2_\b5_\b3 typedef typename Base :: RangeVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+254\n+255 protected:\n+_\b2_\b5_\b6 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n+_\b2_\b5_\b7 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const _\bT_\bh_\bi_\bs & ) = default;\n+_\b2_\b5_\b8 _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( _\bT_\bh_\bi_\bs && ) = default;\n+_\b2_\b5_\b9 _\b~_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () = default;\n+_\b2_\b6_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs & ) = default;\n+_\b2_\b6_\b1 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bT_\bh_\bi_\bs && ) = default;\n+262\n+_\b2_\b6_\b3 void _\ba_\bd_\ba_\bp_\bt ()\n+264 {}\n+265\n+266 private:\n+267 template< class HostEntity >\n+268 void evaluate ( const HostEntity &hostEntity, unsigned int corner,\n+269 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const;\n+270 };\n+271\n+272\n+273\n+274 namespace GeoGrid\n+275 {\n+276\n+277 // isCoordFunctionInterface\n+278 // ------------------------\n+279\n+280 template< class CoordFunctionInterface >\n+281 struct isCoordFunctionInterface\n+282 {\n+283 static const bool value = false;\n+284 };\n+285\n+286 template< class ct, unsigned int dimD, unsigned int dimR, class Impl >\n+287 struct isCoordFunctionInterface\n+288 < AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >\n+289 {\n+290 static const bool value = true;\n+291 };\n+292\n+293 template< class ct, unsigned int dimR, class Impl >\n+294 struct isCoordFunctionInterface\n+295 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >\n+296 {\n+297 static const bool value = true;\n+298 };\n+299\n+300\n+301\n+302 // isDiscreteCoordFunctionInterface\n+303 // --------------------------------\n+304\n+305 template< class CoordFunctionInterface >\n+306 struct isDiscreteCoordFunctionInterface\n+307 {\n+308 static const bool value = false;\n+309 };\n+310\n+311 template< class ct, unsigned int dimR, class Impl >\n+312 struct isDiscreteCoordFunctionInterface\n+313 < DiscreteCoordFunctionInterface< ct, dimR, Impl > >\n+314 {\n+315 static const bool value = true;\n+316 };\n+317\n+318\n+319\n+320 // AdaptCoordFunction\n+321 // ------------------\n+322\n+323 template< class CoordFunctionInterface >\n+324 struct AdaptCoordFunction\n+325 {\n+326 static void adapt ( CoordFunctionInterface & )\n+327 {}\n+328 };\n+329\n+330 template< class ct, unsigned int dimR, class Impl >\n+331 struct AdaptCoordFunction< DiscreteCoordFunctionInterface< ct, dimR, Impl >\n+>\n+332 {\n+333 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl >\n+CoordFunctionInterface;\n+334\n+335 static void adapt ( CoordFunctionInterface &coordFunction )\n+336 {\n+337 coordFunction.adapt();\n+338 }\n+339 };\n+340\n+341 } // namespace GeoGrid\n+342\n+343} // namespace Dune\n+344\n+345#endif // #ifndef DUNE_GEOGRID_COORDFUNCTION_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n Derive an implementation of an analytical coordinate function from this class.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:17\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-IdenticalCoordFunction(Args &...)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-RangeVector operator()(const DomainVector &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identity.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 identity.hh:22\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+AnalyticalCoordFunction()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+~AnalyticalCoordFunction()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+AnalyticalCoordFunction(This &&)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Base::RangeVector RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const This &)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+AnalyticalCoordFunction(const This &)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Derive an implementation of a discrete coordinate function from this class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const This &)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n+void adapt()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:263\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+DiscreteCoordFunction()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+DiscreteCoordFunction(This &&)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+~DiscreteCoordFunction()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+DiscreteCoordFunction(const This &)=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Base::RangeVector RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface class for using an analytical function to define the geometry of a\n+Dune::GeometryGrid....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+Impl Implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimRange > RangeVector\n+range vector for the evaluate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, RangeVector &y) const\n+evaluate method for global mapping\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const unsigned int dimRange\n+dimension of the range vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+field type of the coordinate vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n+static const unsigned int dimDomain\n+dimension of the range vector (dimensionworld of host grid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n+const Implementation & asImp() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+This Interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n+Implementation & asImp()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimDomain > DomainVector\n+domain vector for the evaluate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface class for using a discrete function to define the geometry of a\n+Dune::GeometryGrid....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const unsigned int dimRange\n+dimension of the range vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector\n+&y) const\n+evaluate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n+Implementation & asImp()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+field type of the coordinate vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n+void adapt()\n+method called from grid.adapt() method to allow adaptation of the discrete\n+coordinate function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimRange > RangeVector\n+range vector for the evaluate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\ba_\bs_\bI_\bm_\bp\n+const Implementation & asImp() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+Impl Implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+This Interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:181\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00605.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00605.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: idset.hh File Reference\n+dune-grid: cornerstorage.hh File Reference\n \n \n \n \n \n \n \n@@ -72,24 +72,31 @@\n
  • dune
  • grid
  • geometrygrid
  • \n \n \n
    \n \n-
    idset.hh File Reference
    \n+
    cornerstorage.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/common/indexidset.hh>
    \n+
    #include <array>
    \n+#include <dune/grid/geometrygrid/coordfunctioncaller.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::GeoGrid::IdSet< Grid, HostIdSet >
    class  Dune::GeoGrid::CoordVector< mydim, Grid, false >
     
    class  Dune::GeoGrid::CoordVector< mydim, Grid, true >
     
    class  Dune::GeoGrid::IntersectionCoordVector< Grid >
     
    class  Dune::GeoGrid::CornerStorage< mydim, cdim, Grid >
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,19 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-idset.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh>\n+cornerstorage.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\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:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bH_\bo_\bs_\bt_\bI_\bd_\bS_\be_\bt_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\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 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n \u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00605_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00605_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: idset.hh Source File\n+dune-grid: cornerstorage.hh Source File\n \n \n \n \n \n \n \n@@ -74,132 +74,277 @@\n \n \n \n
    \n-
    idset.hh
    \n+
    cornerstorage.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_IDSET_HH
    \n-
    6#define DUNE_GEOGRID_IDSET_HH
    \n+
    5#ifndef DUNE_GEOGRID_CORNERSTORAGE_HH
    \n+
    6#define DUNE_GEOGRID_CORNERSTORAGE_HH
    \n
    7
    \n-\n+
    8#include <array>
    \n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    12
    \n-
    13 namespace GeoGrid
    \n-
    14 {
    \n-
    15
    \n-
    16 // IdSet
    \n-
    17 // -----
    \n-
    18
    \n-
    19 template< class Grid, class HostIdSet >
    \n-
    \n-
    20 class IdSet
    \n-
    21 : public Dune::IdSet< Grid, IdSet< Grid, HostIdSet >, typename HostIdSet::IdType >
    \n-
    22 {
    \n-\n-\n-
    25
    \n-
    26 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n-
    27
    \n-
    28 public:
    \n-
    29 typedef typename HostIdSet::IdType IdType;
    \n-
    30
    \n-
    31 using Base::subId;
    \n-
    32
    \n-
    \n-\n-
    34 : hostIdSet_( 0 )
    \n-
    35 {}
    \n-
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    15 namespace GeoGrid
    \n+
    16 {
    \n+
    17
    \n+
    18 // CoordVector
    \n+
    19 // -----------
    \n+
    20
    \n+
    21 template< int mydim, class Grid, bool fake >
    \n+\n+
    23
    \n+
    24
    \n+
    25 template< int mydim, class Grid >
    \n+
    \n+
    26 class CoordVector< mydim, Grid, false >
    \n+
    27 {
    \n+
    28 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n+
    29
    \n+
    30 typedef typename Traits::ctype ctype;
    \n+
    31
    \n+
    32 static const int dimension = Traits::dimension;
    \n+
    33 static const int mydimension = mydim;
    \n+
    34 static const int codimension = dimension - mydimension;
    \n+
    35 static const int dimensionworld = Traits::dimensionworld;
    \n
    36
    \n-
    \n-
    37 explicit IdSet ( const HostIdSet &hostIdSet )
    \n-
    38 : hostIdSet_( &hostIdSet )
    \n-
    39 {}
    \n-
    \n-
    40
    \n-
    \n-
    41 IdSet ( const This &other )
    \n-
    42 : hostIdSet_( other.hostIdSet_ )
    \n-
    43 {}
    \n-
    \n-
    44
    \n-
    \n-
    45 const This &operator= ( const This &other )
    \n-
    46 {
    \n-
    47 hostIdSet_ = other.hostIdSet_;
    \n-
    48 return *this;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    51 template< int codim >
    \n-
    \n-
    52 IdType id ( const typename Traits::template Codim< codim >::Entity &entity ) const
    \n-
    53 {
    \n-
    54 return entity.impl().id( hostIdSet() );
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    57 template< class Entity >
    \n-
    \n-
    58 IdType id ( const Entity &entity ) const
    \n-
    59 {
    \n-
    60 return id< Entity::codimension >( entity );
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    \n-
    63 IdType subId ( const typename Traits::template Codim< 0 >::Entity &entity, int i, unsigned int codim ) const
    \n-
    64 {
    \n-
    65 return hostIdSet().subId( Grid::template getHostEntity< 0 >( entity ), i, codim );
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    68 explicit operator bool () const { return bool( hostIdSet_ ); }
    \n-
    69
    \n-
    70 private:
    \n-
    71 const HostIdSet &hostIdSet () const
    \n-
    72 {
    \n-
    73 assert( *this );
    \n-
    74 return *hostIdSet_;
    \n-
    75 }
    \n-
    76
    \n-
    77 const HostIdSet *hostIdSet_;
    \n-
    78 };
    \n-
    \n-
    79
    \n-
    80 } // namespace GeoGrid
    \n-
    81
    \n-
    82} // namespace Dune
    \n+
    37 typedef FieldVector< ctype, dimensionworld > Coordinate;
    \n+
    38
    \n+
    39 typedef typename Traits::HostGrid HostGrid;
    \n+
    40 typedef typename Traits::CoordFunction CoordFunction;
    \n+
    41
    \n+
    42 typedef typename HostGrid::template Codim< codimension >::Entity HostEntity;
    \n+
    43
    \n+
    44 typedef GeoGrid :: CoordFunctionCaller< HostEntity, typename CoordFunction::Interface >
    \n+
    45 CoordFunctionCaller;
    \n+
    46
    \n+
    47 public:
    \n+
    \n+
    48 CoordVector ( const HostEntity &hostEntity,
    \n+
    49 const CoordFunction &coordFunction )
    \n+
    50 : coordFunctionCaller_( hostEntity, coordFunction )
    \n+
    51 {}
    \n+
    \n+
    52
    \n+
    53 template< std::size_t size >
    \n+
    \n+
    54 void calculate ( std::array< Coordinate, size > (&corners) ) const
    \n+
    55 {
    \n+
    56 const std::size_t numCorners = coordFunctionCaller_.size();
    \n+
    57 assert( size >= numCorners );
    \n+
    58 for( std::size_t i = 0; i < numCorners; ++i )
    \n+
    59 coordFunctionCaller_.evaluate( i, corners[ i ] );
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    62 private:
    \n+
    63 const CoordFunctionCaller coordFunctionCaller_;
    \n+
    64 };
    \n+
    \n+
    65
    \n+
    66
    \n+
    67 template< int mydim, class Grid >
    \n+
    \n+
    68 class CoordVector< mydim, Grid, true >
    \n+
    69 {
    \n+
    70 typedef typename std::remove_const< Grid > :: type :: Traits Traits;
    \n+
    71
    \n+
    72 typedef typename Traits::ctype ctype;
    \n+
    73
    \n+
    74 static const int dimension = Traits::dimension;
    \n+
    75 static const int mydimension = mydim;
    \n+
    76 static const int codimension = dimension - mydimension;
    \n+
    77 static const int dimensionworld = Traits::dimensionworld;
    \n+
    78
    \n+
    79 typedef FieldVector< ctype, dimensionworld > Coordinate;
    \n+
    80
    \n+
    81 typedef typename Traits::HostGrid HostGrid;
    \n+
    82 typedef typename Traits::CoordFunction CoordFunction;
    \n
    83
    \n-
    84#endif // #ifndef DUNE_GEOGRID_IDSET_HH
    \n-
    Provides base classes for index and id sets.
    \n+
    84 typedef typename HostGrid::template Codim< 0 >::Entity HostElement;
    \n+
    85
    \n+\n+\n+
    88
    \n+
    89 public:
    \n+
    \n+
    90 CoordVector ( const HostElement &hostElement,
    \n+
    91 const unsigned int subEntity,
    \n+
    92 const CoordFunction &coordFunction )
    \n+
    93 : coordFunctionCaller_( hostElement, coordFunction ),
    \n+
    94 subEntity_( subEntity )
    \n+
    95 {}
    \n+
    \n+
    96
    \n+
    97 template< std::size_t size >
    \n+
    \n+
    98 void calculate ( std::array< Coordinate, size > (&corners) ) const
    \n+
    99 {
    \n+
    100 const GeometryType type = coordFunctionCaller_.type();
    \n+
    101 auto refElement = referenceElement< ctype, dimension >( type );
    \n+
    102 const std::size_t numCorners = refElement.size( subEntity_, codimension, dimension );
    \n+
    103 assert( size >= numCorners );
    \n+
    104 for( std::size_t i = 0; i < numCorners; ++i )
    \n+
    105 {
    \n+
    106 const std::size_t j = refElement.subEntity( subEntity_, codimension, i, dimension );
    \n+
    107 coordFunctionCaller_.evaluate( j, corners[ i ] );
    \n+
    108 }
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    111 private:
    \n+
    112 const CoordFunctionCaller coordFunctionCaller_;
    \n+
    113 const unsigned int subEntity_;
    \n+
    114 };
    \n+
    \n+
    115
    \n+
    116
    \n+
    117
    \n+
    118 // IntersectionCoordVector
    \n+
    119 // -----------------------
    \n+
    120
    \n+
    121 template< class Grid >
    \n+
    \n+\n+
    123 {
    \n+
    124 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n+
    125
    \n+
    126 typedef typename Traits::ctype ctype;
    \n+
    127
    \n+
    128 static const int dimension = Traits::dimension;
    \n+
    129 static const int codimension = 1;
    \n+
    130 static const int mydimension = dimension-codimension;
    \n+
    131 static const int dimensionworld = Traits::dimensionworld;
    \n+
    132
    \n+
    133 typedef FieldVector< ctype, dimensionworld > Coordinate;
    \n+
    134
    \n+
    135 typedef typename Traits::HostGrid HostGrid;
    \n+
    136
    \n+
    137 typedef typename Traits::template Codim< 0 >::GeometryImpl ElementGeometryImpl;
    \n+
    138 typedef typename Traits::template Codim< codimension >::LocalGeometry HostLocalGeometry;
    \n+
    139
    \n+
    140 public:
    \n+
    \n+
    141 IntersectionCoordVector ( const ElementGeometryImpl &elementGeometry,
    \n+
    142 const HostLocalGeometry &hostLocalGeometry )
    \n+
    143 : elementGeometry_( elementGeometry ),
    \n+
    144 hostLocalGeometry_( hostLocalGeometry )
    \n+
    145 {}
    \n+
    \n+
    146
    \n+
    147 template< std::size_t size >
    \n+
    \n+
    148 void calculate ( std::array< Coordinate, size > (&corners) ) const
    \n+
    149 {
    \n+
    150 const std::size_t numCorners = hostLocalGeometry_.corners();
    \n+
    151 assert( size >= numCorners );
    \n+
    152 for( std::size_t i = 0; i < numCorners; ++i )
    \n+
    153 corners[ i ] = elementGeometry_.global( hostLocalGeometry_.corner( i ) );
    \n+
    154 }
    \n+
    \n+
    155
    \n+
    156 template< unsigned int numCorners >
    \n+
    \n+
    157 void calculate ( Coordinate (&corners)[ numCorners ] ) const
    \n+
    158 {
    \n+
    159 assert( numCorners == hostLocalGeometry_.corners() );
    \n+
    160 }
    \n+
    \n+
    161
    \n+
    162 private:
    \n+
    163 const ElementGeometryImpl &elementGeometry_;
    \n+
    164 HostLocalGeometry hostLocalGeometry_;
    \n+
    165 };
    \n+
    \n+
    166
    \n+
    167
    \n+
    168
    \n+
    169 // CornerStorage
    \n+
    170 // -------------
    \n+
    171
    \n+
    172 template< int mydim, int cdim, class Grid >
    \n+
    \n+\n+
    174 {
    \n+
    175 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n+
    176
    \n+
    177 typedef typename Traits::ctype ctype;
    \n+
    178 typedef FieldVector< ctype, cdim > Coordinate;
    \n+
    179
    \n+
    180 typedef std::array< Coordinate, (1 << mydim) > Coords;
    \n+
    181
    \n+
    182 public:
    \n+
    183 typedef typename Coords::const_iterator const_iterator;
    \n+
    184
    \n+
    185 template< bool fake >
    \n+
    \n+\n+
    187 {
    \n+
    188 coords.calculate( coords_ );
    \n+
    189 }
    \n+
    \n+
    190
    \n+
    \n+\n+
    192 {
    \n+
    193 coords.calculate( coords_ );
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    \n+
    196 const Coordinate &operator[] ( unsigned int i ) const
    \n+
    197 {
    \n+
    198 return coords_[ i ];
    \n+
    199 }
    \n+
    \n+
    200
    \n+
    201 const_iterator begin () const { return coords_.begin(); }
    \n+
    202 const_iterator end () const { return coords_.end(); }
    \n+
    203
    \n+
    204 private:
    \n+
    205 Coords coords_;
    \n+
    206 };
    \n+
    \n+
    207
    \n+
    208 } // namespace GeoGrid
    \n+
    209
    \n+
    210} // namespace Dune
    \n+
    211
    \n+
    212#endif // #ifndef DUNE_GEOGRID_CORNERSTORAGE_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Id Set Interface.
    Definition indexidset.hh:452
    \n-
    IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Get id of subentity i of co-dimension codim of a co-dimension 0 entity.
    Definition indexidset.hh:486
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-
    DUNE-conform implementation of the entity.
    Definition geometrygrid/entity.hh:694
    \n-
    Definition idset.hh:22
    \n-
    IdSet()
    Definition idset.hh:33
    \n-
    IdSet(const HostIdSet &hostIdSet)
    Definition idset.hh:37
    \n-
    IdType id(const Entity &entity) const
    Definition idset.hh:58
    \n-
    IdType subId(const typename Traits::template Codim< 0 >::Entity &entity, int i, unsigned int codim) const
    Definition idset.hh:63
    \n-
    IdType id(const typename Traits::template Codim< codim >::Entity &entity) const
    Definition idset.hh:52
    \n-
    IdSet(const This &other)
    Definition idset.hh:41
    \n-
    const This & operator=(const This &other)
    Definition idset.hh:45
    \n-
    HostIdSet::IdType IdType
    Definition idset.hh:29
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    Definition coordfunctioncaller.hh:21
    \n+
    Definition cornerstorage.hh:22
    \n+
    CoordVector(const HostEntity &hostEntity, const CoordFunction &coordFunction)
    Definition cornerstorage.hh:48
    \n+
    void calculate(std::array< Coordinate, size >(&corners)) const
    Definition cornerstorage.hh:54
    \n+
    CoordVector(const HostElement &hostElement, const unsigned int subEntity, const CoordFunction &coordFunction)
    Definition cornerstorage.hh:90
    \n+
    void calculate(std::array< Coordinate, size >(&corners)) const
    Definition cornerstorage.hh:98
    \n+
    Definition cornerstorage.hh:123
    \n+
    IntersectionCoordVector(const ElementGeometryImpl &elementGeometry, const HostLocalGeometry &hostLocalGeometry)
    Definition cornerstorage.hh:141
    \n+
    void calculate(Coordinate(&corners)[numCorners]) const
    Definition cornerstorage.hh:157
    \n+
    void calculate(std::array< Coordinate, size >(&corners)) const
    Definition cornerstorage.hh:148
    \n+
    Definition cornerstorage.hh:174
    \n+
    Coords::const_iterator const_iterator
    Definition cornerstorage.hh:183
    \n+
    const_iterator begin() const
    Definition cornerstorage.hh:201
    \n+
    CornerStorage(const IntersectionCoordVector< Grid > &coords)
    Definition cornerstorage.hh:191
    \n+
    const_iterator end() const
    Definition cornerstorage.hh:202
    \n+
    const Coordinate & operator[](unsigned int i) const
    Definition cornerstorage.hh:196
    \n+
    CornerStorage(const CoordVector< mydim, Grid, fake > &coords)
    Definition cornerstorage.hh:186
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,146 +1,286 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-idset.hh\n+cornerstorage.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_IDSET_HH\n-6#define DUNE_GEOGRID_IDSET_HH\n+5#ifndef DUNE_GEOGRID_CORNERSTORAGE_HH\n+6#define DUNE_GEOGRID_CORNERSTORAGE_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh>\n+8#include \n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-12\n-13 namespace GeoGrid\n-14 {\n-15\n-16 // IdSet\n-17 // -----\n-18\n-19 template< class Grid, class HostIdSet >\n-_\b2_\b0 class _\bI_\bd_\bS_\be_\bt\n-21 : public _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt< Grid, IdSet< Grid, HostIdSet >, typename HostIdSet::\n-IdType >\n-22 {\n-23 typedef _\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bH_\bo_\bs_\bt_\bI_\bd_\bS_\be_\bt_\b _\b> _\bT_\bh_\bi_\bs;\n-24 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bT_\bh_\bi_\bs_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bH_\bo_\bs_\bt_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be_\b _\b> _\bB_\ba_\bs_\be;\n-25\n-26 typedef typename std::remove_const< Grid >::type::Traits Traits;\n-27\n-28 public:\n-_\b2_\b9 typedef typename HostIdSet::IdType _\bI_\bd_\bT_\by_\bp_\be;\n-30\n-31 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bu_\bb_\bI_\bd;\n-32\n-_\b3_\b3 _\bI_\bd_\bS_\be_\bt ()\n-34 : hostIdSet_( 0 )\n-35 {}\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+15 namespace GeoGrid\n+16 {\n+17\n+18 // CoordVector\n+19 // -----------\n+20\n+21 template< int mydim, class Grid, bool fake >\n+_\b2_\b2 class _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br;\n+23\n+24\n+25 template< int mydim, class Grid >\n+_\b2_\b6 class _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br< mydim, _\bG_\br_\bi_\bd, false >\n+27 {\n+28 typedef typename std::remove_const< Grid >::type::Traits Traits;\n+29\n+30 typedef typename Traits::ctype ctype;\n+31\n+32 static const int dimension = Traits::dimension;\n+33 static const int mydimension = mydim;\n+34 static const int codimension = dimension - mydimension;\n+35 static const int dimensionworld = Traits::dimensionworld;\n 36\n-_\b3_\b7 explicit _\bI_\bd_\bS_\be_\bt ( const HostIdSet &hostIdSet )\n-38 : hostIdSet_( &hostIdSet )\n-39 {}\n-40\n-_\b4_\b1 _\bI_\bd_\bS_\be_\bt ( const _\bT_\bh_\bi_\bs &other )\n-42 : hostIdSet_( other.hostIdSet_ )\n-43 {}\n-44\n-_\b4_\b5 const _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n-46 {\n-47 hostIdSet_ = other.hostIdSet_;\n-48 return *this;\n-49 }\n-50\n-51 template< int codim >\n-_\b5_\b2 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd ( const typename Traits::template Codim< codim >::Entity &entity )\n-const\n-53 {\n-54 return entity.impl().id( hostIdSet() );\n-55 }\n-56\n-57 template< class Entity >\n-_\b5_\b8 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-59 {\n-60 return id< Entity::codimension >( entity );\n-61 }\n-62\n-_\b6_\b3 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd ( const typename Traits::template Codim< 0 >::Entity &entity,\n-int i, unsigned int codim ) const\n-64 {\n-65 return hostIdSet().subId( _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be getHostEntity< 0 >( entity ), i,\n-codim );\n-66 }\n-67\n-_\b6_\b8 explicit operator bool () const { return bool( hostIdSet_ ); }\n-69\n-70 private:\n-71 const HostIdSet &hostIdSet () const\n-72 {\n-73 assert( *this );\n-74 return *hostIdSet_;\n-75 }\n-76\n-77 const HostIdSet *hostIdSet_;\n-78 };\n-79\n-80 } // namespace GeoGrid\n-81\n-82} // namespace Dune\n+37 typedef FieldVector< ctype, dimensionworld > Coordinate;\n+38\n+39 typedef typename Traits::HostGrid HostGrid;\n+40 typedef typename Traits::CoordFunction CoordFunction;\n+41\n+42 typedef typename HostGrid::template Codim< codimension >::Entity HostEntity;\n+43\n+44 typedef GeoGrid :: CoordFunctionCaller< HostEntity, typename CoordFunction::\n+Interface >\n+45 CoordFunctionCaller;\n+46\n+47 public:\n+_\b4_\b8 _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br ( const HostEntity &hostEntity,\n+49 const CoordFunction &coordFunction )\n+50 : coordFunctionCaller_( hostEntity, coordFunction )\n+51 {}\n+52\n+53 template< std::size_t size >\n+_\b5_\b4 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( std::array< Coordinate, size > (&corners) ) const\n+55 {\n+56 const std::size_t numCorners = coordFunctionCaller_.size();\n+57 assert( size >= numCorners );\n+58 for( std::size_t i = 0; i < numCorners; ++i )\n+59 coordFunctionCaller_.evaluate( i, corners[ i ] );\n+60 }\n+61\n+62 private:\n+63 const _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br coordFunctionCaller_;\n+64 };\n+65\n+66\n+67 template< int mydim, class Grid >\n+_\b6_\b8 class _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br< mydim, _\bG_\br_\bi_\bd, true >\n+69 {\n+70 typedef typename std::remove_const< Grid > :: type :: Traits Traits;\n+71\n+72 typedef typename Traits::ctype ctype;\n+73\n+74 static const int dimension = Traits::dimension;\n+75 static const int mydimension = mydim;\n+76 static const int codimension = dimension - mydimension;\n+77 static const int dimensionworld = Traits::dimensionworld;\n+78\n+79 typedef FieldVector< ctype, dimensionworld > Coordinate;\n+80\n+81 typedef typename Traits::HostGrid HostGrid;\n+82 typedef typename Traits::CoordFunction CoordFunction;\n 83\n-84#endif // #ifndef DUNE_GEOGRID_IDSET_HH\n-_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n-Provides base classes for index and id sets.\n+84 typedef typename HostGrid::template Codim< 0 >::Entity HostElement;\n+85\n+86 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+87 _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br;\n+88\n+89 public:\n+_\b9_\b0 _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br ( const HostElement &hostElement,\n+91 const unsigned int subEntity,\n+92 const CoordFunction &coordFunction )\n+93 : coordFunctionCaller_( hostElement, coordFunction ),\n+94 subEntity_( subEntity )\n+95 {}\n+96\n+97 template< std::size_t size >\n+_\b9_\b8 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( std::array< Coordinate, size > (&corners) ) const\n+99 {\n+100 const GeometryType type = coordFunctionCaller_.type();\n+101 auto refElement = referenceElement< ctype, dimension >( type );\n+102 const std::size_t numCorners = refElement.size( subEntity_, codimension,\n+dimension );\n+103 assert( size >= numCorners );\n+104 for( std::size_t i = 0; i < numCorners; ++i )\n+105 {\n+106 const std::size_t j = refElement.subEntity( subEntity_, codimension, i,\n+dimension );\n+107 coordFunctionCaller_.evaluate( j, corners[ i ] );\n+108 }\n+109 }\n+110\n+111 private:\n+112 const _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br coordFunctionCaller_;\n+113 const unsigned int subEntity_;\n+114 };\n+115\n+116\n+117\n+118 // IntersectionCoordVector\n+119 // -----------------------\n+120\n+121 template< class Grid >\n+_\b1_\b2_\b2 class _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+123 {\n+124 typedef typename std::remove_const< Grid >::type::Traits Traits;\n+125\n+126 typedef typename Traits::ctype ctype;\n+127\n+128 static const int dimension = Traits::dimension;\n+129 static const int codimension = 1;\n+130 static const int mydimension = dimension-codimension;\n+131 static const int dimensionworld = Traits::dimensionworld;\n+132\n+133 typedef FieldVector< ctype, dimensionworld > Coordinate;\n+134\n+135 typedef typename Traits::HostGrid HostGrid;\n+136\n+137 typedef typename Traits::template Codim< 0 >::GeometryImpl\n+ElementGeometryImpl;\n+138 typedef typename Traits::template Codim< codimension >::LocalGeometry\n+HostLocalGeometry;\n+139\n+140 public:\n+_\b1_\b4_\b1 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br ( const ElementGeometryImpl &elementGeometry,\n+142 const HostLocalGeometry &hostLocalGeometry )\n+143 : elementGeometry_( elementGeometry ),\n+144 hostLocalGeometry_( hostLocalGeometry )\n+145 {}\n+146\n+147 template< std::size_t size >\n+_\b1_\b4_\b8 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( std::array< Coordinate, size > (&corners) ) const\n+149 {\n+150 const std::size_t numCorners = hostLocalGeometry_.corners();\n+151 assert( size >= numCorners );\n+152 for( std::size_t i = 0; i < numCorners; ++i )\n+153 corners[ i ] = elementGeometry_.global( hostLocalGeometry_.corner( i ) );\n+154 }\n+155\n+156 template< unsigned int numCorners >\n+_\b1_\b5_\b7 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( Coordinate (&corners)[ numCorners ] ) const\n+158 {\n+159 assert( numCorners == hostLocalGeometry_.corners() );\n+160 }\n+161\n+162 private:\n+163 const ElementGeometryImpl &elementGeometry_;\n+164 HostLocalGeometry hostLocalGeometry_;\n+165 };\n+166\n+167\n+168\n+169 // CornerStorage\n+170 // -------------\n+171\n+172 template< int mydim, int cdim, class Grid >\n+_\b1_\b7_\b3 class _\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n+174 {\n+175 typedef typename std::remove_const< Grid >::type::Traits Traits;\n+176\n+177 typedef typename Traits::ctype ctype;\n+178 typedef FieldVector< ctype, cdim > Coordinate;\n+179\n+180 typedef std::array< Coordinate, (1 << mydim) > Coords;\n+181\n+182 public:\n+_\b1_\b8_\b3 typedef typename Coords::const_iterator _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+184\n+185 template< bool fake >\n+_\b1_\b8_\b6 explicit _\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be ( const _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bk_\be_\b _\b> &coords )\n+187 {\n+188 coords.calculate( coords_ );\n+189 }\n+190\n+_\b1_\b9_\b1 explicit _\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> &coords )\n+192 {\n+193 coords._\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be( coords_ );\n+194 }\n+195\n+_\b1_\b9_\b6 const Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( unsigned int i ) const\n+197 {\n+198 return coords_[ i ];\n+199 }\n+200\n+_\b2_\b0_\b1 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const { return coords_.begin(); }\n+_\b2_\b0_\b2 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const { return coords_.end(); }\n+203\n+204 private:\n+205 Coords coords_;\n+206 };\n+207\n+208 } // namespace GeoGrid\n+209\n+210} // namespace Dune\n+211\n+212#endif // #ifndef DUNE_GEOGRID_CORNERSTORAGE_HH\n+_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-Id Set Interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim)\n-const\n-Get id of subentity i of co-dimension codim of a co-dimension 0 entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:486\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-DUNE-conform implementation of the entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/entity.hh:694\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-IdSet()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-IdSet(const HostIdSet &hostIdSet)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename Traits::template Codim< 0 >::Entity &entity, int i,\n-unsigned int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const typename Traits::template Codim< codim >::Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-IdSet(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-const This & operator=(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n-HostIdSet::IdType IdType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunctioncaller.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+CoordVector(const HostEntity &hostEntity, const CoordFunction &coordFunction)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n+void calculate(std::array< Coordinate, size >(&corners)) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+CoordVector(const HostElement &hostElement, const unsigned int subEntity, const\n+CoordFunction &coordFunction)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n+void calculate(std::array< Coordinate, size >(&corners)) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+IntersectionCoordVector(const ElementGeometryImpl &elementGeometry, const\n+HostLocalGeometry &hostLocalGeometry)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n+void calculate(Coordinate(&corners)[numCorners]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n+void calculate(std::array< Coordinate, size >(&corners)) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+Coords::const_iterator const_iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:183\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+const_iterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:201\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n+CornerStorage(const IntersectionCoordVector< Grid > &coords)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\be_\bn_\bd\n+const_iterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const Coordinate & operator[](unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n+CornerStorage(const CoordVector< mydim, Grid, fake > &coords)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.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-grid-doc/doxygen/a00614.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00614.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: elementinfo.hh File Reference\n+dune-grid: leveliterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,50 +72,35 @@\n
  • dune
  • grid
  • albertagrid
  • \n \n \n
    \n \n-
    elementinfo.hh File Reference
    \n+
    leveliterator.hh File Reference
    \n
    \n
    \n-\n-

    provides a wrapper for ALBERTA's el_info structure \n-More...

    \n-
    #include <cassert>
    \n-#include <vector>
    \n-#include <utility>
    \n-#include <dune/grid/albertagrid/geometrycache.hh>
    \n-#include <dune/grid/albertagrid/macroelement.hh>
    \n+\n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n-\n-\n+\n \n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::Alberta::ElementInfo< dim >
     
    struct  Dune::Alberta::ElementInfo< dim >::Instance
    class  Dune::AlbertaGridLevelIterator< codim, pitype, GridImp >
     
    class  Dune::Alberta::ElementInfo< dim >::Stack
     
    struct  Dune::Alberta::ElementInfo< dim >::Seed
    class  Dune::AlbertaGridLevelIterator< codim, Ghost_Partition, GridImp >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n-

    Detailed Description

    \n-

    provides a wrapper for ALBERTA's el_info structure

    \n-
    Author
    Martin Nolte
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,36 +2,22 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-elementinfo.hh File Reference\n-provides a wrapper for ALBERTA's el_info structure _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+leveliterator.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\be_\be_\bd\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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-provides a wrapper for ALBERTA's el_info structure\n- Author\n- Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00614_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00614_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: elementinfo.hh Source File\n+dune-grid: leveliterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,1228 +74,145 @@\n \n \n \n
    \n-
    elementinfo.hh
    \n+
    leveliterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_ELEMENTINFO_HH
    \n-
    6#define DUNE_ALBERTA_ELEMENTINFO_HH
    \n+
    5#ifndef DUNE_ALBERTA_LEVELITERATOR_HH
    \n+
    6#define DUNE_ALBERTA_LEVELITERATOR_HH
    \n
    7
    \n-
    13#include <cassert>
    \n-
    14#include <vector>
    \n-
    15#include <utility>
    \n+\n+
    9
    \n+\n+
    11
    \n+
    12#if HAVE_ALBERTA
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n
    16
    \n-\n-\n+
    17 // AlbertaGridLevelIterator
    \n+
    18 // ------------------------
    \n
    19
    \n-
    20#if HAVE_ALBERTA
    \n-
    21
    \n-
    22namespace Dune
    \n-
    23{
    \n-
    24
    \n-
    25 namespace Alberta
    \n-
    26 {
    \n-
    27
    \n-
    28 // External Forward Declarations
    \n-
    29 // -----------------------------
    \n+
    20 template< int codim, PartitionIteratorType pitype, class GridImp >
    \n+
    \n+\n+
    22 : public AlbertaGridTreeIterator< codim, GridImp, false >
    \n+
    23 {
    \n+\n+\n+
    26
    \n+
    27 public:
    \n+
    28 typedef typename Base::Entity Entity;
    \n+\n
    30
    \n-
    31 template< int dim >
    \n-
    32 class MeshPointer;
    \n-
    33
    \n-
    34 struct BasicNodeProjection;
    \n-
    35
    \n-
    36
    \n-
    37
    \n-
    38 // ElementInfo
    \n-
    39 // -----------
    \n-
    40
    \n-
    41 template< int dim >
    \n-
    \n-\n-
    43 {
    \n-
    44 struct Instance;
    \n-
    45 class Stack;
    \n-
    46
    \n-
    47 template< int >
    \n-
    48 struct Library;
    \n-
    49
    \n-
    50 typedef Instance *InstancePtr;
    \n-
    51
    \n-
    52 public:
    \n-
    53 static const int dimension = dim;
    \n-
    54
    \n-\n-\n-
    57
    \n-\n-\n-\n-
    61
    \n-
    62 static const int maxNeighbors = N_NEIGH_MAX;
    \n-
    63
    \n-
    64 static const int maxLevelNeighbors = Library< dimWorld >::maxLevelNeighbors;
    \n-
    65
    \n-
    66#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n-\n-
    68#endif
    \n-
    69
    \n-
    70 struct Seed;
    \n-
    71
    \n-
    72 private:
    \n-
    73 explicit ElementInfo ( const InstancePtr &instance );
    \n-
    74
    \n-
    75 public:
    \n-
    \n-\n-
    \n-\n-
    78 typename FillFlags::Flags fillFlags = FillFlags::standard );
    \n-
    \n-
    79 ElementInfo ( const MeshPointer &mesh, const Seed &seed,
    \n-
    80 typename FillFlags::Flags fillFlags = FillFlags::standard );
    \n-
    \n-
    81 ElementInfo ( const ElementInfo &other );
    \n-
    \n-\n-
    83
    \n-
    \n-\n-
    85
    \n-
    \n-\n-
    \n-\n-
    88
    \n-
    89 explicit operator bool () const { return (instance_ != null()); }
    \n-
    90
    \n-
    \n-
    91 bool operator== ( const ElementInfo &other ) const;
    \n-
    \n-
    92 bool operator!= ( const ElementInfo &other ) const;
    \n-
    93
    \n-
    \n-
    94 const MacroElement &macroElement () const;
    \n-
    \n-\n-
    \n-
    96 int indexInFather () const;
    \n-
    \n-
    97 ElementInfo child ( int i ) const;
    \n-
    \n-
    98 bool isLeaf () const;
    \n-
    99
    \n-
    \n-
    100 Seed seed () const;
    \n-
    101
    \n-
    \n-\n-
    103
    \n-
    \n-
    104 bool mightVanish () const;
    \n-
    105
    \n-
    \n-
    106 int level () const;
    \n-
    107 // see ALBERTA documentation for definition of element type
    \n-
    108 // values are 0, 1, 2
    \n-
    \n-
    109 int type () const;
    \n-
    110
    \n-
    \n-
    111 int getMark () const;
    \n-
    \n-
    112 void setMark ( int refCount ) const;
    \n-
    113
    \n-
    \n-
    114 bool hasLeafNeighbor ( const int face ) const;
    \n-
    \n-
    115 ElementInfo leafNeighbor ( const int face ) const;
    \n-
    116
    \n-
    117 /* obtain all level neighbors of a face
    \n-
    118 *
    \n-
    119 * param[in] face face for which the neighbors are desired
    \n-
    120 * param[out] neighbor array storing the neighbors
    \n-
    121 * param[out] faceInNeighbor array storing the faces in neighbor
    \n-
    122 * (-1, if this neighbor does not exist)
    \n-
    123 *
    \n-
    124 * returns (potential) number of neighbors (i.e., the number of valid
    \n-
    125 * entries in the output arrays
    \n-
    126 */
    \n-
    \n-
    127 int levelNeighbors ( const int face, ElementInfo (&neighbor)[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] ) const;
    \n-
    128
    \n-
    129 template< int codim >
    \n-
    \n-
    130 int twist ( int subEntity ) const;
    \n-
    \n-
    131 int twistInNeighbor ( int face ) const;
    \n-
    \n-
    132 bool isBoundary ( int face ) const;
    \n-
    \n-
    133 int boundaryId ( int face ) const;
    \n-
    \n-\n-
    \n-\n-
    136
    \n-
    \n-
    137 bool hasCoordinates () const;
    \n-
    \n-
    138 const GlobalVector &coordinate ( int vertex ) const;
    \n-
    139#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n-
    \n-\n-
    141 {
    \n-
    142 return GeometryCache( instance_->geometryCache, instance_->elInfo );
    \n-
    143 }
    \n-
    \n-
    144#endif
    \n-
    145
    \n-
    146 template< class Functor >
    \n-
    \n-
    147 void hierarchicTraverse ( Functor &functor ) const;
    \n-
    148
    \n-
    149 template< class Functor >
    \n-
    \n-
    150 void leafTraverse ( Functor &functor ) const;
    \n-
    151
    \n-
    \n-
    152 const Element *element () const;
    \n-
    \n-
    153 const Element *neighbor ( int face ) const;
    \n-
    \n-
    154 Element *el () const;
    \n-
    \n-
    155 ALBERTA EL_INFO &elInfo () const;
    \n-
    156
    \n-
    157 static ElementInfo
    \n-
    \n-\n-
    159 const Element *element, int level, int type = 0 );
    \n-
    \n-
    160 static ElementInfo createFake ( const ALBERTA EL_INFO &elInfo );
    \n-
    161
    \n-
    162 private:
    \n-
    163 static bool isLeaf ( Element *element );
    \n-
    164 static bool mightVanish ( Element *element, int depth );
    \n-
    165
    \n-
    166 static void fill ( Mesh *mesh, const ALBERTA MACRO_EL *mel, ALBERTA EL_INFO &elInfo );
    \n-
    167 static void fill ( int ichild, const ALBERTA EL_INFO &parentInfo, ALBERTA EL_INFO &elInfo );
    \n-
    168
    \n-
    169 void addReference () const;
    \n-
    170 void removeReference () const;
    \n-
    171
    \n-
    172 static InstancePtr null ();
    \n-
    173 static Stack &stack ();
    \n-
    174
    \n-
    175 InstancePtr instance_;
    \n-
    176 };
    \n-
    177
    \n-
    178
    \n-
    179
    \n-
    180 // ElementInfo::Instance
    \n-
    181 // ---------------------
    \n-
    182
    \n-
    183 template< int dim >
    \n-
    \n-
    184 struct ElementInfo< dim >::Instance
    \n-
    185 {
    \n-\n-
    187 unsigned int refCount;
    \n-
    188
    \n-
    \n-\n-
    190 {
    \n-
    191 return parent_;
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    194 private:
    \n-
    195 InstancePtr parent_;
    \n-
    196
    \n-
    197#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n-
    198 public:
    \n-\n-
    200#endif
    \n-
    201 };
    \n-
    \n-
    202
    \n-
    203
    \n-
    204
    \n-
    205 // ElementInfo::Stack
    \n-
    206 // ------------------
    \n-
    207
    \n-
    208 template< int dim >
    \n-
    \n-
    209 class ElementInfo< dim >::Stack
    \n-
    210 {
    \n-
    211 InstancePtr top_;
    \n-
    212 Instance null_;
    \n-
    213
    \n-
    214 public:
    \n-
    \n-
    215 Stack ();
    \n-
    \n-
    216 ~Stack ();
    \n-
    217
    \n-
    \n-
    218 InstancePtr allocate ();
    \n-
    \n-
    219 void release ( InstancePtr &p );
    \n-
    \n-
    220 InstancePtr null ();
    \n-
    221 };
    \n-
    222
    \n-
    223
    \n-
    224
    \n-
    225 // ElementInfo::Library
    \n-
    226 // --------------------
    \n-
    227
    \n-
    228 template< int dim >
    \n-
    229 template< int >
    \n-
    230 struct ElementInfo< dim >::Library
    \n-
    231 {
    \n-\n-
    233
    \n-
    234 static const int maxLevelNeighbors = (1 << (dim-1));
    \n-
    235
    \n-
    236 static int
    \n-
    237 leafNeighbor ( const ElementInfo &element, const int face, ElementInfo &neighbor );
    \n-
    238
    \n-
    239 static int
    \n-
    240 levelNeighbors ( const ElementInfo &element, const int face,
    \n-
    241 ElementInfo (&neighbor)[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] );
    \n-
    242
    \n-
    243 private:
    \n-
    244 static int
    \n-
    245 macroNeighbor ( const ElementInfo &element, const int face, ElementInfo &neighbor );
    \n-
    246 };
    \n-
    247
    \n-
    248
    \n-
    249
    \n-
    250 // ElementInfo::Seed
    \n-
    251 // -----------------
    \n-
    252
    \n-
    253 template< int dim >
    \n-
    \n-
    254 struct ElementInfo< dim >::Seed
    \n-
    255 {
    \n-
    \n-\n-
    257 : macroIndex_( -1 ), level_( 0 ), path_( 0 )
    \n-
    258 {}
    \n-
    \n-
    259
    \n-
    \n-
    260 Seed ( const int macroIndex, const int level, const unsigned long path )
    \n-
    261 : macroIndex_( macroIndex ), level_( level ), path_( path )
    \n-
    262 {}
    \n-
    \n-
    263
    \n-
    \n-
    264 bool operator== ( const Seed &other ) const
    \n-
    265 {
    \n-
    266 return (macroIndex() == other.macroIndex()) && (level() == other.level()) && (path() == other.path());
    \n-
    267 }
    \n-
    \n-
    268
    \n-
    \n-
    269 bool operator< ( const Seed &other ) const
    \n-
    270 {
    \n-
    271 const bool ml = (macroIndex() < other.macroIndex());
    \n-
    272 const bool me = (macroIndex() == other.macroIndex());
    \n-
    273 const bool ll = (level() < other.level());
    \n-
    274 const bool le = (level() == other.level());
    \n-
    275 const bool pl = (path() < other.path());
    \n-
    276 return ml | (me & (ll | (le & pl)));
    \n-
    277 }
    \n-
    \n-
    278
    \n-
    279 bool operator!= ( const Seed &other ) const { return !(*this == other); }
    \n-
    280 bool operator<= ( const Seed &other ) const { return !(other < *this); }
    \n-
    281 bool operator> ( const Seed &other ) const { return (other < *this); }
    \n-
    282 bool operator>= ( const Seed &other ) const { return !(*this < other); }
    \n-
    283
    \n-
    284 bool isValid ( ) const { return macroIndex_ != -1; }
    \n-
    285
    \n-
    286 int macroIndex () const { return macroIndex_; }
    \n-
    287 int level () const { return level_; }
    \n-
    288 unsigned long path () const { return path_; }
    \n-
    289
    \n-
    290 private:
    \n-
    291 int macroIndex_;
    \n-
    292 int level_;
    \n-
    293 unsigned long path_;
    \n-
    294 };
    \n-
    \n-
    295
    \n-
    296
    \n-
    297
    \n-
    298 // Implementation of ElementInfo
    \n-
    299 // -----------------------------
    \n-
    300
    \n-
    301 template< int dim >
    \n-
    302 inline ElementInfo< dim >::ElementInfo ( const InstancePtr &instance )
    \n-
    303 : instance_( instance )
    \n-
    304 {
    \n-
    305 addReference();
    \n-
    306 }
    \n-
    307
    \n-
    308
    \n-
    309 template< int dim >
    \n-
    \n-\n-
    311 : instance_( null() )
    \n-
    312 {
    \n-
    313 addReference();
    \n-
    314 }
    \n-
    \n-
    315
    \n-
    316
    \n-
    317 template< int dim >
    \n-
    318 inline ElementInfo< dim >
    \n-
    \n-
    319 ::ElementInfo ( const MeshPointer &mesh, const MacroElement &macroElement,
    \n-
    320 typename FillFlags::Flags fillFlags )
    \n-
    321 {
    \n-
    322 instance_ = stack().allocate();
    \n-
    323 instance_->parent() = null();
    \n-
    324 ++(instance_->parent()->refCount);
    \n-
    325
    \n-
    326 addReference();
    \n-
    327
    \n-
    328 elInfo().fill_flag = fillFlags;
    \n-
    329
    \n-
    330 // Alberta fills opp_vertex only if there is a neighbor
    \n-
    331 for( int k = 0; k < maxNeighbors; ++k )
    \n-
    332 elInfo().opp_vertex[ k ] = -1;
    \n-
    333
    \n-
    334 fill( mesh, &macroElement, elInfo() );
    \n-
    335 }
    \n-
    \n-
    336
    \n-
    337
    \n-
    338 template< int dim >
    \n-
    339 inline ElementInfo< dim >
    \n-
    \n-
    340 ::ElementInfo ( const MeshPointer &mesh, const Seed &seed,
    \n-
    341 typename FillFlags::Flags fillFlags )
    \n-
    342 {
    \n-
    343 instance_ = stack().allocate();
    \n-
    344 instance_->parent() = null();
    \n-
    345 ++(instance_->parent()->refCount);
    \n-
    346
    \n-
    347 addReference();
    \n-
    348
    \n-
    349 // fill in macro element info
    \n-
    350 elInfo().fill_flag = fillFlags;
    \n-
    351
    \n-
    352 // Alberta fills opp_vertex only if there is a neighbor
    \n-
    353 for( int k = 0; k < maxNeighbors; ++k )
    \n-
    354 elInfo().opp_vertex[ k ] = -1;
    \n-
    355
    \n-
    356 fill( mesh, ((Mesh *)mesh)->macro_els + seed.macroIndex(), elInfo() );
    \n-
    357
    \n-
    358 // traverse the seed's path
    \n-
    359 unsigned long path = seed.path();
    \n-
    360 for( int i = 0; i < seed.level(); ++i )
    \n-
    361 {
    \n-
    362 InstancePtr child = stack().allocate();
    \n-
    363 child->parent() = instance_;
    \n-
    364
    \n-
    365 // Alberta fills opp_vertex only if there is a neighbor
    \n-
    366 for( int k = 0; k < maxNeighbors; ++k )
    \n-
    367 child->elInfo.opp_vertex[ k ] = -2;
    \n-
    368
    \n-
    369 fill( path & 1, elInfo(), child->elInfo );
    \n-
    370
    \n-
    371 instance_ = child;
    \n-
    372 addReference();
    \n-
    373
    \n-
    374 path = path >> 1;
    \n-
    375 }
    \n-
    376
    \n-
    377 assert( this->seed() == seed );
    \n-
    378 }
    \n-
    \n-
    379
    \n-
    380
    \n-
    381 template< int dim >
    \n-
    \n-\n-
    383 : instance_( other.instance_ )
    \n-
    384 {
    \n-
    385 addReference();
    \n-
    386 }
    \n-
    \n-
    387
    \n-
    388 template< int dim >
    \n-
    \n-\n-
    390 : instance_( NULL )
    \n-
    391 {
    \n-
    392 using std::swap;
    \n-
    393 swap( instance_, other.instance_ );
    \n-
    394 }
    \n-
    \n-
    395
    \n-
    396 template< int dim >
    \n-
    \n-\n-
    398 {
    \n-
    399 removeReference();
    \n-
    400 }
    \n-
    \n-
    401
    \n-
    402
    \n-
    403 template< int dim >
    \n-
    404 inline ElementInfo< dim > &
    \n-
    \n-\n-
    406 {
    \n-
    407 other.addReference();
    \n-
    408 removeReference();
    \n-
    409 instance_ = other.instance_;
    \n-
    410 return *this;
    \n-
    411 }
    \n-
    \n-
    412
    \n-
    413 template< int dim >
    \n-
    414 inline ElementInfo< dim > &
    \n-
    \n-\n-
    416 {
    \n-
    417 using std::swap;
    \n-
    418 swap( instance_, other.instance_ );
    \n-
    419 return *this;
    \n-
    420 }
    \n-
    \n-
    421
    \n-
    422 template< int dim >
    \n-
    423 inline bool
    \n-
    \n-\n-
    425 {
    \n-
    426 return (instance_->elInfo.el == other.instance_->elInfo.el);
    \n-
    427 }
    \n-
    \n-
    428
    \n-
    429
    \n-
    430 template< int dim >
    \n-
    431 inline bool
    \n-
    \n-\n-
    433 {
    \n-
    434 return (instance_->elInfo.el != other.instance_->elInfo.el);
    \n-
    435 }
    \n-
    \n-
    436
    \n-
    437
    \n-
    438 template< int dim >
    \n-
    439 inline const typename ElementInfo< dim >::MacroElement &
    \n-
    \n-\n-
    441 {
    \n-
    442 assert( !!(*this) );
    \n-
    443 assert( elInfo().macro_el != NULL );
    \n-
    444 return static_cast< const MacroElement & >( *(elInfo().macro_el) );
    \n-
    445 }
    \n-
    \n-
    446
    \n-
    447
    \n-
    448 template< int dim >
    \n-
    \n-\n-
    450 {
    \n-
    451 assert( !!(*this) );
    \n-
    452 return ElementInfo< dim >( instance_->parent() );
    \n-
    453 }
    \n-
    \n-
    454
    \n-
    455
    \n-
    456 template< int dim >
    \n-
    \n-\n-
    458 {
    \n-
    459 const Element *element = elInfo().el;
    \n-
    460 const Element *father = elInfo().parent->el;
    \n-
    461 assert( father != NULL );
    \n-
    462
    \n-
    463 const int index = (father->child[ 0 ] == element ? 0 : 1);
    \n-
    464 assert( father->child[ index ] == element );
    \n-
    465 return index;
    \n-
    466 }
    \n-
    \n-
    467
    \n-
    468
    \n-
    469 template< int dim >
    \n-
    \n-\n-
    471 {
    \n-
    472 assert( !isLeaf() );
    \n-
    473
    \n-
    474 InstancePtr child = stack().allocate();
    \n-
    475 child->parent() = instance_;
    \n-
    476 addReference();
    \n-
    477
    \n-
    478 // Alberta fills opp_vertex only if there is a neighbor
    \n-
    479 for( int k = 0; k < maxNeighbors; ++k )
    \n-
    480 child->elInfo.opp_vertex[ k ] = -2;
    \n-
    481
    \n-
    482 fill( i, elInfo(), child->elInfo );
    \n-
    483 return ElementInfo< dim >( child );
    \n-
    484 }
    \n-
    \n-
    485
    \n-
    486
    \n-
    487 template< int dim >
    \n-
    \n-
    488 inline bool ElementInfo< dim >::isLeaf () const
    \n-
    489 {
    \n-
    490 assert( !(*this) == false );
    \n-
    491 return isLeaf( el() );
    \n-
    492 }
    \n-
    \n-
    493
    \n-
    494
    \n-
    495 template< int dim >
    \n-
    \n-\n-
    497 {
    \n-
    498 assert( !!(*this) );
    \n-
    499
    \n-
    500 int level = 0;
    \n-
    501 unsigned long path = 0;
    \n-
    502 for( InstancePtr p = instance_; p->parent() != null(); p = p->parent() )
    \n-
    503 {
    \n-
    504 const Element *element = p->elInfo.el;
    \n-
    505 const Element *father = p->parent()->elInfo.el;
    \n-
    506 const unsigned long child = static_cast< unsigned long >( father->child[ 1 ] == element );
    \n-
    507 path = (path << 1) | child;
    \n-
    508 ++level;
    \n-
    509 }
    \n-
    510
    \n-
    511 if( level != elInfo().level )
    \n-
    512 DUNE_THROW( NotImplemented, "Seed for fake elements not implemented." );
    \n-
    513
    \n-
    514 return Seed( macroElement().index, level, path );
    \n-
    515 }
    \n-
    \n-
    516
    \n-
    517
    \n-
    518 template< int dim >
    \n-
    \n-\n-
    520 {
    \n-
    521 return MeshPointer( elInfo().mesh );
    \n-
    522 }
    \n-
    \n-
    523
    \n-
    524
    \n-
    525 template< int dim >
    \n-
    \n-\n-
    527 {
    \n-
    528 return mightVanish( el(), 0 );
    \n-
    529 }
    \n-
    \n-
    530
    \n-
    531
    \n-
    532 template< int dim >
    \n-
    \n-
    533 inline int ElementInfo< dim >::level () const
    \n-
    534 {
    \n-
    535 return elInfo().level;
    \n-
    536 }
    \n-
    \n-
    537
    \n-
    538
    \n-
    539 template< int dim >
    \n-
    \n-
    540 inline int ElementInfo< dim >::type () const
    \n-
    541 {
    \n-
    542 return 0;
    \n-
    543 }
    \n-
    \n-
    544
    \n-
    545
    \n-
    546 template<>
    \n-
    \n-
    547 inline int ElementInfo< 3 >::type () const
    \n-
    548 {
    \n-
    549 return instance_->elInfo.el_type;
    \n-
    550 }
    \n-
    \n-
    551
    \n-
    552
    \n-
    553 template< int dim >
    \n-
    \n-
    554 inline int ElementInfo< dim >::getMark () const
    \n-
    555 {
    \n-
    556 return el()->mark;
    \n-
    557 }
    \n-
    \n-
    558
    \n-
    559
    \n-
    560 template< int dim >
    \n-
    \n-
    561 inline void ElementInfo< dim >::setMark ( int refCount ) const
    \n-
    562 {
    \n-
    563 assert( isLeaf() );
    \n-
    564 assert( (refCount >= -128) && (refCount < 127) );
    \n-
    565 el()->mark = refCount;
    \n-
    566 }
    \n-
    \n-
    567
    \n-
    568
    \n-
    569 template< int dim >
    \n-
    \n-
    570 inline bool ElementInfo< dim >::hasLeafNeighbor ( const int face ) const
    \n-
    571 {
    \n-
    572 assert( !!(*this) );
    \n-
    573 assert( (face >= 0) && (face < maxNeighbors) );
    \n-
    574
    \n-
    575 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n-
    576 const int macroFace = elInfo().macro_wall[ face ];
    \n-
    577 if( macroFace >= 0 )
    \n-
    578 return (macroElement().neighbor( macroFace ) != NULL);
    \n-
    579 else
    \n-
    580 return true;
    \n-
    581 }
    \n-
    \n-
    582
    \n-
    583
    \n-
    584 template< int dim >
    \n-
    \n-\n-
    586 {
    \n-
    587 assert( (face >= 0) && (face < numFaces) );
    \n-
    588 ElementInfo neighbor;
    \n-
    589 Library< dimWorld >::leafNeighbor( *this, face, neighbor );
    \n-
    590 return neighbor;
    \n-
    591 }
    \n-
    \n-
    592
    \n-
    593
    \n-
    594 template< int dim >
    \n-
    595 inline int ElementInfo< dim >
    \n-
    \n-
    596 ::levelNeighbors ( const int face, ElementInfo (&neighbor)[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] ) const
    \n-
    597 {
    \n-
    598 assert( (face >= 0) && (face < numFaces) );
    \n-
    599 return Library< dimWorld >::levelNeighbors( *this, face, neighbor, faceInNeighbor );
    \n-
    600 }
    \n-
    \n-
    601
    \n-
    602
    \n-
    603 template< int dim >
    \n-
    604 template< int codim >
    \n-
    \n-
    605 inline int ElementInfo< dim >::twist ( int subEntity ) const
    \n-
    606 {
    \n-
    607 return Twist< dim, dim-codim >::twist( element(), subEntity );
    \n-
    608 }
    \n-
    \n-
    609
    \n-
    610
    \n-
    611 template< int dim >
    \n-
    \n-
    612 inline int ElementInfo< dim >::twistInNeighbor ( const int face ) const
    \n-
    613 {
    \n-
    614 assert( neighbor( face ) != NULL );
    \n-
    615 return Twist< dim, dim-1 >::twist( neighbor( face ), elInfo().opp_vertex[ face ] );
    \n-
    616 }
    \n-
    \n-
    617
    \n-
    618
    \n-
    619 template< int dim >
    \n-
    \n-
    620 inline bool ElementInfo< dim >::isBoundary ( int face ) const
    \n-
    621 {
    \n-
    622 assert( !!(*this) );
    \n-
    623 assert( (face >= 0) && (face < maxNeighbors) );
    \n-
    624
    \n-
    625 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n-
    626 const int macroFace = elInfo().macro_wall[ face ];
    \n-
    627 if( macroFace >= 0 )
    \n-
    628 return macroElement().isBoundary( macroFace );
    \n-
    629 else
    \n-
    630 return false;
    \n-
    631 }
    \n-
    \n-
    632
    \n-
    633
    \n-
    634 template< int dim >
    \n-
    \n-
    635 inline int ElementInfo< dim >::boundaryId ( int face ) const
    \n-
    636 {
    \n-
    637 assert( !!(*this) );
    \n-
    638 assert( (face >= 0) && (face < N_WALLS_MAX) );
    \n-
    639
    \n-
    640 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n-
    641 const int macroFace = elInfo().macro_wall[ face ];
    \n-
    642 const int id = macroElement().boundaryId( macroFace );
    \n-
    643 // this assertion is only allowed, if FILL_BOUND is set
    \n-
    644 // assert( id == elInfo().wall_bound[ face ] );
    \n-
    645 return id;
    \n-
    646 }
    \n-
    \n-
    647
    \n-
    648
    \n-
    649 template< int dim >
    \n-
    650 inline AffineTransformation *
    \n-
    \n-\n-
    652 {
    \n-
    653 assert( !!(*this) );
    \n-
    654 assert( (face >= 0) && (face < N_WALLS_MAX) );
    \n-
    655
    \n-
    656 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n-
    657 const int macroFace = elInfo().macro_wall[ face ];
    \n-
    658 return (macroFace < 0 ? NULL : macroElement().wall_trafo[ macroFace ]);
    \n-
    659 }
    \n-
    \n-
    660
    \n-
    661
    \n-
    662 template< int dim >
    \n-
    663 inline BasicNodeProjection *
    \n-
    \n-\n-
    665 {
    \n-
    666 assert( !!(*this) );
    \n-
    667 assert( (face >= 0) && (face < N_WALLS_MAX) );
    \n-
    668
    \n-
    669 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n-
    670 const int macroFace = elInfo().macro_wall[ face ];
    \n-
    671 if( macroFace >= 0 )
    \n-
    672 return static_cast< BasicNodeProjection * >( macroElement().projection[ macroFace+1 ] );
    \n-
    673 else
    \n-
    674 return 0;
    \n-
    675 }
    \n-
    \n-
    676
    \n-
    677
    \n-
    678 template< int dim >
    \n-
    \n-\n-
    680 {
    \n-
    681 return ((elInfo().fill_flag & FillFlags::coords) != 0);
    \n-
    682 }
    \n-
    \n-
    683
    \n-
    684 template< int dim >
    \n-
    \n-
    685 inline const GlobalVector &ElementInfo< dim >::coordinate ( int vertex ) const
    \n-
    686 {
    \n-
    687 assert( hasCoordinates() );
    \n-
    688 assert( (vertex >= 0) && (vertex < numVertices) );
    \n-
    689 return elInfo().coord[ vertex ];
    \n-
    690 }
    \n-
    \n-
    691
    \n-
    692
    \n-
    693 template< int dim >
    \n-
    694 template< class Functor >
    \n-
    \n-
    695 inline void ElementInfo< dim >::hierarchicTraverse ( Functor &functor ) const
    \n-
    696 {
    \n-
    697 functor( *this );
    \n-
    698 if( !isLeaf() )
    \n-
    699 {
    \n-
    700 child( 0 ).hierarchicTraverse( functor );
    \n-
    701 child( 1 ).hierarchicTraverse( functor );
    \n-
    702 }
    \n-
    703 }
    \n-
    \n-
    704
    \n-
    705
    \n-
    706 template< int dim >
    \n-
    707 template< class Functor >
    \n-
    \n-
    708 inline void ElementInfo< dim >::leafTraverse ( Functor &functor ) const
    \n-
    709 {
    \n-
    710 if( !isLeaf() )
    \n-
    711 {
    \n-
    712 child( 0 ).leafTraverse( functor );
    \n-
    713 child( 1 ).leafTraverse( functor );
    \n-
    714 }
    \n-
    715 else
    \n-
    716 functor( *this );
    \n-
    717 }
    \n-
    \n-
    718
    \n-
    719
    \n-
    720 template< int dim >
    \n-
    \n-\n-
    722 {
    \n-
    723 return elInfo().el;
    \n-
    724 }
    \n-
    \n-
    725
    \n-
    726
    \n-
    727 template< int dim >
    \n-
    \n-
    728 inline const Element *ElementInfo< dim >::neighbor ( int face ) const
    \n-
    729 {
    \n-
    730 assert( (face >= 0) && (face < numFaces) );
    \n-
    731 assert( (elInfo().fill_flag & FillFlags::neighbor) != 0 );
    \n-
    732 return elInfo().neigh[ face ];
    \n-
    733 }
    \n-
    \n-
    734
    \n-
    735
    \n-
    736 template< int dim >
    \n-
    \n-\n-
    738 {
    \n-
    739 return elInfo().el;
    \n-
    740 }
    \n-
    \n-
    741
    \n-
    742
    \n-
    743 template< int dim >
    \n-
    \n-
    744 inline ALBERTA EL_INFO &ElementInfo< dim >::elInfo () const
    \n-
    745 {
    \n-
    746 return (instance_->elInfo);
    \n-
    747 }
    \n-
    \n-
    748
    \n-
    749
    \n-
    750 template< int dim >
    \n-
    751 inline ElementInfo< dim >
    \n-
    \n-\n-
    753 const Element *element, int level, int type )
    \n-
    754 {
    \n-
    755 InstancePtr instance = stack().allocate();
    \n-
    756 instance->parent() = null();
    \n-
    757 ++(instance->parent()->refCount);
    \n-
    758
    \n-
    759 instance->elInfo.mesh = mesh;
    \n-
    760 instance->elInfo.macro_el = NULL;
    \n-
    761 instance->elInfo.el = const_cast< Element * >( element );
    \n-
    762 instance->elInfo.parent = NULL;
    \n-
    763 instance->elInfo.fill_flag = FillFlags::nothing;
    \n-
    764 instance->elInfo.level = level;
    \n-
    765 instance->elInfo.el_type = type;
    \n-
    766
    \n-
    767 return ElementInfo< dim >( instance );
    \n-
    768 }
    \n-
    \n-
    769
    \n-
    770
    \n-
    771 template< int dim >
    \n-
    772 inline ElementInfo< dim >
    \n-
    \n-
    773 ElementInfo< dim >::createFake ( const ALBERTA EL_INFO &elInfo )
    \n-
    774 {
    \n-
    775 InstancePtr instance = stack().allocate();
    \n-
    776 instance->parent() = null();
    \n-
    777 ++(instance->parent()->refCount);
    \n-
    778
    \n-
    779 instance->elInfo = elInfo;
    \n-
    780 return ElementInfo< dim >( instance );
    \n-
    781 }
    \n-
    \n-
    782
    \n-
    783
    \n-
    784 template< int dim >
    \n-
    785 inline bool ElementInfo< dim >::isLeaf ( Element *element )
    \n-
    786 {
    \n-
    787 return IS_LEAF_EL( element );
    \n-
    788 }
    \n-
    789
    \n-
    790
    \n-
    791 template< int dim >
    \n-
    792 inline bool ElementInfo< dim >::mightVanish ( Alberta::Element *element, int depth )
    \n-
    793 {
    \n-
    794 if( isLeaf( element ) )
    \n-
    795 return (element->mark < depth);
    \n-
    796 else
    \n-
    797 return (mightVanish( element->child[ 0 ], depth-1 ) && mightVanish( element->child[ 1 ], depth-1 ));
    \n-
    798 }
    \n-
    799
    \n-
    800
    \n-
    801 template< int dim >
    \n-
    802 inline void ElementInfo< dim >
    \n-
    803 ::fill ( Mesh *mesh, const ALBERTA MACRO_EL *mel, ALBERTA EL_INFO &elInfo )
    \n-
    804 {
    \n-
    805 ALBERTA fill_macro_info( mesh, mel, &elInfo );
    \n-
    806 }
    \n-
    807
    \n-
    808 template< int dim >
    \n-
    809 inline void ElementInfo< dim >
    \n-
    810 ::fill ( int ichild, const ALBERTA EL_INFO &parentInfo, ALBERTA EL_INFO &elInfo )
    \n-
    811 {
    \n-
    812 ALBERTA fill_elinfo( ichild, FILL_ANY, &parentInfo, &elInfo );
    \n-
    813 }
    \n-
    814
    \n-
    815
    \n-
    816 template< int dim >
    \n-
    817 inline void ElementInfo< dim >::addReference () const
    \n-
    818 {
    \n-
    819 ++(instance_->refCount);
    \n-
    820 }
    \n-
    821
    \n-
    822
    \n-
    823 template< int dim >
    \n-
    824 inline void ElementInfo< dim >::removeReference () const
    \n-
    825 {
    \n-
    826 // short-circuit for rvalues that have been drained as argument to a move operation
    \n-
    827 if ( !instance_ )
    \n-
    828 return;
    \n-
    829 // this loop breaks when instance becomes null()
    \n-
    830 for( InstancePtr instance = instance_; --(instance->refCount) == 0; )
    \n-
    831 {
    \n-
    832 const InstancePtr parent = instance->parent();
    \n-
    833 stack().release( instance );
    \n-
    834 instance = parent;
    \n-
    835 }
    \n-
    836 }
    \n-
    837
    \n-
    838
    \n-
    839 template< int dim >
    \n-
    840 inline typename ElementInfo< dim >::InstancePtr
    \n-
    841 ElementInfo< dim >::null ()
    \n-
    842 {
    \n-
    843 return stack().null();
    \n-
    844 }
    \n-
    845
    \n-
    846
    \n-
    847 template< int dim >
    \n-
    848 inline typename ElementInfo< dim >::Stack &
    \n-
    849 ElementInfo< dim >::stack ()
    \n-
    850 {
    \n-
    851 static Stack s;
    \n-
    852 return s;
    \n-
    853 }
    \n-
    854
    \n-
    855
    \n-
    856
    \n-
    857 // Implementation of ElementInfo::Stack
    \n-
    858 // ------------------------------------
    \n-
    859
    \n-
    860 template< int dim >
    \n-
    \n-\n-
    862 : top_( 0 )
    \n-
    863 {
    \n-
    864 null_.elInfo.el = NULL;
    \n-
    865 null_.refCount = 1;
    \n-
    866 null_.parent() = 0;
    \n-
    867 }
    \n-
    \n-
    868
    \n-
    869
    \n-
    870 template< int dim >
    \n-
    \n-\n-
    872 {
    \n-
    873 while( top_ != 0 )
    \n-
    874 {
    \n-
    875 InstancePtr p = top_;
    \n-
    876 top_ = p->parent();
    \n-
    877 delete p;
    \n-
    878 }
    \n-
    879 }
    \n-
    \n-
    880
    \n-
    881
    \n-
    882 template< int dim >
    \n-
    883 inline typename ElementInfo< dim >::InstancePtr
    \n-
    \n-\n-
    885 {
    \n-
    886 InstancePtr p = top_;
    \n-
    887 if( p != 0 )
    \n-
    888 top_ = p->parent();
    \n-
    889 else
    \n-
    890 p = new Instance;
    \n-
    891 p->refCount = 0;
    \n-
    892 return p;
    \n-
    893 }
    \n-
    \n-
    894
    \n-
    895
    \n-
    896 template< int dim >
    \n-
    \n-\n-
    898 {
    \n-
    899 assert( (p != null()) && (p->refCount == 0) );
    \n-
    900 p->parent() = top_;
    \n-
    901 top_ = p;
    \n-
    902 }
    \n-
    \n-
    903
    \n-
    904
    \n-
    905 template< int dim >
    \n-
    906 inline typename ElementInfo< dim >::InstancePtr
    \n-
    \n-\n-
    908 {
    \n-
    909 return &null_;
    \n-
    910 }
    \n-
    \n-
    \n-
    911
    \n-
    912 } // namespace Alberta
    \n-
    913
    \n-
    914} // namespace Dune
    \n-
    915
    \n-
    916#endif // #if HAVE_ALBERTA
    \n-
    917
    \n-
    918#endif // #ifndef DUNE_ALBERTA_ELEMENTINFO_HH
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n+
    \n+\n+
    32 {}
    \n
    \n+
    33
    \n+
    \n+
    35 AlbertaGridLevelIterator ( const GridImp &grid, int level )
    \n+
    36 : Base( grid, level )
    \n+
    37 {}
    \n+
    \n+
    38
    \n+
    \n+\n+
    41 const MarkerVector *vec,
    \n+
    42 int level )
    \n+
    43 : Base( grid, vec, level )
    \n+
    44 {}
    \n+
    \n+
    45
    \n+
    \n+
    47 void increment ()
    \n+
    48 {
    \n+\n+
    50 }
    \n+
    \n+
    51 };
    \n+
    \n+
    52
    \n+
    53
    \n+
    54 template< int codim, class GridImp >
    \n+
    \n+\n+
    56 : public AlbertaGridTreeIterator< codim, GridImp, false >
    \n+
    57 {
    \n+\n+\n+
    60
    \n+
    61 public:
    \n+
    62 typedef typename Base::Entity Entity;
    \n+\n+
    64
    \n+
    \n+\n+
    66 {}
    \n+
    \n+
    67
    \n+
    \n+
    69 AlbertaGridLevelIterator ( const GridImp &grid, int level )
    \n+
    70 : Base( grid, level )
    \n+
    71 {}
    \n+
    \n+
    72
    \n+
    \n+\n+
    75 const MarkerVector *,
    \n+
    76 int level )
    \n+
    77 : Base( grid, level )
    \n+
    78 {}
    \n
    \n-\n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n-
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n+
    79
    \n+
    \n+
    81 void increment ()
    \n+
    82 {
    \n+\n+
    84 }
    \n+
    \n+
    85 };
    \n+
    \n+
    86}
    \n+
    87
    \n+
    88#endif // #if HAVE_ALBERTA
    \n+
    89
    \n+
    90#endif // #ifndef DUNE_ALBERTA_LEVELITERATOR_HH
    \n+\n+\n+
    @ Ghost_Partition
    only ghost entities
    Definition gridenums.hh:142
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n-
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n-
    ALBERTA EL Element
    Definition misc.hh:54
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-\n-
    Definition elementinfo.hh:43
    \n-
    ElementInfo leafNeighbor(const int face) const
    Definition elementinfo.hh:585
    \n-
    bool isLeaf() const
    Definition elementinfo.hh:488
    \n-
    static ElementInfo createFake(const MeshPointer &mesh, const Element *element, int level, int type=0)
    Definition elementinfo.hh:752
    \n-
    ElementInfo child(int i) const
    Definition elementinfo.hh:470
    \n-
    int level() const
    Definition elementinfo.hh:533
    \n-
    bool mightVanish() const
    Definition elementinfo.hh:526
    \n-
    static const int numFaces
    Definition elementinfo.hh:56
    \n-
    int twist(int subEntity) const
    Definition elementinfo.hh:605
    \n-
    int twistInNeighbor(int face) const
    Definition elementinfo.hh:612
    \n-
    Alberta::MacroElement< dimension > MacroElement
    Definition elementinfo.hh:58
    \n-
    BasicNodeProjection * boundaryProjection(int face) const
    Definition elementinfo.hh:664
    \n-
    const MacroElement & macroElement() const
    Definition elementinfo.hh:440
    \n-
    static const int maxLevelNeighbors
    Definition elementinfo.hh:64
    \n-
    ElementInfo father() const
    Definition elementinfo.hh:449
    \n-
    ElementInfo(const ElementInfo &other)
    Definition elementinfo.hh:382
    \n-
    GeometryCacheProxy< dim > GeometryCache
    Definition elementinfo.hh:67
    \n-
    ElementInfo & operator=(const ElementInfo &other)
    Definition elementinfo.hh:405
    \n-
    bool hasLeafNeighbor(const int face) const
    Definition elementinfo.hh:570
    \n-
    bool operator==(const ElementInfo &other) const
    Definition elementinfo.hh:424
    \n-
    static const int dimension
    Definition elementinfo.hh:53
    \n-
    void hierarchicTraverse(Functor &functor) const
    Definition elementinfo.hh:695
    \n-
    int type() const
    Definition elementinfo.hh:540
    \n-
    static const int maxNeighbors
    Definition elementinfo.hh:62
    \n-
    void setMark(int refCount) const
    Definition elementinfo.hh:561
    \n-
    ~ElementInfo()
    Definition elementinfo.hh:397
    \n-
    const GlobalVector & coordinate(int vertex) const
    Definition elementinfo.hh:685
    \n-
    static const int numVertices
    Definition elementinfo.hh:55
    \n-
    int getMark() const
    Definition elementinfo.hh:554
    \n-
    void leafTraverse(Functor &functor) const
    Definition elementinfo.hh:708
    \n-
    Alberta::MeshPointer< dimension > MeshPointer
    Definition elementinfo.hh:59
    \n-
    const Element * neighbor(int face) const
    Definition elementinfo.hh:728
    \n-
    static ElementInfo createFake(const ALBERTA EL_INFO &elInfo)
    Definition elementinfo.hh:773
    \n-
    ElementInfo()
    Definition elementinfo.hh:310
    \n-
    int boundaryId(int face) const
    Definition elementinfo.hh:635
    \n-
    bool operator!=(const ElementInfo &other) const
    Definition elementinfo.hh:432
    \n-
    Alberta::FillFlags< dimension > FillFlags
    Definition elementinfo.hh:60
    \n-
    ElementInfo(const MeshPointer &mesh, const MacroElement &macroElement, typename FillFlags::Flags fillFlags=FillFlags::standard)
    Definition elementinfo.hh:319
    \n-
    AffineTransformation * transformation(int face) const
    Definition elementinfo.hh:651
    \n-
    bool isBoundary(int face) const
    Definition elementinfo.hh:620
    \n-
    int indexInFather() const
    Definition elementinfo.hh:457
    \n-
    Seed seed() const
    Definition elementinfo.hh:496
    \n-
    Element * el() const
    Definition elementinfo.hh:737
    \n-
    const Element * element() const
    Definition elementinfo.hh:721
    \n-
    ALBERTA EL_INFO & elInfo() const
    Definition elementinfo.hh:744
    \n-
    MeshPointer mesh() const
    Definition elementinfo.hh:519
    \n-
    GeometryCache geometryCache() const
    Definition elementinfo.hh:140
    \n-
    bool hasCoordinates() const
    Definition elementinfo.hh:679
    \n-
    int levelNeighbors(const int face, ElementInfo(&neighbor)[maxLevelNeighbors], int(&faceInNeighbor)[maxLevelNeighbors]) const
    Definition elementinfo.hh:596
    \n-
    ElementInfo(ElementInfo &&other)
    Definition elementinfo.hh:389
    \n-
    ElementInfo(const MeshPointer &mesh, const Seed &seed, typename FillFlags::Flags fillFlags=FillFlags::standard)
    Definition elementinfo.hh:340
    \n-
    Definition elementinfo.hh:185
    \n-
    InstancePtr & parent()
    Definition elementinfo.hh:189
    \n-
    Alberta::GeometryCache< dim > geometryCache
    Definition elementinfo.hh:199
    \n-
    ALBERTA EL_INFO elInfo
    Definition elementinfo.hh:186
    \n-
    unsigned int refCount
    Definition elementinfo.hh:187
    \n-
    Definition elementinfo.hh:210
    \n-
    InstancePtr null()
    Definition elementinfo.hh:907
    \n-
    ~Stack()
    Definition elementinfo.hh:871
    \n-
    void release(InstancePtr &p)
    Definition elementinfo.hh:897
    \n-
    Stack()
    Definition elementinfo.hh:861
    \n-
    InstancePtr allocate()
    Definition elementinfo.hh:884
    \n-
    Definition elementinfo.hh:255
    \n-
    Seed(const int macroIndex, const int level, const unsigned long path)
    Definition elementinfo.hh:260
    \n-
    Seed()
    Definition elementinfo.hh:256
    \n-
    int level() const
    Definition elementinfo.hh:287
    \n-
    bool isValid() const
    Definition elementinfo.hh:284
    \n-
    unsigned long path() const
    Definition elementinfo.hh:288
    \n-
    int macroIndex() const
    Definition elementinfo.hh:286
    \n-
    Definition geometrycache.hh:24
    \n-
    Definition geometrycache.hh:91
    \n-
    Definition macroelement.hh:24
    \n-
    Definition misc.hh:148
    \n-
    Definition misc.hh:231
    \n-
    static const Flags nothing
    Definition misc.hh:234
    \n-
    static const Flags boundaryId
    Definition misc.hh:246
    \n-
    ALBERTA FLAGS Flags
    Definition misc.hh:232
    \n-
    static const Flags coords
    Definition misc.hh:236
    \n-
    static const Flags standard
    Definition misc.hh:258
    \n-
    static const Flags neighbor
    Definition misc.hh:238
    \n-
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:538
    \n-
    Definition albertagrid/projection.hh:208
    \n+
    Definition treeiterator.hh:189
    \n+
    GridImp::template Codim< codim >::Entity Entity
    Definition treeiterator.hh:207
    \n+
    int level() const
    ask for level of entities
    Definition treeiterator.hh:243
    \n+
    void increment()
    increment
    Definition treeiterator.hh:411
    \n+
    const GridImp & grid() const
    obtain a reference to the grid
    Definition treeiterator.hh:253
    \n+
    Definition leveliterator.hh:23
    \n+
    Base::MarkerVector MarkerVector
    Definition leveliterator.hh:29
    \n+
    AlbertaGridLevelIterator()
    Definition leveliterator.hh:31
    \n+
    AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *vec, int level)
    Constructor making begin iterator.
    Definition leveliterator.hh:40
    \n+
    Base::Entity Entity
    Definition leveliterator.hh:28
    \n+
    AlbertaGridLevelIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leveliterator.hh:35
    \n+
    void increment()
    increment the iterator
    Definition leveliterator.hh:47
    \n+\n+\n+
    void increment()
    increment the iterator
    Definition leveliterator.hh:81
    \n+
    Base::Entity Entity
    Definition leveliterator.hh:62
    \n+
    Base::MarkerVector MarkerVector
    Definition leveliterator.hh:63
    \n+
    AlbertaGridLevelIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leveliterator.hh:69
    \n+
    AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *, int level)
    Constructor making begin iterator (which is the end iterator in this case)
    Definition leveliterator.hh:74
    \n+
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1211 +1,175 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-elementinfo.hh\n+leveliterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_ELEMENTINFO_HH\n-6#define DUNE_ALBERTA_ELEMENTINFO_HH\n+5#ifndef DUNE_ALBERTA_LEVELITERATOR_HH\n+6#define DUNE_ALBERTA_LEVELITERATOR_HH\n 7\n-13#include \n-14#include \n-15#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+11\n+12#if HAVE_ALBERTA\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n 16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+17 // AlbertaGridLevelIterator\n+18 // ------------------------\n 19\n-20#if HAVE_ALBERTA\n-21\n-22namespace _\bD_\bu_\bn_\be\n-23{\n-24\n-25 namespace Alberta\n-26 {\n-27\n-28 // External Forward Declarations\n-29 // -----------------------------\n+20 template< int codim, PartitionIteratorType pitype, class GridImp >\n+_\b2_\b1 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+22 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, false >\n+23 {\n+24 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+25 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b> _\bB_\ba_\bs_\be;\n+26\n+27 public:\n+_\b2_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b2_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n 30\n-31 template< int dim >\n-32 class MeshPointer;\n+_\b3_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+32 {}\n 33\n-34 struct BasicNodeProjection;\n-35\n-36\n-37\n-38 // ElementInfo\n-39 // -----------\n-40\n-41 template< int dim >\n-_\b4_\b2 class _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-43 {\n-44 struct _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be;\n-45 class _\bS_\bt_\ba_\bc_\bk;\n-46\n-47 template< int >\n-48 struct Library;\n-49\n-50 typedef _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be *_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br;\n-51\n-52 public:\n-_\b5_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-54\n-_\b5_\b5 static const int _\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be;\n-_\b5_\b6 static const int _\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-57\n-_\b5_\b8 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-_\b5_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-_\b6_\b0 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs;\n-61\n-_\b6_\b2 static const int _\bm_\ba_\bx_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs = N_NEIGH_MAX;\n-63\n-_\b6_\b4 static const int _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs = Library< dimWorld >::maxLevelNeighbors;\n-65\n-66#if !DUNE_ALBERTA_CACHE_COORDINATES\n-_\b6_\b7 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b<_\b _\bd_\bi_\bm_\b _\b> _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be;\n-68#endif\n-69\n-70 struct _\bS_\be_\be_\bd;\n-71\n-72 private:\n-73 explicit _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br &instance );\n-74\n-75 public:\n-_\b7_\b6 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ();\n-_\b7_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh, const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt,\n-78 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd );\n-_\b7_\b9 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh, const Seed &_\bs_\be_\be_\bd,\n-80 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd );\n-_\b8_\b1 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other );\n-_\b8_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo&& other );\n-83\n-_\b8_\b4 _\b~_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ();\n-85\n-_\b8_\b6 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other );\n-_\b8_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &&other );\n-88\n-_\b8_\b9 explicit operator bool () const { return (instance_ != null()); }\n-90\n-_\b9_\b1 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other ) const;\n-_\b9_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other ) const;\n-93\n-_\b9_\b4 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt () const;\n-_\b9_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bf_\ba_\bt_\bh_\be_\br () const;\n-_\b9_\b6 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const;\n-_\b9_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bc_\bh_\bi_\bl_\bd ( int i ) const;\n-_\b9_\b8 bool _\bi_\bs_\bL_\be_\ba_\bf () const;\n-99\n-_\b1_\b0_\b0 Seed _\bs_\be_\be_\bd () const;\n-101\n-_\b1_\b0_\b2 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br _\bm_\be_\bs_\bh () const;\n-103\n-_\b1_\b0_\b4 bool _\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const;\n-105\n-_\b1_\b0_\b6 int _\bl_\be_\bv_\be_\bl () const;\n-107 // see ALBERTA documentation for definition of element type\n-108 // values are 0, 1, 2\n-_\b1_\b0_\b9 int _\bt_\by_\bp_\be () const;\n-110\n-_\b1_\b1_\b1 int _\bg_\be_\bt_\bM_\ba_\br_\bk () const;\n-_\b1_\b1_\b2 void _\bs_\be_\bt_\bM_\ba_\br_\bk ( int refCount ) const;\n-113\n-_\b1_\b1_\b4 bool _\bh_\ba_\bs_\bL_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const;\n-_\b1_\b1_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const;\n-116\n-117 /* obtain all level neighbors of a face\n-118 *\n-119 * param[in] face face for which the neighbors are desired\n-120 * param[out] neighbor array storing the neighbors\n-121 * param[out] faceInNeighbor array storing the faces in neighbor\n-122 * (-1, if this neighbor does not exist)\n-123 *\n-124 * returns (potential) number of neighbors (i.e., the number of valid\n-125 * entries in the output arrays\n-126 */\n-_\b1_\b2_\b7 int _\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo (&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br)\n-[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ], int (&faceInNeighbor)[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ] ) const;\n-128\n-129 template< int codim >\n-_\b1_\b3_\b0 int _\bt_\bw_\bi_\bs_\bt ( int subEntity ) const;\n-_\b1_\b3_\b1 int _\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( int face ) const;\n-_\b1_\b3_\b2 bool _\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( int face ) const;\n-_\b1_\b3_\b3 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int face ) const;\n-_\b1_\b3_\b4 _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int face ) const;\n-_\b1_\b3_\b5 _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn *_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn ( int face ) const;\n-136\n-_\b1_\b3_\b7 bool _\bh_\ba_\bs_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs () const;\n-_\b1_\b3_\b8 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int vertex ) const;\n-139#if !DUNE_ALBERTA_CACHE_COORDINATES\n-_\b1_\b4_\b0 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be () const\n-141 {\n-142 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be( instance_->_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be, instance_->_\be_\bl_\bI_\bn_\bf_\bo );\n-143 }\n-144#endif\n-145\n-146 template< class Functor >\n-_\b1_\b4_\b7 void _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor ) const;\n-148\n-149 template< class Functor >\n-_\b1_\b5_\b0 void _\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor ) const;\n-151\n-_\b1_\b5_\b2 const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt () const;\n-_\b1_\b5_\b3 const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int face ) const;\n-_\b1_\b5_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl () const;\n-_\b1_\b5_\b5 _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &_\be_\bl_\bI_\bn_\bf_\bo () const;\n-156\n-157 static _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-_\b1_\b5_\b8 _\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh,\n-159 const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt, int _\bl_\be_\bv_\be_\bl, int _\bt_\by_\bp_\be = 0 );\n-_\b1_\b6_\b0 static _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &_\be_\bl_\bI_\bn_\bf_\bo );\n-161\n-162 private:\n-163 static bool _\bi_\bs_\bL_\be_\ba_\bf ( _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt );\n-164 static bool _\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh ( _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt, int depth );\n-165\n-166 static void fill ( _\bM_\be_\bs_\bh *_\bm_\be_\bs_\bh, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *mel, _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO\n-&_\be_\bl_\bI_\bn_\bf_\bo );\n-167 static void fill ( int ichild, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &parentInfo, _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-EL_INFO &_\be_\bl_\bI_\bn_\bf_\bo );\n-168\n-169 void addReference () const;\n-170 void removeReference () const;\n-171\n-172 static InstancePtr null ();\n-173 static Stack &stack ();\n-174\n-175 InstancePtr instance_;\n-176 };\n-177\n-178\n-179\n-180 // ElementInfo::Instance\n-181 // ---------------------\n-182\n-183 template< int dim >\n-_\b1_\b8_\b4 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be\n-185 {\n-_\b1_\b8_\b6 _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO _\be_\bl_\bI_\bn_\bf_\bo;\n-_\b1_\b8_\b7 unsigned int _\br_\be_\bf_\bC_\bo_\bu_\bn_\bt;\n-188\n-_\b1_\b8_\b9 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br &_\bp_\ba_\br_\be_\bn_\bt ()\n-190 {\n-191 return parent_;\n-192 }\n-193\n-194 private:\n-195 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br parent_;\n-196\n-197#if !DUNE_ALBERTA_CACHE_COORDINATES\n-198 public:\n-_\b1_\b9_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b> _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be;\n-200#endif\n-201 };\n-202\n-203\n-204\n-205 // ElementInfo::Stack\n-206 // ------------------\n-207\n-208 template< int dim >\n-_\b2_\b0_\b9 class _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::_\bS_\bt_\ba_\bc_\bk\n-210 {\n-211 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br top_;\n-212 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be null_;\n-213\n-214 public:\n-_\b2_\b1_\b5 Stack ();\n-_\b2_\b1_\b6 ~Stack ();\n-217\n-_\b2_\b1_\b8 InstancePtr allocate ();\n-_\b2_\b1_\b9 void release ( InstancePtr &p );\n-_\b2_\b2_\b0 InstancePtr null ();\n-221 };\n-222\n-223\n-224\n-225 // ElementInfo::Library\n-226 // --------------------\n-227\n-228 template< int dim >\n-229 template< int >\n-230 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::Library\n-231 {\n-232 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-233\n-234 static const int _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs = (1 << (dim-1));\n-235\n-236 static int\n-237 _\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt, const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br );\n-238\n-239 static int\n-240 _\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt, const int face,\n-241 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo (&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br)[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ], int (&faceInNeighbor)\n-[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ] );\n-242\n-243 private:\n-244 static int\n-245 macroNeighbor ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt, const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br );\n-246 };\n-247\n-248\n-249\n-250 // ElementInfo::Seed\n-251 // -----------------\n-252\n-253 template< int dim >\n-_\b2_\b5_\b4 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::_\bS_\be_\be_\bd\n-255 {\n-_\b2_\b5_\b6 _\bS_\be_\be_\bd ()\n-257 : macroIndex_( -1 ), level_( 0 ), path_( 0 )\n-258 {}\n-259\n-_\b2_\b6_\b0 _\bS_\be_\be_\bd ( const int macroIndex, const int _\bl_\be_\bv_\be_\bl, const unsigned long path )\n-261 : macroIndex_( macroIndex ), level_( _\bl_\be_\bv_\be_\bl ), path_( path )\n-262 {}\n-263\n-_\b2_\b6_\b4 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b ( const _\bS_\be_\be_\bd &other ) const\n-265 {\n-266 return (macroIndex() == other._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx()) && (_\bl_\be_\bv_\be_\bl() == other._\bl_\be_\bv_\be_\bl())\n-&& (path() == other._\bp_\ba_\bt_\bh());\n-267 }\n-268\n-_\b2_\b6_\b9 bool operator< ( const _\bS_\be_\be_\bd &other ) const\n-270 {\n-271 const bool ml = (macroIndex() < other._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx());\n-272 const bool me = (macroIndex() == other._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx());\n-273 const bool ll = (_\bl_\be_\bv_\be_\bl() < other._\bl_\be_\bv_\be_\bl());\n-274 const bool le = (_\bl_\be_\bv_\be_\bl() == other._\bl_\be_\bv_\be_\bl());\n-275 const bool pl = (path() < other._\bp_\ba_\bt_\bh());\n-276 return ml | (me & (ll | (le & pl)));\n-277 }\n-278\n-_\b2_\b7_\b9 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b ( const _\bS_\be_\be_\bd &other ) const { return !(*this == other); }\n-_\b2_\b8_\b0 bool operator<= ( const _\bS_\be_\be_\bd &other ) const { return !(other < *this); }\n-_\b2_\b8_\b1 bool operator> ( const _\bS_\be_\be_\bd &other ) const { return (other < *this); }\n-_\b2_\b8_\b2 bool operator>= ( const _\bS_\be_\be_\bd &other ) const { return !(*this < other); }\n-283\n-_\b2_\b8_\b4 bool _\bi_\bs_\bV_\ba_\bl_\bi_\bd ( ) const { return macroIndex_ != -1; }\n-285\n-_\b2_\b8_\b6 int _\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx () const { return macroIndex_; }\n-_\b2_\b8_\b7 int _\bl_\be_\bv_\be_\bl () const { return level_; }\n-_\b2_\b8_\b8 unsigned long _\bp_\ba_\bt_\bh () const { return path_; }\n-289\n-290 private:\n-291 int macroIndex_;\n-292 int level_;\n-293 unsigned long path_;\n-294 };\n-295\n-296\n-297\n-298 // Implementation of ElementInfo\n-299 // -----------------------------\n-300\n-301 template< int dim >\n-302 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const InstancePtr &instance )\n-303 : instance_( instance )\n-304 {\n-305 addReference();\n-306 }\n-307\n-308\n-309 template< int dim >\n-_\b3_\b1_\b0 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ()\n-311 : instance_( null() )\n-312 {\n-313 addReference();\n-314 }\n-315\n-316\n-317 template< int dim >\n-318 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b1_\b9_\b _\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh, const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt ¯oElement,\n-320 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags )\n-321 {\n-322 instance_ = stack().allocate();\n-323 instance_->parent() = null();\n-324 ++(instance_->parent()->refCount);\n-325\n-326 addReference();\n-327\n-328 elInfo().fill_flag = fillFlags;\n-329\n-330 // Alberta fills opp_vertex only if there is a neighbor\n-331 for( int k = 0; k < maxNeighbors; ++k )\n-332 elInfo().opp_vertex[ k ] = -1;\n-333\n-334 fill( mesh, ¯oElement, elInfo() );\n-335 }\n-336\n-337\n-338 template< int dim >\n-339 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b4_\b0_\b _\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh, const _\bS_\be_\be_\bd &seed,\n-341 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags )\n-342 {\n-343 instance_ = stack().allocate();\n-344 instance_->parent() = null();\n-345 ++(instance_->parent()->refCount);\n-346\n-347 addReference();\n-348\n-349 // fill in macro element info\n-350 elInfo().fill_flag = fillFlags;\n-351\n-352 // Alberta fills opp_vertex only if there is a neighbor\n-353 for( int k = 0; k < maxNeighbors; ++k )\n-354 elInfo().opp_vertex[ k ] = -1;\n-355\n-356 fill( mesh, ((_\bM_\be_\bs_\bh *)mesh)->macro_els + seed._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx(), elInfo() );\n-357\n-358 // traverse the seed's path\n-359 unsigned long path = seed._\bp_\ba_\bt_\bh();\n-360 for( int i = 0; i < seed._\bl_\be_\bv_\be_\bl(); ++i )\n-361 {\n-362 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br child = stack().allocate();\n-363 child->_\bp_\ba_\br_\be_\bn_\bt() = instance_;\n-364\n-365 // Alberta fills opp_vertex only if there is a neighbor\n-366 for( int k = 0; k < maxNeighbors; ++k )\n-367 child->_\be_\bl_\bI_\bn_\bf_\bo.opp_vertex[ k ] = -2;\n-368\n-369 fill( path & 1, elInfo(), child->_\be_\bl_\bI_\bn_\bf_\bo );\n-370\n-371 instance_ = child;\n-372 addReference();\n-373\n-374 path = path >> 1;\n-375 }\n-376\n-377 assert( this->seed() == seed );\n-378 }\n-379\n-380\n-381 template< int dim >\n-_\b3_\b8_\b2 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other )\n-383 : instance_( other.instance_ )\n-384 {\n-385 addReference();\n-386 }\n-387\n-388 template< int dim >\n-_\b3_\b8_\b9 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &&other )\n-390 : instance_( NULL )\n-391 {\n-392 using _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp;\n-393 swap( instance_, other.instance_ );\n-394 }\n-395\n-396 template< int dim >\n-_\b3_\b9_\b7 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\b~_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ()\n-398 {\n-399 removeReference();\n-400 }\n-401\n-402\n-403 template< int dim >\n-404 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &\n-_\b4_\b0_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &other )\n-406 {\n-407 other.addReference();\n-408 removeReference();\n-409 instance_ = other.instance_;\n-410 return *this;\n-411 }\n-412\n-413 template< int dim >\n-414 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &\n-_\b4_\b1_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &&other )\n-416 {\n-417 using _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp;\n-418 swap( instance_, other.instance_ );\n-419 return *this;\n-420 }\n-421\n-422 template< int dim >\n-423 inline bool\n-_\b4_\b2_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &other ) const\n-425 {\n-426 return (instance_->elInfo.el == other.instance_->_\be_\bl_\bI_\bn_\bf_\bo.el);\n-427 }\n-428\n-429\n-430 template< int dim >\n-431 inline bool\n-_\b4_\b3_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &other ) const\n-433 {\n-434 return (instance_->elInfo.el != other.instance_->_\be_\bl_\bI_\bn_\bf_\bo.el);\n-435 }\n-436\n-437\n-438 template< int dim >\n-439 inline const typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &\n-_\b4_\b4_\b0 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt () const\n-441 {\n-442 assert( !!(*this) );\n-443 assert( elInfo().macro_el != NULL );\n-444 return static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt & >( *(elInfo().macro_el) );\n-445 }\n-446\n-447\n-448 template< int dim >\n-_\b4_\b4_\b9 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br () const\n-450 {\n-451 assert( !!(*this) );\n-452 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( instance_->parent() );\n-453 }\n-454\n-455\n-456 template< int dim >\n-_\b4_\b5_\b7 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const\n-458 {\n-459 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = elInfo()._\be_\bl;\n-460 const _\bE_\bl_\be_\bm_\be_\bn_\bt *father = elInfo().parent->el;\n-461 assert( father != NULL );\n-462\n-463 const int index = (father->child[ 0 ] == element ? 0 : 1);\n-464 assert( father->child[ index ] == element );\n-465 return index;\n-466 }\n-467\n-468\n-469 template< int dim >\n-_\b4_\b7_\b0 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bh_\bi_\bl_\bd ( int i ) const\n-471 {\n-472 assert( !isLeaf() );\n-473\n-474 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br child = stack().allocate();\n-475 child->_\bp_\ba_\br_\be_\bn_\bt() = instance_;\n-476 addReference();\n-477\n-478 // Alberta fills opp_vertex only if there is a neighbor\n-479 for( int k = 0; k < maxNeighbors; ++k )\n-480 child->_\be_\bl_\bI_\bn_\bf_\bo.opp_vertex[ k ] = -2;\n-481\n-482 fill( i, elInfo(), child->_\be_\bl_\bI_\bn_\bf_\bo );\n-483 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( child );\n-484 }\n-485\n-486\n-487 template< int dim >\n-_\b4_\b8_\b8 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf () const\n-489 {\n-490 assert( !(*this) == false );\n-491 return isLeaf( el() );\n-492 }\n-493\n-494\n-495 template< int dim >\n-_\b4_\b9_\b6 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\be_\be_\bd _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bs_\be_\be_\bd () const\n-497 {\n-498 assert( !!(*this) );\n-499\n-500 int level = 0;\n-501 unsigned long path = 0;\n-502 for( _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br p = instance_; p->_\bp_\ba_\br_\be_\bn_\bt() != null(); p = p->_\bp_\ba_\br_\be_\bn_\bt() )\n-503 {\n-504 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = p->_\be_\bl_\bI_\bn_\bf_\bo.el;\n-505 const _\bE_\bl_\be_\bm_\be_\bn_\bt *father = p->parent()->elInfo.el;\n-506 const unsigned long child = static_cast< unsigned long >( father->child[ 1\n-] == element );\n-507 path = (path << 1) | child;\n-508 ++level;\n-509 }\n-510\n-511 if( level != elInfo().level )\n-512 DUNE_THROW( NotImplemented, \"Seed for fake elements not implemented.\" );\n-513\n-514 return _\bS_\be_\be_\bd( macroElement().index, level, path );\n-515 }\n-516\n-517\n-518 template< int dim >\n-_\b5_\b1_\b9 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\be_\bs_\bh ()\n-const\n-520 {\n-521 return _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br( elInfo().mesh );\n-522 }\n-523\n-524\n-525 template< int dim >\n-_\b5_\b2_\b6 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const\n-527 {\n-528 return mightVanish( el(), 0 );\n-529 }\n-530\n-531\n-532 template< int dim >\n-_\b5_\b3_\b3 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl () const\n-534 {\n-535 return elInfo().level;\n-536 }\n-537\n-538\n-539 template< int dim >\n-_\b5_\b4_\b0 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n-541 {\n-542 return 0;\n-543 }\n-544\n-545\n-546 template<>\n-_\b5_\b4_\b7 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\b3_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n-548 {\n-549 return instance_->elInfo.el_type;\n-550 }\n-551\n-552\n-553 template< int dim >\n-_\b5_\b5_\b4 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk () const\n-555 {\n-556 return el()->mark;\n-557 }\n-558\n-559\n-560 template< int dim >\n-_\b5_\b6_\b1 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bs_\be_\bt_\bM_\ba_\br_\bk ( int refCount ) const\n-562 {\n-563 assert( isLeaf() );\n-564 assert( (refCount >= -128) && (refCount < 127) );\n-565 el()->mark = refCount;\n-566 }\n-567\n-568\n-569 template< int dim >\n-_\b5_\b7_\b0 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bL_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const\n-571 {\n-572 assert( !!(*this) );\n-573 assert( (face >= 0) && (face < maxNeighbors) );\n-574\n-575 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n-576 const int macroFace = elInfo().macro_wall[ face ];\n-577 if( macroFace >= 0 )\n-578 return (macroElement().neighbor( macroFace ) != NULL);\n-579 else\n-580 return true;\n-581 }\n-582\n-583\n-584 template< int dim >\n-_\b5_\b8_\b5 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face\n-) const\n-586 {\n-587 assert( (face >= 0) && (face < numFaces) );\n-588 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo neighbor;\n-589 Library< dimWorld >::leafNeighbor( *this, face, neighbor );\n-590 return neighbor;\n-591 }\n-592\n-593\n-594 template< int dim >\n-595 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b5_\b9_\b6_\b _\b:_\b:_\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo (&neighbor)\n-[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] ) const\n-597 {\n-598 assert( (face >= 0) && (face < numFaces) );\n-599 return Library< dimWorld >::levelNeighbors( *this, face, neighbor,\n-faceInNeighbor );\n-600 }\n-601\n-602\n-603 template< int dim >\n-604 template< int codim >\n-_\b6_\b0_\b5 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt ( int subEntity ) const\n-606 {\n-607 return _\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt( element(), subEntity );\n-608 }\n-609\n-610\n-611 template< int dim >\n-_\b6_\b1_\b2 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const\n-613 {\n-614 assert( neighbor( face ) != NULL );\n-615 return _\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\b1_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt( neighbor( face ), elInfo().opp_vertex\n-[ face ] );\n-616 }\n-617\n-618\n-619 template< int dim >\n-_\b6_\b2_\b0 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( int face ) const\n-621 {\n-622 assert( !!(*this) );\n-623 assert( (face >= 0) && (face < maxNeighbors) );\n-624\n-625 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n-626 const int macroFace = elInfo().macro_wall[ face ];\n-627 if( macroFace >= 0 )\n-628 return macroElement().isBoundary( macroFace );\n-629 else\n-630 return false;\n-631 }\n-632\n-633\n-634 template< int dim >\n-_\b6_\b3_\b5 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int face ) const\n-636 {\n-637 assert( !!(*this) );\n-638 assert( (face >= 0) && (face < N_WALLS_MAX) );\n-639\n-640 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n-641 const int macroFace = elInfo().macro_wall[ face ];\n-642 const int id = macroElement().boundaryId( macroFace );\n-643 // this assertion is only allowed, if FILL_BOUND is set\n-644 // assert( id == elInfo().wall_bound[ face ] );\n-645 return id;\n-646 }\n-647\n-648\n-649 template< int dim >\n-650 inline _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *\n-_\b6_\b5_\b1 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int face ) const\n-652 {\n-653 assert( !!(*this) );\n-654 assert( (face >= 0) && (face < N_WALLS_MAX) );\n-655\n-656 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n-657 const int macroFace = elInfo().macro_wall[ face ];\n-658 return (macroFace < 0 ? NULL : macroElement().wall_trafo[ macroFace ]);\n-659 }\n-660\n-661\n-662 template< int dim >\n-663 inline _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn *\n-_\b6_\b6_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn ( int face ) const\n-665 {\n-666 assert( !!(*this) );\n-667 assert( (face >= 0) && (face < N_WALLS_MAX) );\n-668\n-669 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n-670 const int macroFace = elInfo().macro_wall[ face ];\n-671 if( macroFace >= 0 )\n-672 return static_cast< _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn * >( macroElement().projection\n-[ macroFace+1 ] );\n-673 else\n-674 return 0;\n-675 }\n-676\n-677\n-678 template< int dim >\n-_\b6_\b7_\b9 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs () const\n-680 {\n-681 return ((elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs) != 0);\n-682 }\n-683\n-684 template< int dim >\n-_\b6_\b8_\b5 inline const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int vertex )\n-const\n-686 {\n-687 assert( hasCoordinates() );\n-688 assert( (vertex >= 0) && (vertex < numVertices) );\n-689 return elInfo().coord[ vertex ];\n-690 }\n-691\n-692\n-693 template< int dim >\n-694 template< class Functor >\n-_\b6_\b9_\b5 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor )\n-const\n-696 {\n-697 functor( *this );\n-698 if( !isLeaf() )\n-699 {\n-700 child( 0 ).hierarchicTraverse( functor );\n-701 child( 1 ).hierarchicTraverse( functor );\n-702 }\n-703 }\n-704\n-705\n-706 template< int dim >\n-707 template< class Functor >\n-_\b7_\b0_\b8 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor ) const\n-709 {\n-710 if( !isLeaf() )\n-711 {\n-712 child( 0 ).leafTraverse( functor );\n-713 child( 1 ).leafTraverse( functor );\n-714 }\n-715 else\n-716 functor( *this );\n-717 }\n-718\n-719\n-720 template< int dim >\n-_\b7_\b2_\b1 inline const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt () const\n-722 {\n-723 return elInfo().el;\n-724 }\n-725\n-726\n-727 template< int dim >\n-_\b7_\b2_\b8 inline const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int face ) const\n-729 {\n-730 assert( (face >= 0) && (face < numFaces) );\n-731 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br) != 0 );\n-732 return elInfo().neigh[ face ];\n-733 }\n-734\n-735\n-736 template< int dim >\n-_\b7_\b3_\b7 inline _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl () const\n-738 {\n-739 return elInfo().el;\n-740 }\n-741\n-742\n-743 template< int dim >\n-_\b7_\b4_\b4 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo () const\n-745 {\n-746 return (instance_->elInfo);\n-747 }\n-748\n-749\n-750 template< int dim >\n-751 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b7_\b5_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh,\n-753 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int level, int type )\n-754 {\n-755 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br instance = stack().allocate();\n-756 instance->_\bp_\ba_\br_\be_\bn_\bt() = null();\n-757 ++(instance->_\bp_\ba_\br_\be_\bn_\bt()->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt);\n-758\n-759 instance->_\be_\bl_\bI_\bn_\bf_\bo.mesh = mesh;\n-760 instance->_\be_\bl_\bI_\bn_\bf_\bo.macro_el = NULL;\n-761 instance->_\be_\bl_\bI_\bn_\bf_\bo.el = const_cast< _\bE_\bl_\be_\bm_\be_\bn_\bt * >( element );\n-762 instance->_\be_\bl_\bI_\bn_\bf_\bo.parent = NULL;\n-763 instance->_\be_\bl_\bI_\bn_\bf_\bo.fill_flag = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg;\n-764 instance->_\be_\bl_\bI_\bn_\bf_\bo.level = level;\n-765 instance->_\be_\bl_\bI_\bn_\bf_\bo.el_type = type;\n-766\n-767 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( instance );\n-768 }\n-769\n-770\n-771 template< int dim >\n-772 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b7_\b7_\b3 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n-774 {\n-775 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br instance = stack().allocate();\n-776 instance->_\bp_\ba_\br_\be_\bn_\bt() = null();\n-777 ++(instance->_\bp_\ba_\br_\be_\bn_\bt()->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt);\n-778\n-779 instance->_\be_\bl_\bI_\bn_\bf_\bo = elInfo;\n-780 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( instance );\n-781 }\n-782\n-783\n-784 template< int dim >\n-785 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf ( _\bE_\bl_\be_\bm_\be_\bn_\bt *element )\n-786 {\n-787 return IS_LEAF_EL( element );\n-788 }\n-789\n-790\n-791 template< int dim >\n-792 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh ( _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n-int depth )\n-793 {\n-794 if( isLeaf( element ) )\n-795 return (element->mark < depth);\n-796 else\n-797 return (mightVanish( element->child[ 0 ], depth-1 ) && mightVanish\n-( element->child[ 1 ], depth-1 ));\n-798 }\n-799\n-800\n-801 template< int dim >\n-802 inline void ElementInfo< dim >\n-803 ::fill ( _\bM_\be_\bs_\bh *mesh, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *mel, _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n-804 {\n-805 _\bA_\bL_\bB_\bE_\bR_\bT_\bA fill_macro_info( mesh, mel, &elInfo );\n-806 }\n-807\n-808 template< int dim >\n-809 inline void ElementInfo< dim >\n-810 ::fill ( int ichild, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &parentInfo, _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO\n-&elInfo )\n-811 {\n-812 _\bA_\bL_\bB_\bE_\bR_\bT_\bA fill_elinfo( ichild, FILL_ANY, &parentInfo, &elInfo );\n-813 }\n-814\n-815\n-816 template< int dim >\n-817 inline void ElementInfo< dim >::addReference () const\n-818 {\n-819 ++(instance_->refCount);\n-820 }\n-821\n-822\n-823 template< int dim >\n-824 inline void ElementInfo< dim >::removeReference () const\n-825 {\n-826 // short-circuit for rvalues that have been drained as argument to a move\n-operation\n-827 if ( !instance_ )\n-828 return;\n-829 // this loop breaks when instance becomes null()\n-830 for( InstancePtr instance = instance_; --(instance->refCount) == 0; )\n-831 {\n-832 const InstancePtr parent = instance->parent();\n-833 stack().release( instance );\n-834 instance = parent;\n-835 }\n-836 }\n-837\n-838\n-839 template< int dim >\n-840 inline typename ElementInfo< dim >::InstancePtr\n-841 ElementInfo< dim >::null ()\n-842 {\n-843 return stack().null();\n-844 }\n-845\n-846\n-847 template< int dim >\n-848 inline typename ElementInfo< dim >::Stack &\n-849 ElementInfo< dim >::stack ()\n-850 {\n-851 static Stack s;\n-852 return s;\n-853 }\n-854\n-855\n-856\n-857 // Implementation of ElementInfo::Stack\n-858 // ------------------------------------\n-859\n-860 template< int dim >\n-_\b8_\b6_\b1 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bS_\bt_\ba_\bc_\bk ()\n-862 : top_( 0 )\n-863 {\n-864 null_._\be_\bl_\bI_\bn_\bf_\bo.el = NULL;\n-865 null_._\br_\be_\bf_\bC_\bo_\bu_\bn_\bt = 1;\n-866 null_._\bp_\ba_\br_\be_\bn_\bt() = 0;\n-867 }\n-868\n-869\n-870 template< int dim >\n-_\b8_\b7_\b1 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\b~_\bS_\bt_\ba_\bc_\bk ()\n-872 {\n-873 while( top_ != 0 )\n-874 {\n-875 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br p = top_;\n-876 top_ = p->_\bp_\ba_\br_\be_\bn_\bt();\n-877 delete p;\n-878 }\n-879 }\n-880\n-881\n-882 template< int dim >\n-883 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br\n-_\b8_\b8_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be ()\n-885 {\n-886 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br p = top_;\n-887 if( p != 0 )\n-888 top_ = p->_\bp_\ba_\br_\be_\bn_\bt();\n-889 else\n-890 p = new _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be;\n-891 p->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt = 0;\n-892 return p;\n-893 }\n-894\n-895\n-896 template< int dim >\n-_\b8_\b9_\b7 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be ( _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br &p )\n-898 {\n-899 assert( (p != null()) && (p->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt == 0) );\n-900 p->_\bp_\ba_\br_\be_\bn_\bt() = top_;\n-901 top_ = p;\n-902 }\n-903\n-904\n-905 template< int dim >\n-906 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br\n-_\b9_\b0_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bn_\bu_\bl_\bl ()\n-908 {\n-909 return &null_;\n-910 }\n-911\n-912 } // namespace Alberta\n-913\n-914} // namespace Dune\n-915\n-916#endif // #if HAVE_ALBERTA\n-917\n-918#endif // #ifndef DUNE_ALBERTA_ELEMENTINFO_HH\n-_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n-_\bm_\ba_\bc_\br_\bo_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n-_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n-> &b)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n+_\b3_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n+36 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n+37 {}\n+38\n+_\b4_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+41 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *vec,\n+42 int _\bl_\be_\bv_\be_\bl )\n+43 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, vec, _\bl_\be_\bv_\be_\bl )\n+44 {}\n+45\n+_\b4_\b7 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+48 {\n+49 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+50 }\n+51 };\n+52\n+53\n+54 template< int codim, class GridImp >\n+_\b5_\b5 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn, GridImp >\n+56 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, false >\n+57 {\n+58 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+59 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b> _\bB_\ba_\bs_\be;\n+60\n+61 public:\n+_\b6_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b6_\b3 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n+64\n+_\b6_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+66 {}\n+67\n+_\b6_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n+70 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n+71 {}\n+72\n+_\b7_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+75 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *,\n+76 int _\bl_\be_\bv_\be_\bl )\n+77 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n+78 {}\n+79\n+_\b8_\b1 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+82 {\n+83 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+84 }\n+85 };\n+86}\n+87\n+88#endif // #if HAVE_ALBERTA\n+89\n+90#endif // #ifndef DUNE_ALBERTA_LEVELITERATOR_HH\n+_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+@ Ghost_Partition\n+only ghost entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:142\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n-ALBERTA MESH Mesh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-ALBERTA AFF_TRAFO AffineTransformation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ALBERTA EL Element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n-ElementInfo leafNeighbor(const int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:585\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-bool isLeaf() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:488\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be\n-static ElementInfo createFake(const MeshPointer &mesh, const Element *element,\n-int level, int type=0)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:752\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n-ElementInfo child(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:470\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n int level() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:533\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh\n-bool mightVanish() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:526\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs\n-static const int numFaces\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-int twist(int subEntity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:605\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n-int twistInNeighbor(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:612\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Alberta::MacroElement< dimension > MacroElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-BasicNodeProjection * boundaryProjection(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:664\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-const MacroElement & macroElement() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:440\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n-static const int maxLevelNeighbors\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n-ElementInfo father() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:449\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo(const ElementInfo &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:382\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-GeometryCacheProxy< dim > GeometryCache\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-ElementInfo & operator=(const ElementInfo &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:405\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\ba_\bs_\bL_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n-bool hasLeafNeighbor(const int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:570\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(const ElementInfo &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:424\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\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 elementinfo.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void hierarchicTraverse(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:695\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n-int type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:540\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\ba_\bx_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n-static const int maxNeighbors\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\be_\bt_\bM_\ba_\br_\bk\n-void setMark(int refCount) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:561\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\b~_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-~ElementInfo()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:397\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-const GlobalVector & coordinate(int vertex) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:685\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-static const int numVertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk\n-int getMark() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:554\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void leafTraverse(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:708\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-Alberta::MeshPointer< dimension > MeshPointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-const Element * neighbor(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:728\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be\n-static ElementInfo createFake(const ALBERTA EL_INFO &elInfo)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:773\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:635\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n-bool operator!=(const ElementInfo &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:432\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-Alberta::FillFlags< dimension > FillFlags\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo(const MeshPointer &mesh, const MacroElement ¯oElement, typename\n-FillFlags::Flags fillFlags=FillFlags::standard)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-AffineTransformation * transformation(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:651\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool isBoundary(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:620\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n-int indexInFather() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:457\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\be_\be_\bd\n-Seed seed() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:496\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n-Element * el() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n-const Element * element() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:721\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo\n-ALBERTA EL_INFO & elInfo() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:744\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\be_\bs_\bh\n-MeshPointer mesh() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:519\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-GeometryCache geometryCache() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\ba_\bs_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-bool hasCoordinates() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:679\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n-int levelNeighbors(const int face, ElementInfo(&neighbor)[maxLevelNeighbors],\n-int(&faceInNeighbor)[maxLevelNeighbors]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:596\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo(ElementInfo &&other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:389\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo(const MeshPointer &mesh, const Seed &seed, typename FillFlags::\n-Flags fillFlags=FillFlags::standard)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:340\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\bp_\ba_\br_\be_\bn_\bt\n-InstancePtr & parent()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-Alberta::GeometryCache< dim > geometryCache\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo\n-ALBERTA EL_INFO elInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt\n-unsigned int refCount\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bn_\bu_\bl_\bl\n-InstancePtr null()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:907\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\b~_\bS_\bt_\ba_\bc_\bk\n-~Stack()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:871\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release(InstancePtr &p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:897\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bS_\bt_\ba_\bc_\bk\n-Stack()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:861\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-InstancePtr allocate()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:884\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bS_\be_\be_\bd\n-Seed(const int macroIndex, const int level, const unsigned long path)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:260\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bS_\be_\be_\bd\n-Seed()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bi_\bs_\bV_\ba_\bl_\bi_\bd\n-bool isValid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:284\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bp_\ba_\bt_\bh\n-unsigned long path() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:288\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx\n-int macroIndex() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:286\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n-static const Flags nothing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-static const Flags boundaryId\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n-ALBERTA FLAGS Flags\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs\n-static const Flags coords\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd\n-static const Flags standard\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:258\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-static const Flags neighbor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-static int twist(const Element *element, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:538\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:208\n+ask for level of entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n+const GridImp & grid() const\n+obtain a reference to the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+Base::MarkerVector MarkerVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLevelIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *vec, int\n+level)\n+Constructor making begin iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Base::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLevelIterator(const GridImp &grid, int level)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment the iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLevelIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment the iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Base::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+Base::MarkerVector MarkerVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLevelIterator(const GridImp &grid, int level)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *, int level)\n+Constructor making begin iterator (which is the end iterator in this case)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+marker assigning subentities to one element containing them\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.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-grid-doc/doxygen/a00617.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00617.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordcache.hh File Reference\n+dune-grid: misc.hh File Reference\n \n \n \n \n \n \n \n@@ -71,41 +71,187 @@\n \n
    \n
    \n
    \n \n-
    coordcache.hh File Reference
    \n+Namespaces |\n+Macros |\n+Typedefs |\n+Functions |\n+Variables
    \n+
    misc.hh File Reference
    \n \n
    \n-
    #include <dune/grid/albertagrid/meshpointer.hh>
    \n-#include <dune/grid/albertagrid/dofadmin.hh>
    \n-#include <dune/grid/albertagrid/dofvector.hh>
    \n+
    #include <cassert>
    \n+#include <utility>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/hybridutilities.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/grid/albertagrid/albertaheader.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::Alberta::CoordCache< dim >
    class  Dune::AlbertaError
     
    class  Dune::Alberta::CoordCache< dim >::LocalCaching
    class  Dune::AlbertaIOError
     
    struct  Dune::Alberta::CoordCache< dim >::Interpolation
    class  Dune::Alberta::GlobalSpace
     
    struct  Dune::Alberta::NumSubEntities< dim, 0 >
     
    struct  Dune::Alberta::NumSubEntities< dim, dim >
     
    struct  Dune::Alberta::NumSubEntities< 0, 0 >
     
    struct  Dune::Alberta::NumSubEntities< 2, 1 >
     
    struct  Dune::Alberta::NumSubEntities< 3, 1 >
     
    struct  Dune::Alberta::NumSubEntities< 3, 2 >
     
    struct  Dune::Alberta::CodimType< dim, 0 >
     
    struct  Dune::Alberta::CodimType< dim, dim >
     
    struct  Dune::Alberta::CodimType< 2, 1 >
     
    struct  Dune::Alberta::CodimType< 3, 1 >
     
    struct  Dune::Alberta::CodimType< 3, 2 >
     
    struct  Dune::Alberta::FillFlags< dim >
     
    struct  Dune::Alberta::RefinementEdge< dim >
     
    struct  Dune::Alberta::RefinementEdge< 2 >
     
    struct  Dune::Alberta::Dune2AlbertaNumbering< dim, codim >
     
    struct  Dune::Alberta::Dune2AlbertaNumbering< 3, 2 >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< dim, codim >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< dim, 1 >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< 1, 1 >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< 3, 2 >
     
    class  Dune::Alberta::NumberingMap< dim, Numbering >
     
    struct  Dune::Alberta::MapVertices< dim, 0 >
     
    struct  Dune::Alberta::MapVertices< 2, 1 >
     
    struct  Dune::Alberta::MapVertices< 3, 1 >
     
    struct  Dune::Alberta::MapVertices< 3, 2 >
     
    struct  Dune::Alberta::MapVertices< dim, dim >
     
    struct  Dune::Alberta::Twist< dim, subdim >
     
    struct  Dune::Alberta::Twist< dim, 1 >
     
    struct  Dune::Alberta::Twist< 1, 1 >
     
    struct  Dune::Alberta::Twist< dim, 2 >
     
    struct  Dune::Alberta::Twist< 2, 2 >
     
    \n \n \n \n \n \n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n+\n+\n+\n+

    \n+Macros

    #define DUNE_ALBERTA_CACHE_COORDINATES   1
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Typedefs

    typedef ALBERTA REAL Dune::Alberta::Real
     
    typedef ALBERTA REAL_B Dune::Alberta::LocalVector
     
    typedef ALBERTA REAL_D Dune::Alberta::GlobalVector
     
    typedef ALBERTA REAL_DD Dune::Alberta::GlobalMatrix
     
    typedef ALBERTA AFF_TRAFO Dune::Alberta::AffineTransformation
     
    typedef ALBERTA MESH Dune::Alberta::Mesh
     
    typedef ALBERTA EL Dune::Alberta::Element
     
    typedef ALBERTA BNDRY_TYPE Dune::Alberta::BoundaryId
     
    typedef U_CHAR Dune::Alberta::ElementType
     
    typedef ALBERTA FE_SPACE Dune::Alberta::DofSpace
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Functions

    template<class Data >
    Data * Dune::Alberta::memAlloc (size_t size)
     
    template<class Data >
    Data * Dune::Alberta::memCAlloc (size_t size)
     
    template<class Data >
    Data * Dune::Alberta::memReAlloc (Data *ptr, size_t oldSize, size_t newSize)
     
    template<class Data >
    void Dune::Alberta::memFree (Data *ptr, size_t size)
     
    template<int dim>
    int Dune::Alberta::applyTwist (int twist, int i)
     
    template<int dim>
    int Dune::Alberta::applyInverseTwist (int twist, int i)
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Variables

    static const int Dune::Alberta::dimWorld = DIM_OF_WORLD
     
    static const int Dune::Alberta::meshRefined = MESH_REFINED
     
    static const int Dune::Alberta::meshCoarsened = MESH_COARSENED
     
    static const int Dune::Alberta::InteriorBoundary = INTERIOR
     
    static const int Dune::Alberta::DirichletBoundary = DIRICHLET
     
    \n+

    Macro Definition Documentation

    \n+\n+

    ◆ DUNE_ALBERTA_CACHE_COORDINATES

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define DUNE_ALBERTA_CACHE_COORDINATES   1
    \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,28 +1,150 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-coordcache.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs\n+misc.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bE_\br_\br_\bo_\br\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bI_\bO_\bE_\br_\br_\bo_\br\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b0_\b,_\b _\b0_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be_\b<_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b1_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\b,_\b _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bu_\bb_\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b1_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b2_\b,_\b _\b2_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n \u00a0\n+M\bMa\bac\bcr\bro\bos\bs\n+#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bC_\bA_\bC_\bH_\bE_\b__\bC_\bO_\bO_\bR_\bD_\bI_\bN_\bA_\bT_\bE_\bS\u00a0\u00a0\u00a01\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_B\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_D\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_DD\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA AFF_TRAFO\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA MESH\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n+\u00a0\n+typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA BNDRY_TYPE\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+\u00a0\n+ typedef U_CHAR\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+\u00a0\n+ typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA FE_SPACE\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+Data *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bA_\bl_\bl_\bo_\bc (size_t size)\n+\u00a0\n+template\n+Data *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bC_\bA_\bl_\bl_\bo_\bc (size_t size)\n+\u00a0\n+template\n+Data *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc (Data *ptr, size_t oldSize, size_t newSize)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bF_\br_\be_\be (Data *ptr, size_t size)\n+\u00a0\n+template\n+ int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bw_\bi_\bs_\bt (int twist, int i)\n+\u00a0\n+template\n+ int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt (int twist, int i)\n+\u00a0\n+V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n+static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd = _\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD\n+\u00a0\n+static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd = MESH_REFINED\n+\u00a0\n+static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd = MESH_COARSENED\n+\u00a0\n+static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = INTERIOR\n+\u00a0\n+static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = DIRICHLET\n+\u00a0\n+*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_C\bCA\bAC\bCH\bHE\bE_\b_C\bCO\bOO\bOR\bRD\bDI\bIN\bNA\bAT\bTE\bES\bS *\b**\b**\b**\b**\b*\n+#define DUNE_ALBERTA_CACHE_COORDINATES\u00a0\u00a0\u00a01\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00617_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00617_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordcache.hh Source File\n+dune-grid: misc.hh Source File\n \n \n \n \n \n \n \n@@ -74,225 +74,870 @@\n \n \n
    \n
    \n-
    coordcache.hh
    \n+
    misc.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_COORDCACHE_HH
    \n-
    6#define DUNE_ALBERTA_COORDCACHE_HH
    \n+
    5#ifndef DUNE_ALBERTA_MISC_HH
    \n+
    6#define DUNE_ALBERTA_MISC_HH
    \n
    7
    \n-\n-\n-\n-
    11
    \n-
    12#if HAVE_ALBERTA
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n+
    8#include <cassert>
    \n+
    9#include <utility>
    \n+
    10
    \n+
    11#include <dune/common/exceptions.hh>
    \n+
    12#include <dune/common/hybridutilities.hh>
    \n+
    13#include <dune/common/typetraits.hh>
    \n+
    14
    \n+\n
    16
    \n-
    17 namespace Alberta
    \n-
    18 {
    \n-
    19
    \n-
    20 // CoordCache
    \n-
    21 // ----------
    \n-
    22
    \n-
    23 template< int dim >
    \n-
    \n-\n-
    25 {
    \n-\n-\n-
    28
    \n-
    29 class LocalCaching;
    \n-
    30 struct Interpolation;
    \n-
    31
    \n-
    32 public:
    \n-
    33 static const int dimension = dim;
    \n-
    34
    \n-\n-\n-\n-
    38
    \n-
    \n-
    39 GlobalVector &operator() ( const Element *element, int vertex ) const
    \n-
    40 {
    \n-
    41 assert( !(!coords_) );
    \n-
    42 GlobalVector *array = (GlobalVector *)coords_;
    \n-
    43 return array[ dofAccess_( element, vertex ) ];
    \n-
    44 }
    \n+
    17#if HAVE_ALBERTA
    \n+
    18
    \n+
    19// should the coordinates be cached in a vector (required for ALBERTA 2.0)?
    \n+
    20#ifndef DUNE_ALBERTA_CACHE_COORDINATES
    \n+
    21#define DUNE_ALBERTA_CACHE_COORDINATES 1
    \n+
    22#endif
    \n+
    23
    \n+
    24namespace Dune
    \n+
    25{
    \n+
    26
    \n+
    27 // Exceptions
    \n+
    28 // ----------
    \n+
    29
    \n+
    \n+\n+
    31 : public Exception
    \n+
    32 {};
    \n+
    \n+
    33
    \n+
    \n+\n+
    35 : public IOError
    \n+
    36 {};
    \n
    \n+
    37
    \n+
    38
    \n+
    39
    \n+
    40 namespace Alberta
    \n+
    41 {
    \n+
    42
    \n+
    43 // Import Types
    \n+
    44 // ------------
    \n
    45
    \n-
    \n-
    46 GlobalVector &operator() ( const ElementInfo &elementInfo, int vertex ) const
    \n-
    47 {
    \n-
    48 return (*this)( elementInfo.el(), vertex );
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    51 void create ( const DofNumbering &dofNumbering )
    \n-
    52 {
    \n-
    53 MeshPointer mesh = dofNumbering.mesh();
    \n-
    54 const DofSpace *dofSpace = dofNumbering.dofSpace( dimension );
    \n+
    46 static const int dimWorld = DIM_OF_WORLD;
    \n+
    47
    \n+
    48 typedef ALBERTA REAL Real;
    \n+
    49 typedef ALBERTA REAL_B LocalVector; // in barycentric coordinates
    \n+
    50 typedef ALBERTA REAL_D GlobalVector;
    \n+
    51 typedef ALBERTA REAL_DD GlobalMatrix;
    \n+
    52 typedef ALBERTA AFF_TRAFO AffineTransformation;
    \n+
    53 typedef ALBERTA MESH Mesh;
    \n+
    54 typedef ALBERTA EL Element;
    \n
    55
    \n-
    56 coords_.create( dofSpace, "Coordinate Cache" );
    \n-
    57 LocalCaching localCaching( coords_ );
    \n-\n-
    59 coords_.template setupInterpolation< Interpolation >();
    \n-
    60
    \n-
    61 dofAccess_ = DofAccess( dofSpace );
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    64 void release ()
    \n-
    65 {
    \n-
    66 coords_.release();
    \n-
    67 }
    \n-
    \n+
    56 static const int meshRefined = MESH_REFINED;
    \n+
    57 static const int meshCoarsened = MESH_COARSENED;
    \n+
    58
    \n+
    59 static const int InteriorBoundary = INTERIOR;
    \n+
    60 static const int DirichletBoundary = DIRICHLET;
    \n+
    61 typedef ALBERTA BNDRY_TYPE BoundaryId;
    \n+
    62
    \n+
    63 typedef U_CHAR ElementType;
    \n+
    64
    \n+
    65 typedef ALBERTA FE_SPACE DofSpace;
    \n+
    66
    \n+
    67
    \n
    68
    \n-
    69 private:
    \n-
    70 CoordVectorPointer coords_;
    \n-
    71 DofAccess dofAccess_;
    \n-
    72 };
    \n-
    \n-
    73
    \n-
    74
    \n-
    75
    \n-
    76 // CoordCache::LocalCaching
    \n-
    77 // ------------------------
    \n-
    78
    \n-
    79 template< int dim >
    \n-
    \n-\n-
    81 {
    \n-
    82 CoordVectorPointer coords_;
    \n-
    83 DofAccess dofAccess_;
    \n-
    84
    \n-
    85 public:
    \n-
    \n-
    86 explicit LocalCaching ( const CoordVectorPointer &coords )
    \n-
    87 : coords_( coords ),
    \n-
    88 dofAccess_( coords.dofSpace() )
    \n-
    89 {}
    \n+
    69 // Memory Manipulation Functions
    \n+
    70 // -----------------------------
    \n+
    71
    \n+
    72 template< class Data >
    \n+
    \n+
    73 inline Data *memAlloc ( size_t size )
    \n+
    74 {
    \n+
    75 return MEM_ALLOC( size, Data );
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    78 template< class Data >
    \n+
    \n+
    79 inline Data *memCAlloc ( size_t size )
    \n+
    80 {
    \n+
    81 return MEM_CALLOC( size, Data );
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    84 template< class Data >
    \n+
    \n+
    85 inline Data *memReAlloc ( Data *ptr, size_t oldSize, size_t newSize )
    \n+
    86 {
    \n+
    87 return MEM_REALLOC( ptr, oldSize, newSize, Data );
    \n+
    88 }
    \n
    \n-
    90
    \n+
    89
    \n+
    90 template< class Data >
    \n
    \n-
    91 void operator() ( const ElementInfo &elementInfo ) const
    \n-
    92 {
    \n-
    93 GlobalVector *array = (GlobalVector *)coords_;
    \n-
    94 for( int i = 0; i < DofAccess::numSubEntities; ++i )
    \n-
    95 {
    \n-
    96 const GlobalVector &x = elementInfo.coordinate( i );
    \n-
    97 GlobalVector &y = array[ dofAccess_( elementInfo.el(), i ) ];
    \n-
    98 for( int i = 0; i < dimWorld; ++i )
    \n-
    99 y[ i ] = x[ i ];
    \n-
    100 }
    \n-
    101 }
    \n-
    \n-
    102 };
    \n-
    \n-
    103
    \n+
    91 inline void memFree ( Data *ptr, size_t size )
    \n+
    92 {
    \n+
    93 return MEM_FREE( ptr, size, Data );
    \n+
    94 }
    \n+
    \n+
    95
    \n+
    96
    \n+
    97
    \n+
    98 // GlobalSpace
    \n+
    99 // -----------
    \n+
    100
    \n+
    \n+\n+
    102 {
    \n+
    103 typedef GlobalSpace This;
    \n
    104
    \n-
    105
    \n-
    106 // CoordCache::Interpolation
    \n-
    107 // -------------------------
    \n+
    105 public:
    \n+\n+\n
    108
    \n-
    109 template< int dim >
    \n-
    \n-\n-
    111 {
    \n-
    112 static const int dimension = dim;
    \n-
    113
    \n-\n-
    115
    \n-
    116 static void
    \n-
    \n-
    117 interpolateVector ( const CoordVectorPointer &dofVector, const Patch &patch )
    \n-
    118 {
    \n-
    119 DofAccess dofAccess( dofVector.dofSpace() );
    \n-
    120 GlobalVector *array = (GlobalVector *)dofVector;
    \n-
    121
    \n-
    122 const Element *element = patch[ 0 ];
    \n+
    109 private:
    \n+
    110 Matrix identityMatrix_;
    \n+
    111 Vector nullVector_;
    \n+
    112
    \n+
    113 GlobalSpace ()
    \n+
    114 {
    \n+
    115 for( int i = 0; i < dimWorld; ++i )
    \n+
    116 {
    \n+
    117 for( int j = 0; j < dimWorld; ++j )
    \n+
    118 identityMatrix_[ i ][ j ] = Real( 0 );
    \n+
    119 identityMatrix_[ i ][ i ] = Real( 1 );
    \n+
    120 nullVector_[ i ] = Real( 0 );
    \n+
    121 }
    \n+
    122 }
    \n
    123
    \n-
    124 // new vertex is always the last one
    \n-
    125 assert( element->child[ 0 ] != NULL );
    \n-
    126 GlobalVector &newCoord = array[ dofAccess( element->child[ 0 ], dimension ) ];
    \n-
    127
    \n-
    128 if( element->new_coord != NULL )
    \n-
    129 {
    \n-
    130 for( int j = 0; j < dimWorld; ++j )
    \n-
    131 newCoord[ j ] = element->new_coord[ j ];
    \n-
    132 }
    \n-
    133 else
    \n-
    134 {
    \n-
    135 // new coordinate is the average of of old ones on the same edge
    \n-
    136 // refinement edge is always between vertices 0 and 1
    \n-
    137 const GlobalVector &coord0 = array[ dofAccess( element, 0 ) ];
    \n-
    138 const GlobalVector &coord1 = array[ dofAccess( element, 1 ) ];
    \n-
    139 for( int j = 0; j < dimWorld; ++j )
    \n-
    140 newCoord[ j ] = 0.5 * (coord0[ j ] + coord1[ j ]);
    \n-
    141 }
    \n-
    142 }
    \n-
    \n-
    143 };
    \n-
    \n-
    144
    \n-
    145 }
    \n+
    124 static This &instance ()
    \n+
    125 {
    \n+
    126 static This theInstance;
    \n+
    127 return theInstance;
    \n+
    128 }
    \n+
    129
    \n+
    130 public:
    \n+
    \n+
    131 static const Matrix &identityMatrix ()
    \n+
    132 {
    \n+
    133 return instance().identityMatrix_;
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    \n+
    136 static const Vector &nullVector ()
    \n+
    137 {
    \n+
    138 return instance().nullVector_;
    \n+
    139 }
    \n+
    \n+
    140 };
    \n+
    \n+
    141
    \n+
    142
    \n+
    143
    \n+
    144 // NumSubEntities
    \n+
    145 // --------------
    \n
    146
    \n-
    147}
    \n-
    148
    \n-
    149#endif // #if HAVE_ALBERTA
    \n-
    150
    \n-
    151#endif // #ifndef DUNE_ALBERTA_COORDCACHE_HH
    \n-
    provides a wrapper for ALBERTA's mesh structure
    \n-\n-\n+
    147 template< int dim, int codim >
    \n+\n+
    149
    \n+
    150 template< int dim >
    \n+
    \n+
    151 struct NumSubEntities< dim, 0 >
    \n+
    152 {
    \n+
    153 static const int value = 1;
    \n+
    154 };
    \n+
    \n+
    155
    \n+
    156 template< int dim >
    \n+
    \n+
    157 struct NumSubEntities< dim, dim >
    \n+
    158 {
    \n+
    159 static const int value = dim+1;
    \n+
    160 };
    \n+
    \n+
    161
    \n+
    162 template<>
    \n+
    \n+
    163 struct NumSubEntities< 0, 0 >
    \n+
    164 {
    \n+
    165 static const int value = 1;
    \n+
    166 };
    \n+
    \n+
    167
    \n+
    168 template<>
    \n+
    \n+
    169 struct NumSubEntities< 2, 1 >
    \n+
    170 {
    \n+
    171 static const int value = 3;
    \n+
    172 };
    \n+
    \n+
    173
    \n+
    174 template<>
    \n+
    \n+
    175 struct NumSubEntities< 3, 1 >
    \n+
    176 {
    \n+
    177 static const int value = 4;
    \n+
    178 };
    \n+
    \n+
    179
    \n+
    180 template<>
    \n+
    \n+
    181 struct NumSubEntities< 3, 2 >
    \n+
    182 {
    \n+
    183 static const int value = 6;
    \n+
    184 };
    \n+
    \n+
    185
    \n+
    186
    \n+
    187
    \n+
    188 // CodimType
    \n+
    189 // ---------
    \n+
    190
    \n+
    191 template< int dim, int codim >
    \n+
    192 struct CodimType;
    \n+
    193
    \n+
    194 template< int dim >
    \n+
    \n+
    195 struct CodimType< dim, 0 >
    \n+
    196 {
    \n+
    197 static const int value = CENTER;
    \n+
    198 };
    \n+
    \n+
    199
    \n+
    200 template< int dim >
    \n+
    \n+
    201 struct CodimType< dim, dim >
    \n+
    202 {
    \n+
    203 static const int value = VERTEX;
    \n+
    204 };
    \n+
    \n+
    205
    \n+
    206 template<>
    \n+
    \n+
    207 struct CodimType< 2, 1 >
    \n+
    208 {
    \n+
    209 static const int value = EDGE;
    \n+
    210 };
    \n+
    \n+
    211
    \n+
    212 template<>
    \n+
    \n+
    213 struct CodimType< 3, 1 >
    \n+
    214 {
    \n+
    215 static const int value = FACE;
    \n+
    216 };
    \n+
    \n+
    217
    \n+
    218 template<>
    \n+
    \n+
    219 struct CodimType< 3, 2 >
    \n+
    220 {
    \n+
    221 static const int value = EDGE;
    \n+
    222 };
    \n+
    \n+
    223
    \n+
    224
    \n+
    225
    \n+
    226 // FillFlags
    \n+
    227 // ---------
    \n+
    228
    \n+
    229 template< int dim >
    \n+
    \n+\n+
    231 {
    \n+
    232 typedef ALBERTA FLAGS Flags;
    \n+
    233
    \n+
    234 static const Flags nothing = FILL_NOTHING;
    \n+
    235
    \n+
    236 static const Flags coords = FILL_COORDS;
    \n+
    237
    \n+
    238 static const Flags neighbor = FILL_NEIGH;
    \n+
    239
    \n+
    240 static const Flags orientation = (dim == 3 ? FILL_ORIENTATION : FILL_NOTHING);
    \n+
    241
    \n+
    242 static const Flags projection = FILL_PROJECTION;
    \n+
    243
    \n+
    244 static const Flags elementType = FILL_NOTHING;
    \n+
    245
    \n+
    246 static const Flags boundaryId = FILL_MACRO_WALLS;
    \n+
    247
    \n+
    248 static const Flags nonPeriodic = FILL_NON_PERIODIC;
    \n+
    249
    \n+\n+\n+
    252
    \n+
    253 static const Flags standardWithCoords = all & ~nonPeriodic & ~projection;
    \n+
    254
    \n+
    255#if DUNE_ALBERTA_CACHE_COORDINATES
    \n+
    256 static const Flags standard = standardWithCoords & ~coords;
    \n+
    257#else
    \n+\n+
    259#endif
    \n+
    260 };
    \n+
    \n+
    261
    \n+
    262
    \n+
    263
    \n+
    264 // RefinementEdge
    \n+
    265 // --------------
    \n+
    266
    \n+
    267 template< int dim >
    \n+
    \n+\n+
    269 {
    \n+
    270 static const int value = 0;
    \n+
    271 };
    \n+
    \n+
    272
    \n+
    273 template<>
    \n+
    \n+
    274 struct RefinementEdge< 2 >
    \n+
    275 {
    \n+
    276 static const int value = 2;
    \n+
    277 };
    \n+
    \n+
    278
    \n+
    279
    \n+
    280
    \n+
    281 // Dune2AlbertaNumbering
    \n+
    282 // ---------------------
    \n+
    283
    \n+
    284 template< int dim, int codim >
    \n+
    \n+\n+
    286 {
    \n+
    \n+
    287 static int apply ( const int i )
    \n+
    288 {
    \n+
    289 assert( (i >= 0) && (i < NumSubEntities< dim, codim >::value) );
    \n+
    290 return i;
    \n+
    291 }
    \n+
    \n+
    292 };
    \n+
    \n+
    293
    \n+
    294 template<>
    \n+
    \n+\n+
    296 {
    \n+
    297 static const int numSubEntities = NumSubEntities< 3, 2 >::value;
    \n+
    298
    \n+
    \n+
    299 static int apply ( const int i )
    \n+
    300 {
    \n+
    301 assert( (i >= 0) && (i < numSubEntities) );
    \n+
    302 static int dune2alberta[ numSubEntities ] = { 0, 3, 1, 2, 4, 5 };
    \n+
    303 return dune2alberta[ i ];
    \n+
    304 }
    \n+
    \n+
    305 };
    \n+
    \n+
    306
    \n+
    307
    \n+
    308
    \n+
    309 // Generic2AlbertaNumbering
    \n+
    310 // ------------------------
    \n+
    311
    \n+
    312 template< int dim, int codim >
    \n+
    \n+\n+
    314 {
    \n+
    \n+
    315 static int apply ( const int i )
    \n+
    316 {
    \n+
    317 assert( (i >= 0) && (i < NumSubEntities< dim, codim >::value) );
    \n+
    318 return i;
    \n+
    319 }
    \n+
    \n+
    320 };
    \n+
    \n+
    321
    \n+
    322 template< int dim >
    \n+
    \n+\n+
    324 {
    \n+
    \n+
    325 static int apply ( const int i )
    \n+
    326 {
    \n+
    327 assert( (i >= 0) && (i < NumSubEntities< dim, 1 >::value) );
    \n+
    328 return dim - i;
    \n+
    329 }
    \n+
    \n+
    330 };
    \n+
    \n+
    331
    \n+
    332 template<>
    \n+
    \n+\n+
    334 {
    \n+
    \n+
    335 static int apply ( const int i )
    \n+
    336 {
    \n+
    337 assert( (i >= 0) && (i < NumSubEntities< 1, 1 >::value) );
    \n+
    338 return i;
    \n+
    339 }
    \n+
    \n+
    340 };
    \n+
    \n+
    341
    \n+
    342 template<>
    \n+
    \n+\n+
    344 {
    \n+
    345 static const int numSubEntities = NumSubEntities< 3, 2 >::value;
    \n+
    346
    \n+
    \n+
    347 static int apply ( const int i )
    \n+
    348 {
    \n+
    349 assert( (i >= 0) && (i < numSubEntities) );
    \n+
    350 static int generic2alberta[ numSubEntities ] = { 0, 1, 3, 2, 4, 5 };
    \n+
    351 return generic2alberta[ i ];
    \n+
    352 }
    \n+
    \n+
    353 };
    \n+
    \n+
    354
    \n+
    355
    \n+
    356
    \n+
    357 // NumberingMap
    \n+
    358 // ------------
    \n+
    359
    \n+
    360 template< int dim, template< int, int > class Numbering = Generic2AlbertaNumbering >
    \n+
    \n+\n+
    362 {
    \n+\n+
    364
    \n+
    365 template< int codim >
    \n+
    366 struct Initialize;
    \n+
    367
    \n+
    368 int *dune2alberta_[ dim+1 ];
    \n+
    369 int *alberta2dune_[ dim+1 ];
    \n+
    370 int numSubEntities_[ dim+1 ];
    \n+
    371
    \n+
    372 NumberingMap ( const This & );
    \n+
    373 This &operator= ( const This & );
    \n+
    374
    \n+
    375 public:
    \n+
    \n+\n+
    377 {
    \n+
    378 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ Initialize< i >::apply( *this ); } );
    \n+
    379 }
    \n+
    \n+
    380
    \n+
    \n+\n+
    382 {
    \n+
    383 for( int codim = 0; codim <= dim; ++codim )
    \n+
    384 {
    \n+
    385 delete[]( dune2alberta_[ codim ] );
    \n+
    386 delete[]( alberta2dune_[ codim ] );
    \n+
    387 }
    \n+
    388 }
    \n+
    \n+
    389
    \n+
    \n+
    390 int dune2alberta ( int codim, int i ) const
    \n+
    391 {
    \n+
    392 assert( (codim >= 0) && (codim <= dim) );
    \n+
    393 assert( (i >= 0) && (i < numSubEntities( codim )) );
    \n+
    394 return dune2alberta_[ codim ][ i ];
    \n+
    395 }
    \n+
    \n+
    396
    \n+
    \n+
    397 int alberta2dune ( int codim, int i ) const
    \n+
    398 {
    \n+
    399 assert( (codim >= 0) && (codim <= dim) );
    \n+
    400 assert( (i >= 0) && (i < numSubEntities( codim )) );
    \n+
    401 return alberta2dune_[ codim ][ i ];
    \n+
    402 }
    \n+
    \n+
    403
    \n+
    \n+
    404 int numSubEntities ( int codim ) const
    \n+
    405 {
    \n+
    406 assert( (codim >= 0) && (codim <= dim) );
    \n+
    407 return numSubEntities_[ codim ];
    \n+
    408 }
    \n+
    \n+
    409 };
    \n+
    \n+
    410
    \n+
    411
    \n+
    412
    \n+
    413 // NumberingMap::Initialize
    \n+
    414 // ------------------------
    \n+
    415
    \n+
    416 template< int dim, template< int, int > class Numbering >
    \n+
    417 template< int codim >
    \n+
    418 struct NumberingMap< dim, Numbering >::Initialize
    \n+
    419 {
    \n+
    420 static const int numSubEntities = NumSubEntities< dim, codim >::value;
    \n+
    421
    \n+
    422 static void apply ( NumberingMap< dim, Numbering > &map )
    \n+
    423 {
    \n+
    424 map.numSubEntities_[ codim ] = numSubEntities;
    \n+
    425 map.dune2alberta_[ codim ] = new int[ numSubEntities ];
    \n+
    426 map.alberta2dune_[ codim ] = new int[ numSubEntities ];
    \n+
    427
    \n+
    428 for( int i = 0; i < numSubEntities; ++i )
    \n+
    429 {
    \n+
    430 const int j = Numbering< dim, codim >::apply( i );
    \n+
    431 map.dune2alberta_[ codim ][ i ] = j;
    \n+
    432 map.alberta2dune_[ codim ][ j ] = i;
    \n+
    433 }
    \n+
    434 }
    \n+
    435 };
    \n+
    436
    \n+
    437
    \n+
    438
    \n+
    439 // MapVertices
    \n+
    440 // -----------
    \n+
    441
    \n+
    442 template< int dim, int codim >
    \n+\n+
    444
    \n+
    445 template< int dim >
    \n+
    \n+
    446 struct MapVertices< dim, 0 >
    \n+
    447 {
    \n+
    \n+
    448 static int apply ( int subEntity, int vertex )
    \n+
    449 {
    \n+
    450 assert( subEntity == 0 );
    \n+
    451 assert( (vertex >= 0) && (vertex <= NumSubEntities< dim, dim >::value) );
    \n+
    452 return vertex;
    \n+
    453 }
    \n+
    \n+
    454 };
    \n+
    \n+
    455
    \n+
    456 template<>
    \n+
    \n+
    457 struct MapVertices< 2, 1 >
    \n+
    458 {
    \n+
    \n+
    459 static int apply ( int subEntity, int vertex )
    \n+
    460 {
    \n+
    461 assert( (subEntity >= 0) && (subEntity < 3) );
    \n+
    462 assert( (vertex >= 0) && (vertex < 2) );
    \n+
    463 //static const int map[ 3 ][ 2 ] = { {1,2}, {2,0}, {0,1} };
    \n+
    464 static const int map[ 3 ][ 2 ] = { {1,2}, {0,2}, {0,1} };
    \n+
    465 return map[ subEntity ][ vertex ];
    \n+
    466 }
    \n+
    \n+
    467 };
    \n+
    \n+
    468
    \n+
    469 template<>
    \n+
    \n+
    470 struct MapVertices< 3, 1 >
    \n+
    471 {
    \n+
    \n+
    472 static int apply ( int subEntity, int vertex )
    \n+
    473 {
    \n+
    474 assert( (subEntity >= 0) && (subEntity < 4) );
    \n+
    475 assert( (vertex >= 0) && (vertex < 3) );
    \n+
    476 //static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };
    \n+
    477 static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,2,3}, {0,1,3}, {0,1,2} };
    \n+
    478 return map[ subEntity ][ vertex ];
    \n+
    479 }
    \n+
    \n+
    480 };
    \n+
    \n+
    481
    \n+
    482 template<>
    \n+
    \n+
    483 struct MapVertices< 3, 2 >
    \n+
    484 {
    \n+
    \n+
    485 static int apply ( int subEntity, int vertex )
    \n+
    486 {
    \n+
    487 assert( (subEntity >= 0) && (subEntity < 6) );
    \n+
    488 assert( (vertex >= 0) && (vertex < 2) );
    \n+
    489 static const int map[ 6 ][ 2 ] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} };
    \n+
    490 return map[ subEntity ][ vertex ];
    \n+
    491 }
    \n+
    \n+
    492 };
    \n+
    \n+
    493
    \n+
    494 template< int dim >
    \n+
    \n+
    495 struct MapVertices< dim, dim >
    \n+
    496 {
    \n+
    \n+
    497 static int apply ( int subEntity, int vertex )
    \n+
    498 {
    \n+
    499 assert( (subEntity >= 0) && (subEntity < NumSubEntities< dim, 1 >::value) );
    \n+
    500 assert( vertex == 0 );
    \n+
    501 return subEntity;
    \n+
    502 }
    \n+
    \n+
    503 };
    \n+
    \n+
    504
    \n+
    505
    \n+
    506
    \n+
    507 // Twist
    \n+
    508 // -----
    \n+
    509
    \n+
    510 // ******************************************************************
    \n+
    511 // Meaning of the twist (same as in ALU)
    \n+
    512 // -------------------------------------
    \n+
    513 //
    \n+
    514 // Consider a fixed ordering of the vertices v_1, ... v_n of a face
    \n+
    515 // (here, we assume their indices to be increasing). Denote by k the
    \n+
    516 // local number of a vertex v within the element and by t the twist.
    \n+
    517 // Then, v = v_j, where j is computed by the following formula:
    \n+
    518 //
    \n+
    519 // / (2n + 1 - k + t) % n, if t < 0
    \n+
    520 // j = <
    \n+
    521 // \\ (k + t) % n, if t >= 0
    \n+
    522 //
    \n+
    523 // Note: We use the order of the 0-th vertex dof to assign the twist.
    \n+
    524 // This is ok for two reasons:
    \n+
    525 // - ALBERTA preserves the relative order of the dofs during
    \n+
    526 // dof compression.
    \n+
    527 // - ALBERTA enforces the first vertex dof admin to be periodic.
    \n+
    528 // ******************************************************************
    \n+
    529
    \n+
    530 template< int dim, int subdim >
    \n+
    \n+
    531 struct Twist
    \n+
    532 {
    \n+
    533 static const int numSubEntities = NumSubEntities< dim, dim-subdim >::value;
    \n+
    534
    \n+
    535 static const int minTwist = 0;
    \n+
    536 static const int maxTwist = 0;
    \n+
    537
    \n+
    \n+
    538 static int twist ( [[maybe_unused]] const Element *element,
    \n+
    539 [[maybe_unused]] int subEntity )
    \n+
    540 {
    \n+
    541 assert( (subEntity >= 0) && (subEntity < numSubEntities) );
    \n+
    542 return 0;
    \n+
    543 }
    \n+
    \n+
    544 };
    \n+
    \n+
    545
    \n+
    546 template< int dim >
    \n+
    \n+
    547 struct Twist< dim, 1 >
    \n+
    548 {
    \n+
    549 static const int numSubEntities = NumSubEntities< dim, dim-1 >::value;
    \n+
    550
    \n+
    551 static const int minTwist = 0;
    \n+
    552 static const int maxTwist = 1;
    \n+
    553
    \n+
    \n+
    554 static int twist ( const Element *element, int subEntity )
    \n+
    555 {
    \n+
    556 assert( (subEntity >= 0) && (subEntity < numSubEntities) );
    \n+
    557 const int numVertices = NumSubEntities< 1, 1 >::value;
    \n+
    558 int dof[ numVertices ];
    \n+
    559 for( int i = 0; i < numVertices; ++i )
    \n+
    560 {
    \n+
    561 const int j = MapVertices< dim, dim-1 >::apply( subEntity, i );
    \n+
    562 dof[ i ] = element->dof[ j ][ 0 ];
    \n+
    563 }
    \n+
    564 return (dof[ 0 ] < dof[ 1 ] ? 0 : 1);
    \n+
    565 }
    \n+
    \n+
    566 };
    \n+
    \n+
    567
    \n+
    568
    \n+
    569 template<>
    \n+
    \n+
    570 struct Twist< 1, 1 >
    \n+
    571 {
    \n+
    572 static const int minTwist = 0;
    \n+
    573 static const int maxTwist = 0;
    \n+
    574
    \n+
    \n+
    575 static int twist ( [[maybe_unused]] const Element *element,
    \n+
    576 [[maybe_unused]] int subEntity )
    \n+
    577 {
    \n+
    578 assert( subEntity == 0 );
    \n+
    579 return 0;
    \n+
    580 }
    \n+
    \n+
    581 };
    \n+
    \n+
    582
    \n+
    583
    \n+
    584 template< int dim >
    \n+
    \n+
    585 struct Twist< dim, 2 >
    \n+
    586 {
    \n+
    587 static const int numSubEntities = NumSubEntities< dim, dim-2 >::value;
    \n+
    588
    \n+
    589 static const int minTwist = -3;
    \n+
    590 static const int maxTwist = 2;
    \n+
    591
    \n+
    \n+
    592 static int twist ( const Element *element, int subEntity )
    \n+
    593 {
    \n+
    594 assert( (subEntity >= 0) && (subEntity < numSubEntities) );
    \n+
    595 const int numVertices = NumSubEntities< 2, 2 >::value;
    \n+
    596 int dof[ numVertices ];
    \n+
    597 for( int i = 0; i < numVertices; ++i )
    \n+
    598 {
    \n+
    599 const int j = MapVertices< dim, dim-2 >::apply( subEntity, i );
    \n+
    600 dof[ i ] = element->dof[ j ][ 0 ];
    \n+
    601 }
    \n+
    602
    \n+
    603 const int twist[ 8 ] = { -2, 1, 666, -1, 2, 666, -3, 0 };
    \n+
    604 const int k = int( dof[ 0 ] < dof[ 1 ] )
    \n+
    605 | (int( dof[ 0 ] < dof[ 2 ] ) << 1)
    \n+
    606 | (int( dof[ 1 ] < dof[ 2 ] ) << 2);
    \n+
    607 assert( twist[ k ] != 666 );
    \n+
    608 return twist[ k ];
    \n+
    609 }
    \n+
    \n+
    610 };
    \n+
    \n+
    611
    \n+
    612
    \n+
    613 template<>
    \n+
    \n+
    614 struct Twist< 2, 2 >
    \n+
    615 {
    \n+
    616 static const int minTwist = 0;
    \n+
    617 static const int maxTwist = 0;
    \n+
    618
    \n+
    \n+
    619 static int twist ( [[maybe_unused]] const Element *element,
    \n+
    620 [[maybe_unused]] int subEntity )
    \n+
    621 {
    \n+
    622 assert( subEntity == 0 );
    \n+
    623 return 0;
    \n+
    624 }
    \n+
    \n+
    625 };
    \n+
    \n+
    626
    \n+
    627
    \n+
    628
    \n+
    629 template< int dim >
    \n+
    \n+
    630 inline int applyTwist ( int twist, int i )
    \n+
    631 {
    \n+
    632 const int numCorners = NumSubEntities< dim, dim >::value;
    \n+
    633 return (twist < 0 ? (2*numCorners + 1 - i + twist) : i + twist) % numCorners;
    \n+
    634 }
    \n+
    \n+
    635
    \n+
    636 template< int dim >
    \n+
    \n+
    637 inline int applyInverseTwist ( int twist, int i )
    \n+
    638 {
    \n+
    639 const int numCorners = NumSubEntities< dim, dim >::value;
    \n+
    640 return (twist < 0 ? (2*numCorners + 1 - i + twist) : numCorners + i - twist) % numCorners;
    \n+
    641 }
    \n+
    \n+
    642
    \n+
    643 }
    \n+
    644
    \n+
    645}
    \n+
    646
    \n+
    647#endif // #if HAVE_ALBERTA
    \n+
    648
    \n+
    649#endif // #ifndef DUNE_ALBERTA_MISC_HH
    \n+\n+
    #define DIM_OF_WORLD
    Definition albertaheader.hh:23
    \n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n+
    int applyInverseTwist(int twist, int i)
    Definition misc.hh:637
    \n+
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n+
    int applyTwist(int twist, int i)
    Definition misc.hh:630
    \n+
    void memFree(Data *ptr, size_t size)
    Definition misc.hh:91
    \n+
    ALBERTA REAL_DD GlobalMatrix
    Definition misc.hh:51
    \n+
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n+
    ALBERTA REAL_B LocalVector
    Definition misc.hh:49
    \n
    ALBERTA EL Element
    Definition misc.hh:54
    \n+
    ALBERTA BNDRY_TYPE BoundaryId
    Definition misc.hh:61
    \n+
    static const int InteriorBoundary
    Definition misc.hh:59
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    static const int meshRefined
    Definition misc.hh:56
    \n+
    Data * memAlloc(size_t size)
    Definition misc.hh:73
    \n+
    Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)
    Definition misc.hh:85
    \n+
    static const int DirichletBoundary
    Definition misc.hh:60
    \n
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n+
    Data * memCAlloc(size_t size)
    Definition misc.hh:79
    \n
    static const int dimWorld
    Definition misc.hh:46
    \n+
    U_CHAR ElementType
    Definition misc.hh:63
    \n+
    static const int meshCoarsened
    Definition misc.hh:57
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition coordcache.hh:25
    \n-
    static const int dimension
    Definition coordcache.hh:33
    \n-
    GlobalVector & operator()(const Element *element, int vertex) const
    Definition coordcache.hh:39
    \n-
    Alberta::MeshPointer< dimension > MeshPointer
    Definition coordcache.hh:36
    \n-
    void release()
    Definition coordcache.hh:64
    \n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition coordcache.hh:35
    \n-
    HierarchyDofNumbering< dimension > DofNumbering
    Definition coordcache.hh:37
    \n-
    void create(const DofNumbering &dofNumbering)
    Definition coordcache.hh:51
    \n-
    Definition coordcache.hh:81
    \n-
    LocalCaching(const CoordVectorPointer &coords)
    Definition coordcache.hh:86
    \n-
    Definition coordcache.hh:111
    \n-
    Alberta::Patch< dimension > Patch
    Definition coordcache.hh:114
    \n-
    static void interpolateVector(const CoordVectorPointer &dofVector, const Patch &patch)
    Definition coordcache.hh:117
    \n-\n-
    void hierarchicTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:370
    \n-\n-
    static const int numSubEntities
    Definition dofadmin.hh:40
    \n-\n-
    const MeshPointer & mesh() const
    Definition dofadmin.hh:158
    \n-
    const DofSpace * dofSpace(int codim) const
    Definition dofadmin.hh:145
    \n-\n-
    void create(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:236
    \n-
    void release()
    Definition dofvector.hh:254
    \n-
    const DofSpace * dofSpace() const
    Definition dofvector.hh:223
    \n-\n-
    const GlobalVector & coordinate(int vertex) const
    Definition elementinfo.hh:685
    \n-
    Element * el() const
    Definition elementinfo.hh:737
    \n+
    Definition misc.hh:32
    \n+
    Definition misc.hh:36
    \n+
    Definition misc.hh:102
    \n+
    static const Matrix & identityMatrix()
    Definition misc.hh:131
    \n+
    static const Vector & nullVector()
    Definition misc.hh:136
    \n+
    GlobalMatrix Matrix
    Definition misc.hh:106
    \n+
    GlobalVector Vector
    Definition misc.hh:107
    \n+
    Definition misc.hh:148
    \n+
    Definition misc.hh:192
    \n
    Definition misc.hh:231
    \n-
    Definition refinement.hh:40
    \n+
    static const Flags nothing
    Definition misc.hh:234
    \n+
    static const Flags nonPeriodic
    Definition misc.hh:248
    \n+
    static const Flags boundaryId
    Definition misc.hh:246
    \n+
    static const Flags elementType
    Definition misc.hh:244
    \n+
    ALBERTA FLAGS Flags
    Definition misc.hh:232
    \n+
    static const Flags projection
    Definition misc.hh:242
    \n+
    static const Flags coords
    Definition misc.hh:236
    \n+
    static const Flags orientation
    Definition misc.hh:240
    \n+
    static const Flags standard
    Definition misc.hh:258
    \n+
    static const Flags neighbor
    Definition misc.hh:238
    \n+
    static const Flags all
    Definition misc.hh:250
    \n+
    static const Flags standardWithCoords
    Definition misc.hh:253
    \n+
    Definition misc.hh:269
    \n+
    static const int value
    Definition misc.hh:270
    \n+\n+
    static int apply(const int i)
    Definition misc.hh:287
    \n+
    static int apply(const int i)
    Definition misc.hh:299
    \n+\n+
    static int apply(const int i)
    Definition misc.hh:315
    \n+
    static int apply(const int i)
    Definition misc.hh:325
    \n+
    static int apply(const int i)
    Definition misc.hh:335
    \n+
    static int apply(const int i)
    Definition misc.hh:347
    \n+
    Definition misc.hh:362
    \n+
    int alberta2dune(int codim, int i) const
    Definition misc.hh:397
    \n+
    int numSubEntities(int codim) const
    Definition misc.hh:404
    \n+
    int dune2alberta(int codim, int i) const
    Definition misc.hh:390
    \n+
    ~NumberingMap()
    Definition misc.hh:381
    \n+
    NumberingMap()
    Definition misc.hh:376
    \n+
    Definition misc.hh:443
    \n+
    static int apply(int subEntity, int vertex)
    Definition misc.hh:448
    \n+
    static int apply(int subEntity, int vertex)
    Definition misc.hh:459
    \n+
    static int apply(int subEntity, int vertex)
    Definition misc.hh:472
    \n+
    static int apply(int subEntity, int vertex)
    Definition misc.hh:485
    \n+
    static int apply(int subEntity, int vertex)
    Definition misc.hh:497
    \n+
    Definition misc.hh:532
    \n+
    static const int maxTwist
    Definition misc.hh:536
    \n+
    static const int minTwist
    Definition misc.hh:535
    \n+
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:538
    \n+
    static const int numSubEntities
    Definition misc.hh:533
    \n+
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:554
    \n+
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:575
    \n+
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:592
    \n+
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:619
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,259 +1,888 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-coordcache.hh\n+misc.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_COORDCACHE_HH\n-6#define DUNE_ALBERTA_COORDCACHE_HH\n+5#ifndef DUNE_ALBERTA_MISC_HH\n+6#define DUNE_ALBERTA_MISC_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n-11\n-12#if HAVE_ALBERTA\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n+13#include \n+14\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n 16\n-17 namespace Alberta\n-18 {\n-19\n-20 // CoordCache\n-21 // ----------\n-22\n-23 template< int dim >\n-_\b2_\b4 class _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n-25 {\n-26 typedef _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b> _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-27 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b> _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs;\n-28\n-29 class _\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg;\n-30 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-31\n-32 public:\n-_\b3_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-34\n-_\b3_\b5 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-_\b3_\b6 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-_\b3_\b7 typedef _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg;\n+17#if HAVE_ALBERTA\n+18\n+19// should the coordinates be cached in a vector (required for ALBERTA 2.0)?\n+20#ifndef DUNE_ALBERTA_CACHE_COORDINATES\n+_\b2_\b1#define DUNE_ALBERTA_CACHE_COORDINATES 1\n+22#endif\n+23\n+24namespace _\bD_\bu_\bn_\be\n+25{\n+26\n+27 // Exceptions\n+28 // ----------\n+29\n+_\b3_\b0 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bE_\br_\br_\bo_\br\n+31 : public Exception\n+32 {};\n+33\n+_\b3_\b4 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bI_\bO_\bE_\br_\br_\bo_\br\n+35 : public IOError\n+36 {};\n+37\n 38\n-_\b3_\b9 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int vertex ) const\n-40 {\n-41 assert( !(!coords_) );\n-42 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *array = (_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *)coords_;\n-43 return array[ dofAccess_( element, vertex ) ];\n-44 }\n+39\n+40 namespace Alberta\n+41 {\n+42\n+43 // Import Types\n+44 // ------------\n 45\n-_\b4_\b6 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int vertex )\n-const\n-47 {\n-48 return (*this)( elementInfo._\be_\bl(), vertex );\n-49 }\n-50\n-_\b5_\b1 void _\bc_\br_\be_\ba_\bt_\be ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering )\n-52 {\n-53 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br mesh = dofNumbering._\bm_\be_\bs_\bh();\n-54 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace = dofNumbering._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+_\b4_\b6 static const int _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd = _\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD;\n+47\n+_\b4_\b8 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL _\bR_\be_\ba_\bl;\n+_\b4_\b9 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_B _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br; // in barycentric coordinates\n+_\b5_\b0 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_D _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n+_\b5_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_DD _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx;\n+_\b5_\b2 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA AFF_TRAFO _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn;\n+_\b5_\b3 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA MESH _\bM_\be_\bs_\bh;\n+_\b5_\b4 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL _\bE_\bl_\be_\bm_\be_\bn_\bt;\n 55\n-56 coords_._\bc_\br_\be_\ba_\bt_\be( dofSpace, \"Coordinate Cache\" );\n-57 _\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg localCaching( coords_ );\n-58 mesh._\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be( localCaching, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs );\n-59 coords_.template setupInterpolation< Interpolation >();\n-60\n-61 dofAccess_ = _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs( dofSpace );\n-62 }\n-63\n-_\b6_\b4 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n-65 {\n-66 coords_._\br_\be_\bl_\be_\ba_\bs_\be();\n-67 }\n+_\b5_\b6 static const int _\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd = MESH_REFINED;\n+_\b5_\b7 static const int _\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd = MESH_COARSENED;\n+58\n+_\b5_\b9 static const int _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = INTERIOR;\n+_\b6_\b0 static const int _\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = DIRICHLET;\n+_\b6_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA BNDRY_TYPE _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd;\n+62\n+_\b6_\b3 typedef U_CHAR _\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n+64\n+_\b6_\b5 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA FE_SPACE _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be;\n+66\n+67\n 68\n-69 private:\n-70 CoordVectorPointer coords_;\n-71 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess_;\n-72 };\n-73\n-74\n-75\n-76 // CoordCache::LocalCaching\n-77 // ------------------------\n-78\n-79 template< int dim >\n-_\b8_\b0 class _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be< dim >::_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n-81 {\n-82 _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br coords_;\n-83 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess_;\n-84\n-85 public:\n-_\b8_\b6 explicit _\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg ( const _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &coords )\n-87 : coords_( coords ),\n-88 dofAccess_( coords.dofSpace() )\n-89 {}\n-90\n-_\b9_\b1 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const\n+69 // Memory Manipulation Functions\n+70 // -----------------------------\n+71\n+72 template< class Data >\n+_\b7_\b3 inline Data *_\bm_\be_\bm_\bA_\bl_\bl_\bo_\bc ( size_t size )\n+74 {\n+75 return MEM_ALLOC( size, Data );\n+76 }\n+77\n+78 template< class Data >\n+_\b7_\b9 inline Data *_\bm_\be_\bm_\bC_\bA_\bl_\bl_\bo_\bc ( size_t size )\n+80 {\n+81 return MEM_CALLOC( size, Data );\n+82 }\n+83\n+84 template< class Data >\n+_\b8_\b5 inline Data *_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc ( Data *ptr, size_t oldSize, size_t newSize )\n+86 {\n+87 return MEM_REALLOC( ptr, oldSize, newSize, Data );\n+88 }\n+89\n+90 template< class Data >\n+_\b9_\b1 inline void _\bm_\be_\bm_\bF_\br_\be_\be ( Data *ptr, size_t size )\n 92 {\n-93 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *array = (_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *)coords_;\n-94 for( int i = 0; i < _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs; ++i )\n-95 {\n-96 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &x = elementInfo._\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be( i );\n-97 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &y = array[ dofAccess_( elementInfo._\be_\bl(), i ) ];\n-98 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n-99 y[ i ] = x[ i ];\n-100 }\n-101 }\n-102 };\n-103\n+93 return MEM_FREE( ptr, size, Data );\n+94 }\n+95\n+96\n+97\n+98 // GlobalSpace\n+99 // -----------\n+100\n+_\b1_\b0_\b1 class _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n+102 {\n+103 typedef _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be _\bT_\bh_\bi_\bs;\n 104\n-105\n-106 // CoordCache::Interpolation\n-107 // -------------------------\n+105 public:\n+_\b1_\b0_\b6 typedef _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n+_\b1_\b0_\b7 typedef _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br _\bV_\be_\bc_\bt_\bo_\br;\n 108\n-109 template< int dim >\n-_\b1_\b1_\b0 struct _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be< dim >::_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-111 {\n-_\b1_\b1_\b2 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-113\n-_\b1_\b1_\b4 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bP_\ba_\bt_\bc_\bh;\n-115\n-116 static void\n-_\b1_\b1_\b7 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\be_\bc_\bt_\bo_\br ( const _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &dofVector, const _\bP_\ba_\bt_\bc_\bh &patch\n-)\n-118 {\n-119 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be() );\n-120 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *array = (_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *)dofVector;\n-121\n-122 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = patch[ 0 ];\n+109 private:\n+110 _\bM_\ba_\bt_\br_\bi_\bx identityMatrix_;\n+111 _\bV_\be_\bc_\bt_\bo_\br nullVector_;\n+112\n+113 _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be ()\n+114 {\n+115 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n+116 {\n+117 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n+118 identityMatrix_[ i ][ j ] = _\bR_\be_\ba_\bl( 0 );\n+119 identityMatrix_[ i ][ i ] = _\bR_\be_\ba_\bl( 1 );\n+120 nullVector_[ i ] = _\bR_\be_\ba_\bl( 0 );\n+121 }\n+122 }\n 123\n-124 // new vertex is always the last one\n-125 assert( element->child[ 0 ] != NULL );\n-126 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &newCoord = array[ dofAccess( element->child[ 0 ], _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n-];\n-127\n-128 if( element->new_coord != NULL )\n-129 {\n-130 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n-131 newCoord[ j ] = element->new_coord[ j ];\n-132 }\n-133 else\n-134 {\n-135 // new coordinate is the average of of old ones on the same edge\n-136 // refinement edge is always between vertices 0 and 1\n-137 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord0 = array[ dofAccess( element, 0 ) ];\n-138 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord1 = array[ dofAccess( element, 1 ) ];\n-139 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n-140 newCoord[ j ] = 0.5 * (coord0[ j ] + coord1[ j ]);\n-141 }\n-142 }\n-143 };\n-144\n-145 }\n+124 static This &instance ()\n+125 {\n+126 static This theInstance;\n+127 return theInstance;\n+128 }\n+129\n+130 public:\n+_\b1_\b3_\b1 static const _\bM_\ba_\bt_\br_\bi_\bx &_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bM_\ba_\bt_\br_\bi_\bx ()\n+132 {\n+133 return instance().identityMatrix_;\n+134 }\n+135\n+_\b1_\b3_\b6 static const _\bV_\be_\bc_\bt_\bo_\br &_\bn_\bu_\bl_\bl_\bV_\be_\bc_\bt_\bo_\br ()\n+137 {\n+138 return instance().nullVector_;\n+139 }\n+140 };\n+141\n+142\n+143\n+144 // NumSubEntities\n+145 // --------------\n 146\n-147}\n-148\n-149#endif // #if HAVE_ALBERTA\n-150\n-151#endif // #ifndef DUNE_ALBERTA_COORDCACHE_HH\n-_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n-provides a wrapper for ALBERTA's mesh structure\n-_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh\n-_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n+147 template< int dim, int codim >\n+_\b1_\b4_\b8 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs;\n+149\n+150 template< int dim >\n+_\b1_\b5_\b1 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, 0 >\n+152 {\n+_\b1_\b5_\b3 static const int value = 1;\n+154 };\n+155\n+156 template< int dim >\n+_\b1_\b5_\b7 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim >\n+158 {\n+_\b1_\b5_\b9 static const int value = dim+1;\n+160 };\n+161\n+162 template<>\n+_\b1_\b6_\b3 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 0, 0 >\n+164 {\n+_\b1_\b6_\b5 static const int value = 1;\n+166 };\n+167\n+168 template<>\n+_\b1_\b6_\b9 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 2, 1 >\n+170 {\n+_\b1_\b7_\b1 static const int value = 3;\n+172 };\n+173\n+174 template<>\n+_\b1_\b7_\b5 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 3, 1 >\n+176 {\n+_\b1_\b7_\b7 static const int value = 4;\n+178 };\n+179\n+180 template<>\n+_\b1_\b8_\b1 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 3, 2 >\n+182 {\n+_\b1_\b8_\b3 static const int value = 6;\n+184 };\n+185\n+186\n+187\n+188 // CodimType\n+189 // ---------\n+190\n+191 template< int dim, int codim >\n+_\b1_\b9_\b2 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be;\n+193\n+194 template< int dim >\n+_\b1_\b9_\b5 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< dim, 0 >\n+196 {\n+_\b1_\b9_\b7 static const int value = CENTER;\n+198 };\n+199\n+200 template< int dim >\n+_\b2_\b0_\b1 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< dim, dim >\n+202 {\n+_\b2_\b0_\b3 static const int value = VERTEX;\n+204 };\n+205\n+206 template<>\n+_\b2_\b0_\b7 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< 2, 1 >\n+208 {\n+_\b2_\b0_\b9 static const int value = EDGE;\n+210 };\n+211\n+212 template<>\n+_\b2_\b1_\b3 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< 3, 1 >\n+214 {\n+_\b2_\b1_\b5 static const int value = FACE;\n+216 };\n+217\n+218 template<>\n+_\b2_\b1_\b9 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< 3, 2 >\n+220 {\n+_\b2_\b2_\b1 static const int value = EDGE;\n+222 };\n+223\n+224\n+225\n+226 // FillFlags\n+227 // ---------\n+228\n+229 template< int dim >\n+_\b2_\b3_\b0 struct _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+231 {\n+_\b2_\b3_\b2 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA FLAGS _\bF_\bl_\ba_\bg_\bs;\n+233\n+_\b2_\b3_\b4 static const _\bF_\bl_\ba_\bg_\bs _\bn_\bo_\bt_\bh_\bi_\bn_\bg = FILL_NOTHING;\n+235\n+_\b2_\b3_\b6 static const _\bF_\bl_\ba_\bg_\bs _\bc_\bo_\bo_\br_\bd_\bs = FILL_COORDS;\n+237\n+_\b2_\b3_\b8 static const _\bF_\bl_\ba_\bg_\bs _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br = FILL_NEIGH;\n+239\n+_\b2_\b4_\b0 static const _\bF_\bl_\ba_\bg_\bs _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn = (dim == 3 ? FILL_ORIENTATION :\n+FILL_NOTHING);\n+241\n+_\b2_\b4_\b2 static const _\bF_\bl_\ba_\bg_\bs _\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn = FILL_PROJECTION;\n+243\n+_\b2_\b4_\b4 static const _\bF_\bl_\ba_\bg_\bs _\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be = FILL_NOTHING;\n+245\n+_\b2_\b4_\b6 static const _\bF_\bl_\ba_\bg_\bs _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd = FILL_MACRO_WALLS;\n+247\n+_\b2_\b4_\b8 static const _\bF_\bl_\ba_\bg_\bs _\bn_\bo_\bn_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc = FILL_NON_PERIODIC;\n+249\n+_\b2_\b5_\b0 static const _\bF_\bl_\ba_\bg_\bs _\ba_\bl_\bl = _\bc_\bo_\bo_\br_\bd_\bs | _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br | _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd | _\bn_\bo_\bn_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc\n+251 | _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn | _\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn | _\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n+252\n+_\b2_\b5_\b3 static const _\bF_\bl_\ba_\bg_\bs _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs = _\ba_\bl_\bl & ~nonPeriodic & ~projection;\n+254\n+255#if DUNE_ALBERTA_CACHE_COORDINATES\n+256 static const _\bF_\bl_\ba_\bg_\bs _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd = _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs & ~coords;\n+257#else\n+_\b2_\b5_\b8 static const _\bF_\bl_\ba_\bg_\bs _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd = _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs;\n+259#endif\n+260 };\n+261\n+262\n+263\n+264 // RefinementEdge\n+265 // --------------\n+266\n+267 template< int dim >\n+_\b2_\b6_\b8 struct _\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be\n+269 {\n+_\b2_\b7_\b0 static const int _\bv_\ba_\bl_\bu_\be = 0;\n+271 };\n+272\n+273 template<>\n+_\b2_\b7_\b4 struct _\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be< 2 >\n+275 {\n+_\b2_\b7_\b6 static const int _\bv_\ba_\bl_\bu_\be = 2;\n+277 };\n+278\n+279\n+280\n+281 // Dune2AlbertaNumbering\n+282 // ---------------------\n+283\n+284 template< int dim, int codim >\n+_\b2_\b8_\b5 struct _\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+286 {\n+_\b2_\b8_\b7 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n+288 {\n+289 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n+290 return i;\n+291 }\n+292 };\n+293\n+294 template<>\n+_\b2_\b9_\b5 struct _\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< 3, 2 >\n+296 {\n+_\b2_\b9_\b7 static const int numSubEntities = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+298\n+_\b2_\b9_\b9 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n+300 {\n+301 assert( (i >= 0) && (i < numSubEntities) );\n+302 static int dune2alberta[ numSubEntities ] = { 0, 3, 1, 2, 4, 5 };\n+303 return dune2alberta[ i ];\n+304 }\n+305 };\n+306\n+307\n+308\n+309 // Generic2AlbertaNumbering\n+310 // ------------------------\n+311\n+312 template< int dim, int codim >\n+_\b3_\b1_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+314 {\n+_\b3_\b1_\b5 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n+316 {\n+317 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n+318 return i;\n+319 }\n+320 };\n+321\n+322 template< int dim >\n+_\b3_\b2_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< dim, 1 >\n+324 {\n+_\b3_\b2_\b5 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n+326 {\n+327 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n+328 return dim - i;\n+329 }\n+330 };\n+331\n+332 template<>\n+_\b3_\b3_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< 1, 1 >\n+334 {\n+_\b3_\b3_\b5 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n+336 {\n+337 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n+338 return i;\n+339 }\n+340 };\n+341\n+342 template<>\n+_\b3_\b4_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< 3, 2 >\n+344 {\n+_\b3_\b4_\b5 static const int numSubEntities = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+346\n+_\b3_\b4_\b7 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n+348 {\n+349 assert( (i >= 0) && (i < numSubEntities) );\n+350 static int generic2alberta[ numSubEntities ] = { 0, 1, 3, 2, 4, 5 };\n+351 return generic2alberta[ i ];\n+352 }\n+353 };\n+354\n+355\n+356\n+357 // NumberingMap\n+358 // ------------\n+359\n+360 template< int dim, template< int, int > class Numbering =\n+Generic2AlbertaNumbering >\n+_\b3_\b6_\b1 class _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n+362 {\n+363 typedef _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\b,_\b _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b> _\bT_\bh_\bi_\bs;\n+364\n+365 template< int codim >\n+366 struct Initialize;\n+367\n+368 int *dune2alberta_[ dim+1 ];\n+369 int *alberta2dune_[ dim+1 ];\n+370 int numSubEntities_[ dim+1 ];\n+371\n+372 _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp ( const _\bT_\bh_\bi_\bs & );\n+373 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & );\n+374\n+375 public:\n+_\b3_\b7_\b6 _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp ()\n+377 {\n+378 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n+{ Initialize< i >::apply( *this ); } );\n+379 }\n+380\n+_\b3_\b8_\b1 _\b~_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp ()\n+382 {\n+383 for( int codim = 0; codim <= dim; ++codim )\n+384 {\n+385 delete[]( dune2alberta_[ codim ] );\n+386 delete[]( alberta2dune_[ codim ] );\n+387 }\n+388 }\n+389\n+_\b3_\b9_\b0 int _\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba ( int codim, int i ) const\n+391 {\n+392 assert( (codim >= 0) && (codim <= dim) );\n+393 assert( (i >= 0) && (i < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs( codim )) );\n+394 return dune2alberta_[ codim ][ i ];\n+395 }\n+396\n+_\b3_\b9_\b7 int _\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be ( int codim, int i ) const\n+398 {\n+399 assert( (codim >= 0) && (codim <= dim) );\n+400 assert( (i >= 0) && (i < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs( codim )) );\n+401 return alberta2dune_[ codim ][ i ];\n+402 }\n+403\n+_\b4_\b0_\b4 int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ( int codim ) const\n+405 {\n+406 assert( (codim >= 0) && (codim <= dim) );\n+407 return numSubEntities_[ codim ];\n+408 }\n+409 };\n+410\n+411\n+412\n+413 // NumberingMap::Initialize\n+414 // ------------------------\n+415\n+416 template< int dim, template< int, int > class Numbering >\n+417 template< int codim >\n+418 struct NumberingMap< dim, Numbering >::Initialize\n+419 {\n+420 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = NumSubEntities< dim, codim >::value;\n+421\n+422 static void apply ( NumberingMap< dim, Numbering > &map )\n+423 {\n+424 map.numSubEntities_[ codim ] = _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs;\n+425 map.dune2alberta_[ codim ] = new int[ _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ];\n+426 map.alberta2dune_[ codim ] = new int[ _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ];\n+427\n+428 for( int i = 0; i < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs; ++i )\n+429 {\n+430 const int j = Numbering< dim, codim >::apply( i );\n+431 map.dune2alberta_[ codim ][ i ] = j;\n+432 map.alberta2dune_[ codim ][ j ] = i;\n+433 }\n+434 }\n+435 };\n+436\n+437\n+438\n+439 // MapVertices\n+440 // -----------\n+441\n+442 template< int dim, int codim >\n+_\b4_\b4_\b3 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs;\n+444\n+445 template< int dim >\n+_\b4_\b4_\b6 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< dim, 0 >\n+447 {\n+_\b4_\b4_\b8 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n+449 {\n+450 assert( subEntity == 0 );\n+451 assert( (vertex >= 0) && (vertex <= _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n+452 return vertex;\n+453 }\n+454 };\n+455\n+456 template<>\n+_\b4_\b5_\b7 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< 2, 1 >\n+458 {\n+_\b4_\b5_\b9 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n+460 {\n+461 assert( (subEntity >= 0) && (subEntity < 3) );\n+462 assert( (vertex >= 0) && (vertex < 2) );\n+463 //static const int map[ 3 ][ 2 ] = { {1,2}, {2,0}, {0,1} };\n+464 static const int map[ 3 ][ 2 ] = { {1,2}, {0,2}, {0,1} };\n+465 return map[ subEntity ][ vertex ];\n+466 }\n+467 };\n+468\n+469 template<>\n+_\b4_\b7_\b0 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< 3, 1 >\n+471 {\n+_\b4_\b7_\b2 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n+473 {\n+474 assert( (subEntity >= 0) && (subEntity < 4) );\n+475 assert( (vertex >= 0) && (vertex < 3) );\n+476 //static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };\n+477 static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,2,3}, {0,1,3}, {0,1,2} };\n+478 return map[ subEntity ][ vertex ];\n+479 }\n+480 };\n+481\n+482 template<>\n+_\b4_\b8_\b3 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< 3, 2 >\n+484 {\n+_\b4_\b8_\b5 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n+486 {\n+487 assert( (subEntity >= 0) && (subEntity < 6) );\n+488 assert( (vertex >= 0) && (vertex < 2) );\n+489 static const int map[ 6 ][ 2 ] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3}\n+};\n+490 return map[ subEntity ][ vertex ];\n+491 }\n+492 };\n+493\n+494 template< int dim >\n+_\b4_\b9_\b5 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< dim, dim >\n+496 {\n+_\b4_\b9_\b7 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n+498 {\n+499 assert( (subEntity >= 0) && (subEntity < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be)\n+);\n+500 assert( vertex == 0 );\n+501 return subEntity;\n+502 }\n+503 };\n+504\n+505\n+506\n+507 // Twist\n+508 // -----\n+509\n+510 // ******************************************************************\n+511 // Meaning of the twist (same as in ALU)\n+512 // -------------------------------------\n+513 //\n+514 // Consider a fixed ordering of the vertices v_1, ... v_n of a face\n+515 // (here, we assume their indices to be increasing). Denote by k the\n+516 // local number of a vertex v within the element and by t the twist.\n+517 // Then, v = v_j, where j is computed by the following formula:\n+518 //\n+519 // / (2n + 1 - k + t) % n, if t < 0\n+520 // j = <\n+521 // \\ (k + t) % n, if t >= 0\n+522 //\n+523 // Note: We use the order of the 0-th vertex dof to assign the twist.\n+524 // This is ok for two reasons:\n+525 // - ALBERTA preserves the relative order of the dofs during\n+526 // dof compression.\n+527 // - ALBERTA enforces the first vertex dof admin to be periodic.\n+528 // ******************************************************************\n+529\n+530 template< int dim, int subdim >\n+_\b5_\b3_\b1 struct _\bT_\bw_\bi_\bs_\bt\n+532 {\n+_\b5_\b3_\b3 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim-subdim >::value;\n+534\n+_\b5_\b3_\b5 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n+_\b5_\b3_\b6 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 0;\n+537\n+_\b5_\b3_\b8 static int _\bt_\bw_\bi_\bs_\bt ( [[maybe_unused]] const _\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n+539 [[maybe_unused]] int subEntity )\n+540 {\n+541 assert( (subEntity >= 0) && (subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs) );\n+542 return 0;\n+543 }\n+544 };\n+545\n+546 template< int dim >\n+_\b5_\b4_\b7 struct _\bT_\bw_\bi_\bs_\bt< dim, 1 >\n+548 {\n+_\b5_\b4_\b9 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim-1 >::value;\n+550\n+_\b5_\b5_\b1 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n+_\b5_\b5_\b2 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 1;\n+553\n+_\b5_\b5_\b4 static int _\bt_\bw_\bi_\bs_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity )\n+555 {\n+556 assert( (subEntity >= 0) && (subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs) );\n+557 const int numVertices = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+558 int dof[ numVertices ];\n+559 for( int i = 0; i < numVertices; ++i )\n+560 {\n+561 const int j = _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( subEntity, i );\n+562 dof[ i ] = element->dof[ j ][ 0 ];\n+563 }\n+564 return (dof[ 0 ] < dof[ 1 ] ? 0 : 1);\n+565 }\n+566 };\n+567\n+568\n+569 template<>\n+_\b5_\b7_\b0 struct _\bT_\bw_\bi_\bs_\bt< 1, 1 >\n+571 {\n+_\b5_\b7_\b2 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n+_\b5_\b7_\b3 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 0;\n+574\n+_\b5_\b7_\b5 static int _\bt_\bw_\bi_\bs_\bt ( [[maybe_unused]] const _\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n+576 [[maybe_unused]] int subEntity )\n+577 {\n+578 assert( subEntity == 0 );\n+579 return 0;\n+580 }\n+581 };\n+582\n+583\n+584 template< int dim >\n+_\b5_\b8_\b5 struct _\bT_\bw_\bi_\bs_\bt< dim, 2 >\n+586 {\n+_\b5_\b8_\b7 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim-2 >::value;\n+588\n+_\b5_\b8_\b9 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = -3;\n+_\b5_\b9_\b0 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 2;\n+591\n+_\b5_\b9_\b2 static int _\bt_\bw_\bi_\bs_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity )\n+593 {\n+594 assert( (subEntity >= 0) && (subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs) );\n+595 const int numVertices = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+596 int dof[ numVertices ];\n+597 for( int i = 0; i < numVertices; ++i )\n+598 {\n+599 const int j = _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( subEntity, i );\n+600 dof[ i ] = element->dof[ j ][ 0 ];\n+601 }\n+602\n+603 const int _\bt_\bw_\bi_\bs_\bt[ 8 ] = { -2, 1, 666, -1, 2, 666, -3, 0 };\n+604 const int k = int( dof[ 0 ] < dof[ 1 ] )\n+605 | (int( dof[ 0 ] < dof[ 2 ] ) << 1)\n+606 | (int( dof[ 1 ] < dof[ 2 ] ) << 2);\n+607 assert( _\bt_\bw_\bi_\bs_\bt[ k ] != 666 );\n+608 return _\bt_\bw_\bi_\bs_\bt[ k ];\n+609 }\n+610 };\n+611\n+612\n+613 template<>\n+_\b6_\b1_\b4 struct _\bT_\bw_\bi_\bs_\bt< 2, 2 >\n+615 {\n+_\b6_\b1_\b6 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n+_\b6_\b1_\b7 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 0;\n+618\n+_\b6_\b1_\b9 static int _\bt_\bw_\bi_\bs_\bt ( [[maybe_unused]] const _\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n+620 [[maybe_unused]] int subEntity )\n+621 {\n+622 assert( subEntity == 0 );\n+623 return 0;\n+624 }\n+625 };\n+626\n+627\n+628\n+629 template< int dim >\n+_\b6_\b3_\b0 inline int _\ba_\bp_\bp_\bl_\by_\bT_\bw_\bi_\bs_\bt ( int twist, int i )\n+631 {\n+632 const int numCorners = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+633 return (twist < 0 ? (2*numCorners + 1 - i + twist) : i + twist) %\n+numCorners;\n+634 }\n+635\n+636 template< int dim >\n+_\b6_\b3_\b7 inline int _\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt ( int twist, int i )\n+638 {\n+639 const int numCorners = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+640 return (twist < 0 ? (2*numCorners + 1 - i + twist) : numCorners + i -\n+twist) % numCorners;\n+641 }\n+642\n+643 }\n+644\n+645}\n+646\n+647#endif // #if HAVE_ALBERTA\n+648\n+649#endif // #ifndef DUNE_ALBERTA_MISC_HH\n+_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n+_\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD\n+#define DIM_OF_WORLD\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:23\n+_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+#define ALBERTA\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt\n+int applyInverseTwist(int twist, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:637\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n+ALBERTA MESH Mesh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bw_\bi_\bs_\bt\n+int applyTwist(int twist, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:630\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bF_\br_\be_\be\n+void memFree(Data *ptr, size_t size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx\n+ALBERTA REAL_DD GlobalMatrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+ALBERTA AFF_TRAFO AffineTransformation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_B LocalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:49\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n ALBERTA EL Element\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+ALBERTA BNDRY_TYPE BoundaryId\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+static const int InteriorBoundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd\n+static const int meshRefined\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bA_\bl_\bl_\bo_\bc\n+Data * memAlloc(size_t size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc\n+Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+static const int DirichletBoundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n ALBERTA FE_SPACE DofSpace\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bC_\bA_\bl_\bl_\bo_\bc\n+Data * memCAlloc(size_t size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:79\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n static const int dimWorld\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+U_CHAR ElementType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd\n+static const int meshCoarsened\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:57\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n ALBERTA REAL_D GlobalVector\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\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 coordcache.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-GlobalVector & operator()(const Element *element, int vertex) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-Alberta::MeshPointer< dimension > MeshPointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-HierarchyDofNumbering< dimension > DofNumbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create(const DofNumbering &dofNumbering)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n-LocalCaching(const CoordVectorPointer &coords)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\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 coordcache.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n-Alberta::Patch< dimension > Patch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\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_\bV_\be_\bc_\bt_\bo_\br\n-static void interpolateVector(const CoordVectorPointer &dofVector, const Patch\n-&patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void hierarchicTraverse(Functor &functor, typename FillFlags::Flags\n-fillFlags=FillFlags::standard) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-static const int numSubEntities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bm_\be_\bs_\bh\n-const MeshPointer & mesh() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * dofSpace(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create(const DofSpace *dofSpace, const std::string &name=\"\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * dofSpace() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-const GlobalVector & coordinate(int vertex) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:685\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n-Element * el() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bE_\br_\br_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bI_\bO_\bE_\br_\br_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bM_\ba_\bt_\br_\bi_\bx\n+static const Matrix & identityMatrix()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bn_\bu_\bl_\bl_\bV_\be_\bc_\bt_\bo_\br\n+static const Vector & nullVector()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+GlobalMatrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br\n+GlobalVector Vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:192\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n+static const Flags nothing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bn_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc\n+static const Flags nonPeriodic\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+static const Flags boundaryId\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+static const Flags elementType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:244\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n+ALBERTA FLAGS Flags\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+static const Flags projection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs\n+static const Flags coords\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+static const Flags orientation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd\n+static const Flags standard\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:258\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+static const Flags neighbor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\ba_\bl_\bl\n+static const Flags all\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs\n+static const Flags standardWithCoords\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:269\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+static const int value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:270\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:286\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(const int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(const int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:299\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(const int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:315\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(const int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:325\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(const int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(const int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:347\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:362\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be\n+int alberta2dune(int codim, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:397\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+int numSubEntities(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:404\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba\n+int dune2alberta(int codim, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\b~_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n+~NumberingMap()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:381\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n+NumberingMap()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:376\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:443\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(int subEntity, int vertex)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:448\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(int subEntity, int vertex)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:459\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(int subEntity, int vertex)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:472\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(int subEntity, int vertex)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:485\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static int apply(int subEntity, int vertex)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:497\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:532\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt\n+static const int maxTwist\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:536\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt\n+static const int minTwist\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:535\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+static int twist(const Element *element, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:538\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+static const int numSubEntities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:533\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+static int twist(const Element *element, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:554\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+static int twist(const Element *element, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:575\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b2_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+static int twist(const Element *element, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:592\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+static int twist(const Element *element, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:619\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00620.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00620.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: refinement.hh File Reference\n+dune-grid: geometryreference.hh File Reference\n \n \n \n \n \n \n \n@@ -72,58 +72,41 @@\n
  • dune
  • grid
  • albertagrid
  • \n
    \n \n
    \n \n-
    refinement.hh File Reference
    \n+
    geometryreference.hh File Reference
    \n
    \n
    \n \n-

    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather \n+

    Wrapper and interface classes for element geometries. \n More...

    \n-
    #include <cassert>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n+
    #include <dune/common/typetraits.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/grid/common/geometry.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 Classes

    class  Dune::Alberta::Patch< dim >
    class  Dune::GeometryReference< Implementation >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< dim, 0 >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< dim, dim >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< 2, 1 >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< 3, 1 >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< 3, 2 >
     
    struct  Dune::Alberta::GeometryInFather< 1 >
     
    struct  Dune::Alberta::GeometryInFather< 2 >
     
    struct  Dune::Alberta::GeometryInFather< 3 >
    class  Dune::LocalGeometryReference< mydim, cdim, Grid >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n

    Detailed Description

    \n-

    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather

    \n-
    Author
    Martin Nolte
    \n+

    Wrapper and interface classes for element geometries.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,46 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinement.hh File Reference\n-provides a wrapper for ALBERTA's refinement patches and the corners for\n-geometryInFather _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+geometryreference.hh File Reference\n+Wrapper and interface classes for element geometries. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b3_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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-provides a wrapper for ALBERTA's refinement patches and the corners for\n-geometryInFather\n- Author\n- Martin Nolte\n+Wrapper and interface classes for element geometries.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00620_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00620_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: refinement.hh Source File\n+dune-grid: geometryreference.hh Source File\n \n \n \n \n \n \n \n@@ -74,454 +74,225 @@\n \n \n
    \n
    \n-
    refinement.hh
    \n+
    geometryreference.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_REFINEMENT_HH
    \n-
    6#define DUNE_ALBERTA_REFINEMENT_HH
    \n+
    5#ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH
    \n+
    6#define DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH
    \n
    7
    \n-
    14#include <cassert>
    \n+
    12#include <dune/common/typetraits.hh>
    \n+
    13
    \n+
    14#include <dune/geometry/type.hh>
    \n
    15
    \n-\n-\n-
    18
    \n-
    19#if HAVE_ALBERTA
    \n+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n
    20
    \n-
    21namespace Dune
    \n-
    22{
    \n+
    21 // GeometryReference
    \n+
    22 // -----------------
    \n
    23
    \n-
    24 namespace Alberta
    \n-
    25 {
    \n-
    26
    \n-
    27 // Internal Forward Declarations
    \n-
    28 // -----------------------------
    \n-
    29
    \n-
    30 template< int dim, int codim >
    \n-\n+
    24 template< class Implementation >
    \n+
    \n+\n+
    26 {
    \n+\n+
    28
    \n+
    29 public:
    \n+
    30 static const int mydimension = Implementation::mydimension;
    \n+
    31 static const int coorddimension = Implementation::coorddimension;
    \n
    32
    \n-
    33
    \n+
    33 typedef typename Implementation::ctype ctype;
    \n
    34
    \n-
    35 // Patch
    \n-
    36 // -----
    \n+
    35 typedef typename Implementation::LocalCoordinate LocalCoordinate;
    \n+
    36 typedef typename Implementation::GlobalCoordinate GlobalCoordinate;
    \n
    37
    \n-
    38 template< int dim >
    \n-
    \n-
    39 class Patch
    \n-
    40 {
    \n-
    41 typedef Patch< dim > This;
    \n+
    38 typedef typename Implementation::JacobianInverseTransposed JacobianInverseTransposed;
    \n+
    39 typedef typename Implementation::JacobianTransposed JacobianTransposed;
    \n+
    40
    \n+
    41 private:
    \n
    42
    \n-
    43 static_assert(((dim >= 1) && (dim <= 3)),
    \n-
    44 "Alberta supports only dimensions 1, 2, 3");
    \n+
    43 template<class Implementation_T>
    \n+
    44 using JacobianInverseOfImplementation = decltype(typename Implementation_T::JacobianInverse{std::declval<Implementation_T>().jacobianInverse(std::declval<LocalCoordinate>())});
    \n
    45
    \n-
    46 public:
    \n-
    47 static const int dimension = dim;
    \n-
    48
    \n-\n+
    46 using JacobianInverseDefault = decltype(transpose(std::declval<JacobianInverseTransposed>()));
    \n+
    47
    \n+
    48 template<class Implementation_T>
    \n+
    49 using JacobianOfImplementation = decltype(typename Implementation_T::Jacobian{std::declval<Implementation_T>().jacobian(std::declval<LocalCoordinate>())});
    \n
    50
    \n-
    51 typedef ALBERTA RC_LIST_EL ElementList;
    \n+
    51 using JacobianDefault = decltype(transpose(std::declval<JacobianTransposed>()));
    \n
    52
    \n-
    53 private:
    \n-
    54 ElementList *list_;
    \n-
    55 int count_;
    \n-
    56
    \n-
    57 public:
    \n-
    \n-
    58 Patch ( ElementList *list, int count )
    \n-
    59 : list_( list ),
    \n-
    60 count_( count )
    \n-
    61 {
    \n-
    62 assert( count > 0 );
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    65 Element *operator[] ( int i ) const;
    \n-
    66
    \n-
    \n-
    67 int count () const
    \n-
    68 {
    \n-
    69 return count_;
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    72 template< class LevelProvider >
    \n-
    73 ElementInfo elementInfo ( int i, const LevelProvider &levelProvider ) const;
    \n+
    53
    \n+
    54 template <class I = Implementation>
    \n+
    55 [[deprecated("Geometry implementatons are required to provide a jacobian(local) method. The default implementation is deprecated and will be removed after release 2.9")]]
    \n+
    56 auto deprecatedDefaultJacobian ( const LocalCoordinate& local ) const {
    \n+
    57 return transpose(jacobianTransposed(local));
    \n+
    58 }
    \n+
    59
    \n+
    60 template <class I = Implementation>
    \n+
    61 [[deprecated("Geometry implementatons are required to provide a jacobianInverse(local) method. The default implementation is deprecated and will be removed after release 2.9")]]
    \n+
    62 auto deprecatedDefaultJacobianInverse ( const LocalCoordinate& local ) const {
    \n+
    63 return transpose(jacobianInverseTransposed(local));
    \n+
    64 }
    \n+
    65
    \n+
    66 public:
    \n+
    67
    \n+
    68 using Jacobian = Std::detected_or_t<JacobianDefault, JacobianOfImplementation, Implementation>;
    \n+
    69 using JacobianInverse = Std::detected_or_t<JacobianInverseDefault, JacobianInverseOfImplementation, Implementation>;
    \n+
    70
    \n+
    \n+
    71 explicit GeometryReference ( const Implementation &impl )
    \n+
    72 : impl_( &impl )
    \n+
    73 {}
    \n+
    \n
    74
    \n-
    75 int elementType ( int i ) const;
    \n-
    76 bool hasNeighbor ( int i, int neighbor ) const;
    \n-
    77 int neighborIndex ( int i, int neighbor ) const;
    \n+
    75 GeometryType type () const { return impl().type(); }
    \n+
    76
    \n+
    77 bool affine() const { return impl().affine(); }
    \n
    78
    \n-
    79 template< class Functor >
    \n-
    \n-
    80 void forEach ( Functor &functor ) const
    \n-
    81 {
    \n-
    82 for( int i = 0; i < count(); ++i )
    \n-
    83 functor( (*this)[ i ] );
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    86 template< int codim, class Functor >
    \n-
    \n-
    87 void forEachInteriorSubChild ( Functor &functor ) const
    \n-
    88 {
    \n-\n-
    90 }
    \n-
    \n-
    91 };
    \n+
    79 int corners () const { return impl().corners(); }
    \n+
    80 GlobalCoordinate corner ( int i ) const { return impl().corner( i ); }
    \n+
    81 GlobalCoordinate center () const { return impl().center(); }
    \n+
    82
    \n+
    \n+\n+
    84 {
    \n+
    85 return impl().global( local );
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    \n+\n+
    89 {
    \n+
    90 return impl().local( global );
    \n+
    91 }
    \n
    \n
    92
    \n-
    93
    \n-
    94 template< int dim >
    \n-
    \n-
    95 inline Element *Patch< dim >::operator[] ( int i ) const
    \n-
    96 {
    \n-
    97 assert( (i >= 0) && (i < count()) );
    \n-
    98 return list_[ i ].el_info.el;
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    101
    \n-
    102 template< int dim >
    \n-
    103 template< class LevelProvider >
    \n-
    104 inline typename Patch< dim >::ElementInfo
    \n+
    \n+\n+
    94 {
    \n+
    95 return impl().integrationElement( local );
    \n+
    96 }
    \n+
    \n+
    97
    \n+
    98 ctype volume () const { return impl().volume(); }
    \n+
    99
    \n+
    \n+\n+
    101 {
    \n+
    102 return impl().jacobianTransposed( local );
    \n+
    103 }
    \n+
    \n+
    104
    \n
    \n-
    105 Patch< dim >::elementInfo ( int i, const LevelProvider &levelProvider ) const
    \n+\n
    106 {
    \n-
    107 assert( (i >= 0) && (i < count()) );
    \n-
    108 return ElementInfo::createFake( list_[ i ].el_info );
    \n-
    109 }
    \n-
    \n-
    110
    \n-
    111 template<>
    \n-
    112 template< class LevelProvider >
    \n-
    113 inline typename Patch< 2 >::ElementInfo
    \n-
    \n-
    114 Patch< 2 >::elementInfo ( int i, const LevelProvider &levelProvider ) const
    \n-
    115 {
    \n-
    116 assert( (i >= 0) && (i < count()) );
    \n-
    117 const MeshPointer< 2 > &mesh = levelProvider.mesh();
    \n-
    118 const Element *element = (*this)[ i ];
    \n-
    119 const int level = levelProvider( element );
    \n-
    120 return ElementInfo::createFake( mesh, element, level );
    \n-
    121 }
    \n-
    \n-
    122
    \n-
    123
    \n-
    124 template< int dim >
    \n-
    \n-
    125 inline int Patch< dim >::elementType ( int i ) const
    \n-
    126 {
    \n-
    127 assert( (i >= 0) && (i < count()) );
    \n-
    128 return list_[ i ].el_info.el_type;
    \n-
    129 }
    \n+
    107 return impl().jacobianInverseTransposed( local );
    \n+
    108 }
    \n+
    \n+
    109
    \n+
    \n+\n+
    111 {
    \n+
    112 if constexpr(Std::is_detected_v<JacobianOfImplementation, Implementation>)
    \n+
    113 return impl().jacobian(local);
    \n+
    114 else
    \n+
    115 return deprecatedDefaultJacobian(local);
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+\n+
    119 {
    \n+
    120 if constexpr(Std::is_detected_v<JacobianInverseOfImplementation, Implementation>)
    \n+
    121 return impl().jacobianInverse(local);
    \n+
    122 else
    \n+
    123 return deprecatedDefaultJacobianInverse(local);
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    126 const Implementation &impl () const { return *impl_; }
    \n+
    127
    \n+
    128 private:
    \n+
    129 const Implementation *impl_;
    \n+
    130 };
    \n
    \n-
    130
    \n
    131
    \n-
    132 template< int dim >
    \n-
    \n-
    133 inline bool Patch< dim >::hasNeighbor ( int i, int neighbor ) const
    \n-
    134 {
    \n-
    135 return (list_[ i ].neigh[ neighbor ] != NULL);
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    138 template< int dim >
    \n-
    \n-
    139 inline int Patch< dim >::neighborIndex ( int i, int neighbor ) const
    \n-
    140 {
    \n-
    141 assert( hasNeighbor( i, neighbor ) );
    \n-
    142 return (list_[ i ].neigh[ neighbor ]->no);
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    145
    \n-
    146
    \n-
    147 // ForEachInteriorSubChild
    \n-
    148 // -----------------------
    \n+
    132
    \n+
    133 // LocalGeometryReference
    \n+
    134 // -----------------------
    \n+
    135
    \n+
    136 template< int mydim, int cdim, class Grid >
    \n+
    \n+\n+
    138 : public GeometryReference< typename std::remove_const< Grid >::type::Traits::template Codim< std::remove_const< Grid >::type::dimension - mydim >::LocalGeometryImpl >
    \n+
    139 {
    \n+
    140 typedef typename std::remove_const< Grid >::type::Traits::template Codim< std::remove_const< Grid >::type::dimension - mydim >::LocalGeometryImpl Implementation;
    \n+
    141
    \n+
    142 public:
    \n+
    \n+
    143 LocalGeometryReference ( const Implementation &impl )
    \n+
    144 : GeometryReference< Implementation >( impl )
    \n+
    145 {}
    \n+
    \n+
    146 };
    \n+
    \n+
    147
    \n+
    148
    \n
    149
    \n-
    150 template< int dim >
    \n-
    \n-
    151 struct ForEachInteriorSubChild< dim, 0 >
    \n-
    152 {
    \n-
    153 template< class Functor >
    \n-
    \n-
    154 static void apply ( Functor &functor, const Patch< dim > &patch )
    \n-
    155 {
    \n-
    156 for( int i = 0; i < patch.count(); ++i )
    \n-
    157 {
    \n-
    158 Element *const father = patch[ i ];
    \n-
    159 functor( father->child[ 0 ], 0 );
    \n-
    160 functor( father->child[ 1 ], 0 );
    \n-
    161 }
    \n-
    162 }
    \n-
    \n-
    163 };
    \n-
    \n-
    164
    \n-
    165 template< int dim >
    \n-
    \n-
    166 struct ForEachInteriorSubChild< dim, dim >
    \n-
    167 {
    \n-
    168 template< class Functor >
    \n-
    \n-
    169 static void apply ( Functor &functor, const Patch< dim > &patch )
    \n-
    170 {
    \n-
    171 functor( patch[ 0 ]->child[ 0 ], dim );
    \n-
    172 }
    \n-
    \n-
    173 };
    \n-
    \n-
    174
    \n-
    175 template<>
    \n-
    \n-\n-
    177 {
    \n-
    178 template< class Functor >
    \n-
    \n-
    179 static void apply ( Functor &functor, const Patch< 2 > &patch )
    \n-
    180 {
    \n-
    181 // see alberta/src/2d/lagrange_2_2d.c for details
    \n-
    182 Element *const firstFather = patch[ 0 ];
    \n-
    183
    \n-
    184 Element *const firstChild = firstFather->child[ 0 ];
    \n-
    185 functor( firstChild, 0 );
    \n-
    186 functor( firstChild, 1 );
    \n-
    187
    \n-
    188 functor( firstFather->child[ 1 ], 1 );
    \n-
    189
    \n-
    190 if( patch.count() > 1 )
    \n-
    191 {
    \n-
    192 Element *const father = patch[ 1 ];
    \n-
    193 functor( father->child[ 0 ], 1 );
    \n-
    194 }
    \n-
    195 }
    \n-
    \n-
    196 };
    \n-
    \n-
    197
    \n-
    198 template<>
    \n-
    \n-\n-
    200 {
    \n-
    201 template< class Functor >
    \n-
    \n-
    202 static void apply ( Functor &functor, const Patch< 3 > &patch )
    \n-
    203 {
    \n-
    204 // see alberta/src/3d/lagrange_3_3d.c for details
    \n-
    205 Element *const firstFather = patch[ 0 ];
    \n-
    206
    \n-
    207 Element *const firstChild = firstFather->child[ 0 ];
    \n-
    208 functor( firstChild, 0 );
    \n-
    209 functor( firstChild, 1 );
    \n-
    210 functor( firstChild, 2 );
    \n-
    211
    \n-
    212 Element *const secondChild = firstFather->child[ 1 ];
    \n-
    213 functor( secondChild, 1 );
    \n-
    214 functor( secondChild, 2 );
    \n-
    215
    \n-
    216 for( int i = 1; i < patch.count(); ++i )
    \n-
    217 {
    \n-
    218 Element *const father = patch[ i ];
    \n-
    219 const int type = patch.elementType( i );
    \n-
    220
    \n-
    221 int lr_set = 0;
    \n-
    222 if( patch.hasNeighbor( i, 0 ) && (patch.neighborIndex( i, 0 ) < i) )
    \n-
    223 lr_set |= 1;
    \n-
    224 if( patch.hasNeighbor( i, 1 ) && (patch.neighborIndex( i, 1 ) < i) )
    \n-
    225 lr_set |= 2;
    \n-
    226 assert( lr_set != 0 );
    \n-
    227
    \n-
    228 functor( father->child[ 0 ], 0 );
    \n-
    229 switch( lr_set )
    \n-
    230 {
    \n-
    231 case 1 :
    \n-
    232 functor( father->child[ 0 ], 2 );
    \n-
    233 functor( father->child[ 1 ], (type == 0 ? 1 : 2) );
    \n-
    234 break;
    \n-
    235
    \n-
    236 case 2 :
    \n-
    237 functor( father->child[ 0 ], 1 );
    \n-
    238 functor( father->child[ 1 ], (type == 0 ? 2 : 1) );
    \n-
    239 break;
    \n-
    240 }
    \n-
    241 }
    \n-
    242 }
    \n-
    \n-
    243 };
    \n-
    \n-
    244
    \n-
    245 template<>
    \n-
    \n-\n-
    247 {
    \n-
    248 template< class Functor >
    \n-
    \n-
    249 static void apply ( Functor &functor, const Patch< 3 > &patch )
    \n-
    250 {
    \n-
    251 // see alberta/src/3d/lagrange_2_3d.c for details
    \n-
    252 Element *const firstFather = patch[ 0 ];
    \n-
    253
    \n-
    254 Element *const firstChild = firstFather->child[ 0 ];
    \n-
    255 functor( firstChild, 2 );
    \n-
    256 functor( firstChild, 4 );
    \n-
    257 functor( firstChild, 5 );
    \n-
    258
    \n-
    259 functor( firstFather->child[ 1 ], 2 );
    \n-
    260
    \n-
    261 for( int i = 1; i < patch.count(); ++i )
    \n-
    262 {
    \n-
    263 Element *const father = patch[ i ];
    \n-
    264
    \n-
    265 int lr_set = 0;
    \n-
    266 if( patch.hasNeighbor( i, 0 ) && (patch.neighborIndex( i, 0 ) < i) )
    \n-
    267 lr_set = 1;
    \n-
    268 if( patch.hasNeighbor( i, 1 ) && (patch.neighborIndex( i, 1 ) < i) )
    \n-
    269 lr_set += 2;
    \n-
    270 assert( lr_set != 0 );
    \n-
    271
    \n-
    272 switch( lr_set )
    \n-
    273 {
    \n-
    274 case 1 :
    \n-
    275 functor( father->child[ 0 ], 4 );
    \n-
    276 break;
    \n-
    277
    \n-
    278 case 2 :
    \n-
    279 functor( father->child[ 0 ], 5 );
    \n-
    280 break;
    \n-
    281 }
    \n-
    282 }
    \n-
    283 }
    \n-
    \n-
    284 };
    \n-
    \n-
    285
    \n-
    286
    \n-
    287
    \n-
    288 // GeometryInFather
    \n-
    289 // ----------------
    \n-
    290
    \n-
    291 template< int dim >
    \n-\n-
    293
    \n-
    294 template<>
    \n-
    \n-\n-
    296 {
    \n-
    297 static const int dim = 1;
    \n-
    298
    \n-
    299 typedef Real LocalVector[ dim ];
    \n-
    300
    \n-
    301 static const LocalVector &
    \n-
    \n-
    302 coordinate ( int child, int /* orientation */, int i )
    \n-
    303 {
    \n-
    304 static const Real coords[ 2 ][ dim+1 ][ dim ]
    \n-
    305 = { { {0.0}, {0.5} }, { {0.5}, {1.0} } };
    \n-
    306 assert( (i >= 0) && (i <= dim) );
    \n-
    307 return coords[ child ][ i ];
    \n-
    308 }
    \n-
    \n-
    309 };
    \n-
    \n-
    310
    \n-
    311 template<>
    \n-
    \n-\n-
    313 {
    \n-
    314 static const int dim = 2;
    \n-
    315
    \n-
    316 typedef Real LocalVector[ dim ];
    \n-
    317
    \n-
    318 static const LocalVector &
    \n-
    \n-
    319 coordinate ( int child, int /* orientation */, int i )
    \n-
    320 {
    \n-
    321 static const Real coords[ 2 ][ dim+1 ][ dim ]
    \n-
    322 = { { {0.0, 1.0}, {0.0, 0.0}, {0.5, 0.0} },
    \n-
    323 { {1.0, 0.0}, {0.0, 1.0}, {0.5, 0.0} } };
    \n-
    324 assert( (i >= 0) && (i <= dim) );
    \n-
    325 return coords[ child ][ i ];
    \n-
    326 }
    \n-
    \n-
    327 };
    \n-
    \n-
    328
    \n-
    329 template<>
    \n-
    \n-\n-
    331 {
    \n-
    332 static const int dim = 3;
    \n-
    333
    \n-
    334 typedef Real LocalVector[ dim ];
    \n-
    335
    \n-
    336 static const LocalVector &
    \n-
    \n-
    337 coordinate ( int child, int orientation, int i )
    \n-
    338 {
    \n-
    339 static const Real coords[ 2 ][ dim+1 ][ dim ]
    \n-
    340 = { { {0.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} },
    \n-
    341 { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} } };
    \n-
    342 static const int flip[ 2 ][ 2 ][ dim+1 ]
    \n-
    343 = { { {0, 1, 2, 3}, {0, 1, 2, 3} }, { {0, 2, 1, 3}, {0, 1, 2, 3} } };
    \n-
    344 assert( (i >= 0) && (i <= dim) );
    \n-
    345 i = flip[ child ][ orientation ][ i ];
    \n-
    346 return coords[ child ][ i ];
    \n-
    347 }
    \n-
    \n-
    348 };
    \n-
    \n-
    349
    \n-
    350 }
    \n-
    351
    \n-
    352}
    \n-
    353
    \n-
    354#endif // #if HAVE_ALBERTA
    \n-
    355
    \n-
    356#endif
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    150 // Definitions of GeometryReference
    \n+
    151 // --------------------------------
    \n+
    152
    \n+
    153 template< class Implementation >
    \n+\n+
    155
    \n+
    156 template< class Implementation >
    \n+\n+
    158
    \n+
    159} // namespace Dune
    \n+
    160
    \n+
    161#endif // #ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA REAL_B LocalVector
    Definition misc.hh:49
    \n-
    ALBERTA EL Element
    Definition misc.hh:54
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    Definition meshpointer.hh:40
    \n-\n-
    static ElementInfo createFake(const MeshPointer &mesh, const Element *element, int level, int type=0)
    Definition elementinfo.hh:752
    \n-
    Definition refinement.hh:31
    \n-
    Definition refinement.hh:40
    \n-
    int neighborIndex(int i, int neighbor) const
    Definition refinement.hh:139
    \n-
    int elementType(int i) const
    Definition refinement.hh:125
    \n-
    int count() const
    Definition refinement.hh:67
    \n-
    ElementInfo elementInfo(int i, const LevelProvider &levelProvider) const
    Definition refinement.hh:105
    \n-
    void forEach(Functor &functor) const
    Definition refinement.hh:80
    \n-
    Element * operator[](int i) const
    Definition refinement.hh:95
    \n-
    void forEachInteriorSubChild(Functor &functor) const
    Definition refinement.hh:87
    \n-
    static const int dimension
    Definition refinement.hh:47
    \n-
    bool hasNeighbor(int i, int neighbor) const
    Definition refinement.hh:133
    \n-
    Patch(ElementList *list, int count)
    Definition refinement.hh:58
    \n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition refinement.hh:49
    \n-
    ALBERTA RC_LIST_EL ElementList
    Definition refinement.hh:51
    \n-
    static void apply(Functor &functor, const Patch< dim > &patch)
    Definition refinement.hh:154
    \n-
    static void apply(Functor &functor, const Patch< dim > &patch)
    Definition refinement.hh:169
    \n-
    static void apply(Functor &functor, const Patch< 2 > &patch)
    Definition refinement.hh:179
    \n-
    static void apply(Functor &functor, const Patch< 3 > &patch)
    Definition refinement.hh:202
    \n-
    static void apply(Functor &functor, const Patch< 3 > &patch)
    Definition refinement.hh:249
    \n-
    Definition refinement.hh:292
    \n-
    static const LocalVector & coordinate(int child, int, int i)
    Definition refinement.hh:302
    \n-
    static const LocalVector & coordinate(int child, int, int i)
    Definition refinement.hh:319
    \n-
    static const LocalVector & coordinate(int child, int orientation, int i)
    Definition refinement.hh:337
    \n+
    Definition geometryreference.hh:26
    \n+
    static const int mydimension
    Definition geometryreference.hh:30
    \n+
    ctype integrationElement(const LocalCoordinate &local) const
    Definition geometryreference.hh:93
    \n+
    ctype volume() const
    Definition geometryreference.hh:98
    \n+
    const Implementation & impl() const
    Definition geometryreference.hh:126
    \n+
    JacobianInverse jacobianInverse(const LocalCoordinate &local) const
    Definition geometryreference.hh:118
    \n+
    GlobalCoordinate center() const
    Definition geometryreference.hh:81
    \n+
    Implementation::JacobianTransposed JacobianTransposed
    Definition geometryreference.hh:39
    \n+
    GeometryReference(const Implementation &impl)
    Definition geometryreference.hh:71
    \n+
    Std::detected_or_t< JacobianInverseDefault, JacobianInverseOfImplementation, Implementation > JacobianInverse
    Definition geometryreference.hh:69
    \n+
    LocalCoordinate local(const GlobalCoordinate &global) const
    Definition geometryreference.hh:88
    \n+
    Implementation::GlobalCoordinate GlobalCoordinate
    Definition geometryreference.hh:36
    \n+
    static const int coorddimension
    Definition geometryreference.hh:31
    \n+
    bool affine() const
    Definition geometryreference.hh:77
    \n+
    GlobalCoordinate corner(int i) const
    Definition geometryreference.hh:80
    \n+
    JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate &local) const
    Definition geometryreference.hh:105
    \n+
    JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const
    Definition geometryreference.hh:100
    \n+
    int corners() const
    Definition geometryreference.hh:79
    \n+
    Implementation::LocalCoordinate LocalCoordinate
    Definition geometryreference.hh:35
    \n+
    GlobalCoordinate global(const LocalCoordinate &local) const
    Definition geometryreference.hh:83
    \n+
    Std::detected_or_t< JacobianDefault, JacobianOfImplementation, Implementation > Jacobian
    Definition geometryreference.hh:68
    \n+
    Implementation::ctype ctype
    Definition geometryreference.hh:33
    \n+
    Implementation::JacobianInverseTransposed JacobianInverseTransposed
    Definition geometryreference.hh:38
    \n+
    Jacobian jacobian(const LocalCoordinate &local) const
    Definition geometryreference.hh:110
    \n+
    GeometryType type() const
    Definition geometryreference.hh:75
    \n+
    Definition geometryreference.hh:139
    \n+
    LocalGeometryReference(const Implementation &impl)
    Definition geometryreference.hh:143
    \n+
    Wrapper and interface classes for element geometries.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,454 +1,277 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-refinement.hh\n+geometryreference.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_REFINEMENT_HH\n-6#define DUNE_ALBERTA_REFINEMENT_HH\n+5#ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH\n+6#define DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH\n 7\n-14#include \n+12#include \n+13\n+14#include \n 15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-18\n-19#if HAVE_ALBERTA\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n 20\n-21namespace _\bD_\bu_\bn_\be\n-22{\n+21 // GeometryReference\n+22 // -----------------\n 23\n-24 namespace Alberta\n-25 {\n-26\n-27 // Internal Forward Declarations\n-28 // -----------------------------\n-29\n-30 template< int dim, int codim >\n-_\b3_\b1 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd;\n+24 template< class Implementation >\n+_\b2_\b5 class _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+26 {\n+27 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b> _\bT_\bh_\bi_\bs;\n+28\n+29 public:\n+_\b3_\b0 static const int _\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Implementation::mydimension;\n+_\b3_\b1 static const int _\bc_\bo_\bo_\br_\bd_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Implementation::coorddimension;\n 32\n-33\n+_\b3_\b3 typedef typename Implementation::ctype _\bc_\bt_\by_\bp_\be;\n 34\n-35 // Patch\n-36 // -----\n+_\b3_\b5 typedef typename Implementation::LocalCoordinate _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n+_\b3_\b6 typedef typename Implementation::GlobalCoordinate _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n 37\n-38 template< int dim >\n-_\b3_\b9 class _\bP_\ba_\bt_\bc_\bh\n-40 {\n-41 typedef _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+_\b3_\b8 typedef typename Implementation::JacobianInverseTransposed\n+_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n+_\b3_\b9 typedef typename Implementation::JacobianTransposed _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n+40\n+41 private:\n 42\n-43 static_assert(((dim >= 1) && (dim <= 3)),\n-44 \"Alberta supports only dimensions 1, 2, 3\");\n+43 template\n+44 using JacobianInverseOfImplementation = decltype(typename Implementation_T::\n+JacobianInverse{std::declval().jacobianInverse(std::\n+declval())});\n 45\n-46 public:\n-_\b4_\b7 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-48\n-_\b4_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+46 using JacobianInverseDefault = decltype(transpose(std::\n+declval()));\n+47\n+48 template\n+49 using JacobianOfImplementation = decltype(typename Implementation_T::\n+Jacobian{std::declval().jacobian(std::\n+declval())});\n 50\n-_\b5_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA RC_LIST_EL _\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt;\n+51 using JacobianDefault = decltype(transpose(std::declval\n+()));\n 52\n-53 private:\n-54 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt *list_;\n-55 int count_;\n-56\n-57 public:\n-_\b5_\b8 _\bP_\ba_\bt_\bc_\bh ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt *list, int _\bc_\bo_\bu_\bn_\bt )\n-59 : list_( list ),\n-60 count_( _\bc_\bo_\bu_\bn_\bt )\n-61 {\n-62 assert( _\bc_\bo_\bu_\bn_\bt > 0 );\n-63 }\n-64\n-65 _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const;\n-66\n-_\b6_\b7 int _\bc_\bo_\bu_\bn_\bt () const\n-68 {\n-69 return count_;\n-70 }\n-71\n-72 template< class LevelProvider >\n-73 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( int i, const LevelProvider &levelProvider ) const;\n+53\n+54 template \n+55 [[deprecated(\"Geometry implementatons are required to provide a jacobian\n+(local) method. The default implementation is deprecated and will be removed\n+after release 2.9\")]]\n+56 auto deprecatedDefaultJacobian ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be& _\bl_\bo_\bc_\ba_\bl ) const {\n+57 return transpose(_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd(_\bl_\bo_\bc_\ba_\bl));\n+58 }\n+59\n+60 template \n+61 [[deprecated(\"Geometry implementatons are required to provide a\n+jacobianInverse(local) method. The default implementation is deprecated and\n+will be removed after release 2.9\")]]\n+62 auto deprecatedDefaultJacobianInverse ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be& _\bl_\bo_\bc_\ba_\bl ) const\n+{\n+63 return transpose(_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd(_\bl_\bo_\bc_\ba_\bl));\n+64 }\n+65\n+66 public:\n+67\n+_\b6_\b8 using _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn = Std::detected_or_t;\n+_\b6_\b9 using _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be = Std::detected_or_t;\n+70\n+_\b7_\b1 explicit _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be ( const Implementation &_\bi_\bm_\bp_\bl )\n+72 : impl_( &_\bi_\bm_\bp_\bl )\n+73 {}\n 74\n-75 int _\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be ( int i ) const;\n-76 bool _\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( int i, int neighbor ) const;\n-77 int _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx ( int i, int neighbor ) const;\n+_\b7_\b5 GeometryType _\bt_\by_\bp_\be () const { return _\bi_\bm_\bp_\bl().type(); }\n+76\n+_\b7_\b7 bool _\ba_\bf_\bf_\bi_\bn_\be() const { return _\bi_\bm_\bp_\bl().affine(); }\n 78\n-79 template< class Functor >\n-_\b8_\b0 void _\bf_\bo_\br_\bE_\ba_\bc_\bh ( Functor &functor ) const\n-81 {\n-82 for( int i = 0; i < _\bc_\bo_\bu_\bn_\bt(); ++i )\n-83 functor( (*this)[ i ] );\n-84 }\n-85\n-86 template< int codim, class Functor >\n-_\b8_\b7 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd ( Functor &functor ) const\n-88 {\n-89 _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( functor, *this );\n-90 }\n-91 };\n+_\b7_\b9 int _\bc_\bo_\br_\bn_\be_\br_\bs () const { return _\bi_\bm_\bp_\bl().corners(); }\n+_\b8_\b0 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bc_\bo_\br_\bn_\be_\br ( int i ) const { return _\bi_\bm_\bp_\bl().corner( i ); }\n+_\b8_\b1 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bc_\be_\bn_\bt_\be_\br () const { return _\bi_\bm_\bp_\bl().center(); }\n+82\n+_\b8_\b3 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bg_\bl_\bo_\bb_\ba_\bl ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl ) const\n+84 {\n+85 return _\bi_\bm_\bp_\bl().global( _\bl_\bo_\bc_\ba_\bl );\n+86 }\n+87\n+_\b8_\b8 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bl_\bo_\bc_\ba_\bl ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bg_\bl_\bo_\bb_\ba_\bl ) const\n+89 {\n+90 return _\bi_\bm_\bp_\bl().local( _\bg_\bl_\bo_\bb_\ba_\bl );\n+91 }\n 92\n-93\n-94 template< int dim >\n-_\b9_\b5 inline _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const\n-96 {\n-97 assert( (i >= 0) && (i < count()) );\n-98 return list_[ i ].el_info.el;\n-99 }\n-100\n-101\n-102 template< int dim >\n-103 template< class LevelProvider >\n-104 inline typename _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-_\b1_\b0_\b5 _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( int i, const LevelProvider &levelProvider )\n+_\b9_\b3 _\bc_\bt_\by_\bp_\be _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl ) const\n+94 {\n+95 return _\bi_\bm_\bp_\bl().integrationElement( _\bl_\bo_\bc_\ba_\bl );\n+96 }\n+97\n+_\b9_\b8 _\bc_\bt_\by_\bp_\be _\bv_\bo_\bl_\bu_\bm_\be () const { return _\bi_\bm_\bp_\bl().volume(); }\n+99\n+_\b1_\b0_\b0 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl )\n const\n+101 {\n+102 return _\bi_\bm_\bp_\bl().jacobianTransposed( _\bl_\bo_\bc_\ba_\bl );\n+103 }\n+104\n+_\b1_\b0_\b5 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+&_\bl_\bo_\bc_\ba_\bl ) const\n 106 {\n-107 assert( (i >= 0) && (i < count()) );\n-108 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be( list_[ i ].el_info );\n-109 }\n-110\n-111 template<>\n-112 template< class LevelProvider >\n-113 inline typename _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b2_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-_\b1_\b1_\b4 _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b2_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( int i, const LevelProvider &levelProvider ) const\n-115 {\n-116 assert( (i >= 0) && (i < count()) );\n-117 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b2_\b _\b> &mesh = levelProvider.mesh();\n-118 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = (*this)[ i ];\n-119 const int level = levelProvider( element );\n-120 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be( mesh, element, level );\n-121 }\n-122\n-123\n-124 template< int dim >\n-_\b1_\b2_\b5 inline int _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be ( int i ) const\n-126 {\n-127 assert( (i >= 0) && (i < count()) );\n-128 return list_[ i ].el_info.el_type;\n-129 }\n-130\n+107 return _\bi_\bm_\bp_\bl().jacobianInverseTransposed( _\bl_\bo_\bc_\ba_\bl );\n+108 }\n+109\n+_\b1_\b1_\b0 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be& _\bl_\bo_\bc_\ba_\bl ) const\n+111 {\n+112 if constexpr(Std::is_detected_v)\n+113 return _\bi_\bm_\bp_\bl().jacobian(_\bl_\bo_\bc_\ba_\bl);\n+114 else\n+115 return deprecatedDefaultJacobian(_\bl_\bo_\bc_\ba_\bl);\n+116 }\n+117\n+_\b1_\b1_\b8 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl ) const\n+119 {\n+120 if constexpr(Std::is_detected_v)\n+121 return _\bi_\bm_\bp_\bl().jacobianInverse(_\bl_\bo_\bc_\ba_\bl);\n+122 else\n+123 return deprecatedDefaultJacobianInverse(_\bl_\bo_\bc_\ba_\bl);\n+124 }\n+125\n+_\b1_\b2_\b6 const Implementation &_\bi_\bm_\bp_\bl () const { return *impl_; }\n+127\n+128 private:\n+129 const Implementation *impl_;\n+130 };\n 131\n-132 template< int dim >\n-_\b1_\b3_\b3 inline bool _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( int i, int neighbor ) const\n-134 {\n-135 return (list_[ i ].neigh[ neighbor ] != NULL);\n-136 }\n-137\n-138 template< int dim >\n-_\b1_\b3_\b9 inline int _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx ( int i, int neighbor ) const\n-140 {\n-141 assert( hasNeighbor( i, neighbor ) );\n-142 return (list_[ i ].neigh[ neighbor ]->no);\n-143 }\n-144\n-145\n-146\n-147 // ForEachInteriorSubChild\n-148 // -----------------------\n+132\n+133 // LocalGeometryReference\n+134 // -----------------------\n+135\n+136 template< int mydim, int cdim, class Grid >\n+_\b1_\b3_\b7 class _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+138 : public _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be< typename std::remove_const< Grid >::type::\n+Traits::template Codim< std::remove_const< Grid >::type::dimension - mydim >::\n+LocalGeometryImpl >\n+139 {\n+140 typedef typename std::remove_const< Grid >::type::Traits::template Codim<\n+std::remove_const< Grid >::type::dimension - mydim >::LocalGeometryImpl\n+Implementation;\n+141\n+142 public:\n+_\b1_\b4_\b3 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be ( const Implementation &_\bi_\bm_\bp_\bl )\n+144 : _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be< Implementation >( _\bi_\bm_\bp_\bl )\n+145 {}\n+146 };\n+147\n+148\n 149\n-150 template< int dim >\n-_\b1_\b5_\b1 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< dim, 0 >\n-152 {\n-153 template< class Functor >\n-_\b1_\b5_\b4 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b> &patch )\n-155 {\n-156 for( int i = 0; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n-157 {\n-158 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n-159 functor( father->child[ 0 ], 0 );\n-160 functor( father->child[ 1 ], 0 );\n-161 }\n-162 }\n-163 };\n-164\n-165 template< int dim >\n-_\b1_\b6_\b6 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< dim, dim >\n-167 {\n-168 template< class Functor >\n-_\b1_\b6_\b9 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b> &patch )\n-170 {\n-171 functor( patch[ 0 ]->child[ 0 ], dim );\n-172 }\n-173 };\n-174\n-175 template<>\n-_\b1_\b7_\b6 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< 2, 1 >\n-177 {\n-178 template< class Functor >\n-_\b1_\b7_\b9 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b2_\b _\b> &patch )\n-180 {\n-181 // see alberta/src/2d/lagrange_2_2d.c for details\n-182 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstFather = patch[ 0 ];\n-183\n-184 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstChild = firstFather->child[ 0 ];\n-185 functor( firstChild, 0 );\n-186 functor( firstChild, 1 );\n-187\n-188 functor( firstFather->child[ 1 ], 1 );\n-189\n-190 if( patch._\bc_\bo_\bu_\bn_\bt() > 1 )\n-191 {\n-192 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ 1 ];\n-193 functor( father->child[ 0 ], 1 );\n-194 }\n-195 }\n-196 };\n-197\n-198 template<>\n-_\b1_\b9_\b9 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< 3, 1 >\n-200 {\n-201 template< class Functor >\n-_\b2_\b0_\b2 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b3_\b _\b> &patch )\n-203 {\n-204 // see alberta/src/3d/lagrange_3_3d.c for details\n-205 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstFather = patch[ 0 ];\n-206\n-207 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstChild = firstFather->child[ 0 ];\n-208 functor( firstChild, 0 );\n-209 functor( firstChild, 1 );\n-210 functor( firstChild, 2 );\n-211\n-212 _\bE_\bl_\be_\bm_\be_\bn_\bt *const secondChild = firstFather->child[ 1 ];\n-213 functor( secondChild, 1 );\n-214 functor( secondChild, 2 );\n-215\n-216 for( int i = 1; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n-217 {\n-218 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n-219 const int type = patch._\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be( i );\n-220\n-221 int lr_set = 0;\n-222 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 0 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 0 ) < i) )\n-223 lr_set |= 1;\n-224 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 1 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 1 ) < i) )\n-225 lr_set |= 2;\n-226 assert( lr_set != 0 );\n-227\n-228 functor( father->child[ 0 ], 0 );\n-229 switch( lr_set )\n-230 {\n-231 case 1 :\n-232 functor( father->child[ 0 ], 2 );\n-233 functor( father->child[ 1 ], (type == 0 ? 1 : 2) );\n-234 break;\n-235\n-236 case 2 :\n-237 functor( father->child[ 0 ], 1 );\n-238 functor( father->child[ 1 ], (type == 0 ? 2 : 1) );\n-239 break;\n-240 }\n-241 }\n-242 }\n-243 };\n-244\n-245 template<>\n-_\b2_\b4_\b6 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< 3, 2 >\n-247 {\n-248 template< class Functor >\n-_\b2_\b4_\b9 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b3_\b _\b> &patch )\n-250 {\n-251 // see alberta/src/3d/lagrange_2_3d.c for details\n-252 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstFather = patch[ 0 ];\n-253\n-254 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstChild = firstFather->child[ 0 ];\n-255 functor( firstChild, 2 );\n-256 functor( firstChild, 4 );\n-257 functor( firstChild, 5 );\n-258\n-259 functor( firstFather->child[ 1 ], 2 );\n-260\n-261 for( int i = 1; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n-262 {\n-263 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n-264\n-265 int lr_set = 0;\n-266 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 0 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 0 ) < i) )\n-267 lr_set = 1;\n-268 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 1 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 1 ) < i) )\n-269 lr_set += 2;\n-270 assert( lr_set != 0 );\n-271\n-272 switch( lr_set )\n-273 {\n-274 case 1 :\n-275 functor( father->child[ 0 ], 4 );\n-276 break;\n-277\n-278 case 2 :\n-279 functor( father->child[ 0 ], 5 );\n-280 break;\n-281 }\n-282 }\n-283 }\n-284 };\n-285\n-286\n-287\n-288 // GeometryInFather\n-289 // ----------------\n-290\n-291 template< int dim >\n-_\b2_\b9_\b2 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br;\n-293\n-294 template<>\n-_\b2_\b9_\b5 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br< 1 >\n-296 {\n-_\b2_\b9_\b7 static const int dim = 1;\n-298\n-_\b2_\b9_\b9 typedef _\bR_\be_\ba_\bl _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br[ dim ];\n-300\n-301 static const _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n-_\b3_\b0_\b2 _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int child, int /* orientation */, int i )\n-303 {\n-304 static const _\bR_\be_\ba_\bl coords[ 2 ][ dim+1 ][ dim ]\n-305 = { { {0.0}, {0.5} }, { {0.5}, {1.0} } };\n-306 assert( (i >= 0) && (i <= dim) );\n-307 return coords[ child ][ i ];\n-308 }\n-309 };\n-310\n-311 template<>\n-_\b3_\b1_\b2 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br< 2 >\n-313 {\n-_\b3_\b1_\b4 static const int dim = 2;\n-315\n-_\b3_\b1_\b6 typedef _\bR_\be_\ba_\bl _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br[ dim ];\n-317\n-318 static const _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n-_\b3_\b1_\b9 _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int child, int /* orientation */, int i )\n-320 {\n-321 static const _\bR_\be_\ba_\bl coords[ 2 ][ dim+1 ][ dim ]\n-322 = { { {0.0, 1.0}, {0.0, 0.0}, {0.5, 0.0} },\n-323 { {1.0, 0.0}, {0.0, 1.0}, {0.5, 0.0} } };\n-324 assert( (i >= 0) && (i <= dim) );\n-325 return coords[ child ][ i ];\n-326 }\n-327 };\n-328\n-329 template<>\n-_\b3_\b3_\b0 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br< 3 >\n-331 {\n-_\b3_\b3_\b2 static const int dim = 3;\n-333\n-_\b3_\b3_\b4 typedef _\bR_\be_\ba_\bl _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br[ dim ];\n-335\n-336 static const _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n-_\b3_\b3_\b7 _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int child, int orientation, int i )\n-338 {\n-339 static const _\bR_\be_\ba_\bl coords[ 2 ][ dim+1 ][ dim ]\n-340 = { { {0.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} },\n-341 { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} } };\n-342 static const int flip[ 2 ][ 2 ][ dim+1 ]\n-343 = { { {0, 1, 2, 3}, {0, 1, 2, 3} }, { {0, 2, 1, 3}, {0, 1, 2, 3} } };\n-344 assert( (i >= 0) && (i <= dim) );\n-345 i = flip[ child ][ orientation ][ i ];\n-346 return coords[ child ][ i ];\n-347 }\n-348 };\n-349\n-350 }\n-351\n-352}\n-353\n-354#endif // #if HAVE_ALBERTA\n-355\n-356#endif\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+150 // Definitions of GeometryReference\n+151 // --------------------------------\n+152\n+153 template< class Implementation >\n+154 const int _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+155\n+156 template< class Implementation >\n+157 const int _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+158\n+159} // namespace Dune\n+160\n+161#endif // #ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_B LocalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ALBERTA EL Element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be\n-static ElementInfo createFake(const MeshPointer &mesh, const Element *element,\n-int level, int type=0)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:752\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx\n-int neighborIndex(int i, int neighbor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-int elementType(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bc_\bo_\bu_\bn_\bt\n-int count() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo elementInfo(int i, const LevelProvider &levelProvider) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh\n-void forEach(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-Element * operator[](int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd\n-void forEachInteriorSubChild(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\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 refinement.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n-bool hasNeighbor(int i, int neighbor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n-Patch(ElementList *list, int count)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt\n-ALBERTA RC_LIST_EL ElementList\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(Functor &functor, const Patch< dim > &patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(Functor &functor, const Patch< dim > &patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:169\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(Functor &functor, const Patch< 2 > &patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(Functor &functor, const Patch< 3 > &patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(Functor &functor, const Patch< 3 > &patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b1_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-static const LocalVector & coordinate(int child, int, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:302\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b2_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-static const LocalVector & coordinate(int child, int, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b3_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-static const LocalVector & coordinate(int child, int orientation, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:337\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int mydimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ctype integrationElement(const LocalCoordinate &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bv_\bo_\bl_\bu_\bm_\be\n+ctype volume() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bi_\bm_\bp_\bl\n+const Implementation & impl() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be\n+JacobianInverse jacobianInverse(const LocalCoordinate &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br\n+GlobalCoordinate center() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+Implementation::JacobianTransposed JacobianTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+GeometryReference(const Implementation &impl)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be\n+Std::detected_or_t< JacobianInverseDefault, JacobianInverseOfImplementation,\n+Implementation > JacobianInverse\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl\n+LocalCoordinate local(const GlobalCoordinate &global) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+Implementation::GlobalCoordinate GlobalCoordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int coorddimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\ba_\bf_\bf_\bi_\bn_\be\n+bool affine() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bo_\br_\bn_\be_\br\n+GlobalCoordinate corner(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate\n+&local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bs\n+int corners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+Implementation::LocalCoordinate LocalCoordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl\n+GlobalCoordinate global(const LocalCoordinate &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+Std::detected_or_t< JacobianDefault, JacobianOfImplementation, Implementation >\n+Jacobian\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Implementation::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+Implementation::JacobianInverseTransposed JacobianInverseTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+Jacobian jacobian(const LocalCoordinate &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+LocalGeometryReference(const Implementation &impl)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:143\n+_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n+Wrapper and interface classes for element geometries.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00623.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00623.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: meshpointer.hh File Reference\n+dune-grid: intersection.cc File Reference\n \n \n \n \n \n \n \n@@ -71,48 +71,56 @@\n \n
    \n
    \n
    \n \n-
    meshpointer.hh File Reference
    \n+Namespaces |\n+Macros
    \n+
    intersection.cc File Reference
    \n \n
    \n-\n-

    provides a wrapper for ALBERTA's mesh structure \n-More...

    \n-
    #include <limits>
    \n-#include <string>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n-#include <dune/grid/albertagrid/macrodata.hh>
    \n-#include <dune/grid/albertagrid/projection.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::Alberta::MeshPointer< dim >
    struct  Dune::AlbertaGridIntersectionBase< Grid >::GlobalCoordReader< GridImp >
     
    class  Dune::Alberta::MeshPointer< dim >::MacroIterator
    struct  Dune::AlbertaGridIntersectionBase< Grid >::LocalCoordReader< GridImp >
     
    \n \n \n \n \n-\n-\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n+\n+\n+\n

    \n+Macros

    #define DUNE_ALBERTA_INTERSECTION_CC
     
    \n-

    Detailed Description

    \n-

    provides a wrapper for ALBERTA's mesh structure

    \n-
    Author
    Martin Nolte
    \n-
    \n+

    Macro Definition Documentation

    \n+\n+

    ◆ DUNE_ALBERTA_INTERSECTION_CC

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define DUNE_ALBERTA_INTERSECTION_CC
    \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,34 +1,29 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-meshpointer.hh File Reference\n-provides a wrapper for ALBERTA's mesh structure _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n+intersection.cc File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp\n+ _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n+M\bMa\bac\bcr\bro\bos\bs\n+#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bI_\bN_\bT_\bE_\bR_\bS_\bE_\bC_\bT_\bI_\bO_\bN_\b__\bC_\bC\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-provides a wrapper for ALBERTA's mesh structure\n- Author\n- Martin Nolte\n+*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_I\bIN\bNT\bTE\bER\bRS\bSE\bEC\bCT\bTI\bIO\bON\bN_\b_C\bCC\bC *\b**\b**\b**\b**\b*\n+#define DUNE_ALBERTA_INTERSECTION_CC\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00623_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00623_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: meshpointer.hh Source File\n+dune-grid: intersection.cc Source File\n \n \n \n \n \n \n \n@@ -74,623 +74,618 @@\n \n \n \n
    \n-
    meshpointer.hh
    \n+
    intersection.cc
    \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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_MESHPOINTER_HH
    \n-
    6#define DUNE_ALBERTA_MESHPOINTER_HH
    \n+
    5#ifndef DUNE_ALBERTA_INTERSECTION_CC
    \n+
    6#define DUNE_ALBERTA_INTERSECTION_CC
    \n
    7
    \n-
    13#include <limits>
    \n-
    14#include <string>
    \n+\n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    12
    \n+
    13 // AlbertaGridIntersectionBase
    \n+
    14 // ---------------------------
    \n
    15
    \n-\n-\n-\n-\n-
    20
    \n-
    21#if HAVE_ALBERTA
    \n-
    22
    \n-
    23namespace Dune
    \n-
    24{
    \n-
    25
    \n-
    26 namespace Alberta
    \n-
    27 {
    \n-
    28
    \n-
    29 // External Forward Declarations
    \n-
    30 // -----------------------------
    \n-
    31
    \n-
    32 template< int dim >
    \n-
    33 class HierarchyDofNumbering;
    \n-
    34
    \n-
    35 // MeshPointer
    \n-
    36 // -----------
    \n-
    37
    \n-
    38 template< int dim >
    \n-
    \n-\n-
    40 {
    \n-\n-\n-
    43 typedef typename ElementInfo::FillFlags FillFlags;
    \n-
    44
    \n-
    45 class BoundaryProvider;
    \n-
    46
    \n-
    47 template< int dimWorld >
    \n-
    48 struct Library;
    \n-
    49
    \n-
    50 public:
    \n-
    51 class MacroIterator;
    \n-
    52
    \n-
    \n-\n-
    54 : mesh_( 0 )
    \n-
    55 {}
    \n-
    \n-
    56
    \n-
    \n-
    57 explicit MeshPointer ( Mesh *mesh )
    \n-
    58 : mesh_( mesh )
    \n-
    59 {}
    \n-
    \n-
    60
    \n-
    \n-
    61 operator Mesh * () const
    \n-
    62 {
    \n-
    63 return mesh_;
    \n-
    64 }
    \n+
    16 template< class Grid >
    \n+
    17 inline AlbertaGridIntersectionBase< Grid >
    \n+
    \n+
    18 ::AlbertaGridIntersectionBase ()
    \n+
    19 : grid_( nullptr ),
    \n+
    20 elementInfo_(),
    \n+
    21 oppVertex_( -1 ) // mark invalid intersection
    \n+
    22 {}
    \n+
    \n+
    23
    \n+
    24 template< class Grid >
    \n+\n+
    \n+
    26 ::AlbertaGridIntersectionBase ( const EntityImp &entity, const int oppVertex )
    \n+
    27 : grid_( &entity.grid() ),
    \n+
    28 elementInfo_( entity.elementInfo() ),
    \n+
    29 oppVertex_( oppVertex )
    \n+
    30 {}
    \n
    \n-
    65
    \n+
    31
    \n+
    32
    \n+
    33 template< class Grid >
    \n+
    34 inline typename Grid::template Codim< 0 >::Entity
    \n+
    \n+\n+
    36 {
    \n+\n+
    38 return EntityImp( grid(), elementInfo(), 0 );
    \n+
    39 }
    \n+
    \n+
    40
    \n+
    41
    \n+
    42 template< class Grid >
    \n+
    \n+\n+
    44 {
    \n+
    45 return elementInfo().isBoundary( oppVertex_ );
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    48
    \n+
    49 template< class Grid >
    \n+
    \n+\n+
    51 {
    \n+
    52 if( boundary() )
    \n+
    53 {
    \n+
    54 const int id = elementInfo().boundaryId( oppVertex_ );
    \n+
    55 assert( id != 0 );
    \n+
    56 return id;
    \n+
    57 }
    \n+
    58 else
    \n+
    59 return 0;
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+\n+
    63 template< class Grid >
    \n+
    \n+\n+
    65 {
    \n
    \n-
    66 explicit operator bool () const
    \n-
    67 {
    \n-
    68 return (bool)mesh_;
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-\n-
    72 {
    \n-
    73 return MacroIterator( *this, false );
    \n-
    74 }
    \n-
    \n-
    75
    \n+
    66 assert( boundary() );
    \n+
    67 const Alberta::BasicNodeProjection *projection = elementInfo().boundaryProjection( oppVertex_ );
    \n+
    \n+
    68 assert( projection );
    \n+
    \n+
    69 return projection->boundaryIndex();
    \n+
    70 }
    \n+
    71
    \n+
    \n+\n+
    73 template< class Grid >
    \n+
    \n+\n+
    75 {
    \n
    \n-\n-
    77 {
    \n-
    78 return MacroIterator( *this, true );
    \n-
    79 }
    \n-
    \n-
    80
    \n+
    76 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);
    \n+
    \n+
    77 return grid().alberta2generic( 1, face );
    \n+
    \n+
    78 }
    \n+
    79
    \n+
    \n+\n
    \n-
    81 int numMacroElements () const;
    \n-
    82 int size ( int codim ) const;
    \n-
    83
    \n-
    84 // create a mesh from a macrodata structure
    \n-
    85 // params: macroData - macro data structure
    \n-
    86 // returns: number of boundary segments
    \n-
    \n-
    87 unsigned int create ( const MacroData< dim > &macroData );
    \n-
    88
    \n-
    89 // create a mesh from a macrodata structure, adding projections
    \n-
    90 // params: macroData - macro data structure
    \n-
    91 // projectionFactory - factory for the projections
    \n-
    92 // returns: number of boundary segments
    \n-
    93 template< class Proj, class Impl >
    \n-
    \n-
    94 unsigned int create ( const MacroData< dim > &macroData,
    \n-
    95 const ProjectionFactoryInterface< Proj, Impl > &projectionFactory );
    \n-
    96
    \n-
    97 // create a mesh from a file
    \n-
    98 // params: filename - file name of an Alberta macro triangulation
    \n-
    99 // binary - read binary?
    \n-
    100 // returns: number of boundary segments
    \n-
    \n-
    101 unsigned int create ( const std::string &filename, bool binary = false );
    \n-
    102
    \n-
    103 // read back a mesh from a file
    \n-
    104 // params: filename - file name of an Alberta save file
    \n-
    105 // time - variable to receive the time stored in the file
    \n-
    106 // returns: number of boundary segments
    \n-
    107 //
    \n-
    108 // notes: - projections are not preserved
    \n-
    109 // - we assume that projections are added in the same order they
    \n-
    110 // inserted in when the grid was created (otherwise the boundary
    \n-
    111 // indices change)
    \n-
    \n-
    112 unsigned int read ( const std::string &filename, Real &time );
    \n-
    113
    \n-
    \n-
    114 bool write ( const std::string &filename, Real time ) const;
    \n-
    115
    \n-
    \n-
    116 void release ();
    \n-
    117
    \n-
    118 template< class Functor >
    \n-
    \n-
    119 void hierarchicTraverse ( Functor &functor,
    \n-
    120 typename FillFlags::Flags fillFlags = FillFlags::standard ) const;
    \n-
    121
    \n-
    122 template< class Functor >
    \n-
    \n-
    123 void leafTraverse ( Functor &functor,
    \n-
    124 typename FillFlags::Flags fillFlags = FillFlags::standard ) const;
    \n-
    125
    \n-
    \n-
    126 bool coarsen ( typename FillFlags::Flags fillFlags = FillFlags::nothing );
    \n-
    127
    \n-
    \n-
    128 bool refine ( typename FillFlags::Flags fillFlags = FillFlags::nothing );
    \n-
    129
    \n-
    130 private:
    \n-
    131 static ALBERTA NODE_PROJECTION *
    \n-
    132 initNodeProjection ( [[maybe_unused]] Mesh *mesh, ALBERTA MACRO_EL *macroElement, int n );
    \n-
    133 template< class ProjectionProvider >
    \n-
    134 static ALBERTA NODE_PROJECTION *
    \n-
    135 initNodeProjection ( Mesh *mesh, ALBERTA MACRO_EL *macroElement, int n );
    \n-
    136
    \n-
    137 Mesh *mesh_;
    \n-
    138 };
    \n-
    139
    \n-
    140
    \n+
    81 template< class Grid >
    \n+
    \n+
    82 inline GeometryType AlbertaGridIntersectionBase< Grid >::type () const
    \n+
    83 {
    \n+
    84 return GeometryTypes::simplex( dimension-1 );
    \n+
    85 }
    \n+
    \n+
    86
    \n+
    87
    \n+
    \n+
    88 template< class Grid >
    \n+
    \n+\n+
    \n+\n+
    91 {
    \n+
    92 const typename Entity::Geometry geoInside = inside().geometry();
    \n+
    93
    \n+
    94 const int face = indexInInside();
    \n+
    95 auto refSimplex = ReferenceElements< ctype, dimension >::simplex();
    \n+
    96 FieldVector< ctype, dimension > refNormal = refSimplex.integrationOuterNormal( face );
    \n+
    97
    \n+
    98 const typename Entity::Geometry::JacobianInverseTransposed &jInvT
    \n+
    99 = geoInside.impl().jacobianInverseTransposed();
    \n+
    100
    \n+
    101 NormalVector normal;
    \n+
    102 jInvT.mv( refNormal, normal );
    \n+
    103 normal *= geoInside.impl().integrationElement();
    \n+
    104
    \n+
    105 return normal;
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    108 template<>
    \n+\n+
    \n+
    110 AlbertaGridIntersectionBase< const AlbertaGrid< 1, 1 > >::centerIntegrationOuterNormal () const
    \n+
    111 {
    \n+
    112 const Alberta::GlobalVector &oppCoord = grid().getCoord( elementInfo(), oppVertex_ );
    \n+
    113 const Alberta::GlobalVector &myCoord = grid().getCoord( elementInfo(), 1-oppVertex_ );
    \n+
    114 NormalVector n;
    \n+
    115 n[ 0 ] = (myCoord[ 0 ] > oppCoord[ 0 ] ? ctype( 1 ) : -ctype( 1 ));
    \n+
    116 return n;
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    119#if defined GRIDDIM && GRIDDIM > 1
    \n+
    120 template<>
    \n+\n+
    122 AlbertaGridIntersectionBase< const AlbertaGrid< 2, 2 > >::centerIntegrationOuterNormal () const
    \n+
    123 {
    \n+
    124 const Alberta::GlobalVector &coordOne = grid().getCoord( elementInfo(), (oppVertex_+1)%3 );
    \n+
    125 const Alberta::GlobalVector &coordTwo = grid().getCoord( elementInfo(), (oppVertex_+2)%3 );
    \n+
    126
    \n+
    127 NormalVector n;
    \n+
    128 n[ 0 ] = -(coordOne[ 1 ] - coordTwo[ 1 ]);
    \n+
    129 n[ 1 ] = coordOne[ 0 ] - coordTwo[ 0 ];
    \n+
    130 return n;
    \n+
    131 }
    \n+
    132#endif // defined GRIDDIM && GRIDDIM > 1
    \n+
    133
    \n+
    134 template<>
    \n+
    135 inline AlbertaGridIntersectionBase< const AlbertaGrid< 3, 3 > >::NormalVector
    \n+
    \n+
    136 AlbertaGridIntersectionBase< const AlbertaGrid< 3, 3 > >::centerIntegrationOuterNormal () const
    \n+
    137 {
    \n+
    138 // in this case the orientation is negative, multiply by -1
    \n+
    139 const ALBERTA EL_INFO &elInfo = elementInfo().elInfo();
    \n+
    140 const ctype val = (elInfo.orientation > 0) ? 1.0 : -1.0;
    \n
    141
    \n-
    142 // MeshPointer::Library
    \n-
    143 // --------------------
    \n-
    144
    \n-
    145 template< int dim >
    \n-
    146 template< int dimWorld >
    \n-
    147 struct MeshPointer< dim >::Library
    \n-
    148 {
    \n-\n-
    150
    \n-
    151 static inline unsigned int boundaryCount = 0;
    \n-
    152 static inline const void *projectionFactory = nullptr;
    \n-
    153
    \n-
    154 static void
    \n-
    155 create ( MeshPointer &ptr, const MacroData< dim > &macroData,
    \n-
    156 ALBERTA NODE_PROJECTION *(*initNodeProjection)( Mesh *, ALBERTA MACRO_EL *, int ) );
    \n-
    157 static void release ( MeshPointer &ptr );
    \n-
    158 };
    \n-
    159
    \n-
    160
    \n-
    161
    \n-
    162 // MeshPointer::MacroIterator
    \n-
    163 // --------------------------
    \n-
    164
    \n-
    165 template< int dim >
    \n-
    \n-\n-
    167 {
    \n-\n-
    169
    \n-
    170 friend class MeshPointer< dim >;
    \n-
    171
    \n-
    172 public:
    \n-\n-\n+
    142 static const int faceVertices[ 4 ][ 3 ]
    \n+
    143 = { {1,3,2}, {0,2,3}, {0,3,1}, {0,1,2} };
    \n+
    144 const int *localFaces = faceVertices[ oppVertex_ ];
    \n+
    145
    \n+
    146 const Alberta::GlobalVector &coord0 = grid().getCoord( elementInfo(), localFaces[ 0 ] );
    \n+
    147 const Alberta::GlobalVector &coord1 = grid().getCoord( elementInfo(), localFaces[ 1 ] );
    \n+
    148 const Alberta::GlobalVector &coord2 = grid().getCoord( elementInfo(), localFaces[ 2 ] );
    \n+
    149
    \n+
    150 FieldVector< ctype, dimensionworld > u;
    \n+
    151 FieldVector< ctype, dimensionworld > v;
    \n+
    152 for( int i = 0; i < dimension; ++i )
    \n+
    153 {
    \n+
    154 v[ i ] = coord1[ i ] - coord0[ i ];
    \n+
    155 u[ i ] = coord2[ i ] - coord1[ i ];
    \n+
    156 }
    \n+
    157
    \n+
    158 NormalVector n;
    \n+
    159 for( int i = 0; i < dimension; ++i )
    \n+
    160 {
    \n+
    161 const int j = (i+1)%dimension;
    \n+
    162 const int k = (i+2)%dimension;
    \n+
    163 n[ i ] = val * (u[ j ] * v[ k ] - u[ k ] * v[ j ]);
    \n+
    164 }
    \n+
    165 return n;
    \n+
    166 }
    \n+
    \n+
    167
    \n+
    168
    \n+
    169 template< class Grid >
    \n+\n+
    \n+\n+
    172 {
    \n+
    173 return centerIntegrationOuterNormal();
    \n+
    174 }
    \n+
    \n
    175
    \n-
    \n-\n-
    177 : mesh_(),
    \n-
    178 index_( -1 )
    \n-
    179 {}
    \n-
    \n-
    180
    \n-
    181 private:
    \n-
    182
    \n-
    183 explicit MacroIterator ( const MeshPointer &mesh, bool end = false )
    \n-
    184 : mesh_( mesh ),
    \n-
    185 index_( end ? mesh.numMacroElements() : 0 )
    \n-
    186 {}
    \n-
    187
    \n-
    188 public:
    \n+
    176
    \n+
    177 template< class Grid >
    \n+\n+
    \n+\n+
    180 {
    \n+
    181 NormalVector normal = centerOuterNormal();
    \n+
    182 normal *= (1.0 / normal.two_norm());
    \n+
    183 return normal;
    \n+
    184 }
    \n+
    \n+
    185
    \n+
    186
    \n+
    187 template< class Grid >
    \n+\n
    \n-
    189 bool done () const
    \n-
    190 {
    \n-
    191 return (index_ >= mesh().numMacroElements());
    \n-
    192 }
    \n+\n+
    190 {
    \n+
    191 return centerIntegrationOuterNormal();
    \n+
    192 }
    \n
    \n
    193
    \n-
    \n-
    194 bool equals ( const MacroIterator &other ) const
    \n-
    195 {
    \n-
    196 return (index_ == other.index_);
    \n-
    197 }
    \n-
    \n-
    198
    \n-
    \n-
    199 void increment ()
    \n-
    200 {
    \n-
    201 assert( !done() );
    \n-
    202 ++index_;
    \n-
    203 }
    \n-
    \n-
    204
    \n+
    194
    \n+
    195 template< class Grid >
    \n+\n+
    \n+\n+
    198 {
    \n+
    199 return centerOuterNormal();
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    202
    \n+
    203 template< class Grid >
    \n+\n
    \n-\n-
    206 {
    \n-
    207 assert( !done() );
    \n-
    208 return static_cast< const MacroElement & >( mesh().mesh_->macro_els[ index_ ] );
    \n-
    209 }
    \n+\n+
    206 {
    \n+
    207 return centerUnitOuterNormal();
    \n+
    208 }
    \n
    \n+
    209
    \n
    210
    \n-
    \n-
    211 const MeshPointer &mesh () const
    \n-
    212 {
    \n-
    213 return mesh_;
    \n-
    214 }
    \n-
    \n-
    215
    \n-
    \n-
    216 This &operator++ ()
    \n-
    217 {
    \n-
    218 increment();
    \n-
    219 return *this;
    \n-
    220 }
    \n-
    \n-
    221
    \n-
    \n-
    222 ElementInfo operator* () const
    \n-
    223 {
    \n-
    224 return elementInfo();
    \n-
    225 }
    \n-
    \n-
    226
    \n-
    \n-
    227 bool operator== ( const MacroIterator &other ) const
    \n-
    228 {
    \n-
    229 return equals( other );
    \n-
    230 }
    \n-
    \n-
    231
    \n-
    \n-
    232 bool operator!= ( const MacroIterator &other ) const
    \n-
    233 {
    \n-
    234 return !equals( other );
    \n-
    235 }
    \n-
    \n-
    236
    \n-\n-
    \n-
    238 elementInfo ( typename FillFlags::Flags fillFlags = FillFlags::standard ) const
    \n-
    239 {
    \n-
    240 if( done() )
    \n-
    241 return ElementInfo();
    \n-
    242 else
    \n-
    243 return ElementInfo( mesh(), macroElement(), fillFlags );
    \n-
    244 }
    \n-
    \n-
    245
    \n-
    246 private:
    \n-
    247 MeshPointer mesh_;
    \n-
    248 int index_;
    \n-
    249 };
    \n-
    \n+
    211 template< class Grid >
    \n+\n+
    \n+\n+
    214 {
    \n+
    215 return AlbertaTransformation( elementInfo().transformation( oppVertex_ ) );
    \n+
    216 }
    \n+
    \n+
    217
    \n+
    218
    \n+
    219 template< class Grid >
    \n+
    \n+\n+
    221 {
    \n+
    222 return *grid_;
    \n+
    223 }
    \n+
    \n+
    224
    \n+
    225
    \n+
    226 template< class Grid >
    \n+\n+
    \n+\n+
    229 {
    \n+
    230 assert( !!elementInfo_ );
    \n+
    231 return elementInfo_;
    \n+
    232 }
    \n+
    \n+
    \n+
    233
    \n+
    234
    \n+
    235
    \n+
    236 // AlbertaGridIntersectionBase::GlobalCoordReader
    \n+
    237 // ----------------------------------------------
    \n+
    238
    \n+
    239 template< class GridImp >
    \n+
    \n+\n+
    241 {
    \n+
    242 typedef typename std::remove_const< GridImp >::type Grid;
    \n+
    243
    \n+
    244 static const int dimension = Grid::dimension;
    \n+
    245 static const int codimension = 1;
    \n+
    246 static const int mydimension = dimension - codimension;
    \n+
    247 static const int coorddimension = Grid::dimensionworld;
    \n+
    248
    \n+\n
    250
    \n-
    251
    \n-
    252
    \n-
    253 // Implementation of MeshPointer
    \n-
    254 // -----------------------------
    \n-
    255
    \n-
    256 template< int dim >
    \n-
    \n-\n-
    258 {
    \n-
    259 return (mesh_ ? mesh_->n_macro_el : 0);
    \n-
    260 }
    \n-
    \n-
    261
    \n-
    262
    \n-
    263 template<>
    \n-
    \n-
    264 inline int MeshPointer< 1 >::size( int codim ) const
    \n-
    265 {
    \n-
    266 assert( (codim >= 0) && (codim <= 1) );
    \n-
    267 return (codim == 0 ? mesh_->n_elements : mesh_->n_vertices);
    \n-
    268 }
    \n+\n+
    252 typedef FieldVector< ctype, coorddimension > Coordinate;
    \n+
    253
    \n+
    254 private:
    \n+
    255 const Grid &grid_;
    \n+\n+
    257 const int subEntity_;
    \n+
    258 const int twist_;
    \n+
    259
    \n+
    260 public:
    \n+
    \n+
    261 GlobalCoordReader ( const GridImp &grid,
    \n+\n+
    263 int subEntity )
    \n+
    264 : grid_( grid ),
    \n+\n+
    266 subEntity_( subEntity ),
    \n+
    267 twist_( elementInfo.template twist< codimension >( subEntity ) )
    \n+
    268 {}
    \n
    \n
    269
    \n-
    270 template<>
    \n-
    \n-
    271 inline int MeshPointer< 2 >::size( int codim ) const
    \n-
    272 {
    \n-
    273 assert( (codim >= 0) && (codim <= 2) );
    \n-
    274 if( codim == 0 )
    \n-
    275 return mesh_->n_elements;
    \n-
    276 else if( codim == 2 )
    \n-
    277 return mesh_->n_vertices;
    \n-
    278 else
    \n-
    279 return mesh_->n_edges;
    \n+
    \n+
    270 void coordinate ( int i, Coordinate &x ) const
    \n+
    271 {
    \n+
    272 assert( !elementInfo_ == false );
    \n+
    273 assert( (i >= 0) && (i <= mydimension) );
    \n+
    274
    \n+
    275 const int ti = Alberta::applyInverseTwist< mydimension >( twist_, i );
    \n+
    276 const int k = mapVertices( subEntity_, ti );
    \n+
    277 const Alberta::GlobalVector &coord = grid_.getCoord( elementInfo_, k );
    \n+
    278 for( int j = 0; j < coorddimension; ++j )
    \n+
    279 x[ j ] = coord[ j ];
    \n
    280 }
    \n
    \n
    281
    \n-
    282 template<>
    \n-
    \n-
    283 inline int MeshPointer< 3 >::size( int codim ) const
    \n-
    284 {
    \n-
    285 assert( (codim >= 0) && (codim <= 3) );
    \n-
    286 if( codim == 0 )
    \n-
    287 return mesh_->n_elements;
    \n-
    288 else if( codim == 3 )
    \n-
    289 return mesh_->n_vertices;
    \n-
    290 else if( codim == 1 )
    \n-
    291 return mesh_->n_faces;
    \n-
    292 else
    \n-
    293 return mesh_->n_edges;
    \n-
    294 }
    \n-
    \n-
    295
    \n-
    296
    \n-
    297 template< int dim >
    \n-
    298 inline unsigned int MeshPointer< dim >
    \n-
    \n-
    299 ::create ( const MacroData< dim > &macroData )
    \n-
    300 {
    \n-
    301 release();
    \n+
    \n+
    282 bool hasDeterminant () const
    \n+
    283 {
    \n+
    284 return false;
    \n+
    285 }
    \n+
    \n+
    286
    \n+
    \n+\n+
    288 {
    \n+
    289 assert( false );
    \n+
    290 return ctype( 0 );
    \n+
    291 }
    \n+
    \n+
    292
    \n+
    293 private:
    \n+
    294 static int mapVertices ( int subEntity, int i )
    \n+
    295 {
    \n+\n+
    297 }
    \n+
    298 };
    \n+
    \n+
    299
    \n+
    300
    \n+
    301
    \n
    302
    \n-
    303 Library< dimWorld >::boundaryCount = 0;
    \n-
    304 Library< dimWorld >::create( *this, macroData, &initNodeProjection );
    \n-
    305 return Library< dimWorld >::boundaryCount;
    \n-
    306 }
    \n-
    \n-
    307
    \n-
    308
    \n-
    309 template< int dim >
    \n-
    310 template< class Proj, class Impl >
    \n-
    311 inline unsigned int MeshPointer< dim >
    \n-
    \n-
    312 ::create ( const MacroData< dim > &macroData,
    \n-
    313 const ProjectionFactoryInterface< Proj, Impl > &projectionFactory )
    \n-
    314 {
    \n-\n-
    316
    \n-
    317 release();
    \n-
    318
    \n-
    319 Library< dimWorld >::boundaryCount = 0;
    \n-
    320 Library< dimWorld >::projectionFactory = &projectionFactory;
    \n-
    321 Library< dimWorld >::create( *this, macroData, &initNodeProjection< ProjectionFactory > );
    \n-
    322 Library< dimWorld >::projectionFactory = nullptr;
    \n-
    323 return Library< dimWorld >::boundaryCount;
    \n-
    324 }
    \n-
    \n-
    325
    \n+
    303 // AlbertaGridIntersectionBase::LocalCoordReader
    \n+
    304 // ---------------------------------------------
    \n+
    305
    \n+
    306 template< class GridImp >
    \n+
    \n+\n+
    308 {
    \n+
    309 typedef typename std::remove_const< GridImp >::type Grid;
    \n+
    310
    \n+
    311 static const int dimension = Grid::dimension;
    \n+
    312 static const int codimension = 1;
    \n+
    313 static const int mydimension = dimension - codimension;
    \n+
    314 static const int coorddimension = dimension;
    \n+
    315
    \n+\n+
    317
    \n+
    318 typedef FieldVector< ctype, coorddimension > Coordinate;
    \n+
    319
    \n+
    320 typedef typename Grid::template Codim< 0 >::Geometry ElementGeometry;
    \n+
    321 typedef typename Grid::template Codim< 1 >::Geometry FaceGeometry;
    \n+
    322
    \n+
    323 private:
    \n+
    324 const ElementGeometry &elementGeometry_;
    \n+
    325 const FaceGeometry &faceGeometry_;
    \n
    326
    \n-
    327
    \n-
    328
    \n-
    329 template< int dim >
    \n-
    330 inline unsigned int MeshPointer< dim >
    \n-
    \n-
    331 ::create ( const std::string &filename, bool binary )
    \n-
    332 {
    \n-
    333 MacroData< dim > macroData;
    \n-
    334 macroData.read( filename, binary );
    \n-
    335 const unsigned int boundaryCount = create( macroData );
    \n-
    336 macroData.release();
    \n-
    337 return boundaryCount;
    \n-
    338 }
    \n-
    \n-
    339
    \n-
    340
    \n-
    341 template< int dim >
    \n-
    \n-
    342 inline unsigned int MeshPointer< dim >::read ( const std::string &filename, Real &time )
    \n-
    343 {
    \n-
    344 release();
    \n-
    345
    \n-
    346 Library< dimWorld >::boundaryCount = 0;
    \n-
    347 mesh_ = ALBERTA read_mesh_xdr( filename.c_str(), &time, NULL, NULL );
    \n-
    348 return Library< dimWorld >::boundaryCount;
    \n-
    349 }
    \n+
    327 public:
    \n+
    \n+
    328 LocalCoordReader ( const ElementGeometry &elementGeometry,
    \n+
    329 const FaceGeometry &faceGeometry )
    \n+
    330 : elementGeometry_( elementGeometry ),
    \n+
    331 faceGeometry_( faceGeometry )
    \n+
    332 {}
    \n+
    \n+
    333
    \n+
    \n+
    334 void coordinate ( int i, Coordinate &x ) const
    \n+
    335 {
    \n+
    336 x = elementGeometry_.local( faceGeometry_.corner( i ) );
    \n+
    337 }
    \n+
    \n+
    338
    \n+
    \n+
    339 bool hasDeterminant () const
    \n+
    340 {
    \n+
    341 return false;
    \n+
    342 }
    \n+
    \n+
    343
    \n+
    \n+\n+
    345 {
    \n+
    346 return ctype( 0 );
    \n+
    347 }
    \n+
    \n+
    348 };
    \n
    \n+
    349
    \n
    350
    \n
    351
    \n-
    352 template< int dim >
    \n-
    \n-
    353 inline bool MeshPointer< dim >::write ( const std::string &filename, Real time ) const
    \n-
    354 {
    \n-
    355 int success = ALBERTA write_mesh_xdr( mesh_, filename.c_str(), time );
    \n-
    356 return (success == 0);
    \n-
    357 }
    \n-
    \n-
    358
    \n-
    359
    \n-
    360 template< int dim >
    \n-
    \n-\n-
    362 {
    \n-
    363 Library< dimWorld >::release( *this );
    \n-
    364 }
    \n-
    \n-
    365
    \n-
    366
    \n-
    367 template< int dim >
    \n-
    368 template< class Functor >
    \n-
    369 inline void MeshPointer< dim >
    \n-
    \n-
    370 ::hierarchicTraverse ( Functor &functor,
    \n-
    371 typename FillFlags::Flags fillFlags ) const
    \n-
    372 {
    \n-
    373 const MacroIterator eit = end();
    \n-
    374 for( MacroIterator it = begin(); it != eit; ++it )
    \n-
    375 {
    \n-
    376 const ElementInfo info = it.elementInfo( fillFlags );
    \n-
    377 info.hierarchicTraverse( functor );
    \n-
    378 }
    \n-
    379 }
    \n+
    352 // AlbertaGridLeafIntersection
    \n+
    353 // ---------------------------
    \n+
    354
    \n+
    355 template< class GridImp >
    \n+
    \n+\n+
    357 {
    \n+
    358 assert( oppVertex_ <= dimension );
    \n+
    359 ++oppVertex_;
    \n+
    360 neighborInfo_ = ElementInfo();
    \n+
    361 }
    \n+
    \n+
    362
    \n+
    363 template< class GridImp >
    \n+
    364 inline typename GridImp::template Codim< 0 >::Entity
    \n+
    \n+\n+
    366 {
    \n+\n+
    368
    \n+
    369 if( !neighborInfo_ )
    \n+
    370 {
    \n+
    371 assert( neighbor() );
    \n+
    372
    \n+
    373 neighborInfo_ = elementInfo().leafNeighbor( oppVertex_ );
    \n+
    374 }
    \n+
    375
    \n+
    376 assert( !neighborInfo_ == false );
    \n+
    377 assert( neighborInfo_.el() != NULL );
    \n+
    378 return EntityImp( grid(), neighborInfo_, 0 );
    \n+
    379 }
    \n
    \n
    380
    \n-
    381
    \n-
    382 template< int dim >
    \n-
    383 template< class Functor >
    \n-
    384 inline void MeshPointer< dim >
    \n-
    \n-
    385 ::leafTraverse ( Functor &functor,
    \n-
    386 typename FillFlags::Flags fillFlags ) const
    \n-
    387 {
    \n-
    388 const MacroIterator eit = end();
    \n-
    389 for( MacroIterator it = begin(); it != eit; ++it )
    \n-
    390 {
    \n-
    391 const ElementInfo info = it.elementInfo( fillFlags );
    \n-
    392 info.leafTraverse( functor );
    \n-
    393 }
    \n-
    394 }
    \n-
    \n-
    395
    \n-
    396
    \n-
    397 template< int dim >
    \n-
    \n-
    398 inline bool MeshPointer< dim >::coarsen ( typename FillFlags::Flags fillFlags )
    \n-
    399 {
    \n-
    400 const bool coarsened = (ALBERTA coarsen( mesh_, fillFlags ) == meshCoarsened);
    \n-
    401 if( coarsened )
    \n-
    402 ALBERTA dof_compress( mesh_ );
    \n-
    403 return coarsened;
    \n-
    404 }
    \n-
    \n+
    381 template< class GridImp >
    \n+
    \n+\n+
    383 {
    \n+
    384 assert( oppVertex_ <= dimension );
    \n+
    385 return elementInfo().hasLeafNeighbor( oppVertex_ );
    \n+
    386 }
    \n+
    \n+
    387
    \n+
    388
    \n+
    389 template< class GridImp >
    \n+\n+
    \n+\n+
    392 {
    \n+
    393 typedef AlbertaGridLocalGeometryProvider< GridImp > LocalGeoProvider;
    \n+
    394 const int twist = elementInfo().template twist< 1 >( oppVertex_ );
    \n+
    395 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);
    \n+
    396 return LocalGeometry( LocalGeoProvider::instance().faceGeometry( face, twist ) );
    \n+
    397 }
    \n+
    \n+
    398
    \n+
    399
    \n+
    400 template< class GridImp >
    \n+\n+
    \n+\n+
    403 {
    \n+
    404 assert( neighbor() );
    \n
    405
    \n-
    406 template< int dim >
    \n-
    \n-
    407 inline bool MeshPointer< dim >::refine ( typename FillFlags::Flags fillFlags )
    \n-
    408 {
    \n-
    409 return (ALBERTA refine( mesh_, fillFlags ) == meshRefined);
    \n-
    410 }
    \n-
    \n-
    \n-
    411
    \n-
    412
    \n-
    413 template< int dim >
    \n-
    414 inline ALBERTA NODE_PROJECTION *
    \n-
    415 MeshPointer< dim >::initNodeProjection ( Mesh *mesh, ALBERTA MACRO_EL *macroEl, int n )
    \n-
    416 {
    \n-
    417 const MacroElement &macroElement = static_cast< const MacroElement & >( *macroEl );
    \n-
    418 if( (n > 0) && macroElement.isBoundary( n-1 ) )
    \n-
    419 return new BasicNodeProjection( Library< dimWorld >::boundaryCount++ );
    \n-
    420 else
    \n-
    421 return 0;
    \n-
    422 }
    \n+
    406 typedef AlbertaGridLocalGeometryProvider< GridImp > LocalGeoProvider;
    \n+
    407 const ALBERTA EL_INFO &elInfo = elementInfo().elInfo();
    \n+
    408 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];
    \n+
    409 const int twist = elementInfo().twistInNeighbor( oppVertex_ );
    \n+
    410 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);
    \n+
    411 return LocalGeometry( LocalGeoProvider::instance().faceGeometry( face, twist ) );
    \n+
    412 }
    \n+
    \n+
    413
    \n+
    414
    \n+
    415 template< class GridImp >
    \n+\n+
    \n+\n+
    418 {
    \n+
    419 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);
    \n+
    420 const GlobalCoordReader coordReader( grid(), elementInfo(), face );
    \n+
    421 return Geometry( GeometryImpl( coordReader ) );
    \n+
    422 }
    \n+
    \n
    423
    \n
    424
    \n-
    425 template< int dim >
    \n-
    426 template< class ProjectionFactory >
    \n-
    427 inline ALBERTA NODE_PROJECTION *
    \n-
    428 MeshPointer< dim >::initNodeProjection ( Mesh *mesh, ALBERTA MACRO_EL *macroEl, int n )
    \n-
    429 {
    \n-
    430 typedef typename ProjectionFactory::Projection Projection;
    \n-
    431
    \n-
    432 const MacroElement &macroElement = static_cast< const MacroElement & >( *macroEl );
    \n+
    425 template< class GridImp >
    \n+
    \n+\n+
    427 {
    \n+
    428 const ALBERTA EL_INFO &elInfo = elementInfo().elInfo();
    \n+
    429 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];
    \n+
    430 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);
    \n+
    431 return grid().alberta2generic( 1, face );
    \n+
    432 }
    \n+
    \n
    433
    \n-
    434 MeshPointer< dim > meshPointer( mesh );
    \n-
    435 ElementInfo elementInfo( meshPointer, macroElement, FillFlags::standard );
    \n-
    436 const ProjectionFactory &projectionFactory = *static_cast< const ProjectionFactory * >( Library< dimWorld >::projectionFactory );
    \n-
    437 if( (n > 0) && macroElement.isBoundary( n-1 ) )
    \n-
    438 {
    \n-
    439 const unsigned int boundaryIndex = Library< dimWorld >::boundaryCount++;
    \n-
    440 if( projectionFactory.hasProjection( elementInfo, n-1 ) )
    \n-
    441 {
    \n-
    442 Projection projection = projectionFactory.projection( elementInfo, n-1 );
    \n-
    443 return new NodeProjection< dim, Projection >( boundaryIndex, projection );
    \n-
    444 }
    \n-
    445 else
    \n-
    446 return new BasicNodeProjection( boundaryIndex );
    \n-
    447 }
    \n-
    448 else if( (dim < dimWorld) && (n == 0) )
    \n-
    449 {
    \n-
    450 const unsigned int boundaryIndex = std::numeric_limits< unsigned int >::max();
    \n-
    451 if( projectionFactory.hasProjection( elementInfo ) )
    \n-
    452 {
    \n-
    453 Projection projection = projectionFactory.projection( elementInfo );
    \n-
    454 return new NodeProjection< dim, Projection >( boundaryIndex, projection );
    \n-
    455 }
    \n-
    456 else
    \n-
    457 return 0;
    \n-
    458 }
    \n-
    459 else
    \n-
    460 return 0;
    \n-
    461 }
    \n-
    462
    \n-
    463 } // namespace Alberta
    \n-
    464
    \n-
    465} // namespace Dune
    \n-
    466
    \n-
    467#endif // #if HAVE_ALBERTA
    \n-
    468
    \n-
    469#endif // #ifndef DUNE_ALBERTA_MESHPOINTER_HH
    \n+
    434} // namespace Dune
    \n+
    435
    \n+
    436#endif // #ifndef DUNE_ALBERTA_INTERSECTION_CC
    \n+
    \n+
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    provides a wrapper for ALBERTA's macro_data structure
    \n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    static const int meshRefined
    Definition misc.hh:56
    \n-
    static const int dimWorld
    Definition misc.hh:46
    \n-
    static const int meshCoarsened
    Definition misc.hh:57
    \n-
    Definition meshpointer.hh:40
    \n-
    int numMacroElements() const
    Definition meshpointer.hh:257
    \n-
    unsigned int create(const MacroData< dim > &macroData, const ProjectionFactoryInterface< Proj, Impl > &projectionFactory)
    Definition meshpointer.hh:312
    \n-
    void release()
    Definition meshpointer.hh:361
    \n-
    unsigned int read(const std::string &filename, Real &time)
    Definition meshpointer.hh:342
    \n-
    MacroIterator end() const
    Definition meshpointer.hh:76
    \n-
    bool coarsen(typename FillFlags::Flags fillFlags=FillFlags::nothing)
    Definition meshpointer.hh:398
    \n-
    int size(int codim) const
    \n-
    unsigned int create(const std::string &filename, bool binary=false)
    Definition meshpointer.hh:331
    \n-
    void leafTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:385
    \n-
    unsigned int create(const MacroData< dim > &macroData)
    Definition meshpointer.hh:299
    \n-
    MacroIterator begin() const
    Definition meshpointer.hh:71
    \n-
    MeshPointer(Mesh *mesh)
    Definition meshpointer.hh:57
    \n-
    bool write(const std::string &filename, Real time) const
    Definition meshpointer.hh:353
    \n-
    bool refine(typename FillFlags::Flags fillFlags=FillFlags::nothing)
    Definition meshpointer.hh:407
    \n-
    MeshPointer()
    Definition meshpointer.hh:53
    \n-
    void hierarchicTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:370
    \n-
    Definition elementinfo.hh:43
    \n-
    void hierarchicTraverse(Functor &functor) const
    Definition elementinfo.hh:695
    \n-
    void leafTraverse(Functor &functor) const
    Definition elementinfo.hh:708
    \n-
    Definition macrodata.hh:30
    \n-
    void release()
    release the macro data structure
    Definition macrodata.hh:127
    \n-
    void read(const std::string &filename, bool binary=false)
    Definition macrodata.hh:413
    \n-
    Definition macroelement.hh:24
    \n-
    bool isBoundary(const int face) const
    Definition macroelement.hh:42
    \n-
    Definition meshpointer.hh:167
    \n-
    const MeshPointer & mesh() const
    Definition meshpointer.hh:211
    \n-
    const MacroElement & macroElement() const
    Definition meshpointer.hh:205
    \n-
    Alberta::ElementInfo< dim > ElementInfo
    Definition meshpointer.hh:174
    \n-
    Alberta::MeshPointer< dim > MeshPointer
    Definition meshpointer.hh:173
    \n-
    ElementInfo elementInfo(typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:238
    \n-
    bool done() const
    Definition meshpointer.hh:189
    \n-
    void increment()
    Definition meshpointer.hh:199
    \n-
    bool equals(const MacroIterator &other) const
    Definition meshpointer.hh:194
    \n-
    MacroIterator()
    Definition meshpointer.hh:176
    \n-
    Definition misc.hh:231
    \n-
    static const Flags nothing
    Definition misc.hh:234
    \n-
    ALBERTA FLAGS Flags
    Definition misc.hh:232
    \n-
    static const Flags standard
    Definition misc.hh:258
    \n-
    Definition albertagrid/projection.hh:135
    \n-
    Base::Projection Projection
    Definition albertagrid/projection.hh:140
    \n-
    Definition albertagrid/projection.hh:80
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n+\n+
    LocalGeometry geometryInOutside() const
    Definition intersection.cc:402
    \n+
    GridImp::template Codim< 0 >::Entity outside() const
    Definition intersection.cc:365
    \n+
    void next()
    Definition intersection.cc:356
    \n+
    Base::GeometryImpl GeometryImpl
    Definition albertagrid/intersection.hh:130
    \n+
    int indexInOutside() const
    Definition intersection.cc:426
    \n+
    LocalGeometry geometryInInside() const
    Definition intersection.cc:391
    \n+
    Base::GlobalCoordReader GlobalCoordReader
    Definition albertagrid/intersection.hh:133
    \n+
    Base::Geometry Geometry
    Definition albertagrid/intersection.hh:122
    \n+
    Geometry geometry() const
    Definition intersection.cc:417
    \n+
    bool neighbor() const
    Definition intersection.cc:382
    \n+
    Base::LocalGeometry LocalGeometry
    Definition albertagrid/intersection.hh:123
    \n+
    Definition albertagrid/entity.hh:46
    \n+
    Definition albertagrid/geometry.hh:504
    \n+\n+
    FieldVector< ctype, coorddimension > Coordinate
    Definition intersection.cc:252
    \n+
    Alberta::Real ctype
    Definition intersection.cc:249
    \n+
    std::remove_const< GridImp >::type Grid
    Definition intersection.cc:242
    \n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition intersection.cc:251
    \n+
    ctype determinant() const
    Definition intersection.cc:287
    \n+
    bool hasDeterminant() const
    Definition intersection.cc:282
    \n+
    GlobalCoordReader(const GridImp &grid, const ElementInfo &elementInfo, int subEntity)
    Definition intersection.cc:261
    \n+
    void coordinate(int i, Coordinate &x) const
    Definition intersection.cc:270
    \n+\n+
    Grid::template Codim< 1 >::Geometry FaceGeometry
    Definition intersection.cc:321
    \n+
    Alberta::Real ctype
    Definition intersection.cc:316
    \n+
    LocalCoordReader(const ElementGeometry &elementGeometry, const FaceGeometry &faceGeometry)
    Definition intersection.cc:328
    \n+
    std::remove_const< GridImp >::type Grid
    Definition intersection.cc:309
    \n+
    void coordinate(int i, Coordinate &x) const
    Definition intersection.cc:334
    \n+
    bool hasDeterminant() const
    Definition intersection.cc:339
    \n+
    ctype determinant() const
    Definition intersection.cc:344
    \n+
    FieldVector< ctype, coorddimension > Coordinate
    Definition intersection.cc:318
    \n+
    Grid::template Codim< 0 >::Geometry ElementGeometry
    Definition intersection.cc:320
    \n+
    Definition albertagrid/intersection.hh:32
    \n+
    NormalVector centerOuterNormal() const
    Definition intersection.cc:171
    \n+
    const ElementInfo & elementInfo() const
    Definition intersection.cc:228
    \n+
    FieldVector< ctype, dimensionworld > NormalVector
    Definition albertagrid/intersection.hh:41
    \n+
    NormalVector centerIntegrationOuterNormal() const
    Definition intersection.cc:90
    \n+
    Grid::ctype ctype
    Definition albertagrid/intersection.hh:36
    \n+
    NormalVector integrationOuterNormal(const LocalCoordType &local) const
    Definition intersection.cc:189
    \n+
    ElementInfo elementInfo_
    Definition albertagrid/intersection.hh:93
    \n+
    FieldVector< ctype, dimension-1 > LocalCoordType
    Definition albertagrid/intersection.hh:42
    \n+
    NormalVector centerUnitOuterNormal() const
    Definition intersection.cc:179
    \n+
    int indexInInside() const
    Definition intersection.cc:74
    \n+
    Entity inside() const
    Definition intersection.cc:35
    \n+
    NormalVector unitOuterNormal(const LocalCoordType &local) const
    Definition intersection.cc:205
    \n+
    const Grid & grid() const
    Definition intersection.cc:220
    \n+
    static const int dimension
    Definition albertagrid/intersection.hh:38
    \n+
    bool boundary() const
    Definition intersection.cc:43
    \n+
    size_t boundarySegmentIndex() const
    Definition intersection.cc:64
    \n+
    GeometryType type() const
    Definition intersection.cc:82
    \n+
    AlbertaTransformation transformation() const
    Definition intersection.cc:213
    \n+
    NormalVector outerNormal(const LocalCoordType &local) const
    Definition intersection.cc:197
    \n+
    int boundaryId() const
    Definition intersection.cc:50
    \n+
    const Grid * grid_
    Definition albertagrid/intersection.hh:92
    \n+
    Definition misc.hh:443
    \n
    Definition albertagrid/projection.hh:208
    \n-\n+
    unsigned int boundaryIndex() const
    Definition albertagrid/projection.hh:218
    \n+
    Definition transformation.hh:18
    \n+
    GridImp::template Codim< cd >::Geometry Geometry
    The corresponding geometry type.
    Definition common/entity.hh:100
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,643 +1,671 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-meshpointer.hh\n+intersection.cc\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_MESHPOINTER_HH\n-6#define DUNE_ALBERTA_MESHPOINTER_HH\n+5#ifndef DUNE_ALBERTA_INTERSECTION_CC\n+_\b6#define DUNE_ALBERTA_INTERSECTION_CC\n 7\n-13#include \n-14#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+12\n+13 // AlbertaGridIntersectionBase\n+14 // ---------------------------\n 15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-20\n-21#if HAVE_ALBERTA\n-22\n-23namespace _\bD_\bu_\bn_\be\n-24{\n-25\n-26 namespace Alberta\n-27 {\n-28\n-29 // External Forward Declarations\n-30 // -----------------------------\n+16 template< class Grid >\n+17 inline AlbertaGridIntersectionBase< Grid >\n+_\b1_\b8 ::AlbertaGridIntersectionBase ()\n+19 : grid_( nullptr ),\n+20 elementInfo_(),\n+21 oppVertex_( -1 ) // mark invalid intersection\n+22 {}\n+23\n+24 template< class Grid >\n+25 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b2_\b6_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be ( const _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp &entity, const int oppVertex\n+)\n+27 : grid_( &entity.grid() ),\n+28 elementInfo_( entity.elementInfo() ),\n+29 oppVertex_( oppVertex )\n+30 {}\n 31\n-32 template< int dim >\n-33 class HierarchyDofNumbering;\n-34\n-35 // MeshPointer\n-36 // -----------\n-37\n-38 template< int dim >\n-_\b3_\b9 class _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-40 {\n-41 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-42 typedef typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-43 typedef typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs;\n-44\n-45 class BoundaryProvider;\n-46\n-47 template< int dimWorld >\n-48 struct Library;\n-49\n-50 public:\n-51 class _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-52\n-_\b5_\b3 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br ()\n-54 : mesh_( 0 )\n-55 {}\n-56\n-_\b5_\b7 explicit _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br ( _\bM_\be_\bs_\bh *mesh )\n-58 : mesh_( mesh )\n-59 {}\n-60\n-_\b6_\b1 operator _\bM_\be_\bs_\bh * () const\n-62 {\n-63 return mesh_;\n-64 }\n-65\n-_\b6_\b6 explicit operator bool () const\n-67 {\n-68 return (bool)mesh_;\n-69 }\n-70\n-_\b7_\b1 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const\n-72 {\n-73 return _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, false );\n-74 }\n-75\n-_\b7_\b6 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const\n-77 {\n-78 return _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, true );\n-79 }\n-80\n-_\b8_\b1 int _\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs () const;\n-_\b8_\b2 int _\bs_\bi_\bz_\be ( int codim ) const;\n-83\n-84 // create a mesh from a macrodata structure\n-85 // params: macroData - macro data structure\n-86 // returns: number of boundary segments\n-_\b8_\b7 unsigned int _\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData );\n-88\n-89 // create a mesh from a macrodata structure, adding projections\n-90 // params: macroData - macro data structure\n-91 // projectionFactory - factory for the projections\n-92 // returns: number of boundary segments\n-93 template< class Proj, class Impl >\n-_\b9_\b4 unsigned int _\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData,\n-95 const _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> &projectionFactory );\n-96\n-97 // create a mesh from a file\n-98 // params: filename - file name of an Alberta macro triangulation\n-99 // binary - read binary?\n-100 // returns: number of boundary segments\n-_\b1_\b0_\b1 unsigned int _\bc_\br_\be_\ba_\bt_\be ( const std::string &filename, bool binary = false );\n-102\n-103 // read back a mesh from a file\n-104 // params: filename - file name of an Alberta save file\n-105 // time - variable to receive the time stored in the file\n-106 // returns: number of boundary segments\n-107 //\n-108 // notes: - projections are not preserved\n-109 // - we assume that projections are added in the same order they\n-110 // inserted in when the grid was created (otherwise the boundary\n-111 // indices change)\n-_\b1_\b1_\b2 unsigned int _\br_\be_\ba_\bd ( const std::string &filename, _\bR_\be_\ba_\bl &time );\n-113\n-_\b1_\b1_\b4 bool _\bw_\br_\bi_\bt_\be ( const std::string &filename, _\bR_\be_\ba_\bl time ) const;\n-115\n-_\b1_\b1_\b6 void _\br_\be_\bl_\be_\ba_\bs_\be ();\n-117\n-118 template< class Functor >\n-_\b1_\b1_\b9 void _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n-120 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd ) const;\n-121\n-122 template< class Functor >\n-_\b1_\b2_\b3 void _\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n-124 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd ) const;\n-125\n-_\b1_\b2_\b6 bool _\bc_\bo_\ba_\br_\bs_\be_\bn ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n-127\n-_\b1_\b2_\b8 bool _\br_\be_\bf_\bi_\bn_\be ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n-129\n-130 private:\n-131 static _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n-132 initNodeProjection ( [[maybe_unused]] _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n-*macroElement, int n );\n-133 template< class ProjectionProvider >\n-134 static _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n-135 initNodeProjection ( _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *macroElement, int n );\n-136\n-137 _\bM_\be_\bs_\bh *mesh_;\n-138 };\n-139\n-140\n+32\n+33 template< class Grid >\n+34 inline typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity\n+_\b3_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be () const\n+36 {\n+37 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n+38 return _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid(), elementInfo(), 0 );\n+39 }\n+40\n+41\n+42 template< class Grid >\n+_\b4_\b3 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const\n+44 {\n+45 return elementInfo().isBoundary( oppVertex_ );\n+46 }\n+47\n+48\n+49 template< class Grid >\n+_\b5_\b0 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd () const\n+51 {\n+52 if( boundary() )\n+53 {\n+54 const int id = elementInfo().boundaryId( oppVertex_ );\n+55 assert( id != 0 );\n+56 return id;\n+57 }\n+58 else\n+59 return 0;\n+60 }\n+61\n+_\b6_\b2\n+63 template< class Grid >\n+_\b6_\b4 inline size_t _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx ()\n+const\n+65 {\n+_\b6_\b6 assert( boundary() );\n+67 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn *projection = elementInfo\n+().boundaryProjection( oppVertex_ );\n+_\b6_\b8 assert( projection );\n+_\b6_\b9 return projection->_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx();\n+_\b7_\b0 }\n+71\n+_\b7_\b2\n+73 template< class Grid >\n+_\b7_\b4 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n+75 {\n+_\b7_\b6 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);\n+_\b7_\b7 return grid().alberta2generic( 1, face );\n+_\b7_\b8 }\n+79\n+_\b8_\b0\n+_\b8_\b1 template< class Grid >\n+_\b8_\b2 inline GeometryType _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n+83 {\n+84 return GeometryTypes::simplex( dimension-1 );\n+_\b8_\b5 }\n+86\n+87\n+_\b8_\b8 template< class Grid >\n+_\b8_\b9 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+_\b9_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const\n+91 {\n+92 const typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by geoInside = inside().geometry();\n+93\n+94 const int face = indexInInside();\n+95 auto refSimplex = ReferenceElements< ctype, dimension >::simplex();\n+96 FieldVector< ctype, dimension > refNormal =\n+refSimplex.integrationOuterNormal( face );\n+97\n+98 const typename Entity::Geometry::JacobianInverseTransposed &jInvT\n+99 = geoInside.impl().jacobianInverseTransposed();\n+100\n+101 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br normal;\n+102 jInvT.mv( refNormal, normal );\n+103 normal *= geoInside.impl().integrationElement();\n+104\n+105 return normal;\n+106 }\n+107\n+108 template<>\n+109 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b1_\b,_\b _\b1_\b _\b> >::\n+NormalVector\n+_\b1_\b1_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b1_\b,_\b _\b1_\b _\b> >::\n+centerIntegrationOuterNormal () const\n+111 {\n+112 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &oppCoord = grid().getCoord( elementInfo(),\n+oppVertex_ );\n+113 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &myCoord = grid().getCoord( elementInfo(), 1-\n+oppVertex_ );\n+114 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br n;\n+115 n[ 0 ] = (myCoord[ 0 ] > oppCoord[ 0 ] ? _\bc_\bt_\by_\bp_\be( 1 ) : -_\bc_\bt_\by_\bp_\be( 1 ));\n+116 return n;\n+117 }\n+118\n+119#if defined GRIDDIM && GRIDDIM > 1\n+120 template<>\n+121 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b2_\b,_\b _\b2_\b _\b> >::\n+NormalVector\n+122 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b2_\b,_\b _\b2_\b _\b> >::\n+centerIntegrationOuterNormal () const\n+123 {\n+124 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coordOne = grid().getCoord( elementInfo(),\n+(oppVertex_+1)%3 );\n+125 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coordTwo = grid().getCoord( elementInfo(),\n+(oppVertex_+2)%3 );\n+126\n+127 NormalVector n;\n+128 n[ 0 ] = -(coordOne[ 1 ] - coordTwo[ 1 ]);\n+129 n[ 1 ] = coordOne[ 0 ] - coordTwo[ 0 ];\n+130 return n;\n+131 }\n+132#endif // defined GRIDDIM && GRIDDIM > 1\n+133\n+134 template<>\n+135 inline AlbertaGridIntersectionBase< const AlbertaGrid< 3, 3 > >::\n+NormalVector\n+_\b1_\b3_\b6 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b3_\b,_\b _\b3_\b _\b> >::\n+centerIntegrationOuterNormal () const\n+137 {\n+138 // in this case the orientation is negative, multiply by -1\n+139 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo = elementInfo().elInfo();\n+140 const _\bc_\bt_\by_\bp_\be val = (elInfo.orientation > 0) ? 1.0 : -1.0;\n 141\n-142 // MeshPointer::Library\n-143 // --------------------\n-144\n-145 template< int dim >\n-146 template< int dimWorld >\n-147 struct _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br< dim >::Library\n-148 {\n-149 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-150\n-151 static inline unsigned int boundaryCount = 0;\n-152 static inline const void *projectionFactory = nullptr;\n-153\n-154 static void\n-155 _\bc_\br_\be_\ba_\bt_\be ( _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &ptr, const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData,\n-156 _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *(*initNodeProjection)( _\bM_\be_\bs_\bh *, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *,\n-int ) );\n-157 static void _\br_\be_\bl_\be_\ba_\bs_\be ( _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &ptr );\n-158 };\n-159\n-160\n-161\n-162 // MeshPointer::MacroIterator\n-163 // --------------------------\n-164\n-165 template< int dim >\n-_\b1_\b6_\b6 class _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br< dim >::_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-167 {\n-_\b1_\b6_\b8 typedef _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bT_\bh_\bi_\bs;\n-169\n-170 friend class _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br< dim >;\n-171\n-172 public:\n-_\b1_\b7_\b3 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-_\b1_\b7_\b4 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+142 static const int faceVertices[ 4 ][ 3 ]\n+143 = { {1,3,2}, {0,2,3}, {0,3,1}, {0,1,2} };\n+144 const int *localFaces = faceVertices[ oppVertex_ ];\n+145\n+146 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord0 = grid().getCoord( elementInfo(),\n+localFaces[ 0 ] );\n+147 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord1 = grid().getCoord( elementInfo(),\n+localFaces[ 1 ] );\n+148 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord2 = grid().getCoord( elementInfo(),\n+localFaces[ 2 ] );\n+149\n+150 FieldVector< ctype, dimensionworld > u;\n+151 FieldVector< ctype, dimensionworld > v;\n+152 for( int i = 0; i < dimension; ++i )\n+153 {\n+154 v[ i ] = coord1[ i ] - coord0[ i ];\n+155 u[ i ] = coord2[ i ] - coord1[ i ];\n+156 }\n+157\n+158 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br n;\n+159 for( int i = 0; i < dimension; ++i )\n+160 {\n+161 const int j = (i+1)%dimension;\n+162 const int k = (i+2)%dimension;\n+163 n[ i ] = val * (u[ j ] * v[ k ] - u[ k ] * v[ j ]);\n+164 }\n+165 return n;\n+166 }\n+167\n+168\n+169 template< class Grid >\n+170 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+_\b1_\b7_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl() const\n+172 {\n+173 return centerIntegrationOuterNormal();\n+174 }\n 175\n-_\b1_\b7_\b6 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-177 : mesh_(),\n-178 index_( -1 )\n-179 {}\n-180\n-181 private:\n-182\n-183 explicit _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh, bool _\be_\bn_\bd = false )\n-184 : mesh_( mesh ),\n-185 index_( _\be_\bn_\bd ? mesh._\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() : 0 )\n-186 {}\n-187\n-188 public:\n-_\b1_\b8_\b9 bool _\bd_\bo_\bn_\be () const\n+176\n+177 template< class Grid >\n+178 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+_\b1_\b7_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const\n+180 {\n+181 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br normal = centerOuterNormal();\n+182 normal *= (1.0 / normal.two_norm());\n+183 return normal;\n+184 }\n+185\n+186\n+187 template< class Grid >\n+188 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+_\b1_\b8_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl ( const\n+_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be & ) const\n 190 {\n-191 return (index_ >= mesh()._\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs());\n+191 return centerIntegrationOuterNormal();\n 192 }\n 193\n-_\b1_\b9_\b4 bool _\be_\bq_\bu_\ba_\bl_\bs ( const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &other ) const\n-195 {\n-196 return (index_ == other.index_);\n-197 }\n-198\n-_\b1_\b9_\b9 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-200 {\n-201 assert( !done() );\n-202 ++index_;\n-203 }\n-204\n-_\b2_\b0_\b5 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt () const\n+194\n+195 template< class Grid >\n+196 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+_\b1_\b9_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be & )\n+const\n+198 {\n+199 return centerOuterNormal();\n+200 }\n+201\n+202\n+203 template< class Grid >\n+204 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+_\b2_\b0_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be\n+& ) const\n 206 {\n-207 assert( !done() );\n-208 return static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt & >( mesh().mesh_->macro_els[ index_\n-] );\n-209 }\n+207 return centerUnitOuterNormal();\n+208 }\n+209\n 210\n-_\b2_\b1_\b1 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh () const\n-212 {\n-213 return mesh_;\n-214 }\n-215\n-_\b2_\b1_\b6 _\bT_\bh_\bi_\bs &operator++ ()\n-217 {\n-218 increment();\n-219 return *this;\n-220 }\n-221\n-_\b2_\b2_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo operator* () const\n-223 {\n-224 return elementInfo();\n-225 }\n-226\n-_\b2_\b2_\b7 bool operator== ( const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &other ) const\n-228 {\n-229 return equals( other );\n-230 }\n-231\n-_\b2_\b3_\b2 bool operator!= ( const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &other ) const\n-233 {\n-234 return !equals( other );\n-235 }\n-236\n-237 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-_\b2_\b3_\b8 _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd )\n-const\n-239 {\n-240 if( done() )\n-241 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n-242 else\n-243 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo( mesh(), macroElement(), fillFlags );\n-244 }\n-245\n-246 private:\n-247 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br mesh_;\n-248 int index_;\n-249 };\n+211 template< class Grid >\n+212 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+_\b2_\b1_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn () const\n+214 {\n+215 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn( elementInfo().transformation( oppVertex_ ) );\n+216 }\n+217\n+218\n+219 template< class Grid >\n+_\b2_\b2_\b0 inline const _\bG_\br_\bi_\bd &_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd () const\n+221 {\n+222 return *grid_;\n+223 }\n+224\n+225\n+226 template< class Grid >\n+227 inline const typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &\n+_\b2_\b2_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo () const\n+229 {\n+230 assert( !!elementInfo_ );\n+231 return elementInfo_;\n+232 }\n+233\n+234\n+235\n+236 // AlbertaGridIntersectionBase::GlobalCoordReader\n+237 // ----------------------------------------------\n+238\n+239 template< class GridImp >\n+_\b2_\b4_\b0 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be< GridImp >::_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+241 {\n+_\b2_\b4_\b2 typedef typename std::remove_const< GridImp >::type _\bG_\br_\bi_\bd;\n+243\n+_\b2_\b4_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b2_\b4_\b5 static const int codimension = 1;\n+_\b2_\b4_\b6 static const int mydimension = _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn - codimension;\n+_\b2_\b4_\b7 static const int coorddimension = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+248\n+_\b2_\b4_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n 250\n-251\n-252\n-253 // Implementation of MeshPointer\n-254 // -----------------------------\n-255\n-256 template< int dim >\n-_\b2_\b5_\b7 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs () const\n-258 {\n-259 return (mesh_ ? mesh_->n_macro_el : 0);\n-260 }\n-261\n-262\n-263 template<>\n-_\b2_\b6_\b4 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be( int codim ) const\n-265 {\n-266 assert( (codim >= 0) && (codim <= 1) );\n-267 return (codim == 0 ? mesh_->n_elements : mesh_->n_vertices);\n-268 }\n+_\b2_\b5_\b1 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+_\b2_\b5_\b2 typedef FieldVector< ctype, coorddimension > _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n+253\n+254 private:\n+255 const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd_\b_;\n+256 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_;\n+257 const int subEntity_;\n+258 const int twist_;\n+259\n+260 public:\n+_\b2_\b6_\b1 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+262 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo,\n+263 int subEntity )\n+264 : _\bg_\br_\bi_\bd_\b_( _\bg_\br_\bi_\bd ),\n+265 _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_( _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ),\n+266 subEntity_( subEntity ),\n+267 twist_( _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo.template twist< codimension >( subEntity ) )\n+268 {}\n 269\n-270 template<>\n-_\b2_\b7_\b1 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be( int codim ) const\n-272 {\n-273 assert( (codim >= 0) && (codim <= 2) );\n-274 if( codim == 0 )\n-275 return mesh_->n_elements;\n-276 else if( codim == 2 )\n-277 return mesh_->n_vertices;\n-278 else\n-279 return mesh_->n_edges;\n+_\b2_\b7_\b0 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &x ) const\n+271 {\n+272 assert( !_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_ == false );\n+273 assert( (i >= 0) && (i <= mydimension) );\n+274\n+275 const int ti = Alberta::applyInverseTwist< mydimension >( twist_, i );\n+276 const int k = mapVertices( subEntity_, ti );\n+277 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord = _\bg_\br_\bi_\bd_\b_.getCoord( _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_, k );\n+278 for( int j = 0; j < coorddimension; ++j )\n+279 x[ j ] = coord[ j ];\n 280 }\n 281\n-282 template<>\n-_\b2_\b8_\b3 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be( int codim ) const\n-284 {\n-285 assert( (codim >= 0) && (codim <= 3) );\n-286 if( codim == 0 )\n-287 return mesh_->n_elements;\n-288 else if( codim == 3 )\n-289 return mesh_->n_vertices;\n-290 else if( codim == 1 )\n-291 return mesh_->n_faces;\n-292 else\n-293 return mesh_->n_edges;\n-294 }\n-295\n-296\n-297 template< int dim >\n-298 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b2_\b9_\b9_\b _\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData )\n-300 {\n-301 release();\n+_\b2_\b8_\b2 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+283 {\n+284 return false;\n+285 }\n+286\n+_\b2_\b8_\b7 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+288 {\n+289 assert( false );\n+290 return _\bc_\bt_\by_\bp_\be( 0 );\n+291 }\n+292\n+293 private:\n+294 static int mapVertices ( int subEntity, int i )\n+295 {\n+296 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( subEntity, i\n+);\n+297 }\n+298 };\n+299\n+300\n+301\n 302\n-303 Library< dimWorld >::boundaryCount = 0;\n-304 Library< dimWorld >::create( *this, macroData, &initNodeProjection );\n-305 return Library< dimWorld >::boundaryCount;\n-306 }\n-307\n-308\n-309 template< int dim >\n-310 template< class Proj, class Impl >\n-311 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b1_\b2_\b _\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData,\n-313 const _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> &projectionFactory )\n-314 {\n-315 typedef _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-316\n-317 release();\n-318\n-319 Library< dimWorld >::boundaryCount = 0;\n-320 Library< dimWorld >::projectionFactory = &projectionFactory;\n-321 Library< dimWorld >::create( *this, macroData, &initNodeProjection<\n-ProjectionFactory > );\n-322 Library< dimWorld >::projectionFactory = nullptr;\n-323 return Library< dimWorld >::boundaryCount;\n-324 }\n-325\n+303 // AlbertaGridIntersectionBase::LocalCoordReader\n+304 // ---------------------------------------------\n+305\n+306 template< class GridImp >\n+_\b3_\b0_\b7 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be< GridImp >::_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+308 {\n+_\b3_\b0_\b9 typedef typename std::remove_const< GridImp >::type _\bG_\br_\bi_\bd;\n+310\n+_\b3_\b1_\b1 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b3_\b1_\b2 static const int codimension = 1;\n+_\b3_\b1_\b3 static const int mydimension = _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn - codimension;\n+_\b3_\b1_\b4 static const int coorddimension = _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+315\n+_\b3_\b1_\b6 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n+317\n+_\b3_\b1_\b8 typedef FieldVector< ctype, coorddimension > _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n+319\n+_\b3_\b2_\b0 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Geometry _\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b3_\b2_\b1 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 1 >::Geometry _\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+322\n+323 private:\n+324 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by &elementGeometry_;\n+325 const _\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by &faceGeometry_;\n 326\n-327\n-328\n-329 template< int dim >\n-330 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b3_\b1_\b _\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const std::string &filename, bool binary )\n-332 {\n-333 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> macroData;\n-334 macroData._\br_\be_\ba_\bd( filename, binary );\n-335 const unsigned int boundaryCount = create( macroData );\n-336 macroData._\br_\be_\bl_\be_\ba_\bs_\be();\n-337 return boundaryCount;\n-338 }\n-339\n-340\n-341 template< int dim >\n-_\b3_\b4_\b2 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\ba_\bd ( const std::string &filename,\n-_\bR_\be_\ba_\bl &time )\n-343 {\n-344 release();\n-345\n-346 Library< dimWorld >::boundaryCount = 0;\n-347 mesh_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_mesh_xdr( filename.c_str(), &time, NULL, NULL );\n-348 return Library< dimWorld >::boundaryCount;\n-349 }\n+327 public:\n+_\b3_\b2_\b8 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by &elementGeometry,\n+329 const _\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by &faceGeometry )\n+330 : elementGeometry_( elementGeometry ),\n+331 faceGeometry_( faceGeometry )\n+332 {}\n+333\n+_\b3_\b3_\b4 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &x ) const\n+335 {\n+336 x = elementGeometry_.local( faceGeometry_.corner( i ) );\n+337 }\n+338\n+_\b3_\b3_\b9 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+340 {\n+341 return false;\n+342 }\n+343\n+_\b3_\b4_\b4 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+345 {\n+346 return _\bc_\bt_\by_\bp_\be( 0 );\n+347 }\n+348 };\n+349\n 350\n 351\n-352 template< int dim >\n-_\b3_\b5_\b3 inline bool _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be ( const std::string &filename, _\bR_\be_\ba_\bl\n-time ) const\n-354 {\n-355 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_mesh_xdr( mesh_, filename.c_str(), time );\n-356 return (success == 0);\n-357 }\n-358\n-359\n-360 template< int dim >\n-_\b3_\b6_\b1 inline void _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be ()\n-362 {\n-363 Library< dimWorld >::release( *this );\n-364 }\n-365\n-366\n-367 template< int dim >\n-368 template< class Functor >\n-369 inline void _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b7_\b0_\b _\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n-371 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags ) const\n-372 {\n-373 const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br eit = end();\n-374 for( _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it = begin(); it != eit; ++it )\n-375 {\n-376 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo info = it.elementInfo( fillFlags );\n-377 info._\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be( functor );\n-378 }\n+352 // AlbertaGridLeafIntersection\n+353 // ---------------------------\n+354\n+355 template< class GridImp >\n+_\b3_\b5_\b6 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>_\b:_\b:_\bn_\be_\bx_\bt ()\n+357 {\n+358 assert( oppVertex_ <= dimension );\n+359 ++oppVertex_;\n+360 neighborInfo_ = _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n+361 }\n+362\n+363 template< class GridImp >\n+364 inline typename GridImp::template Codim< 0 >::Entity\n+_\b3_\b6_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be () const\n+366 {\n+367 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n+368\n+369 if( !neighborInfo_ )\n+370 {\n+371 assert( neighbor() );\n+372\n+373 neighborInfo_ = elementInfo().leafNeighbor( oppVertex_ );\n+374 }\n+375\n+376 assert( !neighborInfo_ == false );\n+377 assert( neighborInfo_.el() != NULL );\n+378 return _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid(), neighborInfo_, 0 );\n 379 }\n 380\n-381\n-382 template< int dim >\n-383 template< class Functor >\n-384 inline void _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b8_\b5_\b _\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n-386 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags ) const\n-387 {\n-388 const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br eit = end();\n-389 for( _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it = begin(); it != eit; ++it )\n-390 {\n-391 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo info = it.elementInfo( fillFlags );\n-392 info._\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be( functor );\n-393 }\n-394 }\n-395\n-396\n-397 template< int dim >\n-_\b3_\b9_\b8 inline bool _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\ba_\br_\bs_\be_\bn ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n-fillFlags )\n-399 {\n-400 const bool coarsened = (_\bA_\bL_\bB_\bE_\bR_\bT_\bA coarsen( mesh_, fillFlags ) ==\n-_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd);\n-401 if( coarsened )\n-402 _\bA_\bL_\bB_\bE_\bR_\bT_\bA dof_compress( mesh_ );\n-403 return coarsened;\n-404 }\n+381 template< class GridImp >\n+_\b3_\b8_\b2 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const\n+383 {\n+384 assert( oppVertex_ <= dimension );\n+385 return elementInfo().hasLeafNeighbor( oppVertex_ );\n+386 }\n+387\n+388\n+389 template< class GridImp >\n+390 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+_\b3_\b9_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n+392 {\n+393 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> LocalGeoProvider;\n+394 const int twist = elementInfo().template twist< 1 >( oppVertex_ );\n+395 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);\n+396 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( LocalGeoProvider::instance().faceGeometry( face,\n+twist ) );\n+397 }\n+398\n+399\n+400 template< class GridImp >\n+401 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+_\b4_\b0_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n+403 {\n+404 assert( neighbor() );\n 405\n-406 template< int dim >\n-_\b4_\b0_\b7 inline bool _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n-fillFlags )\n-408 {\n-409 return (_\bA_\bL_\bB_\bE_\bR_\bT_\bA refine( mesh_, fillFlags ) == _\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd);\n-410 }\n-411\n-412\n-413 template< int dim >\n-414 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n-415 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bn_\bi_\bt_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn ( _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n-*macroEl, int n )\n-416 {\n-417 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt ¯oElement = static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt & >\n-( *macroEl );\n-418 if( (n > 0) && macroElement._\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by( n-1 ) )\n-419 return new _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn( Library< dimWorld >::boundaryCount++ );\n-420 else\n-421 return 0;\n+406 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> LocalGeoProvider;\n+407 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo = elementInfo().elInfo();\n+408 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];\n+409 const int twist = elementInfo().twistInNeighbor( oppVertex_ );\n+410 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);\n+411 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( LocalGeoProvider::instance().faceGeometry( face,\n+twist ) );\n+412 }\n+413\n+414\n+415 template< class GridImp >\n+416 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+_\b4_\b1_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+418 {\n+419 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);\n+420 const _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br coordReader( grid(), elementInfo(), face );\n+421 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl( coordReader ) );\n 422 }\n 423\n 424\n-425 template< int dim >\n-426 template< class ProjectionFactory >\n-427 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n-428 MeshPointer< dim >::initNodeProjection ( _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n-*macroEl, int n )\n-429 {\n-430 typedef typename _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn Projection;\n-431\n-432 const MacroElement ¯oElement = static_cast< const MacroElement & >\n-( *macroEl );\n+425 template< class GridImp >\n+_\b4_\b2_\b6 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n+427 {\n+428 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo = elementInfo().elInfo();\n+429 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];\n+430 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);\n+431 return grid().alberta2generic( 1, face );\n+432 }\n 433\n-434 MeshPointer< dim > meshPointer( mesh );\n-435 ElementInfo elementInfo( meshPointer, macroElement, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd );\n-436 const ProjectionFactory &projectionFactory = *static_cast< const\n-ProjectionFactory * >( Library< dimWorld >::projectionFactory );\n-437 if( (n > 0) && macroElement.isBoundary( n-1 ) )\n-438 {\n-439 const unsigned int boundaryIndex = Library< dimWorld >::boundaryCount++;\n-440 if( projectionFactory.hasProjection( elementInfo, n-1 ) )\n-441 {\n-442 Projection projection = projectionFactory.projection( elementInfo, n-1 );\n-443 return new NodeProjection< dim, Projection >( boundaryIndex, projection );\n-444 }\n-445 else\n-446 return new BasicNodeProjection( boundaryIndex );\n-447 }\n-448 else if( (dim < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd) && (n == 0) )\n-449 {\n-450 const unsigned int boundaryIndex = std::numeric_limits< unsigned int >::max\n-();\n-451 if( projectionFactory.hasProjection( elementInfo ) )\n-452 {\n-453 Projection projection = projectionFactory.projection( elementInfo );\n-454 return new NodeProjection< dim, Projection >( boundaryIndex, projection );\n-455 }\n-456 else\n-457 return 0;\n-458 }\n-459 else\n-460 return 0;\n-461 }\n-462\n-463 } // namespace Alberta\n-464\n-465} // namespace Dune\n-466\n-467#endif // #if HAVE_ALBERTA\n-468\n-469#endif // #ifndef DUNE_ALBERTA_MESHPOINTER_HH\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh\n-provides a wrapper for ALBERTA's macro_data structure\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+434} // namespace Dune\n+435\n+436#endif // #ifndef DUNE_ALBERTA_INTERSECTION_CC\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n-ALBERTA MESH Mesh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n ALBERTA REAL Real\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd\n-static const int meshRefined\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd\n-static const int meshCoarsened\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int numMacroElements() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:257\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-unsigned int create(const MacroData< dim > ¯oData, const\n-ProjectionFactoryInterface< Proj, Impl > &projectionFactory)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:361\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-unsigned int read(const std::string &filename, Real &time)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:342\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\be_\bn_\bd\n-MacroIterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\bo_\ba_\br_\bs_\be_\bn\n-bool coarsen(typename FillFlags::Flags fillFlags=FillFlags::nothing)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:398\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int codim) const\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-unsigned int create(const std::string &filename, bool binary=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:331\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void leafTraverse(Functor &functor, typename FillFlags::Flags\n-fillFlags=FillFlags::standard) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-unsigned int create(const MacroData< dim > ¯oData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:299\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-MacroIterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-MeshPointer(Mesh *mesh)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-bool write(const std::string &filename, Real time) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:353\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n-bool refine(typename FillFlags::Flags fillFlags=FillFlags::nothing)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:407\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-MeshPointer()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void hierarchicTraverse(Functor &functor, typename FillFlags::Flags\n-fillFlags=FillFlags::standard) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void hierarchicTraverse(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:695\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void leafTraverse(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:708\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-release the macro data structure\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\ba_\bd\n-void read(const std::string &filename, bool binary=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:413\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool isBoundary(const int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh\n-const MeshPointer & mesh() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-const MacroElement & macroElement() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dim > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-Alberta::MeshPointer< dim > MeshPointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:173\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-ElementInfo elementInfo(typename FillFlags::Flags fillFlags=FillFlags::\n-standard) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\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 meshpointer.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const MacroIterator &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-MacroIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n-static const Flags nothing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n-ALBERTA FLAGS Flags\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd\n-static const Flags standard\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:258\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-Base::Projection Projection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+LocalGeometry geometryInOutside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:402\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n+GridImp::template Codim< 0 >::Entity outside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:365\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bx_\bt\n+void next()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:356\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl\n+Base::GeometryImpl GeometryImpl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+int indexInOutside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+LocalGeometry geometryInInside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:391\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+Base::GlobalCoordReader GlobalCoordReader\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Base::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:417\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+bool neighbor() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:382\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Base::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:504\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:241\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, coorddimension > Coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Alberta::Real ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n+std::remove_const< GridImp >::type Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dimension > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:251\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+ctype determinant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+bool hasDeterminant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:282\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+GlobalCoordReader(const GridImp &grid, const ElementInfo &elementInfo, int\n+subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+void coordinate(int i, Coordinate &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:270\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:308\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Grid::template Codim< 1 >::Geometry FaceGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:321\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Alberta::Real ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:316\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+LocalCoordReader(const ElementGeometry &elementGeometry, const FaceGeometry\n+&faceGeometry)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:328\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n+std::remove_const< GridImp >::type Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:309\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+void coordinate(int i, Coordinate &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:334\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+bool hasDeterminant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:339\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+ctype determinant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:344\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, coorddimension > Coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:318\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Grid::template Codim< 0 >::Geometry ElementGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector centerOuterNormal() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+const ElementInfo & elementInfo() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:228\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimensionworld > NormalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector centerIntegrationOuterNormal() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector integrationOuterNormal(const LocalCoordType &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_\n+ElementInfo elementInfo_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be\n+FieldVector< ctype, dimension-1 > LocalCoordType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector centerUnitOuterNormal() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+Entity inside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector unitOuterNormal(const LocalCoordType &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bg_\br_\bi_\bd\n+const Grid & grid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\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 albertagrid/intersection.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool boundary() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+size_t boundarySegmentIndex() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+AlbertaTransformation transformation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector outerNormal(const LocalCoordType &local) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bg_\br_\bi_\bd_\b_\n+const Grid * grid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:443\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:208\n-_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx\n+unsigned int boundaryIndex() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< cd >::Geometry Geometry\n+The corresponding geometry type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static constexpr int dimensionworld\n+The dimension of the world the grid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00629.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00629.html", "unified_diff": "@@ -78,17 +78,17 @@\n Namespaces |\n Macros |\n Functions |\n Variables
    \n
    albertagrid.cc File Reference
    \n
    \n
    \n-
    #include "geometry.cc"
    \n-#include "entity.cc"
    \n-#include "intersection.cc"
    \n+
    #include "geometry.cc"
    \n+#include "entity.cc"
    \n+#include "intersection.cc"
    \n
    \n

    Go to the source code of this file.

    \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00629_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00629_source.html", "unified_diff": "@@ -91,17 +91,17 @@\n
    8//************************************************************************
    \n
    9//
    \n
    10// implementation of AlbertaGrid
    \n
    11//
    \n
    12// namespace Dune
    \n
    13//
    \n
    14//************************************************************************
    \n-
    15#include "geometry.cc"
    \n-
    16#include "entity.cc"
    \n-
    17#include "intersection.cc"
    \n+
    15#include "geometry.cc"
    \n+
    16#include "entity.cc"
    \n+
    17#include "intersection.cc"
    \n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    \n
    22 namespace Alberta
    \n
    23 {
    \n@@ -833,17 +833,17 @@\n
    \n \n \n \n \n \n \n-\n-\n-\n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    static void checkAlbertaDimensions()
    Definition albertagrid.cc:29
    \n
    static const int dimWorld
    Definition misc.hh:46
    \n
    static void * adaptationDataHandler_
    Definition albertagrid.cc:24
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n
    static std::string typeName()
    Definition agrid.hh:416
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -675,17 +675,17 @@\n 642 dataHandler.restrictLocal( patch, i );\n 643 }\n 644 };\n 645\n 646} // namespace Dune\n 647\n 648#endif\n-_\be_\bn_\bt_\bi_\bt_\by_\b._\bc_\bc\n-_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bc_\bc\n _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bc_\bc\n+_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bc_\bc\n+_\be_\bn_\bt_\bi_\bt_\by_\b._\bc_\bc\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bA_\bl_\bb_\be_\br_\bt_\ba_\bD_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bs\n static void checkAlbertaDimensions()\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:29\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00635.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00635.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: level.hh File Reference\n+dune-grid: indexsets.cc File Reference\n \n \n \n \n \n \n \n@@ -70,38 +70,22 @@\n \n \n
    \n \n-
    level.hh File Reference
    \n+
    indexsets.cc File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <cstdlib>
    \n-#include <dune/grid/albertagrid/meshpointer.hh>
    \n-#include <dune/grid/albertagrid/dofadmin.hh>
    \n-#include <dune/grid/albertagrid/dofvector.hh>
    \n-
    \n-

    Go to the source code of this file.

    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::AlbertaGridLevelProvider< dim >
     
    class  Dune::AlbertaGridLevelProvider< dim >::SetLocal
     
    class  Dune::AlbertaGridLevelProvider< dim >::CalcMaxLevel
     
    struct  Dune::AlbertaGridLevelProvider< dim >::Interpolation
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/albertagrid/indexsets.hh>
    \n+#include <dune/grid/albertagrid/agrid.hh>
    \n+
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,18 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-level.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+indexsets.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bg_\br_\bi_\bd_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00641.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00641.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: albertareader.hh File Reference\n+dune-grid: geometry.cc File Reference\n \n \n \n \n \n \n \n@@ -71,36 +71,58 @@\n \n
    \n
    \n
    \n \n-
    albertareader.hh File Reference
    \n+Namespaces |\n+Macros
    \n+
    geometry.cc File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n-#include <dune/grid/common/gridfactory.hh>
    \n-#include <dune/grid/albertagrid/macrodata.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::AlbertaReader< Grid >
    struct  Dune::AlbertaGridLocalGeometryProvider< Grid >::GeoInFatherCoordReader< Grid >
     
    struct  Dune::AlbertaGridLocalGeometryProvider< Grid >::FaceCoordReader< Grid >
     
    \n \n \n \n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n+\n+\n+\n

    \n+Macros

    #define DUNE_ALBERTA_GEOMETRY_CC
     
    \n+

    Macro Definition Documentation

    \n+\n+

    ◆ DUNE_ALBERTA_GEOMETRY_CC

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define DUNE_ALBERTA_GEOMETRY_CC
    \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,23 +1,32 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-albertareader.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n+geometry.cc File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n+ _\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd\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 Include standard header files.\n \u00a0\n+M\bMa\bac\bcr\bro\bos\bs\n+#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bG_\bE_\bO_\bM_\bE_\bT_\bR_\bY_\b__\bC_\bC\n+\u00a0\n+*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_G\bGE\bEO\bOM\bME\bET\bTR\bRY\bY_\b_C\bCC\bC *\b**\b**\b**\b**\b*\n+#define DUNE_ALBERTA_GEOMETRY_CC\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00641_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00641_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: albertareader.hh Source File\n+dune-grid: geometry.cc Source File\n \n \n \n \n \n \n \n@@ -74,134 +74,344 @@\n \n \n
    \n
    \n-
    albertareader.hh
    \n+
    geometry.cc
    \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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_ALBERTAREADER_HH
    \n-
    6#define DUNE_ALBERTA_ALBERTAREADER_HH
    \n+
    5#ifndef DUNE_ALBERTA_GEOMETRY_CC
    \n+
    6#define DUNE_ALBERTA_GEOMETRY_CC
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-\n-
    12
    \n-\n+\n+\n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-
    15#if HAVE_ALBERTA
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    20 template< class Grid >
    \n-
    \n-\n-
    22 {
    \n-\n-
    24
    \n-
    25 public:
    \n-\n-
    27
    \n-
    28 typedef typename Grid::ctype ctype;
    \n-
    29
    \n-
    30 static const int dimension = Grid::dimension;
    \n-\n-
    32
    \n-
    33 private:
    \n-
    34 static_assert(dimensionworld == Alberta::dimWorld,
    \n-
    35 "AlbertaReader: world dimension must match ALBERTA's world dimension.");
    \n-
    36
    \n-\n-
    38
    \n-
    39 MacroData macroData_;
    \n+
    15 // AlbertaGridGeometry
    \n+
    16 // -------------------
    \n+
    17
    \n+
    18 // print the GeometryInformation
    \n+
    19 template <int mydim, int cdim, class GridImp>
    \n+
    \n+
    20 inline void AlbertaGridGeometry<mydim,cdim,GridImp>::print (std::ostream& ss) const
    \n+
    21 {
    \n+
    22 ss << "AlbertaGridGeometry<" << mydim << "," << cdim << "> = { \\n";
    \n+
    23 for(int i=0; i<corners(); i++)
    \n+
    24 {
    \n+
    25 ss << " corner " << i << " = ";
    \n+
    26 ss << ((*this)[i]); ss << "\\n";
    \n+
    27 }
    \n+
    28 ss << "} \\n";
    \n+
    29 }
    \n+
    \n+
    30
    \n+
    31
    \n+
    32 template< int mydim, int cdim, class GridImp >
    \n+\n+
    \n+\n+
    35 {
    \n+
    36 GlobalCoordinate y = corner( 0 );
    \n+
    37 jacobianTransposed().umtv( local, y );
    \n+
    38 return y;
    \n+
    39 }
    \n+
    \n
    40
    \n-
    41 AlbertaReader ( const This & );
    \n-
    42 This &operator= ( const This & );
    \n-
    43
    \n-
    44 public:
    \n+
    41
    \n+
    42 //local implementation for mydim < cdim
    \n+
    43 template< int mydim, int cdim, class GridImp >
    \n+\n
    \n-\n-
    46 {}
    \n+\n+
    46 {
    \n+\n+
    48 jacobianInverseTransposed().mtv( global - corner( 0 ), x );
    \n+
    49 return x;
    \n+
    50 }
    \n
    \n-
    47
    \n-
    \n-
    48 void readGrid ( const std::string &fileName, GridFactory &factory )
    \n-
    49 {
    \n-
    50 // read ALBERTA macro triangulation
    \n-
    51 macroData_.read( fileName, false );
    \n+
    51
    \n
    52
    \n-
    53 // insert all vertices into the factory
    \n-
    54 const int numVertices = macroData_.vertexCount();
    \n-
    55 for( int i = 0; i < numVertices; ++i )
    \n-
    56 {
    \n-
    57 FieldVector< ctype, dimensionworld > v;
    \n-
    58 const Alberta::GlobalVector &coords = macroData_.vertex( i );
    \n-
    59 for( int j = 0; j < dimensionworld; ++j )
    \n-
    60 v[ j ] = coords[ j ];
    \n-
    61 factory.insertVertex( v );
    \n-
    62 }
    \n-
    63
    \n-
    64 // insert all elements into the factory
    \n-
    65 std::vector< unsigned int > vertices( dimension+1 );
    \n-
    66 const int numElements = macroData_.elementCount();
    \n-
    67 for( int i = 0; i < numElements; ++i )
    \n-
    68 {
    \n-
    69 const typename MacroData::ElementId &id = macroData_.element( i );
    \n-
    70 for( int j = 0; j <= dimension; ++j )
    \n-
    71 vertices[ j ] = id[ j ];
    \n-
    72 factory.insertElement( GeometryTypes::simplex( dimension ), vertices );
    \n-
    73 }
    \n-
    74
    \n-
    75 // release ALBERTA macro data
    \n-
    76 macroData_.release();
    \n-
    77 }
    \n-
    \n-
    78 };
    \n-
    \n-
    79
    \n-
    80}
    \n-
    81
    \n-
    82#endif // #if HAVE_ALBERTA
    \n-
    83
    \n-
    84#endif
    \n-
    provides a wrapper for ALBERTA's macro_data structure
    \n+
    53 template< int mydim, int cdim, class GridImp >
    \n+\n+
    \n+\n+
    56 {
    \n+
    57 if( !builtJT_ )
    \n+
    58 {
    \n+
    59 const FieldVector< ctype, coorddimension > &origin = coord_[ 0 ];
    \n+
    60 for( int i = 0; i < mydimension; ++i )
    \n+
    61 {
    \n+
    62 jT_[ i ] = coord_[ i+1 ];
    \n+
    63 jT_[ i ] -= origin;
    \n+
    64 }
    \n+
    65 builtJT_ = true;
    \n+
    66 }
    \n+
    67 return jT_;
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    70
    \n+
    71 template< int mydim, int cdim, class GridImp >
    \n+\n+
    \n+\n+
    74 {
    \n+
    75 if( !builtJTInv_ )
    \n+
    76 {
    \n+
    77 elDet_ = std::abs( Alberta::invert( jacobianTransposed(), jTInv_ ) );
    \n+
    78 assert( elDet_ > 1.0e-25 );
    \n+
    79 calcedDet_ = true;
    \n+
    80 builtJTInv_ = true;
    \n+
    81 }
    \n+
    82 return jTInv_;
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    85
    \n+
    86 // built Geometry
    \n+
    87 template< int mydim, int cdim, class GridImp >
    \n+
    88 template< class CoordReader >
    \n+\n+
    \n+
    90 ::build ( const CoordReader &coordReader )
    \n+
    91 {
    \n+
    92 builtJT_ = false;
    \n+
    93 builtJTInv_ = false;
    \n+
    94
    \n+
    95 // copy corners
    \n+
    96 for( int i = 0; i < numCorners; ++i )
    \n+
    97 coordReader.coordinate( i, coord_[ i ] );
    \n+
    98
    \n+
    99 // calculate centroid
    \n+
    100 centroid_ = coord_[ 0 ];
    \n+
    101 for( int i = 1; i < numCorners; ++i )
    \n+
    102 centroid_ += coord_[ i ];
    \n+
    103 centroid_ *= 1.0 / numCorners;
    \n+
    104
    \n+
    105 elDet_ = (coordReader.hasDeterminant() ? coordReader.determinant() : elDeterminant());
    \n+
    106 assert( std::abs( elDet_ ) > 0.0 );
    \n+
    107 calcedDet_ = true;
    \n+
    108 }
    \n+
    \n+
    109
    \n+
    110
    \n+
    111#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n+
    112 template< int dim, int cdim >
    \n+\n+
    114 AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::global ( const LocalCoordinate &local ) const
    \n+
    115 {
    \n+
    116 GlobalCoordinate y = corner( 0 );
    \n+
    117 jacobianTransposed().umtv( local, y );
    \n+
    118 return y;
    \n+
    119 }
    \n+
    120
    \n+
    121
    \n+
    122 //local implementation for mydim < cdim
    \n+
    123 template< int dim, int cdim >
    \n+
    124 inline typename AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::LocalCoordinate
    \n+
    125 AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::local ( const GlobalCoordinate &global ) const
    \n+
    126 {
    \n+
    127 LocalCoordinate x;
    \n+
    128 jacobianInverseTransposed().mtv( global - corner( 0 ), x );
    \n+
    129 return x;
    \n+
    130 }
    \n+
    131#endif // #if !DUNE_ALBERTA_CACHE_COORDINATES
    \n+
    132
    \n+
    133
    \n+
    134
    \n+
    135 // AlbertaGridLocalGeometryProvider
    \n+
    136 // --------------------------------
    \n+
    137
    \n+
    138 template< class Grid >
    \n+
    139 void AlbertaGridLocalGeometryProvider< Grid >::buildGeometryInFather ()
    \n+
    140 {
    \n+
    141 for( int child = 0; child < numChildren; ++child )
    \n+
    142 {
    \n+
    143 for( int orientation = 0; orientation < 2; ++orientation )
    \n+
    144 {
    \n+
    145 const GeoInFatherCoordReader coordReader( child, orientation );
    \n+
    146 geometryInFather_[ child ][ orientation ] = new LocalElementGeometry( coordReader );
    \n+
    147 }
    \n+
    148 }
    \n+
    149 }
    \n+
    150
    \n+
    151
    \n+
    152 template< class Grid >
    \n+
    153 void AlbertaGridLocalGeometryProvider< Grid >::buildFaceGeometry ()
    \n+
    154 {
    \n+
    155 for( int face = 0; face < numFaces; ++face )
    \n+
    156 {
    \n+
    157 for( int twist = minFaceTwist; twist <= maxFaceTwist; ++twist )
    \n+
    158 {
    \n+
    159 const FaceCoordReader coordReader( face, twist );
    \n+
    160 faceGeometry_[ face ][ twist - minFaceTwist ] = new LocalFaceGeometry( coordReader );
    \n+
    161 }
    \n+
    162 }
    \n+
    163 }
    \n+
    164
    \n+
    165
    \n+
    166
    \n+
    167 // AlbertaGridLocalGeometryProvider::GeoInFatherCoordReader
    \n+
    168 // --------------------------------------------------------
    \n+
    169
    \n+
    170 template< class Grid >
    \n+
    \n+\n+
    172 {
    \n+\n+
    174
    \n+\n+
    176
    \n+
    177 private:
    \n+\n+
    179
    \n+
    180 public:
    \n+
    \n+
    181 GeoInFatherCoordReader ( int child, int orientation )
    \n+
    182 : child_( child ),
    \n+
    183 orientation_( orientation )
    \n+
    184 {}
    \n+
    \n+
    185
    \n+
    \n+
    186 void coordinate ( int i, Coordinate &x ) const
    \n+
    187 {
    \n+
    188 const typename GeoInFather::LocalVector &coord
    \n+
    189 = GeoInFather::coordinate( child_, orientation_, i );
    \n+
    190 for( int j = 0; j < dimension; ++j )
    \n+
    191 x[ j ] = coord[ j ];
    \n+
    192 }
    \n+
    \n+
    193
    \n+
    \n+
    194 bool hasDeterminant () const
    \n+
    195 {
    \n+
    196 return false;
    \n+
    197 }
    \n+
    \n+
    198
    \n+
    \n+\n+
    200 {
    \n+
    201 return ctype( 0 );
    \n+
    202 }
    \n+
    \n+
    203
    \n+
    204 private:
    \n+
    205 const int child_;
    \n+
    206 const int orientation_;
    \n+
    207 };
    \n+
    \n+
    208
    \n+
    209
    \n+
    210
    \n+
    211 // AlbertaGridLocalGeometryProvider::FaceCoordReader
    \n+
    212 // -------------------------------------------------
    \n+
    213
    \n+
    214 template< class Grid >
    \n+
    \n+\n+
    216 {
    \n+\n+
    218
    \n+\n+
    220
    \n+
    \n+
    221 FaceCoordReader ( const int face, const int twist = 0 )
    \n+
    222 : face_( face ),
    \n+
    223 twist_( twist )
    \n+
    224 {}
    \n+
    \n+
    225
    \n+
    \n+
    226 void coordinate ( const int i, Coordinate &x ) const
    \n+
    227 {
    \n+
    228 const int ti = Alberta::applyInverseTwist< dimension-1 >( twist_, i );
    \n+
    229 const int j = mapVertices< 1 >( face_, ti );
    \n+
    230 refCorner( j, x );
    \n+
    231 }
    \n+
    \n+
    232
    \n+
    \n+
    233 bool hasDeterminant () const
    \n+
    234 {
    \n+
    235 return false;
    \n+
    236 }
    \n+
    \n+
    237
    \n+
    \n+\n+
    239 {
    \n+
    240 return ctype( 0 );
    \n+
    241 }
    \n+
    \n+
    242
    \n+
    243 private:
    \n+
    244 static void refCorner ( const int i, Coordinate &x )
    \n+
    245 {
    \n+
    246 x = ctype( 0 );
    \n+
    247 if( i > 0 )
    \n+
    248 x[ i-1 ] = ctype( 1 );
    \n+
    249 }
    \n+
    250
    \n+
    251 int face_;
    \n+
    252 int twist_;
    \n+
    253 };
    \n+
    \n+
    254
    \n+
    255} // namespace Dune
    \n+
    256
    \n+
    257#endif // #ifndef DUNE_ALBERTA_GEOMETRY_CC
    \n+\n+
    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    static const int dimWorld
    Definition misc.hh:46
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition albertareader.hh:22
    \n-
    Grid::ctype ctype
    Definition albertareader.hh:28
    \n-
    static const int dimensionworld
    Definition albertareader.hh:31
    \n-
    static const int dimension
    Definition albertareader.hh:30
    \n-
    Dune::GridFactory< Grid > GridFactory
    Definition albertareader.hh:26
    \n-
    AlbertaReader()
    Definition albertareader.hh:45
    \n-
    void readGrid(const std::string &fileName, GridFactory &factory)
    Definition albertareader.hh:48
    \n-\n-
    int ElementId[numVertices]
    Definition macrodata.hh:48
    \n-
    void release()
    release the macro data structure
    Definition macrodata.hh:127
    \n-
    int elementCount() const
    Definition macrodata.hh:68
    \n-
    GlobalVector & vertex(int i) const
    Definition macrodata.hh:255
    \n-
    int vertexCount() const
    Definition macrodata.hh:63
    \n-
    ElementId & element(int i) const
    Definition macrodata.hh:246
    \n-
    void read(const std::string &filename, bool binary=false)
    Definition macrodata.hh:413
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n-
    ct ctype
    Define type used for coordinates in grid module.
    Definition common/grid.hh:532
    \n-\n-
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)
    Insert an element into the coarse grid.
    Definition common/gridfactory.hh:346
    \n-
    virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)
    Insert a vertex into the coarse grid.
    Definition common/gridfactory.hh:335
    \n-
    Provide a generic factory class for unstructured grids.
    \n-
    Different resources needed by all grid implementations.
    \n+
    int applyInverseTwist(int twist, int i)
    Definition misc.hh:637
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
    Definition algebra.hh:81
    \n+\n+
    FieldVector< ctype, dimension > Coordinate
    Definition geometry.cc:175
    \n+\n+
    void coordinate(int i, Coordinate &x) const
    Definition geometry.cc:186
    \n+
    GeoInFatherCoordReader(int child, int orientation)
    Definition geometry.cc:181
    \n+
    bool hasDeterminant() const
    Definition geometry.cc:194
    \n+
    ctype determinant() const
    Definition geometry.cc:199
    \n+\n+
    FaceCoordReader(const int face, const int twist=0)
    Definition geometry.cc:221
    \n+
    void coordinate(const int i, Coordinate &x) const
    Definition geometry.cc:226
    \n+
    ctype determinant() const
    Definition geometry.cc:238
    \n+
    FieldVector< ctype, dimension > Coordinate
    Definition geometry.cc:219
    \n+
    bool hasDeterminant() const
    Definition geometry.cc:233
    \n+
    Alberta::Real ctype
    Definition geometry.cc:217
    \n+
    geometry implementation for AlbertaGrid
    Definition albertagrid/geometry.hh:108
    \n+
    const JacobianTransposed & jacobianTransposed() const
    transposed of the geometry mapping's Jacobian
    Definition geometry.cc:55
    \n+
    LocalCoordinate local(const GlobalCoordinate &global) const
    map a point from the geometry to the reference element
    Definition geometry.cc:45
    \n+
    const JacobianInverseTransposed & jacobianInverseTransposed() const
    transposed inverse of the geometry mapping's Jacobian
    Definition geometry.cc:73
    \n+
    FieldVector< ctype, mydimension > LocalCoordinate
    Definition albertagrid/geometry.hh:126
    \n+
    FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed
    Definition albertagrid/geometry.hh:130
    \n+
    void print(std::ostream &out) const
    Definition geometry.cc:20
    \n+
    GlobalCoordinate global(const LocalCoordinate &local) const
    map a point from the reference element to the geometry
    Definition geometry.cc:34
    \n+
    FieldVector< ctype, coorddimension > GlobalCoordinate
    Definition albertagrid/geometry.hh:127
    \n+
    FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
    Definition albertagrid/geometry.hh:129
    \n+
    Definition albertagrid/geometry.hh:303
    \n+
    Definition albertagrid/geometry.hh:504
    \n+
    static constexpr int dimension
    Definition albertagrid/geometry.hh:510
    \n+
    Grid::ctype ctype
    Definition albertagrid/geometry.hh:508
    \n+
    Definition albertagrid/geometry.hh:514
    \n+
    Definition refinement.hh:292
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,176 +1,393 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-albertareader.hh\n+geometry.cc\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_ALBERTAREADER_HH\n-6#define DUNE_ALBERTA_ALBERTAREADER_HH\n+5#ifndef DUNE_ALBERTA_GEOMETRY_CC\n+_\b6#define DUNE_ALBERTA_GEOMETRY_CC\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15#if HAVE_ALBERTA\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-20 template< class Grid >\n-_\b2_\b1 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br\n-22 {\n-23 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n-24\n-25 public:\n-_\b2_\b6 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\b _\b> _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-27\n-_\b2_\b8 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-29\n-_\b3_\b0 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b3_\b1 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-32\n-33 private:\n-34 static_assert(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd == _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd,\n-35 \"AlbertaReader: world dimension must match ALBERTA's world dimension.\");\n-36\n-37 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba;\n-38\n-39 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba macroData_;\n+15 // AlbertaGridGeometry\n+16 // -------------------\n+17\n+18 // print the GeometryInformation\n+19 template \n+_\b2_\b0 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\bm_\by_\bd_\bi_\bm_\b,_\bc_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>_\b:_\b:_\bp_\br_\bi_\bn_\bt (std::ostream&\n+ss) const\n+21 {\n+22 ss << \"AlbertaGridGeometry<\" << mydim << \",\" << cdim << \"> = { \\n\";\n+23 for(int i=0; i\n+33 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+_\b3_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+&local ) const\n+35 {\n+36 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be y = corner( 0 );\n+37 jacobianTransposed().umtv( local, y );\n+38 return y;\n+39 }\n 40\n-41 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br ( const _\bT_\bh_\bi_\bs & );\n-42 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & );\n-43\n-44 public:\n-_\b4_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br ()\n-46 {}\n-47\n-_\b4_\b8 void _\br_\be_\ba_\bd_\bG_\br_\bi_\bd ( const std::string &fileName, _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by &factory )\n-49 {\n-50 // read ALBERTA macro triangulation\n-51 macroData_._\br_\be_\ba_\bd( fileName, false );\n+41\n+42 //local implementation for mydim < cdim\n+43 template< int mydim, int cdim, class GridImp >\n+44 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+_\b4_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+&global ) const\n+46 {\n+47 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be x;\n+48 jacobianInverseTransposed().mtv( global - corner( 0 ), x );\n+49 return x;\n+50 }\n+51\n 52\n-53 // insert all vertices into the factory\n-54 const int numVertices = macroData_._\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt();\n-55 for( int i = 0; i < numVertices; ++i )\n+53 template< int mydim, int cdim, class GridImp >\n+54 inline const typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &\n+_\b5_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd () const\n 56 {\n-57 FieldVector< ctype, dimensionworld > v;\n-58 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coords = macroData_._\bv_\be_\br_\bt_\be_\bx( i );\n-59 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++j )\n-60 v[ j ] = coords[ j ];\n-61 factory._\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx( v );\n-62 }\n-63\n-64 // insert all elements into the factory\n-65 std::vector< unsigned int > vertices( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn+1 );\n-66 const int numElements = macroData_._\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt();\n-67 for( int i = 0; i < numElements; ++i )\n-68 {\n-69 const typename _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &id = macroData_._\be_\bl_\be_\bm_\be_\bn_\bt( i );\n-70 for( int j = 0; j <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n-71 vertices[ j ] = id[ j ];\n-72 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt( GeometryTypes::simplex( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ), vertices );\n-73 }\n-74\n-75 // release ALBERTA macro data\n-76 macroData_._\br_\be_\bl_\be_\ba_\bs_\be();\n-77 }\n-78 };\n-79\n-80}\n-81\n-82#endif // #if HAVE_ALBERTA\n-83\n-84#endif\n-_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh\n-provides a wrapper for ALBERTA's macro_data structure\n+57 if( !builtJT_ )\n+58 {\n+59 const FieldVector< ctype, coorddimension > &origin = coord_[ 0 ];\n+60 for( int i = 0; i < mydimension; ++i )\n+61 {\n+62 jT_[ i ] = coord_[ i+1 ];\n+63 jT_[ i ] -= origin;\n+64 }\n+65 builtJT_ = true;\n+66 }\n+67 return jT_;\n+68 }\n+69\n+70\n+71 template< int mydim, int cdim, class GridImp >\n+72 inline const typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &\n+_\b7_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ()\n+const\n+74 {\n+75 if( !builtJTInv_ )\n+76 {\n+77 elDet_ = std::abs( _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt( jacobianTransposed(), jTInv_ ) );\n+78 assert( elDet_ > 1.0e-25 );\n+79 calcedDet_ = true;\n+80 builtJTInv_ = true;\n+81 }\n+82 return jTInv_;\n+83 }\n+84\n+85\n+86 // built Geometry\n+87 template< int mydim, int cdim, class GridImp >\n+88 template< class CoordReader >\n+89 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+_\b9_\b0_\b _\b:_\b:_\bb_\bu_\bi_\bl_\bd ( const CoordReader &coordReader )\n+91 {\n+92 builtJT_ = false;\n+93 builtJTInv_ = false;\n+94\n+95 // copy corners\n+96 for( int i = 0; i < numCorners; ++i )\n+97 coordReader.coordinate( i, coord_[ i ] );\n+98\n+99 // calculate centroid\n+100 centroid_ = coord_[ 0 ];\n+101 for( int i = 1; i < numCorners; ++i )\n+102 centroid_ += coord_[ i ];\n+103 centroid_ *= 1.0 / numCorners;\n+104\n+105 elDet_ = (coordReader.hasDeterminant() ? coordReader.determinant() :\n+elDeterminant());\n+106 assert( std::abs( elDet_ ) > 0.0 );\n+107 calcedDet_ = true;\n+108 }\n+109\n+110\n+111#if !DUNE_ALBERTA_CACHE_COORDINATES\n+112 template< int dim, int cdim >\n+113 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<\n+_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> >::GlobalCoordinate\n+114 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> >::\n+global ( const LocalCoordinate &local ) const\n+115 {\n+116 GlobalCoordinate y = corner( 0 );\n+117 jacobianTransposed().umtv( local, y );\n+118 return y;\n+119 }\n+120\n+121\n+122 //local implementation for mydim < cdim\n+123 template< int dim, int cdim >\n+124 inline typename AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid<\n+dim, cdim > >::LocalCoordinate\n+125 AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::\n+local ( const GlobalCoordinate &global ) const\n+126 {\n+127 LocalCoordinate x;\n+128 jacobianInverseTransposed().mtv( global - corner( 0 ), x );\n+129 return x;\n+130 }\n+131#endif // #if !DUNE_ALBERTA_CACHE_COORDINATES\n+132\n+133\n+134\n+135 // AlbertaGridLocalGeometryProvider\n+136 // --------------------------------\n+137\n+138 template< class Grid >\n+139 void AlbertaGridLocalGeometryProvider< Grid >::buildGeometryInFather ()\n+140 {\n+141 for( int child = 0; child < numChildren; ++child )\n+142 {\n+143 for( int orientation = 0; orientation < 2; ++orientation )\n+144 {\n+145 const GeoInFatherCoordReader coordReader( child, orientation );\n+146 geometryInFather_[ child ][ orientation ] = new LocalElementGeometry\n+( coordReader );\n+147 }\n+148 }\n+149 }\n+150\n+151\n+152 template< class Grid >\n+153 void AlbertaGridLocalGeometryProvider< Grid >::buildFaceGeometry ()\n+154 {\n+155 for( int face = 0; face < numFaces; ++face )\n+156 {\n+157 for( int twist = minFaceTwist; twist <= maxFaceTwist; ++twist )\n+158 {\n+159 const FaceCoordReader coordReader( face, twist );\n+160 faceGeometry_[ face ][ twist - minFaceTwist ] = new LocalFaceGeometry\n+( coordReader );\n+161 }\n+162 }\n+163 }\n+164\n+165\n+166\n+167 // AlbertaGridLocalGeometryProvider::GeoInFatherCoordReader\n+168 // --------------------------------------------------------\n+169\n+170 template< class Grid >\n+_\b1_\b7_\b1 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bG_\br_\bi_\bd >::_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+172 {\n+_\b1_\b7_\b3 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n+174\n+_\b1_\b7_\b5 typedef _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n+176\n+177 private:\n+178 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br;\n+179\n+180 public:\n+_\b1_\b8_\b1 _\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( int child, int orientation )\n+182 : child_( child ),\n+183 orientation_( orientation )\n+184 {}\n+185\n+_\b1_\b8_\b6 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bx ) const\n+187 {\n+188 const typename GeoInFather::LocalVector &coord\n+189 = GeoInFather::coordinate( child_, orientation_, i );\n+190 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n+191 _\bx[ j ] = coord[ j ];\n+192 }\n+193\n+_\b1_\b9_\b4 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+195 {\n+196 return false;\n+197 }\n+198\n+_\b1_\b9_\b9 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+200 {\n+201 return _\bc_\bt_\by_\bp_\be( 0 );\n+202 }\n+203\n+204 private:\n+205 const int child_;\n+206 const int orientation_;\n+207 };\n+208\n+209\n+210\n+211 // AlbertaGridLocalGeometryProvider::FaceCoordReader\n+212 // -------------------------------------------------\n+213\n+214 template< class Grid >\n+_\b2_\b1_\b5 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bG_\br_\bi_\bd >::_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+216 {\n+_\b2_\b1_\b7 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n+218\n+_\b2_\b1_\b9 typedef _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n+220\n+_\b2_\b2_\b1 _\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( const int _\bf_\ba_\bc_\be, const int twist = 0 )\n+222 : face_( _\bf_\ba_\bc_\be ),\n+223 twist_( twist )\n+224 {}\n+225\n+_\b2_\b2_\b6 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( const int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bx ) const\n+227 {\n+228 const int _\bt_\bi = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1 >( twist_, i );\n+229 const int j = _\bm_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b1_\b _\b>( face_, _\bt_\bi );\n+230 refCorner( j, _\bx );\n+231 }\n+232\n+_\b2_\b3_\b3 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+234 {\n+235 return false;\n+236 }\n+237\n+_\b2_\b3_\b8 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n+239 {\n+240 return _\bc_\bt_\by_\bp_\be( 0 );\n+241 }\n+242\n+243 private:\n+244 static void refCorner ( const int i, Coordinate &_\bx )\n+245 {\n+246 _\bx = _\bc_\bt_\by_\bp_\be( 0 );\n+247 if( i > 0 )\n+248 _\bx[ i-1 ] = _\bc_\bt_\by_\bp_\be( 1 );\n+249 }\n+250\n+251 int face_;\n+252 int twist_;\n+253 };\n+254\n+255} // namespace Dune\n+256\n+257#endif // #ifndef DUNE_ALBERTA_GEOMETRY_CC\n+_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh\n+_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n+provides a wrapper for ALBERTA's refinement patches and the corners for\n+geometryInFather\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static const int dimensionworld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\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 albertareader.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Dune::GridFactory< Grid > GridFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br\n-AlbertaReader()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bG_\br_\bi_\bd\n-void readGrid(const std::string &fileName, GridFactory &factory)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd\n-int ElementId[numVertices]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-release the macro data structure\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt\n-int elementCount() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx\n-GlobalVector & vertex(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt\n-int vertexCount() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n-ElementId & element(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\ba_\bd\n-void read(const std::string &filename, bool binary=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:413\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt\n+int applyInverseTwist(int twist, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:637\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n+static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 >\n+&inverse)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:172\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, dimension > Coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Alberta::Real ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:173\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+void coordinate(int i, Coordinate &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:\n+_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+GeoInFatherCoordReader(int child, int orientation)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+bool hasDeterminant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+ctype determinant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n+FaceCoordReader(const int face, const int twist=0)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:221\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+void coordinate(const int i, Coordinate &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+ctype determinant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, dimension > Coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+bool hasDeterminant() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:233\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Alberta::Real ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:217\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+geometry implementation for AlbertaGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+const JacobianTransposed & jacobianTransposed() const\n+transposed of the geometry mapping's Jacobian\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bl_\bo_\bc_\ba_\bl\n+LocalCoordinate local(const GlobalCoordinate &global) const\n+map a point from the geometry to the reference element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+const JacobianInverseTransposed & jacobianInverseTransposed() const\n+transposed inverse of the geometry mapping's Jacobian\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, mydimension > LocalCoordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std::ostream &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl\n+GlobalCoordinate global(const LocalCoordinate &local) const\n+map a point from the reference element to the geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, coorddimension > GlobalCoordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:303\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:504\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static constexpr int dimensionworld\n-The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-Define type used for coordinates in grid module.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:532\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n-virtual void insertElement(const GeometryType &type, const std::vector<\n-unsigned int > &vertices)\n-Insert an element into the coarse grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n-virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)\n-Insert a vertex into the coarse grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:335\n-_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-Provide a generic factory class for unstructured grids.\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:510\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:508\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:514\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\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-grid-doc/doxygen/a00647.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00647.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: meshpointer.cc File Reference\n+dune-grid: treeiterator.hh File Reference\n \n \n \n \n \n \n \n@@ -70,28 +70,42 @@\n \n
    \n
    \n \n-
    meshpointer.cc File Reference
    \n+
    treeiterator.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/albertagrid/meshpointer.hh>
    \n-
    \n+
    #include <utility>
    \n+#include <dune/common/hybridutilities.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/grid/albertagrid/elementinfo.hh>
    \n+#include <dune/grid/albertagrid/meshpointer.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::AlbertaMarkerVector< dim, dimworld >
     marker assigning subentities to one element containing them More...
     
    struct  Dune::AlbertaMarkerVector< dim, dimworld >::MarkSubEntities< bool >::Codim< codim >
     
    class  Dune::AlbertaGridTreeIterator< codim, GridImp, leafIterator >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,19 +1,30 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-meshpointer.cc File Reference\n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+treeiterator.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+\u00a0 marker assigning subentities to one element containing them _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bb_\bo_\bo_\bl_\b _\b>_\b:_\b:\n+ _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00650.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00650.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dofadmin.hh File Reference\n+dune-grid: albertareader.hh File Reference\n \n \n \n \n \n \n \n@@ -72,38 +72,34 @@\n
  • dune
  • grid
  • albertagrid
  • \n
    \n
    \n
    \n \n-
    dofadmin.hh File Reference
    \n+
    albertareader.hh File Reference
    \n
    \n
    \n-
    #include <utility>
    \n-#include <dune/common/hybridutilities.hh>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n+
    #include <dune/geometry/type.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include <dune/grid/common/gridfactory.hh>
    \n+#include <dune/grid/albertagrid/macrodata.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::Alberta::DofAccess< dim, codim >
     
    class  Dune::Alberta::HierarchyDofNumbering< dim >
    class  Dune::AlbertaReader< Grid >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,22 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dofadmin.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+albertareader.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00650_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00650_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dofadmin.hh Source File\n+dune-grid: albertareader.hh Source File\n \n \n \n \n \n \n \n@@ -74,387 +74,134 @@\n \n \n
    \n
    \n-
    dofadmin.hh
    \n+
    albertareader.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_DOFADMIN_HH
    \n-
    6#define DUNE_ALBERTA_DOFADMIN_HH
    \n+
    5#ifndef DUNE_ALBERTA_ALBERTAREADER_HH
    \n+
    6#define DUNE_ALBERTA_ALBERTAREADER_HH
    \n
    7
    \n-
    8#include <utility>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/common/hybridutilities.hh>
    \n-
    11
    \n-\n-\n+\n+\n+
    12
    \n+\n
    14
    \n
    15#if HAVE_ALBERTA
    \n
    16
    \n
    17namespace Dune
    \n
    18{
    \n
    19
    \n-
    20 namespace Alberta
    \n-
    21 {
    \n-
    22
    \n-
    23 // External Forward Declarations
    \n-
    24 // -----------------------------
    \n-
    25
    \n-
    26 template< int dim >
    \n-
    27 class MeshPointer;
    \n-
    28
    \n+
    20 template< class Grid >
    \n+
    \n+\n+
    22 {
    \n+\n+
    24
    \n+
    25 public:
    \n+\n+
    27
    \n+
    28 typedef typename Grid::ctype ctype;
    \n
    29
    \n-
    30
    \n-
    31 // DofAccess
    \n-
    32 // ---------
    \n-
    33
    \n-
    34 template< int dim, int codim >
    \n-
    \n-\n-
    36 {
    \n-
    37 static const int codimtype = CodimType< dim, codim >::value;
    \n+
    30 static const int dimension = Grid::dimension;
    \n+\n+
    32
    \n+
    33 private:
    \n+
    34 static_assert(dimensionworld == Alberta::dimWorld,
    \n+
    35 "AlbertaReader: world dimension must match ALBERTA's world dimension.");
    \n+
    36
    \n+\n
    38
    \n-
    39 public:
    \n-\n-
    41
    \n-
    42 static const int dimension = dim;
    \n-
    43 static const int codimension = codim;
    \n-
    44
    \n-\n-
    46
    \n-
    \n-\n-
    48 : node_( -1 )
    \n-
    49 {}
    \n-
    \n-
    50
    \n-
    \n-
    51 explicit DofAccess ( const DofSpace *dofSpace )
    \n-
    52 {
    \n-
    53 assert( dofSpace );
    \n-
    54 node_ = dofSpace->admin->mesh->node[ codimtype ];
    \n-
    55 index_ = dofSpace->admin->n0_dof[ codimtype ];
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    \n-
    58 int operator() ( const Element *element, int subEntity, int i ) const
    \n-
    59 {
    \n-
    60 assert( element );
    \n-
    61 assert( node_ != -1 );
    \n-
    62 assert( subEntity < numSubEntities );
    \n-
    63 return element->dof[ node_ + subEntity ][ index_ + i ];
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    66 int operator() ( const Element *element, int subEntity ) const
    \n-
    67 {
    \n-
    68 return (*this)( element, subEntity, 0 );
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    71 int operator() ( const ElementInfo &elementInfo, int subEntity, int i ) const
    \n-
    72 {
    \n-
    73 return (*this)( elementInfo.el(), subEntity, i );
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    \n-
    76 int operator() ( const ElementInfo &elementInfo, int subEntity ) const
    \n-
    77 {
    \n-
    78 return (*this)( elementInfo.el(), subEntity );
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    81 private:
    \n-
    82 int node_;
    \n-
    83 int index_;
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    86
    \n-
    87
    \n-
    88 // HierarchyDofNumbering
    \n-
    89 // ---------------------
    \n-
    90
    \n-
    91 template< int dim >
    \n-
    \n-\n-
    93 {
    \n-\n-
    95
    \n-
    96 public:
    \n-
    97 static const int dimension = dim;
    \n-
    98
    \n-\n-\n-
    101
    \n-
    102 private:
    \n-
    103 static const int nNodeTypes = N_NODE_TYPES;
    \n-
    104
    \n-
    105 template< int codim >
    \n-
    106 struct CreateDofSpace;
    \n-
    107
    \n-
    108 template< int codim >
    \n-
    109 struct CacheDofSpace;
    \n-
    110
    \n-
    111 typedef std::pair< int, int > Cache;
    \n-
    112
    \n-
    113 public:
    \n-
    \n-\n-
    115 {}
    \n-
    \n-
    116
    \n-
    117 private:
    \n-
    118 HierarchyDofNumbering ( const This & );
    \n-
    119 This &operator= ( const This & );
    \n-
    120
    \n-
    121 public:
    \n-
    \n-\n-
    123 {
    \n-
    124 release();
    \n-
    125 }
    \n-
    \n-
    126
    \n-
    \n-
    127 int operator() ( const Element *element, int codim, unsigned int subEntity ) const
    \n-
    128 {
    \n-
    129 assert( !(*this) == false );
    \n-
    130 assert( (codim >= 0) && (codim <= dimension) );
    \n-
    131 const Cache &cache = cache_[ codim ];
    \n-
    132 return element->dof[ cache.first + subEntity ][ cache.second ];
    \n-
    133 }
    \n-
    \n-
    134
    \n-
    \n-
    135 int operator() ( const ElementInfo &element, int codim, unsigned int subEntity ) const
    \n-
    136 {
    \n-
    137 return (*this)( element.el(), codim, subEntity );
    \n-
    138 }
    \n-
    \n-
    139
    \n-
    \n-
    140 explicit operator bool () const
    \n-
    141 {
    \n-
    142 return (bool)mesh_;
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    \n-
    145 const DofSpace *dofSpace ( int codim ) const
    \n-
    146 {
    \n-
    147 assert( *this );
    \n-
    148 assert( (codim >= 0) && (codim <= dimension) );
    \n-
    149 return dofSpace_[ codim ];
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    \n-
    152 const DofSpace *emptyDofSpace () const
    \n-
    153 {
    \n-
    154 assert( *this );
    \n-
    155 return emptySpace_;
    \n-
    156 }
    \n-
    \n-
    157
    \n-
    \n-
    158 const MeshPointer &mesh () const
    \n-
    159 {
    \n-
    160 return mesh_;
    \n-
    161 }
    \n-
    \n-
    162
    \n-
    \n-
    163 int size ( int codim ) const
    \n-
    164 {
    \n-
    165 return dofSpace( codim )->admin->size;
    \n-
    166 }
    \n-
    \n-
    167
    \n-
    \n-
    168 void create ( const MeshPointer &mesh );
    \n-
    169
    \n-
    \n-
    170 void release ()
    \n-
    171 {
    \n-
    172 if( *this )
    \n-
    173 {
    \n-
    174 for( int codim = 0; codim <= dimension; ++codim )
    \n-
    175 freeDofSpace( dofSpace_[ codim ] );
    \n-
    176 freeDofSpace( emptySpace_ );
    \n-
    177 mesh_ = MeshPointer();
    \n-
    178 }
    \n-
    179 }
    \n-
    \n-
    180
    \n-
    181 private:
    \n-
    182 static const DofSpace *createEmptyDofSpace ( const MeshPointer &mesh );
    \n-
    183 static const DofSpace *createDofSpace ( const MeshPointer &mesh,
    \n-
    184 const std::string &name,
    \n-
    185 const int (&ndof)[ nNodeTypes ],
    \n-
    186 const bool periodic = false );
    \n-
    187 static void freeDofSpace ( const DofSpace *dofSpace );
    \n-
    188
    \n-
    189 MeshPointer mesh_;
    \n-
    190 const DofSpace *emptySpace_;
    \n-
    191 const DofSpace *dofSpace_[ dimension+1 ];
    \n-
    192 Cache cache_[ dimension+1 ];
    \n-
    193 };
    \n-
    194
    \n-
    195
    \n-
    196
    \n-
    197 template< int dim >
    \n-
    198 inline void
    \n-
    \n-\n-
    200 {
    \n-
    201 release();
    \n-
    202
    \n-
    203 if( !mesh )
    \n-
    204 return;
    \n-
    205
    \n-
    206 mesh_ = mesh;
    \n-
    207
    \n-
    208 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i ){ CreateDofSpace< i >::apply( mesh_, dofSpace_ ); } );
    \n-
    209 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i ){ CacheDofSpace< i >::apply( dofSpace_, cache_ ); } );
    \n-
    210
    \n-
    211 emptySpace_ = createEmptyDofSpace( mesh_ );
    \n-
    212 for( int i = 0; i < nNodeTypes; ++i )
    \n-
    213 assert( emptySpace_->admin->n_dof[ i ] == 0 );
    \n-
    214 }
    \n-
    \n-
    \n-
    215
    \n-
    216
    \n-
    217
    \n-
    218 template< int dim >
    \n-
    219 inline const DofSpace *
    \n-\n-
    221 {
    \n-
    222 int ndof[ nNodeTypes ];
    \n-
    223 for( int i = 0; i < nNodeTypes; ++i )
    \n-
    224 ndof[ i ] = 0;
    \n-
    225 std::string name = "Empty";
    \n-
    226 return createDofSpace( mesh, name, ndof );
    \n-
    227 }
    \n-
    228
    \n-
    229
    \n-
    230 template< int dim >
    \n-
    231 inline const DofSpace *
    \n-
    232 HierarchyDofNumbering< dim >::createDofSpace ( const MeshPointer &mesh,
    \n-
    233 const std::string &name,
    \n-
    234 const int (&ndof)[ nNodeTypes ],
    \n-
    235 const bool periodic )
    \n-
    236 {
    \n-
    237 const ALBERTA FLAGS flags
    \n-
    238 = ADM_PRESERVE_COARSE_DOFS | (periodic ? ADM_PERIODIC : 0);
    \n-
    239 return ALBERTA get_dof_space ( mesh, name.c_str(), ndof, flags );
    \n-
    240 }
    \n-
    241
    \n-
    242
    \n-
    243 template< int dim >
    \n-
    244 inline void
    \n-
    245 HierarchyDofNumbering< dim >::freeDofSpace ( const DofSpace *dofSpace )
    \n-
    246 {
    \n-
    247 ALBERTA free_fe_space( dofSpace );
    \n-
    248 }
    \n-
    249
    \n-
    250
    \n-
    251
    \n-
    252 // HierarchyDofNumbering::CreateDofSpace
    \n-
    253 // -------------------------------------
    \n-
    254
    \n-
    255 template< int dim >
    \n-
    256 template< int codim >
    \n-
    257 struct HierarchyDofNumbering< dim >::CreateDofSpace
    \n-
    258 {
    \n-
    259 static void apply ( const MeshPointer &mesh, const DofSpace *(&dofSpace)[ dim+1 ] )
    \n-
    260 {
    \n-
    261 int ndof[ nNodeTypes ];
    \n-
    262 for( int i = 0; i < nNodeTypes; ++i )
    \n-
    263 ndof[ i ] = 0;
    \n-
    264 ndof[ CodimType< dim, codim >::value ] = 1;
    \n-
    265
    \n-
    266 std::string name = "Codimension ";
    \n-
    267 name += (char)(codim + '0');
    \n-
    268
    \n-
    269 dofSpace[ codim ] = createDofSpace( mesh, name, ndof );
    \n-
    270 assert( dofSpace[ codim ] );
    \n-
    271 }
    \n-
    272 };
    \n-
    273
    \n-
    274
    \n-
    275
    \n-
    276 // HierarchyDofNumbering::CacheDofSpace
    \n-
    277 // ------------------------------------
    \n-
    278
    \n-
    279 template< int dim >
    \n-
    280 template< int codim >
    \n-
    281 struct HierarchyDofNumbering< dim >::CacheDofSpace
    \n-
    282 {
    \n-
    283 static void apply ( const DofSpace *(&dofSpace)[ dim+1 ], Cache (&cache)[ dim+1 ] )
    \n-
    284 {
    \n-
    285 assert( dofSpace[ codim ] );
    \n-
    286 const int codimtype = CodimType< dim, codim >::value;
    \n-
    287 cache[ codim ].first = dofSpace[ codim ]->mesh->node[ codimtype ];
    \n-
    288 cache[ codim ].second = dofSpace[ codim ]->admin->n0_dof[ codimtype ];
    \n-
    289 }
    \n-
    290 };
    \n-
    291
    \n-
    292 } // namespace Alberta
    \n-
    293
    \n-
    294} // namespace Dune
    \n-
    295
    \n-
    296#endif // #if HAVE_ALBERTA
    \n-
    297
    \n-
    298#endif // #ifndef DUNE_ALBERTA_DOFADMIN_HH
    \n-
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    39 MacroData macroData_;
    \n+
    40
    \n+
    41 AlbertaReader ( const This & );
    \n+
    42 This &operator= ( const This & );
    \n+
    43
    \n+
    44 public:
    \n+
    \n+\n+
    46 {}
    \n+
    \n+
    47
    \n+
    \n+
    48 void readGrid ( const std::string &fileName, GridFactory &factory )
    \n+
    49 {
    \n+
    50 // read ALBERTA macro triangulation
    \n+
    51 macroData_.read( fileName, false );
    \n+
    52
    \n+
    53 // insert all vertices into the factory
    \n+
    54 const int numVertices = macroData_.vertexCount();
    \n+
    55 for( int i = 0; i < numVertices; ++i )
    \n+
    56 {
    \n+
    57 FieldVector< ctype, dimensionworld > v;
    \n+
    58 const Alberta::GlobalVector &coords = macroData_.vertex( i );
    \n+
    59 for( int j = 0; j < dimensionworld; ++j )
    \n+
    60 v[ j ] = coords[ j ];
    \n+
    61 factory.insertVertex( v );
    \n+
    62 }
    \n+
    63
    \n+
    64 // insert all elements into the factory
    \n+
    65 std::vector< unsigned int > vertices( dimension+1 );
    \n+
    66 const int numElements = macroData_.elementCount();
    \n+
    67 for( int i = 0; i < numElements; ++i )
    \n+
    68 {
    \n+
    69 const typename MacroData::ElementId &id = macroData_.element( i );
    \n+
    70 for( int j = 0; j <= dimension; ++j )
    \n+
    71 vertices[ j ] = id[ j ];
    \n+
    72 factory.insertElement( GeometryTypes::simplex( dimension ), vertices );
    \n+
    73 }
    \n+
    74
    \n+
    75 // release ALBERTA macro data
    \n+
    76 macroData_.release();
    \n+
    77 }
    \n+
    \n+
    78 };
    \n+
    \n+
    79
    \n+
    80}
    \n+
    81
    \n+
    82#endif // #if HAVE_ALBERTA
    \n+
    83
    \n+
    84#endif
    \n+
    provides a wrapper for ALBERTA's macro_data structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA EL Element
    Definition misc.hh:54
    \n-
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n-\n-
    Definition dofadmin.hh:36
    \n-
    static const int dimension
    Definition dofadmin.hh:42
    \n-
    DofAccess()
    Definition dofadmin.hh:47
    \n-
    static const int codimension
    Definition dofadmin.hh:43
    \n-
    static const int numSubEntities
    Definition dofadmin.hh:40
    \n-
    DofAccess(const DofSpace *dofSpace)
    Definition dofadmin.hh:51
    \n-
    int operator()(const Element *element, int subEntity, int i) const
    Definition dofadmin.hh:58
    \n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition dofadmin.hh:45
    \n-
    Definition dofadmin.hh:93
    \n-
    HierarchyDofNumbering()
    Definition dofadmin.hh:114
    \n-
    int operator()(const Element *element, int codim, unsigned int subEntity) const
    Definition dofadmin.hh:127
    \n-
    const MeshPointer & mesh() const
    Definition dofadmin.hh:158
    \n-
    void create(const MeshPointer &mesh)
    Definition dofadmin.hh:199
    \n-
    ~HierarchyDofNumbering()
    Definition dofadmin.hh:122
    \n-
    Alberta::MeshPointer< dimension > MeshPointer
    Definition dofadmin.hh:99
    \n-
    int size(int codim) const
    Definition dofadmin.hh:163
    \n-
    const DofSpace * dofSpace(int codim) const
    Definition dofadmin.hh:145
    \n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition dofadmin.hh:100
    \n-
    static const int dimension
    Definition dofadmin.hh:97
    \n-
    const DofSpace * emptyDofSpace() const
    Definition dofadmin.hh:152
    \n-
    void release()
    Definition dofadmin.hh:170
    \n-\n-
    Element * el() const
    Definition elementinfo.hh:737
    \n-
    Definition misc.hh:148
    \n-
    Definition misc.hh:192
    \n+
    static const int dimWorld
    Definition misc.hh:46
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n+
    Definition albertareader.hh:22
    \n+
    Grid::ctype ctype
    Definition albertareader.hh:28
    \n+
    static const int dimensionworld
    Definition albertareader.hh:31
    \n+
    static const int dimension
    Definition albertareader.hh:30
    \n+
    Dune::GridFactory< Grid > GridFactory
    Definition albertareader.hh:26
    \n+
    AlbertaReader()
    Definition albertareader.hh:45
    \n+
    void readGrid(const std::string &fileName, GridFactory &factory)
    Definition albertareader.hh:48
    \n+\n+
    int ElementId[numVertices]
    Definition macrodata.hh:48
    \n+
    void release()
    release the macro data structure
    Definition macrodata.hh:127
    \n+
    int elementCount() const
    Definition macrodata.hh:68
    \n+
    GlobalVector & vertex(int i) const
    Definition macrodata.hh:255
    \n+
    int vertexCount() const
    Definition macrodata.hh:63
    \n+
    ElementId & element(int i) const
    Definition macrodata.hh:246
    \n+
    void read(const std::string &filename, bool binary=false)
    Definition macrodata.hh:413
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n+
    ct ctype
    Define type used for coordinates in grid module.
    Definition common/grid.hh:532
    \n+\n+
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)
    Insert an element into the coarse grid.
    Definition common/gridfactory.hh:346
    \n+
    virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)
    Insert a vertex into the coarse grid.
    Definition common/gridfactory.hh:335
    \n+
    Provide a generic factory class for unstructured grids.
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,403 +1,176 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-dofadmin.hh\n+albertareader.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_DOFADMIN_HH\n-6#define DUNE_ALBERTA_DOFADMIN_HH\n+5#ifndef DUNE_ALBERTA_ALBERTAREADER_HH\n+6#define DUNE_ALBERTA_ALBERTAREADER_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n 14\n 15#if HAVE_ALBERTA\n 16\n 17namespace _\bD_\bu_\bn_\be\n 18{\n 19\n-20 namespace Alberta\n-21 {\n-22\n-23 // External Forward Declarations\n-24 // -----------------------------\n-25\n-26 template< int dim >\n-27 class MeshPointer;\n-28\n+20 template< class Grid >\n+_\b2_\b1 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br\n+22 {\n+23 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n+24\n+25 public:\n+_\b2_\b6 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\b _\b> _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+27\n+_\b2_\b8 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n 29\n-30\n-31 // DofAccess\n-32 // ---------\n-33\n-34 template< int dim, int codim >\n-_\b3_\b5 class _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n-36 {\n-37 static const int codimtype = _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+_\b3_\b0 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b3_\b1 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+32\n+33 private:\n+34 static_assert(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd == _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd,\n+35 \"AlbertaReader: world dimension must match ALBERTA's world dimension.\");\n+36\n+37 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba;\n 38\n-39 public:\n-_\b4_\b0 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-41\n-_\b4_\b2 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b4_\b3 static const int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n-44\n-_\b4_\b5 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-46\n-_\b4_\b7 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs ()\n-48 : node_( -1 )\n-49 {}\n-50\n-_\b5_\b1 explicit _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace )\n-52 {\n-53 assert( dofSpace );\n-54 node_ = dofSpace->admin->mesh->node[ codimtype ];\n-55 index_ = dofSpace->admin->n0_dof[ codimtype ];\n-56 }\n-57\n-_\b5_\b8 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity, int i ) const\n-59 {\n-60 assert( element );\n-61 assert( node_ != -1 );\n-62 assert( subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs );\n-63 return element->dof[ node_ + subEntity ][ index_ + i ];\n-64 }\n-65\n-_\b6_\b6 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity ) const\n-67 {\n-68 return (*this)( element, subEntity, 0 );\n-69 }\n-70\n-_\b7_\b1 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity, int i )\n-const\n-72 {\n-73 return (*this)( elementInfo._\be_\bl(), subEntity, i );\n-74 }\n-75\n-_\b7_\b6 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity ) const\n-77 {\n-78 return (*this)( elementInfo._\be_\bl(), subEntity );\n-79 }\n-80\n-81 private:\n-82 int node_;\n-83 int index_;\n-84 };\n-85\n-86\n-87\n-88 // HierarchyDofNumbering\n-89 // ---------------------\n-90\n-91 template< int dim >\n-_\b9_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-93 {\n-94 typedef _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n-95\n-96 public:\n-_\b9_\b7 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-98\n-_\b9_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-_\b1_\b0_\b0 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-101\n-102 private:\n-103 static const int nNodeTypes = N_NODE_TYPES;\n-104\n-105 template< int codim >\n-106 struct CreateDofSpace;\n-107\n-108 template< int codim >\n-109 struct CacheDofSpace;\n-110\n-111 typedef std::pair< int, int > Cache;\n-112\n-113 public:\n-_\b1_\b1_\b4 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg ()\n-115 {}\n-116\n-117 private:\n-118 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg ( const This & );\n-119 This &operator= ( const This & );\n-120\n-121 public:\n-_\b1_\b2_\b2 _\b~_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg ()\n-123 {\n-124 _\br_\be_\bl_\be_\ba_\bs_\be();\n-125 }\n-126\n-_\b1_\b2_\b7 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int codim, unsigned int subEntity\n-) const\n-128 {\n-129 assert( !(*this) == false );\n-130 assert( (codim >= 0) && (codim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) );\n-131 const Cache &cache = cache_[ codim ];\n-132 return element->dof[ cache.first + subEntity ][ cache.second ];\n-133 }\n-134\n-_\b1_\b3_\b5 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &element, int codim, unsigned int\n-subEntity ) const\n-136 {\n-137 return (*this)( element._\be_\bl(), codim, subEntity );\n-138 }\n-139\n-_\b1_\b4_\b0 explicit operator bool () const\n-141 {\n-142 return (bool)mesh_;\n-143 }\n-144\n-_\b1_\b4_\b5 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be ( int codim ) const\n-146 {\n-147 assert( *this );\n-148 assert( (codim >= 0) && (codim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) );\n-149 return dofSpace_[ codim ];\n-150 }\n-151\n-_\b1_\b5_\b2 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\be_\bm_\bp_\bt_\by_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be () const\n-153 {\n-154 assert( *this );\n-155 return emptySpace_;\n-156 }\n-157\n-_\b1_\b5_\b8 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh () const\n-159 {\n-160 return mesh_;\n-161 }\n-162\n-_\b1_\b6_\b3 int _\bs_\bi_\bz_\be ( int codim ) const\n-164 {\n-165 return _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be( codim )->admin->size;\n-166 }\n-167\n-_\b1_\b6_\b8 void _\bc_\br_\be_\ba_\bt_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh );\n-169\n-_\b1_\b7_\b0 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n-171 {\n-172 if( *this )\n-173 {\n-174 for( int codim = 0; codim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++codim )\n-175 freeDofSpace( dofSpace_[ codim ] );\n-176 freeDofSpace( emptySpace_ );\n-177 mesh_ = _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br();\n-178 }\n-179 }\n-180\n-181 private:\n-182 static const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *createEmptyDofSpace ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh );\n-183 static const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *createDofSpace ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh,\n-184 const std::string &name,\n-185 const int (&ndof)[ nNodeTypes ],\n-186 const bool periodic = false );\n-187 static void freeDofSpace ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be );\n-188\n-189 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br mesh_;\n-190 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *emptySpace_;\n-191 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace_[ _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn+1 ];\n-192 Cache cache_[ _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn+1 ];\n-193 };\n-194\n-195\n-196\n-197 template< int dim >\n-198 inline void\n-_\b1_\b9_\b9 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh )\n-200 {\n-201 release();\n-202\n-203 if( !mesh )\n-204 return;\n-205\n-206 mesh_ = mesh;\n-207\n-208 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i )\n-{ CreateDofSpace< i >::apply( mesh_, dofSpace_ ); } );\n-209 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i )\n-{ CacheDofSpace< i >::apply( dofSpace_, cache_ ); } );\n-210\n-211 emptySpace_ = createEmptyDofSpace( mesh_ );\n-212 for( int i = 0; i < nNodeTypes; ++i )\n-213 assert( emptySpace_->admin->n_dof[ i ] == 0 );\n-214 }\n-215\n-216\n-217\n-218 template< int dim >\n-219 inline const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *\n-220 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bE_\bm_\bp_\bt_\by_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh\n-)\n-221 {\n-222 int ndof[ nNodeTypes ];\n-223 for( int i = 0; i < nNodeTypes; ++i )\n-224 ndof[ i ] = 0;\n-225 std::string name = \"Empty\";\n-226 return createDofSpace( mesh, name, ndof );\n-227 }\n-228\n-229\n-230 template< int dim >\n-231 inline const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *\n-232 HierarchyDofNumbering< dim >::createDofSpace ( const MeshPointer &mesh,\n-233 const std::string &name,\n-234 const int (&ndof)[ nNodeTypes ],\n-235 const bool periodic )\n-236 {\n-237 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA FLAGS flags\n-238 = ADM_PRESERVE_COARSE_DOFS | (periodic ? ADM_PERIODIC : 0);\n-239 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_space ( mesh, name.c_str(), ndof, flags );\n-240 }\n-241\n-242\n-243 template< int dim >\n-244 inline void\n-245 HierarchyDofNumbering< dim >::freeDofSpace ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace )\n-246 {\n-247 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_fe_space( dofSpace );\n-248 }\n-249\n-250\n-251\n-252 // HierarchyDofNumbering::CreateDofSpace\n-253 // -------------------------------------\n-254\n-255 template< int dim >\n-256 template< int codim >\n-257 struct HierarchyDofNumbering< dim >::CreateDofSpace\n-258 {\n-259 static void apply ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh, const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *(&_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be)\n-[ dim+1 ] )\n-260 {\n-261 int ndof[ nNodeTypes ];\n-262 for( int i = 0; i < nNodeTypes; ++i )\n-263 ndof[ i ] = 0;\n-264 ndof[ CodimType< dim, codim >::value ] = 1;\n-265\n-266 std::string name = \"Codimension \";\n-267 name += (char)(codim + '0');\n-268\n-269 _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ] = createDofSpace( _\bm_\be_\bs_\bh, name, ndof );\n-270 assert( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ] );\n-271 }\n-272 };\n-273\n-274\n-275\n-276 // HierarchyDofNumbering::CacheDofSpace\n-277 // ------------------------------------\n-278\n-279 template< int dim >\n-280 template< int codim >\n-281 struct HierarchyDofNumbering< dim >::CacheDofSpace\n-282 {\n-283 static void apply ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *(&_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be)[ dim+1 ], Cache (&cache)\n-[ dim+1 ] )\n-284 {\n-285 assert( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ] );\n-286 const int codimtype = CodimType< dim, codim >::value;\n-287 cache[ codim ].first = _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ]->mesh->node[ codimtype ];\n-288 cache[ codim ].second = _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ]->admin->n0_dof[ codimtype ];\n-289 }\n-290 };\n-291\n-292 } // namespace Alberta\n-293\n-294} // namespace Dune\n-295\n-296#endif // #if HAVE_ALBERTA\n-297\n-298#endif // #ifndef DUNE_ALBERTA_DOFADMIN_HH\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+39 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba macroData_;\n+40\n+41 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br ( const _\bT_\bh_\bi_\bs & );\n+42 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & );\n+43\n+44 public:\n+_\b4_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br ()\n+46 {}\n+47\n+_\b4_\b8 void _\br_\be_\ba_\bd_\bG_\br_\bi_\bd ( const std::string &fileName, _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by &factory )\n+49 {\n+50 // read ALBERTA macro triangulation\n+51 macroData_._\br_\be_\ba_\bd( fileName, false );\n+52\n+53 // insert all vertices into the factory\n+54 const int numVertices = macroData_._\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt();\n+55 for( int i = 0; i < numVertices; ++i )\n+56 {\n+57 FieldVector< ctype, dimensionworld > v;\n+58 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coords = macroData_._\bv_\be_\br_\bt_\be_\bx( i );\n+59 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++j )\n+60 v[ j ] = coords[ j ];\n+61 factory._\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx( v );\n+62 }\n+63\n+64 // insert all elements into the factory\n+65 std::vector< unsigned int > vertices( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn+1 );\n+66 const int numElements = macroData_._\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt();\n+67 for( int i = 0; i < numElements; ++i )\n+68 {\n+69 const typename _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &id = macroData_._\be_\bl_\be_\bm_\be_\bn_\bt( i );\n+70 for( int j = 0; j <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n+71 vertices[ j ] = id[ j ];\n+72 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt( GeometryTypes::simplex( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ), vertices );\n+73 }\n+74\n+75 // release ALBERTA macro data\n+76 macroData_._\br_\be_\bl_\be_\ba_\bs_\be();\n+77 }\n+78 };\n+79\n+80}\n+81\n+82#endif // #if HAVE_ALBERTA\n+83\n+84#endif\n+_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh\n+provides a wrapper for ALBERTA's macro_data structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ALBERTA EL Element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-ALBERTA FE_SPACE DofSpace\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static const int dimensionworld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\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 dofadmin.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n-DofAccess()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-static const int numSubEntities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n-DofAccess(const DofSpace *dofSpace)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-int operator()(const Element *element, int subEntity, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-HierarchyDofNumbering()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-int operator()(const Element *element, int codim, unsigned int subEntity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bm_\be_\bs_\bh\n-const MeshPointer & mesh() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create(const MeshPointer &mesh)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\b~_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-~HierarchyDofNumbering()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-Alberta::MeshPointer< dimension > MeshPointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * dofSpace(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\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 dofadmin.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\be_\bm_\bp_\bt_\by_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * emptyDofSpace() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:152\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Dune::GridFactory< Grid > GridFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br\n+AlbertaReader()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bG_\br_\bi_\bd\n+void readGrid(const std::string &fileName, GridFactory &factory)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertareader.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd\n+int ElementId[numVertices]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n-Element * el() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:192\n+release the macro data structure\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt\n+int elementCount() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx\n+GlobalVector & vertex(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt\n+int vertexCount() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n+ElementId & element(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\ba_\bd\n+void read(const std::string &filename, bool binary=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:413\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static constexpr int dimensionworld\n+The dimension of the world the grid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+Define type used for coordinates in grid module.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:532\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n+virtual void insertElement(const GeometryType &type, const std::vector<\n+unsigned int > &vertices)\n+Insert an element into the coarse grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n+virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)\n+Insert a vertex into the coarse grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:335\n+_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+Provide a generic factory class for unstructured grids.\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00653.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00653.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: geometrycache.hh File Reference\n+dune-grid: albertaheader.hh File Reference\n \n \n \n \n \n \n \n@@ -70,39 +70,122 @@\n \n
    \n
    \n \n-
    geometrycache.hh File Reference
    \n+Macros
    \n+
    albertaheader.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/algebra.hh>
    \n+
    #include <alberta/alberta.h>
    \n
    \n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::Alberta::GeometryCache< dim >
     
    struct  Dune::Alberta::GeometryCacheProxy< dim >
     
    \n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     

    \n+Macros

    #define DIM_OF_WORLD   ALBERTA_DIM
     
    #define ALBERTA   ::
     
    #define ALBERTA_DEBUG   0
     
    #define _MAX_NOT_DEFINED_
     
    #define _MIN_NOT_DEFINED_
     
    #define _ABS_NOT_DEFINED_
     
    \n+

    Macro Definition Documentation

    \n+\n+

    ◆ _ABS_NOT_DEFINED_

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define _ABS_NOT_DEFINED_
    \n+
    \n+\n+
    \n+
    \n+\n+

    ◆ _MAX_NOT_DEFINED_

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define _MAX_NOT_DEFINED_
    \n+
    \n+\n+
    \n+
    \n+\n+

    ◆ _MIN_NOT_DEFINED_

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define _MIN_NOT_DEFINED_
    \n+
    \n+\n+
    \n+
    \n+\n+

    ◆ ALBERTA

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define ALBERTA   ::
    \n+
    \n+\n+
    \n+
    \n+\n+

    ◆ ALBERTA_DEBUG

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define ALBERTA_DEBUG   0
    \n+
    \n+\n+
    \n+
    \n+\n+

    ◆ DIM_OF_WORLD

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define DIM_OF_WORLD   ALBERTA_DIM
    \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,25 +1,39 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-geometrycache.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n+_\bM_\ba_\bc_\br_\bo_\bs\n+albertaheader.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>\n+M\bMa\bac\bcr\bro\bos\bs\n+#define\u00a0 _\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD\u00a0\u00a0\u00a0ALBERTA_DIM\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b<_\b _\bd_\bi_\bm_\b _\b>\n+#define\u00a0 _\bA_\bL_\bB_\bE_\bR_\bT_\bA\u00a0\u00a0\u00a0::\n \u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0 Include standard header files.\n+#define\u00a0 _\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bD_\bE_\bB_\bU_\bG\u00a0\u00a0\u00a00\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n+#define\u00a0 _\b__\bM_\bA_\bX_\b__\bN_\bO_\bT_\b__\bD_\bE_\bF_\bI_\bN_\bE_\bD_\b_\n \u00a0\n+#define\u00a0 _\b__\bM_\bI_\bN_\b__\bN_\bO_\bT_\b__\bD_\bE_\bF_\bI_\bN_\bE_\bD_\b_\n+\u00a0\n+#define\u00a0 _\b__\bA_\bB_\bS_\b__\bN_\bO_\bT_\b__\bD_\bE_\bF_\bI_\bN_\bE_\bD_\b_\n+\u00a0\n+*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_A\bAB\bBS\bS_\b_N\bNO\bOT\bT_\b_D\bDE\bEF\bFI\bIN\bNE\bED\bD_\b_ *\b**\b**\b**\b**\b*\n+#define _ABS_NOT_DEFINED_\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_M\bMA\bAX\bX_\b_N\bNO\bOT\bT_\b_D\bDE\bEF\bFI\bIN\bNE\bED\bD_\b_ *\b**\b**\b**\b**\b*\n+#define _MAX_NOT_DEFINED_\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_M\bMI\bIN\bN_\b_N\bNO\bOT\bT_\b_D\bDE\bEF\bFI\bIN\bNE\bED\bD_\b_ *\b**\b**\b**\b**\b*\n+#define _MIN_NOT_DEFINED_\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0A\bAL\bLB\bBE\bER\bRT\bTA\bA *\b**\b**\b**\b**\b*\n+#define ALBERTA\u00a0\u00a0\u00a0::\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_D\bDE\bEB\bBU\bUG\bG *\b**\b**\b**\b**\b*\n+#define ALBERTA_DEBUG\u00a0\u00a0\u00a00\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDI\bIM\bM_\b_O\bOF\bF_\b_W\bWO\bOR\bRL\bLD\bD *\b**\b**\b**\b**\b*\n+#define DIM_OF_WORLD\u00a0\u00a0\u00a0ALBERTA_DIM\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00653_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00653_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: geometrycache.hh Source File\n+dune-grid: albertaheader.hh Source File\n \n \n \n \n \n \n \n@@ -74,187 +74,94 @@\n \n \n
    \n
    \n-
    geometrycache.hh
    \n+
    albertaheader.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH
    \n-
    6#define DUNE_ALBERTA_GEOMETRYCACHE_HH
    \n+
    5#ifndef DUNE_ALBERTAHEADER_HH
    \n+
    6#define DUNE_ALBERTAHEADER_HH
    \n
    7
    \n-\n-\n-
    10
    \n-
    11#if HAVE_ALBERTA
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 namespace Alberta
    \n-
    17 {
    \n+
    8#if HAVE_ALBERTA
    \n+
    9
    \n+
    10#if not (ALBERTA_DIM > 0)
    \n+
    11 #if HEADERCHECK
    \n+
    12 #undef ALBERTA_DIM
    \n+
    13 #define ALBERTA_DIM 2
    \n+
    14 #else
    \n+
    15 #error ALBERTA_DIM should be 1, 2, or 3
    \n+
    16 #endif
    \n+
    17#endif
    \n
    18
    \n-
    19 // GeometryCache
    \n-
    20 // -------------
    \n-
    21
    \n-
    22 template< int dim >
    \n-
    \n-\n-
    24 {
    \n-
    25 static const unsigned int flagIntegrationElement = (1 << 0);
    \n-
    26 static const unsigned int flagJacobianTransposed = (1 << 1);
    \n-
    27 static const unsigned int flagJacobianInverseTransposed = (1 << 2);
    \n-
    28
    \n-
    29 public:
    \n-
    30 typedef FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed;
    \n-
    31 typedef FieldMatrix< Real, dim, dimWorld > JacobianTransposed;
    \n-
    32
    \n-
    \n-\n-
    34 : flags_( 0 )
    \n-
    35 {}
    \n-
    \n-
    36
    \n-
    \n-
    37 const Real &integrationElement ( const ALBERTA EL_INFO &elInfo )
    \n-
    38 {
    \n-
    39 if( (flags_ & flagIntegrationElement) == 0 )
    \n-
    40 {
    \n-
    41 integrationElement_ = std::abs( determinant( jacobianTransposed( elInfo ) ) );
    \n-
    42 assert( integrationElement_ > 1e-14 );
    \n-
    43 flags_ |= flagIntegrationElement;
    \n-
    44 }
    \n-
    45 return integrationElement_;
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    \n-
    48 const JacobianTransposed &jacobianTransposed ( const ALBERTA EL_INFO &elInfo )
    \n-
    49 {
    \n-
    50 if( (flags_ & flagJacobianTransposed) == 0 )
    \n-
    51 {
    \n-
    52 assert( (elInfo.fill_flag & FillFlags< dim >::coords) != 0 );
    \n-
    53 const GlobalVector &x = elInfo.coord[ 0 ];
    \n-
    54 for( int i = 0; i < dim; ++i )
    \n-
    55 {
    \n-
    56 const GlobalVector &y = elInfo.coord[ i+1 ];
    \n-
    57 for( int j = 0; j < dimWorld; ++j )
    \n-
    58 jacobianTransposed_[ i ][ j ] = y[ j ] - x[ j ];
    \n-
    59 }
    \n-
    60 flags_ |= flagJacobianTransposed;
    \n-
    61 }
    \n-
    62 return jacobianTransposed_;
    \n-
    63 }
    \n-
    \n-
    64
    \n-\n-
    \n-
    66 jacobianInverseTransposed ( const ALBERTA EL_INFO &elInfo )
    \n-
    67 {
    \n-
    68 if( (flags_ & flagJacobianInverseTransposed) == 0 )
    \n-
    69 {
    \n-
    70 integrationElement_ = std::abs( invert( jacobianTransposed( elInfo ), jacobianInverseTransposed_ ) );
    \n-
    71 assert( integrationElement_ > 1e-14 );
    \n-
    72 flags_ |= flagIntegrationElement | flagJacobianInverseTransposed;
    \n-
    73 }
    \n-
    74 return jacobianInverseTransposed_;
    \n-
    75 }
    \n-
    \n+
    19// Set ALBERTA's DIM_OF_WORLD preprocessor variable
    \n+
    20#ifndef ALBERTA_DIM
    \n+
    21#error "ALBERTA_DIM needed to use AlbertaGrid."
    \n+
    22#endif
    \n+
    23#define DIM_OF_WORLD ALBERTA_DIM
    \n+
    24
    \n+
    25// if we have ALBERTA C++ lib define namespace for ALBERTA
    \n+
    26#ifdef __ALBERTApp__
    \n+
    27#define ALBERTA Alberta::
    \n+
    28#else
    \n+
    29#define ALBERTA ::
    \n+
    30#endif
    \n+
    31
    \n+
    32#ifndef ALBERTA_DEBUG
    \n+
    33#define ALBERTA_DEBUG 0
    \n+
    34#endif
    \n+
    35
    \n+
    36// MAX, MIN, and ABS are defined macros of ALBERTA
    \n+
    37// if they are not defined elsewhere, they are undefined here
    \n+
    38#ifndef MAX
    \n+
    39#define _MAX_NOT_DEFINED_
    \n+
    40#endif
    \n+
    41
    \n+
    42#ifndef MIN
    \n+
    43#define _MIN_NOT_DEFINED_
    \n+
    44#endif
    \n+
    45
    \n+
    46#ifndef ABS
    \n+
    47#define _ABS_NOT_DEFINED_
    \n+
    48#endif
    \n+
    49
    \n+
    50#ifndef DIM_OF_WORLD
    \n+
    51#error "DIM_OF_WORLD not defined."
    \n+
    52#endif
    \n+
    53
    \n+
    54#ifdef HAVE_CONFIG_H
    \n+
    55#define ALBERTASAVE_HAVE_CONFIG_H HAVE_CONFIG_H
    \n+
    56#undef HAVE_CONFIG_H
    \n+
    57#endif
    \n+
    58
    \n+
    59#include <alberta/alberta.h>
    \n+
    60
    \n+
    61#ifdef ALBERTASAVE_HAVE_CONFIG_H
    \n+
    62#define HAVE_CONFIG_H ALBERTASAVE_HAVE_CONFIG_H
    \n+
    63#undef ALBERTASAVE_HAVE_CONFIG_H
    \n+
    64#endif
    \n+
    65
    \n+
    66#ifndef _ALBERTA_H_
    \n+
    67#error "Unable to include alberta.h."
    \n+
    68#endif
    \n+
    69
    \n+
    70// Macro nil may be defined by alberta_util.h. If so, undefine it.
    \n+
    71#ifdef nil
    \n+
    72#undef nil
    \n+
    73#endif
    \n+
    74
    \n+
    75#endif // #if HAVE_ALBERTA
    \n
    76
    \n-
    77 private:
    \n-
    78 unsigned int flags_;
    \n-
    79 Real integrationElement_;
    \n-
    80 FieldMatrix< Real, dim, dimWorld > jacobianTransposed_;
    \n-
    81 FieldMatrix< Real, dimWorld, dim > jacobianInverseTransposed_;
    \n-
    82 };
    \n-
    \n-
    83
    \n-
    84
    \n-
    85
    \n-
    86 // GeometryCacheProxy
    \n-
    87 // ------------------
    \n-
    88
    \n-
    89 template< int dim >
    \n-
    \n-\n-
    91 {
    \n-
    92 typedef FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed;
    \n-
    93 typedef FieldMatrix< Real, dim, dimWorld > JacobianTransposed;
    \n-
    94
    \n-
    \n-
    95 GeometryCacheProxy ( GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO &elInfo )
    \n-
    96 : geometryCache_( geometryCache ),
    \n-
    97 elInfo_( elInfo )
    \n-
    98 {}
    \n-
    \n-
    99
    \n-
    \n-\n-
    101 {
    \n-
    102 return geometryCache_.integrationElement( elInfo_ );
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    \n-\n-
    106 {
    \n-
    107 return geometryCache_.jacobianTransposed( elInfo_ );
    \n-
    108 }
    \n-
    \n-
    109
    \n-
    \n-\n-
    111 {
    \n-
    112 return geometryCache_.jacobianInverseTransposed( elInfo_ );
    \n-
    113 }
    \n-
    \n-
    114
    \n-
    115 private:
    \n-
    116 GeometryCache< dim > &geometryCache_;
    \n-
    117 const ALBERTA EL_INFO &elInfo_;
    \n-
    118 };
    \n-
    \n-
    119
    \n-
    120 } // namespace Alberta
    \n-
    121
    \n-
    122} // namespace Dune
    \n-
    123
    \n-
    124#endif // #if HAVE_ALBERTA
    \n-
    125
    \n-
    126#endif // #ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH
    \n-\n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n-
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    static K determinant(const FieldMatrix< K, 0, m > &matrix)
    Definition algebra.hh:30
    \n-
    static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
    Definition algebra.hh:81
    \n-
    static const int dimWorld
    Definition misc.hh:46
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition geometrycache.hh:24
    \n-
    GeometryCache()
    Definition geometrycache.hh:33
    \n-
    const Real & integrationElement(const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:37
    \n-
    FieldMatrix< Real, dim, dimWorld > JacobianTransposed
    Definition geometrycache.hh:31
    \n-
    const JacobianTransposed & jacobianTransposed(const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:48
    \n-
    const JacobianInverseTransposed & jacobianInverseTransposed(const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:66
    \n-
    FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed
    Definition geometrycache.hh:30
    \n-
    Definition geometrycache.hh:91
    \n-
    const JacobianTransposed & jacobianTransposed()
    Definition geometrycache.hh:105
    \n-
    FieldMatrix< Real, dim, dimWorld > JacobianTransposed
    Definition geometrycache.hh:93
    \n-
    FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed
    Definition geometrycache.hh:92
    \n-
    const Real & integrationElement()
    Definition geometrycache.hh:100
    \n-
    GeometryCacheProxy(GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:95
    \n-
    const JacobianInverseTransposed & jacobianInverseTransposed()
    Definition geometrycache.hh:110
    \n-
    Definition misc.hh:231
    \n+
    77#endif // #ifndef DUNE_ALBERTAHEADER_HH
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,210 +1,89 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-geometrycache.hh\n+albertaheader.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH\n-6#define DUNE_ALBERTA_GEOMETRYCACHE_HH\n+5#ifndef DUNE_ALBERTAHEADER_HH\n+6#define DUNE_ALBERTAHEADER_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n-10\n-11#if HAVE_ALBERTA\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 namespace Alberta\n-17 {\n+8#if HAVE_ALBERTA\n+9\n+10#if not (ALBERTA_DIM > 0)\n+11 #if HEADERCHECK\n+12 #undef ALBERTA_DIM\n+13 #define ALBERTA_DIM 2\n+14 #else\n+15 #error ALBERTA_DIM should be 1, 2, or 3\n+16 #endif\n+17#endif\n 18\n-19 // GeometryCache\n-20 // -------------\n-21\n-22 template< int dim >\n-_\b2_\b3 class _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-24 {\n-25 static const unsigned int flagIntegrationElement = (1 << 0);\n-26 static const unsigned int flagJacobianTransposed = (1 << 1);\n-27 static const unsigned int flagJacobianInverseTransposed = (1 << 2);\n-28\n-29 public:\n-_\b3_\b0 typedef FieldMatrix< Real, dimWorld, dim > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n-_\b3_\b1 typedef FieldMatrix< Real, dim, dimWorld > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n-32\n-_\b3_\b3 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be ()\n-34 : flags_( 0 )\n-35 {}\n-36\n-_\b3_\b7 const _\bR_\be_\ba_\bl &_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n-38 {\n-39 if( (flags_ & flagIntegrationElement) == 0 )\n-40 {\n-41 integrationElement_ = std::abs( _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt( _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd( elInfo ) )\n-);\n-42 assert( integrationElement_ > 1e-14 );\n-43 flags_ |= flagIntegrationElement;\n-44 }\n-45 return integrationElement_;\n-46 }\n-47\n-_\b4_\b8 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo\n-)\n-49 {\n-50 if( (flags_ & flagJacobianTransposed) == 0 )\n-51 {\n-52 assert( (elInfo.fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs) != 0 );\n-53 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &x = elInfo.coord[ 0 ];\n-54 for( int i = 0; i < dim; ++i )\n-55 {\n-56 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &y = elInfo.coord[ i+1 ];\n-57 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n-58 jacobianTransposed_[ i ][ j ] = y[ j ] - x[ j ];\n-59 }\n-60 flags_ |= flagJacobianTransposed;\n-61 }\n-62 return jacobianTransposed_;\n-63 }\n-64\n-65 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &\n-_\b6_\b6 _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n-67 {\n-68 if( (flags_ & flagJacobianInverseTransposed) == 0 )\n-69 {\n-70 integrationElement_ = std::abs( _\bi_\bn_\bv_\be_\br_\bt( _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd( elInfo ),\n-jacobianInverseTransposed_ ) );\n-71 assert( integrationElement_ > 1e-14 );\n-72 flags_ |= flagIntegrationElement | flagJacobianInverseTransposed;\n-73 }\n-74 return jacobianInverseTransposed_;\n-75 }\n+19// Set ALBERTA's DIM_OF_WORLD preprocessor variable\n+20#ifndef ALBERTA_DIM\n+21#error \"ALBERTA_DIM needed to use AlbertaGrid.\"\n+22#endif\n+_\b2_\b3#define DIM_OF_WORLD ALBERTA_DIM\n+24\n+25// if we have ALBERTA C++ lib define namespace for ALBERTA\n+26#ifdef __ALBERTApp__\n+27#define ALBERTA Alberta::\n+28#else\n+_\b2_\b9#define ALBERTA ::\n+30#endif\n+31\n+32#ifndef ALBERTA_DEBUG\n+_\b3_\b3#define ALBERTA_DEBUG 0\n+34#endif\n+35\n+36// MAX, MIN, and ABS are defined macros of ALBERTA\n+37// if they are not defined elsewhere, they are undefined here\n+38#ifndef MAX\n+_\b3_\b9#define _MAX_NOT_DEFINED_\n+40#endif\n+41\n+42#ifndef MIN\n+_\b4_\b3#define _MIN_NOT_DEFINED_\n+44#endif\n+45\n+46#ifndef ABS\n+_\b4_\b7#define _ABS_NOT_DEFINED_\n+48#endif\n+49\n+50#ifndef DIM_OF_WORLD\n+51#error \"DIM_OF_WORLD not defined.\"\n+52#endif\n+53\n+54#ifdef HAVE_CONFIG_H\n+55#define ALBERTASAVE_HAVE_CONFIG_H HAVE_CONFIG_H\n+56#undef HAVE_CONFIG_H\n+57#endif\n+58\n+59#include \n+60\n+61#ifdef ALBERTASAVE_HAVE_CONFIG_H\n+62#define HAVE_CONFIG_H ALBERTASAVE_HAVE_CONFIG_H\n+63#undef ALBERTASAVE_HAVE_CONFIG_H\n+64#endif\n+65\n+66#ifndef _ALBERTA_H_\n+67#error \"Unable to include alberta.h.\"\n+68#endif\n+69\n+70// Macro nil may be defined by alberta_util.h. If so, undefine it.\n+71#ifdef nil\n+72#undef nil\n+73#endif\n+74\n+75#endif // #if HAVE_ALBERTA\n 76\n-77 private:\n-78 unsigned int flags_;\n-79 _\bR_\be_\ba_\bl integrationElement_;\n-80 FieldMatrix< Real, dim, dimWorld > jacobianTransposed_;\n-81 FieldMatrix< Real, dimWorld, dim > jacobianInverseTransposed_;\n-82 };\n-83\n-84\n-85\n-86 // GeometryCacheProxy\n-87 // ------------------\n-88\n-89 template< int dim >\n-_\b9_\b0 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n-91 {\n-_\b9_\b2 typedef FieldMatrix< Real, dimWorld, dim > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n-_\b9_\b3 typedef FieldMatrix< Real, dim, dimWorld > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n-94\n-_\b9_\b5 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by ( _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b> &geometryCache, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-EL_INFO &elInfo )\n-96 : geometryCache_( geometryCache ),\n-97 elInfo_( elInfo )\n-98 {}\n-99\n-_\b1_\b0_\b0 const _\bR_\be_\ba_\bl &_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-101 {\n-102 return geometryCache_.integrationElement( elInfo_ );\n-103 }\n-104\n-_\b1_\b0_\b5 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ()\n-106 {\n-107 return geometryCache_.jacobianTransposed( elInfo_ );\n-108 }\n-109\n-_\b1_\b1_\b0 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ()\n-111 {\n-112 return geometryCache_.jacobianInverseTransposed( elInfo_ );\n-113 }\n-114\n-115 private:\n-116 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b> &geometryCache_;\n-117 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo_;\n-118 };\n-119\n-120 } // namespace Alberta\n-121\n-122} // namespace Dune\n-123\n-124#endif // #if HAVE_ALBERTA\n-125\n-126#endif // #ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH\n-_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-static K determinant(const FieldMatrix< K, 0, m > &matrix)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n-static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 >\n-&inverse)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n-GeometryCache()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n-const Real & integrationElement(const ALBERTA EL_INFO &elInfo)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-FieldMatrix< Real, dim, dimWorld > JacobianTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-const JacobianTransposed & jacobianTransposed(const ALBERTA EL_INFO &elInfo)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-const JacobianInverseTransposed & jacobianInverseTransposed(const ALBERTA\n-EL_INFO &elInfo)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-const JacobianTransposed & jacobianTransposed()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-FieldMatrix< Real, dim, dimWorld > JacobianTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n-const Real & integrationElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n-GeometryCacheProxy(GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO\n-&elInfo)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-const JacobianInverseTransposed & jacobianInverseTransposed()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n+77#endif // #ifndef DUNE_ALBERTAHEADER_HH\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00656.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00656.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: algebra.hh File Reference\n+dune-grid: meshpointer.hh File Reference\n \n \n \n \n \n \n \n@@ -70,77 +70,49 @@\n \n
    \n
    \n \n-
    algebra.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    meshpointer.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+\n+

    provides a wrapper for ALBERTA's mesh structure \n+More...

    \n+
    #include <limits>
    \n+#include <string>
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/elementinfo.hh>
    \n+#include <dune/grid/albertagrid/macrodata.hh>
    \n+#include <dune/grid/albertagrid/projection.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::Alberta::MeshPointer< dim >
     
    class  Dune::Alberta::MeshPointer< dim >::MacroIterator
     
    \n \n \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\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 K >
    static FieldVector< K, 3 > Dune::Alberta::vectorProduct (const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v)
     
    template<class K , int m>
    static K Dune::Alberta::determinant (const FieldMatrix< K, 0, m > &matrix)
     
    template<class K >
    static K Dune::Alberta::determinant (const FieldMatrix< K, 1, 1 > &matrix)
     
    template<class K , int m>
    static K Dune::Alberta::determinant (const FieldMatrix< K, 1, m > &matrix)
     
    template<class K >
    static K Dune::Alberta::determinant (const FieldMatrix< K, 2, 2 > &matrix)
     
    template<class K >
    static K Dune::Alberta::determinant (const FieldMatrix< K, 2, 3 > &matrix)
     
    template<class K , int m>
    static K Dune::Alberta::determinant (const FieldMatrix< K, 2, m > &matrix)
     
    template<class K >
    static K Dune::Alberta::determinant (const FieldMatrix< K, 3, 3 > &matrix)
     
    template<class K , int m>
    static K Dune::Alberta::invert (const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
     
    template<class K >
    static K Dune::Alberta::invert (const FieldMatrix< K, 1, 1 > &matrix, FieldMatrix< K, 1, 1 > &inverse)
     
    template<class K , int m>
    static K Dune::Alberta::invert (const FieldMatrix< K, 1, m > &matrix, FieldMatrix< K, m, 1 > &inverse)
     
    template<class K >
    static K Dune::Alberta::invert (const FieldMatrix< K, 2, 2 > &matrix, FieldMatrix< K, 2, 2 > &inverse)
     
    template<class K , int m>
    static K Dune::Alberta::invert (const FieldMatrix< K, 2, m > &matrix, FieldMatrix< K, m, 2 > &inverse)
     
    template<class K >
    static K Dune::Alberta::invert (const FieldMatrix< K, 3, 3 > &matrix, FieldMatrix< K, 3, 3 > &inverse)
     
    \n-
    \n+

    Detailed Description

    \n+

    provides a wrapper for ALBERTA's mesh structure

    \n+
    Author
    Martin Nolte
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,77 +1,34 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-algebra.hh File Reference\n-#include \n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+meshpointer.hh File Reference\n+provides a wrapper for ALBERTA's mesh structure _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bp_\br_\bo_\bj_\be_\bc_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-static FieldVector< K, 3 >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt (const FieldVector< K,\n- 3 > &u, const FieldVector< K, 3 > &v)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 0, m > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 1, 1 > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 1, m > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 2, 2 > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 2, 3 > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 2, m > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt (const FieldMatrix< K,\n- 3, 3 > &matrix)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt (const FieldMatrix< K, 0, m >\n- &matrix, FieldMatrix< K, m, 0 > &inverse)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt (const FieldMatrix< K, 1, 1 >\n- &matrix, FieldMatrix< K, 1, 1 > &inverse)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt (const FieldMatrix< K, 1, m >\n- &matrix, FieldMatrix< K, m, 1 > &inverse)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt (const FieldMatrix< K, 2, 2 >\n- &matrix, FieldMatrix< K, 2, 2 > &inverse)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt (const FieldMatrix< K, 2, m >\n- &matrix, FieldMatrix< K, m, 2 > &inverse)\n-\u00a0\n-template\n- static K\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt (const FieldMatrix< K, 3, 3 >\n- &matrix, FieldMatrix< K, 3, 3 > &inverse)\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+provides a wrapper for ALBERTA's mesh structure\n+ Author\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00656_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00656_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: algebra.hh Source File\n+dune-grid: meshpointer.hh Source File\n \n \n \n \n \n \n \n@@ -74,197 +74,623 @@\n \n \n
    \n
    \n-
    algebra.hh
    \n+
    meshpointer.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_ALGEBRA_HH
    \n-
    6#define DUNE_ALBERTA_ALGEBRA_HH
    \n+
    5#ifndef DUNE_ALBERTA_MESHPOINTER_HH
    \n+
    6#define DUNE_ALBERTA_MESHPOINTER_HH
    \n
    7
    \n-
    8#include <dune/common/fvector.hh>
    \n-
    9#include <dune/common/fmatrix.hh>
    \n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13
    \n-
    14 namespace Alberta
    \n-
    15 {
    \n-
    16
    \n-
    17 template< class K >
    \n-
    18 inline static FieldVector< K, 3 >
    \n-
    \n-
    19 vectorProduct ( const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v )
    \n-
    20 {
    \n-
    21 FieldVector< K, 3 > w;
    \n-
    22 w[ 0 ] = u[ 1 ] * v[ 2 ] - u[ 2 ] * v[ 1 ];
    \n-
    23 w[ 1 ] = u[ 2 ] * v[ 0 ] - u[ 0 ] * v[ 2 ];
    \n-
    24 w[ 2 ] = u[ 0 ] * v[ 1 ] - u[ 1 ] * v[ 0 ];
    \n-
    25 return w;
    \n-
    26 }
    \n-
    \n-
    27
    \n+
    13#include <limits>
    \n+
    14#include <string>
    \n+
    15
    \n+\n+\n+\n+\n+
    20
    \n+
    21#if HAVE_ALBERTA
    \n+
    22
    \n+
    23namespace Dune
    \n+
    24{
    \n+
    25
    \n+
    26 namespace Alberta
    \n+
    27 {
    \n
    28
    \n-
    29 template< class K, int m >
    \n-
    \n-
    30 inline static K determinant ( [[maybe_unused]] const FieldMatrix< K, 0, m > &matrix )
    \n-
    31 {
    \n-
    32 return K( 1 );
    \n-
    33 }
    \n-
    \n+
    29 // External Forward Declarations
    \n+
    30 // -----------------------------
    \n+
    31
    \n+
    32 template< int dim >
    \n+
    33 class HierarchyDofNumbering;
    \n
    34
    \n-
    35 template< class K >
    \n-
    \n-
    36 inline static K determinant ( const FieldMatrix< K, 1, 1 > &matrix )
    \n-
    37 {
    \n-
    38 return matrix[ 0 ][ 0 ];
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    41 template< class K, int m >
    \n-
    \n-
    42 inline static K determinant ( const FieldMatrix< K, 1, m > &matrix )
    \n-
    43 {
    \n-
    44 using std::sqrt;
    \n-
    45 K sum = matrix[ 0 ][ 0 ] * matrix[ 0 ][ 0 ];
    \n-
    46 for( int i = 1; i < m; ++i )
    \n-
    47 sum += matrix[ 0 ][ i ] * matrix[ 0 ][ i ];
    \n-
    48 return sqrt( sum );
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    51 template< class K >
    \n-
    \n-
    52 inline static K determinant ( const FieldMatrix< K, 2, 2 > &matrix )
    \n-
    53 {
    \n-
    54 return matrix[ 0 ][ 0 ] * matrix[ 1 ][ 1 ] - matrix[ 0 ][ 1 ] * matrix[ 1 ][ 0 ];
    \n-
    55 }
    \n+
    35 // MeshPointer
    \n+
    36 // -----------
    \n+
    37
    \n+
    38 template< int dim >
    \n+
    \n+\n+
    40 {
    \n+\n+\n+
    43 typedef typename ElementInfo::FillFlags FillFlags;
    \n+
    44
    \n+
    45 class BoundaryProvider;
    \n+
    46
    \n+
    47 template< int dimWorld >
    \n+
    48 struct Library;
    \n+
    49
    \n+
    50 public:
    \n+
    51 class MacroIterator;
    \n+
    52
    \n+
    \n+\n+
    54 : mesh_( 0 )
    \n+
    55 {}
    \n
    \n
    56
    \n-
    57 template< class K >
    \n-
    \n-
    58 inline static K determinant ( const FieldMatrix< K, 2, 3 > &matrix )
    \n-
    59 {
    \n-
    60 return vectorProduct( matrix[ 0 ], matrix[ 1 ] ).two_norm();
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    63 template< class K, int m >
    \n-
    \n-
    64 inline static K determinant ( const FieldMatrix< K, 2, m > &matrix )
    \n-
    65 {
    \n-
    66 using std::sqrt;
    \n-
    67 const K tmpA = matrix[ 0 ].two_norm2();
    \n-
    68 const K tmpB = matrix[ 1 ].two_norm2();
    \n-
    69 const K tmpC = matrix[ 0 ] * matrix[ 1 ];
    \n-
    70 return sqrt( tmpA * tmpB - tmpC * tmpC );
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    73 template< class K >
    \n-
    \n-
    74 inline static K determinant ( const FieldMatrix< K, 3, 3 > &matrix )
    \n-
    75 {
    \n-
    76 return matrix[ 0 ] * vectorProduct( matrix[ 1 ], matrix[ 2 ] );
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79
    \n-
    80 template< class K, int m >
    \n+
    \n+
    57 explicit MeshPointer ( Mesh *mesh )
    \n+
    58 : mesh_( mesh )
    \n+
    59 {}
    \n+
    \n+
    60
    \n+
    \n+
    61 operator Mesh * () const
    \n+
    62 {
    \n+
    63 return mesh_;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+
    66 explicit operator bool () const
    \n+
    67 {
    \n+
    68 return (bool)mesh_;
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    \n+\n+
    72 {
    \n+
    73 return MacroIterator( *this, false );
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    \n+\n+
    77 {
    \n+
    78 return MacroIterator( *this, true );
    \n+
    79 }
    \n+
    \n+
    80
    \n
    \n-
    81 inline static K invert ( [[maybe_unused]] const FieldMatrix< K, 0, m > &matrix,
    \n-
    82 [[maybe_unused]] FieldMatrix< K, m, 0 > &inverse )
    \n-
    83 {
    \n-
    84 return K( 1 );
    \n-
    85 }
    \n-
    \n-
    86
    \n-
    87 template< class K >
    \n-
    \n-
    88 inline static K invert ( const FieldMatrix< K, 1, 1 > &matrix,
    \n-
    89 FieldMatrix< K, 1, 1 > &inverse )
    \n-
    90 {
    \n-
    91 inverse[ 0 ][ 0 ] = K( 1 ) / matrix[ 0 ][ 0 ];
    \n-
    92 return matrix[ 0 ][ 0 ];
    \n-
    93 }
    \n-
    \n-
    94
    \n-
    95 template< class K, int m >
    \n-
    \n-
    96 inline static K invert ( const FieldMatrix< K, 1, m > &matrix,
    \n-
    97 FieldMatrix< K, m, 1 > &inverse )
    \n-
    98 {
    \n-
    99 using std::sqrt;
    \n-
    100 K detSqr = matrix[ 0 ].two_norm2();
    \n-
    101 K invDetSqr = K( 1 ) / detSqr;
    \n-
    102 for( int i = 0; i < m; ++i )
    \n-
    103 inverse[ i ][ 0 ] = invDetSqr * matrix[ 0 ][ i ];
    \n-
    104 return sqrt( detSqr );
    \n-
    105 }
    \n-
    \n-
    106
    \n-
    107 template< class K >
    \n-
    \n-
    108 inline static K invert ( const FieldMatrix< K, 2, 2 > &matrix,
    \n-
    109 FieldMatrix< K, 2, 2 > &inverse )
    \n-
    110 {
    \n-
    111 K det = determinant( matrix );
    \n-
    112 K invDet = K( 1 ) / det;
    \n-
    113 inverse[ 0 ][ 0 ] = invDet * matrix[ 1 ][ 1 ];
    \n-
    114 inverse[ 0 ][ 1 ] = - invDet * matrix[ 0 ][ 1 ];
    \n-
    115 inverse[ 1 ][ 0 ] = - invDet * matrix[ 1 ][ 0 ];
    \n-
    116 inverse[ 1 ][ 1 ] = invDet * matrix[ 0 ][ 0 ];
    \n-
    117 return det;
    \n-
    118 }
    \n-
    \n-
    119
    \n-
    120 template< class K, int m >
    \n-
    \n-
    121 inline static K invert ( const FieldMatrix< K, 2, m > &matrix,
    \n-
    122 FieldMatrix< K, m, 2 > &inverse )
    \n-
    123 {
    \n-
    124 using std::sqrt;
    \n-
    125 const K tmpA = matrix[ 0 ].two_norm2();
    \n-
    126 const K tmpB = matrix[ 1 ].two_norm2();
    \n-
    127 const K tmpC = matrix[ 0 ] * matrix[ 1 ];
    \n-
    128 const K detSqr = tmpA * tmpB - tmpC * tmpC;
    \n-
    129 const K invDetSqr = K( 1 ) / detSqr;
    \n-
    130 for( int i = 0; i < m; ++i )
    \n-
    131 {
    \n-
    132 inverse[ i ][ 0 ] = invDetSqr * (tmpB * matrix[ 0 ][ i ] - tmpC * matrix[ 1 ][ i ]);
    \n-
    133 inverse[ i ][ 1 ] = invDetSqr * (tmpA * matrix[ 1 ][ i ] - tmpC * matrix[ 0 ][ i ]);
    \n-
    134 }
    \n-
    135 return sqrt( detSqr );
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    138 template< class K >
    \n-
    \n-
    139 inline static K invert ( const FieldMatrix< K, 3, 3 > &matrix,
    \n-
    140 FieldMatrix< K, 3, 3 > &inverse )
    \n-
    141 {
    \n-
    142 return FMatrixHelp::invertMatrix( matrix, inverse );
    \n-
    143 }
    \n-
    \n-
    144 }
    \n-
    145
    \n-
    146}
    \n-
    147
    \n-
    148#endif // #ifndef DUNE_ALBERTA_ALGEBRA_HH
    \n+
    81 int numMacroElements () const;
    \n+
    82 int size ( int codim ) const;
    \n+
    83
    \n+
    84 // create a mesh from a macrodata structure
    \n+
    85 // params: macroData - macro data structure
    \n+
    86 // returns: number of boundary segments
    \n+
    \n+
    87 unsigned int create ( const MacroData< dim > &macroData );
    \n+
    88
    \n+
    89 // create a mesh from a macrodata structure, adding projections
    \n+
    90 // params: macroData - macro data structure
    \n+
    91 // projectionFactory - factory for the projections
    \n+
    92 // returns: number of boundary segments
    \n+
    93 template< class Proj, class Impl >
    \n+
    \n+
    94 unsigned int create ( const MacroData< dim > &macroData,
    \n+
    95 const ProjectionFactoryInterface< Proj, Impl > &projectionFactory );
    \n+
    96
    \n+
    97 // create a mesh from a file
    \n+
    98 // params: filename - file name of an Alberta macro triangulation
    \n+
    99 // binary - read binary?
    \n+
    100 // returns: number of boundary segments
    \n+
    \n+
    101 unsigned int create ( const std::string &filename, bool binary = false );
    \n+
    102
    \n+
    103 // read back a mesh from a file
    \n+
    104 // params: filename - file name of an Alberta save file
    \n+
    105 // time - variable to receive the time stored in the file
    \n+
    106 // returns: number of boundary segments
    \n+
    107 //
    \n+
    108 // notes: - projections are not preserved
    \n+
    109 // - we assume that projections are added in the same order they
    \n+
    110 // inserted in when the grid was created (otherwise the boundary
    \n+
    111 // indices change)
    \n+
    \n+
    112 unsigned int read ( const std::string &filename, Real &time );
    \n+
    113
    \n+
    \n+
    114 bool write ( const std::string &filename, Real time ) const;
    \n+
    115
    \n+
    \n+
    116 void release ();
    \n+
    117
    \n+
    118 template< class Functor >
    \n+
    \n+
    119 void hierarchicTraverse ( Functor &functor,
    \n+
    120 typename FillFlags::Flags fillFlags = FillFlags::standard ) const;
    \n+
    121
    \n+
    122 template< class Functor >
    \n+
    \n+
    123 void leafTraverse ( Functor &functor,
    \n+
    124 typename FillFlags::Flags fillFlags = FillFlags::standard ) const;
    \n+
    125
    \n+
    \n+
    126 bool coarsen ( typename FillFlags::Flags fillFlags = FillFlags::nothing );
    \n+
    127
    \n+
    \n+
    128 bool refine ( typename FillFlags::Flags fillFlags = FillFlags::nothing );
    \n+
    129
    \n+
    130 private:
    \n+
    131 static ALBERTA NODE_PROJECTION *
    \n+
    132 initNodeProjection ( [[maybe_unused]] Mesh *mesh, ALBERTA MACRO_EL *macroElement, int n );
    \n+
    133 template< class ProjectionProvider >
    \n+
    134 static ALBERTA NODE_PROJECTION *
    \n+
    135 initNodeProjection ( Mesh *mesh, ALBERTA MACRO_EL *macroElement, int n );
    \n+
    136
    \n+
    137 Mesh *mesh_;
    \n+
    138 };
    \n+
    139
    \n+
    140
    \n+
    141
    \n+
    142 // MeshPointer::Library
    \n+
    143 // --------------------
    \n+
    144
    \n+
    145 template< int dim >
    \n+
    146 template< int dimWorld >
    \n+
    147 struct MeshPointer< dim >::Library
    \n+
    148 {
    \n+\n+
    150
    \n+
    151 static inline unsigned int boundaryCount = 0;
    \n+
    152 static inline const void *projectionFactory = nullptr;
    \n+
    153
    \n+
    154 static void
    \n+
    155 create ( MeshPointer &ptr, const MacroData< dim > &macroData,
    \n+
    156 ALBERTA NODE_PROJECTION *(*initNodeProjection)( Mesh *, ALBERTA MACRO_EL *, int ) );
    \n+
    157 static void release ( MeshPointer &ptr );
    \n+
    158 };
    \n+
    159
    \n+
    160
    \n+
    161
    \n+
    162 // MeshPointer::MacroIterator
    \n+
    163 // --------------------------
    \n+
    164
    \n+
    165 template< int dim >
    \n+
    \n+\n+
    167 {
    \n+\n+
    169
    \n+
    170 friend class MeshPointer< dim >;
    \n+
    171
    \n+
    172 public:
    \n+\n+\n+
    175
    \n+
    \n+\n+
    177 : mesh_(),
    \n+
    178 index_( -1 )
    \n+
    179 {}
    \n+
    \n+
    180
    \n+
    181 private:
    \n+
    182
    \n+
    183 explicit MacroIterator ( const MeshPointer &mesh, bool end = false )
    \n+
    184 : mesh_( mesh ),
    \n+
    185 index_( end ? mesh.numMacroElements() : 0 )
    \n+
    186 {}
    \n+
    187
    \n+
    188 public:
    \n+
    \n+
    189 bool done () const
    \n+
    190 {
    \n+
    191 return (index_ >= mesh().numMacroElements());
    \n+
    192 }
    \n+
    \n+
    193
    \n+
    \n+
    194 bool equals ( const MacroIterator &other ) const
    \n+
    195 {
    \n+
    196 return (index_ == other.index_);
    \n+
    197 }
    \n+
    \n+
    198
    \n+
    \n+
    199 void increment ()
    \n+
    200 {
    \n+
    201 assert( !done() );
    \n+
    202 ++index_;
    \n+
    203 }
    \n+
    \n+
    204
    \n+
    \n+\n+
    206 {
    \n+
    207 assert( !done() );
    \n+
    208 return static_cast< const MacroElement & >( mesh().mesh_->macro_els[ index_ ] );
    \n+
    209 }
    \n+
    \n+
    210
    \n+
    \n+
    211 const MeshPointer &mesh () const
    \n+
    212 {
    \n+
    213 return mesh_;
    \n+
    214 }
    \n+
    \n+
    215
    \n+
    \n+
    216 This &operator++ ()
    \n+
    217 {
    \n+
    218 increment();
    \n+
    219 return *this;
    \n+
    220 }
    \n+
    \n+
    221
    \n+
    \n+
    222 ElementInfo operator* () const
    \n+
    223 {
    \n+
    224 return elementInfo();
    \n+
    225 }
    \n+
    \n+
    226
    \n+
    \n+
    227 bool operator== ( const MacroIterator &other ) const
    \n+
    228 {
    \n+
    229 return equals( other );
    \n+
    230 }
    \n+
    \n+
    231
    \n+
    \n+
    232 bool operator!= ( const MacroIterator &other ) const
    \n+
    233 {
    \n+
    234 return !equals( other );
    \n+
    235 }
    \n+
    \n+
    236
    \n+\n+
    \n+
    238 elementInfo ( typename FillFlags::Flags fillFlags = FillFlags::standard ) const
    \n+
    239 {
    \n+
    240 if( done() )
    \n+
    241 return ElementInfo();
    \n+
    242 else
    \n+
    243 return ElementInfo( mesh(), macroElement(), fillFlags );
    \n+
    244 }
    \n+
    \n+
    245
    \n+
    246 private:
    \n+
    247 MeshPointer mesh_;
    \n+
    248 int index_;
    \n+
    249 };
    \n+
    \n+
    250
    \n+
    251
    \n+
    252
    \n+
    253 // Implementation of MeshPointer
    \n+
    254 // -----------------------------
    \n+
    255
    \n+
    256 template< int dim >
    \n+
    \n+\n+
    258 {
    \n+
    259 return (mesh_ ? mesh_->n_macro_el : 0);
    \n+
    260 }
    \n+
    \n+
    261
    \n+
    262
    \n+
    263 template<>
    \n+
    \n+
    264 inline int MeshPointer< 1 >::size( int codim ) const
    \n+
    265 {
    \n+
    266 assert( (codim >= 0) && (codim <= 1) );
    \n+
    267 return (codim == 0 ? mesh_->n_elements : mesh_->n_vertices);
    \n+
    268 }
    \n+
    \n+
    269
    \n+
    270 template<>
    \n+
    \n+
    271 inline int MeshPointer< 2 >::size( int codim ) const
    \n+
    272 {
    \n+
    273 assert( (codim >= 0) && (codim <= 2) );
    \n+
    274 if( codim == 0 )
    \n+
    275 return mesh_->n_elements;
    \n+
    276 else if( codim == 2 )
    \n+
    277 return mesh_->n_vertices;
    \n+
    278 else
    \n+
    279 return mesh_->n_edges;
    \n+
    280 }
    \n+
    \n+
    281
    \n+
    282 template<>
    \n+
    \n+
    283 inline int MeshPointer< 3 >::size( int codim ) const
    \n+
    284 {
    \n+
    285 assert( (codim >= 0) && (codim <= 3) );
    \n+
    286 if( codim == 0 )
    \n+
    287 return mesh_->n_elements;
    \n+
    288 else if( codim == 3 )
    \n+
    289 return mesh_->n_vertices;
    \n+
    290 else if( codim == 1 )
    \n+
    291 return mesh_->n_faces;
    \n+
    292 else
    \n+
    293 return mesh_->n_edges;
    \n+
    294 }
    \n+
    \n+
    295
    \n+
    296
    \n+
    297 template< int dim >
    \n+
    298 inline unsigned int MeshPointer< dim >
    \n+
    \n+
    299 ::create ( const MacroData< dim > &macroData )
    \n+
    300 {
    \n+
    301 release();
    \n+
    302
    \n+
    303 Library< dimWorld >::boundaryCount = 0;
    \n+
    304 Library< dimWorld >::create( *this, macroData, &initNodeProjection );
    \n+
    305 return Library< dimWorld >::boundaryCount;
    \n+
    306 }
    \n+
    \n+
    307
    \n+
    308
    \n+
    309 template< int dim >
    \n+
    310 template< class Proj, class Impl >
    \n+
    311 inline unsigned int MeshPointer< dim >
    \n+
    \n+
    312 ::create ( const MacroData< dim > &macroData,
    \n+
    313 const ProjectionFactoryInterface< Proj, Impl > &projectionFactory )
    \n+
    314 {
    \n+\n+
    316
    \n+
    317 release();
    \n+
    318
    \n+
    319 Library< dimWorld >::boundaryCount = 0;
    \n+
    320 Library< dimWorld >::projectionFactory = &projectionFactory;
    \n+
    321 Library< dimWorld >::create( *this, macroData, &initNodeProjection< ProjectionFactory > );
    \n+
    322 Library< dimWorld >::projectionFactory = nullptr;
    \n+
    323 return Library< dimWorld >::boundaryCount;
    \n+
    324 }
    \n+
    \n+
    325
    \n+
    326
    \n+
    327
    \n+
    328
    \n+
    329 template< int dim >
    \n+
    330 inline unsigned int MeshPointer< dim >
    \n+
    \n+
    331 ::create ( const std::string &filename, bool binary )
    \n+
    332 {
    \n+
    333 MacroData< dim > macroData;
    \n+
    334 macroData.read( filename, binary );
    \n+
    335 const unsigned int boundaryCount = create( macroData );
    \n+
    336 macroData.release();
    \n+
    337 return boundaryCount;
    \n+
    338 }
    \n+
    \n+
    339
    \n+
    340
    \n+
    341 template< int dim >
    \n+
    \n+
    342 inline unsigned int MeshPointer< dim >::read ( const std::string &filename, Real &time )
    \n+
    343 {
    \n+
    344 release();
    \n+
    345
    \n+
    346 Library< dimWorld >::boundaryCount = 0;
    \n+
    347 mesh_ = ALBERTA read_mesh_xdr( filename.c_str(), &time, NULL, NULL );
    \n+
    348 return Library< dimWorld >::boundaryCount;
    \n+
    349 }
    \n+
    \n+
    350
    \n+
    351
    \n+
    352 template< int dim >
    \n+
    \n+
    353 inline bool MeshPointer< dim >::write ( const std::string &filename, Real time ) const
    \n+
    354 {
    \n+
    355 int success = ALBERTA write_mesh_xdr( mesh_, filename.c_str(), time );
    \n+
    356 return (success == 0);
    \n+
    357 }
    \n+
    \n+
    358
    \n+
    359
    \n+
    360 template< int dim >
    \n+
    \n+\n+
    362 {
    \n+
    363 Library< dimWorld >::release( *this );
    \n+
    364 }
    \n+
    \n+
    365
    \n+
    366
    \n+
    367 template< int dim >
    \n+
    368 template< class Functor >
    \n+
    369 inline void MeshPointer< dim >
    \n+
    \n+
    370 ::hierarchicTraverse ( Functor &functor,
    \n+
    371 typename FillFlags::Flags fillFlags ) const
    \n+
    372 {
    \n+
    373 const MacroIterator eit = end();
    \n+
    374 for( MacroIterator it = begin(); it != eit; ++it )
    \n+
    375 {
    \n+
    376 const ElementInfo info = it.elementInfo( fillFlags );
    \n+
    377 info.hierarchicTraverse( functor );
    \n+
    378 }
    \n+
    379 }
    \n+
    \n+
    380
    \n+
    381
    \n+
    382 template< int dim >
    \n+
    383 template< class Functor >
    \n+
    384 inline void MeshPointer< dim >
    \n+
    \n+
    385 ::leafTraverse ( Functor &functor,
    \n+
    386 typename FillFlags::Flags fillFlags ) const
    \n+
    387 {
    \n+
    388 const MacroIterator eit = end();
    \n+
    389 for( MacroIterator it = begin(); it != eit; ++it )
    \n+
    390 {
    \n+
    391 const ElementInfo info = it.elementInfo( fillFlags );
    \n+
    392 info.leafTraverse( functor );
    \n+
    393 }
    \n+
    394 }
    \n+
    \n+
    395
    \n+
    396
    \n+
    397 template< int dim >
    \n+
    \n+
    398 inline bool MeshPointer< dim >::coarsen ( typename FillFlags::Flags fillFlags )
    \n+
    399 {
    \n+
    400 const bool coarsened = (ALBERTA coarsen( mesh_, fillFlags ) == meshCoarsened);
    \n+
    401 if( coarsened )
    \n+
    402 ALBERTA dof_compress( mesh_ );
    \n+
    403 return coarsened;
    \n+
    404 }
    \n+
    \n+
    405
    \n+
    406 template< int dim >
    \n+
    \n+
    407 inline bool MeshPointer< dim >::refine ( typename FillFlags::Flags fillFlags )
    \n+
    408 {
    \n+
    409 return (ALBERTA refine( mesh_, fillFlags ) == meshRefined);
    \n+
    410 }
    \n+
    \n+
    \n+
    411
    \n+
    412
    \n+
    413 template< int dim >
    \n+
    414 inline ALBERTA NODE_PROJECTION *
    \n+
    415 MeshPointer< dim >::initNodeProjection ( Mesh *mesh, ALBERTA MACRO_EL *macroEl, int n )
    \n+
    416 {
    \n+
    417 const MacroElement &macroElement = static_cast< const MacroElement & >( *macroEl );
    \n+
    418 if( (n > 0) && macroElement.isBoundary( n-1 ) )
    \n+
    419 return new BasicNodeProjection( Library< dimWorld >::boundaryCount++ );
    \n+
    420 else
    \n+
    421 return 0;
    \n+
    422 }
    \n+
    423
    \n+
    424
    \n+
    425 template< int dim >
    \n+
    426 template< class ProjectionFactory >
    \n+
    427 inline ALBERTA NODE_PROJECTION *
    \n+
    428 MeshPointer< dim >::initNodeProjection ( Mesh *mesh, ALBERTA MACRO_EL *macroEl, int n )
    \n+
    429 {
    \n+
    430 typedef typename ProjectionFactory::Projection Projection;
    \n+
    431
    \n+
    432 const MacroElement &macroElement = static_cast< const MacroElement & >( *macroEl );
    \n+
    433
    \n+
    434 MeshPointer< dim > meshPointer( mesh );
    \n+
    435 ElementInfo elementInfo( meshPointer, macroElement, FillFlags::standard );
    \n+
    436 const ProjectionFactory &projectionFactory = *static_cast< const ProjectionFactory * >( Library< dimWorld >::projectionFactory );
    \n+
    437 if( (n > 0) && macroElement.isBoundary( n-1 ) )
    \n+
    438 {
    \n+
    439 const unsigned int boundaryIndex = Library< dimWorld >::boundaryCount++;
    \n+
    440 if( projectionFactory.hasProjection( elementInfo, n-1 ) )
    \n+
    441 {
    \n+
    442 Projection projection = projectionFactory.projection( elementInfo, n-1 );
    \n+
    443 return new NodeProjection< dim, Projection >( boundaryIndex, projection );
    \n+
    444 }
    \n+
    445 else
    \n+
    446 return new BasicNodeProjection( boundaryIndex );
    \n+
    447 }
    \n+
    448 else if( (dim < dimWorld) && (n == 0) )
    \n+
    449 {
    \n+
    450 const unsigned int boundaryIndex = std::numeric_limits< unsigned int >::max();
    \n+
    451 if( projectionFactory.hasProjection( elementInfo ) )
    \n+
    452 {
    \n+
    453 Projection projection = projectionFactory.projection( elementInfo );
    \n+
    454 return new NodeProjection< dim, Projection >( boundaryIndex, projection );
    \n+
    455 }
    \n+
    456 else
    \n+
    457 return 0;
    \n+
    458 }
    \n+
    459 else
    \n+
    460 return 0;
    \n+
    461 }
    \n+
    462
    \n+
    463 } // namespace Alberta
    \n+
    464
    \n+
    465} // namespace Dune
    \n+
    466
    \n+
    467#endif // #if HAVE_ALBERTA
    \n+
    468
    \n+
    469#endif // #ifndef DUNE_ALBERTA_MESHPOINTER_HH
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's macro_data structure
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    static K determinant(const FieldMatrix< K, 0, m > &matrix)
    Definition algebra.hh:30
    \n-
    static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
    Definition algebra.hh:81
    \n-
    static FieldVector< K, 3 > vectorProduct(const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v)
    Definition algebra.hh:19
    \n+
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    static const int meshRefined
    Definition misc.hh:56
    \n+
    static const int dimWorld
    Definition misc.hh:46
    \n+
    static const int meshCoarsened
    Definition misc.hh:57
    \n+
    Definition meshpointer.hh:40
    \n+
    int numMacroElements() const
    Definition meshpointer.hh:257
    \n+
    unsigned int create(const MacroData< dim > &macroData, const ProjectionFactoryInterface< Proj, Impl > &projectionFactory)
    Definition meshpointer.hh:312
    \n+
    void release()
    Definition meshpointer.hh:361
    \n+
    unsigned int read(const std::string &filename, Real &time)
    Definition meshpointer.hh:342
    \n+
    MacroIterator end() const
    Definition meshpointer.hh:76
    \n+
    bool coarsen(typename FillFlags::Flags fillFlags=FillFlags::nothing)
    Definition meshpointer.hh:398
    \n+
    int size(int codim) const
    \n+
    unsigned int create(const std::string &filename, bool binary=false)
    Definition meshpointer.hh:331
    \n+
    void leafTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:385
    \n+
    unsigned int create(const MacroData< dim > &macroData)
    Definition meshpointer.hh:299
    \n+
    MacroIterator begin() const
    Definition meshpointer.hh:71
    \n+
    MeshPointer(Mesh *mesh)
    Definition meshpointer.hh:57
    \n+
    bool write(const std::string &filename, Real time) const
    Definition meshpointer.hh:353
    \n+
    bool refine(typename FillFlags::Flags fillFlags=FillFlags::nothing)
    Definition meshpointer.hh:407
    \n+
    MeshPointer()
    Definition meshpointer.hh:53
    \n+
    void hierarchicTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:370
    \n+
    Definition elementinfo.hh:43
    \n+
    void hierarchicTraverse(Functor &functor) const
    Definition elementinfo.hh:695
    \n+
    void leafTraverse(Functor &functor) const
    Definition elementinfo.hh:708
    \n+
    Definition macrodata.hh:30
    \n+
    void release()
    release the macro data structure
    Definition macrodata.hh:127
    \n+
    void read(const std::string &filename, bool binary=false)
    Definition macrodata.hh:413
    \n+
    Definition macroelement.hh:24
    \n+
    bool isBoundary(const int face) const
    Definition macroelement.hh:42
    \n+
    Definition meshpointer.hh:167
    \n+
    const MeshPointer & mesh() const
    Definition meshpointer.hh:211
    \n+
    const MacroElement & macroElement() const
    Definition meshpointer.hh:205
    \n+
    Alberta::ElementInfo< dim > ElementInfo
    Definition meshpointer.hh:174
    \n+
    Alberta::MeshPointer< dim > MeshPointer
    Definition meshpointer.hh:173
    \n+
    ElementInfo elementInfo(typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:238
    \n+
    bool done() const
    Definition meshpointer.hh:189
    \n+
    void increment()
    Definition meshpointer.hh:199
    \n+
    bool equals(const MacroIterator &other) const
    Definition meshpointer.hh:194
    \n+
    MacroIterator()
    Definition meshpointer.hh:176
    \n+
    Definition misc.hh:231
    \n+
    static const Flags nothing
    Definition misc.hh:234
    \n+
    ALBERTA FLAGS Flags
    Definition misc.hh:232
    \n+
    static const Flags standard
    Definition misc.hh:258
    \n+
    Definition albertagrid/projection.hh:135
    \n+
    Base::Projection Projection
    Definition albertagrid/projection.hh:140
    \n+
    Definition albertagrid/projection.hh:80
    \n+
    Definition albertagrid/projection.hh:208
    \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,643 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-algebra.hh\n+meshpointer.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_ALGEBRA_HH\n-6#define DUNE_ALBERTA_ALGEBRA_HH\n+5#ifndef DUNE_ALBERTA_MESHPOINTER_HH\n+6#define DUNE_ALBERTA_MESHPOINTER_HH\n 7\n-8#include \n-9#include \n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-13\n-14 namespace Alberta\n-15 {\n-16\n-17 template< class K >\n-18 inline static FieldVector< K, 3 >\n-_\b1_\b9 _\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt ( const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v )\n-20 {\n-21 FieldVector< K, 3 > w;\n-22 w[ 0 ] = u[ 1 ] * v[ 2 ] - u[ 2 ] * v[ 1 ];\n-23 w[ 1 ] = u[ 2 ] * v[ 0 ] - u[ 0 ] * v[ 2 ];\n-24 w[ 2 ] = u[ 0 ] * v[ 1 ] - u[ 1 ] * v[ 0 ];\n-25 return w;\n-26 }\n-27\n+13#include \n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+20\n+21#if HAVE_ALBERTA\n+22\n+23namespace _\bD_\bu_\bn_\be\n+24{\n+25\n+26 namespace Alberta\n+27 {\n 28\n-29 template< class K, int m >\n-_\b3_\b0 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( [[maybe_unused]] const FieldMatrix< K, 0, m >\n-&matrix )\n-31 {\n-32 return K( 1 );\n-33 }\n+29 // External Forward Declarations\n+30 // -----------------------------\n+31\n+32 template< int dim >\n+33 class HierarchyDofNumbering;\n 34\n-35 template< class K >\n-_\b3_\b6 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 1, 1 > &matrix )\n-37 {\n-38 return matrix[ 0 ][ 0 ];\n-39 }\n-40\n-41 template< class K, int m >\n-_\b4_\b2 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 1, m > &matrix )\n-43 {\n-44 using std::sqrt;\n-45 K sum = matrix[ 0 ][ 0 ] * matrix[ 0 ][ 0 ];\n-46 for( int i = 1; i < m; ++i )\n-47 sum += matrix[ 0 ][ i ] * matrix[ 0 ][ i ];\n-48 return sqrt( sum );\n-49 }\n-50\n-51 template< class K >\n-_\b5_\b2 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 2, 2 > &matrix )\n-53 {\n-54 return matrix[ 0 ][ 0 ] * matrix[ 1 ][ 1 ] - matrix[ 0 ][ 1 ] * matrix[ 1 ]\n-[ 0 ];\n-55 }\n+35 // MeshPointer\n+36 // -----------\n+37\n+38 template< int dim >\n+_\b3_\b9 class _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+40 {\n+41 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+42 typedef typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+43 typedef typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs;\n+44\n+45 class BoundaryProvider;\n+46\n+47 template< int dimWorld >\n+48 struct Library;\n+49\n+50 public:\n+51 class _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+52\n+_\b5_\b3 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br ()\n+54 : mesh_( 0 )\n+55 {}\n 56\n-57 template< class K >\n-_\b5_\b8 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 2, 3 > &matrix )\n-59 {\n-60 return _\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt( matrix[ 0 ], matrix[ 1 ] ).two_norm();\n-61 }\n-62\n-63 template< class K, int m >\n-_\b6_\b4 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 2, m > &matrix )\n-65 {\n-66 using std::sqrt;\n-67 const K tmpA = matrix[ 0 ].two_norm2();\n-68 const K tmpB = matrix[ 1 ].two_norm2();\n-69 const K tmpC = matrix[ 0 ] * matrix[ 1 ];\n-70 return sqrt( tmpA * tmpB - tmpC * tmpC );\n-71 }\n-72\n-73 template< class K >\n-_\b7_\b4 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 3, 3 > &matrix )\n-75 {\n-76 return matrix[ 0 ] * _\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt( matrix[ 1 ], matrix[ 2 ] );\n-77 }\n-78\n-79\n-80 template< class K, int m >\n-_\b8_\b1 inline static K _\bi_\bn_\bv_\be_\br_\bt ( [[maybe_unused]] const FieldMatrix< K, 0, m >\n-&matrix,\n-82 [[maybe_unused]] FieldMatrix< K, m, 0 > &inverse )\n-83 {\n-84 return K( 1 );\n-85 }\n-86\n-87 template< class K >\n-_\b8_\b8 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 1, 1 > &matrix,\n-89 FieldMatrix< K, 1, 1 > &inverse )\n-90 {\n-91 inverse[ 0 ][ 0 ] = K( 1 ) / matrix[ 0 ][ 0 ];\n-92 return matrix[ 0 ][ 0 ];\n-93 }\n-94\n-95 template< class K, int m >\n-_\b9_\b6 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 1, m > &matrix,\n-97 FieldMatrix< K, m, 1 > &inverse )\n-98 {\n-99 using std::sqrt;\n-100 K detSqr = matrix[ 0 ].two_norm2();\n-101 K invDetSqr = K( 1 ) / detSqr;\n-102 for( int i = 0; i < m; ++i )\n-103 inverse[ i ][ 0 ] = invDetSqr * matrix[ 0 ][ i ];\n-104 return sqrt( detSqr );\n-105 }\n-106\n-107 template< class K >\n-_\b1_\b0_\b8 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 2, 2 > &matrix,\n-109 FieldMatrix< K, 2, 2 > &inverse )\n-110 {\n-111 K det = _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt( matrix );\n-112 K invDet = K( 1 ) / det;\n-113 inverse[ 0 ][ 0 ] = invDet * matrix[ 1 ][ 1 ];\n-114 inverse[ 0 ][ 1 ] = - invDet * matrix[ 0 ][ 1 ];\n-115 inverse[ 1 ][ 0 ] = - invDet * matrix[ 1 ][ 0 ];\n-116 inverse[ 1 ][ 1 ] = invDet * matrix[ 0 ][ 0 ];\n-117 return det;\n-118 }\n-119\n-120 template< class K, int m >\n-_\b1_\b2_\b1 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 2, m > &matrix,\n-122 FieldMatrix< K, m, 2 > &inverse )\n-123 {\n-124 using std::sqrt;\n-125 const K tmpA = matrix[ 0 ].two_norm2();\n-126 const K tmpB = matrix[ 1 ].two_norm2();\n-127 const K tmpC = matrix[ 0 ] * matrix[ 1 ];\n-128 const K detSqr = tmpA * tmpB - tmpC * tmpC;\n-129 const K invDetSqr = K( 1 ) / detSqr;\n-130 for( int i = 0; i < m; ++i )\n-131 {\n-132 inverse[ i ][ 0 ] = invDetSqr * (tmpB * matrix[ 0 ][ i ] - tmpC * matrix[ 1\n-][ i ]);\n-133 inverse[ i ][ 1 ] = invDetSqr * (tmpA * matrix[ 1 ][ i ] - tmpC * matrix[ 0\n-][ i ]);\n-134 }\n-135 return sqrt( detSqr );\n-136 }\n-137\n-138 template< class K >\n-_\b1_\b3_\b9 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 3, 3 > &matrix,\n-140 FieldMatrix< K, 3, 3 > &inverse )\n-141 {\n-142 return FMatrixHelp::invertMatrix( matrix, inverse );\n-143 }\n-144 }\n-145\n-146}\n-147\n-148#endif // #ifndef DUNE_ALBERTA_ALGEBRA_HH\n+_\b5_\b7 explicit _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br ( _\bM_\be_\bs_\bh *mesh )\n+58 : mesh_( mesh )\n+59 {}\n+60\n+_\b6_\b1 operator _\bM_\be_\bs_\bh * () const\n+62 {\n+63 return mesh_;\n+64 }\n+65\n+_\b6_\b6 explicit operator bool () const\n+67 {\n+68 return (bool)mesh_;\n+69 }\n+70\n+_\b7_\b1 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const\n+72 {\n+73 return _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, false );\n+74 }\n+75\n+_\b7_\b6 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const\n+77 {\n+78 return _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, true );\n+79 }\n+80\n+_\b8_\b1 int _\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs () const;\n+_\b8_\b2 int _\bs_\bi_\bz_\be ( int codim ) const;\n+83\n+84 // create a mesh from a macrodata structure\n+85 // params: macroData - macro data structure\n+86 // returns: number of boundary segments\n+_\b8_\b7 unsigned int _\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData );\n+88\n+89 // create a mesh from a macrodata structure, adding projections\n+90 // params: macroData - macro data structure\n+91 // projectionFactory - factory for the projections\n+92 // returns: number of boundary segments\n+93 template< class Proj, class Impl >\n+_\b9_\b4 unsigned int _\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData,\n+95 const _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> &projectionFactory );\n+96\n+97 // create a mesh from a file\n+98 // params: filename - file name of an Alberta macro triangulation\n+99 // binary - read binary?\n+100 // returns: number of boundary segments\n+_\b1_\b0_\b1 unsigned int _\bc_\br_\be_\ba_\bt_\be ( const std::string &filename, bool binary = false );\n+102\n+103 // read back a mesh from a file\n+104 // params: filename - file name of an Alberta save file\n+105 // time - variable to receive the time stored in the file\n+106 // returns: number of boundary segments\n+107 //\n+108 // notes: - projections are not preserved\n+109 // - we assume that projections are added in the same order they\n+110 // inserted in when the grid was created (otherwise the boundary\n+111 // indices change)\n+_\b1_\b1_\b2 unsigned int _\br_\be_\ba_\bd ( const std::string &filename, _\bR_\be_\ba_\bl &time );\n+113\n+_\b1_\b1_\b4 bool _\bw_\br_\bi_\bt_\be ( const std::string &filename, _\bR_\be_\ba_\bl time ) const;\n+115\n+_\b1_\b1_\b6 void _\br_\be_\bl_\be_\ba_\bs_\be ();\n+117\n+118 template< class Functor >\n+_\b1_\b1_\b9 void _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n+120 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd ) const;\n+121\n+122 template< class Functor >\n+_\b1_\b2_\b3 void _\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n+124 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd ) const;\n+125\n+_\b1_\b2_\b6 bool _\bc_\bo_\ba_\br_\bs_\be_\bn ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n+127\n+_\b1_\b2_\b8 bool _\br_\be_\bf_\bi_\bn_\be ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n+129\n+130 private:\n+131 static _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n+132 initNodeProjection ( [[maybe_unused]] _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n+*macroElement, int n );\n+133 template< class ProjectionProvider >\n+134 static _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n+135 initNodeProjection ( _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *macroElement, int n );\n+136\n+137 _\bM_\be_\bs_\bh *mesh_;\n+138 };\n+139\n+140\n+141\n+142 // MeshPointer::Library\n+143 // --------------------\n+144\n+145 template< int dim >\n+146 template< int dimWorld >\n+147 struct _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br< dim >::Library\n+148 {\n+149 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+150\n+151 static inline unsigned int boundaryCount = 0;\n+152 static inline const void *projectionFactory = nullptr;\n+153\n+154 static void\n+155 _\bc_\br_\be_\ba_\bt_\be ( _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &ptr, const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData,\n+156 _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *(*initNodeProjection)( _\bM_\be_\bs_\bh *, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *,\n+int ) );\n+157 static void _\br_\be_\bl_\be_\ba_\bs_\be ( _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &ptr );\n+158 };\n+159\n+160\n+161\n+162 // MeshPointer::MacroIterator\n+163 // --------------------------\n+164\n+165 template< int dim >\n+_\b1_\b6_\b6 class _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br< dim >::_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+167 {\n+_\b1_\b6_\b8 typedef _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bT_\bh_\bi_\bs;\n+169\n+170 friend class _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br< dim >;\n+171\n+172 public:\n+_\b1_\b7_\b3 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+_\b1_\b7_\b4 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+175\n+_\b1_\b7_\b6 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+177 : mesh_(),\n+178 index_( -1 )\n+179 {}\n+180\n+181 private:\n+182\n+183 explicit _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh, bool _\be_\bn_\bd = false )\n+184 : mesh_( mesh ),\n+185 index_( _\be_\bn_\bd ? mesh._\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() : 0 )\n+186 {}\n+187\n+188 public:\n+_\b1_\b8_\b9 bool _\bd_\bo_\bn_\be () const\n+190 {\n+191 return (index_ >= mesh()._\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs());\n+192 }\n+193\n+_\b1_\b9_\b4 bool _\be_\bq_\bu_\ba_\bl_\bs ( const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &other ) const\n+195 {\n+196 return (index_ == other.index_);\n+197 }\n+198\n+_\b1_\b9_\b9 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+200 {\n+201 assert( !done() );\n+202 ++index_;\n+203 }\n+204\n+_\b2_\b0_\b5 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt () const\n+206 {\n+207 assert( !done() );\n+208 return static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt & >( mesh().mesh_->macro_els[ index_\n+] );\n+209 }\n+210\n+_\b2_\b1_\b1 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh () const\n+212 {\n+213 return mesh_;\n+214 }\n+215\n+_\b2_\b1_\b6 _\bT_\bh_\bi_\bs &operator++ ()\n+217 {\n+218 increment();\n+219 return *this;\n+220 }\n+221\n+_\b2_\b2_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo operator* () const\n+223 {\n+224 return elementInfo();\n+225 }\n+226\n+_\b2_\b2_\b7 bool operator== ( const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &other ) const\n+228 {\n+229 return equals( other );\n+230 }\n+231\n+_\b2_\b3_\b2 bool operator!= ( const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &other ) const\n+233 {\n+234 return !equals( other );\n+235 }\n+236\n+237 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+_\b2_\b3_\b8 _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd )\n+const\n+239 {\n+240 if( done() )\n+241 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n+242 else\n+243 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo( mesh(), macroElement(), fillFlags );\n+244 }\n+245\n+246 private:\n+247 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br mesh_;\n+248 int index_;\n+249 };\n+250\n+251\n+252\n+253 // Implementation of MeshPointer\n+254 // -----------------------------\n+255\n+256 template< int dim >\n+_\b2_\b5_\b7 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs () const\n+258 {\n+259 return (mesh_ ? mesh_->n_macro_el : 0);\n+260 }\n+261\n+262\n+263 template<>\n+_\b2_\b6_\b4 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be( int codim ) const\n+265 {\n+266 assert( (codim >= 0) && (codim <= 1) );\n+267 return (codim == 0 ? mesh_->n_elements : mesh_->n_vertices);\n+268 }\n+269\n+270 template<>\n+_\b2_\b7_\b1 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be( int codim ) const\n+272 {\n+273 assert( (codim >= 0) && (codim <= 2) );\n+274 if( codim == 0 )\n+275 return mesh_->n_elements;\n+276 else if( codim == 2 )\n+277 return mesh_->n_vertices;\n+278 else\n+279 return mesh_->n_edges;\n+280 }\n+281\n+282 template<>\n+_\b2_\b8_\b3 inline int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be( int codim ) const\n+284 {\n+285 assert( (codim >= 0) && (codim <= 3) );\n+286 if( codim == 0 )\n+287 return mesh_->n_elements;\n+288 else if( codim == 3 )\n+289 return mesh_->n_vertices;\n+290 else if( codim == 1 )\n+291 return mesh_->n_faces;\n+292 else\n+293 return mesh_->n_edges;\n+294 }\n+295\n+296\n+297 template< int dim >\n+298 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b2_\b9_\b9_\b _\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData )\n+300 {\n+301 release();\n+302\n+303 Library< dimWorld >::boundaryCount = 0;\n+304 Library< dimWorld >::create( *this, macroData, &initNodeProjection );\n+305 return Library< dimWorld >::boundaryCount;\n+306 }\n+307\n+308\n+309 template< int dim >\n+310 template< class Proj, class Impl >\n+311 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b1_\b2_\b _\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> ¯oData,\n+313 const _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> &projectionFactory )\n+314 {\n+315 typedef _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+316\n+317 release();\n+318\n+319 Library< dimWorld >::boundaryCount = 0;\n+320 Library< dimWorld >::projectionFactory = &projectionFactory;\n+321 Library< dimWorld >::create( *this, macroData, &initNodeProjection<\n+ProjectionFactory > );\n+322 Library< dimWorld >::projectionFactory = nullptr;\n+323 return Library< dimWorld >::boundaryCount;\n+324 }\n+325\n+326\n+327\n+328\n+329 template< int dim >\n+330 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b3_\b1_\b _\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const std::string &filename, bool binary )\n+332 {\n+333 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> macroData;\n+334 macroData._\br_\be_\ba_\bd( filename, binary );\n+335 const unsigned int boundaryCount = create( macroData );\n+336 macroData._\br_\be_\bl_\be_\ba_\bs_\be();\n+337 return boundaryCount;\n+338 }\n+339\n+340\n+341 template< int dim >\n+_\b3_\b4_\b2 inline unsigned int _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\ba_\bd ( const std::string &filename,\n+_\bR_\be_\ba_\bl &time )\n+343 {\n+344 release();\n+345\n+346 Library< dimWorld >::boundaryCount = 0;\n+347 mesh_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_mesh_xdr( filename.c_str(), &time, NULL, NULL );\n+348 return Library< dimWorld >::boundaryCount;\n+349 }\n+350\n+351\n+352 template< int dim >\n+_\b3_\b5_\b3 inline bool _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be ( const std::string &filename, _\bR_\be_\ba_\bl\n+time ) const\n+354 {\n+355 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_mesh_xdr( mesh_, filename.c_str(), time );\n+356 return (success == 0);\n+357 }\n+358\n+359\n+360 template< int dim >\n+_\b3_\b6_\b1 inline void _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be ()\n+362 {\n+363 Library< dimWorld >::release( *this );\n+364 }\n+365\n+366\n+367 template< int dim >\n+368 template< class Functor >\n+369 inline void _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b7_\b0_\b _\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n+371 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags ) const\n+372 {\n+373 const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br eit = end();\n+374 for( _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it = begin(); it != eit; ++it )\n+375 {\n+376 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo info = it.elementInfo( fillFlags );\n+377 info._\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be( functor );\n+378 }\n+379 }\n+380\n+381\n+382 template< int dim >\n+383 template< class Functor >\n+384 inline void _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b8_\b5_\b _\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor,\n+386 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags ) const\n+387 {\n+388 const _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br eit = end();\n+389 for( _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it = begin(); it != eit; ++it )\n+390 {\n+391 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo info = it.elementInfo( fillFlags );\n+392 info._\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be( functor );\n+393 }\n+394 }\n+395\n+396\n+397 template< int dim >\n+_\b3_\b9_\b8 inline bool _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\ba_\br_\bs_\be_\bn ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n+fillFlags )\n+399 {\n+400 const bool coarsened = (_\bA_\bL_\bB_\bE_\bR_\bT_\bA coarsen( mesh_, fillFlags ) ==\n+_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd);\n+401 if( coarsened )\n+402 _\bA_\bL_\bB_\bE_\bR_\bT_\bA dof_compress( mesh_ );\n+403 return coarsened;\n+404 }\n+405\n+406 template< int dim >\n+_\b4_\b0_\b7 inline bool _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be ( typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n+fillFlags )\n+408 {\n+409 return (_\bA_\bL_\bB_\bE_\bR_\bT_\bA refine( mesh_, fillFlags ) == _\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd);\n+410 }\n+411\n+412\n+413 template< int dim >\n+414 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n+415 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bn_\bi_\bt_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn ( _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n+*macroEl, int n )\n+416 {\n+417 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt ¯oElement = static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt & >\n+( *macroEl );\n+418 if( (n > 0) && macroElement._\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by( n-1 ) )\n+419 return new _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn( Library< dimWorld >::boundaryCount++ );\n+420 else\n+421 return 0;\n+422 }\n+423\n+424\n+425 template< int dim >\n+426 template< class ProjectionFactory >\n+427 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA NODE_PROJECTION *\n+428 MeshPointer< dim >::initNodeProjection ( _\bM_\be_\bs_\bh *mesh, _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n+*macroEl, int n )\n+429 {\n+430 typedef typename _\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn Projection;\n+431\n+432 const MacroElement ¯oElement = static_cast< const MacroElement & >\n+( *macroEl );\n+433\n+434 MeshPointer< dim > meshPointer( mesh );\n+435 ElementInfo elementInfo( meshPointer, macroElement, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd );\n+436 const ProjectionFactory &projectionFactory = *static_cast< const\n+ProjectionFactory * >( Library< dimWorld >::projectionFactory );\n+437 if( (n > 0) && macroElement.isBoundary( n-1 ) )\n+438 {\n+439 const unsigned int boundaryIndex = Library< dimWorld >::boundaryCount++;\n+440 if( projectionFactory.hasProjection( elementInfo, n-1 ) )\n+441 {\n+442 Projection projection = projectionFactory.projection( elementInfo, n-1 );\n+443 return new NodeProjection< dim, Projection >( boundaryIndex, projection );\n+444 }\n+445 else\n+446 return new BasicNodeProjection( boundaryIndex );\n+447 }\n+448 else if( (dim < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd) && (n == 0) )\n+449 {\n+450 const unsigned int boundaryIndex = std::numeric_limits< unsigned int >::max\n+();\n+451 if( projectionFactory.hasProjection( elementInfo ) )\n+452 {\n+453 Projection projection = projectionFactory.projection( elementInfo );\n+454 return new NodeProjection< dim, Projection >( boundaryIndex, projection );\n+455 }\n+456 else\n+457 return 0;\n+458 }\n+459 else\n+460 return 0;\n+461 }\n+462\n+463 } // namespace Alberta\n+464\n+465} // namespace Dune\n+466\n+467#endif // #if HAVE_ALBERTA\n+468\n+469#endif // #ifndef DUNE_ALBERTA_MESHPOINTER_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+#define ALBERTA\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh\n+provides a wrapper for ALBERTA's macro_data structure\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-static K determinant(const FieldMatrix< K, 0, m > &matrix)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n-static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 >\n-&inverse)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt\n-static FieldVector< K, 3 > vectorProduct(const FieldVector< K, 3 > &u, const\n-FieldVector< K, 3 > &v)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n+ALBERTA MESH Mesh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd\n+static const int meshRefined\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd\n+static const int meshCoarsened\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bn_\bu_\bm_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int numMacroElements() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:257\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+unsigned int create(const MacroData< dim > ¯oData, const\n+ProjectionFactoryInterface< Proj, Impl > &projectionFactory)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:361\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+unsigned int read(const std::string &filename, Real &time)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:342\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\be_\bn_\bd\n+MacroIterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\bo_\ba_\br_\bs_\be_\bn\n+bool coarsen(typename FillFlags::Flags fillFlags=FillFlags::nothing)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:398\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int codim) const\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+unsigned int create(const std::string &filename, bool binary=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:331\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void leafTraverse(Functor &functor, typename FillFlags::Flags\n+fillFlags=FillFlags::standard) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:385\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+unsigned int create(const MacroData< dim > ¯oData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:299\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+MacroIterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+MeshPointer(Mesh *mesh)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+bool write(const std::string &filename, Real time) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:353\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bf_\bi_\bn_\be\n+bool refine(typename FillFlags::Flags fillFlags=FillFlags::nothing)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:407\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+MeshPointer()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void hierarchicTraverse(Functor &functor, typename FillFlags::Flags\n+fillFlags=FillFlags::standard) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void hierarchicTraverse(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:695\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void leafTraverse(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:708\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+release the macro data structure\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\ba_\bd\n+void read(const std::string &filename, bool binary=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:413\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool isBoundary(const int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh\n+const MeshPointer & mesh() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+const MacroElement & macroElement() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dim > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+Alberta::MeshPointer< dim > MeshPointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:173\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo elementInfo(typename FillFlags::Flags fillFlags=FillFlags::\n+standard) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\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 meshpointer.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const MacroIterator &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+MacroIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n+static const Flags nothing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n+ALBERTA FLAGS Flags\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd\n+static const Flags standard\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:258\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+Base::Projection Projection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:208\n+_\bp_\br_\bo_\bj_\be_\bc_\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-grid-doc/doxygen/a00659.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00659.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macrodata.cc File Reference\n+dune-grid: dofvector.hh File Reference\n \n \n \n \n \n \n \n@@ -70,38 +70,60 @@\n \n
    \n
    \n \n-
    macrodata.cc File Reference
    \n+Classes |\n+Namespaces |\n+Functions
    \n+
    dofvector.hh File Reference
    \n \n
    \n-\n-

    provides a wrapper for ALBERTA's macro_data structure \n-More...

    \n-
    #include <config.h>
    \n-#include <vector>
    \n-#include <array>
    \n-#include <dune/grid/common/exceptions.hh>
    \n-#include <dune/grid/albertagrid/macrodata.hh>
    \n-
    \n+
    #include <cstdlib>
    \n+#include <limits>
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/elementinfo.hh>
    \n+#include <dune/grid/albertagrid/refinement.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::Alberta::DofVectorProvider< int >
     
    struct  Dune::Alberta::DofVectorProvider< signed char >
     
    struct  Dune::Alberta::DofVectorProvider< unsigned char >
     
    struct  Dune::Alberta::DofVectorProvider< Real >
     
    struct  Dune::Alberta::DofVectorProvider< GlobalVector >
     
    class  Dune::Alberta::DofVectorPointer< Dof >
     
    \n \n \n \n \n \n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    void Dune::Alberta::abs (const DofVectorPointer< int > &dofVector)
     
    int Dune::Alberta::max (const DofVectorPointer< int > &dofVector)
     
    int Dune::Alberta::min (const DofVectorPointer< int > &dofVector)
     
    \n-

    Detailed Description

    \n-

    provides a wrapper for ALBERTA's macro_data structure

    \n-
    Author
    Martin Nolte
    \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,43 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-macrodata.cc File Reference\n-provides a wrapper for ALBERTA's macro_data structure _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\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+dofvector.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bD_\bo_\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 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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-provides a wrapper for ALBERTA's macro_data structure\n- Author\n- Martin Nolte\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bb_\bs (const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br< int > &dofVector)\n+\u00a0\n+ int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\ba_\bx (const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br< int > &dofVector)\n+\u00a0\n+ int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\bi_\bn (const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br< int > &dofVector)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00662.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00662.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macroelement.hh File Reference\n+dune-grid: entity.cc File Reference\n \n \n \n \n \n \n \n@@ -70,36 +70,48 @@\n \n \n
    \n \n-
    macroelement.hh File Reference
    \n+Namespaces |\n+Macros
    \n+
    entity.cc File Reference
    \n \n
    \n-\n+\n

    Go to the source code of this file.

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

    \n-Classes

    struct  Dune::Alberta::MacroElement< dim >
     
    \n \n \n \n \n-\n-\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n+\n+\n+\n

    \n+Macros

    #define DUNE_ALBERTA_ENTITY_CC
     
    \n+

    Macro Definition Documentation

    \n+\n+

    ◆ DUNE_ALBERTA_ENTITY_CC

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define DUNE_ALBERTA_ENTITY_CC
    \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,22 +1,22 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-macroelement.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n+entity.cc 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-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n+M\bMa\bac\bcr\bro\bos\bs\n+#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bE_\bN_\bT_\bI_\bT_\bY_\b__\bC_\bC\n \u00a0\n+*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_E\bEN\bNT\bTI\bIT\bTY\bY_\b_C\bCC\bC *\b**\b**\b**\b**\b*\n+#define DUNE_ALBERTA_ENTITY_CC\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00662_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00662_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macroelement.hh Source File\n+dune-grid: entity.cc Source File\n \n \n \n \n \n \n \n@@ -74,105 +74,493 @@\n \n \n \n
    \n-
    macroelement.hh
    \n+
    entity.cc
    \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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_MACROELEMENT_HH
    \n-
    6#define DUNE_ALBERTA_MACROELEMENT_HH
    \n+
    5#ifndef DUNE_ALBERTA_ENTITY_CC
    \n+
    6#define DUNE_ALBERTA_ENTITY_CC
    \n
    7
    \n-\n-
    9
    \n-
    10#if HAVE_ALBERTA
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    15 namespace Alberta
    \n-
    16 {
    \n-
    17
    \n-
    18 // MacroElement
    \n-
    19 // ------------
    \n-
    20
    \n-
    21 template< int dim >
    \n-
    \n-\n-
    23 : public ALBERTA MACRO_EL
    \n-
    24 {
    \n-
    25 const GlobalVector &coordinate ( const int vertex ) const;
    \n-
    26
    \n-
    27 int boundaryId ( const int face ) const;
    \n-
    28 bool isBoundary ( const int face ) const;
    \n-
    29 const MacroElement< dim > *neighbor ( const int face ) const;
    \n-
    30 };
    \n-
    \n-
    31
    \n-
    32
    \n-
    33 template< int dim >
    \n-
    \n-
    34 inline const GlobalVector &MacroElement< dim >::coordinate ( const int vertex ) const
    \n-
    35 {
    \n-
    36 assert( (vertex >= 0) && (vertex < N_VERTICES_MAX) );
    \n-
    37 return *coord[ vertex ];
    \n-
    38 }
    \n-
    \n-
    39
    \n-
    40
    \n-
    41 template< int dim >
    \n-
    \n-
    42 inline bool MacroElement< dim >::isBoundary ( const int face ) const
    \n-
    43 {
    \n-
    44 return (boundaryId( face ) != InteriorBoundary);
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    47
    \n-
    48 template< int dim >
    \n-
    \n-
    49 inline int MacroElement< dim >::boundaryId ( const int face ) const
    \n-
    50 {
    \n-
    51 return wall_bound[ face ];
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    54
    \n-
    55 template< int dim >
    \n-
    \n-
    56 const MacroElement< dim > *MacroElement< dim >::neighbor ( const int face ) const
    \n-
    57 {
    \n-
    58 assert( (face >= 0) && (face < N_NEIGH_MAX) );
    \n-
    59 return static_cast< const MacroElement * >( neigh[ face ] );
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    62 }
    \n-
    63
    \n-
    64}
    \n-
    65
    \n-
    66#endif // #if HAVE_ALBERTA
    \n+
    8namespace Dune
    \n+
    9{
    \n+
    10
    \n+
    11 // AlbertaGridEntity (for codim > 0)
    \n+
    12 // ---------------------------------
    \n+
    13
    \n+
    14 template<int codim, int dim, class Grid>
    \n+
    15 inline AlbertaGridEntity< codim, dim, Grid >
    \n+
    \n+
    16 ::AlbertaGridEntity ( const Grid &grid, const ElementInfo &elementInfo, int subEntity )
    \n+
    17 : grid_( &grid ),
    \n+
    18 elementInfo_( elementInfo ),
    \n+
    19 subEntity_( subEntity )
    \n+
    20 {}
    \n+
    \n+
    21
    \n+
    22 template<int codim, int dim, class Grid>
    \n+\n+
    \n+\n+
    25 : grid_( &grid ),
    \n+
    26 elementInfo_(),
    \n+
    27 subEntity_( -1 )
    \n+
    28 {}
    \n+
    \n+
    29
    \n+
    30 template<int codim, int dim, class Grid>
    \n+\n+
    \n+\n+
    33 : grid_( NULL ),
    \n+
    34 elementInfo_(),
    \n+
    35 subEntity_( -1 )
    \n+
    36 {}
    \n+
    \n+
    37
    \n+
    38 template< int codim, int dim, class Grid >
    \n+
    39 inline PartitionType
    \n+
    \n+\n+
    41 {
    \n+
    42 return InteriorEntity;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    45
    \n+
    46 template< int codim, int dim, class Grid >
    \n+
    47 inline bool
    \n+
    \n+\n+
    49 {
    \n+
    50 const Alberta::Element *e1 = elementInfo().el();
    \n+
    51 const Alberta::Element *e2 = other.elementInfo().el();
    \n+
    52
    \n+
    53 // if both element null then they are equal
    \n+
    54 if( (e1 == NULL) && (e2 == NULL) )
    \n+
    55 return true;
    \n+
    56 return ((e1 == e2) && (subEntity_ == other.subEntity_));
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    59
    \n+
    60 template< int codim, int dim, class Grid >
    \n+
    61 inline ALBERTA EL_INFO *
    \n+
    \n+\n+
    63 {
    \n+
    64 return &(elementInfo_.elInfo());
    \n+
    65 }
    \n+
    \n+
    66
    \n
    67
    \n-
    68#endif // #ifndef DUNE_ALBERTA_MACROELEMENT_HH
    \n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    68 template< int codim, int dim, class Grid >
    \n+
    69 inline void
    \n+
    \n+\n+
    71 {
    \n+
    72 elementInfo_ = ElementInfo();
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75
    \n+
    76 template< int codim, int dim, class Grid >
    \n+\n+
    \n+
    78 ::setElement ( const ElementInfo &elementInfo, int subEntity )
    \n+
    79 {
    \n+
    80 elementInfo_ = elementInfo;
    \n+
    81 subEntity_ = subEntity;
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    84
    \n+
    85 template< int codim, int dim, class Grid >
    \n+
    86 inline void
    \n+
    \n+\n+
    88 {
    \n+
    89 setElement( other.elementInfo_, other.subEntity_ );
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    92
    \n+
    93 template< int codim, int dim, class Grid >
    \n+
    \n+\n+
    95 {
    \n+
    96 assert( elementInfo_.level() == grid().levelProvider() ( elementInfo_ ) );
    \n+
    97 return elementInfo_.level();
    \n+
    98 }
    \n+
    \n+
    99
    \n+
    100
    \n+
    101 template< int codim, int dim, class Grid >
    \n+\n+
    \n+\n+
    104 {
    \n+\n+
    106
    \n+
    107 assert( elementInfo_ );
    \n+
    108 const CoordReader coordReader( grid(), elementInfo_, subEntity_ );
    \n+
    109 return Geometry( GeometryImpl( coordReader ) );
    \n+
    110 }
    \n+
    \n+
    111
    \n+
    112
    \n+
    113 template< int codim, int dim, class Grid >
    \n+
    \n+\n+
    115 {
    \n+
    116 return GeometryTypes::simplex( mydimension );
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    119
    \n+
    120
    \n+
    121 // AlbertaGridEntity (for codim = 0)
    \n+
    122 // ---------------------------------
    \n+
    123
    \n+
    124 template< int dim, class Grid >
    \n+\n+
    \n+
    126 ::AlbertaGridEntity ( const Grid &grid, const ElementInfo &elementInfo, int subEntity )
    \n+
    127 : grid_( &grid ),
    \n+
    128 elementInfo_( elementInfo )
    \n+
    129 {
    \n+
    130 assert( subEntity == 0 );
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    133 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    136 : grid_( &grid ),
    \n+
    137 elementInfo_()
    \n+
    138 {}
    \n+
    \n+
    139
    \n+
    140 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    143 : grid_( NULL ),
    \n+
    144 elementInfo_()
    \n+
    145 {}
    \n+
    \n+
    146
    \n+
    147
    \n+
    148 template< int dim, class Grid >
    \n+
    \n+\n+
    150 {
    \n+
    151 // elements are always inside of our Domain
    \n+
    152 return 0;
    \n+
    153 }
    \n+
    \n+
    154
    \n+
    155
    \n+
    156 template< int dim, class Grid >
    \n+
    \n+\n+
    158 {
    \n+
    159 return grid().levelProvider().isNew( elementInfo_ );
    \n+
    160 }
    \n+
    \n+
    161
    \n+
    162
    \n+
    163 template< int dim, class Grid >
    \n+
    \n+\n+
    165 {
    \n+
    166 return elementInfo_.mightVanish();
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    169
    \n+
    170 template< int dim, class Grid >
    \n+
    171 inline bool
    \n+
    \n+\n+
    173 {
    \n+
    174 assert( elementInfo_ );
    \n+
    175 bool isBoundary = false;
    \n+
    176 for( int i = 0; i < dim+1; ++i )
    \n+
    177 isBoundary |= elementInfo_.isBoundary( i );
    \n+
    178 return isBoundary;
    \n+
    179 }
    \n+
    \n+
    180
    \n+
    181
    \n+
    182 template< int dim, class Grid >
    \n+
    183 inline PartitionType
    \n+
    \n+\n+
    185 {
    \n+
    186 return InteriorEntity;
    \n+
    187 }
    \n+
    \n+
    188
    \n+
    189
    \n+
    190 template< int dim, class Grid >
    \n+
    \n+\n+
    192 {
    \n+
    193 return elementInfo_.isLeaf();
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    196
    \n+
    197 template< int dim, class Grid >
    \n+
    198 inline bool
    \n+
    \n+\n+
    200 {
    \n+
    201 // element pointers are unique
    \n+
    202 return (elementInfo().el() == other.elementInfo().el());
    \n+
    203 }
    \n+
    \n+
    204
    \n+
    205
    \n+
    206 template< int dim, class Grid >
    \n+
    207 template< int codim >
    \n+
    208 inline typename Grid::template Codim< codim >::Entity
    \n+
    \n+\n+
    210 {
    \n+
    211 typedef AlbertaGridEntity< codim, dim, Grid > EntityImpl;
    \n+
    212 return EntityImpl( grid(), elementInfo_, grid().generic2alberta( codim, i ) );
    \n+
    213 }
    \n+
    \n+
    214
    \n+
    215
    \n+
    216 template< int dim, class Grid >
    \n+
    217 inline ALBERTA EL_INFO *
    \n+
    \n+\n+
    219 {
    \n+
    220 return &(elementInfo_.elInfo());
    \n+
    221 }
    \n+
    \n+
    222
    \n+
    223
    \n+
    224 template< int dim, class Grid >
    \n+
    \n+\n+
    226 {
    \n+
    227 assert( elementInfo_.level() == grid().levelProvider() ( elementInfo_ ) );
    \n+
    228 return elementInfo_.level();
    \n+
    229 }
    \n+
    \n+
    230
    \n+
    231
    \n+
    232 template< int dim, class Grid >
    \n+
    233 inline void
    \n+
    \n+\n+
    235 {
    \n+
    236 elementInfo_ = ElementInfo();
    \n+
    237 }
    \n+
    \n+
    238
    \n+
    239
    \n+
    240 template< int dim, class Grid >
    \n+\n+
    \n+
    242 ::setElement ( const ElementInfo &elementInfo, int /* subEntity */ )
    \n+
    243 {
    \n+
    244 elementInfo_ = elementInfo;
    \n+
    245 }
    \n+
    \n+
    246
    \n+
    247
    \n+
    248 template< int dim, class Grid >
    \n+
    249 inline void
    \n+
    \n+\n+
    251 {
    \n+
    252 setElement( other.elementInfo_, 0 );
    \n+
    253 }
    \n+
    \n+
    254
    \n+
    255
    \n+
    256 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    259 {
    \n+
    260 typedef AlbertaGridCoordinateReader< 0, Grid > CoordReader;
    \n+
    261
    \n+
    262 assert( elementInfo_ );
    \n+
    263 const CoordReader coordReader( grid(), elementInfo_, 0 );
    \n+
    264 return Geometry( GeometryImpl( coordReader ) );
    \n+
    265 }
    \n+
    \n+
    266
    \n+
    267
    \n+
    268 template< int dim, class Grid >
    \n+
    \n+
    269 inline GeometryType AlbertaGridEntity< 0, dim, Grid>::type () const
    \n+
    270 {
    \n+
    271 return GeometryTypes::simplex( mydimension );
    \n+
    272 }
    \n+
    \n+
    273
    \n+
    274
    \n+
    275 template< int dim, class Grid >
    \n+
    276 inline typename Grid::template Codim< 0 >::Entity
    \n+
    \n+\n+
    278 {
    \n+
    279 typedef AlbertaGridEntity< 0, dim, Grid > EntityImpl;
    \n+
    280
    \n+
    281 assert( elementInfo_ );
    \n+
    282 const ElementInfo fatherInfo = elementInfo_.father();
    \n+
    283
    \n+
    284 return EntityImpl( grid(), fatherInfo, 0 );
    \n+
    285 }
    \n+
    \n+
    286
    \n+
    287
    \n+
    288 template< int dim, class Grid >
    \n+\n+
    290 {
    \n+
    291 return elementInfo_.indexInFather();
    \n+
    292 }
    \n+
    293
    \n+
    294
    \n+
    295 template< int dim, class Grid >
    \n+
    296 inline typename AlbertaGridEntity< 0, dim, Grid >::LocalGeometry
    \n+
    \n+\n+
    298 {
    \n+
    299 typedef AlbertaGridLocalGeometryProvider< Grid > LocalGeoProvider;
    \n+
    300 const int indexInFather = elementInfo_.indexInFather();
    \n+
    301 const int orientation = (elementInfo_.type() == 1 ? -1 : 1);
    \n+
    302 return LocalGeometry( LocalGeoProvider::instance().geometryInFather( indexInFather, orientation ) );
    \n+
    303 }
    \n+
    \n+
    304
    \n+
    305
    \n+
    306 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    309 {
    \n+
    310 assert( elementInfo_ );
    \n+
    311 typedef AlbertaGridHierarchicIterator< Grid > IteratorImp;
    \n+
    312 return IteratorImp( grid(), elementInfo_, maxlevel );
    \n+
    313 }
    \n+
    \n+
    314
    \n+
    315
    \n+
    316 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    319 {
    \n+
    320 assert( elementInfo_ );
    \n+
    321 typedef AlbertaGridHierarchicIterator< Grid > IteratorImp;
    \n+
    322 return IteratorImp( grid(), level(), maxlevel );
    \n+
    323 }
    \n+
    \n+
    324
    \n+
    325
    \n+
    326 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    329 {
    \n+
    330 assert( elementInfo_ );
    \n+
    331
    \n+
    332#ifndef NDEBUG
    \n+
    333 for( int i = 0; i <= dimension; ++i )
    \n+
    334 {
    \n+
    335 // std::cout << "Opposite vertex " << i << ": "
    \n+
    336 // << (int)(getElInfo()->opp_vertex[ i ]) << std::endl;
    \n+
    337 if( getElInfo()->opp_vertex[ i ] == 127 )
    \n+
    338 {
    \n+
    339 assert( false );
    \n+
    340 DUNE_THROW( NotImplemented, "AlbertaGrid: Intersections on outside "
    \n+
    341 "entities are not fully implemented, yet." );
    \n+
    342 }
    \n+
    343 }
    \n+
    344#endif // #ifndef NDEBUG
    \n+
    345
    \n+\n+
    347 return AlbertaGridLeafIntersectionIterator( *this, begin );
    \n+
    348 }
    \n+
    \n+
    349
    \n+
    350
    \n+
    351 template< int dim, class Grid >
    \n+\n+
    \n+\n+
    354 {
    \n+
    355 assert( elementInfo_ );
    \n+\n+
    357 return AlbertaGridLeafIntersectionIterator( *this, end );
    \n+
    358 }
    \n+
    \n+
    359
    \n+
    360} // namespace Dune
    \n+
    361
    \n+
    362#endif // #ifndef DUNE_ALBERTA_ENTITY_CC
    \n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n+
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    static const int InteriorBoundary
    Definition misc.hh:59
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition macroelement.hh:24
    \n-
    bool isBoundary(const int face) const
    Definition macroelement.hh:42
    \n-
    const MacroElement< dim > * neighbor(const int face) const
    Definition macroelement.hh:56
    \n-
    int boundaryId(const int face) const
    Definition macroelement.hh:49
    \n-
    const GlobalVector & coordinate(const int vertex) const
    Definition macroelement.hh:34
    \n+
    ALBERTA EL Element
    Definition misc.hh:54
    \n+\n+
    int level() const
    Definition elementinfo.hh:533
    \n+
    bool mightVanish() const
    Definition elementinfo.hh:526
    \n+
    ElementInfo father() const
    Definition elementinfo.hh:449
    \n+
    int type() const
    Definition elementinfo.hh:540
    \n+
    bool isBoundary(int face) const
    Definition elementinfo.hh:620
    \n+
    int indexInFather() const
    Definition elementinfo.hh:457
    \n+
    ALBERTA EL_INFO & elInfo() const
    Definition elementinfo.hh:744
    \n+
    Definition hierarchiciterator.hh:29
    \n+
    Definition albertagrid/intersectioniterator.hh:27
    \n+
    Definition albertagrid/entity.hh:46
    \n+
    void clearElement()
    Definition entity.cc:70
    \n+
    ALBERTA EL_INFO * getElInfo() const
    needed for the LevelIterator and LeafIterator
    Definition entity.cc:62
    \n+
    int level() const
    level of this element
    Definition entity.cc:94
    \n+
    void setElement(const ElementInfo &elementInfo, int subEntity)
    Definition entity.cc:78
    \n+
    PartitionType partitionType() const
    return partition type of this entity
    Definition entity.cc:40
    \n+
    Grid::template Codim< codim >::Geometry Geometry
    Definition albertagrid/entity.hh:69
    \n+
    void setEntity(const This &other)
    Definition entity.cc:87
    \n+
    const ElementInfo & elementInfo() const
    Definition albertagrid/entity.hh:130
    \n+
    Geometry geometry() const
    geometry of this entity
    Definition entity.cc:103
    \n+
    static const int dimension
    Definition albertagrid/entity.hh:57
    \n+
    const Grid & grid() const
    obtain a reference to the grid
    Definition albertagrid/entity.hh:142
    \n+
    int subEntity() const
    obtain number of the subentity within the element (in ALBERTA numbering)
    Definition albertagrid/entity.hh:148
    \n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition albertagrid/entity.hh:71
    \n+
    GeometryType type() const
    type of geometry of this entity
    Definition entity.cc:114
    \n+
    bool equals(const This &other) const
    equality of entities
    Definition entity.cc:48
    \n+
    Definition albertagrid/entity.hh:63
    \n+
    Definition albertagrid/entity.hh:185
    \n+
    Grid::Traits::template Codim< 0 >::GeometryImpl GeometryImpl
    Definition albertagrid/entity.hh:211
    \n+
    const ElementInfo & elementInfo() const
    Definition albertagrid/entity.hh:355
    \n+
    Grid::template Codim< 0 >::LocalGeometry LocalGeometry
    Definition albertagrid/entity.hh:210
    \n+
    Definition albertagrid/geometry.hh:30
    \n+
    Definition albertagrid/geometry.hh:504
    \n+
    Definition albertagrid/intersectioniterator.hh:35
    \n+
    Definition albertagrid/intersectioniterator.hh:36
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,109 +1,505 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-macroelement.hh\n+entity.cc\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_MACROELEMENT_HH\n-6#define DUNE_ALBERTA_MACROELEMENT_HH\n+5#ifndef DUNE_ALBERTA_ENTITY_CC\n+_\b6#define DUNE_ALBERTA_ENTITY_CC\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-9\n-10#if HAVE_ALBERTA\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-15 namespace Alberta\n-16 {\n-17\n-18 // MacroElement\n-19 // ------------\n-20\n-21 template< int dim >\n-_\b2_\b2 struct _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-23 : public _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n-24 {\n-25 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( const int vertex ) const;\n-26\n-27 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const int face ) const;\n-28 bool _\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( const int face ) const;\n-29 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b> *_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const;\n-30 };\n-31\n-32\n-33 template< int dim >\n-_\b3_\b4 inline const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( const int\n-vertex ) const\n-35 {\n-36 assert( (vertex >= 0) && (vertex < N_VERTICES_MAX) );\n-37 return *coord[ vertex ];\n-38 }\n-39\n-40\n-41 template< int dim >\n-_\b4_\b2 inline bool _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( const int face ) const\n-43 {\n-44 return (boundaryId( face ) != _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by);\n-45 }\n-46\n-47\n-48 template< int dim >\n-_\b4_\b9 inline int _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const int face ) const\n-50 {\n-51 return wall_bound[ face ];\n-52 }\n-53\n-54\n-55 template< int dim >\n-_\b5_\b6 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b> *_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face )\n-const\n-57 {\n-58 assert( (face >= 0) && (face < N_NEIGH_MAX) );\n-59 return static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt * >( neigh[ face ] );\n-60 }\n-61\n-62 }\n-63\n-64}\n-65\n-66#endif // #if HAVE_ALBERTA\n+8namespace _\bD_\bu_\bn_\be\n+9{\n+10\n+11 // AlbertaGridEntity (for codim > 0)\n+12 // ---------------------------------\n+13\n+14 template\n+15 inline AlbertaGridEntity< codim, dim, Grid >\n+_\b1_\b6 ::AlbertaGridEntity ( const _\bG_\br_\bi_\bd &grid, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int\n+subEntity )\n+17 : grid_( &grid ),\n+18 elementInfo_( elementInfo ),\n+19 subEntity_( subEntity )\n+20 {}\n+21\n+22 template\n+23 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b2_\b4_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ( const _\bG_\br_\bi_\bd &grid )\n+25 : grid_( &grid ),\n+26 elementInfo_(),\n+27 subEntity_( -1 )\n+28 {}\n+29\n+30 template\n+31 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b3_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ()\n+33 : grid_( _\bN_\bU_\bL_\bL ),\n+34 elementInfo_(),\n+35 subEntity_( -1 )\n+36 {}\n+37\n+38 template< int codim, int dim, class Grid >\n+39 inline _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+_\b4_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n+41 {\n+42 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+43 }\n+44\n+45\n+46 template< int codim, int dim, class Grid >\n+47 inline bool\n+_\b4_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &_\bo_\bt_\bh_\be_\br ) const\n+49 {\n+50 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\b1 = elementInfo().el();\n+51 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\b2 = _\bo_\bt_\bh_\be_\br.elementInfo().el();\n+52\n+53 // if both element null then they are equal\n+54 if( (_\be_\b1 == _\bN_\bU_\bL_\bL) && (_\be_\b2 == _\bN_\bU_\bL_\bL) )\n+55 return true;\n+56 return ((_\be_\b1 == _\be_\b2) && (subEntity_ == _\bo_\bt_\bh_\be_\br.subEntity_));\n+57 }\n+58\n+59\n+60 template< int codim, int dim, class Grid >\n+61 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO *\n+_\b6_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo () const\n+63 {\n+64 return &(elementInfo_.elInfo());\n+65 }\n+66\n 67\n-68#endif // #ifndef DUNE_ALBERTA_MACROELEMENT_HH\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+68 template< int codim, int dim, class Grid >\n+69 inline void\n+_\b7_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\bl_\be_\ba_\br_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+71 {\n+72 elementInfo_ = _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n+73 }\n+74\n+75\n+76 template< int codim, int dim, class Grid >\n+77 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b7_\b8_\b _\b:_\b:_\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity )\n+79 {\n+80 elementInfo_ = elementInfo;\n+81 subEntity_ = subEntity;\n+82 }\n+83\n+84\n+85 template< int codim, int dim, class Grid >\n+86 inline void\n+_\b8_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bs_\be_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const _\bT_\bh_\bi_\bs &_\bo_\bt_\bh_\be_\br )\n+88 {\n+89 setElement( _\bo_\bt_\bh_\be_\br.elementInfo_, _\bo_\bt_\bh_\be_\br.subEntity_ );\n+90 }\n+91\n+92\n+93 template< int codim, int dim, class Grid >\n+_\b9_\b4 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl() const\n+95 {\n+96 _\ba_\bs_\bs_\be_\br_\bt( elementInfo_.level() == grid().levelProvider() ( elementInfo_ ) );\n+97 return elementInfo_.level();\n+98 }\n+99\n+100\n+101 template< int codim, int dim, class Grid >\n+102 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+_\b1_\b0_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+104 {\n+105 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b> _\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br;\n+106\n+107 _\ba_\bs_\bs_\be_\br_\bt( elementInfo_ );\n+108 const _\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br _\bc_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br( grid(), elementInfo_, subEntity_ );\n+109 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( GeometryImpl( _\bc_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ) );\n+110 }\n+111\n+112\n+113 template< int codim, int dim, class Grid >\n+_\b1_\b1_\b4 inline GeometryType _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n+115 {\n+116 return GeometryTypes::simplex( mydimension );\n+117 }\n+118\n+119\n+120\n+121 // AlbertaGridEntity (for codim = 0)\n+122 // ---------------------------------\n+123\n+124 template< int dim, class Grid >\n+125 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b1_\b2_\b6_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ( const _\bG_\br_\bi_\bd &grid, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int\n+subEntity )\n+127 : grid_( &grid ),\n+128 elementInfo_( elementInfo )\n+129 {\n+130 assert( _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by == 0 );\n+131 }\n+132\n+133 template< int dim, class Grid >\n+134 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b1_\b3_\b5_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by( const _\bG_\br_\bi_\bd &grid )\n+136 : grid_( &grid ),\n+137 elementInfo_()\n+138 {}\n+139\n+140 template< int dim, class Grid >\n+141 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b1_\b4_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ()\n+143 : grid_( NULL ),\n+144 elementInfo_()\n+145 {}\n+146\n+147\n+148 template< int dim, class Grid >\n+_\b1_\b4_\b9 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd() const\n+150 {\n+151 // elements are always inside of our Domain\n+152 return 0;\n+153 }\n+154\n+155\n+156 template< int dim, class Grid >\n+_\b1_\b5_\b7 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bs_\bN_\be_\bw () const\n+158 {\n+159 return _\bg_\br_\bi_\bd().levelProvider().isNew( elementInfo_ );\n+160 }\n+161\n+162\n+163 template< int dim, class Grid >\n+_\b1_\b6_\b4 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const\n+165 {\n+166 return elementInfo_._\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh();\n+167 }\n+168\n+169\n+170 template< int dim, class Grid >\n+171 inline bool\n+_\b1_\b7_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs () const\n+173 {\n+174 assert( elementInfo_ );\n+175 bool isBoundary = false;\n+176 for( int i = 0; i < dim+1; ++i )\n+177 isBoundary |= elementInfo_._\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by( i );\n+178 return isBoundary;\n+179 }\n+180\n+181\n+182 template< int dim, class Grid >\n+183 inline _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+_\b1_\b8_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n+185 {\n+186 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+187 }\n+188\n+189\n+190 template< int dim, class Grid >\n+_\b1_\b9_\b1 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf () const\n+192 {\n+193 return elementInfo_.isLeaf();\n+194 }\n+195\n+196\n+197 template< int dim, class Grid >\n+198 inline bool\n+_\b1_\b9_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &other ) const\n+200 {\n+201 // element pointers are unique\n+202 return (_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo().el() == other._\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo().el());\n+203 }\n+204\n+205\n+206 template< int dim, class Grid >\n+207 template< int codim >\n+208 inline typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< codim >::Entity\n+_\b2_\b0_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by ( int i ) const\n+210 {\n+211 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b> EntityImpl;\n+212 return EntityImpl( _\bg_\br_\bi_\bd(), elementInfo_, _\bg_\br_\bi_\bd().generic2alberta( codim, i )\n+);\n+213 }\n+214\n+215\n+216 template< int dim, class Grid >\n+217 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO *\n+_\b2_\b1_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo () const\n+219 {\n+220 return &(elementInfo_._\be_\bl_\bI_\bn_\bf_\bo());\n+221 }\n+222\n+223\n+224 template< int dim, class Grid >\n+_\b2_\b2_\b5 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl () const\n+226 {\n+227 assert( elementInfo_._\bl_\be_\bv_\be_\bl() == _\bg_\br_\bi_\bd().levelProvider() ( elementInfo_ ) );\n+228 return elementInfo_._\bl_\be_\bv_\be_\bl();\n+229 }\n+230\n+231\n+232 template< int dim, class Grid >\n+233 inline void\n+_\b2_\b3_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\bl_\be_\ba_\br_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+235 {\n+236 elementInfo_ = _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n+237 }\n+238\n+239\n+240 template< int dim, class Grid >\n+241 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+_\b2_\b4_\b2_\b _\b:_\b:_\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int /* subEntity */ )\n+243 {\n+244 elementInfo_ = elementInfo;\n+245 }\n+246\n+247\n+248 template< int dim, class Grid >\n+249 inline void\n+_\b2_\b5_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bs_\be_\bt_\bE_\bn_\bt_\bi_\bt_\by( const _\bT_\bh_\bi_\bs &other )\n+251 {\n+252 _\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt( other.elementInfo_, 0 );\n+253 }\n+254\n+255\n+256 template< int dim, class Grid >\n+257 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+_\b2_\b5_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+259 {\n+260 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\b0_\b,_\b _\bG_\br_\bi_\bd_\b _\b> CoordReader;\n+261\n+262 assert( elementInfo_ );\n+263 const CoordReader coordReader( _\bg_\br_\bi_\bd(), elementInfo_, 0 );\n+264 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl( coordReader ) );\n+265 }\n+266\n+267\n+268 template< int dim, class Grid >\n+_\b2_\b6_\b9 inline GeometryType _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b>_\b:_\b:_\bt_\by_\bp_\be () const\n+270 {\n+271 return GeometryTypes::simplex( mydimension );\n+272 }\n+273\n+274\n+275 template< int dim, class Grid >\n+276 inline typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity\n+_\b2_\b7_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br () const\n+278 {\n+279 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b> EntityImpl;\n+280\n+281 assert( elementInfo_ );\n+282 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo fatherInfo = elementInfo_._\bf_\ba_\bt_\bh_\be_\br();\n+283\n+284 return EntityImpl( _\bg_\br_\bi_\bd(), fatherInfo, 0 );\n+285 }\n+286\n+287\n+288 template< int dim, class Grid >\n+289 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bn_\bC_\bh_\bi_\bl_\bd () const\n+290 {\n+291 return elementInfo_._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br();\n+292 }\n+293\n+294\n+295 template< int dim, class Grid >\n+296 inline typename AlbertaGridEntity< 0, dim, Grid >::LocalGeometry\n+_\b2_\b9_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br() const\n+298 {\n+299 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> LocalGeoProvider;\n+300 const int indexInFather = elementInfo_._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br();\n+301 const int orientation = (elementInfo_._\bt_\by_\bp_\be() == 1 ? -1 : 1);\n+302 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( LocalGeoProvider::instance().geometryInFather\n+( indexInFather, orientation ) );\n+303 }\n+304\n+305\n+306 template< int dim, class Grid >\n+307 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b3_\b0_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\bb_\be_\bg_\bi_\bn( int maxlevel ) const\n+309 {\n+310 assert( elementInfo_ );\n+311 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> IteratorImp;\n+312 return IteratorImp( _\bg_\br_\bi_\bd(), elementInfo_, maxlevel );\n+313 }\n+314\n+315\n+316 template< int dim, class Grid >\n+317 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b3_\b1_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b>_\b:_\b:_\bh_\be_\bn_\bd( int maxlevel ) const\n+319 {\n+320 assert( elementInfo_ );\n+321 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> IteratorImp;\n+322 return IteratorImp( grid(), level(), maxlevel );\n+323 }\n+324\n+325\n+326 template< int dim, class Grid >\n+327 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b3_\b2_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn() const\n+329 {\n+330 assert( elementInfo_ );\n+331\n+332#ifndef NDEBUG\n+333 for( int i = 0; i <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+334 {\n+335 // std::cout << \"Opposite vertex \" << i << \": \"\n+336 // << (int)(getElInfo()->opp_vertex[ i ]) << std::endl;\n+337 if( _\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo()->opp_vertex[ i ] == 127 )\n+338 {\n+339 assert( false );\n+340 DUNE_THROW( NotImplemented, \"AlbertaGrid: Intersections on outside \"\n+341 \"entities are not fully implemented, yet.\" );\n+342 }\n+343 }\n+344#endif // #ifndef NDEBUG\n+345\n+346 typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\be_\bg_\bi_\bn begin;\n+347 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, begin );\n+348 }\n+349\n+350\n+351 template< int dim, class Grid >\n+352 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b3_\b5_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\be_\bn_\bd() const\n+354 {\n+355 assert( elementInfo_ );\n+356 typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bd end;\n+357 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, end );\n+358 }\n+359\n+360} // namespace Dune\n+361\n+362#endif // #ifndef DUNE_ALBERTA_ENTITY_CC\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType\n+Attributes used in the generic overlap model.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ InteriorEntity\n+all interior entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-static const int InteriorBoundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool isBoundary(const int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-const MacroElement< dim > * neighbor(const int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-const GlobalVector & coordinate(const int vertex) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ALBERTA EL Element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:533\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh\n+bool mightVanish() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:526\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n+ElementInfo father() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:449\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n+int type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:540\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool isBoundary(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:620\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n+int indexInFather() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:457\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo\n+ALBERTA EL_INFO & elInfo() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:744\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bl_\be_\ba_\br_\bE_\bl_\be_\bm_\be_\bn_\bt\n+void clearElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo\n+ALBERTA EL_INFO * getElInfo() const\n+needed for the LevelIterator and LeafIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+level of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n+void setElement(const ElementInfo &elementInfo, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+return partition type of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Grid::template Codim< codim >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+void setEntity(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+const ElementInfo & elementInfo() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+geometry of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\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 albertagrid/entity.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd\n+const Grid & grid() const\n+obtain a reference to the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n+int subEntity() const\n+obtain number of the subentity within the element (in ALBERTA numbering)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dimension > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+type of geometry of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const This &other) const\n+equality of entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl\n+Grid::Traits::template Codim< 0 >::GeometryImpl GeometryImpl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+const ElementInfo & elementInfo() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:355\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Grid::template Codim< 0 >::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bR_\be_\ba_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:504\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\be_\bg_\bi_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00665.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00665.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entity.cc File Reference\n+dune-grid: dofadmin.hh File Reference\n \n \n \n \n \n \n \n@@ -70,48 +70,41 @@\n \n \n
    \n \n-
    entity.cc File Reference
    \n+Classes |\n+Namespaces
    \n+
    dofadmin.hh File Reference
    \n \n
    \n-\n+
    #include <utility>
    \n+#include <dune/common/hybridutilities.hh>
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/elementinfo.hh>
    \n+
    \n

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::Alberta::DofAccess< dim, codim >
     
    class  Dune::Alberta::HierarchyDofNumbering< dim >
     
    \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n+\n+\n

    \n-Macros

    #define DUNE_ALBERTA_ENTITY_CC
     
    namespace  Dune::Alberta
     
    \n-

    Macro Definition Documentation

    \n-\n-

    ◆ DUNE_ALBERTA_ENTITY_CC

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define DUNE_ALBERTA_ENTITY_CC
    \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,22 +1,27 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n-entity.cc File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dofadmin.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\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 Include standard header files.\n \u00a0\n-M\bMa\bac\bcr\bro\bos\bs\n-#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bE_\bN_\bT_\bI_\bT_\bY_\b__\bC_\bC\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n \u00a0\n-*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_E\bEN\bNT\bTI\bIT\bTY\bY_\b_C\bCC\bC *\b**\b**\b**\b**\b*\n-#define DUNE_ALBERTA_ENTITY_CC\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00665_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00665_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entity.cc Source File\n+dune-grid: dofadmin.hh Source File\n \n \n \n \n \n \n \n@@ -74,493 +74,387 @@\n \n \n \n
    \n-
    entity.cc
    \n+
    dofadmin.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_ENTITY_CC
    \n-
    6#define DUNE_ALBERTA_ENTITY_CC
    \n+
    5#ifndef DUNE_ALBERTA_DOFADMIN_HH
    \n+
    6#define DUNE_ALBERTA_DOFADMIN_HH
    \n
    7
    \n-
    8namespace Dune
    \n-
    9{
    \n-
    10
    \n-
    11 // AlbertaGridEntity (for codim > 0)
    \n-
    12 // ---------------------------------
    \n-
    13
    \n-
    14 template<int codim, int dim, class Grid>
    \n-
    15 inline AlbertaGridEntity< codim, dim, Grid >
    \n-
    \n-
    16 ::AlbertaGridEntity ( const Grid &grid, const ElementInfo &elementInfo, int subEntity )
    \n-
    17 : grid_( &grid ),
    \n-
    18 elementInfo_( elementInfo ),
    \n-
    19 subEntity_( subEntity )
    \n-
    20 {}
    \n-
    \n-
    21
    \n-
    22 template<int codim, int dim, class Grid>
    \n-\n-
    \n-\n-
    25 : grid_( &grid ),
    \n-
    26 elementInfo_(),
    \n-
    27 subEntity_( -1 )
    \n-
    28 {}
    \n-
    \n+
    8#include <utility>
    \n+
    9
    \n+
    10#include <dune/common/hybridutilities.hh>
    \n+
    11
    \n+\n+\n+
    14
    \n+
    15#if HAVE_ALBERTA
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 namespace Alberta
    \n+
    21 {
    \n+
    22
    \n+
    23 // External Forward Declarations
    \n+
    24 // -----------------------------
    \n+
    25
    \n+
    26 template< int dim >
    \n+
    27 class MeshPointer;
    \n+
    28
    \n
    29
    \n-
    30 template<int codim, int dim, class Grid>
    \n-\n-
    \n-\n-
    33 : grid_( NULL ),
    \n-
    34 elementInfo_(),
    \n-
    35 subEntity_( -1 )
    \n-
    36 {}
    \n-
    \n-
    37
    \n-
    38 template< int codim, int dim, class Grid >
    \n-
    39 inline PartitionType
    \n-
    \n-\n-
    41 {
    \n-
    42 return InteriorEntity;
    \n-
    43 }
    \n-
    \n+
    30
    \n+
    31 // DofAccess
    \n+
    32 // ---------
    \n+
    33
    \n+
    34 template< int dim, int codim >
    \n+
    \n+\n+
    36 {
    \n+
    37 static const int codimtype = CodimType< dim, codim >::value;
    \n+
    38
    \n+
    39 public:
    \n+\n+
    41
    \n+
    42 static const int dimension = dim;
    \n+
    43 static const int codimension = codim;
    \n
    44
    \n-
    45
    \n-
    46 template< int codim, int dim, class Grid >
    \n-
    47 inline bool
    \n-
    \n-\n-
    49 {
    \n-
    50 const Alberta::Element *e1 = elementInfo().el();
    \n-
    51 const Alberta::Element *e2 = other.elementInfo().el();
    \n-
    52
    \n-
    53 // if both element null then they are equal
    \n-
    54 if( (e1 == NULL) && (e2 == NULL) )
    \n-
    55 return true;
    \n-
    56 return ((e1 == e2) && (subEntity_ == other.subEntity_));
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    59
    \n-
    60 template< int codim, int dim, class Grid >
    \n-
    61 inline ALBERTA EL_INFO *
    \n-
    \n-\n-
    63 {
    \n-
    64 return &(elementInfo_.elInfo());
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67
    \n-
    68 template< int codim, int dim, class Grid >
    \n-
    69 inline void
    \n-
    \n-\n-
    71 {
    \n-
    72 elementInfo_ = ElementInfo();
    \n-
    73 }
    \n+\n+
    46
    \n+
    \n+\n+
    48 : node_( -1 )
    \n+
    49 {}
    \n+
    \n+
    50
    \n+
    \n+
    51 explicit DofAccess ( const DofSpace *dofSpace )
    \n+
    52 {
    \n+
    53 assert( dofSpace );
    \n+
    54 node_ = dofSpace->admin->mesh->node[ codimtype ];
    \n+
    55 index_ = dofSpace->admin->n0_dof[ codimtype ];
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    \n+
    58 int operator() ( const Element *element, int subEntity, int i ) const
    \n+
    59 {
    \n+
    60 assert( element );
    \n+
    61 assert( node_ != -1 );
    \n+
    62 assert( subEntity < numSubEntities );
    \n+
    63 return element->dof[ node_ + subEntity ][ index_ + i ];
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+
    66 int operator() ( const Element *element, int subEntity ) const
    \n+
    67 {
    \n+
    68 return (*this)( element, subEntity, 0 );
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    \n+
    71 int operator() ( const ElementInfo &elementInfo, int subEntity, int i ) const
    \n+
    72 {
    \n+
    73 return (*this)( elementInfo.el(), subEntity, i );
    \n+
    74 }
    \n
    \n-
    74
    \n
    75
    \n-
    76 template< int codim, int dim, class Grid >
    \n-\n-
    \n-
    78 ::setElement ( const ElementInfo &elementInfo, int subEntity )
    \n-
    79 {
    \n-
    80 elementInfo_ = elementInfo;
    \n-
    81 subEntity_ = subEntity;
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    84
    \n-
    85 template< int codim, int dim, class Grid >
    \n-
    86 inline void
    \n-
    \n-\n-
    88 {
    \n-
    89 setElement( other.elementInfo_, other.subEntity_ );
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    92
    \n-
    93 template< int codim, int dim, class Grid >
    \n-
    \n-\n-
    95 {
    \n-
    96 assert( elementInfo_.level() == grid().levelProvider() ( elementInfo_ ) );
    \n-
    97 return elementInfo_.level();
    \n-
    98 }
    \n-
    \n-
    99
    \n-
    100
    \n-
    101 template< int codim, int dim, class Grid >
    \n-\n-
    \n-\n-
    104 {
    \n-\n-
    106
    \n-
    107 assert( elementInfo_ );
    \n-
    108 const CoordReader coordReader( grid(), elementInfo_, subEntity_ );
    \n-
    109 return Geometry( GeometryImpl( coordReader ) );
    \n-
    110 }
    \n-
    \n-
    111
    \n+
    \n+
    76 int operator() ( const ElementInfo &elementInfo, int subEntity ) const
    \n+
    77 {
    \n+
    78 return (*this)( elementInfo.el(), subEntity );
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    81 private:
    \n+
    82 int node_;
    \n+
    83 int index_;
    \n+
    84 };
    \n+
    \n+
    85
    \n+
    86
    \n+
    87
    \n+
    88 // HierarchyDofNumbering
    \n+
    89 // ---------------------
    \n+
    90
    \n+
    91 template< int dim >
    \n+
    \n+\n+
    93 {
    \n+\n+
    95
    \n+
    96 public:
    \n+
    97 static const int dimension = dim;
    \n+
    98
    \n+\n+\n+
    101
    \n+
    102 private:
    \n+
    103 static const int nNodeTypes = N_NODE_TYPES;
    \n+
    104
    \n+
    105 template< int codim >
    \n+
    106 struct CreateDofSpace;
    \n+
    107
    \n+
    108 template< int codim >
    \n+
    109 struct CacheDofSpace;
    \n+
    110
    \n+
    111 typedef std::pair< int, int > Cache;
    \n
    112
    \n-
    113 template< int codim, int dim, class Grid >
    \n+
    113 public:
    \n
    \n-\n-
    115 {
    \n-
    116 return GeometryTypes::simplex( mydimension );
    \n-
    117 }
    \n+\n+
    115 {}
    \n
    \n-
    118
    \n-
    119
    \n+
    116
    \n+
    117 private:
    \n+
    118 HierarchyDofNumbering ( const This & );
    \n+
    119 This &operator= ( const This & );
    \n
    120
    \n-
    121 // AlbertaGridEntity (for codim = 0)
    \n-
    122 // ---------------------------------
    \n-
    123
    \n-
    124 template< int dim, class Grid >
    \n-\n-
    \n-
    126 ::AlbertaGridEntity ( const Grid &grid, const ElementInfo &elementInfo, int subEntity )
    \n-
    127 : grid_( &grid ),
    \n-
    128 elementInfo_( elementInfo )
    \n-
    129 {
    \n-
    130 assert( subEntity == 0 );
    \n-
    131 }
    \n-
    \n-
    132
    \n-
    133 template< int dim, class Grid >
    \n-\n+
    121 public:
    \n+
    \n+\n+
    123 {
    \n+
    124 release();
    \n+
    125 }
    \n+
    \n+
    126
    \n+
    \n+
    127 int operator() ( const Element *element, int codim, unsigned int subEntity ) const
    \n+
    128 {
    \n+
    129 assert( !(*this) == false );
    \n+
    130 assert( (codim >= 0) && (codim <= dimension) );
    \n+
    131 const Cache &cache = cache_[ codim ];
    \n+
    132 return element->dof[ cache.first + subEntity ][ cache.second ];
    \n+
    133 }
    \n+
    \n+
    134
    \n
    \n-\n-
    136 : grid_( &grid ),
    \n-
    137 elementInfo_()
    \n-
    138 {}
    \n+
    135 int operator() ( const ElementInfo &element, int codim, unsigned int subEntity ) const
    \n+
    136 {
    \n+
    137 return (*this)( element.el(), codim, subEntity );
    \n+
    138 }
    \n
    \n
    139
    \n-
    140 template< int dim, class Grid >
    \n-\n-
    \n-\n-
    143 : grid_( NULL ),
    \n-
    144 elementInfo_()
    \n-
    145 {}
    \n-
    \n-
    146
    \n-
    147
    \n-
    148 template< int dim, class Grid >
    \n-
    \n-\n-
    150 {
    \n-
    151 // elements are always inside of our Domain
    \n-
    152 return 0;
    \n-
    153 }
    \n-
    \n-
    154
    \n-
    155
    \n-
    156 template< int dim, class Grid >
    \n-
    \n-\n-
    158 {
    \n-
    159 return grid().levelProvider().isNew( elementInfo_ );
    \n-
    160 }
    \n+
    \n+
    140 explicit operator bool () const
    \n+
    141 {
    \n+
    142 return (bool)mesh_;
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    \n+
    145 const DofSpace *dofSpace ( int codim ) const
    \n+
    146 {
    \n+
    147 assert( *this );
    \n+
    148 assert( (codim >= 0) && (codim <= dimension) );
    \n+
    149 return dofSpace_[ codim ];
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    \n+
    152 const DofSpace *emptyDofSpace () const
    \n+
    153 {
    \n+
    154 assert( *this );
    \n+
    155 return emptySpace_;
    \n+
    156 }
    \n+
    \n+
    157
    \n+
    \n+
    158 const MeshPointer &mesh () const
    \n+
    159 {
    \n+
    160 return mesh_;
    \n+
    161 }
    \n
    \n-
    161
    \n
    162
    \n-
    163 template< int dim, class Grid >
    \n-
    \n-\n-
    165 {
    \n-
    166 return elementInfo_.mightVanish();
    \n-
    167 }
    \n-
    \n-
    168
    \n+
    \n+
    163 int size ( int codim ) const
    \n+
    164 {
    \n+
    165 return dofSpace( codim )->admin->size;
    \n+
    166 }
    \n+
    \n+
    167
    \n+
    \n+
    168 void create ( const MeshPointer &mesh );
    \n
    169
    \n-
    170 template< int dim, class Grid >
    \n-
    171 inline bool
    \n-
    \n-\n-
    173 {
    \n-
    174 assert( elementInfo_ );
    \n-
    175 bool isBoundary = false;
    \n-
    176 for( int i = 0; i < dim+1; ++i )
    \n-
    177 isBoundary |= elementInfo_.isBoundary( i );
    \n-
    178 return isBoundary;
    \n-
    179 }
    \n+
    \n+
    170 void release ()
    \n+
    171 {
    \n+
    172 if( *this )
    \n+
    173 {
    \n+
    174 for( int codim = 0; codim <= dimension; ++codim )
    \n+
    175 freeDofSpace( dofSpace_[ codim ] );
    \n+
    176 freeDofSpace( emptySpace_ );
    \n+
    177 mesh_ = MeshPointer();
    \n+
    178 }
    \n+
    179 }
    \n
    \n
    180
    \n-
    181
    \n-
    182 template< int dim, class Grid >
    \n-
    183 inline PartitionType
    \n-
    \n-\n-
    185 {
    \n-
    186 return InteriorEntity;
    \n-
    187 }
    \n-
    \n+
    181 private:
    \n+
    182 static const DofSpace *createEmptyDofSpace ( const MeshPointer &mesh );
    \n+
    183 static const DofSpace *createDofSpace ( const MeshPointer &mesh,
    \n+
    184 const std::string &name,
    \n+
    185 const int (&ndof)[ nNodeTypes ],
    \n+
    186 const bool periodic = false );
    \n+
    187 static void freeDofSpace ( const DofSpace *dofSpace );
    \n
    188
    \n-
    189
    \n-
    190 template< int dim, class Grid >
    \n-
    \n-\n-
    192 {
    \n-
    193 return elementInfo_.isLeaf();
    \n-
    194 }
    \n-
    \n+
    189 MeshPointer mesh_;
    \n+
    190 const DofSpace *emptySpace_;
    \n+
    191 const DofSpace *dofSpace_[ dimension+1 ];
    \n+
    192 Cache cache_[ dimension+1 ];
    \n+
    193 };
    \n+
    194
    \n
    195
    \n
    196
    \n-
    197 template< int dim, class Grid >
    \n-
    198 inline bool
    \n+
    197 template< int dim >
    \n+
    198 inline void
    \n
    \n-\n-
    200 {
    \n-
    201 // element pointers are unique
    \n-
    202 return (elementInfo().el() == other.elementInfo().el());
    \n-
    203 }
    \n-
    \n-
    204
    \n+\n+
    200 {
    \n+
    201 release();
    \n+
    202
    \n+
    203 if( !mesh )
    \n+
    204 return;
    \n
    205
    \n-
    206 template< int dim, class Grid >
    \n-
    207 template< int codim >
    \n-
    208 inline typename Grid::template Codim< codim >::Entity
    \n-
    \n-\n-
    210 {
    \n-
    211 typedef AlbertaGridEntity< codim, dim, Grid > EntityImpl;
    \n-
    212 return EntityImpl( grid(), elementInfo_, grid().generic2alberta( codim, i ) );
    \n-
    213 }
    \n+
    206 mesh_ = mesh;
    \n+
    207
    \n+
    208 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i ){ CreateDofSpace< i >::apply( mesh_, dofSpace_ ); } );
    \n+
    209 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i ){ CacheDofSpace< i >::apply( dofSpace_, cache_ ); } );
    \n+
    210
    \n+
    211 emptySpace_ = createEmptyDofSpace( mesh_ );
    \n+
    212 for( int i = 0; i < nNodeTypes; ++i )
    \n+
    213 assert( emptySpace_->admin->n_dof[ i ] == 0 );
    \n+
    214 }
    \n
    \n-
    214
    \n-
    215
    \n-
    216 template< int dim, class Grid >
    \n-
    217 inline ALBERTA EL_INFO *
    \n-
    \n-\n-
    219 {
    \n-
    220 return &(elementInfo_.elInfo());
    \n-
    221 }
    \n-
    \n-
    222
    \n-
    223
    \n-
    224 template< int dim, class Grid >
    \n-
    \n-\n-
    226 {
    \n-
    227 assert( elementInfo_.level() == grid().levelProvider() ( elementInfo_ ) );
    \n-
    228 return elementInfo_.level();
    \n-
    229 }
    \n-
    \n-
    230
    \n-
    231
    \n-
    232 template< int dim, class Grid >
    \n-
    233 inline void
    \n-
    \n-\n-
    235 {
    \n-
    236 elementInfo_ = ElementInfo();
    \n-
    237 }
    \n-
    \n-
    238
    \n-
    239
    \n-
    240 template< int dim, class Grid >
    \n-\n-
    \n-
    242 ::setElement ( const ElementInfo &elementInfo, int /* subEntity */ )
    \n-
    243 {
    \n-
    244 elementInfo_ = elementInfo;
    \n-
    245 }
    \n-
    \n-
    246
    \n-
    247
    \n-
    248 template< int dim, class Grid >
    \n-
    249 inline void
    \n-
    \n-\n-
    251 {
    \n-
    252 setElement( other.elementInfo_, 0 );
    \n-
    253 }
    \n
    \n+
    215
    \n+
    216
    \n+
    217
    \n+
    218 template< int dim >
    \n+
    219 inline const DofSpace *
    \n+\n+
    221 {
    \n+
    222 int ndof[ nNodeTypes ];
    \n+
    223 for( int i = 0; i < nNodeTypes; ++i )
    \n+
    224 ndof[ i ] = 0;
    \n+
    225 std::string name = "Empty";
    \n+
    226 return createDofSpace( mesh, name, ndof );
    \n+
    227 }
    \n+
    228
    \n+
    229
    \n+
    230 template< int dim >
    \n+
    231 inline const DofSpace *
    \n+
    232 HierarchyDofNumbering< dim >::createDofSpace ( const MeshPointer &mesh,
    \n+
    233 const std::string &name,
    \n+
    234 const int (&ndof)[ nNodeTypes ],
    \n+
    235 const bool periodic )
    \n+
    236 {
    \n+
    237 const ALBERTA FLAGS flags
    \n+
    238 = ADM_PRESERVE_COARSE_DOFS | (periodic ? ADM_PERIODIC : 0);
    \n+
    239 return ALBERTA get_dof_space ( mesh, name.c_str(), ndof, flags );
    \n+
    240 }
    \n+
    241
    \n+
    242
    \n+
    243 template< int dim >
    \n+
    244 inline void
    \n+
    245 HierarchyDofNumbering< dim >::freeDofSpace ( const DofSpace *dofSpace )
    \n+
    246 {
    \n+
    247 ALBERTA free_fe_space( dofSpace );
    \n+
    248 }
    \n+
    249
    \n+
    250
    \n+
    251
    \n+
    252 // HierarchyDofNumbering::CreateDofSpace
    \n+
    253 // -------------------------------------
    \n
    254
    \n-
    255
    \n-
    256 template< int dim, class Grid >
    \n-\n-
    \n-\n-
    259 {
    \n-
    260 typedef AlbertaGridCoordinateReader< 0, Grid > CoordReader;
    \n-
    261
    \n-
    262 assert( elementInfo_ );
    \n-
    263 const CoordReader coordReader( grid(), elementInfo_, 0 );
    \n-
    264 return Geometry( GeometryImpl( coordReader ) );
    \n-
    265 }
    \n-
    \n-
    266
    \n-
    267
    \n-
    268 template< int dim, class Grid >
    \n-
    \n-
    269 inline GeometryType AlbertaGridEntity< 0, dim, Grid>::type () const
    \n-
    270 {
    \n-
    271 return GeometryTypes::simplex( mydimension );
    \n-
    272 }
    \n-
    \n+
    255 template< int dim >
    \n+
    256 template< int codim >
    \n+
    257 struct HierarchyDofNumbering< dim >::CreateDofSpace
    \n+
    258 {
    \n+
    259 static void apply ( const MeshPointer &mesh, const DofSpace *(&dofSpace)[ dim+1 ] )
    \n+
    260 {
    \n+
    261 int ndof[ nNodeTypes ];
    \n+
    262 for( int i = 0; i < nNodeTypes; ++i )
    \n+
    263 ndof[ i ] = 0;
    \n+
    264 ndof[ CodimType< dim, codim >::value ] = 1;
    \n+
    265
    \n+
    266 std::string name = "Codimension ";
    \n+
    267 name += (char)(codim + '0');
    \n+
    268
    \n+
    269 dofSpace[ codim ] = createDofSpace( mesh, name, ndof );
    \n+
    270 assert( dofSpace[ codim ] );
    \n+
    271 }
    \n+
    272 };
    \n
    273
    \n
    274
    \n-
    275 template< int dim, class Grid >
    \n-
    276 inline typename Grid::template Codim< 0 >::Entity
    \n-
    \n-\n-
    278 {
    \n-
    279 typedef AlbertaGridEntity< 0, dim, Grid > EntityImpl;
    \n-
    280
    \n-
    281 assert( elementInfo_ );
    \n-
    282 const ElementInfo fatherInfo = elementInfo_.father();
    \n-
    283
    \n-
    284 return EntityImpl( grid(), fatherInfo, 0 );
    \n-
    285 }
    \n-
    \n-
    286
    \n-
    287
    \n-
    288 template< int dim, class Grid >
    \n-\n-
    290 {
    \n-
    291 return elementInfo_.indexInFather();
    \n-
    292 }
    \n+
    275
    \n+
    276 // HierarchyDofNumbering::CacheDofSpace
    \n+
    277 // ------------------------------------
    \n+
    278
    \n+
    279 template< int dim >
    \n+
    280 template< int codim >
    \n+
    281 struct HierarchyDofNumbering< dim >::CacheDofSpace
    \n+
    282 {
    \n+
    283 static void apply ( const DofSpace *(&dofSpace)[ dim+1 ], Cache (&cache)[ dim+1 ] )
    \n+
    284 {
    \n+
    285 assert( dofSpace[ codim ] );
    \n+
    286 const int codimtype = CodimType< dim, codim >::value;
    \n+
    287 cache[ codim ].first = dofSpace[ codim ]->mesh->node[ codimtype ];
    \n+
    288 cache[ codim ].second = dofSpace[ codim ]->admin->n0_dof[ codimtype ];
    \n+
    289 }
    \n+
    290 };
    \n+
    291
    \n+
    292 } // namespace Alberta
    \n
    293
    \n-
    294
    \n-
    295 template< int dim, class Grid >
    \n-
    296 inline typename AlbertaGridEntity< 0, dim, Grid >::LocalGeometry
    \n-
    \n-\n-
    298 {
    \n-
    299 typedef AlbertaGridLocalGeometryProvider< Grid > LocalGeoProvider;
    \n-
    300 const int indexInFather = elementInfo_.indexInFather();
    \n-
    301 const int orientation = (elementInfo_.type() == 1 ? -1 : 1);
    \n-
    302 return LocalGeometry( LocalGeoProvider::instance().geometryInFather( indexInFather, orientation ) );
    \n-
    303 }
    \n-
    \n-
    304
    \n-
    305
    \n-
    306 template< int dim, class Grid >
    \n-\n-
    \n-\n-
    309 {
    \n-
    310 assert( elementInfo_ );
    \n-
    311 typedef AlbertaGridHierarchicIterator< Grid > IteratorImp;
    \n-
    312 return IteratorImp( grid(), elementInfo_, maxlevel );
    \n-
    313 }
    \n-
    \n-
    314
    \n-
    315
    \n-
    316 template< int dim, class Grid >
    \n-\n-
    \n-\n-
    319 {
    \n-
    320 assert( elementInfo_ );
    \n-
    321 typedef AlbertaGridHierarchicIterator< Grid > IteratorImp;
    \n-
    322 return IteratorImp( grid(), level(), maxlevel );
    \n-
    323 }
    \n-
    \n-
    324
    \n-
    325
    \n-
    326 template< int dim, class Grid >
    \n-\n-
    \n-\n-
    329 {
    \n-
    330 assert( elementInfo_ );
    \n-
    331
    \n-
    332#ifndef NDEBUG
    \n-
    333 for( int i = 0; i <= dimension; ++i )
    \n-
    334 {
    \n-
    335 // std::cout << "Opposite vertex " << i << ": "
    \n-
    336 // << (int)(getElInfo()->opp_vertex[ i ]) << std::endl;
    \n-
    337 if( getElInfo()->opp_vertex[ i ] == 127 )
    \n-
    338 {
    \n-
    339 assert( false );
    \n-
    340 DUNE_THROW( NotImplemented, "AlbertaGrid: Intersections on outside "
    \n-
    341 "entities are not fully implemented, yet." );
    \n-
    342 }
    \n-
    343 }
    \n-
    344#endif // #ifndef NDEBUG
    \n-
    345
    \n-\n-
    347 return AlbertaGridLeafIntersectionIterator( *this, begin );
    \n-
    348 }
    \n-
    \n-
    349
    \n-
    350
    \n-
    351 template< int dim, class Grid >
    \n-\n-
    \n-\n-
    354 {
    \n-
    355 assert( elementInfo_ );
    \n-\n-
    357 return AlbertaGridLeafIntersectionIterator( *this, end );
    \n-
    358 }
    \n-
    \n-
    359
    \n-
    360} // namespace Dune
    \n-
    361
    \n-
    362#endif // #ifndef DUNE_ALBERTA_ENTITY_CC
    \n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n-
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n-
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n+
    294} // namespace Dune
    \n+
    295
    \n+
    296#endif // #if HAVE_ALBERTA
    \n+
    297
    \n+
    298#endif // #ifndef DUNE_ALBERTA_DOFADMIN_HH
    \n+
    \n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    ALBERTA EL Element
    Definition misc.hh:54
    \n+
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n+\n+
    Definition dofadmin.hh:36
    \n+
    static const int dimension
    Definition dofadmin.hh:42
    \n+
    DofAccess()
    Definition dofadmin.hh:47
    \n+
    static const int codimension
    Definition dofadmin.hh:43
    \n+
    static const int numSubEntities
    Definition dofadmin.hh:40
    \n+
    DofAccess(const DofSpace *dofSpace)
    Definition dofadmin.hh:51
    \n+
    int operator()(const Element *element, int subEntity, int i) const
    Definition dofadmin.hh:58
    \n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition dofadmin.hh:45
    \n+
    Definition dofadmin.hh:93
    \n+
    HierarchyDofNumbering()
    Definition dofadmin.hh:114
    \n+
    int operator()(const Element *element, int codim, unsigned int subEntity) const
    Definition dofadmin.hh:127
    \n+
    const MeshPointer & mesh() const
    Definition dofadmin.hh:158
    \n+
    void create(const MeshPointer &mesh)
    Definition dofadmin.hh:199
    \n+
    ~HierarchyDofNumbering()
    Definition dofadmin.hh:122
    \n+
    Alberta::MeshPointer< dimension > MeshPointer
    Definition dofadmin.hh:99
    \n+
    int size(int codim) const
    Definition dofadmin.hh:163
    \n+
    const DofSpace * dofSpace(int codim) const
    Definition dofadmin.hh:145
    \n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition dofadmin.hh:100
    \n+
    static const int dimension
    Definition dofadmin.hh:97
    \n+
    const DofSpace * emptyDofSpace() const
    Definition dofadmin.hh:152
    \n+
    void release()
    Definition dofadmin.hh:170
    \n \n-
    int level() const
    Definition elementinfo.hh:533
    \n-
    bool mightVanish() const
    Definition elementinfo.hh:526
    \n-
    ElementInfo father() const
    Definition elementinfo.hh:449
    \n-
    int type() const
    Definition elementinfo.hh:540
    \n-
    bool isBoundary(int face) const
    Definition elementinfo.hh:620
    \n-
    int indexInFather() const
    Definition elementinfo.hh:457
    \n-
    ALBERTA EL_INFO & elInfo() const
    Definition elementinfo.hh:744
    \n-
    Definition hierarchiciterator.hh:29
    \n-
    Definition albertagrid/intersectioniterator.hh:27
    \n-
    Definition albertagrid/entity.hh:46
    \n-
    void clearElement()
    Definition entity.cc:70
    \n-
    ALBERTA EL_INFO * getElInfo() const
    needed for the LevelIterator and LeafIterator
    Definition entity.cc:62
    \n-
    int level() const
    level of this element
    Definition entity.cc:94
    \n-
    void setElement(const ElementInfo &elementInfo, int subEntity)
    Definition entity.cc:78
    \n-
    PartitionType partitionType() const
    return partition type of this entity
    Definition entity.cc:40
    \n-
    Grid::template Codim< codim >::Geometry Geometry
    Definition albertagrid/entity.hh:69
    \n-
    void setEntity(const This &other)
    Definition entity.cc:87
    \n-
    const ElementInfo & elementInfo() const
    Definition albertagrid/entity.hh:130
    \n-
    Geometry geometry() const
    geometry of this entity
    Definition entity.cc:103
    \n-
    static const int dimension
    Definition albertagrid/entity.hh:57
    \n-
    const Grid & grid() const
    obtain a reference to the grid
    Definition albertagrid/entity.hh:142
    \n-
    int subEntity() const
    obtain number of the subentity within the element (in ALBERTA numbering)
    Definition albertagrid/entity.hh:148
    \n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition albertagrid/entity.hh:71
    \n-
    GeometryType type() const
    type of geometry of this entity
    Definition entity.cc:114
    \n-
    bool equals(const This &other) const
    equality of entities
    Definition entity.cc:48
    \n-
    Definition albertagrid/entity.hh:63
    \n-
    Definition albertagrid/entity.hh:185
    \n-
    Grid::Traits::template Codim< 0 >::GeometryImpl GeometryImpl
    Definition albertagrid/entity.hh:211
    \n-
    const ElementInfo & elementInfo() const
    Definition albertagrid/entity.hh:355
    \n-
    Grid::template Codim< 0 >::LocalGeometry LocalGeometry
    Definition albertagrid/entity.hh:210
    \n-
    Definition albertagrid/geometry.hh:30
    \n-
    Definition albertagrid/geometry.hh:504
    \n-
    Definition albertagrid/intersectioniterator.hh:35
    \n-
    Definition albertagrid/intersectioniterator.hh:36
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    Element * el() const
    Definition elementinfo.hh:737
    \n+
    Definition misc.hh:148
    \n+
    Definition misc.hh:192
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,505 +1,403 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-entity.cc\n+dofadmin.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_ENTITY_CC\n-_\b6#define DUNE_ALBERTA_ENTITY_CC\n+5#ifndef DUNE_ALBERTA_DOFADMIN_HH\n+6#define DUNE_ALBERTA_DOFADMIN_HH\n 7\n-8namespace _\bD_\bu_\bn_\be\n-9{\n-10\n-11 // AlbertaGridEntity (for codim > 0)\n-12 // ---------------------------------\n-13\n-14 template\n-15 inline AlbertaGridEntity< codim, dim, Grid >\n-_\b1_\b6 ::AlbertaGridEntity ( const _\bG_\br_\bi_\bd &grid, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int\n-subEntity )\n-17 : grid_( &grid ),\n-18 elementInfo_( elementInfo ),\n-19 subEntity_( subEntity )\n-20 {}\n-21\n-22 template\n-23 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b2_\b4_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ( const _\bG_\br_\bi_\bd &grid )\n-25 : grid_( &grid ),\n-26 elementInfo_(),\n-27 subEntity_( -1 )\n-28 {}\n+8#include \n+9\n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+14\n+15#if HAVE_ALBERTA\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 namespace Alberta\n+21 {\n+22\n+23 // External Forward Declarations\n+24 // -----------------------------\n+25\n+26 template< int dim >\n+27 class MeshPointer;\n+28\n 29\n-30 template\n-31 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b3_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ()\n-33 : grid_( _\bN_\bU_\bL_\bL ),\n-34 elementInfo_(),\n-35 subEntity_( -1 )\n-36 {}\n-37\n-38 template< int codim, int dim, class Grid >\n-39 inline _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-_\b4_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n-41 {\n-42 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-43 }\n+30\n+31 // DofAccess\n+32 // ---------\n+33\n+34 template< int dim, int codim >\n+_\b3_\b5 class _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n+36 {\n+37 static const int codimtype = _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+38\n+39 public:\n+_\b4_\b0 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+41\n+_\b4_\b2 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b4_\b3 static const int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n 44\n-45\n-46 template< int codim, int dim, class Grid >\n-47 inline bool\n-_\b4_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &_\bo_\bt_\bh_\be_\br ) const\n-49 {\n-50 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\b1 = elementInfo().el();\n-51 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\b2 = _\bo_\bt_\bh_\be_\br.elementInfo().el();\n-52\n-53 // if both element null then they are equal\n-54 if( (_\be_\b1 == _\bN_\bU_\bL_\bL) && (_\be_\b2 == _\bN_\bU_\bL_\bL) )\n-55 return true;\n-56 return ((_\be_\b1 == _\be_\b2) && (subEntity_ == _\bo_\bt_\bh_\be_\br.subEntity_));\n-57 }\n-58\n-59\n-60 template< int codim, int dim, class Grid >\n-61 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO *\n-_\b6_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo () const\n-63 {\n-64 return &(elementInfo_.elInfo());\n-65 }\n-66\n-67\n-68 template< int codim, int dim, class Grid >\n-69 inline void\n-_\b7_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\bl_\be_\ba_\br_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-71 {\n-72 elementInfo_ = _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n-73 }\n-74\n+_\b4_\b5 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+46\n+_\b4_\b7 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs ()\n+48 : node_( -1 )\n+49 {}\n+50\n+_\b5_\b1 explicit _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace )\n+52 {\n+53 assert( dofSpace );\n+54 node_ = dofSpace->admin->mesh->node[ codimtype ];\n+55 index_ = dofSpace->admin->n0_dof[ codimtype ];\n+56 }\n+57\n+_\b5_\b8 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity, int i ) const\n+59 {\n+60 assert( element );\n+61 assert( node_ != -1 );\n+62 assert( subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs );\n+63 return element->dof[ node_ + subEntity ][ index_ + i ];\n+64 }\n+65\n+_\b6_\b6 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity ) const\n+67 {\n+68 return (*this)( element, subEntity, 0 );\n+69 }\n+70\n+_\b7_\b1 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity, int i )\n+const\n+72 {\n+73 return (*this)( elementInfo._\be_\bl(), subEntity, i );\n+74 }\n 75\n-76 template< int codim, int dim, class Grid >\n-77 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b7_\b8_\b _\b:_\b:_\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity )\n-79 {\n-80 elementInfo_ = elementInfo;\n-81 subEntity_ = subEntity;\n-82 }\n-83\n-84\n-85 template< int codim, int dim, class Grid >\n-86 inline void\n-_\b8_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bs_\be_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const _\bT_\bh_\bi_\bs &_\bo_\bt_\bh_\be_\br )\n-88 {\n-89 setElement( _\bo_\bt_\bh_\be_\br.elementInfo_, _\bo_\bt_\bh_\be_\br.subEntity_ );\n-90 }\n-91\n-92\n-93 template< int codim, int dim, class Grid >\n-_\b9_\b4 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl() const\n-95 {\n-96 _\ba_\bs_\bs_\be_\br_\bt( elementInfo_.level() == grid().levelProvider() ( elementInfo_ ) );\n-97 return elementInfo_.level();\n-98 }\n-99\n-100\n-101 template< int codim, int dim, class Grid >\n-102 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-_\b1_\b0_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-104 {\n-105 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b> _\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br;\n-106\n-107 _\ba_\bs_\bs_\be_\br_\bt( elementInfo_ );\n-108 const _\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br _\bc_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br( grid(), elementInfo_, subEntity_ );\n-109 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( GeometryImpl( _\bc_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ) );\n-110 }\n-111\n+_\b7_\b6 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity ) const\n+77 {\n+78 return (*this)( elementInfo._\be_\bl(), subEntity );\n+79 }\n+80\n+81 private:\n+82 int node_;\n+83 int index_;\n+84 };\n+85\n+86\n+87\n+88 // HierarchyDofNumbering\n+89 // ---------------------\n+90\n+91 template< int dim >\n+_\b9_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+93 {\n+94 typedef _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+95\n+96 public:\n+_\b9_\b7 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+98\n+_\b9_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+_\b1_\b0_\b0 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+101\n+102 private:\n+103 static const int nNodeTypes = N_NODE_TYPES;\n+104\n+105 template< int codim >\n+106 struct CreateDofSpace;\n+107\n+108 template< int codim >\n+109 struct CacheDofSpace;\n+110\n+111 typedef std::pair< int, int > Cache;\n 112\n-113 template< int codim, int dim, class Grid >\n-_\b1_\b1_\b4 inline GeometryType _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n-115 {\n-116 return GeometryTypes::simplex( mydimension );\n-117 }\n-118\n-119\n+113 public:\n+_\b1_\b1_\b4 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg ()\n+115 {}\n+116\n+117 private:\n+118 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg ( const This & );\n+119 This &operator= ( const This & );\n 120\n-121 // AlbertaGridEntity (for codim = 0)\n-122 // ---------------------------------\n-123\n-124 template< int dim, class Grid >\n-125 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b1_\b2_\b6_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ( const _\bG_\br_\bi_\bd &grid, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int\n-subEntity )\n-127 : grid_( &grid ),\n-128 elementInfo_( elementInfo )\n-129 {\n-130 assert( _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by == 0 );\n-131 }\n-132\n-133 template< int dim, class Grid >\n-134 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b1_\b3_\b5_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by( const _\bG_\br_\bi_\bd &grid )\n-136 : grid_( &grid ),\n-137 elementInfo_()\n-138 {}\n+121 public:\n+_\b1_\b2_\b2 _\b~_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg ()\n+123 {\n+124 _\br_\be_\bl_\be_\ba_\bs_\be();\n+125 }\n+126\n+_\b1_\b2_\b7 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int codim, unsigned int subEntity\n+) const\n+128 {\n+129 assert( !(*this) == false );\n+130 assert( (codim >= 0) && (codim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) );\n+131 const Cache &cache = cache_[ codim ];\n+132 return element->dof[ cache.first + subEntity ][ cache.second ];\n+133 }\n+134\n+_\b1_\b3_\b5 int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &element, int codim, unsigned int\n+subEntity ) const\n+136 {\n+137 return (*this)( element._\be_\bl(), codim, subEntity );\n+138 }\n 139\n-140 template< int dim, class Grid >\n-141 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b1_\b4_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by ()\n-143 : grid_( NULL ),\n-144 elementInfo_()\n-145 {}\n-146\n-147\n-148 template< int dim, class Grid >\n-_\b1_\b4_\b9 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd() const\n-150 {\n-151 // elements are always inside of our Domain\n-152 return 0;\n-153 }\n-154\n-155\n-156 template< int dim, class Grid >\n-_\b1_\b5_\b7 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bs_\bN_\be_\bw () const\n-158 {\n-159 return _\bg_\br_\bi_\bd().levelProvider().isNew( elementInfo_ );\n-160 }\n-161\n+_\b1_\b4_\b0 explicit operator bool () const\n+141 {\n+142 return (bool)mesh_;\n+143 }\n+144\n+_\b1_\b4_\b5 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be ( int codim ) const\n+146 {\n+147 assert( *this );\n+148 assert( (codim >= 0) && (codim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) );\n+149 return dofSpace_[ codim ];\n+150 }\n+151\n+_\b1_\b5_\b2 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\be_\bm_\bp_\bt_\by_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be () const\n+153 {\n+154 assert( *this );\n+155 return emptySpace_;\n+156 }\n+157\n+_\b1_\b5_\b8 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh () const\n+159 {\n+160 return mesh_;\n+161 }\n 162\n-163 template< int dim, class Grid >\n-_\b1_\b6_\b4 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const\n-165 {\n-166 return elementInfo_._\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh();\n-167 }\n-168\n+_\b1_\b6_\b3 int _\bs_\bi_\bz_\be ( int codim ) const\n+164 {\n+165 return _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be( codim )->admin->size;\n+166 }\n+167\n+_\b1_\b6_\b8 void _\bc_\br_\be_\ba_\bt_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh );\n 169\n-170 template< int dim, class Grid >\n-171 inline bool\n-_\b1_\b7_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs () const\n+_\b1_\b7_\b0 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n+171 {\n+172 if( *this )\n 173 {\n-174 assert( elementInfo_ );\n-175 bool isBoundary = false;\n-176 for( int i = 0; i < dim+1; ++i )\n-177 isBoundary |= elementInfo_._\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by( i );\n-178 return isBoundary;\n+174 for( int codim = 0; codim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++codim )\n+175 freeDofSpace( dofSpace_[ codim ] );\n+176 freeDofSpace( emptySpace_ );\n+177 mesh_ = _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br();\n+178 }\n 179 }\n 180\n-181\n-182 template< int dim, class Grid >\n-183 inline _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-_\b1_\b8_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n-185 {\n-186 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-187 }\n+181 private:\n+182 static const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *createEmptyDofSpace ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh );\n+183 static const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *createDofSpace ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh,\n+184 const std::string &name,\n+185 const int (&ndof)[ nNodeTypes ],\n+186 const bool periodic = false );\n+187 static void freeDofSpace ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be );\n 188\n-189\n-190 template< int dim, class Grid >\n-_\b1_\b9_\b1 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf () const\n-192 {\n-193 return elementInfo_.isLeaf();\n-194 }\n+189 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br mesh_;\n+190 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *emptySpace_;\n+191 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace_[ _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn+1 ];\n+192 Cache cache_[ _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn+1 ];\n+193 };\n+194\n 195\n 196\n-197 template< int dim, class Grid >\n-198 inline bool\n-_\b1_\b9_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &other ) const\n+197 template< int dim >\n+198 inline void\n+_\b1_\b9_\b9 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh )\n 200 {\n-201 // element pointers are unique\n-202 return (_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo().el() == other._\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo().el());\n-203 }\n-204\n+201 release();\n+202\n+203 if( !mesh )\n+204 return;\n 205\n-206 template< int dim, class Grid >\n-207 template< int codim >\n-208 inline typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< codim >::Entity\n-_\b2_\b0_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by ( int i ) const\n-210 {\n-211 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b> EntityImpl;\n-212 return EntityImpl( _\bg_\br_\bi_\bd(), elementInfo_, _\bg_\br_\bi_\bd().generic2alberta( codim, i )\n-);\n-213 }\n-214\n+206 mesh_ = mesh;\n+207\n+208 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i )\n+{ CreateDofSpace< i >::apply( mesh_, dofSpace_ ); } );\n+209 Hybrid::forEach( std::make_index_sequence< dimension+1 >{}, [ & ]( auto i )\n+{ CacheDofSpace< i >::apply( dofSpace_, cache_ ); } );\n+210\n+211 emptySpace_ = createEmptyDofSpace( mesh_ );\n+212 for( int i = 0; i < nNodeTypes; ++i )\n+213 assert( emptySpace_->admin->n_dof[ i ] == 0 );\n+214 }\n 215\n-216 template< int dim, class Grid >\n-217 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO *\n-_\b2_\b1_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo () const\n-219 {\n-220 return &(elementInfo_._\be_\bl_\bI_\bn_\bf_\bo());\n-221 }\n-222\n-223\n-224 template< int dim, class Grid >\n-_\b2_\b2_\b5 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl () const\n-226 {\n-227 assert( elementInfo_._\bl_\be_\bv_\be_\bl() == _\bg_\br_\bi_\bd().levelProvider() ( elementInfo_ ) );\n-228 return elementInfo_._\bl_\be_\bv_\be_\bl();\n-229 }\n-230\n-231\n-232 template< int dim, class Grid >\n-233 inline void\n-_\b2_\b3_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\bl_\be_\ba_\br_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-235 {\n-236 elementInfo_ = _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n-237 }\n-238\n-239\n-240 template< int dim, class Grid >\n-241 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b2_\b4_\b2_\b _\b:_\b:_\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int /* subEntity */ )\n-243 {\n-244 elementInfo_ = elementInfo;\n-245 }\n-246\n-247\n-248 template< int dim, class Grid >\n-249 inline void\n-_\b2_\b5_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bs_\be_\bt_\bE_\bn_\bt_\bi_\bt_\by( const _\bT_\bh_\bi_\bs &other )\n-251 {\n-252 _\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt( other.elementInfo_, 0 );\n-253 }\n+216\n+217\n+218 template< int dim >\n+219 inline const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *\n+220 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bE_\bm_\bp_\bt_\by_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh\n+)\n+221 {\n+222 int ndof[ nNodeTypes ];\n+223 for( int i = 0; i < nNodeTypes; ++i )\n+224 ndof[ i ] = 0;\n+225 std::string name = \"Empty\";\n+226 return createDofSpace( mesh, name, ndof );\n+227 }\n+228\n+229\n+230 template< int dim >\n+231 inline const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *\n+232 HierarchyDofNumbering< dim >::createDofSpace ( const MeshPointer &mesh,\n+233 const std::string &name,\n+234 const int (&ndof)[ nNodeTypes ],\n+235 const bool periodic )\n+236 {\n+237 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA FLAGS flags\n+238 = ADM_PRESERVE_COARSE_DOFS | (periodic ? ADM_PERIODIC : 0);\n+239 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_space ( mesh, name.c_str(), ndof, flags );\n+240 }\n+241\n+242\n+243 template< int dim >\n+244 inline void\n+245 HierarchyDofNumbering< dim >::freeDofSpace ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace )\n+246 {\n+247 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_fe_space( dofSpace );\n+248 }\n+249\n+250\n+251\n+252 // HierarchyDofNumbering::CreateDofSpace\n+253 // -------------------------------------\n 254\n-255\n-256 template< int dim, class Grid >\n-257 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-_\b2_\b5_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-259 {\n-260 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\b0_\b,_\b _\bG_\br_\bi_\bd_\b _\b> CoordReader;\n-261\n-262 assert( elementInfo_ );\n-263 const CoordReader coordReader( _\bg_\br_\bi_\bd(), elementInfo_, 0 );\n-264 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl( coordReader ) );\n-265 }\n-266\n-267\n-268 template< int dim, class Grid >\n-_\b2_\b6_\b9 inline GeometryType _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b>_\b:_\b:_\bt_\by_\bp_\be () const\n-270 {\n-271 return GeometryTypes::simplex( mydimension );\n-272 }\n+255 template< int dim >\n+256 template< int codim >\n+257 struct HierarchyDofNumbering< dim >::CreateDofSpace\n+258 {\n+259 static void apply ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh, const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *(&_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be)\n+[ dim+1 ] )\n+260 {\n+261 int ndof[ nNodeTypes ];\n+262 for( int i = 0; i < nNodeTypes; ++i )\n+263 ndof[ i ] = 0;\n+264 ndof[ CodimType< dim, codim >::value ] = 1;\n+265\n+266 std::string name = \"Codimension \";\n+267 name += (char)(codim + '0');\n+268\n+269 _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ] = createDofSpace( _\bm_\be_\bs_\bh, name, ndof );\n+270 assert( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ] );\n+271 }\n+272 };\n 273\n 274\n-275 template< int dim, class Grid >\n-276 inline typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity\n-_\b2_\b7_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br () const\n-278 {\n-279 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b> EntityImpl;\n-280\n-281 assert( elementInfo_ );\n-282 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo fatherInfo = elementInfo_._\bf_\ba_\bt_\bh_\be_\br();\n-283\n-284 return EntityImpl( _\bg_\br_\bi_\bd(), fatherInfo, 0 );\n-285 }\n-286\n-287\n-288 template< int dim, class Grid >\n-289 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bn_\bC_\bh_\bi_\bl_\bd () const\n-290 {\n-291 return elementInfo_._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br();\n-292 }\n+275\n+276 // HierarchyDofNumbering::CacheDofSpace\n+277 // ------------------------------------\n+278\n+279 template< int dim >\n+280 template< int codim >\n+281 struct HierarchyDofNumbering< dim >::CacheDofSpace\n+282 {\n+283 static void apply ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *(&_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be)[ dim+1 ], Cache (&cache)\n+[ dim+1 ] )\n+284 {\n+285 assert( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ] );\n+286 const int codimtype = CodimType< dim, codim >::value;\n+287 cache[ codim ].first = _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ]->mesh->node[ codimtype ];\n+288 cache[ codim ].second = _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be[ codim ]->admin->n0_dof[ codimtype ];\n+289 }\n+290 };\n+291\n+292 } // namespace Alberta\n 293\n-294\n-295 template< int dim, class Grid >\n-296 inline typename AlbertaGridEntity< 0, dim, Grid >::LocalGeometry\n-_\b2_\b9_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br() const\n-298 {\n-299 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> LocalGeoProvider;\n-300 const int indexInFather = elementInfo_._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br();\n-301 const int orientation = (elementInfo_._\bt_\by_\bp_\be() == 1 ? -1 : 1);\n-302 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( LocalGeoProvider::instance().geometryInFather\n-( indexInFather, orientation ) );\n-303 }\n-304\n-305\n-306 template< int dim, class Grid >\n-307 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b0_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\bb_\be_\bg_\bi_\bn( int maxlevel ) const\n-309 {\n-310 assert( elementInfo_ );\n-311 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> IteratorImp;\n-312 return IteratorImp( _\bg_\br_\bi_\bd(), elementInfo_, maxlevel );\n-313 }\n-314\n-315\n-316 template< int dim, class Grid >\n-317 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b1_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b>_\b:_\b:_\bh_\be_\bn_\bd( int maxlevel ) const\n-319 {\n-320 assert( elementInfo_ );\n-321 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> IteratorImp;\n-322 return IteratorImp( grid(), level(), maxlevel );\n-323 }\n-324\n-325\n-326 template< int dim, class Grid >\n-327 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b2_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn() const\n-329 {\n-330 assert( elementInfo_ );\n-331\n-332#ifndef NDEBUG\n-333 for( int i = 0; i <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-334 {\n-335 // std::cout << \"Opposite vertex \" << i << \": \"\n-336 // << (int)(getElInfo()->opp_vertex[ i ]) << std::endl;\n-337 if( _\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo()->opp_vertex[ i ] == 127 )\n-338 {\n-339 assert( false );\n-340 DUNE_THROW( NotImplemented, \"AlbertaGrid: Intersections on outside \"\n-341 \"entities are not fully implemented, yet.\" );\n-342 }\n-343 }\n-344#endif // #ifndef NDEBUG\n-345\n-346 typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\be_\bg_\bi_\bn begin;\n-347 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, begin );\n-348 }\n-349\n-350\n-351 template< int dim, class Grid >\n-352 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b5_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\be_\bn_\bd() const\n-354 {\n-355 assert( elementInfo_ );\n-356 typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bd end;\n-357 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( *this, end );\n-358 }\n-359\n-360} // namespace Dune\n-361\n-362#endif // #ifndef DUNE_ALBERTA_ENTITY_CC\n+294} // namespace Dune\n+295\n+296#endif // #if HAVE_ALBERTA\n+297\n+298#endif // #ifndef DUNE_ALBERTA_DOFADMIN_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType\n-Attributes used in the generic overlap model.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ InteriorEntity\n-all interior entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n ALBERTA EL Element\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:533\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh\n-bool mightVanish() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:526\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n-ElementInfo father() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:449\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n-int type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:540\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool isBoundary(int face) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:620\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n-int indexInFather() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:457\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo\n-ALBERTA EL_INFO & elInfo() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:744\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bl_\be_\ba_\br_\bE_\bl_\be_\bm_\be_\bn_\bt\n-void clearElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bI_\bn_\bf_\bo\n-ALBERTA EL_INFO * getElInfo() const\n-needed for the LevelIterator and LeafIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-level of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n-void setElement(const ElementInfo &elementInfo, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-return partition type of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Grid::template Codim< codim >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-void setEntity(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-const ElementInfo & elementInfo() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-geometry of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+ALBERTA FE_SPACE DofSpace\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\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 albertagrid/entity.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd\n-const Grid & grid() const\n-obtain a reference to the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n-int subEntity() const\n-obtain number of the subentity within the element (in ALBERTA numbering)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n+DofAccess()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+static const int numSubEntities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs\n+DofAccess(const DofSpace *dofSpace)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+int operator()(const Element *element, int subEntity, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dimension > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+HierarchyDofNumbering()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+int operator()(const Element *element, int codim, unsigned int subEntity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bm_\be_\bs_\bh\n+const MeshPointer & mesh() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create(const MeshPointer &mesh)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\b~_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+~HierarchyDofNumbering()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+Alberta::MeshPointer< dimension > MeshPointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * dofSpace(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-type of geometry of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const This &other) const\n-equality of entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entity.cc:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl\n-Grid::Traits::template Codim< 0 >::GeometryImpl GeometryImpl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-const ElementInfo & elementInfo() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:355\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Grid::template Codim< 0 >::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bR_\be_\ba_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:504\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\be_\bg_\bi_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\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 dofadmin.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\be_\bm_\bp_\bt_\by_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * emptyDofSpace() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:152\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n+Element * el() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:192\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00668.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00668.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: undefine-3.0.hh File Reference\n+dune-grid: geometrycache.hh File Reference\n \n \n \n \n \n \n \n@@ -69,25 +69,40 @@\n \n \n
    \n
    \n-
    undefine-3.0.hh File Reference
    \n+ \n+
    geometrycache.hh File Reference
    \n
    \n
    \n-\n-

    Contains #undefs for all preprocessor macros defined by alberta. \n-More...

    \n-\n+\n

    Go to the source code of this file.

    \n-

    Detailed Description

    \n-

    Contains #undefs for all preprocessor macros defined by alberta.

    \n-

    This file is created automatically by the perl script undefAllMacros.pl.

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

    \n+Classes

    class  Dune::Alberta::GeometryCache< dim >
     
    struct  Dune::Alberta::GeometryCacheProxy< dim >
     
    \n+\n+\n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,25 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-undefine-3.0.hh File Reference\n-Contains #undefs for all preprocessor macros defined by alberta. _\bM_\bo_\br_\be_\b._\b._\b.\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+geometrycache.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\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-Contains #undefs for all preprocessor macros defined by alberta.\n-This file is created automatically by the perl script undefAllMacros.pl.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\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 Include standard header files.\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00668_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00668_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: undefine-3.0.hh Source File\n+dune-grid: geometrycache.hh Source File\n \n \n \n \n \n \n \n@@ -74,900 +74,187 @@\n \n \n
    \n
    \n-
    undefine-3.0.hh
    \n+
    geometrycache.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    12#ifdef _ALBERTA_H_
    \n-
    13 #undef _ALBERTA_H_
    \n-
    14#endif // _ALBERTA_H_
    \n+
    5#ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH
    \n+
    6#define DUNE_ALBERTA_GEOMETRYCACHE_HH
    \n+
    7
    \n+\n+\n+
    10
    \n+
    11#if HAVE_ALBERTA
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-
    16#ifdef ALBERTA_MAGIC
    \n-
    17 #undef ALBERTA_MAGIC
    \n-
    18#endif // ALBERTA_MAGIC
    \n-
    19
    \n-
    20#ifdef ALBERTA_VERSION
    \n-
    21 #undef ALBERTA_VERSION
    \n-
    22#endif // ALBERTA_VERSION
    \n-
    23
    \n-
    24#ifdef DIM_LIMIT
    \n-
    25 #undef DIM_LIMIT
    \n-
    26#endif // DIM_LIMIT
    \n-
    27
    \n-
    28#ifdef DIM_MAX
    \n-
    29 #undef DIM_MAX
    \n-
    30#endif // DIM_MAX
    \n-
    31
    \n-
    32#ifdef N_VERTICES
    \n-
    33 #undef N_VERTICES
    \n-
    34#endif // N_VERTICES
    \n-
    35
    \n-
    36#ifdef N_EDGES
    \n-
    37 #undef N_EDGES
    \n-
    38#endif // N_EDGES
    \n-
    39
    \n-
    40#ifdef N_WALLS
    \n-
    41 #undef N_WALLS
    \n-
    42#endif // N_WALLS
    \n-
    43
    \n-
    44#ifdef N_FACES
    \n-
    45 #undef N_FACES
    \n-
    46#endif // N_FACES
    \n+
    16 namespace Alberta
    \n+
    17 {
    \n+
    18
    \n+
    19 // GeometryCache
    \n+
    20 // -------------
    \n+
    21
    \n+
    22 template< int dim >
    \n+
    \n+\n+
    24 {
    \n+
    25 static const unsigned int flagIntegrationElement = (1 << 0);
    \n+
    26 static const unsigned int flagJacobianTransposed = (1 << 1);
    \n+
    27 static const unsigned int flagJacobianInverseTransposed = (1 << 2);
    \n+
    28
    \n+
    29 public:
    \n+
    30 typedef FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed;
    \n+
    31 typedef FieldMatrix< Real, dim, dimWorld > JacobianTransposed;
    \n+
    32
    \n+
    \n+\n+
    34 : flags_( 0 )
    \n+
    35 {}
    \n+
    \n+
    36
    \n+
    \n+
    37 const Real &integrationElement ( const ALBERTA EL_INFO &elInfo )
    \n+
    38 {
    \n+
    39 if( (flags_ & flagIntegrationElement) == 0 )
    \n+
    40 {
    \n+
    41 integrationElement_ = std::abs( determinant( jacobianTransposed( elInfo ) ) );
    \n+
    42 assert( integrationElement_ > 1e-14 );
    \n+
    43 flags_ |= flagIntegrationElement;
    \n+
    44 }
    \n+
    45 return integrationElement_;
    \n+
    46 }
    \n+
    \n
    47
    \n-
    48#ifdef N_NEIGH
    \n-
    49 #undef N_NEIGH
    \n-
    50#endif // N_NEIGH
    \n-
    51
    \n-
    52#ifdef N_LAMBDA
    \n-
    53 #undef N_LAMBDA
    \n-
    54#endif // N_LAMBDA
    \n-
    55
    \n-
    56#ifdef DIM_FAC
    \n-
    57 #undef DIM_FAC
    \n-
    58#endif // DIM_FAC
    \n-
    59
    \n-
    60#ifdef VERTEX_OF_EDGE
    \n-
    61 #undef VERTEX_OF_EDGE
    \n-
    62#endif // VERTEX_OF_EDGE
    \n-
    63
    \n-
    64#ifdef VERTEX_OF_WALL
    \n-
    65 #undef VERTEX_OF_WALL
    \n-
    66#endif // VERTEX_OF_WALL
    \n-
    67
    \n-
    68#ifdef N_VERTICES_0D
    \n-
    69 #undef N_VERTICES_0D
    \n-
    70#endif // N_VERTICES_0D
    \n-
    71
    \n-
    72#ifdef N_EDGES_0D
    \n-
    73 #undef N_EDGES_0D
    \n-
    74#endif // N_EDGES_0D
    \n-
    75
    \n-
    76#ifdef N_FACES_0D
    \n-
    77 #undef N_FACES_0D
    \n-
    78#endif // N_FACES_0D
    \n-
    79
    \n-
    80#ifdef N_NEIGH_0D
    \n-
    81 #undef N_NEIGH_0D
    \n-
    82#endif // N_NEIGH_0D
    \n+
    \n+
    48 const JacobianTransposed &jacobianTransposed ( const ALBERTA EL_INFO &elInfo )
    \n+
    49 {
    \n+
    50 if( (flags_ & flagJacobianTransposed) == 0 )
    \n+
    51 {
    \n+
    52 assert( (elInfo.fill_flag & FillFlags< dim >::coords) != 0 );
    \n+
    53 const GlobalVector &x = elInfo.coord[ 0 ];
    \n+
    54 for( int i = 0; i < dim; ++i )
    \n+
    55 {
    \n+
    56 const GlobalVector &y = elInfo.coord[ i+1 ];
    \n+
    57 for( int j = 0; j < dimWorld; ++j )
    \n+
    58 jacobianTransposed_[ i ][ j ] = y[ j ] - x[ j ];
    \n+
    59 }
    \n+
    60 flags_ |= flagJacobianTransposed;
    \n+
    61 }
    \n+
    62 return jacobianTransposed_;
    \n+
    63 }
    \n+
    \n+
    64
    \n+\n+
    \n+
    66 jacobianInverseTransposed ( const ALBERTA EL_INFO &elInfo )
    \n+
    67 {
    \n+
    68 if( (flags_ & flagJacobianInverseTransposed) == 0 )
    \n+
    69 {
    \n+
    70 integrationElement_ = std::abs( invert( jacobianTransposed( elInfo ), jacobianInverseTransposed_ ) );
    \n+
    71 assert( integrationElement_ > 1e-14 );
    \n+
    72 flags_ |= flagIntegrationElement | flagJacobianInverseTransposed;
    \n+
    73 }
    \n+
    74 return jacobianInverseTransposed_;
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    77 private:
    \n+
    78 unsigned int flags_;
    \n+
    79 Real integrationElement_;
    \n+
    80 FieldMatrix< Real, dim, dimWorld > jacobianTransposed_;
    \n+
    81 FieldMatrix< Real, dimWorld, dim > jacobianInverseTransposed_;
    \n+
    82 };
    \n+
    \n
    83
    \n-
    84#ifdef N_WALLS_0D
    \n-
    85 #undef N_WALLS_0D
    \n-
    86#endif // N_WALLS_0D
    \n-
    87
    \n-
    88#ifdef N_LAMBDA_0D
    \n-
    89 #undef N_LAMBDA_0D
    \n-
    90#endif // N_LAMBDA_0D
    \n-
    91
    \n-
    92#ifdef DIM_FAC_0D
    \n-
    93 #undef DIM_FAC_0D
    \n-
    94#endif // DIM_FAC_0D
    \n-
    95
    \n-
    96#ifdef VERTEX_OF_EDGE_0D
    \n-
    97 #undef VERTEX_OF_EDGE_0D
    \n-
    98#endif // VERTEX_OF_EDGE_0D
    \n+
    84
    \n+
    85
    \n+
    86 // GeometryCacheProxy
    \n+
    87 // ------------------
    \n+
    88
    \n+
    89 template< int dim >
    \n+
    \n+\n+
    91 {
    \n+
    92 typedef FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed;
    \n+
    93 typedef FieldMatrix< Real, dim, dimWorld > JacobianTransposed;
    \n+
    94
    \n+
    \n+
    95 GeometryCacheProxy ( GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO &elInfo )
    \n+
    96 : geometryCache_( geometryCache ),
    \n+
    97 elInfo_( elInfo )
    \n+
    98 {}
    \n+
    \n
    99
    \n-
    100#ifdef VERTEX_OF_WALL_0D
    \n-
    101 #undef VERTEX_OF_WALL_0D
    \n-
    102#endif // VERTEX_OF_WALL_0D
    \n-
    103
    \n-
    104#ifdef N_VERTICES_1D
    \n-
    105 #undef N_VERTICES_1D
    \n-
    106#endif // N_VERTICES_1D
    \n-
    107
    \n-
    108#ifdef N_EDGES_1D
    \n-
    109 #undef N_EDGES_1D
    \n-
    110#endif // N_EDGES_1D
    \n-
    111
    \n-
    112#ifdef N_FACES_1D
    \n-
    113 #undef N_FACES_1D
    \n-
    114#endif // N_FACES_1D
    \n-
    115
    \n-
    116#ifdef N_NEIGH_1D
    \n-
    117 #undef N_NEIGH_1D
    \n-
    118#endif // N_NEIGH_1D
    \n+
    \n+\n+
    101 {
    \n+
    102 return geometryCache_.integrationElement( elInfo_ );
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    \n+\n+
    106 {
    \n+
    107 return geometryCache_.jacobianTransposed( elInfo_ );
    \n+
    108 }
    \n+
    \n+
    109
    \n+
    \n+\n+
    111 {
    \n+
    112 return geometryCache_.jacobianInverseTransposed( elInfo_ );
    \n+
    113 }
    \n+
    \n+
    114
    \n+
    115 private:
    \n+
    116 GeometryCache< dim > &geometryCache_;
    \n+
    117 const ALBERTA EL_INFO &elInfo_;
    \n+
    118 };
    \n+
    \n
    119
    \n-
    120#ifdef N_WALLS_1D
    \n-
    121 #undef N_WALLS_1D
    \n-
    122#endif // N_WALLS_1D
    \n+
    120 } // namespace Alberta
    \n+
    121
    \n+
    122} // namespace Dune
    \n
    123
    \n-
    124#ifdef N_LAMBDA_1D
    \n-
    125 #undef N_LAMBDA_1D
    \n-
    126#endif // N_LAMBDA_1D
    \n-
    127
    \n-
    128#ifdef DIM_FAC_1D
    \n-
    129 #undef DIM_FAC_1D
    \n-
    130#endif // DIM_FAC_1D
    \n-
    131
    \n-
    132#ifdef VERTEX_OF_EDGE_1D
    \n-
    133 #undef VERTEX_OF_EDGE_1D
    \n-
    134#endif // VERTEX_OF_EDGE_1D
    \n-
    135
    \n-
    136#ifdef VERTEX_OF_WALL_1D
    \n-
    137 #undef VERTEX_OF_WALL_1D
    \n-
    138#endif // VERTEX_OF_WALL_1D
    \n-
    139
    \n-
    140#ifdef N_VERTICES_2D
    \n-
    141 #undef N_VERTICES_2D
    \n-
    142#endif // N_VERTICES_2D
    \n-
    143
    \n-
    144#ifdef N_EDGES_2D
    \n-
    145 #undef N_EDGES_2D
    \n-
    146#endif // N_EDGES_2D
    \n-
    147
    \n-
    148#ifdef N_FACES_2D
    \n-
    149 #undef N_FACES_2D
    \n-
    150#endif // N_FACES_2D
    \n-
    151
    \n-
    152#ifdef N_NEIGH_2D
    \n-
    153 #undef N_NEIGH_2D
    \n-
    154#endif // N_NEIGH_2D
    \n-
    155
    \n-
    156#ifdef N_WALLS_2D
    \n-
    157 #undef N_WALLS_2D
    \n-
    158#endif // N_WALLS_2D
    \n-
    159
    \n-
    160#ifdef N_LAMBDA_2D
    \n-
    161 #undef N_LAMBDA_2D
    \n-
    162#endif // N_LAMBDA_2D
    \n-
    163
    \n-
    164#ifdef DIM_FAC_2D
    \n-
    165 #undef DIM_FAC_2D
    \n-
    166#endif // DIM_FAC_2D
    \n-
    167
    \n-
    168#ifdef VERTEX_OF_EDGE_2D
    \n-
    169 #undef VERTEX_OF_EDGE_2D
    \n-
    170#endif // VERTEX_OF_EDGE_2D
    \n-
    171
    \n-
    172#ifdef VERTEX_OF_WALL_2D
    \n-
    173 #undef VERTEX_OF_WALL_2D
    \n-
    174#endif // VERTEX_OF_WALL_2D
    \n-
    175
    \n-
    176#ifdef N_VERTICES_3D
    \n-
    177 #undef N_VERTICES_3D
    \n-
    178#endif // N_VERTICES_3D
    \n-
    179
    \n-
    180#ifdef N_EDGES_3D
    \n-
    181 #undef N_EDGES_3D
    \n-
    182#endif // N_EDGES_3D
    \n-
    183
    \n-
    184#ifdef N_FACES_3D
    \n-
    185 #undef N_FACES_3D
    \n-
    186#endif // N_FACES_3D
    \n-
    187
    \n-
    188#ifdef N_NEIGH_3D
    \n-
    189 #undef N_NEIGH_3D
    \n-
    190#endif // N_NEIGH_3D
    \n-
    191
    \n-
    192#ifdef N_WALLS_3D
    \n-
    193 #undef N_WALLS_3D
    \n-
    194#endif // N_WALLS_3D
    \n-
    195
    \n-
    196#ifdef N_LAMBDA_3D
    \n-
    197 #undef N_LAMBDA_3D
    \n-
    198#endif // N_LAMBDA_3D
    \n-
    199
    \n-
    200#ifdef DIM_FAC_3D
    \n-
    201 #undef DIM_FAC_3D
    \n-
    202#endif // DIM_FAC_3D
    \n-
    203
    \n-
    204#ifdef VERTEX_OF_EDGE_3D
    \n-
    205 #undef VERTEX_OF_EDGE_3D
    \n-
    206#endif // VERTEX_OF_EDGE_3D
    \n-
    207
    \n-
    208#ifdef VERTEX_OF_WALL_3D
    \n-
    209 #undef VERTEX_OF_WALL_3D
    \n-
    210#endif // VERTEX_OF_WALL_3D
    \n-
    211
    \n-
    212#ifdef N_LAMBDA_MAX
    \n-
    213 #undef N_LAMBDA_MAX
    \n-
    214#endif // N_LAMBDA_MAX
    \n-
    215
    \n-
    216#ifdef N_VERTICES_MAX
    \n-
    217 #undef N_VERTICES_MAX
    \n-
    218#endif // N_VERTICES_MAX
    \n-
    219
    \n-
    220#ifdef N_EDGES_MAX
    \n-
    221 #undef N_EDGES_MAX
    \n-
    222#endif // N_EDGES_MAX
    \n-
    223
    \n-
    224#ifdef N_FACES_MAX
    \n-
    225 #undef N_FACES_MAX
    \n-
    226#endif // N_FACES_MAX
    \n-
    227
    \n-
    228#ifdef N_NEIGH_MAX
    \n-
    229 #undef N_NEIGH_MAX
    \n-
    230#endif // N_NEIGH_MAX
    \n-
    231
    \n-
    232#ifdef N_WALLS_MAX
    \n-
    233 #undef N_WALLS_MAX
    \n-
    234#endif // N_WALLS_MAX
    \n-
    235
    \n-
    236#ifdef DIM_FAC_MAX
    \n-
    237 #undef DIM_FAC_MAX
    \n-
    238#endif // DIM_FAC_MAX
    \n-
    239
    \n-
    240#ifdef N_LAMBDA_LIMIT
    \n-
    241 #undef N_LAMBDA_LIMIT
    \n-
    242#endif // N_LAMBDA_LIMIT
    \n-
    243
    \n-
    244#ifdef N_VERTICES_LIMIT
    \n-
    245 #undef N_VERTICES_LIMIT
    \n-
    246#endif // N_VERTICES_LIMIT
    \n-
    247
    \n-
    248#ifdef N_EDGES_LIMIT
    \n-
    249 #undef N_EDGES_LIMIT
    \n-
    250#endif // N_EDGES_LIMIT
    \n-
    251
    \n-
    252#ifdef N_FACES_LIMIT
    \n-
    253 #undef N_FACES_LIMIT
    \n-
    254#endif // N_FACES_LIMIT
    \n-
    255
    \n-
    256#ifdef N_NEIGH_LIMIT
    \n-
    257 #undef N_NEIGH_LIMIT
    \n-
    258#endif // N_NEIGH_LIMIT
    \n-
    259
    \n-
    260#ifdef N_WALLS_LIMIT
    \n-
    261 #undef N_WALLS_LIMIT
    \n-
    262#endif // N_WALLS_LIMIT
    \n-
    263
    \n-
    264#ifdef DIM_FAC_LIMIT
    \n-
    265 #undef DIM_FAC_LIMIT
    \n-
    266#endif // DIM_FAC_LIMIT
    \n-
    267
    \n-
    268#ifdef INDEX
    \n-
    269 #undef INDEX
    \n-
    270#endif // INDEX
    \n-
    271
    \n-
    272#ifdef INDEX
    \n-
    273 #undef INDEX
    \n-
    274#endif // INDEX
    \n-
    275
    \n-
    276#ifdef IS_LEAF_EL
    \n-
    277 #undef IS_LEAF_EL
    \n-
    278#endif // IS_LEAF_EL
    \n-
    279
    \n-
    280#ifdef LEAF_DATA
    \n-
    281 #undef LEAF_DATA
    \n-
    282#endif // LEAF_DATA
    \n-
    283
    \n-
    284#ifdef INTERIOR
    \n-
    285 #undef INTERIOR
    \n-
    286#endif // INTERIOR
    \n-
    287
    \n-
    288#ifdef DIRICHLET
    \n-
    289 #undef DIRICHLET
    \n-
    290#endif // DIRICHLET
    \n-
    291
    \n-
    292#ifdef NEUMANN
    \n-
    293 #undef NEUMANN
    \n-
    294#endif // NEUMANN
    \n-
    295
    \n-
    296#ifdef IS_NEUMANN
    \n-
    297 #undef IS_NEUMANN
    \n-
    298#endif // IS_NEUMANN
    \n-
    299
    \n-
    300#ifdef IS_DIRICHLET
    \n-
    301 #undef IS_DIRICHLET
    \n-
    302#endif // IS_DIRICHLET
    \n-
    303
    \n-
    304#ifdef IS_INTERIOR
    \n-
    305 #undef IS_INTERIOR
    \n-
    306#endif // IS_INTERIOR
    \n-
    307
    \n-
    308#ifdef N_BNDRY_TYPES
    \n-
    309 #undef N_BNDRY_TYPES
    \n-
    310#endif // N_BNDRY_TYPES
    \n-
    311
    \n-
    312#ifdef LIST_ENTRY
    \n-
    313 #undef LIST_ENTRY
    \n-
    314#endif // LIST_ENTRY
    \n-
    315
    \n-
    316#ifdef INIT_EL_TAG_CTX_INIT
    \n-
    317 #undef INIT_EL_TAG_CTX_INIT
    \n-
    318#endif // INIT_EL_TAG_CTX_INIT
    \n-
    319
    \n-
    320#ifdef INIT_EL_TAG_CTX_UNIQ
    \n-
    321 #undef INIT_EL_TAG_CTX_UNIQ
    \n-
    322#endif // INIT_EL_TAG_CTX_UNIQ
    \n-
    323
    \n-
    324#ifdef INIT_EL_TAG_CTX_NULL
    \n-
    325 #undef INIT_EL_TAG_CTX_NULL
    \n-
    326#endif // INIT_EL_TAG_CTX_NULL
    \n-
    327
    \n-
    328#ifdef INIT_EL_TAG_CTX_DFLT
    \n-
    329 #undef INIT_EL_TAG_CTX_DFLT
    \n-
    330#endif // INIT_EL_TAG_CTX_DFLT
    \n-
    331
    \n-
    332#ifdef INIT_EL_TAG_CTX_TAG
    \n-
    333 #undef INIT_EL_TAG_CTX_TAG
    \n-
    334#endif // INIT_EL_TAG_CTX_TAG
    \n-
    335
    \n-
    336#ifdef INIT_ELEMENT_METHOD
    \n-
    337 #undef INIT_ELEMENT_METHOD
    \n-
    338#endif // INIT_ELEMENT_METHOD
    \n-
    339
    \n-
    340#ifdef INIT_ELEMENT_FLAGS
    \n-
    341 #undef INIT_ELEMENT_FLAGS
    \n-
    342#endif // INIT_ELEMENT_FLAGS
    \n-
    343
    \n-
    344#ifdef INIT_ELEMENT_DEFUN
    \n-
    345 #undef INIT_ELEMENT_DEFUN
    \n-
    346#endif // INIT_ELEMENT_DEFUN
    \n-
    347
    \n-
    348#ifdef INIT_OBJECT
    \n-
    349 #undef INIT_OBJECT
    \n-
    350#endif // INIT_OBJECT
    \n-
    351
    \n-
    352#ifdef INIT_ELEMENT_DECL
    \n-
    353 #undef INIT_ELEMENT_DECL
    \n-
    354#endif // INIT_ELEMENT_DECL
    \n-
    355
    \n-
    356#ifdef INIT_ELEMENT_INITIALIZER
    \n-
    357 #undef INIT_ELEMENT_INITIALIZER
    \n-
    358#endif // INIT_ELEMENT_INITIALIZER
    \n-
    359
    \n-
    360#ifdef INIT_ELEMENT
    \n-
    361 #undef INIT_ELEMENT
    \n-
    362#endif // INIT_ELEMENT
    \n-
    363
    \n-
    364#ifdef INIT_ELEMENT_NEEDED
    \n-
    365 #undef INIT_ELEMENT_NEEDED
    \n-
    366#endif // INIT_ELEMENT_NEEDED
    \n-
    367
    \n-
    368#ifdef INIT_ELEMENT_SETUP
    \n-
    369 #undef INIT_ELEMENT_SETUP
    \n-
    370#endif // INIT_ELEMENT_SETUP
    \n-
    371
    \n-
    372#ifdef INIT_OBJECT_SINGLE
    \n-
    373 #undef INIT_OBJECT_SINGLE
    \n-
    374#endif // INIT_OBJECT_SINGLE
    \n-
    375
    \n-
    376#ifdef INIT_ELEMENT_SINGLE
    \n-
    377 #undef INIT_ELEMENT_SINGLE
    \n-
    378#endif // INIT_ELEMENT_SINGLE
    \n-
    379
    \n-
    380#ifdef vertex_of_wall_2d
    \n-
    381 #undef vertex_of_wall_2d
    \n-
    382#endif // vertex_of_wall_2d
    \n-
    383
    \n-
    384#ifdef PARAM_STRATEGY_MASK
    \n-
    385 #undef PARAM_STRATEGY_MASK
    \n-
    386#endif // PARAM_STRATEGY_MASK
    \n-
    387
    \n-
    388#ifdef PARAM_PERIODIC_COORDS
    \n-
    389 #undef PARAM_PERIODIC_COORDS
    \n-
    390#endif // PARAM_PERIODIC_COORDS
    \n-
    391
    \n-
    392#ifdef FILL_EL_DET
    \n-
    393 #undef FILL_EL_DET
    \n-
    394#endif // FILL_EL_DET
    \n-
    395
    \n-
    396#ifdef FILL_EL_LAMBDA
    \n-
    397 #undef FILL_EL_LAMBDA
    \n-
    398#endif // FILL_EL_LAMBDA
    \n-
    399
    \n-
    400#ifdef FILL_EL_WALL_SHIFT
    \n-
    401 #undef FILL_EL_WALL_SHIFT
    \n-
    402#endif // FILL_EL_WALL_SHIFT
    \n-
    403
    \n-
    404#ifdef FILL_EL_WALL_MASK
    \n-
    405 #undef FILL_EL_WALL_MASK
    \n-
    406#endif // FILL_EL_WALL_MASK
    \n-
    407
    \n-
    408#ifdef FILL_EL_WALL_DET
    \n-
    409 #undef FILL_EL_WALL_DET
    \n-
    410#endif // FILL_EL_WALL_DET
    \n-
    411
    \n-
    412#ifdef FILL_EL_WALL_NORMAL
    \n-
    413 #undef FILL_EL_WALL_NORMAL
    \n-
    414#endif // FILL_EL_WALL_NORMAL
    \n-
    415
    \n-
    416#ifdef FILL_EL_WALL_ORIENTATION
    \n-
    417 #undef FILL_EL_WALL_ORIENTATION
    \n-
    418#endif // FILL_EL_WALL_ORIENTATION
    \n-
    419
    \n-
    420#ifdef FILL_EL_WALL_REL_ORIENTATION
    \n-
    421 #undef FILL_EL_WALL_REL_ORIENTATION
    \n-
    422#endif // FILL_EL_WALL_REL_ORIENTATION
    \n-
    423
    \n-
    424#ifdef FILL_EL_WALL_DETS
    \n-
    425 #undef FILL_EL_WALL_DETS
    \n-
    426#endif // FILL_EL_WALL_DETS
    \n-
    427
    \n-
    428#ifdef FILL_EL_WALL_NORMALS
    \n-
    429 #undef FILL_EL_WALL_NORMALS
    \n-
    430#endif // FILL_EL_WALL_NORMALS
    \n-
    431
    \n-
    432#ifdef FILL_EL_WALL_ORIENTATIONS
    \n-
    433 #undef FILL_EL_WALL_ORIENTATIONS
    \n-
    434#endif // FILL_EL_WALL_ORIENTATIONS
    \n-
    435
    \n-
    436#ifdef FILL_EL_WALL_REL_ORIENTATIONS
    \n-
    437 #undef FILL_EL_WALL_REL_ORIENTATIONS
    \n-
    438#endif // FILL_EL_WALL_REL_ORIENTATIONS
    \n-
    439
    \n-
    440#ifdef BNDRY_FLAGS_INIT
    \n-
    441 #undef BNDRY_FLAGS_INIT
    \n-
    442#endif // BNDRY_FLAGS_INIT
    \n-
    443
    \n-
    444#ifdef BNDRY_FLAGS_ALL
    \n-
    445 #undef BNDRY_FLAGS_ALL
    \n-
    446#endif // BNDRY_FLAGS_ALL
    \n-
    447
    \n-
    448#ifdef BNDRY_FLAGS_CPY
    \n-
    449 #undef BNDRY_FLAGS_CPY
    \n-
    450#endif // BNDRY_FLAGS_CPY
    \n-
    451
    \n-
    452#ifdef BNDRY_FLAGS_AND
    \n-
    453 #undef BNDRY_FLAGS_AND
    \n-
    454#endif // BNDRY_FLAGS_AND
    \n-
    455
    \n-
    456#ifdef BNDRY_FLAGS_OR
    \n-
    457 #undef BNDRY_FLAGS_OR
    \n-
    458#endif // BNDRY_FLAGS_OR
    \n-
    459
    \n-
    460#ifdef BNDRY_FLAGS_XOR
    \n-
    461 #undef BNDRY_FLAGS_XOR
    \n-
    462#endif // BNDRY_FLAGS_XOR
    \n-
    463
    \n-
    464#ifdef BNDRY_FLAGS_IS_INTERIOR
    \n-
    465 #undef BNDRY_FLAGS_IS_INTERIOR
    \n-
    466#endif // BNDRY_FLAGS_IS_INTERIOR
    \n-
    467
    \n-
    468#ifdef BNDRY_FLAGS_IS_AT_BNDRY
    \n-
    469 #undef BNDRY_FLAGS_IS_AT_BNDRY
    \n-
    470#endif // BNDRY_FLAGS_IS_AT_BNDRY
    \n-
    471
    \n-
    472#ifdef BNDRY_FLAGS_SET
    \n-
    473 #undef BNDRY_FLAGS_SET
    \n-
    474#endif // BNDRY_FLAGS_SET
    \n-
    475
    \n-
    476#ifdef BNDRY_FLAGS_IS_PARTOF
    \n-
    477 #undef BNDRY_FLAGS_IS_PARTOF
    \n-
    478#endif // BNDRY_FLAGS_IS_PARTOF
    \n-
    479
    \n-
    480#ifdef BNDRY_FLAGS_FFBB
    \n-
    481 #undef BNDRY_FLAGS_FFBB
    \n-
    482#endif // BNDRY_FLAGS_FFBB
    \n-
    483
    \n-
    484#ifdef RCLE_NONE
    \n-
    485 #undef RCLE_NONE
    \n-
    486#endif // RCLE_NONE
    \n-
    487
    \n-
    488#ifdef RCLE_COARSE_EDGE_COMPAT
    \n-
    489 #undef RCLE_COARSE_EDGE_COMPAT
    \n-
    490#endif // RCLE_COARSE_EDGE_COMPAT
    \n-
    491
    \n-
    492#ifdef FILL_NOTHING
    \n-
    493 #undef FILL_NOTHING
    \n-
    494#endif // FILL_NOTHING
    \n-
    495
    \n-
    496#ifdef FILL_COORDS
    \n-
    497 #undef FILL_COORDS
    \n-
    498#endif // FILL_COORDS
    \n-
    499
    \n-
    500#ifdef FILL_BOUND
    \n-
    501 #undef FILL_BOUND
    \n-
    502#endif // FILL_BOUND
    \n-
    503
    \n-
    504#ifdef FILL_NEIGH
    \n-
    505 #undef FILL_NEIGH
    \n-
    506#endif // FILL_NEIGH
    \n-
    507
    \n-
    508#ifdef FILL_OPP_COORDS
    \n-
    509 #undef FILL_OPP_COORDS
    \n-
    510#endif // FILL_OPP_COORDS
    \n-
    511
    \n-
    512#ifdef FILL_ORIENTATION
    \n-
    513 #undef FILL_ORIENTATION
    \n-
    514#endif // FILL_ORIENTATION
    \n-
    515
    \n-
    516#ifdef FILL_PROJECTION
    \n-
    517 #undef FILL_PROJECTION
    \n-
    518#endif // FILL_PROJECTION
    \n-
    519
    \n-
    520#ifdef FILL_MACRO_WALLS
    \n-
    521 #undef FILL_MACRO_WALLS
    \n-
    522#endif // FILL_MACRO_WALLS
    \n-
    523
    \n-
    524#ifdef FILL_WALL_MAP
    \n-
    525 #undef FILL_WALL_MAP
    \n-
    526#endif // FILL_WALL_MAP
    \n-
    527
    \n-
    528#ifdef FILL_NON_PERIODIC
    \n-
    529 #undef FILL_NON_PERIODIC
    \n-
    530#endif // FILL_NON_PERIODIC
    \n-
    531
    \n-
    532#ifdef FILL_MASTER_INFO
    \n-
    533 #undef FILL_MASTER_INFO
    \n-
    534#endif // FILL_MASTER_INFO
    \n-
    535
    \n-
    536#ifdef FILL_ANY
    \n-
    537 #undef FILL_ANY
    \n-
    538#endif // FILL_ANY
    \n-
    539
    \n-
    540#ifdef CALL_EVERY_EL_PREORDER
    \n-
    541 #undef CALL_EVERY_EL_PREORDER
    \n-
    542#endif // CALL_EVERY_EL_PREORDER
    \n-
    543
    \n-
    544#ifdef CALL_EVERY_EL_INORDER
    \n-
    545 #undef CALL_EVERY_EL_INORDER
    \n-
    546#endif // CALL_EVERY_EL_INORDER
    \n-
    547
    \n-
    548#ifdef CALL_EVERY_EL_POSTORDER
    \n-
    549 #undef CALL_EVERY_EL_POSTORDER
    \n-
    550#endif // CALL_EVERY_EL_POSTORDER
    \n-
    551
    \n-
    552#ifdef CALL_LEAF_EL
    \n-
    553 #undef CALL_LEAF_EL
    \n-
    554#endif // CALL_LEAF_EL
    \n-
    555
    \n-
    556#ifdef CALL_LEAF_EL_LEVEL
    \n-
    557 #undef CALL_LEAF_EL_LEVEL
    \n-
    558#endif // CALL_LEAF_EL_LEVEL
    \n-
    559
    \n-
    560#ifdef CALL_EL_LEVEL
    \n-
    561 #undef CALL_EL_LEVEL
    \n-
    562#endif // CALL_EL_LEVEL
    \n-
    563
    \n-
    564#ifdef CALL_MG_LEVEL
    \n-
    565 #undef CALL_MG_LEVEL
    \n-
    566#endif // CALL_MG_LEVEL
    \n-
    567
    \n-
    568#ifdef TEST_FLAG
    \n-
    569 #undef TEST_FLAG
    \n-
    570#endif // TEST_FLAG
    \n-
    571
    \n-
    572#ifdef ADM_FLAGS_MASK
    \n-
    573 #undef ADM_FLAGS_MASK
    \n-
    574#endif // ADM_FLAGS_MASK
    \n-
    575
    \n-
    576#ifdef UCHAR_name
    \n-
    577 #undef UCHAR_name
    \n-
    578#endif // UCHAR_name
    \n-
    579
    \n-
    580#ifdef uchar_VECNAME
    \n-
    581 #undef uchar_VECNAME
    \n-
    582#endif // uchar_VECNAME
    \n-
    583
    \n-
    584#ifdef SCHAR_name
    \n-
    585 #undef SCHAR_name
    \n-
    586#endif // SCHAR_name
    \n-
    587
    \n-
    588#ifdef schar_VECNAME
    \n-
    589 #undef schar_VECNAME
    \n-
    590#endif // schar_VECNAME
    \n-
    591
    \n-
    592#ifdef INT_name
    \n-
    593 #undef INT_name
    \n-
    594#endif // INT_name
    \n-
    595
    \n-
    596#ifdef int_VECNAME
    \n-
    597 #undef int_VECNAME
    \n-
    598#endif // int_VECNAME
    \n-
    599
    \n-
    600#ifdef DOF_name
    \n-
    601 #undef DOF_name
    \n-
    602#endif // DOF_name
    \n-
    603
    \n-
    604#ifdef dof_VECNAME
    \n-
    605 #undef dof_VECNAME
    \n-
    606#endif // dof_VECNAME
    \n-
    607
    \n-
    608#ifdef PTR_name
    \n-
    609 #undef PTR_name
    \n-
    610#endif // PTR_name
    \n-
    611
    \n-
    612#ifdef ptr_VECNAME
    \n-
    613 #undef ptr_VECNAME
    \n-
    614#endif // ptr_VECNAME
    \n-
    615
    \n-
    616#ifdef REAL_name
    \n-
    617 #undef REAL_name
    \n-
    618#endif // REAL_name
    \n-
    619
    \n-
    620#ifdef real_VECNAME
    \n-
    621 #undef real_VECNAME
    \n-
    622#endif // real_VECNAME
    \n-
    623
    \n-
    624#ifdef REAL_D_name
    \n-
    625 #undef REAL_D_name
    \n-
    626#endif // REAL_D_name
    \n-
    627
    \n-
    628#ifdef real_d_VECNAME
    \n-
    629 #undef real_d_VECNAME
    \n-
    630#endif // real_d_VECNAME
    \n-
    631
    \n-
    632#ifdef BNDRY_name
    \n-
    633 #undef BNDRY_name
    \n-
    634#endif // BNDRY_name
    \n-
    635
    \n-
    636#ifdef bndry_VECNAME
    \n-
    637 #undef bndry_VECNAME
    \n-
    638#endif // bndry_VECNAME
    \n-
    639
    \n-
    640#ifdef DECL_DOF_EL_VEC
    \n-
    641 #undef DECL_DOF_EL_VEC
    \n-
    642#endif // DECL_DOF_EL_VEC
    \n-
    643
    \n-
    644#ifdef PHI
    \n-
    645 #undef PHI
    \n-
    646#endif // PHI
    \n-
    647
    \n-
    648#ifdef GRD_PHI
    \n-
    649 #undef GRD_PHI
    \n-
    650#endif // GRD_PHI
    \n-
    651
    \n-
    652#ifdef D2_PHI
    \n-
    653 #undef D2_PHI
    \n-
    654#endif // D2_PHI
    \n-
    655
    \n-
    656#ifdef D3_PHI
    \n-
    657 #undef D3_PHI
    \n-
    658#endif // D3_PHI
    \n-
    659
    \n-
    660#ifdef D4_PHI
    \n-
    661 #undef D4_PHI
    \n-
    662#endif // D4_PHI
    \n-
    663
    \n-
    664#ifdef PHI_D
    \n-
    665 #undef PHI_D
    \n-
    666#endif // PHI_D
    \n-
    667
    \n-
    668#ifdef GRD_PHI_D
    \n-
    669 #undef GRD_PHI_D
    \n-
    670#endif // GRD_PHI_D
    \n-
    671
    \n-
    672#ifdef D2_PHI_D
    \n-
    673 #undef D2_PHI_D
    \n-
    674#endif // D2_PHI_D
    \n-
    675
    \n-
    676#ifdef GET_DOF_INDICES
    \n-
    677 #undef GET_DOF_INDICES
    \n-
    678#endif // GET_DOF_INDICES
    \n-
    679
    \n-
    680#ifdef INTERPOL
    \n-
    681 #undef INTERPOL
    \n-
    682#endif // INTERPOL
    \n-
    683
    \n-
    684#ifdef INTERPOL_D
    \n-
    685 #undef INTERPOL_D
    \n-
    686#endif // INTERPOL_D
    \n-
    687
    \n-
    688#ifdef INTERPOL_DOW
    \n-
    689 #undef INTERPOL_DOW
    \n-
    690#endif // INTERPOL_DOW
    \n-
    691
    \n-
    692#ifdef GET_BOUND
    \n-
    693 #undef GET_BOUND
    \n-
    694#endif // GET_BOUND
    \n-
    695
    \n-
    696#ifdef LAGRANGE_NODES
    \n-
    697 #undef LAGRANGE_NODES
    \n-
    698#endif // LAGRANGE_NODES
    \n-
    699
    \n-
    700#ifdef FILL_EL_QUAD_WORLD
    \n-
    701 #undef FILL_EL_QUAD_WORLD
    \n-
    702#endif // FILL_EL_QUAD_WORLD
    \n-
    703
    \n-
    704#ifdef FILL_EL_QUAD_DET
    \n-
    705 #undef FILL_EL_QUAD_DET
    \n-
    706#endif // FILL_EL_QUAD_DET
    \n-
    707
    \n-
    708#ifdef FILL_EL_QUAD_LAMBDA
    \n-
    709 #undef FILL_EL_QUAD_LAMBDA
    \n-
    710#endif // FILL_EL_QUAD_LAMBDA
    \n-
    711
    \n-
    712#ifdef FILL_EL_QUAD_DLAMBDA
    \n-
    713 #undef FILL_EL_QUAD_DLAMBDA
    \n-
    714#endif // FILL_EL_QUAD_DLAMBDA
    \n-
    715
    \n-
    716#ifdef FILL_EL_QUAD_GRD_WORLD
    \n-
    717 #undef FILL_EL_QUAD_GRD_WORLD
    \n-
    718#endif // FILL_EL_QUAD_GRD_WORLD
    \n-
    719
    \n-
    720#ifdef FILL_EL_QUAD_D2_WORLD
    \n-
    721 #undef FILL_EL_QUAD_D2_WORLD
    \n-
    722#endif // FILL_EL_QUAD_D2_WORLD
    \n-
    723
    \n-
    724#ifdef FILL_EL_QUAD_D3_WORLD
    \n-
    725 #undef FILL_EL_QUAD_D3_WORLD
    \n-
    726#endif // FILL_EL_QUAD_D3_WORLD
    \n-
    727
    \n-
    728#ifdef FILL_EL_QUAD_WALL_DET
    \n-
    729 #undef FILL_EL_QUAD_WALL_DET
    \n-
    730#endif // FILL_EL_QUAD_WALL_DET
    \n-
    731
    \n-
    732#ifdef FILL_EL_QUAD_WALL_NORMAL
    \n-
    733 #undef FILL_EL_QUAD_WALL_NORMAL
    \n-
    734#endif // FILL_EL_QUAD_WALL_NORMAL
    \n-
    735
    \n-
    736#ifdef FILL_EL_QUAD_GRD_NORMAL
    \n-
    737 #undef FILL_EL_QUAD_GRD_NORMAL
    \n-
    738#endif // FILL_EL_QUAD_GRD_NORMAL
    \n-
    739
    \n-
    740#ifdef FILL_EL_QUAD_D2_NORMAL
    \n-
    741 #undef FILL_EL_QUAD_D2_NORMAL
    \n-
    742#endif // FILL_EL_QUAD_D2_NORMAL
    \n-
    743
    \n-
    744#ifdef INIT_PHI
    \n-
    745 #undef INIT_PHI
    \n-
    746#endif // INIT_PHI
    \n-
    747
    \n-
    748#ifdef INIT_GRD_PHI
    \n-
    749 #undef INIT_GRD_PHI
    \n-
    750#endif // INIT_GRD_PHI
    \n-
    751
    \n-
    752#ifdef INIT_D2_PHI
    \n-
    753 #undef INIT_D2_PHI
    \n-
    754#endif // INIT_D2_PHI
    \n-
    755
    \n-
    756#ifdef INIT_D3_PHI
    \n-
    757 #undef INIT_D3_PHI
    \n-
    758#endif // INIT_D3_PHI
    \n-
    759
    \n-
    760#ifdef INIT_D4_PHI
    \n-
    761 #undef INIT_D4_PHI
    \n-
    762#endif // INIT_D4_PHI
    \n-
    763
    \n-
    764#ifdef INIT_TANGENTIAL
    \n-
    765 #undef INIT_TANGENTIAL
    \n-
    766#endif // INIT_TANGENTIAL
    \n-
    767
    \n-
    768#ifdef MESH_REFINED
    \n-
    769 #undef MESH_REFINED
    \n-
    770#endif // MESH_REFINED
    \n-
    771
    \n-
    772#ifdef MESH_COARSENED
    \n-
    773 #undef MESH_COARSENED
    \n-
    774#endif // MESH_COARSENED
    \n-
    775
    \n-
    776#ifdef GRAPH_MESH_BOUNDARY
    \n-
    777 #undef GRAPH_MESH_BOUNDARY
    \n-
    778#endif // GRAPH_MESH_BOUNDARY
    \n-
    779
    \n-
    780#ifdef GRAPH_MESH_ELEMENT_MARK
    \n-
    781 #undef GRAPH_MESH_ELEMENT_MARK
    \n-
    782#endif // GRAPH_MESH_ELEMENT_MARK
    \n-
    783
    \n-
    784#ifdef GRAPH_MESH_VERTEX_DOF
    \n-
    785 #undef GRAPH_MESH_VERTEX_DOF
    \n-
    786#endif // GRAPH_MESH_VERTEX_DOF
    \n-
    787
    \n-
    788#ifdef GRAPH_MESH_ELEMENT_INDEX
    \n-
    789 #undef GRAPH_MESH_ELEMENT_INDEX
    \n-
    790#endif // GRAPH_MESH_ELEMENT_INDEX
    \n-
    791
    \n-
    792#ifdef GET_MESH
    \n-
    793 #undef GET_MESH
    \n-
    794#endif // GET_MESH
    \n-
    795
    \n-
    796#ifdef GET_DOF_VEC
    \n-
    797 #undef GET_DOF_VEC
    \n-
    798#endif // GET_DOF_VEC
    \n-
    799
    \n-
    800#ifdef TRACE_DOF_VEC_PROTO
    \n-
    801 #undef TRACE_DOF_VEC_PROTO
    \n-
    802#endif // TRACE_DOF_VEC_PROTO
    \n-
    803
    \n-
    804#ifdef INIT_UH
    \n-
    805 #undef INIT_UH
    \n-
    806#endif // INIT_UH
    \n-
    807
    \n-
    808#ifdef INIT_GRD_UH
    \n-
    809 #undef INIT_GRD_UH
    \n-
    810#endif // INIT_GRD_UH
    \n-
    811
    \n-
    812#ifdef ellipt_est_d_init
    \n-
    813 #undef ellipt_est_d_init
    \n-
    814#endif // ellipt_est_d_init
    \n-
    815
    \n-
    816#ifdef head_est_d_init
    \n-
    817 #undef head_est_d_init
    \n-
    818#endif // head_est_d_init
    \n-
    819
    \n-
    820#ifdef element_est_d
    \n-
    821 #undef element_est_d
    \n-
    822#endif // element_est_d
    \n-
    823
    \n-
    824#ifdef element_est_d_finish
    \n-
    825 #undef element_est_d_finish
    \n-
    826#endif // element_est_d_finish
    \n-
    827
    \n-
    828#ifdef element_est_uh_d
    \n-
    829 #undef element_est_uh_d
    \n-
    830#endif // element_est_uh_d
    \n-
    831
    \n-
    832#ifdef element_est_grd_uh_d
    \n-
    833 #undef element_est_grd_uh_d
    \n-
    834#endif // element_est_grd_uh_d
    \n-
    835
    \n-
    836#ifdef ellipt_est_d_finish
    \n-
    837 #undef ellipt_est_d_finish
    \n-
    838#endif // ellipt_est_d_finish
    \n-
    839
    \n-
    840#ifdef heat_est_d_finish
    \n-
    841 #undef heat_est_d_finish
    \n-
    842#endif // heat_est_d_finish
    \n-
    843
    \n-
    844#ifdef TRAVERSE_FIRST
    \n-
    845 #undef TRAVERSE_FIRST
    \n-
    846#endif // TRAVERSE_FIRST
    \n-
    847
    \n-
    848#ifdef TRAVERSE_NEXT
    \n-
    849 #undef TRAVERSE_NEXT
    \n-
    850#endif // TRAVERSE_NEXT
    \n-
    851
    \n-
    852#ifdef TRAVERSE_START
    \n-
    853 #undef TRAVERSE_START
    \n-
    854#endif // TRAVERSE_START
    \n-
    855
    \n-
    856#ifdef TRAVERSE_STOP
    \n-
    857 #undef TRAVERSE_STOP
    \n-
    858#endif // TRAVERSE_STOP
    \n-
    859
    \n-
    860#ifdef TRAVERSE_NEIGHBOUR
    \n-
    861 #undef TRAVERSE_NEIGHBOUR
    \n-
    862#endif // TRAVERSE_NEIGHBOUR
    \n-
    863
    \n-
    864#ifdef IFF_TAG_ALBERTA
    \n-
    865 #undef IFF_TAG_ALBERTA
    \n-
    866#endif // IFF_TAG_ALBERTA
    \n-
    867
    \n-
    868#ifdef IFF_TAG_MESH
    \n-
    869 #undef IFF_TAG_MESH
    \n-
    870#endif // IFF_TAG_MESH
    \n-
    871
    \n-
    872#ifdef IFF_TAG_REAL_VEC
    \n-
    873 #undef IFF_TAG_REAL_VEC
    \n-
    874#endif // IFF_TAG_REAL_VEC
    \n-
    875
    \n-
    876#ifdef IFF_TAG_REAL_D_VEC
    \n-
    877 #undef IFF_TAG_REAL_D_VEC
    \n-
    878#endif // IFF_TAG_REAL_D_VEC
    \n-
    879
    \n-
    880#ifdef IFF_TAG_INT_VEC
    \n-
    881 #undef IFF_TAG_INT_VEC
    \n-
    882#endif // IFF_TAG_INT_VEC
    \n-
    883
    \n-
    884#ifdef IFF_TAG_UCHAR_VEC
    \n-
    885 #undef IFF_TAG_UCHAR_VEC
    \n-
    886#endif // IFF_TAG_UCHAR_VEC
    \n-
    887
    \n-
    888#ifdef IFF_TAG_SCHAR_VEC
    \n-
    889 #undef IFF_TAG_SCHAR_VEC
    \n-
    890#endif // IFF_TAG_SCHAR_VEC
    \n+
    124#endif // #if HAVE_ALBERTA
    \n+
    125
    \n+
    126#endif // #ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH
    \n+\n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    Include standard header files.
    Definition agrid.hh:60
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    static K determinant(const FieldMatrix< K, 0, m > &matrix)
    Definition algebra.hh:30
    \n+
    static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
    Definition algebra.hh:81
    \n+
    static const int dimWorld
    Definition misc.hh:46
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n+
    Definition geometrycache.hh:24
    \n+
    GeometryCache()
    Definition geometrycache.hh:33
    \n+
    const Real & integrationElement(const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:37
    \n+
    FieldMatrix< Real, dim, dimWorld > JacobianTransposed
    Definition geometrycache.hh:31
    \n+
    const JacobianTransposed & jacobianTransposed(const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:48
    \n+
    const JacobianInverseTransposed & jacobianInverseTransposed(const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:66
    \n+
    FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed
    Definition geometrycache.hh:30
    \n+
    Definition geometrycache.hh:91
    \n+
    const JacobianTransposed & jacobianTransposed()
    Definition geometrycache.hh:105
    \n+
    FieldMatrix< Real, dim, dimWorld > JacobianTransposed
    Definition geometrycache.hh:93
    \n+
    FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed
    Definition geometrycache.hh:92
    \n+
    const Real & integrationElement()
    Definition geometrycache.hh:100
    \n+
    GeometryCacheProxy(GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO &elInfo)
    Definition geometrycache.hh:95
    \n+
    const JacobianInverseTransposed & jacobianInverseTransposed()
    Definition geometrycache.hh:110
    \n+
    Definition misc.hh:231
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,895 +1,210 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-undefine-3.0.hh\n+geometrycache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-12#ifdef _ALBERTA_H_\n-13 #undef _ALBERTA_H_\n-14#endif // _ALBERTA_H_\n+5#ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH\n+6#define DUNE_ALBERTA_GEOMETRYCACHE_HH\n+7\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n+10\n+11#if HAVE_ALBERTA\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n 15\n-16#ifdef ALBERTA_MAGIC\n-17 #undef ALBERTA_MAGIC\n-18#endif // ALBERTA_MAGIC\n-19\n-20#ifdef ALBERTA_VERSION\n-21 #undef ALBERTA_VERSION\n-22#endif // ALBERTA_VERSION\n-23\n-24#ifdef DIM_LIMIT\n-25 #undef DIM_LIMIT\n-26#endif // DIM_LIMIT\n-27\n-28#ifdef DIM_MAX\n-29 #undef DIM_MAX\n-30#endif // DIM_MAX\n-31\n-32#ifdef N_VERTICES\n-33 #undef N_VERTICES\n-34#endif // N_VERTICES\n-35\n-36#ifdef N_EDGES\n-37 #undef N_EDGES\n-38#endif // N_EDGES\n-39\n-40#ifdef N_WALLS\n-41 #undef N_WALLS\n-42#endif // N_WALLS\n-43\n-44#ifdef N_FACES\n-45 #undef N_FACES\n-46#endif // N_FACES\n+16 namespace Alberta\n+17 {\n+18\n+19 // GeometryCache\n+20 // -------------\n+21\n+22 template< int dim >\n+_\b2_\b3 class _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+24 {\n+25 static const unsigned int flagIntegrationElement = (1 << 0);\n+26 static const unsigned int flagJacobianTransposed = (1 << 1);\n+27 static const unsigned int flagJacobianInverseTransposed = (1 << 2);\n+28\n+29 public:\n+_\b3_\b0 typedef FieldMatrix< Real, dimWorld, dim > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n+_\b3_\b1 typedef FieldMatrix< Real, dim, dimWorld > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n+32\n+_\b3_\b3 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be ()\n+34 : flags_( 0 )\n+35 {}\n+36\n+_\b3_\b7 const _\bR_\be_\ba_\bl &_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n+38 {\n+39 if( (flags_ & flagIntegrationElement) == 0 )\n+40 {\n+41 integrationElement_ = std::abs( _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt( _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd( elInfo ) )\n+);\n+42 assert( integrationElement_ > 1e-14 );\n+43 flags_ |= flagIntegrationElement;\n+44 }\n+45 return integrationElement_;\n+46 }\n 47\n-48#ifdef N_NEIGH\n-49 #undef N_NEIGH\n-50#endif // N_NEIGH\n-51\n-52#ifdef N_LAMBDA\n-53 #undef N_LAMBDA\n-54#endif // N_LAMBDA\n-55\n-56#ifdef DIM_FAC\n-57 #undef DIM_FAC\n-58#endif // DIM_FAC\n-59\n-60#ifdef VERTEX_OF_EDGE\n-61 #undef VERTEX_OF_EDGE\n-62#endif // VERTEX_OF_EDGE\n-63\n-64#ifdef VERTEX_OF_WALL\n-65 #undef VERTEX_OF_WALL\n-66#endif // VERTEX_OF_WALL\n-67\n-68#ifdef N_VERTICES_0D\n-69 #undef N_VERTICES_0D\n-70#endif // N_VERTICES_0D\n-71\n-72#ifdef N_EDGES_0D\n-73 #undef N_EDGES_0D\n-74#endif // N_EDGES_0D\n-75\n-76#ifdef N_FACES_0D\n-77 #undef N_FACES_0D\n-78#endif // N_FACES_0D\n-79\n-80#ifdef N_NEIGH_0D\n-81 #undef N_NEIGH_0D\n-82#endif // N_NEIGH_0D\n+_\b4_\b8 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo\n+)\n+49 {\n+50 if( (flags_ & flagJacobianTransposed) == 0 )\n+51 {\n+52 assert( (elInfo.fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs) != 0 );\n+53 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &x = elInfo.coord[ 0 ];\n+54 for( int i = 0; i < dim; ++i )\n+55 {\n+56 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &y = elInfo.coord[ i+1 ];\n+57 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n+58 jacobianTransposed_[ i ][ j ] = y[ j ] - x[ j ];\n+59 }\n+60 flags_ |= flagJacobianTransposed;\n+61 }\n+62 return jacobianTransposed_;\n+63 }\n+64\n+65 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &\n+_\b6_\b6 _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n+67 {\n+68 if( (flags_ & flagJacobianInverseTransposed) == 0 )\n+69 {\n+70 integrationElement_ = std::abs( _\bi_\bn_\bv_\be_\br_\bt( _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd( elInfo ),\n+jacobianInverseTransposed_ ) );\n+71 assert( integrationElement_ > 1e-14 );\n+72 flags_ |= flagIntegrationElement | flagJacobianInverseTransposed;\n+73 }\n+74 return jacobianInverseTransposed_;\n+75 }\n+76\n+77 private:\n+78 unsigned int flags_;\n+79 _\bR_\be_\ba_\bl integrationElement_;\n+80 FieldMatrix< Real, dim, dimWorld > jacobianTransposed_;\n+81 FieldMatrix< Real, dimWorld, dim > jacobianInverseTransposed_;\n+82 };\n 83\n-84#ifdef N_WALLS_0D\n-85 #undef N_WALLS_0D\n-86#endif // N_WALLS_0D\n-87\n-88#ifdef N_LAMBDA_0D\n-89 #undef N_LAMBDA_0D\n-90#endif // N_LAMBDA_0D\n-91\n-92#ifdef DIM_FAC_0D\n-93 #undef DIM_FAC_0D\n-94#endif // DIM_FAC_0D\n-95\n-96#ifdef VERTEX_OF_EDGE_0D\n-97 #undef VERTEX_OF_EDGE_0D\n-98#endif // VERTEX_OF_EDGE_0D\n+84\n+85\n+86 // GeometryCacheProxy\n+87 // ------------------\n+88\n+89 template< int dim >\n+_\b9_\b0 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n+91 {\n+_\b9_\b2 typedef FieldMatrix< Real, dimWorld, dim > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n+_\b9_\b3 typedef FieldMatrix< Real, dim, dimWorld > _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n+94\n+_\b9_\b5 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by ( _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b> &geometryCache, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+EL_INFO &elInfo )\n+96 : geometryCache_( geometryCache ),\n+97 elInfo_( elInfo )\n+98 {}\n 99\n-100#ifdef VERTEX_OF_WALL_0D\n-101 #undef VERTEX_OF_WALL_0D\n-102#endif // VERTEX_OF_WALL_0D\n-103\n-104#ifdef N_VERTICES_1D\n-105 #undef N_VERTICES_1D\n-106#endif // N_VERTICES_1D\n-107\n-108#ifdef N_EDGES_1D\n-109 #undef N_EDGES_1D\n-110#endif // N_EDGES_1D\n-111\n-112#ifdef N_FACES_1D\n-113 #undef N_FACES_1D\n-114#endif // N_FACES_1D\n-115\n-116#ifdef N_NEIGH_1D\n-117 #undef N_NEIGH_1D\n-118#endif // N_NEIGH_1D\n+_\b1_\b0_\b0 const _\bR_\be_\ba_\bl &_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+101 {\n+102 return geometryCache_.integrationElement( elInfo_ );\n+103 }\n+104\n+_\b1_\b0_\b5 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ()\n+106 {\n+107 return geometryCache_.jacobianTransposed( elInfo_ );\n+108 }\n+109\n+_\b1_\b1_\b0 const _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ()\n+111 {\n+112 return geometryCache_.jacobianInverseTransposed( elInfo_ );\n+113 }\n+114\n+115 private:\n+116 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b> &geometryCache_;\n+117 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo_;\n+118 };\n 119\n-120#ifdef N_WALLS_1D\n-121 #undef N_WALLS_1D\n-122#endif // N_WALLS_1D\n+120 } // namespace Alberta\n+121\n+122} // namespace Dune\n 123\n-124#ifdef N_LAMBDA_1D\n-125 #undef N_LAMBDA_1D\n-126#endif // N_LAMBDA_1D\n-127\n-128#ifdef DIM_FAC_1D\n-129 #undef DIM_FAC_1D\n-130#endif // DIM_FAC_1D\n-131\n-132#ifdef VERTEX_OF_EDGE_1D\n-133 #undef VERTEX_OF_EDGE_1D\n-134#endif // VERTEX_OF_EDGE_1D\n-135\n-136#ifdef VERTEX_OF_WALL_1D\n-137 #undef VERTEX_OF_WALL_1D\n-138#endif // VERTEX_OF_WALL_1D\n-139\n-140#ifdef N_VERTICES_2D\n-141 #undef N_VERTICES_2D\n-142#endif // N_VERTICES_2D\n-143\n-144#ifdef N_EDGES_2D\n-145 #undef N_EDGES_2D\n-146#endif // N_EDGES_2D\n-147\n-148#ifdef N_FACES_2D\n-149 #undef N_FACES_2D\n-150#endif // N_FACES_2D\n-151\n-152#ifdef N_NEIGH_2D\n-153 #undef N_NEIGH_2D\n-154#endif // N_NEIGH_2D\n-155\n-156#ifdef N_WALLS_2D\n-157 #undef N_WALLS_2D\n-158#endif // N_WALLS_2D\n-159\n-160#ifdef N_LAMBDA_2D\n-161 #undef N_LAMBDA_2D\n-162#endif // N_LAMBDA_2D\n-163\n-164#ifdef DIM_FAC_2D\n-165 #undef DIM_FAC_2D\n-166#endif // DIM_FAC_2D\n-167\n-168#ifdef VERTEX_OF_EDGE_2D\n-169 #undef VERTEX_OF_EDGE_2D\n-170#endif // VERTEX_OF_EDGE_2D\n-171\n-172#ifdef VERTEX_OF_WALL_2D\n-173 #undef VERTEX_OF_WALL_2D\n-174#endif // VERTEX_OF_WALL_2D\n-175\n-176#ifdef N_VERTICES_3D\n-177 #undef N_VERTICES_3D\n-178#endif // N_VERTICES_3D\n-179\n-180#ifdef N_EDGES_3D\n-181 #undef N_EDGES_3D\n-182#endif // N_EDGES_3D\n-183\n-184#ifdef N_FACES_3D\n-185 #undef N_FACES_3D\n-186#endif // N_FACES_3D\n-187\n-188#ifdef N_NEIGH_3D\n-189 #undef N_NEIGH_3D\n-190#endif // N_NEIGH_3D\n-191\n-192#ifdef N_WALLS_3D\n-193 #undef N_WALLS_3D\n-194#endif // N_WALLS_3D\n-195\n-196#ifdef N_LAMBDA_3D\n-197 #undef N_LAMBDA_3D\n-198#endif // N_LAMBDA_3D\n-199\n-200#ifdef DIM_FAC_3D\n-201 #undef DIM_FAC_3D\n-202#endif // DIM_FAC_3D\n-203\n-204#ifdef VERTEX_OF_EDGE_3D\n-205 #undef VERTEX_OF_EDGE_3D\n-206#endif // VERTEX_OF_EDGE_3D\n-207\n-208#ifdef VERTEX_OF_WALL_3D\n-209 #undef VERTEX_OF_WALL_3D\n-210#endif // VERTEX_OF_WALL_3D\n-211\n-212#ifdef N_LAMBDA_MAX\n-213 #undef N_LAMBDA_MAX\n-214#endif // N_LAMBDA_MAX\n-215\n-216#ifdef N_VERTICES_MAX\n-217 #undef N_VERTICES_MAX\n-218#endif // N_VERTICES_MAX\n-219\n-220#ifdef N_EDGES_MAX\n-221 #undef N_EDGES_MAX\n-222#endif // N_EDGES_MAX\n-223\n-224#ifdef N_FACES_MAX\n-225 #undef N_FACES_MAX\n-226#endif // N_FACES_MAX\n-227\n-228#ifdef N_NEIGH_MAX\n-229 #undef N_NEIGH_MAX\n-230#endif // N_NEIGH_MAX\n-231\n-232#ifdef N_WALLS_MAX\n-233 #undef N_WALLS_MAX\n-234#endif // N_WALLS_MAX\n-235\n-236#ifdef DIM_FAC_MAX\n-237 #undef DIM_FAC_MAX\n-238#endif // DIM_FAC_MAX\n-239\n-240#ifdef N_LAMBDA_LIMIT\n-241 #undef N_LAMBDA_LIMIT\n-242#endif // N_LAMBDA_LIMIT\n-243\n-244#ifdef N_VERTICES_LIMIT\n-245 #undef N_VERTICES_LIMIT\n-246#endif // N_VERTICES_LIMIT\n-247\n-248#ifdef N_EDGES_LIMIT\n-249 #undef N_EDGES_LIMIT\n-250#endif // N_EDGES_LIMIT\n-251\n-252#ifdef N_FACES_LIMIT\n-253 #undef N_FACES_LIMIT\n-254#endif // N_FACES_LIMIT\n-255\n-256#ifdef N_NEIGH_LIMIT\n-257 #undef N_NEIGH_LIMIT\n-258#endif // N_NEIGH_LIMIT\n-259\n-260#ifdef N_WALLS_LIMIT\n-261 #undef N_WALLS_LIMIT\n-262#endif // N_WALLS_LIMIT\n-263\n-264#ifdef DIM_FAC_LIMIT\n-265 #undef DIM_FAC_LIMIT\n-266#endif // DIM_FAC_LIMIT\n-267\n-268#ifdef INDEX\n-269 #undef INDEX\n-270#endif // INDEX\n-271\n-272#ifdef INDEX\n-273 #undef INDEX\n-274#endif // INDEX\n-275\n-276#ifdef IS_LEAF_EL\n-277 #undef IS_LEAF_EL\n-278#endif // IS_LEAF_EL\n-279\n-280#ifdef LEAF_DATA\n-281 #undef LEAF_DATA\n-282#endif // LEAF_DATA\n-283\n-284#ifdef INTERIOR\n-285 #undef INTERIOR\n-286#endif // INTERIOR\n-287\n-288#ifdef DIRICHLET\n-289 #undef DIRICHLET\n-290#endif // DIRICHLET\n-291\n-292#ifdef NEUMANN\n-293 #undef NEUMANN\n-294#endif // NEUMANN\n-295\n-296#ifdef IS_NEUMANN\n-297 #undef IS_NEUMANN\n-298#endif // IS_NEUMANN\n-299\n-300#ifdef IS_DIRICHLET\n-301 #undef IS_DIRICHLET\n-302#endif // IS_DIRICHLET\n-303\n-304#ifdef IS_INTERIOR\n-305 #undef IS_INTERIOR\n-306#endif // IS_INTERIOR\n-307\n-308#ifdef N_BNDRY_TYPES\n-309 #undef N_BNDRY_TYPES\n-310#endif // N_BNDRY_TYPES\n-311\n-312#ifdef LIST_ENTRY\n-313 #undef LIST_ENTRY\n-314#endif // LIST_ENTRY\n-315\n-316#ifdef INIT_EL_TAG_CTX_INIT\n-317 #undef INIT_EL_TAG_CTX_INIT\n-318#endif // INIT_EL_TAG_CTX_INIT\n-319\n-320#ifdef INIT_EL_TAG_CTX_UNIQ\n-321 #undef INIT_EL_TAG_CTX_UNIQ\n-322#endif // INIT_EL_TAG_CTX_UNIQ\n-323\n-324#ifdef INIT_EL_TAG_CTX_NULL\n-325 #undef INIT_EL_TAG_CTX_NULL\n-326#endif // INIT_EL_TAG_CTX_NULL\n-327\n-328#ifdef INIT_EL_TAG_CTX_DFLT\n-329 #undef INIT_EL_TAG_CTX_DFLT\n-330#endif // INIT_EL_TAG_CTX_DFLT\n-331\n-332#ifdef INIT_EL_TAG_CTX_TAG\n-333 #undef INIT_EL_TAG_CTX_TAG\n-334#endif // INIT_EL_TAG_CTX_TAG\n-335\n-336#ifdef INIT_ELEMENT_METHOD\n-337 #undef INIT_ELEMENT_METHOD\n-338#endif // INIT_ELEMENT_METHOD\n-339\n-340#ifdef INIT_ELEMENT_FLAGS\n-341 #undef INIT_ELEMENT_FLAGS\n-342#endif // INIT_ELEMENT_FLAGS\n-343\n-344#ifdef INIT_ELEMENT_DEFUN\n-345 #undef INIT_ELEMENT_DEFUN\n-346#endif // INIT_ELEMENT_DEFUN\n-347\n-348#ifdef INIT_OBJECT\n-349 #undef INIT_OBJECT\n-350#endif // INIT_OBJECT\n-351\n-352#ifdef INIT_ELEMENT_DECL\n-353 #undef INIT_ELEMENT_DECL\n-354#endif // INIT_ELEMENT_DECL\n-355\n-356#ifdef INIT_ELEMENT_INITIALIZER\n-357 #undef INIT_ELEMENT_INITIALIZER\n-358#endif // INIT_ELEMENT_INITIALIZER\n-359\n-360#ifdef INIT_ELEMENT\n-361 #undef INIT_ELEMENT\n-362#endif // INIT_ELEMENT\n-363\n-364#ifdef INIT_ELEMENT_NEEDED\n-365 #undef INIT_ELEMENT_NEEDED\n-366#endif // INIT_ELEMENT_NEEDED\n-367\n-368#ifdef INIT_ELEMENT_SETUP\n-369 #undef INIT_ELEMENT_SETUP\n-370#endif // INIT_ELEMENT_SETUP\n-371\n-372#ifdef INIT_OBJECT_SINGLE\n-373 #undef INIT_OBJECT_SINGLE\n-374#endif // INIT_OBJECT_SINGLE\n-375\n-376#ifdef INIT_ELEMENT_SINGLE\n-377 #undef INIT_ELEMENT_SINGLE\n-378#endif // INIT_ELEMENT_SINGLE\n-379\n-380#ifdef vertex_of_wall_2d\n-381 #undef vertex_of_wall_2d\n-382#endif // vertex_of_wall_2d\n-383\n-384#ifdef PARAM_STRATEGY_MASK\n-385 #undef PARAM_STRATEGY_MASK\n-386#endif // PARAM_STRATEGY_MASK\n-387\n-388#ifdef PARAM_PERIODIC_COORDS\n-389 #undef PARAM_PERIODIC_COORDS\n-390#endif // PARAM_PERIODIC_COORDS\n-391\n-392#ifdef FILL_EL_DET\n-393 #undef FILL_EL_DET\n-394#endif // FILL_EL_DET\n-395\n-396#ifdef FILL_EL_LAMBDA\n-397 #undef FILL_EL_LAMBDA\n-398#endif // FILL_EL_LAMBDA\n-399\n-400#ifdef FILL_EL_WALL_SHIFT\n-401 #undef FILL_EL_WALL_SHIFT\n-402#endif // FILL_EL_WALL_SHIFT\n-403\n-404#ifdef FILL_EL_WALL_MASK\n-405 #undef FILL_EL_WALL_MASK\n-406#endif // FILL_EL_WALL_MASK\n-407\n-408#ifdef FILL_EL_WALL_DET\n-409 #undef FILL_EL_WALL_DET\n-410#endif // FILL_EL_WALL_DET\n-411\n-412#ifdef FILL_EL_WALL_NORMAL\n-413 #undef FILL_EL_WALL_NORMAL\n-414#endif // FILL_EL_WALL_NORMAL\n-415\n-416#ifdef FILL_EL_WALL_ORIENTATION\n-417 #undef FILL_EL_WALL_ORIENTATION\n-418#endif // FILL_EL_WALL_ORIENTATION\n-419\n-420#ifdef FILL_EL_WALL_REL_ORIENTATION\n-421 #undef FILL_EL_WALL_REL_ORIENTATION\n-422#endif // FILL_EL_WALL_REL_ORIENTATION\n-423\n-424#ifdef FILL_EL_WALL_DETS\n-425 #undef FILL_EL_WALL_DETS\n-426#endif // FILL_EL_WALL_DETS\n-427\n-428#ifdef FILL_EL_WALL_NORMALS\n-429 #undef FILL_EL_WALL_NORMALS\n-430#endif // FILL_EL_WALL_NORMALS\n-431\n-432#ifdef FILL_EL_WALL_ORIENTATIONS\n-433 #undef FILL_EL_WALL_ORIENTATIONS\n-434#endif // FILL_EL_WALL_ORIENTATIONS\n-435\n-436#ifdef FILL_EL_WALL_REL_ORIENTATIONS\n-437 #undef FILL_EL_WALL_REL_ORIENTATIONS\n-438#endif // FILL_EL_WALL_REL_ORIENTATIONS\n-439\n-440#ifdef BNDRY_FLAGS_INIT\n-441 #undef BNDRY_FLAGS_INIT\n-442#endif // BNDRY_FLAGS_INIT\n-443\n-444#ifdef BNDRY_FLAGS_ALL\n-445 #undef BNDRY_FLAGS_ALL\n-446#endif // BNDRY_FLAGS_ALL\n-447\n-448#ifdef BNDRY_FLAGS_CPY\n-449 #undef BNDRY_FLAGS_CPY\n-450#endif // BNDRY_FLAGS_CPY\n-451\n-452#ifdef BNDRY_FLAGS_AND\n-453 #undef BNDRY_FLAGS_AND\n-454#endif // BNDRY_FLAGS_AND\n-455\n-456#ifdef BNDRY_FLAGS_OR\n-457 #undef BNDRY_FLAGS_OR\n-458#endif // BNDRY_FLAGS_OR\n-459\n-460#ifdef BNDRY_FLAGS_XOR\n-461 #undef BNDRY_FLAGS_XOR\n-462#endif // BNDRY_FLAGS_XOR\n-463\n-464#ifdef BNDRY_FLAGS_IS_INTERIOR\n-465 #undef BNDRY_FLAGS_IS_INTERIOR\n-466#endif // BNDRY_FLAGS_IS_INTERIOR\n-467\n-468#ifdef BNDRY_FLAGS_IS_AT_BNDRY\n-469 #undef BNDRY_FLAGS_IS_AT_BNDRY\n-470#endif // BNDRY_FLAGS_IS_AT_BNDRY\n-471\n-472#ifdef BNDRY_FLAGS_SET\n-473 #undef BNDRY_FLAGS_SET\n-474#endif // BNDRY_FLAGS_SET\n-475\n-476#ifdef BNDRY_FLAGS_IS_PARTOF\n-477 #undef BNDRY_FLAGS_IS_PARTOF\n-478#endif // BNDRY_FLAGS_IS_PARTOF\n-479\n-480#ifdef BNDRY_FLAGS_FFBB\n-481 #undef BNDRY_FLAGS_FFBB\n-482#endif // BNDRY_FLAGS_FFBB\n-483\n-484#ifdef RCLE_NONE\n-485 #undef RCLE_NONE\n-486#endif // RCLE_NONE\n-487\n-488#ifdef RCLE_COARSE_EDGE_COMPAT\n-489 #undef RCLE_COARSE_EDGE_COMPAT\n-490#endif // RCLE_COARSE_EDGE_COMPAT\n-491\n-492#ifdef FILL_NOTHING\n-493 #undef FILL_NOTHING\n-494#endif // FILL_NOTHING\n-495\n-496#ifdef FILL_COORDS\n-497 #undef FILL_COORDS\n-498#endif // FILL_COORDS\n-499\n-500#ifdef FILL_BOUND\n-501 #undef FILL_BOUND\n-502#endif // FILL_BOUND\n-503\n-504#ifdef FILL_NEIGH\n-505 #undef FILL_NEIGH\n-506#endif // FILL_NEIGH\n-507\n-508#ifdef FILL_OPP_COORDS\n-509 #undef FILL_OPP_COORDS\n-510#endif // FILL_OPP_COORDS\n-511\n-512#ifdef FILL_ORIENTATION\n-513 #undef FILL_ORIENTATION\n-514#endif // FILL_ORIENTATION\n-515\n-516#ifdef FILL_PROJECTION\n-517 #undef FILL_PROJECTION\n-518#endif // FILL_PROJECTION\n-519\n-520#ifdef FILL_MACRO_WALLS\n-521 #undef FILL_MACRO_WALLS\n-522#endif // FILL_MACRO_WALLS\n-523\n-524#ifdef FILL_WALL_MAP\n-525 #undef FILL_WALL_MAP\n-526#endif // FILL_WALL_MAP\n-527\n-528#ifdef FILL_NON_PERIODIC\n-529 #undef FILL_NON_PERIODIC\n-530#endif // FILL_NON_PERIODIC\n-531\n-532#ifdef FILL_MASTER_INFO\n-533 #undef FILL_MASTER_INFO\n-534#endif // FILL_MASTER_INFO\n-535\n-536#ifdef FILL_ANY\n-537 #undef FILL_ANY\n-538#endif // FILL_ANY\n-539\n-540#ifdef CALL_EVERY_EL_PREORDER\n-541 #undef CALL_EVERY_EL_PREORDER\n-542#endif // CALL_EVERY_EL_PREORDER\n-543\n-544#ifdef CALL_EVERY_EL_INORDER\n-545 #undef CALL_EVERY_EL_INORDER\n-546#endif // CALL_EVERY_EL_INORDER\n-547\n-548#ifdef CALL_EVERY_EL_POSTORDER\n-549 #undef CALL_EVERY_EL_POSTORDER\n-550#endif // CALL_EVERY_EL_POSTORDER\n-551\n-552#ifdef CALL_LEAF_EL\n-553 #undef CALL_LEAF_EL\n-554#endif // CALL_LEAF_EL\n-555\n-556#ifdef CALL_LEAF_EL_LEVEL\n-557 #undef CALL_LEAF_EL_LEVEL\n-558#endif // CALL_LEAF_EL_LEVEL\n-559\n-560#ifdef CALL_EL_LEVEL\n-561 #undef CALL_EL_LEVEL\n-562#endif // CALL_EL_LEVEL\n-563\n-564#ifdef CALL_MG_LEVEL\n-565 #undef CALL_MG_LEVEL\n-566#endif // CALL_MG_LEVEL\n-567\n-568#ifdef TEST_FLAG\n-569 #undef TEST_FLAG\n-570#endif // TEST_FLAG\n-571\n-572#ifdef ADM_FLAGS_MASK\n-573 #undef ADM_FLAGS_MASK\n-574#endif // ADM_FLAGS_MASK\n-575\n-576#ifdef UCHAR_name\n-577 #undef UCHAR_name\n-578#endif // UCHAR_name\n-579\n-580#ifdef uchar_VECNAME\n-581 #undef uchar_VECNAME\n-582#endif // uchar_VECNAME\n-583\n-584#ifdef SCHAR_name\n-585 #undef SCHAR_name\n-586#endif // SCHAR_name\n-587\n-588#ifdef schar_VECNAME\n-589 #undef schar_VECNAME\n-590#endif // schar_VECNAME\n-591\n-592#ifdef INT_name\n-593 #undef INT_name\n-594#endif // INT_name\n-595\n-596#ifdef int_VECNAME\n-597 #undef int_VECNAME\n-598#endif // int_VECNAME\n-599\n-600#ifdef DOF_name\n-601 #undef DOF_name\n-602#endif // DOF_name\n-603\n-604#ifdef dof_VECNAME\n-605 #undef dof_VECNAME\n-606#endif // dof_VECNAME\n-607\n-608#ifdef PTR_name\n-609 #undef PTR_name\n-610#endif // PTR_name\n-611\n-612#ifdef ptr_VECNAME\n-613 #undef ptr_VECNAME\n-614#endif // ptr_VECNAME\n-615\n-616#ifdef REAL_name\n-617 #undef REAL_name\n-618#endif // REAL_name\n-619\n-620#ifdef real_VECNAME\n-621 #undef real_VECNAME\n-622#endif // real_VECNAME\n-623\n-624#ifdef REAL_D_name\n-625 #undef REAL_D_name\n-626#endif // REAL_D_name\n-627\n-628#ifdef real_d_VECNAME\n-629 #undef real_d_VECNAME\n-630#endif // real_d_VECNAME\n-631\n-632#ifdef BNDRY_name\n-633 #undef BNDRY_name\n-634#endif // BNDRY_name\n-635\n-636#ifdef bndry_VECNAME\n-637 #undef bndry_VECNAME\n-638#endif // bndry_VECNAME\n-639\n-640#ifdef DECL_DOF_EL_VEC\n-641 #undef DECL_DOF_EL_VEC\n-642#endif // DECL_DOF_EL_VEC\n-643\n-644#ifdef PHI\n-645 #undef PHI\n-646#endif // PHI\n-647\n-648#ifdef GRD_PHI\n-649 #undef GRD_PHI\n-650#endif // GRD_PHI\n-651\n-652#ifdef D2_PHI\n-653 #undef D2_PHI\n-654#endif // D2_PHI\n-655\n-656#ifdef D3_PHI\n-657 #undef D3_PHI\n-658#endif // D3_PHI\n-659\n-660#ifdef D4_PHI\n-661 #undef D4_PHI\n-662#endif // D4_PHI\n-663\n-664#ifdef PHI_D\n-665 #undef PHI_D\n-666#endif // PHI_D\n-667\n-668#ifdef GRD_PHI_D\n-669 #undef GRD_PHI_D\n-670#endif // GRD_PHI_D\n-671\n-672#ifdef D2_PHI_D\n-673 #undef D2_PHI_D\n-674#endif // D2_PHI_D\n-675\n-676#ifdef GET_DOF_INDICES\n-677 #undef GET_DOF_INDICES\n-678#endif // GET_DOF_INDICES\n-679\n-680#ifdef INTERPOL\n-681 #undef INTERPOL\n-682#endif // INTERPOL\n-683\n-684#ifdef INTERPOL_D\n-685 #undef INTERPOL_D\n-686#endif // INTERPOL_D\n-687\n-688#ifdef INTERPOL_DOW\n-689 #undef INTERPOL_DOW\n-690#endif // INTERPOL_DOW\n-691\n-692#ifdef GET_BOUND\n-693 #undef GET_BOUND\n-694#endif // GET_BOUND\n-695\n-696#ifdef LAGRANGE_NODES\n-697 #undef LAGRANGE_NODES\n-698#endif // LAGRANGE_NODES\n-699\n-700#ifdef FILL_EL_QUAD_WORLD\n-701 #undef FILL_EL_QUAD_WORLD\n-702#endif // FILL_EL_QUAD_WORLD\n-703\n-704#ifdef FILL_EL_QUAD_DET\n-705 #undef FILL_EL_QUAD_DET\n-706#endif // FILL_EL_QUAD_DET\n-707\n-708#ifdef FILL_EL_QUAD_LAMBDA\n-709 #undef FILL_EL_QUAD_LAMBDA\n-710#endif // FILL_EL_QUAD_LAMBDA\n-711\n-712#ifdef FILL_EL_QUAD_DLAMBDA\n-713 #undef FILL_EL_QUAD_DLAMBDA\n-714#endif // FILL_EL_QUAD_DLAMBDA\n-715\n-716#ifdef FILL_EL_QUAD_GRD_WORLD\n-717 #undef FILL_EL_QUAD_GRD_WORLD\n-718#endif // FILL_EL_QUAD_GRD_WORLD\n-719\n-720#ifdef FILL_EL_QUAD_D2_WORLD\n-721 #undef FILL_EL_QUAD_D2_WORLD\n-722#endif // FILL_EL_QUAD_D2_WORLD\n-723\n-724#ifdef FILL_EL_QUAD_D3_WORLD\n-725 #undef FILL_EL_QUAD_D3_WORLD\n-726#endif // FILL_EL_QUAD_D3_WORLD\n-727\n-728#ifdef FILL_EL_QUAD_WALL_DET\n-729 #undef FILL_EL_QUAD_WALL_DET\n-730#endif // FILL_EL_QUAD_WALL_DET\n-731\n-732#ifdef FILL_EL_QUAD_WALL_NORMAL\n-733 #undef FILL_EL_QUAD_WALL_NORMAL\n-734#endif // FILL_EL_QUAD_WALL_NORMAL\n-735\n-736#ifdef FILL_EL_QUAD_GRD_NORMAL\n-737 #undef FILL_EL_QUAD_GRD_NORMAL\n-738#endif // FILL_EL_QUAD_GRD_NORMAL\n-739\n-740#ifdef FILL_EL_QUAD_D2_NORMAL\n-741 #undef FILL_EL_QUAD_D2_NORMAL\n-742#endif // FILL_EL_QUAD_D2_NORMAL\n-743\n-744#ifdef INIT_PHI\n-745 #undef INIT_PHI\n-746#endif // INIT_PHI\n-747\n-748#ifdef INIT_GRD_PHI\n-749 #undef INIT_GRD_PHI\n-750#endif // INIT_GRD_PHI\n-751\n-752#ifdef INIT_D2_PHI\n-753 #undef INIT_D2_PHI\n-754#endif // INIT_D2_PHI\n-755\n-756#ifdef INIT_D3_PHI\n-757 #undef INIT_D3_PHI\n-758#endif // INIT_D3_PHI\n-759\n-760#ifdef INIT_D4_PHI\n-761 #undef INIT_D4_PHI\n-762#endif // INIT_D4_PHI\n-763\n-764#ifdef INIT_TANGENTIAL\n-765 #undef INIT_TANGENTIAL\n-766#endif // INIT_TANGENTIAL\n-767\n-768#ifdef MESH_REFINED\n-769 #undef MESH_REFINED\n-770#endif // MESH_REFINED\n-771\n-772#ifdef MESH_COARSENED\n-773 #undef MESH_COARSENED\n-774#endif // MESH_COARSENED\n-775\n-776#ifdef GRAPH_MESH_BOUNDARY\n-777 #undef GRAPH_MESH_BOUNDARY\n-778#endif // GRAPH_MESH_BOUNDARY\n-779\n-780#ifdef GRAPH_MESH_ELEMENT_MARK\n-781 #undef GRAPH_MESH_ELEMENT_MARK\n-782#endif // GRAPH_MESH_ELEMENT_MARK\n-783\n-784#ifdef GRAPH_MESH_VERTEX_DOF\n-785 #undef GRAPH_MESH_VERTEX_DOF\n-786#endif // GRAPH_MESH_VERTEX_DOF\n-787\n-788#ifdef GRAPH_MESH_ELEMENT_INDEX\n-789 #undef GRAPH_MESH_ELEMENT_INDEX\n-790#endif // GRAPH_MESH_ELEMENT_INDEX\n-791\n-792#ifdef GET_MESH\n-793 #undef GET_MESH\n-794#endif // GET_MESH\n-795\n-796#ifdef GET_DOF_VEC\n-797 #undef GET_DOF_VEC\n-798#endif // GET_DOF_VEC\n-799\n-800#ifdef TRACE_DOF_VEC_PROTO\n-801 #undef TRACE_DOF_VEC_PROTO\n-802#endif // TRACE_DOF_VEC_PROTO\n-803\n-804#ifdef INIT_UH\n-805 #undef INIT_UH\n-806#endif // INIT_UH\n-807\n-808#ifdef INIT_GRD_UH\n-809 #undef INIT_GRD_UH\n-810#endif // INIT_GRD_UH\n-811\n-812#ifdef ellipt_est_d_init\n-813 #undef ellipt_est_d_init\n-814#endif // ellipt_est_d_init\n-815\n-816#ifdef head_est_d_init\n-817 #undef head_est_d_init\n-818#endif // head_est_d_init\n-819\n-820#ifdef element_est_d\n-821 #undef element_est_d\n-822#endif // element_est_d\n-823\n-824#ifdef element_est_d_finish\n-825 #undef element_est_d_finish\n-826#endif // element_est_d_finish\n-827\n-828#ifdef element_est_uh_d\n-829 #undef element_est_uh_d\n-830#endif // element_est_uh_d\n-831\n-832#ifdef element_est_grd_uh_d\n-833 #undef element_est_grd_uh_d\n-834#endif // element_est_grd_uh_d\n-835\n-836#ifdef ellipt_est_d_finish\n-837 #undef ellipt_est_d_finish\n-838#endif // ellipt_est_d_finish\n-839\n-840#ifdef heat_est_d_finish\n-841 #undef heat_est_d_finish\n-842#endif // heat_est_d_finish\n-843\n-844#ifdef TRAVERSE_FIRST\n-845 #undef TRAVERSE_FIRST\n-846#endif // TRAVERSE_FIRST\n-847\n-848#ifdef TRAVERSE_NEXT\n-849 #undef TRAVERSE_NEXT\n-850#endif // TRAVERSE_NEXT\n-851\n-852#ifdef TRAVERSE_START\n-853 #undef TRAVERSE_START\n-854#endif // TRAVERSE_START\n-855\n-856#ifdef TRAVERSE_STOP\n-857 #undef TRAVERSE_STOP\n-858#endif // TRAVERSE_STOP\n-859\n-860#ifdef TRAVERSE_NEIGHBOUR\n-861 #undef TRAVERSE_NEIGHBOUR\n-862#endif // TRAVERSE_NEIGHBOUR\n-863\n-864#ifdef IFF_TAG_ALBERTA\n-865 #undef IFF_TAG_ALBERTA\n-866#endif // IFF_TAG_ALBERTA\n-867\n-868#ifdef IFF_TAG_MESH\n-869 #undef IFF_TAG_MESH\n-870#endif // IFF_TAG_MESH\n-871\n-872#ifdef IFF_TAG_REAL_VEC\n-873 #undef IFF_TAG_REAL_VEC\n-874#endif // IFF_TAG_REAL_VEC\n-875\n-876#ifdef IFF_TAG_REAL_D_VEC\n-877 #undef IFF_TAG_REAL_D_VEC\n-878#endif // IFF_TAG_REAL_D_VEC\n-879\n-880#ifdef IFF_TAG_INT_VEC\n-881 #undef IFF_TAG_INT_VEC\n-882#endif // IFF_TAG_INT_VEC\n-883\n-884#ifdef IFF_TAG_UCHAR_VEC\n-885 #undef IFF_TAG_UCHAR_VEC\n-886#endif // IFF_TAG_UCHAR_VEC\n-887\n-888#ifdef IFF_TAG_SCHAR_VEC\n-889 #undef IFF_TAG_SCHAR_VEC\n-890#endif // IFF_TAG_SCHAR_VEC\n+124#endif // #if HAVE_ALBERTA\n+125\n+126#endif // #ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh\n+_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+#define ALBERTA\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\bD_\bu_\bn_\be\n+Include standard header files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+static K determinant(const FieldMatrix< K, 0, m > &matrix)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n+static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 >\n+&inverse)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+GeometryCache()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n+const Real & integrationElement(const ALBERTA EL_INFO &elInfo)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+FieldMatrix< Real, dim, dimWorld > JacobianTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+const JacobianTransposed & jacobianTransposed(const ALBERTA EL_INFO &elInfo)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+const JacobianInverseTransposed & jacobianInverseTransposed(const ALBERTA\n+EL_INFO &elInfo)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+const JacobianTransposed & jacobianTransposed()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+FieldMatrix< Real, dim, dimWorld > JacobianTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n+const Real & integrationElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n+GeometryCacheProxy(GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO\n+&elInfo)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n+const JacobianInverseTransposed & jacobianInverseTransposed()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00671.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00671.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: elementinfo.cc File Reference\n+dune-grid: agrid.hh File Reference\n \n \n \n \n \n \n \n@@ -70,36 +70,96 @@\n \n
    \n
    \n \n-
    elementinfo.cc File Reference
    \n+Classes |\n+Namespaces |\n+Macros
    \n+
    agrid.hh File Reference
    \n \n
    \n \n-

    provides a wrapper for ALBERTA's el_info structure \n+

    provides the AlbertaGrid class \n More...

    \n-
    #include <config.h>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n-#include <dune/grid/albertagrid/meshpointer.hh>
    \n-
    \n+
    #include <cassert>
    \n+#include <cstddef>
    \n+#include <algorithm>
    \n+#include <iostream>
    \n+#include <fstream>
    \n+#include <memory>
    \n+#include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/stdstreams.hh>
    \n+#include <dune/common/parallel/communication.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include <dune/grid/common/gridfactory.hh>
    \n+#include <dune/grid/common/adaptcallback.hh>
    \n+#include <dune/grid/common/sizecache.hh>
    \n+#include "albertaheader.hh"
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/capabilities.hh>
    \n+#include <dune/grid/albertagrid/backuprestore.hh>
    \n+#include <dune/grid/albertagrid/coordcache.hh>
    \n+#include <dune/grid/albertagrid/gridfamily.hh>
    \n+#include <dune/grid/albertagrid/level.hh>
    \n+#include <dune/grid/albertagrid/intersection.hh>
    \n+#include <dune/grid/albertagrid/intersectioniterator.hh>
    \n+#include <dune/grid/albertagrid/datahandle.hh>
    \n+#include <dune/grid/albertagrid/entityseed.hh>
    \n+#include "indexsets.hh"
    \n+#include "geometry.hh"
    \n+#include "entity.hh"
    \n+#include "hierarchiciterator.hh"
    \n+#include "treeiterator.hh"
    \n+#include "leveliterator.hh"
    \n+#include "leafiterator.hh"
    \n+#include "albertagrid.cc"
    \n+#include <dune/grid/albertagrid/undefine-3.0.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::AlbertaGrid< dim, dimworld >
     [ provides Dune::Grid ] More...
     
    \n \n \n \n \n-\n-\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n+\n+\n+\n

    \n+Macros

    #define _ALBERTA_H_
     
    \n

    Detailed Description

    \n-

    provides a wrapper for ALBERTA's el_info structure

    \n-
    Author
    Martin Nolte
    \n-
    \n+

    provides the AlbertaGrid class

    \n+
    Author
    Robert Kloefkorn and Martin Nolte
    \n+

    Macro Definition Documentation

    \n+\n+

    ◆ _ALBERTA_H_

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+
    #define _ALBERTA_H_
    \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,25 +1,66 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-elementinfo.cc File Reference\n-provides a wrapper for ALBERTA's el_info structure _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n+agrid.hh File Reference\n+provides the AlbertaGrid class _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\ba_\bd_\ba_\bp_\bt_\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bs_\bi_\bz_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+#include \"_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bb_\ba_\bc_\bk_\bu_\bp_\br_\be_\bs_\bt_\bo_\br_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bm_\bi_\bl_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bl_\be_\bv_\be_\bl_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh>\n+#include \"_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\"\n+#include \"_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\"\n+#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n+#include \"_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n+#include \"_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n+#include \"_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n+#include \"_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b._\bc_\bc\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bu_\bn_\bd_\be_\bf_\bi_\bn_\be_\b-_\b3_\b._\b0_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+\u00a0 [ p\bpr\bro\bov\bvi\bid\bde\bes\bs _\bD\bD_\bu\bu_\bn\bn_\be\be_\b:\b:_\b:\b:_\bG\bG_\br\br_\bi\bi_\bd\bd ] _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n+M\bMa\bac\bcr\bro\bos\bs\n+#define\u00a0 _\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bH_\b_\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-provides a wrapper for ALBERTA's el_info structure\n+provides the AlbertaGrid class\n Author\n- Martin Nolte\n+ Robert Kloefkorn and Martin Nolte\n+*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_H\bH_\b_ *\b**\b**\b**\b**\b*\n+#define _ALBERTA_H_\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00677.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00677.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: transformation.hh File Reference\n+dune-grid: meshpointer.cc File Reference\n \n \n \n \n \n \n \n@@ -70,34 +70,28 @@\n \n \n
    \n \n-
    transformation.hh File Reference
    \n+
    meshpointer.cc File Reference
    \n
    \n
    \n-
    #include <dune/common/fvector.hh>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::AlbertaTransformation
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/albertagrid/meshpointer.hh>
    \n+
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,19 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-transformation.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+meshpointer.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00680.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00680.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: geometry.cc File Reference\n+dune-grid: macrodata.cc File Reference\n \n \n \n \n \n \n \n@@ -70,59 +70,38 @@\n \n \n
    \n \n-
    geometry.cc File Reference
    \n+Namespaces
    \n+
    macrodata.cc File Reference
    \n \n
    \n-\n-

    Go to the source code of this file.

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

    \n-Classes

    struct  Dune::AlbertaGridLocalGeometryProvider< Grid >::GeoInFatherCoordReader< Grid >
     
    struct  Dune::AlbertaGridLocalGeometryProvider< Grid >::FaceCoordReader< Grid >
     
    \n+\n+

    provides a wrapper for ALBERTA's macro_data structure \n+More...

    \n+
    #include <config.h>
    \n+#include <vector>
    \n+#include <array>
    \n+#include <dune/grid/common/exceptions.hh>
    \n+#include <dune/grid/albertagrid/macrodata.hh>
    \n+
    \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n+\n+\n

    \n-Macros

    #define DUNE_ALBERTA_GEOMETRY_CC
     
    namespace  Dune::Alberta
     
    \n-

    Macro Definition Documentation

    \n-\n-

    ◆ DUNE_ALBERTA_GEOMETRY_CC

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define DUNE_ALBERTA_GEOMETRY_CC
    \n-
    \n-\n-
    \n-
    \n-
    \n+

    Detailed Description

    \n+

    provides a wrapper for ALBERTA's macro_data structure

    \n+
    Author
    Martin Nolte
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,27 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n-geometry.cc File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n- _\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd\n- _\b>\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+macrodata.cc File Reference\n+provides a wrapper for ALBERTA's macro_data structure _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\bd_\ba_\bt_\ba_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-M\bMa\bac\bcr\bro\bos\bs\n-#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bG_\bE_\bO_\bM_\bE_\bT_\bR_\bY_\b__\bC_\bC\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n \u00a0\n-*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_G\bGE\bEO\bOM\bME\bET\bTR\bRY\bY_\b_C\bCC\bC *\b**\b**\b**\b**\b*\n-#define DUNE_ALBERTA_GEOMETRY_CC\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+provides a wrapper for ALBERTA's macro_data structure\n+ Author\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00683.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00683.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: undefine-2.0.hh File Reference\n+dune-grid: elementinfo.cc File Reference\n \n \n \n \n \n \n \n@@ -69,25 +69,37 @@\n \n \n \n
    \n-
    undefine-2.0.hh File Reference
    \n+ \n+
    elementinfo.cc File Reference
    \n
    \n
    \n \n-

    Contains #undefs for all preprocessor macros defined by alberta. \n+

    provides a wrapper for ALBERTA's el_info structure \n More...

    \n-\n-

    Go to the source code of this file.

    \n+
    #include <config.h>
    \n+#include <dune/grid/albertagrid/elementinfo.hh>
    \n+#include <dune/grid/albertagrid/meshpointer.hh>
    \n+
    \n+\n+\n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n

    Detailed Description

    \n-

    Contains #undefs for all preprocessor macros defined by alberta.

    \n-

    This file is created automatically by the perl script undefAllMacros.pl.

    \n+

    provides a wrapper for ALBERTA's el_info structure

    \n+
    Author
    Martin Nolte
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,25 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-undefine-2.0.hh File Reference\n-Contains #undefs for all preprocessor macros defined by alberta. _\bM_\bo_\br_\be_\b._\b._\b.\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+elementinfo.cc File Reference\n+provides a wrapper for ALBERTA's el_info structure _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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 #undefs for all preprocessor macros defined by alberta.\n-This file is created automatically by the perl script undefAllMacros.pl.\n+provides a wrapper for ALBERTA's el_info structure\n+ Author\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00686.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00686.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dofvector.hh File Reference\n+dune-grid: undefine-2.0.hh File Reference\n \n \n \n \n \n \n \n@@ -69,61 +69,25 @@\n \n \n
    \n
    \n- \n-
    dofvector.hh File Reference
    \n+
    undefine-2.0.hh File Reference
    \n
    \n
    \n-
    #include <cstdlib>
    \n-#include <limits>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n-#include <dune/grid/albertagrid/refinement.hh>
    \n-
    \n+\n+

    Contains #undefs for all preprocessor macros defined by alberta. \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-Classes

    struct  Dune::Alberta::DofVectorProvider< int >
     
    struct  Dune::Alberta::DofVectorProvider< signed char >
     
    struct  Dune::Alberta::DofVectorProvider< unsigned char >
     
    struct  Dune::Alberta::DofVectorProvider< Real >
     
    struct  Dune::Alberta::DofVectorProvider< GlobalVector >
     
    class  Dune::Alberta::DofVectorPointer< Dof >
     
    \n-\n-\n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n-\n-\n-\n-\n-\n-\n-\n-

    \n-Functions

    void Dune::Alberta::abs (const DofVectorPointer< int > &dofVector)
     
    int Dune::Alberta::max (const DofVectorPointer< int > &dofVector)
     
    int Dune::Alberta::min (const DofVectorPointer< int > &dofVector)
     
    \n-
    \n+

    Detailed Description

    \n+

    Contains #undefs for all preprocessor macros defined by alberta.

    \n+

    This file is created automatically by the perl script undefAllMacros.pl.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,43 +1,15 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\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-dofvector.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+undefine-2.0.hh File Reference\n+Contains #undefs for all preprocessor macros defined by alberta. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bD_\bo_\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 Include standard header files.\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bb_\bs (const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br< int > &dofVector)\n-\u00a0\n- int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\ba_\bx (const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br< int > &dofVector)\n-\u00a0\n- int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\bi_\bn (const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br< int > &dofVector)\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 #undefs for all preprocessor macros defined by alberta.\n+This file is created automatically by the perl script undefAllMacros.pl.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00686_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00686_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dofvector.hh Source File\n+dune-grid: undefine-2.0.hh Source File\n \n \n \n \n \n \n \n@@ -74,532 +74,476 @@\n \n \n \n
    \n-
    dofvector.hh
    \n+
    undefine-2.0.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_DOFVECTOR_HH
    \n-
    6#define DUNE_ALBERTA_DOFVECTOR_HH
    \n-
    7
    \n-
    8#include <cstdlib>
    \n-
    9#include <limits>
    \n-
    10
    \n-\n-\n-\n-
    14
    \n-
    15#if HAVE_ALBERTA
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n+
    12#ifdef _ALBERTA_H_
    \n+
    13 #undef _ALBERTA_H_
    \n+
    14#endif // _ALBERTA_H_
    \n+
    15
    \n+
    16#ifdef ALBERTA_VERSION
    \n+
    17 #undef ALBERTA_VERSION
    \n+
    18#endif // ALBERTA_VERSION
    \n
    19
    \n-
    20 namespace Alberta
    \n-
    21 {
    \n-
    22
    \n-
    23 // External Forward Declarations
    \n-
    24 // -----------------------------
    \n-
    25
    \n-
    26 template< int dim >
    \n-
    27 class MeshPointer;
    \n-
    28
    \n-
    29
    \n-
    30
    \n-
    31 // DofVectorProvider
    \n-
    32 // -----------------
    \n-
    33
    \n-
    34 template< class Dof >
    \n-\n-
    36
    \n-
    37 template<>
    \n-
    \n-
    38 struct DofVectorProvider< int >
    \n-
    39 {
    \n-
    40 typedef ALBERTA DOF_INT_VEC DofVector;
    \n-
    41
    \n-
    \n-
    42 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n-
    43 {
    \n-
    44 return ALBERTA get_dof_int_vec( name.c_str(), dofSpace );
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    \n-
    47 static void free ( DofVector *dofVector )
    \n-
    48 {
    \n-
    49 ALBERTA free_dof_int_vec( dofVector );
    \n-
    50 }
    \n-
    \n+
    20#ifdef ALBERTA_DEBUG
    \n+
    21 #undef ALBERTA_DEBUG
    \n+
    22#endif // ALBERTA_DEBUG
    \n+
    23
    \n+
    24#ifdef DIM_MAX
    \n+
    25 #undef DIM_MAX
    \n+
    26#endif // DIM_MAX
    \n+
    27
    \n+
    28#ifdef N_VERTICES
    \n+
    29 #undef N_VERTICES
    \n+
    30#endif // N_VERTICES
    \n+
    31
    \n+
    32#ifdef N_EDGES
    \n+
    33 #undef N_EDGES
    \n+
    34#endif // N_EDGES
    \n+
    35
    \n+
    36#ifdef N_WALLS
    \n+
    37 #undef N_WALLS
    \n+
    38#endif // N_WALLS
    \n+
    39
    \n+
    40#ifdef N_FACES
    \n+
    41 #undef N_FACES
    \n+
    42#endif // N_FACES
    \n+
    43
    \n+
    44#ifdef N_NEIGH
    \n+
    45 #undef N_NEIGH
    \n+
    46#endif // N_NEIGH
    \n+
    47
    \n+
    48#ifdef DIM_FAC
    \n+
    49 #undef DIM_FAC
    \n+
    50#endif // DIM_FAC
    \n
    51
    \n-
    \n-
    52 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n-
    53 {
    \n-
    54 return ALBERTA read_dof_int_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    \n-
    57 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n-
    58 {
    \n-
    59 int success = ALBERTA write_dof_int_vec_xdr( dofVector, filename.c_str() );
    \n-
    60 return (success == 0);
    \n-
    61 }
    \n-
    \n-
    62 };
    \n-
    \n+
    52#ifdef N_VERTICES_0D
    \n+
    53 #undef N_VERTICES_0D
    \n+
    54#endif // N_VERTICES_0D
    \n+
    55
    \n+
    56#ifdef N_EDGES_0D
    \n+
    57 #undef N_EDGES_0D
    \n+
    58#endif // N_EDGES_0D
    \n+
    59
    \n+
    60#ifdef N_FACES_0D
    \n+
    61 #undef N_FACES_0D
    \n+
    62#endif // N_FACES_0D
    \n
    63
    \n-
    64 template<>
    \n-
    \n-
    65 struct DofVectorProvider< signed char >
    \n-
    66 {
    \n-
    67 typedef ALBERTA DOF_SCHAR_VEC DofVector;
    \n-
    68
    \n-
    \n-
    69 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n-
    70 {
    \n-
    71 return ALBERTA get_dof_schar_vec( name.c_str(), dofSpace );
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    \n-
    74 static void free ( DofVector *dofVector )
    \n-
    75 {
    \n-
    76 ALBERTA free_dof_schar_vec( dofVector );
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    79 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n-
    80 {
    \n-
    81 return ALBERTA read_dof_schar_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n-
    82 }
    \n-
    \n+
    64#ifdef N_NEIGH_0D
    \n+
    65 #undef N_NEIGH_0D
    \n+
    66#endif // N_NEIGH_0D
    \n+
    67
    \n+
    68#ifdef N_WALLS_0D
    \n+
    69 #undef N_WALLS_0D
    \n+
    70#endif // N_WALLS_0D
    \n+
    71
    \n+
    72#ifdef N_VERTICES_1D
    \n+
    73 #undef N_VERTICES_1D
    \n+
    74#endif // N_VERTICES_1D
    \n+
    75
    \n+
    76#ifdef N_EDGES_1D
    \n+
    77 #undef N_EDGES_1D
    \n+
    78#endif // N_EDGES_1D
    \n+
    79
    \n+
    80#ifdef N_FACES_1D
    \n+
    81 #undef N_FACES_1D
    \n+
    82#endif // N_FACES_1D
    \n
    83
    \n-
    \n-
    84 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n-
    85 {
    \n-
    86 int success = ALBERTA write_dof_schar_vec_xdr( dofVector, filename.c_str() );
    \n-
    87 return (success == 0);
    \n-
    88 }
    \n-
    \n-
    89 };
    \n-
    \n-
    90
    \n-
    91 template<>
    \n-
    \n-
    92 struct DofVectorProvider< unsigned char >
    \n-
    93 {
    \n-
    94 typedef ALBERTA DOF_UCHAR_VEC DofVector;
    \n+
    84#ifdef N_NEIGH_1D
    \n+
    85 #undef N_NEIGH_1D
    \n+
    86#endif // N_NEIGH_1D
    \n+
    87
    \n+
    88#ifdef N_WALLS_1D
    \n+
    89 #undef N_WALLS_1D
    \n+
    90#endif // N_WALLS_1D
    \n+
    91
    \n+
    92#ifdef N_VERTICES_2D
    \n+
    93 #undef N_VERTICES_2D
    \n+
    94#endif // N_VERTICES_2D
    \n
    95
    \n-
    \n-
    96 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n-
    97 {
    \n-
    98 return ALBERTA get_dof_uchar_vec( name.c_str(), dofSpace );
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    \n-
    101 static void free ( DofVector *dofVector )
    \n-
    102 {
    \n-
    103 ALBERTA free_dof_uchar_vec( dofVector );
    \n-
    104 }
    \n-
    \n-
    105
    \n-
    \n-
    106 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n-
    107 {
    \n-
    108 return ALBERTA read_dof_uchar_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n-
    109 }
    \n-
    \n-
    110
    \n-
    \n-
    111 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n-
    112 {
    \n-
    113 int success = ALBERTA write_dof_uchar_vec_xdr( dofVector, filename.c_str() );
    \n-
    114 return (success == 0);
    \n-
    115 }
    \n-
    \n-
    116 };
    \n-
    \n-
    117
    \n-
    118 template<>
    \n-
    \n-\n-
    120 {
    \n-
    121 typedef ALBERTA DOF_REAL_VEC DofVector;
    \n-
    122
    \n-
    \n-
    123 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n-
    124 {
    \n-
    125 return ALBERTA get_dof_real_vec( name.c_str(), dofSpace );
    \n-
    126 }
    \n-
    \n+
    96#ifdef N_EDGES_2D
    \n+
    97 #undef N_EDGES_2D
    \n+
    98#endif // N_EDGES_2D
    \n+
    99
    \n+
    100#ifdef N_FACES_2D
    \n+
    101 #undef N_FACES_2D
    \n+
    102#endif // N_FACES_2D
    \n+
    103
    \n+
    104#ifdef N_NEIGH_2D
    \n+
    105 #undef N_NEIGH_2D
    \n+
    106#endif // N_NEIGH_2D
    \n+
    107
    \n+
    108#ifdef N_WALLS_2D
    \n+
    109 #undef N_WALLS_2D
    \n+
    110#endif // N_WALLS_2D
    \n+
    111
    \n+
    112#ifdef N_VERTICES_3D
    \n+
    113 #undef N_VERTICES_3D
    \n+
    114#endif // N_VERTICES_3D
    \n+
    115
    \n+
    116#ifdef N_EDGES_3D
    \n+
    117 #undef N_EDGES_3D
    \n+
    118#endif // N_EDGES_3D
    \n+
    119
    \n+
    120#ifdef N_FACES_3D
    \n+
    121 #undef N_FACES_3D
    \n+
    122#endif // N_FACES_3D
    \n+
    123
    \n+
    124#ifdef N_NEIGH_3D
    \n+
    125 #undef N_NEIGH_3D
    \n+
    126#endif // N_NEIGH_3D
    \n
    127
    \n-
    \n-
    128 static void free ( DofVector *dofVector )
    \n-
    129 {
    \n-
    130 ALBERTA free_dof_real_vec( dofVector );
    \n-
    131 }
    \n-
    \n-
    132
    \n-
    \n-
    133 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n-
    134 {
    \n-
    135 return ALBERTA read_dof_real_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    \n-
    138 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n-
    139 {
    \n-
    140 int success = ALBERTA write_dof_real_vec_xdr( dofVector, filename.c_str() );
    \n-
    141 return (success == 0);
    \n-
    142 }
    \n-
    \n-
    143 };
    \n-
    \n-
    144
    \n-
    145 template<>
    \n-
    \n-\n-
    147 {
    \n-
    148 typedef ALBERTA DOF_REAL_D_VEC DofVector;
    \n-
    149
    \n-
    \n-
    150 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n-
    151 {
    \n-
    152 return ALBERTA get_dof_real_d_vec( name.c_str(), dofSpace );
    \n-
    153 }
    \n-
    \n-
    154
    \n-
    \n-
    155 static void free ( DofVector *dofVector )
    \n-
    156 {
    \n-
    157 ALBERTA free_dof_real_d_vec( dofVector );
    \n-
    158 }
    \n-
    \n+
    128#ifdef N_WALLS_3D
    \n+
    129 #undef N_WALLS_3D
    \n+
    130#endif // N_WALLS_3D
    \n+
    131
    \n+
    132#ifdef N_VERTICES_MAX
    \n+
    133 #undef N_VERTICES_MAX
    \n+
    134#endif // N_VERTICES_MAX
    \n+
    135
    \n+
    136#ifdef N_EDGES_MAX
    \n+
    137 #undef N_EDGES_MAX
    \n+
    138#endif // N_EDGES_MAX
    \n+
    139
    \n+
    140#ifdef N_FACES_MAX
    \n+
    141 #undef N_FACES_MAX
    \n+
    142#endif // N_FACES_MAX
    \n+
    143
    \n+
    144#ifdef N_NEIGH_MAX
    \n+
    145 #undef N_NEIGH_MAX
    \n+
    146#endif // N_NEIGH_MAX
    \n+
    147
    \n+
    148#ifdef N_WALLS_MAX
    \n+
    149 #undef N_WALLS_MAX
    \n+
    150#endif // N_WALLS_MAX
    \n+
    151
    \n+
    152#ifdef N_LAMBDA
    \n+
    153 #undef N_LAMBDA
    \n+
    154#endif // N_LAMBDA
    \n+
    155
    \n+
    156#ifdef LAMBDA_MAX
    \n+
    157 #undef LAMBDA_MAX
    \n+
    158#endif // LAMBDA_MAX
    \n
    159
    \n-
    \n-
    160 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n-
    161 {
    \n-
    162 return ALBERTA read_dof_real_d_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n-
    163 }
    \n-
    \n-
    164
    \n-
    \n-
    165 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n-
    166 {
    \n-
    167 int success = ALBERTA write_dof_real_d_vec_xdr( dofVector, filename.c_str() );
    \n-
    168 return (success == 0);
    \n-
    169 }
    \n-
    \n-
    170 };
    \n-
    \n+
    160#ifdef INDEX
    \n+
    161 #undef INDEX
    \n+
    162#endif // INDEX
    \n+
    163
    \n+
    164#ifdef INDEX
    \n+
    165 #undef INDEX
    \n+
    166#endif // INDEX
    \n+
    167
    \n+
    168#ifdef IS_LEAF_EL
    \n+
    169 #undef IS_LEAF_EL
    \n+
    170#endif // IS_LEAF_EL
    \n
    171
    \n-
    172
    \n-
    173
    \n-
    174 // DofVectorPointer
    \n-
    175 // ----------------
    \n-
    176
    \n-
    177 template< class Dof >
    \n-
    \n-\n-
    179 {
    \n-\n-
    181
    \n-\n+
    172#ifdef LEAF_DATA
    \n+
    173 #undef LEAF_DATA
    \n+
    174#endif // LEAF_DATA
    \n+
    175
    \n+
    176#ifdef INTERIOR
    \n+
    177 #undef INTERIOR
    \n+
    178#endif // INTERIOR
    \n+
    179
    \n+
    180#ifdef DIRICHLET
    \n+
    181 #undef DIRICHLET
    \n+
    182#endif // DIRICHLET
    \n
    183
    \n-
    184 public:
    \n-
    185 typedef typename DofVectorProvider::DofVector DofVector;
    \n-
    186
    \n-
    187 static const bool supportsAdaptationData = true;
    \n-
    188
    \n-
    189 private:
    \n-
    190 DofVector *dofVector_;
    \n+
    184#ifdef NEUMANN
    \n+
    185 #undef NEUMANN
    \n+
    186#endif // NEUMANN
    \n+
    187
    \n+
    188#ifdef IS_NEUMANN
    \n+
    189 #undef IS_NEUMANN
    \n+
    190#endif // IS_NEUMANN
    \n
    191
    \n-
    192 public:
    \n-
    \n-\n-
    194 : dofVector_( NULL )
    \n-
    195 {}
    \n-
    \n-
    196
    \n-
    \n-\n-
    198 const std::string &name = "" )
    \n-
    199 : dofVector_ ( DofVectorProvider::get( dofSpace, name ) )
    \n-
    200 {}
    \n-
    \n-
    201
    \n-
    \n-
    202 explicit DofVectorPointer ( DofVector *dofVector )
    \n-
    203 : dofVector_( dofVector )
    \n-
    204 {}
    \n-
    \n-
    205
    \n-
    \n-
    206 explicit operator bool () const
    \n-
    207 {
    \n-
    208 return (bool)dofVector_;
    \n-
    209 }
    \n-
    \n-
    210
    \n-
    \n-
    211 operator DofVector * () const
    \n-
    212 {
    \n-
    213 return dofVector_;
    \n-
    214 }
    \n-
    \n+
    192#ifdef IS_DIRICHLET
    \n+
    193 #undef IS_DIRICHLET
    \n+
    194#endif // IS_DIRICHLET
    \n+
    195
    \n+
    196#ifdef IS_INTERIOR
    \n+
    197 #undef IS_INTERIOR
    \n+
    198#endif // IS_INTERIOR
    \n+
    199
    \n+
    200#ifdef N_NODE_TYPES
    \n+
    201 #undef N_NODE_TYPES
    \n+
    202#endif // N_NODE_TYPES
    \n+
    203
    \n+
    204#ifdef VERTEX
    \n+
    205 #undef VERTEX
    \n+
    206#endif // VERTEX
    \n+
    207
    \n+
    208#ifdef CENTER
    \n+
    209 #undef CENTER
    \n+
    210#endif // CENTER
    \n+
    211
    \n+
    212#ifdef EDGE
    \n+
    213 #undef EDGE
    \n+
    214#endif // EDGE
    \n
    215
    \n-
    \n-
    216 operator Dof * () const
    \n-
    217 {
    \n-
    218 Dof *ptr = NULL;
    \n-
    219 GET_DOF_VEC( ptr, dofVector_ );
    \n-
    220 return ptr;
    \n-
    221 }
    \n-
    \n-
    222
    \n-
    \n-
    223 const DofSpace *dofSpace () const
    \n-
    224 {
    \n-
    225 return dofVector_->fe_space;
    \n-
    226 }
    \n-
    \n+
    216#ifdef FACE
    \n+
    217 #undef FACE
    \n+
    218#endif // FACE
    \n+
    219
    \n+
    220#ifdef LIST_ENTRY
    \n+
    221 #undef LIST_ENTRY
    \n+
    222#endif // LIST_ENTRY
    \n+
    223
    \n+
    224#ifdef WALL_BOUND
    \n+
    225 #undef WALL_BOUND
    \n+
    226#endif // WALL_BOUND
    \n
    227
    \n-
    \n-
    228 std::string name () const
    \n-
    229 {
    \n-
    230 if( dofVector_ )
    \n-
    231 return dofVector_->name;
    \n-
    232 else
    \n-
    233 return std::string();
    \n-
    234 }
    \n-
    \n+
    228#ifdef FILL_NOTHING
    \n+
    229 #undef FILL_NOTHING
    \n+
    230#endif // FILL_NOTHING
    \n+
    231
    \n+
    232#ifdef FILL_COORDS
    \n+
    233 #undef FILL_COORDS
    \n+
    234#endif // FILL_COORDS
    \n
    235
    \n-
    \n-
    236 void create ( const DofSpace *dofSpace, const std::string &name = "" )
    \n-
    237 {
    \n-
    238 release();
    \n-
    239 dofVector_ = DofVectorProvider::get( dofSpace, name );
    \n-
    240 }
    \n-
    \n-
    241
    \n-
    242 template< int dim >
    \n-
    \n-
    243 void read ( const std::string &filename, const MeshPointer< dim > &meshPointer )
    \n-
    244 {
    \n-
    245 release();
    \n-
    246 dofVector_ = DofVectorProvider::read( filename, meshPointer, NULL );
    \n-
    247 }
    \n-
    \n-
    248
    \n-
    \n-
    249 bool write ( const std::string &filename ) const
    \n-
    250 {
    \n-
    251 return DofVectorProvider::write( dofVector_, filename );
    \n-
    252 }
    \n-
    \n-
    253
    \n-
    \n-
    254 void release ()
    \n-
    255 {
    \n-
    256 if( dofVector_ )
    \n-
    257 {
    \n-
    258 DofVectorProvider::free( dofVector_ );
    \n-
    259 dofVector_ = NULL;
    \n-
    260 }
    \n-
    261 }
    \n-
    \n-
    262
    \n-
    263 template< class Functor >
    \n-
    \n-
    264 void forEach ( Functor &functor ) const
    \n-
    265 {
    \n-
    266 Dof *array = (Dof *)(*this);
    \n-
    267 FOR_ALL_DOFS( dofSpace()->admin, functor( array[ dof ] ) );
    \n-
    268 }
    \n-
    \n-
    269
    \n-
    \n-
    270 void initialize ( const Dof &value )
    \n-
    271 {
    \n-
    272 Dof *array = (Dof *)(*this);
    \n-
    273 FOR_ALL_DOFS( dofSpace()->admin, array[ dof ] = value );
    \n-
    274 }
    \n-
    \n+
    236#ifdef FILL_BOUND
    \n+
    237 #undef FILL_BOUND
    \n+
    238#endif // FILL_BOUND
    \n+
    239
    \n+
    240#ifdef FILL_NEIGH
    \n+
    241 #undef FILL_NEIGH
    \n+
    242#endif // FILL_NEIGH
    \n+
    243
    \n+
    244#ifdef FILL_OPP_COORDS
    \n+
    245 #undef FILL_OPP_COORDS
    \n+
    246#endif // FILL_OPP_COORDS
    \n+
    247
    \n+
    248#ifdef FILL_ORIENTATION
    \n+
    249 #undef FILL_ORIENTATION
    \n+
    250#endif // FILL_ORIENTATION
    \n+
    251
    \n+
    252#ifdef FILL_EL_TYPE
    \n+
    253 #undef FILL_EL_TYPE
    \n+
    254#endif // FILL_EL_TYPE
    \n+
    255
    \n+
    256#ifdef FILL_PROJECTION
    \n+
    257 #undef FILL_PROJECTION
    \n+
    258#endif // FILL_PROJECTION
    \n+
    259
    \n+
    260#ifdef FILL_ANY
    \n+
    261 #undef FILL_ANY
    \n+
    262#endif // FILL_ANY
    \n+
    263
    \n+
    264#ifdef HOOK_QUEUE_OFFSET
    \n+
    265 #undef HOOK_QUEUE_OFFSET
    \n+
    266#endif // HOOK_QUEUE_OFFSET
    \n+
    267
    \n+
    268#ifdef RUN_HOOKS_0
    \n+
    269 #undef RUN_HOOKS_0
    \n+
    270#endif // RUN_HOOKS_0
    \n+
    271
    \n+
    272#ifdef RUN_BAS_FCTS_HOOKS
    \n+
    273 #undef RUN_BAS_FCTS_HOOKS
    \n+
    274#endif // RUN_BAS_FCTS_HOOKS
    \n
    275
    \n-
    276 template< class AdaptationData >
    \n-
    \n-
    277 AdaptationData *getAdaptationData () const
    \n-
    278 {
    \n-
    279 assert( dofVector_ );
    \n-
    280 assert( dofVector_->user_data );
    \n-
    281 return static_cast< AdaptationData * >( dofVector_->user_data );
    \n-
    282 }
    \n-
    \n+
    276#ifdef RUN_HOOKS_1
    \n+
    277 #undef RUN_HOOKS_1
    \n+
    278#endif // RUN_HOOKS_1
    \n+
    279
    \n+
    280#ifdef RUN_HOOKS_2
    \n+
    281 #undef RUN_HOOKS_2
    \n+
    282#endif // RUN_HOOKS_2
    \n
    283
    \n-
    284 template< class AdaptationData >
    \n-
    \n-
    285 void setAdaptationData ( AdaptationData *adaptationData )
    \n-
    286 {
    \n-
    287 assert( dofVector_ );
    \n-
    288 dofVector_->user_data = adaptationData;
    \n-
    289 }
    \n-
    \n-
    290
    \n-
    291 template< class Interpolation >
    \n-
    \n-\n-
    293 {
    \n-
    294 assert( dofVector_ );
    \n-
    295 dofVector_->refine_interpol = &refineInterpolate< Interpolation >;
    \n-
    296 }
    \n-
    \n-
    297
    \n-
    298 template< class Restriction >
    \n-
    \n-\n-
    300 {
    \n-
    301 assert( dofVector_ );
    \n-
    302 dofVector_->coarse_restrict = &coarsenRestrict< Restriction >;
    \n-
    303 }
    \n-
    \n-
    304
    \n-
    305 private:
    \n-
    306 template< class Interpolation >
    \n-
    307 static void refineInterpolate ( DofVector *dofVector, RC_LIST_EL *list, int n )
    \n-
    308 {
    \n-
    309 const This dofVectorPointer( dofVector );
    \n-
    310 typename Interpolation::Patch patch( list, n );
    \n-
    311 Interpolation::interpolateVector( dofVectorPointer, patch );
    \n-
    312 }
    \n-
    313
    \n-
    314 template< class Restriction >
    \n-
    315 static void coarsenRestrict ( DofVector *dofVector, RC_LIST_EL *list, int n )
    \n-
    316 {
    \n-
    317 const This dofVectorPointer( dofVector );
    \n-
    318 typename Restriction::Patch patch( list, n );
    \n-
    319 Restriction::restrictVector( dofVectorPointer, patch );
    \n-
    320 }
    \n-
    321 };
    \n-
    \n-
    322
    \n+
    284#ifdef RUN_HOOKS_3
    \n+
    285 #undef RUN_HOOKS_3
    \n+
    286#endif // RUN_HOOKS_3
    \n+
    287
    \n+
    288#ifdef RUN_HOOKS_4
    \n+
    289 #undef RUN_HOOKS_4
    \n+
    290#endif // RUN_HOOKS_4
    \n+
    291
    \n+
    292#ifdef RUN_HOOKS_5
    \n+
    293 #undef RUN_HOOKS_5
    \n+
    294#endif // RUN_HOOKS_5
    \n+
    295
    \n+
    296#ifdef RUN_HOOKS_6
    \n+
    297 #undef RUN_HOOKS_6
    \n+
    298#endif // RUN_HOOKS_6
    \n+
    299
    \n+
    300#ifdef RUN_HOOKS_7
    \n+
    301 #undef RUN_HOOKS_7
    \n+
    302#endif // RUN_HOOKS_7
    \n+
    303
    \n+
    304#ifdef CALL_EVERY_EL_PREORDER
    \n+
    305 #undef CALL_EVERY_EL_PREORDER
    \n+
    306#endif // CALL_EVERY_EL_PREORDER
    \n+
    307
    \n+
    308#ifdef CALL_EVERY_EL_INORDER
    \n+
    309 #undef CALL_EVERY_EL_INORDER
    \n+
    310#endif // CALL_EVERY_EL_INORDER
    \n+
    311
    \n+
    312#ifdef CALL_EVERY_EL_POSTORDER
    \n+
    313 #undef CALL_EVERY_EL_POSTORDER
    \n+
    314#endif // CALL_EVERY_EL_POSTORDER
    \n+
    315
    \n+
    316#ifdef CALL_LEAF_EL
    \n+
    317 #undef CALL_LEAF_EL
    \n+
    318#endif // CALL_LEAF_EL
    \n+
    319
    \n+
    320#ifdef CALL_LEAF_EL_LEVEL
    \n+
    321 #undef CALL_LEAF_EL_LEVEL
    \n+
    322#endif // CALL_LEAF_EL_LEVEL
    \n
    323
    \n-
    324
    \n-
    325 // Auxiliary Functions
    \n-
    326 // --------------------
    \n+
    324#ifdef CALL_EL_LEVEL
    \n+
    325 #undef CALL_EL_LEVEL
    \n+
    326#endif // CALL_EL_LEVEL
    \n
    327
    \n-
    \n-
    328 inline void abs ( const DofVectorPointer< int > &dofVector )
    \n-
    329 {
    \n-
    330 assert( !dofVector == false );
    \n-
    331 int *array = (int *)dofVector;
    \n-
    332 FOR_ALL_DOFS( dofVector.dofSpace()->admin,
    \n-
    333 array[ dof ] = std::abs( array[ dof ] ) );
    \n-
    334 }
    \n-
    \n+
    328#ifdef CALL_MG_LEVEL
    \n+
    329 #undef CALL_MG_LEVEL
    \n+
    330#endif // CALL_MG_LEVEL
    \n+
    331
    \n+
    332#ifdef TEST_FLAG
    \n+
    333 #undef TEST_FLAG
    \n+
    334#endif // TEST_FLAG
    \n
    335
    \n-
    336
    \n-
    \n-
    337 inline int max ( const DofVectorPointer< int > &dofVector )
    \n-
    338 {
    \n-
    339 assert( !dofVector == false );
    \n-
    340 int *array = (int *)dofVector;
    \n-
    341 int result = std::numeric_limits< int >::min();
    \n-
    342 FOR_ALL_DOFS( dofVector.dofSpace()->admin,
    \n-
    343 result = std::max( result, array[ dof ] ) );
    \n-
    344 return result;
    \n-
    345 }
    \n-
    \n-
    346
    \n+
    336#ifdef DOF_ADMIN_DEF
    \n+
    337 #undef DOF_ADMIN_DEF
    \n+
    338#endif // DOF_ADMIN_DEF
    \n+
    339
    \n+
    340#ifdef DOF_FREE_SIZE
    \n+
    341 #undef DOF_FREE_SIZE
    \n+
    342#endif // DOF_FREE_SIZE
    \n+
    343
    \n+
    344#ifdef DOF_UNIT_ALL_FREE
    \n+
    345 #undef DOF_UNIT_ALL_FREE
    \n+
    346#endif // DOF_UNIT_ALL_FREE
    \n
    347
    \n-
    \n-
    348 inline int min ( const DofVectorPointer< int > &dofVector )
    \n-
    349 {
    \n-
    350 assert( !dofVector == false );
    \n-
    351 int *array = (int *)dofVector;
    \n-
    352 int result = std::numeric_limits< int >::max();
    \n-
    353 FOR_ALL_DOFS( dofVector.dofSpace()->admin,
    \n-
    354 result = std::min( result, array[ dof ] ) );
    \n-
    355 return result;
    \n-
    356 }
    \n-
    \n-
    357
    \n-
    358 } // namespace Alberta
    \n+
    348#ifdef FOR_ALL_DOFS
    \n+
    349 #undef FOR_ALL_DOFS
    \n+
    350#endif // FOR_ALL_DOFS
    \n+
    351
    \n+
    352#ifdef FOR_ALL_FREE_DOFS
    \n+
    353 #undef FOR_ALL_FREE_DOFS
    \n+
    354#endif // FOR_ALL_FREE_DOFS
    \n+
    355
    \n+
    356#ifdef DOWBM_FULL
    \n+
    357 #undef DOWBM_FULL
    \n+
    358#endif // DOWBM_FULL
    \n
    359
    \n-
    360} // namespace Dune
    \n-
    361
    \n-
    362#endif // #if HAVE_ALBERTA
    \n+
    360#ifdef DOWBM_SYMM
    \n+
    361 #undef DOWBM_SYMM
    \n+
    362#endif // DOWBM_SYMM
    \n
    363
    \n-
    364#endif // #ifndef DUNE_ALBERTA_DOFVECTOR_HH
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
    \n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n-
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n-
    void abs(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:328
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n-
    int min(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:348
    \n-
    int max(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:337
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition meshpointer.hh:40
    \n-
    Definition dofvector.hh:35
    \n-
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:42
    \n-
    ALBERTA DOF_INT_VEC DofVector
    Definition dofvector.hh:40
    \n-
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:57
    \n-
    static void free(DofVector *dofVector)
    Definition dofvector.hh:47
    \n-
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:52
    \n-
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:84
    \n-
    static void free(DofVector *dofVector)
    Definition dofvector.hh:74
    \n-
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:69
    \n-
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:79
    \n-
    ALBERTA DOF_SCHAR_VEC DofVector
    Definition dofvector.hh:67
    \n-
    static void free(DofVector *dofVector)
    Definition dofvector.hh:101
    \n-
    ALBERTA DOF_UCHAR_VEC DofVector
    Definition dofvector.hh:94
    \n-
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:106
    \n-
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:96
    \n-
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:111
    \n-
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:123
    \n-
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:133
    \n-
    static void free(DofVector *dofVector)
    Definition dofvector.hh:128
    \n-
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:138
    \n-
    ALBERTA DOF_REAL_VEC DofVector
    Definition dofvector.hh:121
    \n-
    ALBERTA DOF_REAL_D_VEC DofVector
    Definition dofvector.hh:148
    \n-
    static void free(DofVector *dofVector)
    Definition dofvector.hh:155
    \n-
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:165
    \n-
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:160
    \n-
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:150
    \n-
    Definition dofvector.hh:179
    \n-
    DofVectorProvider::DofVector DofVector
    Definition dofvector.hh:185
    \n-
    void setupInterpolation()
    Definition dofvector.hh:292
    \n-
    void initialize(const Dof &value)
    Definition dofvector.hh:270
    \n-
    void read(const std::string &filename, const MeshPointer< dim > &meshPointer)
    Definition dofvector.hh:243
    \n-
    void create(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:236
    \n-
    void release()
    Definition dofvector.hh:254
    \n-
    AdaptationData * getAdaptationData() const
    Definition dofvector.hh:277
    \n-
    void setupRestriction()
    Definition dofvector.hh:299
    \n-
    DofVectorPointer()
    Definition dofvector.hh:193
    \n-
    void setAdaptationData(AdaptationData *adaptationData)
    Definition dofvector.hh:285
    \n-
    bool write(const std::string &filename) const
    Definition dofvector.hh:249
    \n-
    DofVectorPointer(DofVector *dofVector)
    Definition dofvector.hh:202
    \n-
    const DofSpace * dofSpace() const
    Definition dofvector.hh:223
    \n-
    static const bool supportsAdaptationData
    Definition dofvector.hh:187
    \n-
    std::string name() const
    Definition dofvector.hh:228
    \n-
    void forEach(Functor &functor) const
    Definition dofvector.hh:264
    \n-
    DofVectorPointer(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:197
    \n+
    364#ifdef DOWBM_DIAG
    \n+
    365 #undef DOWBM_DIAG
    \n+
    366#endif // DOWBM_DIAG
    \n+
    367
    \n+
    368#ifdef ROW_LENGTH
    \n+
    369 #undef ROW_LENGTH
    \n+
    370#endif // ROW_LENGTH
    \n+
    371
    \n+
    372#ifdef ENTRY_USED
    \n+
    373 #undef ENTRY_USED
    \n+
    374#endif // ENTRY_USED
    \n+
    375
    \n+
    376#ifdef ENTRY_NOT_USED
    \n+
    377 #undef ENTRY_NOT_USED
    \n+
    378#endif // ENTRY_NOT_USED
    \n+
    379
    \n+
    380#ifdef UNUSED_ENTRY
    \n+
    381 #undef UNUSED_ENTRY
    \n+
    382#endif // UNUSED_ENTRY
    \n+
    383
    \n+
    384#ifdef NO_MORE_ENTRIES
    \n+
    385 #undef NO_MORE_ENTRIES
    \n+
    386#endif // NO_MORE_ENTRIES
    \n+
    387
    \n+
    388#ifdef LAGRANGE_NODES
    \n+
    389 #undef LAGRANGE_NODES
    \n+
    390#endif // LAGRANGE_NODES
    \n+
    391
    \n+
    392#ifdef MAX_N_QUAD_POINTS
    \n+
    393 #undef MAX_N_QUAD_POINTS
    \n+
    394#endif // MAX_N_QUAD_POINTS
    \n+
    395
    \n+
    396#ifdef INIT_PHI
    \n+
    397 #undef INIT_PHI
    \n+
    398#endif // INIT_PHI
    \n+
    399
    \n+
    400#ifdef INIT_GRD_PHI
    \n+
    401 #undef INIT_GRD_PHI
    \n+
    402#endif // INIT_GRD_PHI
    \n+
    403
    \n+
    404#ifdef INIT_D2_PHI
    \n+
    405 #undef INIT_D2_PHI
    \n+
    406#endif // INIT_D2_PHI
    \n+
    407
    \n+
    408#ifdef MESH_REFINED
    \n+
    409 #undef MESH_REFINED
    \n+
    410#endif // MESH_REFINED
    \n+
    411
    \n+
    412#ifdef MESH_COARSENED
    \n+
    413 #undef MESH_COARSENED
    \n+
    414#endif // MESH_COARSENED
    \n+
    415
    \n+
    416#ifdef H1_NORM
    \n+
    417 #undef H1_NORM
    \n+
    418#endif // H1_NORM
    \n+
    419
    \n+
    420#ifdef L2_NORM
    \n+
    421 #undef L2_NORM
    \n+
    422#endif // L2_NORM
    \n+
    423
    \n+
    424#ifdef GRAPH_MESH_BOUNDARY
    \n+
    425 #undef GRAPH_MESH_BOUNDARY
    \n+
    426#endif // GRAPH_MESH_BOUNDARY
    \n+
    427
    \n+
    428#ifdef GRAPH_MESH_ELEMENT_MARK
    \n+
    429 #undef GRAPH_MESH_ELEMENT_MARK
    \n+
    430#endif // GRAPH_MESH_ELEMENT_MARK
    \n+
    431
    \n+
    432#ifdef GRAPH_MESH_VERTEX_DOF
    \n+
    433 #undef GRAPH_MESH_VERTEX_DOF
    \n+
    434#endif // GRAPH_MESH_VERTEX_DOF
    \n+
    435
    \n+
    436#ifdef GRAPH_MESH_ELEMENT_INDEX
    \n+
    437 #undef GRAPH_MESH_ELEMENT_INDEX
    \n+
    438#endif // GRAPH_MESH_ELEMENT_INDEX
    \n+
    439
    \n+
    440#ifdef GET_MESH
    \n+
    441 #undef GET_MESH
    \n+
    442#endif // GET_MESH
    \n+
    443
    \n+
    444#ifdef GET_DOF_VEC
    \n+
    445 #undef GET_DOF_VEC
    \n+
    446#endif // GET_DOF_VEC
    \n+
    447
    \n+
    448#ifdef CARD_SN_MAX
    \n+
    449 #undef CARD_SN_MAX
    \n+
    450#endif // CARD_SN_MAX
    \n+
    451
    \n+
    452#ifdef INIT_UH
    \n+
    453 #undef INIT_UH
    \n+
    454#endif // INIT_UH
    \n+
    455
    \n+
    456#ifdef INIT_GRD_UH
    \n+
    457 #undef INIT_GRD_UH
    \n+
    458#endif // INIT_GRD_UH
    \n+
    459
    \n+
    460#ifdef TRAVERSE_START
    \n+
    461 #undef TRAVERSE_START
    \n+
    462#endif // TRAVERSE_START
    \n+
    463
    \n+
    464#ifdef TRAVERSE_STOP
    \n+
    465 #undef TRAVERSE_STOP
    \n+
    466#endif // TRAVERSE_STOP
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,563 +1,471 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-dofvector.hh\n+undefine-2.0.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_DOFVECTOR_HH\n-6#define DUNE_ALBERTA_DOFVECTOR_HH\n-7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-14\n-15#if HAVE_ALBERTA\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n+12#ifdef _ALBERTA_H_\n+13 #undef _ALBERTA_H_\n+14#endif // _ALBERTA_H_\n+15\n+16#ifdef ALBERTA_VERSION\n+17 #undef ALBERTA_VERSION\n+18#endif // ALBERTA_VERSION\n 19\n-20 namespace Alberta\n-21 {\n-22\n-23 // External Forward Declarations\n-24 // -----------------------------\n-25\n-26 template< int dim >\n-27 class MeshPointer;\n-28\n-29\n-30\n-31 // DofVectorProvider\n-32 // -----------------\n-33\n-34 template< class Dof >\n-_\b3_\b5 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n-36\n-37 template<>\n-_\b3_\b8 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< int >\n-39 {\n-_\b4_\b0 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_INT_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n-41\n-_\b4_\b2 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n-43 {\n-44 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_int_vec( name.c_str(), dofSpace );\n-45 }\n-46\n-_\b4_\b7 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n-48 {\n-49 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_int_vec( dofVector );\n-50 }\n+20#ifdef ALBERTA_DEBUG\n+21 #undef ALBERTA_DEBUG\n+22#endif // ALBERTA_DEBUG\n+23\n+24#ifdef DIM_MAX\n+25 #undef DIM_MAX\n+26#endif // DIM_MAX\n+27\n+28#ifdef N_VERTICES\n+29 #undef N_VERTICES\n+30#endif // N_VERTICES\n+31\n+32#ifdef N_EDGES\n+33 #undef N_EDGES\n+34#endif // N_EDGES\n+35\n+36#ifdef N_WALLS\n+37 #undef N_WALLS\n+38#endif // N_WALLS\n+39\n+40#ifdef N_FACES\n+41 #undef N_FACES\n+42#endif // N_FACES\n+43\n+44#ifdef N_NEIGH\n+45 #undef N_NEIGH\n+46#endif // N_NEIGH\n+47\n+48#ifdef DIM_FAC\n+49 #undef DIM_FAC\n+50#endif // DIM_FAC\n 51\n-_\b5_\b2 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-*dofSpace )\n-53 {\n-54 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_int_vec_xdr( filename.c_str(), mesh, dofSpace );\n-55 }\n-56\n-_\b5_\b7 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n-)\n-58 {\n-59 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_int_vec_xdr( dofVector, filename.c_str() );\n-60 return (success == 0);\n-61 }\n-62 };\n+52#ifdef N_VERTICES_0D\n+53 #undef N_VERTICES_0D\n+54#endif // N_VERTICES_0D\n+55\n+56#ifdef N_EDGES_0D\n+57 #undef N_EDGES_0D\n+58#endif // N_EDGES_0D\n+59\n+60#ifdef N_FACES_0D\n+61 #undef N_FACES_0D\n+62#endif // N_FACES_0D\n 63\n-64 template<>\n-_\b6_\b5 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< signed char >\n-66 {\n-_\b6_\b7 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_SCHAR_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n-68\n-_\b6_\b9 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n-70 {\n-71 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_schar_vec( name.c_str(), dofSpace );\n-72 }\n-73\n-_\b7_\b4 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n-75 {\n-76 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_schar_vec( dofVector );\n-77 }\n-78\n-_\b7_\b9 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-*dofSpace )\n-80 {\n-81 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_schar_vec_xdr( filename.c_str(), mesh, dofSpace );\n-82 }\n+64#ifdef N_NEIGH_0D\n+65 #undef N_NEIGH_0D\n+66#endif // N_NEIGH_0D\n+67\n+68#ifdef N_WALLS_0D\n+69 #undef N_WALLS_0D\n+70#endif // N_WALLS_0D\n+71\n+72#ifdef N_VERTICES_1D\n+73 #undef N_VERTICES_1D\n+74#endif // N_VERTICES_1D\n+75\n+76#ifdef N_EDGES_1D\n+77 #undef N_EDGES_1D\n+78#endif // N_EDGES_1D\n+79\n+80#ifdef N_FACES_1D\n+81 #undef N_FACES_1D\n+82#endif // N_FACES_1D\n 83\n-_\b8_\b4 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n-)\n-85 {\n-86 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_schar_vec_xdr( dofVector, filename.c_str()\n-);\n-87 return (success == 0);\n-88 }\n-89 };\n-90\n-91 template<>\n-_\b9_\b2 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< unsigned char >\n-93 {\n-_\b9_\b4 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_UCHAR_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+84#ifdef N_NEIGH_1D\n+85 #undef N_NEIGH_1D\n+86#endif // N_NEIGH_1D\n+87\n+88#ifdef N_WALLS_1D\n+89 #undef N_WALLS_1D\n+90#endif // N_WALLS_1D\n+91\n+92#ifdef N_VERTICES_2D\n+93 #undef N_VERTICES_2D\n+94#endif // N_VERTICES_2D\n 95\n-_\b9_\b6 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n-97 {\n-98 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_uchar_vec( name.c_str(), dofSpace );\n-99 }\n-100\n-_\b1_\b0_\b1 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n-102 {\n-103 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_uchar_vec( dofVector );\n-104 }\n-105\n-_\b1_\b0_\b6 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-*dofSpace )\n-107 {\n-108 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_uchar_vec_xdr( filename.c_str(), mesh, dofSpace );\n-109 }\n-110\n-_\b1_\b1_\b1 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n-)\n-112 {\n-113 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_uchar_vec_xdr( dofVector, filename.c_str()\n-);\n-114 return (success == 0);\n-115 }\n-116 };\n-117\n-118 template<>\n-_\b1_\b1_\b9 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bR_\be_\ba_\bl >\n-120 {\n-_\b1_\b2_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_REAL_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n-122\n-_\b1_\b2_\b3 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n-124 {\n-125 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_real_vec( name.c_str(), dofSpace );\n-126 }\n+96#ifdef N_EDGES_2D\n+97 #undef N_EDGES_2D\n+98#endif // N_EDGES_2D\n+99\n+100#ifdef N_FACES_2D\n+101 #undef N_FACES_2D\n+102#endif // N_FACES_2D\n+103\n+104#ifdef N_NEIGH_2D\n+105 #undef N_NEIGH_2D\n+106#endif // N_NEIGH_2D\n+107\n+108#ifdef N_WALLS_2D\n+109 #undef N_WALLS_2D\n+110#endif // N_WALLS_2D\n+111\n+112#ifdef N_VERTICES_3D\n+113 #undef N_VERTICES_3D\n+114#endif // N_VERTICES_3D\n+115\n+116#ifdef N_EDGES_3D\n+117 #undef N_EDGES_3D\n+118#endif // N_EDGES_3D\n+119\n+120#ifdef N_FACES_3D\n+121 #undef N_FACES_3D\n+122#endif // N_FACES_3D\n+123\n+124#ifdef N_NEIGH_3D\n+125 #undef N_NEIGH_3D\n+126#endif // N_NEIGH_3D\n 127\n-_\b1_\b2_\b8 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n-129 {\n-130 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_real_vec( dofVector );\n-131 }\n-132\n-_\b1_\b3_\b3 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-*dofSpace )\n-134 {\n-135 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_real_vec_xdr( filename.c_str(), mesh, dofSpace );\n-136 }\n-137\n-_\b1_\b3_\b8 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n-)\n-139 {\n-140 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_real_vec_xdr( dofVector, filename.c_str()\n-);\n-141 return (success == 0);\n-142 }\n-143 };\n-144\n-145 template<>\n-_\b1_\b4_\b6 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br >\n-147 {\n-_\b1_\b4_\b8 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_REAL_D_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n-149\n-_\b1_\b5_\b0 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n-151 {\n-152 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_real_d_vec( name.c_str(), dofSpace );\n-153 }\n-154\n-_\b1_\b5_\b5 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n-156 {\n-157 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_real_d_vec( dofVector );\n-158 }\n+128#ifdef N_WALLS_3D\n+129 #undef N_WALLS_3D\n+130#endif // N_WALLS_3D\n+131\n+132#ifdef N_VERTICES_MAX\n+133 #undef N_VERTICES_MAX\n+134#endif // N_VERTICES_MAX\n+135\n+136#ifdef N_EDGES_MAX\n+137 #undef N_EDGES_MAX\n+138#endif // N_EDGES_MAX\n+139\n+140#ifdef N_FACES_MAX\n+141 #undef N_FACES_MAX\n+142#endif // N_FACES_MAX\n+143\n+144#ifdef N_NEIGH_MAX\n+145 #undef N_NEIGH_MAX\n+146#endif // N_NEIGH_MAX\n+147\n+148#ifdef N_WALLS_MAX\n+149 #undef N_WALLS_MAX\n+150#endif // N_WALLS_MAX\n+151\n+152#ifdef N_LAMBDA\n+153 #undef N_LAMBDA\n+154#endif // N_LAMBDA\n+155\n+156#ifdef LAMBDA_MAX\n+157 #undef LAMBDA_MAX\n+158#endif // LAMBDA_MAX\n 159\n-_\b1_\b6_\b0 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-*dofSpace )\n-161 {\n-162 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_real_d_vec_xdr( filename.c_str(), mesh, dofSpace );\n-163 }\n-164\n-_\b1_\b6_\b5 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n-)\n-166 {\n-167 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_real_d_vec_xdr( dofVector, filename.c_str()\n-);\n-168 return (success == 0);\n-169 }\n-170 };\n+160#ifdef INDEX\n+161 #undef INDEX\n+162#endif // INDEX\n+163\n+164#ifdef INDEX\n+165 #undef INDEX\n+166#endif // INDEX\n+167\n+168#ifdef IS_LEAF_EL\n+169 #undef IS_LEAF_EL\n+170#endif // IS_LEAF_EL\n 171\n-172\n-173\n-174 // DofVectorPointer\n-175 // ----------------\n-176\n-177 template< class Dof >\n-_\b1_\b7_\b8 class _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n-179 {\n-180 typedef _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bD_\bo_\bf_\b _\b> _\bT_\bh_\bi_\bs;\n-181\n-182 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bD_\bo_\bf_\b _\b> _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n+172#ifdef LEAF_DATA\n+173 #undef LEAF_DATA\n+174#endif // LEAF_DATA\n+175\n+176#ifdef INTERIOR\n+177 #undef INTERIOR\n+178#endif // INTERIOR\n+179\n+180#ifdef DIRICHLET\n+181 #undef DIRICHLET\n+182#endif // DIRICHLET\n 183\n-184 public:\n-_\b1_\b8_\b5 typedef typename DofVectorProvider::DofVector _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n-186\n-_\b1_\b8_\b7 static const bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba = true;\n-188\n-189 private:\n-190 _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector_;\n+184#ifdef NEUMANN\n+185 #undef NEUMANN\n+186#endif // NEUMANN\n+187\n+188#ifdef IS_NEUMANN\n+189 #undef IS_NEUMANN\n+190#endif // IS_NEUMANN\n 191\n-192 public:\n-_\b1_\b9_\b3 _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br ()\n-194 : dofVector_( NULL )\n-195 {}\n-196\n-_\b1_\b9_\b7 explicit _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be,\n-198 const std::string &_\bn_\ba_\bm_\be = \"\" )\n-199 : dofVector_ ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br::get( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be, _\bn_\ba_\bm_\be ) )\n-200 {}\n-201\n-_\b2_\b0_\b2 explicit _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n-203 : dofVector_( dofVector )\n-204 {}\n-205\n-_\b2_\b0_\b6 explicit operator bool () const\n-207 {\n-208 return (bool)dofVector_;\n-209 }\n-210\n-_\b2_\b1_\b1 operator _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br * () const\n-212 {\n-213 return dofVector_;\n-214 }\n+192#ifdef IS_DIRICHLET\n+193 #undef IS_DIRICHLET\n+194#endif // IS_DIRICHLET\n+195\n+196#ifdef IS_INTERIOR\n+197 #undef IS_INTERIOR\n+198#endif // IS_INTERIOR\n+199\n+200#ifdef N_NODE_TYPES\n+201 #undef N_NODE_TYPES\n+202#endif // N_NODE_TYPES\n+203\n+204#ifdef VERTEX\n+205 #undef VERTEX\n+206#endif // VERTEX\n+207\n+208#ifdef CENTER\n+209 #undef CENTER\n+210#endif // CENTER\n+211\n+212#ifdef EDGE\n+213 #undef EDGE\n+214#endif // EDGE\n 215\n-_\b2_\b1_\b6 operator Dof * () const\n-217 {\n-218 Dof *ptr = NULL;\n-219 GET_DOF_VEC( ptr, dofVector_ );\n-220 return ptr;\n-221 }\n-222\n-_\b2_\b2_\b3 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be () const\n-224 {\n-225 return dofVector_->fe_space;\n-226 }\n+216#ifdef FACE\n+217 #undef FACE\n+218#endif // FACE\n+219\n+220#ifdef LIST_ENTRY\n+221 #undef LIST_ENTRY\n+222#endif // LIST_ENTRY\n+223\n+224#ifdef WALL_BOUND\n+225 #undef WALL_BOUND\n+226#endif // WALL_BOUND\n 227\n-_\b2_\b2_\b8 std::string _\bn_\ba_\bm_\be () const\n-229 {\n-230 if( dofVector_ )\n-231 return dofVector_->name;\n-232 else\n-233 return std::string();\n-234 }\n+228#ifdef FILL_NOTHING\n+229 #undef FILL_NOTHING\n+230#endif // FILL_NOTHING\n+231\n+232#ifdef FILL_COORDS\n+233 #undef FILL_COORDS\n+234#endif // FILL_COORDS\n 235\n-_\b2_\b3_\b6 void _\bc_\br_\be_\ba_\bt_\be ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be, const std::string &_\bn_\ba_\bm_\be = \"\" )\n-237 {\n-238 _\br_\be_\bl_\be_\ba_\bs_\be();\n-239 dofVector_ = DofVectorProvider::get( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be, _\bn_\ba_\bm_\be );\n-240 }\n-241\n-242 template< int dim >\n-_\b2_\b4_\b3 void _\br_\be_\ba_\bd ( const std::string &filename, const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-&meshPointer )\n-244 {\n-245 _\br_\be_\bl_\be_\ba_\bs_\be();\n-246 dofVector_ = DofVectorProvider::read( filename, meshPointer, NULL );\n-247 }\n-248\n-_\b2_\b4_\b9 bool _\bw_\br_\bi_\bt_\be ( const std::string &filename ) const\n-250 {\n-251 return DofVectorProvider::write( dofVector_, filename );\n-252 }\n-253\n-_\b2_\b5_\b4 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n-255 {\n-256 if( dofVector_ )\n-257 {\n-258 DofVectorProvider::free( dofVector_ );\n-259 dofVector_ = NULL;\n-260 }\n-261 }\n-262\n-263 template< class Functor >\n-_\b2_\b6_\b4 void _\bf_\bo_\br_\bE_\ba_\bc_\bh ( Functor &functor ) const\n-265 {\n-266 Dof *array = (Dof *)(*this);\n-267 FOR_ALL_DOFS( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin, functor( array[ dof ] ) );\n-268 }\n-269\n-_\b2_\b7_\b0 void _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be ( const Dof &value )\n-271 {\n-272 Dof *array = (Dof *)(*this);\n-273 FOR_ALL_DOFS( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin, array[ dof ] = value );\n-274 }\n+236#ifdef FILL_BOUND\n+237 #undef FILL_BOUND\n+238#endif // FILL_BOUND\n+239\n+240#ifdef FILL_NEIGH\n+241 #undef FILL_NEIGH\n+242#endif // FILL_NEIGH\n+243\n+244#ifdef FILL_OPP_COORDS\n+245 #undef FILL_OPP_COORDS\n+246#endif // FILL_OPP_COORDS\n+247\n+248#ifdef FILL_ORIENTATION\n+249 #undef FILL_ORIENTATION\n+250#endif // FILL_ORIENTATION\n+251\n+252#ifdef FILL_EL_TYPE\n+253 #undef FILL_EL_TYPE\n+254#endif // FILL_EL_TYPE\n+255\n+256#ifdef FILL_PROJECTION\n+257 #undef FILL_PROJECTION\n+258#endif // FILL_PROJECTION\n+259\n+260#ifdef FILL_ANY\n+261 #undef FILL_ANY\n+262#endif // FILL_ANY\n+263\n+264#ifdef HOOK_QUEUE_OFFSET\n+265 #undef HOOK_QUEUE_OFFSET\n+266#endif // HOOK_QUEUE_OFFSET\n+267\n+268#ifdef RUN_HOOKS_0\n+269 #undef RUN_HOOKS_0\n+270#endif // RUN_HOOKS_0\n+271\n+272#ifdef RUN_BAS_FCTS_HOOKS\n+273 #undef RUN_BAS_FCTS_HOOKS\n+274#endif // RUN_BAS_FCTS_HOOKS\n 275\n-276 template< class AdaptationData >\n-_\b2_\b7_\b7 AdaptationData *_\bg_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba () const\n-278 {\n-279 assert( dofVector_ );\n-280 assert( dofVector_->user_data );\n-281 return static_cast< AdaptationData * >( dofVector_->user_data );\n-282 }\n+276#ifdef RUN_HOOKS_1\n+277 #undef RUN_HOOKS_1\n+278#endif // RUN_HOOKS_1\n+279\n+280#ifdef RUN_HOOKS_2\n+281 #undef RUN_HOOKS_2\n+282#endif // RUN_HOOKS_2\n 283\n-284 template< class AdaptationData >\n-_\b2_\b8_\b5 void _\bs_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba ( AdaptationData *adaptationData )\n-286 {\n-287 assert( dofVector_ );\n-288 dofVector_->user_data = adaptationData;\n-289 }\n-290\n-291 template< class Interpolation >\n-_\b2_\b9_\b2 void _\bs_\be_\bt_\bu_\bp_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n-293 {\n-294 assert( dofVector_ );\n-295 dofVector_->refine_interpol = &refineInterpolate< Interpolation >;\n-296 }\n-297\n-298 template< class Restriction >\n-_\b2_\b9_\b9 void _\bs_\be_\bt_\bu_\bp_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bi_\bo_\bn ()\n-300 {\n-301 assert( dofVector_ );\n-302 dofVector_->coarse_restrict = &coarsenRestrict< Restriction >;\n-303 }\n-304\n-305 private:\n-306 template< class Interpolation >\n-307 static void refineInterpolate ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, RC_LIST_EL *list, int\n-n )\n-308 {\n-309 const This dofVectorPointer( dofVector );\n-310 typename Interpolation::Patch patch( list, n );\n-311 Interpolation::interpolateVector( dofVectorPointer, patch );\n-312 }\n-313\n-314 template< class Restriction >\n-315 static void coarsenRestrict ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, RC_LIST_EL *list, int n\n-)\n-316 {\n-317 const This dofVectorPointer( dofVector );\n-318 typename Restriction::Patch patch( list, n );\n-319 Restriction::restrictVector( dofVectorPointer, patch );\n-320 }\n-321 };\n-322\n+284#ifdef RUN_HOOKS_3\n+285 #undef RUN_HOOKS_3\n+286#endif // RUN_HOOKS_3\n+287\n+288#ifdef RUN_HOOKS_4\n+289 #undef RUN_HOOKS_4\n+290#endif // RUN_HOOKS_4\n+291\n+292#ifdef RUN_HOOKS_5\n+293 #undef RUN_HOOKS_5\n+294#endif // RUN_HOOKS_5\n+295\n+296#ifdef RUN_HOOKS_6\n+297 #undef RUN_HOOKS_6\n+298#endif // RUN_HOOKS_6\n+299\n+300#ifdef RUN_HOOKS_7\n+301 #undef RUN_HOOKS_7\n+302#endif // RUN_HOOKS_7\n+303\n+304#ifdef CALL_EVERY_EL_PREORDER\n+305 #undef CALL_EVERY_EL_PREORDER\n+306#endif // CALL_EVERY_EL_PREORDER\n+307\n+308#ifdef CALL_EVERY_EL_INORDER\n+309 #undef CALL_EVERY_EL_INORDER\n+310#endif // CALL_EVERY_EL_INORDER\n+311\n+312#ifdef CALL_EVERY_EL_POSTORDER\n+313 #undef CALL_EVERY_EL_POSTORDER\n+314#endif // CALL_EVERY_EL_POSTORDER\n+315\n+316#ifdef CALL_LEAF_EL\n+317 #undef CALL_LEAF_EL\n+318#endif // CALL_LEAF_EL\n+319\n+320#ifdef CALL_LEAF_EL_LEVEL\n+321 #undef CALL_LEAF_EL_LEVEL\n+322#endif // CALL_LEAF_EL_LEVEL\n 323\n-324\n-325 // Auxiliary Functions\n-326 // --------------------\n+324#ifdef CALL_EL_LEVEL\n+325 #undef CALL_EL_LEVEL\n+326#endif // CALL_EL_LEVEL\n 327\n-_\b3_\b2_\b8 inline void _\ba_\bb_\bs ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b> &dofVector )\n-329 {\n-330 assert( !dofVector == false );\n-331 int *array = (int *)dofVector;\n-332 FOR_ALL_DOFS( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin,\n-333 array[ dof ] = std::abs( array[ dof ] ) );\n-334 }\n+328#ifdef CALL_MG_LEVEL\n+329 #undef CALL_MG_LEVEL\n+330#endif // CALL_MG_LEVEL\n+331\n+332#ifdef TEST_FLAG\n+333 #undef TEST_FLAG\n+334#endif // TEST_FLAG\n 335\n-336\n-_\b3_\b3_\b7 inline int _\bm_\ba_\bx ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b> &dofVector )\n-338 {\n-339 assert( !dofVector == false );\n-340 int *array = (int *)dofVector;\n-341 int result = std::numeric_limits< int >::min();\n-342 FOR_ALL_DOFS( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin,\n-343 result = std::max( result, array[ dof ] ) );\n-344 return result;\n-345 }\n-346\n+336#ifdef DOF_ADMIN_DEF\n+337 #undef DOF_ADMIN_DEF\n+338#endif // DOF_ADMIN_DEF\n+339\n+340#ifdef DOF_FREE_SIZE\n+341 #undef DOF_FREE_SIZE\n+342#endif // DOF_FREE_SIZE\n+343\n+344#ifdef DOF_UNIT_ALL_FREE\n+345 #undef DOF_UNIT_ALL_FREE\n+346#endif // DOF_UNIT_ALL_FREE\n 347\n-_\b3_\b4_\b8 inline int _\bm_\bi_\bn ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b> &dofVector )\n-349 {\n-350 assert( !dofVector == false );\n-351 int *array = (int *)dofVector;\n-352 int result = std::numeric_limits< int >::max();\n-353 FOR_ALL_DOFS( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin,\n-354 result = std::min( result, array[ dof ] ) );\n-355 return result;\n-356 }\n-357\n-358 } // namespace Alberta\n+348#ifdef FOR_ALL_DOFS\n+349 #undef FOR_ALL_DOFS\n+350#endif // FOR_ALL_DOFS\n+351\n+352#ifdef FOR_ALL_FREE_DOFS\n+353 #undef FOR_ALL_FREE_DOFS\n+354#endif // FOR_ALL_FREE_DOFS\n+355\n+356#ifdef DOWBM_FULL\n+357 #undef DOWBM_FULL\n+358#endif // DOWBM_FULL\n 359\n-360} // namespace Dune\n-361\n-362#endif // #if HAVE_ALBERTA\n+360#ifdef DOWBM_SYMM\n+361 #undef DOWBM_SYMM\n+362#endif // DOWBM_SYMM\n 363\n-364#endif // #ifndef DUNE_ALBERTA_DOFVECTOR_HH\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n-provides a wrapper for ALBERTA's refinement patches and the corners for\n-geometryInFather\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n-ALBERTA MESH Mesh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bb_\bs\n-void abs(const DofVectorPointer< int > &dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:328\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-ALBERTA FE_SPACE DofSpace\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\bi_\bn\n-int min(const DofVectorPointer< int > &dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:348\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\ba_\bx\n-int max(const DofVectorPointer< int > &dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:337\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bg_\be_\bt\n-static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA DOF_INT_VEC DofVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n-static bool write(const DofVector *dofVector, const std::string &filename)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n-static void free(DofVector *dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n-static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n-*dofSpace)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n-static bool write(const DofVector *dofVector, const std::string &filename)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n-static void free(DofVector *dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bg_\be_\bt\n-static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n-static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n-*dofSpace)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA DOF_SCHAR_VEC DofVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n-static void free(DofVector *dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA DOF_UCHAR_VEC DofVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n-static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n-*dofSpace)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bg_\be_\bt\n-static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n-static bool write(const DofVector *dofVector, const std::string &filename)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bg_\be_\bt\n-static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n-static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n-*dofSpace)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n-static void free(DofVector *dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n-static bool write(const DofVector *dofVector, const std::string &filename)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA DOF_REAL_VEC DofVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA DOF_REAL_D_VEC DofVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n-static void free(DofVector *dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n-static bool write(const DofVector *dofVector, const std::string &filename)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n-static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n-*dofSpace)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bg_\be_\bt\n-static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n-DofVectorProvider::DofVector DofVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bu_\bp_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-void setupInterpolation()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n-void initialize(const Dof &value)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:270\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-void read(const std::string &filename, const MeshPointer< dim > &meshPointer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create(const DofSpace *dofSpace, const std::string &name=\"\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba\n-AdaptationData * getAdaptationData() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:277\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bu_\bp_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bi_\bo_\bn\n-void setupRestriction()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:299\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n-DofVectorPointer()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba\n-void setAdaptationData(AdaptationData *adaptationData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-bool write(const std::string &filename) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n-DofVectorPointer(DofVector *dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * dofSpace() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba\n-static const bool supportsAdaptationData\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-std::string name() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:228\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh\n-void forEach(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n-DofVectorPointer(const DofSpace *dofSpace, const std::string &name=\"\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:197\n+364#ifdef DOWBM_DIAG\n+365 #undef DOWBM_DIAG\n+366#endif // DOWBM_DIAG\n+367\n+368#ifdef ROW_LENGTH\n+369 #undef ROW_LENGTH\n+370#endif // ROW_LENGTH\n+371\n+372#ifdef ENTRY_USED\n+373 #undef ENTRY_USED\n+374#endif // ENTRY_USED\n+375\n+376#ifdef ENTRY_NOT_USED\n+377 #undef ENTRY_NOT_USED\n+378#endif // ENTRY_NOT_USED\n+379\n+380#ifdef UNUSED_ENTRY\n+381 #undef UNUSED_ENTRY\n+382#endif // UNUSED_ENTRY\n+383\n+384#ifdef NO_MORE_ENTRIES\n+385 #undef NO_MORE_ENTRIES\n+386#endif // NO_MORE_ENTRIES\n+387\n+388#ifdef LAGRANGE_NODES\n+389 #undef LAGRANGE_NODES\n+390#endif // LAGRANGE_NODES\n+391\n+392#ifdef MAX_N_QUAD_POINTS\n+393 #undef MAX_N_QUAD_POINTS\n+394#endif // MAX_N_QUAD_POINTS\n+395\n+396#ifdef INIT_PHI\n+397 #undef INIT_PHI\n+398#endif // INIT_PHI\n+399\n+400#ifdef INIT_GRD_PHI\n+401 #undef INIT_GRD_PHI\n+402#endif // INIT_GRD_PHI\n+403\n+404#ifdef INIT_D2_PHI\n+405 #undef INIT_D2_PHI\n+406#endif // INIT_D2_PHI\n+407\n+408#ifdef MESH_REFINED\n+409 #undef MESH_REFINED\n+410#endif // MESH_REFINED\n+411\n+412#ifdef MESH_COARSENED\n+413 #undef MESH_COARSENED\n+414#endif // MESH_COARSENED\n+415\n+416#ifdef H1_NORM\n+417 #undef H1_NORM\n+418#endif // H1_NORM\n+419\n+420#ifdef L2_NORM\n+421 #undef L2_NORM\n+422#endif // L2_NORM\n+423\n+424#ifdef GRAPH_MESH_BOUNDARY\n+425 #undef GRAPH_MESH_BOUNDARY\n+426#endif // GRAPH_MESH_BOUNDARY\n+427\n+428#ifdef GRAPH_MESH_ELEMENT_MARK\n+429 #undef GRAPH_MESH_ELEMENT_MARK\n+430#endif // GRAPH_MESH_ELEMENT_MARK\n+431\n+432#ifdef GRAPH_MESH_VERTEX_DOF\n+433 #undef GRAPH_MESH_VERTEX_DOF\n+434#endif // GRAPH_MESH_VERTEX_DOF\n+435\n+436#ifdef GRAPH_MESH_ELEMENT_INDEX\n+437 #undef GRAPH_MESH_ELEMENT_INDEX\n+438#endif // GRAPH_MESH_ELEMENT_INDEX\n+439\n+440#ifdef GET_MESH\n+441 #undef GET_MESH\n+442#endif // GET_MESH\n+443\n+444#ifdef GET_DOF_VEC\n+445 #undef GET_DOF_VEC\n+446#endif // GET_DOF_VEC\n+447\n+448#ifdef CARD_SN_MAX\n+449 #undef CARD_SN_MAX\n+450#endif // CARD_SN_MAX\n+451\n+452#ifdef INIT_UH\n+453 #undef INIT_UH\n+454#endif // INIT_UH\n+455\n+456#ifdef INIT_GRD_UH\n+457 #undef INIT_GRD_UH\n+458#endif // INIT_GRD_UH\n+459\n+460#ifdef TRAVERSE_START\n+461 #undef TRAVERSE_START\n+462#endif // TRAVERSE_START\n+463\n+464#ifdef TRAVERSE_STOP\n+465 #undef TRAVERSE_STOP\n+466#endif // TRAVERSE_STOP\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00689.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00689.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: leveliterator.hh File Reference\n+dune-grid: refinement.hh File Reference\n \n \n \n \n \n \n \n@@ -72,35 +72,58 @@\n
  • dune
  • grid
  • albertagrid
  • \n \n \n
    \n \n-
    leveliterator.hh File Reference
    \n+
    refinement.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/common/entityiterator.hh>
    \n-#include <dune/grid/albertagrid/treeiterator.hh>
    \n+\n+

    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather \n+More...

    \n+
    #include <cassert>
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/elementinfo.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 Classes

    class  Dune::AlbertaGridLevelIterator< codim, pitype, GridImp >
    class  Dune::Alberta::Patch< dim >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< dim, 0 >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< dim, dim >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< 2, 1 >
     
    struct  Dune::Alberta::ForEachInteriorSubChild< 3, 1 >
     
    class  Dune::AlbertaGridLevelIterator< codim, Ghost_Partition, GridImp >
    struct  Dune::Alberta::ForEachInteriorSubChild< 3, 2 >
     
    struct  Dune::Alberta::GeometryInFather< 1 >
     
    struct  Dune::Alberta::GeometryInFather< 2 >
     
    struct  Dune::Alberta::GeometryInFather< 3 >
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n-
    \n+

    Detailed Description

    \n+

    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather

    \n+
    Author
    Martin Nolte
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,22 +2,46 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-leveliterator.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+refinement.hh File Reference\n+provides a wrapper for ALBERTA's refinement patches and the corners for\n+geometryInFather _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b1_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\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 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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+provides a wrapper for ALBERTA's refinement patches and the corners for\n+geometryInFather\n+ Author\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00689_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00689_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: leveliterator.hh Source File\n+dune-grid: refinement.hh Source File\n \n \n \n \n \n \n \n@@ -74,145 +74,454 @@\n \n \n \n
    \n-
    leveliterator.hh
    \n+
    refinement.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_LEVELITERATOR_HH
    \n-
    6#define DUNE_ALBERTA_LEVELITERATOR_HH
    \n+
    5#ifndef DUNE_ALBERTA_REFINEMENT_HH
    \n+
    6#define DUNE_ALBERTA_REFINEMENT_HH
    \n
    7
    \n-\n-
    9
    \n-\n-
    11
    \n-
    12#if HAVE_ALBERTA
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17 // AlbertaGridLevelIterator
    \n-
    18 // ------------------------
    \n-
    19
    \n-
    20 template< int codim, PartitionIteratorType pitype, class GridImp >
    \n-
    \n-\n-
    22 : public AlbertaGridTreeIterator< codim, GridImp, false >
    \n-
    23 {
    \n-\n-\n+
    14#include <cassert>
    \n+
    15
    \n+\n+\n+
    18
    \n+
    19#if HAVE_ALBERTA
    \n+
    20
    \n+
    21namespace Dune
    \n+
    22{
    \n+
    23
    \n+
    24 namespace Alberta
    \n+
    25 {
    \n
    26
    \n-
    27 public:
    \n-
    28 typedef typename Base::Entity Entity;
    \n-\n-
    30
    \n-
    \n-\n-
    32 {}
    \n-
    \n+
    27 // Internal Forward Declarations
    \n+
    28 // -----------------------------
    \n+
    29
    \n+
    30 template< int dim, int codim >
    \n+\n+
    32
    \n
    33
    \n-
    \n-
    35 AlbertaGridLevelIterator ( const GridImp &grid, int level )
    \n-
    36 : Base( grid, level )
    \n-
    37 {}
    \n-
    \n-
    38
    \n-
    \n-\n-
    41 const MarkerVector *vec,
    \n-
    42 int level )
    \n-
    43 : Base( grid, vec, level )
    \n-
    44 {}
    \n-
    \n+
    34
    \n+
    35 // Patch
    \n+
    36 // -----
    \n+
    37
    \n+
    38 template< int dim >
    \n+
    \n+
    39 class Patch
    \n+
    40 {
    \n+
    41 typedef Patch< dim > This;
    \n+
    42
    \n+
    43 static_assert(((dim >= 1) && (dim <= 3)),
    \n+
    44 "Alberta supports only dimensions 1, 2, 3");
    \n
    45
    \n-
    \n-
    47 void increment ()
    \n-
    48 {
    \n-\n-
    50 }
    \n-
    \n-
    51 };
    \n-
    \n+
    46 public:
    \n+
    47 static const int dimension = dim;
    \n+
    48
    \n+\n+
    50
    \n+
    51 typedef ALBERTA RC_LIST_EL ElementList;
    \n
    52
    \n-
    53
    \n-
    54 template< int codim, class GridImp >
    \n-
    \n-\n-
    56 : public AlbertaGridTreeIterator< codim, GridImp, false >
    \n-
    57 {
    \n-\n-\n-
    60
    \n-
    61 public:
    \n-
    62 typedef typename Base::Entity Entity;
    \n-\n+
    53 private:
    \n+
    54 ElementList *list_;
    \n+
    55 int count_;
    \n+
    56
    \n+
    57 public:
    \n+
    \n+
    58 Patch ( ElementList *list, int count )
    \n+
    59 : list_( list ),
    \n+
    60 count_( count )
    \n+
    61 {
    \n+
    62 assert( count > 0 );
    \n+
    63 }
    \n+
    \n
    64
    \n-
    \n-\n-
    66 {}
    \n-
    \n-
    67
    \n-
    \n-
    69 AlbertaGridLevelIterator ( const GridImp &grid, int level )
    \n-
    70 : Base( grid, level )
    \n-
    71 {}
    \n-
    \n-
    72
    \n-
    \n-\n-
    75 const MarkerVector *,
    \n-
    76 int level )
    \n-
    77 : Base( grid, level )
    \n-
    78 {}
    \n-
    \n-
    79
    \n-
    \n-
    81 void increment ()
    \n-
    82 {
    \n-\n-
    84 }
    \n-
    \n-
    85 };
    \n-
    \n-
    86}
    \n-
    87
    \n-
    88#endif // #if HAVE_ALBERTA
    \n-
    89
    \n-
    90#endif // #ifndef DUNE_ALBERTA_LEVELITERATOR_HH
    \n-\n-\n-
    @ Ghost_Partition
    only ghost entities
    Definition gridenums.hh:142
    \n+
    65 Element *operator[] ( int i ) const;
    \n+
    66
    \n+
    \n+
    67 int count () const
    \n+
    68 {
    \n+
    69 return count_;
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    72 template< class LevelProvider >
    \n+
    73 ElementInfo elementInfo ( int i, const LevelProvider &levelProvider ) const;
    \n+
    74
    \n+
    75 int elementType ( int i ) const;
    \n+
    76 bool hasNeighbor ( int i, int neighbor ) const;
    \n+
    77 int neighborIndex ( int i, int neighbor ) const;
    \n+
    78
    \n+
    79 template< class Functor >
    \n+
    \n+
    80 void forEach ( Functor &functor ) const
    \n+
    81 {
    \n+
    82 for( int i = 0; i < count(); ++i )
    \n+
    83 functor( (*this)[ i ] );
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    86 template< int codim, class Functor >
    \n+
    \n+
    87 void forEachInteriorSubChild ( Functor &functor ) const
    \n+
    88 {
    \n+\n+
    90 }
    \n+
    \n+
    91 };
    \n+
    \n+
    92
    \n+
    93
    \n+
    94 template< int dim >
    \n+
    \n+
    95 inline Element *Patch< dim >::operator[] ( int i ) const
    \n+
    96 {
    \n+
    97 assert( (i >= 0) && (i < count()) );
    \n+
    98 return list_[ i ].el_info.el;
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    101
    \n+
    102 template< int dim >
    \n+
    103 template< class LevelProvider >
    \n+
    104 inline typename Patch< dim >::ElementInfo
    \n+
    \n+
    105 Patch< dim >::elementInfo ( int i, const LevelProvider &levelProvider ) const
    \n+
    106 {
    \n+
    107 assert( (i >= 0) && (i < count()) );
    \n+
    108 return ElementInfo::createFake( list_[ i ].el_info );
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    111 template<>
    \n+
    112 template< class LevelProvider >
    \n+
    113 inline typename Patch< 2 >::ElementInfo
    \n+
    \n+
    114 Patch< 2 >::elementInfo ( int i, const LevelProvider &levelProvider ) const
    \n+
    115 {
    \n+
    116 assert( (i >= 0) && (i < count()) );
    \n+
    117 const MeshPointer< 2 > &mesh = levelProvider.mesh();
    \n+
    118 const Element *element = (*this)[ i ];
    \n+
    119 const int level = levelProvider( element );
    \n+
    120 return ElementInfo::createFake( mesh, element, level );
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    123
    \n+
    124 template< int dim >
    \n+
    \n+
    125 inline int Patch< dim >::elementType ( int i ) const
    \n+
    126 {
    \n+
    127 assert( (i >= 0) && (i < count()) );
    \n+
    128 return list_[ i ].el_info.el_type;
    \n+
    129 }
    \n+
    \n+
    130
    \n+
    131
    \n+
    132 template< int dim >
    \n+
    \n+
    133 inline bool Patch< dim >::hasNeighbor ( int i, int neighbor ) const
    \n+
    134 {
    \n+
    135 return (list_[ i ].neigh[ neighbor ] != NULL);
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    138 template< int dim >
    \n+
    \n+
    139 inline int Patch< dim >::neighborIndex ( int i, int neighbor ) const
    \n+
    140 {
    \n+
    141 assert( hasNeighbor( i, neighbor ) );
    \n+
    142 return (list_[ i ].neigh[ neighbor ]->no);
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    145
    \n+
    146
    \n+
    147 // ForEachInteriorSubChild
    \n+
    148 // -----------------------
    \n+
    149
    \n+
    150 template< int dim >
    \n+
    \n+
    151 struct ForEachInteriorSubChild< dim, 0 >
    \n+
    152 {
    \n+
    153 template< class Functor >
    \n+
    \n+
    154 static void apply ( Functor &functor, const Patch< dim > &patch )
    \n+
    155 {
    \n+
    156 for( int i = 0; i < patch.count(); ++i )
    \n+
    157 {
    \n+
    158 Element *const father = patch[ i ];
    \n+
    159 functor( father->child[ 0 ], 0 );
    \n+
    160 functor( father->child[ 1 ], 0 );
    \n+
    161 }
    \n+
    162 }
    \n+
    \n+
    163 };
    \n+
    \n+
    164
    \n+
    165 template< int dim >
    \n+
    \n+
    166 struct ForEachInteriorSubChild< dim, dim >
    \n+
    167 {
    \n+
    168 template< class Functor >
    \n+
    \n+
    169 static void apply ( Functor &functor, const Patch< dim > &patch )
    \n+
    170 {
    \n+
    171 functor( patch[ 0 ]->child[ 0 ], dim );
    \n+
    172 }
    \n+
    \n+
    173 };
    \n+
    \n+
    174
    \n+
    175 template<>
    \n+
    \n+\n+
    177 {
    \n+
    178 template< class Functor >
    \n+
    \n+
    179 static void apply ( Functor &functor, const Patch< 2 > &patch )
    \n+
    180 {
    \n+
    181 // see alberta/src/2d/lagrange_2_2d.c for details
    \n+
    182 Element *const firstFather = patch[ 0 ];
    \n+
    183
    \n+
    184 Element *const firstChild = firstFather->child[ 0 ];
    \n+
    185 functor( firstChild, 0 );
    \n+
    186 functor( firstChild, 1 );
    \n+
    187
    \n+
    188 functor( firstFather->child[ 1 ], 1 );
    \n+
    189
    \n+
    190 if( patch.count() > 1 )
    \n+
    191 {
    \n+
    192 Element *const father = patch[ 1 ];
    \n+
    193 functor( father->child[ 0 ], 1 );
    \n+
    194 }
    \n+
    195 }
    \n+
    \n+
    196 };
    \n+
    \n+
    197
    \n+
    198 template<>
    \n+
    \n+\n+
    200 {
    \n+
    201 template< class Functor >
    \n+
    \n+
    202 static void apply ( Functor &functor, const Patch< 3 > &patch )
    \n+
    203 {
    \n+
    204 // see alberta/src/3d/lagrange_3_3d.c for details
    \n+
    205 Element *const firstFather = patch[ 0 ];
    \n+
    206
    \n+
    207 Element *const firstChild = firstFather->child[ 0 ];
    \n+
    208 functor( firstChild, 0 );
    \n+
    209 functor( firstChild, 1 );
    \n+
    210 functor( firstChild, 2 );
    \n+
    211
    \n+
    212 Element *const secondChild = firstFather->child[ 1 ];
    \n+
    213 functor( secondChild, 1 );
    \n+
    214 functor( secondChild, 2 );
    \n+
    215
    \n+
    216 for( int i = 1; i < patch.count(); ++i )
    \n+
    217 {
    \n+
    218 Element *const father = patch[ i ];
    \n+
    219 const int type = patch.elementType( i );
    \n+
    220
    \n+
    221 int lr_set = 0;
    \n+
    222 if( patch.hasNeighbor( i, 0 ) && (patch.neighborIndex( i, 0 ) < i) )
    \n+
    223 lr_set |= 1;
    \n+
    224 if( patch.hasNeighbor( i, 1 ) && (patch.neighborIndex( i, 1 ) < i) )
    \n+
    225 lr_set |= 2;
    \n+
    226 assert( lr_set != 0 );
    \n+
    227
    \n+
    228 functor( father->child[ 0 ], 0 );
    \n+
    229 switch( lr_set )
    \n+
    230 {
    \n+
    231 case 1 :
    \n+
    232 functor( father->child[ 0 ], 2 );
    \n+
    233 functor( father->child[ 1 ], (type == 0 ? 1 : 2) );
    \n+
    234 break;
    \n+
    235
    \n+
    236 case 2 :
    \n+
    237 functor( father->child[ 0 ], 1 );
    \n+
    238 functor( father->child[ 1 ], (type == 0 ? 2 : 1) );
    \n+
    239 break;
    \n+
    240 }
    \n+
    241 }
    \n+
    242 }
    \n+
    \n+
    243 };
    \n+
    \n+
    244
    \n+
    245 template<>
    \n+
    \n+\n+
    247 {
    \n+
    248 template< class Functor >
    \n+
    \n+
    249 static void apply ( Functor &functor, const Patch< 3 > &patch )
    \n+
    250 {
    \n+
    251 // see alberta/src/3d/lagrange_2_3d.c for details
    \n+
    252 Element *const firstFather = patch[ 0 ];
    \n+
    253
    \n+
    254 Element *const firstChild = firstFather->child[ 0 ];
    \n+
    255 functor( firstChild, 2 );
    \n+
    256 functor( firstChild, 4 );
    \n+
    257 functor( firstChild, 5 );
    \n+
    258
    \n+
    259 functor( firstFather->child[ 1 ], 2 );
    \n+
    260
    \n+
    261 for( int i = 1; i < patch.count(); ++i )
    \n+
    262 {
    \n+
    263 Element *const father = patch[ i ];
    \n+
    264
    \n+
    265 int lr_set = 0;
    \n+
    266 if( patch.hasNeighbor( i, 0 ) && (patch.neighborIndex( i, 0 ) < i) )
    \n+
    267 lr_set = 1;
    \n+
    268 if( patch.hasNeighbor( i, 1 ) && (patch.neighborIndex( i, 1 ) < i) )
    \n+
    269 lr_set += 2;
    \n+
    270 assert( lr_set != 0 );
    \n+
    271
    \n+
    272 switch( lr_set )
    \n+
    273 {
    \n+
    274 case 1 :
    \n+
    275 functor( father->child[ 0 ], 4 );
    \n+
    276 break;
    \n+
    277
    \n+
    278 case 2 :
    \n+
    279 functor( father->child[ 0 ], 5 );
    \n+
    280 break;
    \n+
    281 }
    \n+
    282 }
    \n+
    283 }
    \n+
    \n+
    284 };
    \n+
    \n+
    285
    \n+
    286
    \n+
    287
    \n+
    288 // GeometryInFather
    \n+
    289 // ----------------
    \n+
    290
    \n+
    291 template< int dim >
    \n+\n+
    293
    \n+
    294 template<>
    \n+
    \n+\n+
    296 {
    \n+
    297 static const int dim = 1;
    \n+
    298
    \n+
    299 typedef Real LocalVector[ dim ];
    \n+
    300
    \n+
    301 static const LocalVector &
    \n+
    \n+
    302 coordinate ( int child, int /* orientation */, int i )
    \n+
    303 {
    \n+
    304 static const Real coords[ 2 ][ dim+1 ][ dim ]
    \n+
    305 = { { {0.0}, {0.5} }, { {0.5}, {1.0} } };
    \n+
    306 assert( (i >= 0) && (i <= dim) );
    \n+
    307 return coords[ child ][ i ];
    \n+
    308 }
    \n+
    \n+
    309 };
    \n+
    \n+
    310
    \n+
    311 template<>
    \n+
    \n+\n+
    313 {
    \n+
    314 static const int dim = 2;
    \n+
    315
    \n+
    316 typedef Real LocalVector[ dim ];
    \n+
    317
    \n+
    318 static const LocalVector &
    \n+
    \n+
    319 coordinate ( int child, int /* orientation */, int i )
    \n+
    320 {
    \n+
    321 static const Real coords[ 2 ][ dim+1 ][ dim ]
    \n+
    322 = { { {0.0, 1.0}, {0.0, 0.0}, {0.5, 0.0} },
    \n+
    323 { {1.0, 0.0}, {0.0, 1.0}, {0.5, 0.0} } };
    \n+
    324 assert( (i >= 0) && (i <= dim) );
    \n+
    325 return coords[ child ][ i ];
    \n+
    326 }
    \n+
    \n+
    327 };
    \n+
    \n+
    328
    \n+
    329 template<>
    \n+
    \n+\n+
    331 {
    \n+
    332 static const int dim = 3;
    \n+
    333
    \n+
    334 typedef Real LocalVector[ dim ];
    \n+
    335
    \n+
    336 static const LocalVector &
    \n+
    \n+
    337 coordinate ( int child, int orientation, int i )
    \n+
    338 {
    \n+
    339 static const Real coords[ 2 ][ dim+1 ][ dim ]
    \n+
    340 = { { {0.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} },
    \n+
    341 { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} } };
    \n+
    342 static const int flip[ 2 ][ 2 ][ dim+1 ]
    \n+
    343 = { { {0, 1, 2, 3}, {0, 1, 2, 3} }, { {0, 2, 1, 3}, {0, 1, 2, 3} } };
    \n+
    344 assert( (i >= 0) && (i <= dim) );
    \n+
    345 i = flip[ child ][ orientation ][ i ];
    \n+
    346 return coords[ child ][ i ];
    \n+
    347 }
    \n+
    \n+
    348 };
    \n+
    \n+
    349
    \n+
    350 }
    \n+
    351
    \n+
    352}
    \n+
    353
    \n+
    354#endif // #if HAVE_ALBERTA
    \n+
    355
    \n+
    356#endif
    \n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition treeiterator.hh:189
    \n-
    GridImp::template Codim< codim >::Entity Entity
    Definition treeiterator.hh:207
    \n-
    int level() const
    ask for level of entities
    Definition treeiterator.hh:243
    \n-
    void increment()
    increment
    Definition treeiterator.hh:411
    \n-
    const GridImp & grid() const
    obtain a reference to the grid
    Definition treeiterator.hh:253
    \n-
    Definition leveliterator.hh:23
    \n-
    Base::MarkerVector MarkerVector
    Definition leveliterator.hh:29
    \n-
    AlbertaGridLevelIterator()
    Definition leveliterator.hh:31
    \n-
    AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *vec, int level)
    Constructor making begin iterator.
    Definition leveliterator.hh:40
    \n-
    Base::Entity Entity
    Definition leveliterator.hh:28
    \n-
    AlbertaGridLevelIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leveliterator.hh:35
    \n-
    void increment()
    increment the iterator
    Definition leveliterator.hh:47
    \n-\n-\n-
    void increment()
    increment the iterator
    Definition leveliterator.hh:81
    \n-
    Base::Entity Entity
    Definition leveliterator.hh:62
    \n-
    Base::MarkerVector MarkerVector
    Definition leveliterator.hh:63
    \n-
    AlbertaGridLevelIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leveliterator.hh:69
    \n-
    AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *, int level)
    Constructor making begin iterator (which is the end iterator in this case)
    Definition leveliterator.hh:74
    \n-
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n+
    ALBERTA REAL_B LocalVector
    Definition misc.hh:49
    \n+
    ALBERTA EL Element
    Definition misc.hh:54
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    Definition meshpointer.hh:40
    \n+\n+
    static ElementInfo createFake(const MeshPointer &mesh, const Element *element, int level, int type=0)
    Definition elementinfo.hh:752
    \n+
    Definition refinement.hh:31
    \n+
    Definition refinement.hh:40
    \n+
    int neighborIndex(int i, int neighbor) const
    Definition refinement.hh:139
    \n+
    int elementType(int i) const
    Definition refinement.hh:125
    \n+
    int count() const
    Definition refinement.hh:67
    \n+
    ElementInfo elementInfo(int i, const LevelProvider &levelProvider) const
    Definition refinement.hh:105
    \n+
    void forEach(Functor &functor) const
    Definition refinement.hh:80
    \n+
    Element * operator[](int i) const
    Definition refinement.hh:95
    \n+
    void forEachInteriorSubChild(Functor &functor) const
    Definition refinement.hh:87
    \n+
    static const int dimension
    Definition refinement.hh:47
    \n+
    bool hasNeighbor(int i, int neighbor) const
    Definition refinement.hh:133
    \n+
    Patch(ElementList *list, int count)
    Definition refinement.hh:58
    \n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition refinement.hh:49
    \n+
    ALBERTA RC_LIST_EL ElementList
    Definition refinement.hh:51
    \n+
    static void apply(Functor &functor, const Patch< dim > &patch)
    Definition refinement.hh:154
    \n+
    static void apply(Functor &functor, const Patch< dim > &patch)
    Definition refinement.hh:169
    \n+
    static void apply(Functor &functor, const Patch< 2 > &patch)
    Definition refinement.hh:179
    \n+
    static void apply(Functor &functor, const Patch< 3 > &patch)
    Definition refinement.hh:202
    \n+
    static void apply(Functor &functor, const Patch< 3 > &patch)
    Definition refinement.hh:249
    \n+
    Definition refinement.hh:292
    \n+
    static const LocalVector & coordinate(int child, int, int i)
    Definition refinement.hh:302
    \n+
    static const LocalVector & coordinate(int child, int, int i)
    Definition refinement.hh:319
    \n+
    static const LocalVector & coordinate(int child, int orientation, int i)
    Definition refinement.hh:337
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,175 +1,454 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-leveliterator.hh\n+refinement.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_LEVELITERATOR_HH\n-6#define DUNE_ALBERTA_LEVELITERATOR_HH\n+5#ifndef DUNE_ALBERTA_REFINEMENT_HH\n+6#define DUNE_ALBERTA_REFINEMENT_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-11\n-12#if HAVE_ALBERTA\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17 // AlbertaGridLevelIterator\n-18 // ------------------------\n-19\n-20 template< int codim, PartitionIteratorType pitype, class GridImp >\n-_\b2_\b1 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-22 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, false >\n-23 {\n-24 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n-25 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b> _\bB_\ba_\bs_\be;\n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+18\n+19#if HAVE_ALBERTA\n+20\n+21namespace _\bD_\bu_\bn_\be\n+22{\n+23\n+24 namespace Alberta\n+25 {\n 26\n-27 public:\n-_\b2_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b2_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n-30\n-_\b3_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-32 {}\n+27 // Internal Forward Declarations\n+28 // -----------------------------\n+29\n+30 template< int dim, int codim >\n+_\b3_\b1 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd;\n+32\n 33\n-_\b3_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n-36 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n-37 {}\n-38\n-_\b4_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-41 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *vec,\n-42 int _\bl_\be_\bv_\be_\bl )\n-43 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, vec, _\bl_\be_\bv_\be_\bl )\n-44 {}\n+34\n+35 // Patch\n+36 // -----\n+37\n+38 template< int dim >\n+_\b3_\b9 class _\bP_\ba_\bt_\bc_\bh\n+40 {\n+41 typedef _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+42\n+43 static_assert(((dim >= 1) && (dim <= 3)),\n+44 \"Alberta supports only dimensions 1, 2, 3\");\n 45\n-_\b4_\b7 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-48 {\n-49 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n-50 }\n-51 };\n+46 public:\n+_\b4_\b7 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+48\n+_\b4_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+50\n+_\b5_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA RC_LIST_EL _\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt;\n 52\n-53\n-54 template< int codim, class GridImp >\n-_\b5_\b5 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn, GridImp >\n-56 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, false >\n-57 {\n-58 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n-59 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b> _\bB_\ba_\bs_\be;\n-60\n-61 public:\n-_\b6_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b6_\b3 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n+53 private:\n+54 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt *list_;\n+55 int count_;\n+56\n+57 public:\n+_\b5_\b8 _\bP_\ba_\bt_\bc_\bh ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt *list, int _\bc_\bo_\bu_\bn_\bt )\n+59 : list_( list ),\n+60 count_( _\bc_\bo_\bu_\bn_\bt )\n+61 {\n+62 assert( _\bc_\bo_\bu_\bn_\bt > 0 );\n+63 }\n 64\n-_\b6_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-66 {}\n-67\n-_\b6_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n-70 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n-71 {}\n-72\n-_\b7_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-75 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *,\n-76 int _\bl_\be_\bv_\be_\bl )\n-77 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n-78 {}\n-79\n-_\b8_\b1 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-82 {\n-83 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+65 _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const;\n+66\n+_\b6_\b7 int _\bc_\bo_\bu_\bn_\bt () const\n+68 {\n+69 return count_;\n+70 }\n+71\n+72 template< class LevelProvider >\n+73 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( int i, const LevelProvider &levelProvider ) const;\n+74\n+75 int _\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be ( int i ) const;\n+76 bool _\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( int i, int neighbor ) const;\n+77 int _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx ( int i, int neighbor ) const;\n+78\n+79 template< class Functor >\n+_\b8_\b0 void _\bf_\bo_\br_\bE_\ba_\bc_\bh ( Functor &functor ) const\n+81 {\n+82 for( int i = 0; i < _\bc_\bo_\bu_\bn_\bt(); ++i )\n+83 functor( (*this)[ i ] );\n 84 }\n-85 };\n-86}\n-87\n-88#endif // #if HAVE_ALBERTA\n-89\n-90#endif // #ifndef DUNE_ALBERTA_LEVELITERATOR_HH\n-_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-@ Ghost_Partition\n-only ghost entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:142\n+85\n+86 template< int codim, class Functor >\n+_\b8_\b7 void _\bf_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd ( Functor &functor ) const\n+88 {\n+89 _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( functor, *this );\n+90 }\n+91 };\n+92\n+93\n+94 template< int dim >\n+_\b9_\b5 inline _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const\n+96 {\n+97 assert( (i >= 0) && (i < count()) );\n+98 return list_[ i ].el_info.el;\n+99 }\n+100\n+101\n+102 template< int dim >\n+103 template< class LevelProvider >\n+104 inline typename _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+_\b1_\b0_\b5 _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( int i, const LevelProvider &levelProvider )\n+const\n+106 {\n+107 assert( (i >= 0) && (i < count()) );\n+108 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be( list_[ i ].el_info );\n+109 }\n+110\n+111 template<>\n+112 template< class LevelProvider >\n+113 inline typename _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b2_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+_\b1_\b1_\b4 _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b2_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( int i, const LevelProvider &levelProvider ) const\n+115 {\n+116 assert( (i >= 0) && (i < count()) );\n+117 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\b2_\b _\b> &mesh = levelProvider.mesh();\n+118 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = (*this)[ i ];\n+119 const int level = levelProvider( element );\n+120 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be( mesh, element, level );\n+121 }\n+122\n+123\n+124 template< int dim >\n+_\b1_\b2_\b5 inline int _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be ( int i ) const\n+126 {\n+127 assert( (i >= 0) && (i < count()) );\n+128 return list_[ i ].el_info.el_type;\n+129 }\n+130\n+131\n+132 template< int dim >\n+_\b1_\b3_\b3 inline bool _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( int i, int neighbor ) const\n+134 {\n+135 return (list_[ i ].neigh[ neighbor ] != NULL);\n+136 }\n+137\n+138 template< int dim >\n+_\b1_\b3_\b9 inline int _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx ( int i, int neighbor ) const\n+140 {\n+141 assert( hasNeighbor( i, neighbor ) );\n+142 return (list_[ i ].neigh[ neighbor ]->no);\n+143 }\n+144\n+145\n+146\n+147 // ForEachInteriorSubChild\n+148 // -----------------------\n+149\n+150 template< int dim >\n+_\b1_\b5_\b1 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< dim, 0 >\n+152 {\n+153 template< class Functor >\n+_\b1_\b5_\b4 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b> &patch )\n+155 {\n+156 for( int i = 0; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n+157 {\n+158 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n+159 functor( father->child[ 0 ], 0 );\n+160 functor( father->child[ 1 ], 0 );\n+161 }\n+162 }\n+163 };\n+164\n+165 template< int dim >\n+_\b1_\b6_\b6 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< dim, dim >\n+167 {\n+168 template< class Functor >\n+_\b1_\b6_\b9 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\b _\b> &patch )\n+170 {\n+171 functor( patch[ 0 ]->child[ 0 ], dim );\n+172 }\n+173 };\n+174\n+175 template<>\n+_\b1_\b7_\b6 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< 2, 1 >\n+177 {\n+178 template< class Functor >\n+_\b1_\b7_\b9 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b2_\b _\b> &patch )\n+180 {\n+181 // see alberta/src/2d/lagrange_2_2d.c for details\n+182 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstFather = patch[ 0 ];\n+183\n+184 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstChild = firstFather->child[ 0 ];\n+185 functor( firstChild, 0 );\n+186 functor( firstChild, 1 );\n+187\n+188 functor( firstFather->child[ 1 ], 1 );\n+189\n+190 if( patch._\bc_\bo_\bu_\bn_\bt() > 1 )\n+191 {\n+192 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ 1 ];\n+193 functor( father->child[ 0 ], 1 );\n+194 }\n+195 }\n+196 };\n+197\n+198 template<>\n+_\b1_\b9_\b9 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< 3, 1 >\n+200 {\n+201 template< class Functor >\n+_\b2_\b0_\b2 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b3_\b _\b> &patch )\n+203 {\n+204 // see alberta/src/3d/lagrange_3_3d.c for details\n+205 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstFather = patch[ 0 ];\n+206\n+207 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstChild = firstFather->child[ 0 ];\n+208 functor( firstChild, 0 );\n+209 functor( firstChild, 1 );\n+210 functor( firstChild, 2 );\n+211\n+212 _\bE_\bl_\be_\bm_\be_\bn_\bt *const secondChild = firstFather->child[ 1 ];\n+213 functor( secondChild, 1 );\n+214 functor( secondChild, 2 );\n+215\n+216 for( int i = 1; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n+217 {\n+218 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n+219 const int type = patch._\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be( i );\n+220\n+221 int lr_set = 0;\n+222 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 0 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 0 ) < i) )\n+223 lr_set |= 1;\n+224 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 1 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 1 ) < i) )\n+225 lr_set |= 2;\n+226 assert( lr_set != 0 );\n+227\n+228 functor( father->child[ 0 ], 0 );\n+229 switch( lr_set )\n+230 {\n+231 case 1 :\n+232 functor( father->child[ 0 ], 2 );\n+233 functor( father->child[ 1 ], (type == 0 ? 1 : 2) );\n+234 break;\n+235\n+236 case 2 :\n+237 functor( father->child[ 0 ], 1 );\n+238 functor( father->child[ 1 ], (type == 0 ? 2 : 1) );\n+239 break;\n+240 }\n+241 }\n+242 }\n+243 };\n+244\n+245 template<>\n+_\b2_\b4_\b6 struct _\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd< 3, 2 >\n+247 {\n+248 template< class Functor >\n+_\b2_\b4_\b9 static void _\ba_\bp_\bp_\bl_\by ( Functor &functor, const _\bP_\ba_\bt_\bc_\bh_\b<_\b _\b3_\b _\b> &patch )\n+250 {\n+251 // see alberta/src/3d/lagrange_2_3d.c for details\n+252 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstFather = patch[ 0 ];\n+253\n+254 _\bE_\bl_\be_\bm_\be_\bn_\bt *const firstChild = firstFather->child[ 0 ];\n+255 functor( firstChild, 2 );\n+256 functor( firstChild, 4 );\n+257 functor( firstChild, 5 );\n+258\n+259 functor( firstFather->child[ 1 ], 2 );\n+260\n+261 for( int i = 1; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n+262 {\n+263 _\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n+264\n+265 int lr_set = 0;\n+266 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 0 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 0 ) < i) )\n+267 lr_set = 1;\n+268 if( patch._\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br( i, 1 ) && (patch._\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx( i, 1 ) < i) )\n+269 lr_set += 2;\n+270 assert( lr_set != 0 );\n+271\n+272 switch( lr_set )\n+273 {\n+274 case 1 :\n+275 functor( father->child[ 0 ], 4 );\n+276 break;\n+277\n+278 case 2 :\n+279 functor( father->child[ 0 ], 5 );\n+280 break;\n+281 }\n+282 }\n+283 }\n+284 };\n+285\n+286\n+287\n+288 // GeometryInFather\n+289 // ----------------\n+290\n+291 template< int dim >\n+_\b2_\b9_\b2 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br;\n+293\n+294 template<>\n+_\b2_\b9_\b5 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br< 1 >\n+296 {\n+_\b2_\b9_\b7 static const int dim = 1;\n+298\n+_\b2_\b9_\b9 typedef _\bR_\be_\ba_\bl _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br[ dim ];\n+300\n+301 static const _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n+_\b3_\b0_\b2 _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int child, int /* orientation */, int i )\n+303 {\n+304 static const _\bR_\be_\ba_\bl coords[ 2 ][ dim+1 ][ dim ]\n+305 = { { {0.0}, {0.5} }, { {0.5}, {1.0} } };\n+306 assert( (i >= 0) && (i <= dim) );\n+307 return coords[ child ][ i ];\n+308 }\n+309 };\n+310\n+311 template<>\n+_\b3_\b1_\b2 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br< 2 >\n+313 {\n+_\b3_\b1_\b4 static const int dim = 2;\n+315\n+_\b3_\b1_\b6 typedef _\bR_\be_\ba_\bl _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br[ dim ];\n+317\n+318 static const _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n+_\b3_\b1_\b9 _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int child, int /* orientation */, int i )\n+320 {\n+321 static const _\bR_\be_\ba_\bl coords[ 2 ][ dim+1 ][ dim ]\n+322 = { { {0.0, 1.0}, {0.0, 0.0}, {0.5, 0.0} },\n+323 { {1.0, 0.0}, {0.0, 1.0}, {0.5, 0.0} } };\n+324 assert( (i >= 0) && (i <= dim) );\n+325 return coords[ child ][ i ];\n+326 }\n+327 };\n+328\n+329 template<>\n+_\b3_\b3_\b0 struct _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br< 3 >\n+331 {\n+_\b3_\b3_\b2 static const int dim = 3;\n+333\n+_\b3_\b3_\b4 typedef _\bR_\be_\ba_\bl _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br[ dim ];\n+335\n+336 static const _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n+_\b3_\b3_\b7 _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int child, int orientation, int i )\n+338 {\n+339 static const _\bR_\be_\ba_\bl coords[ 2 ][ dim+1 ][ dim ]\n+340 = { { {0.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} },\n+341 { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {0.5, 0.0, 0.0} } };\n+342 static const int flip[ 2 ][ 2 ][ dim+1 ]\n+343 = { { {0, 1, 2, 3}, {0, 1, 2, 3} }, { {0, 2, 1, 3}, {0, 1, 2, 3} } };\n+344 assert( (i >= 0) && (i <= dim) );\n+345 i = flip[ child ][ orientation ][ i ];\n+346 return coords[ child ][ i ];\n+347 }\n+348 };\n+349\n+350 }\n+351\n+352}\n+353\n+354#endif // #if HAVE_ALBERTA\n+355\n+356#endif\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+#define ALBERTA\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-ask for level of entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n-const GridImp & grid() const\n-obtain a reference to the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-Base::MarkerVector MarkerVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLevelIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *vec, int\n-level)\n-Constructor making begin iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Base::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLevelIterator(const GridImp &grid, int level)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment the iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLevelIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment the iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Base::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-Base::MarkerVector MarkerVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLevelIterator(const GridImp &grid, int level)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLevelIterator(const GridImp &grid, const MarkerVector *, int level)\n-Constructor making begin iterator (which is the end iterator in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leveliterator.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-marker assigning subentities to one element containing them\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_B LocalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ALBERTA EL Element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be\n+static ElementInfo createFake(const MeshPointer &mesh, const Element *element,\n+int level, int type=0)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:752\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br_\bI_\bn_\bd_\be_\bx\n+int neighborIndex(int i, int neighbor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+int elementType(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bc_\bo_\bu_\bn_\bt\n+int count() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo elementInfo(int i, const LevelProvider &levelProvider) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh\n+void forEach(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+Element * operator[](int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd\n+void forEachInteriorSubChild(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\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 refinement.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bh_\ba_\bs_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n+bool hasNeighbor(int i, int neighbor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n+Patch(ElementList *list, int count)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dimension > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\bi_\bs_\bt\n+ALBERTA RC_LIST_EL ElementList\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(Functor &functor, const Patch< dim > &patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(Functor &functor, const Patch< dim > &patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:169\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(Functor &functor, const Patch< 2 > &patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(Functor &functor, const Patch< 3 > &patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bo_\br_\bE_\ba_\bc_\bh_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bS_\bu_\bb_\bC_\bh_\bi_\bl_\bd_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(Functor &functor, const Patch< 3 > &patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b1_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+static const LocalVector & coordinate(int child, int, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:302\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b2_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+static const LocalVector & coordinate(int child, int, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\b3_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+static const LocalVector & coordinate(int child, int orientation, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:337\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00692.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00692.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hierarchiciterator.hh File Reference\n+dune-grid: undefine-3.0.hh File Reference\n \n \n \n \n \n \n \n@@ -69,36 +69,25 @@\n \n \n \n
    \n- \n-
    hierarchiciterator.hh File Reference
    \n+
    undefine-3.0.hh File Reference
    \n
    \n
    \n-\n+\n+

    Contains #undefs for all preprocessor macros defined by alberta. \n+More...

    \n+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::AlbertaGridHierarchicIterator< GridImp >
     
    \n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    Contains #undefs for all preprocessor macros defined by alberta.

    \n+

    This file is created automatically by the perl script undefAllMacros.pl.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,15 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchiciterator.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+undefine-3.0.hh File Reference\n+Contains #undefs for all preprocessor macros defined by alberta. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0 Include standard header files.\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 #undefs for all preprocessor macros defined by alberta.\n+This file is created automatically by the perl script undefAllMacros.pl.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00692_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00692_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hierarchiciterator.hh Source File\n+dune-grid: undefine-3.0.hh Source File\n \n \n \n \n \n \n \n@@ -74,210 +74,900 @@\n \n \n \n
    \n-
    hierarchiciterator.hh
    \n+
    undefine-3.0.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH
    \n-
    6#define DUNE_ALBERTA_HIERARCHICITERATOR_HH
    \n-
    7
    \n-\n-\n-
    10
    \n-
    11#if HAVE_ALBERTA
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n+
    12#ifdef _ALBERTA_H_
    \n+
    13 #undef _ALBERTA_H_
    \n+
    14#endif // _ALBERTA_H_
    \n
    15
    \n-
    16 // AlbertaGridHierarchicIterator
    \n-
    17 // -----------------------------
    \n-
    18
    \n-
    27 template< class GridImp >
    \n-
    \n-\n-
    29 {
    \n-\n+
    16#ifdef ALBERTA_MAGIC
    \n+
    17 #undef ALBERTA_MAGIC
    \n+
    18#endif // ALBERTA_MAGIC
    \n+
    19
    \n+
    20#ifdef ALBERTA_VERSION
    \n+
    21 #undef ALBERTA_VERSION
    \n+
    22#endif // ALBERTA_VERSION
    \n+
    23
    \n+
    24#ifdef DIM_LIMIT
    \n+
    25 #undef DIM_LIMIT
    \n+
    26#endif // DIM_LIMIT
    \n+
    27
    \n+
    28#ifdef DIM_MAX
    \n+
    29 #undef DIM_MAX
    \n+
    30#endif // DIM_MAX
    \n
    31
    \n-
    32 public:
    \n-
    33 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    34 typedef typename GridImp::ctype ctype;
    \n+
    32#ifdef N_VERTICES
    \n+
    33 #undef N_VERTICES
    \n+
    34#endif // N_VERTICES
    \n
    35
    \n-\n-\n-
    38
    \n-
    39 typedef typename EntityImp::ElementInfo ElementInfo;
    \n-
    40
    \n-\n+
    36#ifdef N_EDGES
    \n+
    37 #undef N_EDGES
    \n+
    38#endif // N_EDGES
    \n+
    39
    \n+
    40#ifdef N_WALLS
    \n+
    41 #undef N_WALLS
    \n+
    42#endif // N_WALLS
    \n
    43
    \n-
    45 AlbertaGridHierarchicIterator ( const GridImp &grid,
    \n-
    46 const ElementInfo &elementInfo,
    \n-
    47 int maxLevel );
    \n-
    48
    \n-
    50 AlbertaGridHierarchicIterator ( const GridImp &grid, int actLevel, int maxLevel );
    \n+
    44#ifdef N_FACES
    \n+
    45 #undef N_FACES
    \n+
    46#endif // N_FACES
    \n+
    47
    \n+
    48#ifdef N_NEIGH
    \n+
    49 #undef N_NEIGH
    \n+
    50#endif // N_NEIGH
    \n
    51
    \n-
    53 AlbertaGridHierarchicIterator ( const This &other );
    \n-
    54
    \n-
    56 This &operator= ( const This &other );
    \n-
    57
    \n-
    59 void increment();
    \n-
    60
    \n-
    \n-
    62 bool equals ( const This &other ) const
    \n-
    63 {
    \n-
    64 return entity_.impl().equals( other.entity_.impl() );
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    \n-\n-
    69 {
    \n-
    70 return entity_;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    74 int level () const
    \n-
    75 {
    \n-
    76 return entity_.impl().level();
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 protected:
    \n-
    \n-
    81 const GridImp &grid () const
    \n-
    82 {
    \n-
    83 return entity_.impl().grid();
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    86 private:
    \n-
    87 void increment ( ElementInfo elementInfo );
    \n-
    88
    \n-
    89 mutable Entity entity_;
    \n-
    90
    \n-
    91 // level on which the iterator was started
    \n-
    92 int startLevel_;
    \n-
    93
    \n-
    94 // maximal level to go down to
    \n-
    95 int maxlevel_;
    \n-
    96 };
    \n-
    \n-
    97
    \n-
    98
    \n-
    99 template< class GridImp >
    \n-
    100 inline AlbertaGridHierarchicIterator< GridImp >
    \n-
    \n-
    101 ::AlbertaGridHierarchicIterator( const GridImp &grid, int actLevel, int maxLevel )
    \n-
    102 : entity_( EntityImp( grid ) ),
    \n-
    103 startLevel_( actLevel ),
    \n-
    104 maxlevel_( maxLevel )
    \n-
    105 {}
    \n-
    \n-
    106
    \n+
    52#ifdef N_LAMBDA
    \n+
    53 #undef N_LAMBDA
    \n+
    54#endif // N_LAMBDA
    \n+
    55
    \n+
    56#ifdef DIM_FAC
    \n+
    57 #undef DIM_FAC
    \n+
    58#endif // DIM_FAC
    \n+
    59
    \n+
    60#ifdef VERTEX_OF_EDGE
    \n+
    61 #undef VERTEX_OF_EDGE
    \n+
    62#endif // VERTEX_OF_EDGE
    \n+
    63
    \n+
    64#ifdef VERTEX_OF_WALL
    \n+
    65 #undef VERTEX_OF_WALL
    \n+
    66#endif // VERTEX_OF_WALL
    \n+
    67
    \n+
    68#ifdef N_VERTICES_0D
    \n+
    69 #undef N_VERTICES_0D
    \n+
    70#endif // N_VERTICES_0D
    \n+
    71
    \n+
    72#ifdef N_EDGES_0D
    \n+
    73 #undef N_EDGES_0D
    \n+
    74#endif // N_EDGES_0D
    \n+
    75
    \n+
    76#ifdef N_FACES_0D
    \n+
    77 #undef N_FACES_0D
    \n+
    78#endif // N_FACES_0D
    \n+
    79
    \n+
    80#ifdef N_NEIGH_0D
    \n+
    81 #undef N_NEIGH_0D
    \n+
    82#endif // N_NEIGH_0D
    \n+
    83
    \n+
    84#ifdef N_WALLS_0D
    \n+
    85 #undef N_WALLS_0D
    \n+
    86#endif // N_WALLS_0D
    \n+
    87
    \n+
    88#ifdef N_LAMBDA_0D
    \n+
    89 #undef N_LAMBDA_0D
    \n+
    90#endif // N_LAMBDA_0D
    \n+
    91
    \n+
    92#ifdef DIM_FAC_0D
    \n+
    93 #undef DIM_FAC_0D
    \n+
    94#endif // DIM_FAC_0D
    \n+
    95
    \n+
    96#ifdef VERTEX_OF_EDGE_0D
    \n+
    97 #undef VERTEX_OF_EDGE_0D
    \n+
    98#endif // VERTEX_OF_EDGE_0D
    \n+
    99
    \n+
    100#ifdef VERTEX_OF_WALL_0D
    \n+
    101 #undef VERTEX_OF_WALL_0D
    \n+
    102#endif // VERTEX_OF_WALL_0D
    \n+
    103
    \n+
    104#ifdef N_VERTICES_1D
    \n+
    105 #undef N_VERTICES_1D
    \n+
    106#endif // N_VERTICES_1D
    \n
    107
    \n-
    108 template< class GridImp >
    \n-\n-
    \n-\n-
    111 const ElementInfo &elementInfo,
    \n-
    112 int maxLevel )
    \n-
    113 : entity_( EntityImp( grid ) ),
    \n-
    114 startLevel_( elementInfo.level() ),
    \n-
    115 maxlevel_( maxLevel )
    \n-
    116 {
    \n-
    117 increment( elementInfo );
    \n-
    118 }
    \n-
    \n+
    108#ifdef N_EDGES_1D
    \n+
    109 #undef N_EDGES_1D
    \n+
    110#endif // N_EDGES_1D
    \n+
    111
    \n+
    112#ifdef N_FACES_1D
    \n+
    113 #undef N_FACES_1D
    \n+
    114#endif // N_FACES_1D
    \n+
    115
    \n+
    116#ifdef N_NEIGH_1D
    \n+
    117 #undef N_NEIGH_1D
    \n+
    118#endif // N_NEIGH_1D
    \n
    119
    \n-
    120
    \n-
    121 template< class GridImp >
    \n-\n-
    \n-\n-
    124 : entity_( other.entity_ ),
    \n-
    125 startLevel_( other.startLevel_ ),
    \n-
    126 maxlevel_( other.maxlevel_ )
    \n-
    127 {}
    \n-
    \n-
    128
    \n-
    129
    \n-
    130 template< class GridImp >
    \n-\n-
    \n-\n-
    133 {
    \n-
    134 entity_ = other.entity_;
    \n-
    135 startLevel_ = other.startLevel_;
    \n-
    136 maxlevel_ = other.maxlevel_;
    \n-
    137 return *this;
    \n-
    138 }
    \n-
    \n+
    120#ifdef N_WALLS_1D
    \n+
    121 #undef N_WALLS_1D
    \n+
    122#endif // N_WALLS_1D
    \n+
    123
    \n+
    124#ifdef N_LAMBDA_1D
    \n+
    125 #undef N_LAMBDA_1D
    \n+
    126#endif // N_LAMBDA_1D
    \n+
    127
    \n+
    128#ifdef DIM_FAC_1D
    \n+
    129 #undef DIM_FAC_1D
    \n+
    130#endif // DIM_FAC_1D
    \n+
    131
    \n+
    132#ifdef VERTEX_OF_EDGE_1D
    \n+
    133 #undef VERTEX_OF_EDGE_1D
    \n+
    134#endif // VERTEX_OF_EDGE_1D
    \n+
    135
    \n+
    136#ifdef VERTEX_OF_WALL_1D
    \n+
    137 #undef VERTEX_OF_WALL_1D
    \n+
    138#endif // VERTEX_OF_WALL_1D
    \n
    139
    \n-
    140
    \n-
    141 template< class GridImp >
    \n-
    \n-\n-
    143 {
    \n-
    144 increment( entity_.impl().elementInfo() );
    \n-
    145 }
    \n-
    \n-
    146
    \n-
    147 template< class GridImp >
    \n-\n-
    149 ::increment ( ElementInfo elementInfo )
    \n-
    150 {
    \n-
    151 assert( !elementInfo == false );
    \n-
    152 if( (elementInfo.level() >= maxlevel_) || elementInfo.isLeaf() )
    \n-
    153 {
    \n-
    154 while( (elementInfo.level() > startLevel_) && (elementInfo.indexInFather() == 1) )
    \n-
    155 elementInfo = elementInfo.father();
    \n-
    156 if( elementInfo.level() > startLevel_ )
    \n-
    157 entity_.impl().setElement( elementInfo.father().child( 1 ), 0 );
    \n-
    158 else
    \n-
    159 entity_.impl().clearElement();
    \n-
    160 }
    \n-
    161 else
    \n-
    162 entity_.impl().setElement( elementInfo.child( 0 ), 0 );
    \n-
    163 }
    \n-
    164
    \n-
    165}
    \n-
    166
    \n-
    167#endif // #if HAVE_ALBERTA
    \n-
    168
    \n-
    169#endif // #ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH
    \n-\n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition hierarchiciterator.hh:29
    \n-
    Entity & dereference() const
    dereferencing
    Definition hierarchiciterator.hh:68
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition hierarchiciterator.hh:33
    \n-
    const GridImp & grid() const
    obtain a reference to the grid
    Definition hierarchiciterator.hh:81
    \n-
    EntityImp::ElementInfo ElementInfo
    Definition hierarchiciterator.hh:39
    \n-
    int level() const
    ask for level of entities
    Definition hierarchiciterator.hh:74
    \n-
    AlbertaGridHierarchicIterator()
    Definition hierarchiciterator.hh:41
    \n-
    void increment()
    increment
    Definition hierarchiciterator.hh:142
    \n-
    GridImp::ctype ctype
    Definition hierarchiciterator.hh:34
    \n-
    EntityObject::ImplementationType EntityImp
    Definition hierarchiciterator.hh:37
    \n-
    bool equals(const This &other) const
    equality
    Definition hierarchiciterator.hh:62
    \n-
    This & operator=(const This &other)
    assignment operator
    Definition hierarchiciterator.hh:132
    \n-
    MakeableInterfaceObject< Entity > EntityObject
    Definition hierarchiciterator.hh:36
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-\n-
    InterfaceType::Implementation ImplementationType
    Definition common/grid.hh:1108
    \n+
    140#ifdef N_VERTICES_2D
    \n+
    141 #undef N_VERTICES_2D
    \n+
    142#endif // N_VERTICES_2D
    \n+
    143
    \n+
    144#ifdef N_EDGES_2D
    \n+
    145 #undef N_EDGES_2D
    \n+
    146#endif // N_EDGES_2D
    \n+
    147
    \n+
    148#ifdef N_FACES_2D
    \n+
    149 #undef N_FACES_2D
    \n+
    150#endif // N_FACES_2D
    \n+
    151
    \n+
    152#ifdef N_NEIGH_2D
    \n+
    153 #undef N_NEIGH_2D
    \n+
    154#endif // N_NEIGH_2D
    \n+
    155
    \n+
    156#ifdef N_WALLS_2D
    \n+
    157 #undef N_WALLS_2D
    \n+
    158#endif // N_WALLS_2D
    \n+
    159
    \n+
    160#ifdef N_LAMBDA_2D
    \n+
    161 #undef N_LAMBDA_2D
    \n+
    162#endif // N_LAMBDA_2D
    \n+
    163
    \n+
    164#ifdef DIM_FAC_2D
    \n+
    165 #undef DIM_FAC_2D
    \n+
    166#endif // DIM_FAC_2D
    \n+
    167
    \n+
    168#ifdef VERTEX_OF_EDGE_2D
    \n+
    169 #undef VERTEX_OF_EDGE_2D
    \n+
    170#endif // VERTEX_OF_EDGE_2D
    \n+
    171
    \n+
    172#ifdef VERTEX_OF_WALL_2D
    \n+
    173 #undef VERTEX_OF_WALL_2D
    \n+
    174#endif // VERTEX_OF_WALL_2D
    \n+
    175
    \n+
    176#ifdef N_VERTICES_3D
    \n+
    177 #undef N_VERTICES_3D
    \n+
    178#endif // N_VERTICES_3D
    \n+
    179
    \n+
    180#ifdef N_EDGES_3D
    \n+
    181 #undef N_EDGES_3D
    \n+
    182#endif // N_EDGES_3D
    \n+
    183
    \n+
    184#ifdef N_FACES_3D
    \n+
    185 #undef N_FACES_3D
    \n+
    186#endif // N_FACES_3D
    \n+
    187
    \n+
    188#ifdef N_NEIGH_3D
    \n+
    189 #undef N_NEIGH_3D
    \n+
    190#endif // N_NEIGH_3D
    \n+
    191
    \n+
    192#ifdef N_WALLS_3D
    \n+
    193 #undef N_WALLS_3D
    \n+
    194#endif // N_WALLS_3D
    \n+
    195
    \n+
    196#ifdef N_LAMBDA_3D
    \n+
    197 #undef N_LAMBDA_3D
    \n+
    198#endif // N_LAMBDA_3D
    \n+
    199
    \n+
    200#ifdef DIM_FAC_3D
    \n+
    201 #undef DIM_FAC_3D
    \n+
    202#endif // DIM_FAC_3D
    \n+
    203
    \n+
    204#ifdef VERTEX_OF_EDGE_3D
    \n+
    205 #undef VERTEX_OF_EDGE_3D
    \n+
    206#endif // VERTEX_OF_EDGE_3D
    \n+
    207
    \n+
    208#ifdef VERTEX_OF_WALL_3D
    \n+
    209 #undef VERTEX_OF_WALL_3D
    \n+
    210#endif // VERTEX_OF_WALL_3D
    \n+
    211
    \n+
    212#ifdef N_LAMBDA_MAX
    \n+
    213 #undef N_LAMBDA_MAX
    \n+
    214#endif // N_LAMBDA_MAX
    \n+
    215
    \n+
    216#ifdef N_VERTICES_MAX
    \n+
    217 #undef N_VERTICES_MAX
    \n+
    218#endif // N_VERTICES_MAX
    \n+
    219
    \n+
    220#ifdef N_EDGES_MAX
    \n+
    221 #undef N_EDGES_MAX
    \n+
    222#endif // N_EDGES_MAX
    \n+
    223
    \n+
    224#ifdef N_FACES_MAX
    \n+
    225 #undef N_FACES_MAX
    \n+
    226#endif // N_FACES_MAX
    \n+
    227
    \n+
    228#ifdef N_NEIGH_MAX
    \n+
    229 #undef N_NEIGH_MAX
    \n+
    230#endif // N_NEIGH_MAX
    \n+
    231
    \n+
    232#ifdef N_WALLS_MAX
    \n+
    233 #undef N_WALLS_MAX
    \n+
    234#endif // N_WALLS_MAX
    \n+
    235
    \n+
    236#ifdef DIM_FAC_MAX
    \n+
    237 #undef DIM_FAC_MAX
    \n+
    238#endif // DIM_FAC_MAX
    \n+
    239
    \n+
    240#ifdef N_LAMBDA_LIMIT
    \n+
    241 #undef N_LAMBDA_LIMIT
    \n+
    242#endif // N_LAMBDA_LIMIT
    \n+
    243
    \n+
    244#ifdef N_VERTICES_LIMIT
    \n+
    245 #undef N_VERTICES_LIMIT
    \n+
    246#endif // N_VERTICES_LIMIT
    \n+
    247
    \n+
    248#ifdef N_EDGES_LIMIT
    \n+
    249 #undef N_EDGES_LIMIT
    \n+
    250#endif // N_EDGES_LIMIT
    \n+
    251
    \n+
    252#ifdef N_FACES_LIMIT
    \n+
    253 #undef N_FACES_LIMIT
    \n+
    254#endif // N_FACES_LIMIT
    \n+
    255
    \n+
    256#ifdef N_NEIGH_LIMIT
    \n+
    257 #undef N_NEIGH_LIMIT
    \n+
    258#endif // N_NEIGH_LIMIT
    \n+
    259
    \n+
    260#ifdef N_WALLS_LIMIT
    \n+
    261 #undef N_WALLS_LIMIT
    \n+
    262#endif // N_WALLS_LIMIT
    \n+
    263
    \n+
    264#ifdef DIM_FAC_LIMIT
    \n+
    265 #undef DIM_FAC_LIMIT
    \n+
    266#endif // DIM_FAC_LIMIT
    \n+
    267
    \n+
    268#ifdef INDEX
    \n+
    269 #undef INDEX
    \n+
    270#endif // INDEX
    \n+
    271
    \n+
    272#ifdef INDEX
    \n+
    273 #undef INDEX
    \n+
    274#endif // INDEX
    \n+
    275
    \n+
    276#ifdef IS_LEAF_EL
    \n+
    277 #undef IS_LEAF_EL
    \n+
    278#endif // IS_LEAF_EL
    \n+
    279
    \n+
    280#ifdef LEAF_DATA
    \n+
    281 #undef LEAF_DATA
    \n+
    282#endif // LEAF_DATA
    \n+
    283
    \n+
    284#ifdef INTERIOR
    \n+
    285 #undef INTERIOR
    \n+
    286#endif // INTERIOR
    \n+
    287
    \n+
    288#ifdef DIRICHLET
    \n+
    289 #undef DIRICHLET
    \n+
    290#endif // DIRICHLET
    \n+
    291
    \n+
    292#ifdef NEUMANN
    \n+
    293 #undef NEUMANN
    \n+
    294#endif // NEUMANN
    \n+
    295
    \n+
    296#ifdef IS_NEUMANN
    \n+
    297 #undef IS_NEUMANN
    \n+
    298#endif // IS_NEUMANN
    \n+
    299
    \n+
    300#ifdef IS_DIRICHLET
    \n+
    301 #undef IS_DIRICHLET
    \n+
    302#endif // IS_DIRICHLET
    \n+
    303
    \n+
    304#ifdef IS_INTERIOR
    \n+
    305 #undef IS_INTERIOR
    \n+
    306#endif // IS_INTERIOR
    \n+
    307
    \n+
    308#ifdef N_BNDRY_TYPES
    \n+
    309 #undef N_BNDRY_TYPES
    \n+
    310#endif // N_BNDRY_TYPES
    \n+
    311
    \n+
    312#ifdef LIST_ENTRY
    \n+
    313 #undef LIST_ENTRY
    \n+
    314#endif // LIST_ENTRY
    \n+
    315
    \n+
    316#ifdef INIT_EL_TAG_CTX_INIT
    \n+
    317 #undef INIT_EL_TAG_CTX_INIT
    \n+
    318#endif // INIT_EL_TAG_CTX_INIT
    \n+
    319
    \n+
    320#ifdef INIT_EL_TAG_CTX_UNIQ
    \n+
    321 #undef INIT_EL_TAG_CTX_UNIQ
    \n+
    322#endif // INIT_EL_TAG_CTX_UNIQ
    \n+
    323
    \n+
    324#ifdef INIT_EL_TAG_CTX_NULL
    \n+
    325 #undef INIT_EL_TAG_CTX_NULL
    \n+
    326#endif // INIT_EL_TAG_CTX_NULL
    \n+
    327
    \n+
    328#ifdef INIT_EL_TAG_CTX_DFLT
    \n+
    329 #undef INIT_EL_TAG_CTX_DFLT
    \n+
    330#endif // INIT_EL_TAG_CTX_DFLT
    \n+
    331
    \n+
    332#ifdef INIT_EL_TAG_CTX_TAG
    \n+
    333 #undef INIT_EL_TAG_CTX_TAG
    \n+
    334#endif // INIT_EL_TAG_CTX_TAG
    \n+
    335
    \n+
    336#ifdef INIT_ELEMENT_METHOD
    \n+
    337 #undef INIT_ELEMENT_METHOD
    \n+
    338#endif // INIT_ELEMENT_METHOD
    \n+
    339
    \n+
    340#ifdef INIT_ELEMENT_FLAGS
    \n+
    341 #undef INIT_ELEMENT_FLAGS
    \n+
    342#endif // INIT_ELEMENT_FLAGS
    \n+
    343
    \n+
    344#ifdef INIT_ELEMENT_DEFUN
    \n+
    345 #undef INIT_ELEMENT_DEFUN
    \n+
    346#endif // INIT_ELEMENT_DEFUN
    \n+
    347
    \n+
    348#ifdef INIT_OBJECT
    \n+
    349 #undef INIT_OBJECT
    \n+
    350#endif // INIT_OBJECT
    \n+
    351
    \n+
    352#ifdef INIT_ELEMENT_DECL
    \n+
    353 #undef INIT_ELEMENT_DECL
    \n+
    354#endif // INIT_ELEMENT_DECL
    \n+
    355
    \n+
    356#ifdef INIT_ELEMENT_INITIALIZER
    \n+
    357 #undef INIT_ELEMENT_INITIALIZER
    \n+
    358#endif // INIT_ELEMENT_INITIALIZER
    \n+
    359
    \n+
    360#ifdef INIT_ELEMENT
    \n+
    361 #undef INIT_ELEMENT
    \n+
    362#endif // INIT_ELEMENT
    \n+
    363
    \n+
    364#ifdef INIT_ELEMENT_NEEDED
    \n+
    365 #undef INIT_ELEMENT_NEEDED
    \n+
    366#endif // INIT_ELEMENT_NEEDED
    \n+
    367
    \n+
    368#ifdef INIT_ELEMENT_SETUP
    \n+
    369 #undef INIT_ELEMENT_SETUP
    \n+
    370#endif // INIT_ELEMENT_SETUP
    \n+
    371
    \n+
    372#ifdef INIT_OBJECT_SINGLE
    \n+
    373 #undef INIT_OBJECT_SINGLE
    \n+
    374#endif // INIT_OBJECT_SINGLE
    \n+
    375
    \n+
    376#ifdef INIT_ELEMENT_SINGLE
    \n+
    377 #undef INIT_ELEMENT_SINGLE
    \n+
    378#endif // INIT_ELEMENT_SINGLE
    \n+
    379
    \n+
    380#ifdef vertex_of_wall_2d
    \n+
    381 #undef vertex_of_wall_2d
    \n+
    382#endif // vertex_of_wall_2d
    \n+
    383
    \n+
    384#ifdef PARAM_STRATEGY_MASK
    \n+
    385 #undef PARAM_STRATEGY_MASK
    \n+
    386#endif // PARAM_STRATEGY_MASK
    \n+
    387
    \n+
    388#ifdef PARAM_PERIODIC_COORDS
    \n+
    389 #undef PARAM_PERIODIC_COORDS
    \n+
    390#endif // PARAM_PERIODIC_COORDS
    \n+
    391
    \n+
    392#ifdef FILL_EL_DET
    \n+
    393 #undef FILL_EL_DET
    \n+
    394#endif // FILL_EL_DET
    \n+
    395
    \n+
    396#ifdef FILL_EL_LAMBDA
    \n+
    397 #undef FILL_EL_LAMBDA
    \n+
    398#endif // FILL_EL_LAMBDA
    \n+
    399
    \n+
    400#ifdef FILL_EL_WALL_SHIFT
    \n+
    401 #undef FILL_EL_WALL_SHIFT
    \n+
    402#endif // FILL_EL_WALL_SHIFT
    \n+
    403
    \n+
    404#ifdef FILL_EL_WALL_MASK
    \n+
    405 #undef FILL_EL_WALL_MASK
    \n+
    406#endif // FILL_EL_WALL_MASK
    \n+
    407
    \n+
    408#ifdef FILL_EL_WALL_DET
    \n+
    409 #undef FILL_EL_WALL_DET
    \n+
    410#endif // FILL_EL_WALL_DET
    \n+
    411
    \n+
    412#ifdef FILL_EL_WALL_NORMAL
    \n+
    413 #undef FILL_EL_WALL_NORMAL
    \n+
    414#endif // FILL_EL_WALL_NORMAL
    \n+
    415
    \n+
    416#ifdef FILL_EL_WALL_ORIENTATION
    \n+
    417 #undef FILL_EL_WALL_ORIENTATION
    \n+
    418#endif // FILL_EL_WALL_ORIENTATION
    \n+
    419
    \n+
    420#ifdef FILL_EL_WALL_REL_ORIENTATION
    \n+
    421 #undef FILL_EL_WALL_REL_ORIENTATION
    \n+
    422#endif // FILL_EL_WALL_REL_ORIENTATION
    \n+
    423
    \n+
    424#ifdef FILL_EL_WALL_DETS
    \n+
    425 #undef FILL_EL_WALL_DETS
    \n+
    426#endif // FILL_EL_WALL_DETS
    \n+
    427
    \n+
    428#ifdef FILL_EL_WALL_NORMALS
    \n+
    429 #undef FILL_EL_WALL_NORMALS
    \n+
    430#endif // FILL_EL_WALL_NORMALS
    \n+
    431
    \n+
    432#ifdef FILL_EL_WALL_ORIENTATIONS
    \n+
    433 #undef FILL_EL_WALL_ORIENTATIONS
    \n+
    434#endif // FILL_EL_WALL_ORIENTATIONS
    \n+
    435
    \n+
    436#ifdef FILL_EL_WALL_REL_ORIENTATIONS
    \n+
    437 #undef FILL_EL_WALL_REL_ORIENTATIONS
    \n+
    438#endif // FILL_EL_WALL_REL_ORIENTATIONS
    \n+
    439
    \n+
    440#ifdef BNDRY_FLAGS_INIT
    \n+
    441 #undef BNDRY_FLAGS_INIT
    \n+
    442#endif // BNDRY_FLAGS_INIT
    \n+
    443
    \n+
    444#ifdef BNDRY_FLAGS_ALL
    \n+
    445 #undef BNDRY_FLAGS_ALL
    \n+
    446#endif // BNDRY_FLAGS_ALL
    \n+
    447
    \n+
    448#ifdef BNDRY_FLAGS_CPY
    \n+
    449 #undef BNDRY_FLAGS_CPY
    \n+
    450#endif // BNDRY_FLAGS_CPY
    \n+
    451
    \n+
    452#ifdef BNDRY_FLAGS_AND
    \n+
    453 #undef BNDRY_FLAGS_AND
    \n+
    454#endif // BNDRY_FLAGS_AND
    \n+
    455
    \n+
    456#ifdef BNDRY_FLAGS_OR
    \n+
    457 #undef BNDRY_FLAGS_OR
    \n+
    458#endif // BNDRY_FLAGS_OR
    \n+
    459
    \n+
    460#ifdef BNDRY_FLAGS_XOR
    \n+
    461 #undef BNDRY_FLAGS_XOR
    \n+
    462#endif // BNDRY_FLAGS_XOR
    \n+
    463
    \n+
    464#ifdef BNDRY_FLAGS_IS_INTERIOR
    \n+
    465 #undef BNDRY_FLAGS_IS_INTERIOR
    \n+
    466#endif // BNDRY_FLAGS_IS_INTERIOR
    \n+
    467
    \n+
    468#ifdef BNDRY_FLAGS_IS_AT_BNDRY
    \n+
    469 #undef BNDRY_FLAGS_IS_AT_BNDRY
    \n+
    470#endif // BNDRY_FLAGS_IS_AT_BNDRY
    \n+
    471
    \n+
    472#ifdef BNDRY_FLAGS_SET
    \n+
    473 #undef BNDRY_FLAGS_SET
    \n+
    474#endif // BNDRY_FLAGS_SET
    \n+
    475
    \n+
    476#ifdef BNDRY_FLAGS_IS_PARTOF
    \n+
    477 #undef BNDRY_FLAGS_IS_PARTOF
    \n+
    478#endif // BNDRY_FLAGS_IS_PARTOF
    \n+
    479
    \n+
    480#ifdef BNDRY_FLAGS_FFBB
    \n+
    481 #undef BNDRY_FLAGS_FFBB
    \n+
    482#endif // BNDRY_FLAGS_FFBB
    \n+
    483
    \n+
    484#ifdef RCLE_NONE
    \n+
    485 #undef RCLE_NONE
    \n+
    486#endif // RCLE_NONE
    \n+
    487
    \n+
    488#ifdef RCLE_COARSE_EDGE_COMPAT
    \n+
    489 #undef RCLE_COARSE_EDGE_COMPAT
    \n+
    490#endif // RCLE_COARSE_EDGE_COMPAT
    \n+
    491
    \n+
    492#ifdef FILL_NOTHING
    \n+
    493 #undef FILL_NOTHING
    \n+
    494#endif // FILL_NOTHING
    \n+
    495
    \n+
    496#ifdef FILL_COORDS
    \n+
    497 #undef FILL_COORDS
    \n+
    498#endif // FILL_COORDS
    \n+
    499
    \n+
    500#ifdef FILL_BOUND
    \n+
    501 #undef FILL_BOUND
    \n+
    502#endif // FILL_BOUND
    \n+
    503
    \n+
    504#ifdef FILL_NEIGH
    \n+
    505 #undef FILL_NEIGH
    \n+
    506#endif // FILL_NEIGH
    \n+
    507
    \n+
    508#ifdef FILL_OPP_COORDS
    \n+
    509 #undef FILL_OPP_COORDS
    \n+
    510#endif // FILL_OPP_COORDS
    \n+
    511
    \n+
    512#ifdef FILL_ORIENTATION
    \n+
    513 #undef FILL_ORIENTATION
    \n+
    514#endif // FILL_ORIENTATION
    \n+
    515
    \n+
    516#ifdef FILL_PROJECTION
    \n+
    517 #undef FILL_PROJECTION
    \n+
    518#endif // FILL_PROJECTION
    \n+
    519
    \n+
    520#ifdef FILL_MACRO_WALLS
    \n+
    521 #undef FILL_MACRO_WALLS
    \n+
    522#endif // FILL_MACRO_WALLS
    \n+
    523
    \n+
    524#ifdef FILL_WALL_MAP
    \n+
    525 #undef FILL_WALL_MAP
    \n+
    526#endif // FILL_WALL_MAP
    \n+
    527
    \n+
    528#ifdef FILL_NON_PERIODIC
    \n+
    529 #undef FILL_NON_PERIODIC
    \n+
    530#endif // FILL_NON_PERIODIC
    \n+
    531
    \n+
    532#ifdef FILL_MASTER_INFO
    \n+
    533 #undef FILL_MASTER_INFO
    \n+
    534#endif // FILL_MASTER_INFO
    \n+
    535
    \n+
    536#ifdef FILL_ANY
    \n+
    537 #undef FILL_ANY
    \n+
    538#endif // FILL_ANY
    \n+
    539
    \n+
    540#ifdef CALL_EVERY_EL_PREORDER
    \n+
    541 #undef CALL_EVERY_EL_PREORDER
    \n+
    542#endif // CALL_EVERY_EL_PREORDER
    \n+
    543
    \n+
    544#ifdef CALL_EVERY_EL_INORDER
    \n+
    545 #undef CALL_EVERY_EL_INORDER
    \n+
    546#endif // CALL_EVERY_EL_INORDER
    \n+
    547
    \n+
    548#ifdef CALL_EVERY_EL_POSTORDER
    \n+
    549 #undef CALL_EVERY_EL_POSTORDER
    \n+
    550#endif // CALL_EVERY_EL_POSTORDER
    \n+
    551
    \n+
    552#ifdef CALL_LEAF_EL
    \n+
    553 #undef CALL_LEAF_EL
    \n+
    554#endif // CALL_LEAF_EL
    \n+
    555
    \n+
    556#ifdef CALL_LEAF_EL_LEVEL
    \n+
    557 #undef CALL_LEAF_EL_LEVEL
    \n+
    558#endif // CALL_LEAF_EL_LEVEL
    \n+
    559
    \n+
    560#ifdef CALL_EL_LEVEL
    \n+
    561 #undef CALL_EL_LEVEL
    \n+
    562#endif // CALL_EL_LEVEL
    \n+
    563
    \n+
    564#ifdef CALL_MG_LEVEL
    \n+
    565 #undef CALL_MG_LEVEL
    \n+
    566#endif // CALL_MG_LEVEL
    \n+
    567
    \n+
    568#ifdef TEST_FLAG
    \n+
    569 #undef TEST_FLAG
    \n+
    570#endif // TEST_FLAG
    \n+
    571
    \n+
    572#ifdef ADM_FLAGS_MASK
    \n+
    573 #undef ADM_FLAGS_MASK
    \n+
    574#endif // ADM_FLAGS_MASK
    \n+
    575
    \n+
    576#ifdef UCHAR_name
    \n+
    577 #undef UCHAR_name
    \n+
    578#endif // UCHAR_name
    \n+
    579
    \n+
    580#ifdef uchar_VECNAME
    \n+
    581 #undef uchar_VECNAME
    \n+
    582#endif // uchar_VECNAME
    \n+
    583
    \n+
    584#ifdef SCHAR_name
    \n+
    585 #undef SCHAR_name
    \n+
    586#endif // SCHAR_name
    \n+
    587
    \n+
    588#ifdef schar_VECNAME
    \n+
    589 #undef schar_VECNAME
    \n+
    590#endif // schar_VECNAME
    \n+
    591
    \n+
    592#ifdef INT_name
    \n+
    593 #undef INT_name
    \n+
    594#endif // INT_name
    \n+
    595
    \n+
    596#ifdef int_VECNAME
    \n+
    597 #undef int_VECNAME
    \n+
    598#endif // int_VECNAME
    \n+
    599
    \n+
    600#ifdef DOF_name
    \n+
    601 #undef DOF_name
    \n+
    602#endif // DOF_name
    \n+
    603
    \n+
    604#ifdef dof_VECNAME
    \n+
    605 #undef dof_VECNAME
    \n+
    606#endif // dof_VECNAME
    \n+
    607
    \n+
    608#ifdef PTR_name
    \n+
    609 #undef PTR_name
    \n+
    610#endif // PTR_name
    \n+
    611
    \n+
    612#ifdef ptr_VECNAME
    \n+
    613 #undef ptr_VECNAME
    \n+
    614#endif // ptr_VECNAME
    \n+
    615
    \n+
    616#ifdef REAL_name
    \n+
    617 #undef REAL_name
    \n+
    618#endif // REAL_name
    \n+
    619
    \n+
    620#ifdef real_VECNAME
    \n+
    621 #undef real_VECNAME
    \n+
    622#endif // real_VECNAME
    \n+
    623
    \n+
    624#ifdef REAL_D_name
    \n+
    625 #undef REAL_D_name
    \n+
    626#endif // REAL_D_name
    \n+
    627
    \n+
    628#ifdef real_d_VECNAME
    \n+
    629 #undef real_d_VECNAME
    \n+
    630#endif // real_d_VECNAME
    \n+
    631
    \n+
    632#ifdef BNDRY_name
    \n+
    633 #undef BNDRY_name
    \n+
    634#endif // BNDRY_name
    \n+
    635
    \n+
    636#ifdef bndry_VECNAME
    \n+
    637 #undef bndry_VECNAME
    \n+
    638#endif // bndry_VECNAME
    \n+
    639
    \n+
    640#ifdef DECL_DOF_EL_VEC
    \n+
    641 #undef DECL_DOF_EL_VEC
    \n+
    642#endif // DECL_DOF_EL_VEC
    \n+
    643
    \n+
    644#ifdef PHI
    \n+
    645 #undef PHI
    \n+
    646#endif // PHI
    \n+
    647
    \n+
    648#ifdef GRD_PHI
    \n+
    649 #undef GRD_PHI
    \n+
    650#endif // GRD_PHI
    \n+
    651
    \n+
    652#ifdef D2_PHI
    \n+
    653 #undef D2_PHI
    \n+
    654#endif // D2_PHI
    \n+
    655
    \n+
    656#ifdef D3_PHI
    \n+
    657 #undef D3_PHI
    \n+
    658#endif // D3_PHI
    \n+
    659
    \n+
    660#ifdef D4_PHI
    \n+
    661 #undef D4_PHI
    \n+
    662#endif // D4_PHI
    \n+
    663
    \n+
    664#ifdef PHI_D
    \n+
    665 #undef PHI_D
    \n+
    666#endif // PHI_D
    \n+
    667
    \n+
    668#ifdef GRD_PHI_D
    \n+
    669 #undef GRD_PHI_D
    \n+
    670#endif // GRD_PHI_D
    \n+
    671
    \n+
    672#ifdef D2_PHI_D
    \n+
    673 #undef D2_PHI_D
    \n+
    674#endif // D2_PHI_D
    \n+
    675
    \n+
    676#ifdef GET_DOF_INDICES
    \n+
    677 #undef GET_DOF_INDICES
    \n+
    678#endif // GET_DOF_INDICES
    \n+
    679
    \n+
    680#ifdef INTERPOL
    \n+
    681 #undef INTERPOL
    \n+
    682#endif // INTERPOL
    \n+
    683
    \n+
    684#ifdef INTERPOL_D
    \n+
    685 #undef INTERPOL_D
    \n+
    686#endif // INTERPOL_D
    \n+
    687
    \n+
    688#ifdef INTERPOL_DOW
    \n+
    689 #undef INTERPOL_DOW
    \n+
    690#endif // INTERPOL_DOW
    \n+
    691
    \n+
    692#ifdef GET_BOUND
    \n+
    693 #undef GET_BOUND
    \n+
    694#endif // GET_BOUND
    \n+
    695
    \n+
    696#ifdef LAGRANGE_NODES
    \n+
    697 #undef LAGRANGE_NODES
    \n+
    698#endif // LAGRANGE_NODES
    \n+
    699
    \n+
    700#ifdef FILL_EL_QUAD_WORLD
    \n+
    701 #undef FILL_EL_QUAD_WORLD
    \n+
    702#endif // FILL_EL_QUAD_WORLD
    \n+
    703
    \n+
    704#ifdef FILL_EL_QUAD_DET
    \n+
    705 #undef FILL_EL_QUAD_DET
    \n+
    706#endif // FILL_EL_QUAD_DET
    \n+
    707
    \n+
    708#ifdef FILL_EL_QUAD_LAMBDA
    \n+
    709 #undef FILL_EL_QUAD_LAMBDA
    \n+
    710#endif // FILL_EL_QUAD_LAMBDA
    \n+
    711
    \n+
    712#ifdef FILL_EL_QUAD_DLAMBDA
    \n+
    713 #undef FILL_EL_QUAD_DLAMBDA
    \n+
    714#endif // FILL_EL_QUAD_DLAMBDA
    \n+
    715
    \n+
    716#ifdef FILL_EL_QUAD_GRD_WORLD
    \n+
    717 #undef FILL_EL_QUAD_GRD_WORLD
    \n+
    718#endif // FILL_EL_QUAD_GRD_WORLD
    \n+
    719
    \n+
    720#ifdef FILL_EL_QUAD_D2_WORLD
    \n+
    721 #undef FILL_EL_QUAD_D2_WORLD
    \n+
    722#endif // FILL_EL_QUAD_D2_WORLD
    \n+
    723
    \n+
    724#ifdef FILL_EL_QUAD_D3_WORLD
    \n+
    725 #undef FILL_EL_QUAD_D3_WORLD
    \n+
    726#endif // FILL_EL_QUAD_D3_WORLD
    \n+
    727
    \n+
    728#ifdef FILL_EL_QUAD_WALL_DET
    \n+
    729 #undef FILL_EL_QUAD_WALL_DET
    \n+
    730#endif // FILL_EL_QUAD_WALL_DET
    \n+
    731
    \n+
    732#ifdef FILL_EL_QUAD_WALL_NORMAL
    \n+
    733 #undef FILL_EL_QUAD_WALL_NORMAL
    \n+
    734#endif // FILL_EL_QUAD_WALL_NORMAL
    \n+
    735
    \n+
    736#ifdef FILL_EL_QUAD_GRD_NORMAL
    \n+
    737 #undef FILL_EL_QUAD_GRD_NORMAL
    \n+
    738#endif // FILL_EL_QUAD_GRD_NORMAL
    \n+
    739
    \n+
    740#ifdef FILL_EL_QUAD_D2_NORMAL
    \n+
    741 #undef FILL_EL_QUAD_D2_NORMAL
    \n+
    742#endif // FILL_EL_QUAD_D2_NORMAL
    \n+
    743
    \n+
    744#ifdef INIT_PHI
    \n+
    745 #undef INIT_PHI
    \n+
    746#endif // INIT_PHI
    \n+
    747
    \n+
    748#ifdef INIT_GRD_PHI
    \n+
    749 #undef INIT_GRD_PHI
    \n+
    750#endif // INIT_GRD_PHI
    \n+
    751
    \n+
    752#ifdef INIT_D2_PHI
    \n+
    753 #undef INIT_D2_PHI
    \n+
    754#endif // INIT_D2_PHI
    \n+
    755
    \n+
    756#ifdef INIT_D3_PHI
    \n+
    757 #undef INIT_D3_PHI
    \n+
    758#endif // INIT_D3_PHI
    \n+
    759
    \n+
    760#ifdef INIT_D4_PHI
    \n+
    761 #undef INIT_D4_PHI
    \n+
    762#endif // INIT_D4_PHI
    \n+
    763
    \n+
    764#ifdef INIT_TANGENTIAL
    \n+
    765 #undef INIT_TANGENTIAL
    \n+
    766#endif // INIT_TANGENTIAL
    \n+
    767
    \n+
    768#ifdef MESH_REFINED
    \n+
    769 #undef MESH_REFINED
    \n+
    770#endif // MESH_REFINED
    \n+
    771
    \n+
    772#ifdef MESH_COARSENED
    \n+
    773 #undef MESH_COARSENED
    \n+
    774#endif // MESH_COARSENED
    \n+
    775
    \n+
    776#ifdef GRAPH_MESH_BOUNDARY
    \n+
    777 #undef GRAPH_MESH_BOUNDARY
    \n+
    778#endif // GRAPH_MESH_BOUNDARY
    \n+
    779
    \n+
    780#ifdef GRAPH_MESH_ELEMENT_MARK
    \n+
    781 #undef GRAPH_MESH_ELEMENT_MARK
    \n+
    782#endif // GRAPH_MESH_ELEMENT_MARK
    \n+
    783
    \n+
    784#ifdef GRAPH_MESH_VERTEX_DOF
    \n+
    785 #undef GRAPH_MESH_VERTEX_DOF
    \n+
    786#endif // GRAPH_MESH_VERTEX_DOF
    \n+
    787
    \n+
    788#ifdef GRAPH_MESH_ELEMENT_INDEX
    \n+
    789 #undef GRAPH_MESH_ELEMENT_INDEX
    \n+
    790#endif // GRAPH_MESH_ELEMENT_INDEX
    \n+
    791
    \n+
    792#ifdef GET_MESH
    \n+
    793 #undef GET_MESH
    \n+
    794#endif // GET_MESH
    \n+
    795
    \n+
    796#ifdef GET_DOF_VEC
    \n+
    797 #undef GET_DOF_VEC
    \n+
    798#endif // GET_DOF_VEC
    \n+
    799
    \n+
    800#ifdef TRACE_DOF_VEC_PROTO
    \n+
    801 #undef TRACE_DOF_VEC_PROTO
    \n+
    802#endif // TRACE_DOF_VEC_PROTO
    \n+
    803
    \n+
    804#ifdef INIT_UH
    \n+
    805 #undef INIT_UH
    \n+
    806#endif // INIT_UH
    \n+
    807
    \n+
    808#ifdef INIT_GRD_UH
    \n+
    809 #undef INIT_GRD_UH
    \n+
    810#endif // INIT_GRD_UH
    \n+
    811
    \n+
    812#ifdef ellipt_est_d_init
    \n+
    813 #undef ellipt_est_d_init
    \n+
    814#endif // ellipt_est_d_init
    \n+
    815
    \n+
    816#ifdef head_est_d_init
    \n+
    817 #undef head_est_d_init
    \n+
    818#endif // head_est_d_init
    \n+
    819
    \n+
    820#ifdef element_est_d
    \n+
    821 #undef element_est_d
    \n+
    822#endif // element_est_d
    \n+
    823
    \n+
    824#ifdef element_est_d_finish
    \n+
    825 #undef element_est_d_finish
    \n+
    826#endif // element_est_d_finish
    \n+
    827
    \n+
    828#ifdef element_est_uh_d
    \n+
    829 #undef element_est_uh_d
    \n+
    830#endif // element_est_uh_d
    \n+
    831
    \n+
    832#ifdef element_est_grd_uh_d
    \n+
    833 #undef element_est_grd_uh_d
    \n+
    834#endif // element_est_grd_uh_d
    \n+
    835
    \n+
    836#ifdef ellipt_est_d_finish
    \n+
    837 #undef ellipt_est_d_finish
    \n+
    838#endif // ellipt_est_d_finish
    \n+
    839
    \n+
    840#ifdef heat_est_d_finish
    \n+
    841 #undef heat_est_d_finish
    \n+
    842#endif // heat_est_d_finish
    \n+
    843
    \n+
    844#ifdef TRAVERSE_FIRST
    \n+
    845 #undef TRAVERSE_FIRST
    \n+
    846#endif // TRAVERSE_FIRST
    \n+
    847
    \n+
    848#ifdef TRAVERSE_NEXT
    \n+
    849 #undef TRAVERSE_NEXT
    \n+
    850#endif // TRAVERSE_NEXT
    \n+
    851
    \n+
    852#ifdef TRAVERSE_START
    \n+
    853 #undef TRAVERSE_START
    \n+
    854#endif // TRAVERSE_START
    \n+
    855
    \n+
    856#ifdef TRAVERSE_STOP
    \n+
    857 #undef TRAVERSE_STOP
    \n+
    858#endif // TRAVERSE_STOP
    \n+
    859
    \n+
    860#ifdef TRAVERSE_NEIGHBOUR
    \n+
    861 #undef TRAVERSE_NEIGHBOUR
    \n+
    862#endif // TRAVERSE_NEIGHBOUR
    \n+
    863
    \n+
    864#ifdef IFF_TAG_ALBERTA
    \n+
    865 #undef IFF_TAG_ALBERTA
    \n+
    866#endif // IFF_TAG_ALBERTA
    \n+
    867
    \n+
    868#ifdef IFF_TAG_MESH
    \n+
    869 #undef IFF_TAG_MESH
    \n+
    870#endif // IFF_TAG_MESH
    \n+
    871
    \n+
    872#ifdef IFF_TAG_REAL_VEC
    \n+
    873 #undef IFF_TAG_REAL_VEC
    \n+
    874#endif // IFF_TAG_REAL_VEC
    \n+
    875
    \n+
    876#ifdef IFF_TAG_REAL_D_VEC
    \n+
    877 #undef IFF_TAG_REAL_D_VEC
    \n+
    878#endif // IFF_TAG_REAL_D_VEC
    \n+
    879
    \n+
    880#ifdef IFF_TAG_INT_VEC
    \n+
    881 #undef IFF_TAG_INT_VEC
    \n+
    882#endif // IFF_TAG_INT_VEC
    \n+
    883
    \n+
    884#ifdef IFF_TAG_UCHAR_VEC
    \n+
    885 #undef IFF_TAG_UCHAR_VEC
    \n+
    886#endif // IFF_TAG_UCHAR_VEC
    \n+
    887
    \n+
    888#ifdef IFF_TAG_SCHAR_VEC
    \n+
    889 #undef IFF_TAG_SCHAR_VEC
    \n+
    890#endif // IFF_TAG_SCHAR_VEC
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,224 +1,895 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-hierarchiciterator.hh\n+undefine-3.0.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH\n-6#define DUNE_ALBERTA_HIERARCHICITERATOR_HH\n-7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-10\n-11#if HAVE_ALBERTA\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n+12#ifdef _ALBERTA_H_\n+13 #undef _ALBERTA_H_\n+14#endif // _ALBERTA_H_\n 15\n-16 // AlbertaGridHierarchicIterator\n-17 // -----------------------------\n-18\n-27 template< class GridImp >\n-_\b2_\b8 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-29 {\n-30 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+16#ifdef ALBERTA_MAGIC\n+17 #undef ALBERTA_MAGIC\n+18#endif // ALBERTA_MAGIC\n+19\n+20#ifdef ALBERTA_VERSION\n+21 #undef ALBERTA_VERSION\n+22#endif // ALBERTA_VERSION\n+23\n+24#ifdef DIM_LIMIT\n+25 #undef DIM_LIMIT\n+26#endif // DIM_LIMIT\n+27\n+28#ifdef DIM_MAX\n+29 #undef DIM_MAX\n+30#endif // DIM_MAX\n 31\n-32 public:\n-_\b3_\b3 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b3_\b4 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n+32#ifdef N_VERTICES\n+33 #undef N_VERTICES\n+34#endif // N_VERTICES\n 35\n-_\b3_\b6 typedef _\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt;\n-_\b3_\b7 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n-38\n-_\b3_\b9 typedef typename EntityImp::ElementInfo _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-40\n-_\b4_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-42 {}\n+36#ifdef N_EDGES\n+37 #undef N_EDGES\n+38#endif // N_EDGES\n+39\n+40#ifdef N_WALLS\n+41 #undef N_WALLS\n+42#endif // N_WALLS\n 43\n-45 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-46 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo,\n-47 int maxLevel );\n-48\n-50 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int actLevel, int\n-maxLevel );\n+44#ifdef N_FACES\n+45 #undef N_FACES\n+46#endif // N_FACES\n+47\n+48#ifdef N_NEIGH\n+49 #undef N_NEIGH\n+50#endif // N_NEIGH\n 51\n-53 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const This &other );\n-54\n-56 This &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const This &other );\n-57\n-59 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n-60\n-_\b6_\b2 bool _\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &other ) const\n-63 {\n-64 return entity_.impl().equals( other.entity_.impl() );\n-65 }\n-66\n-_\b6_\b8 _\bE_\bn_\bt_\bi_\bt_\by &_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be () const\n-69 {\n-70 return entity_;\n-71 }\n-72\n-_\b7_\b4 int _\bl_\be_\bv_\be_\bl () const\n-75 {\n-76 return entity_.impl().level();\n-77 }\n-78\n-79 protected:\n-_\b8_\b1 const GridImp &_\bg_\br_\bi_\bd () const\n-82 {\n-83 return entity_.impl().grid();\n-84 }\n-85\n-86 private:\n-87 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo elementInfo );\n-88\n-89 mutable _\bE_\bn_\bt_\bi_\bt_\by entity_;\n-90\n-91 // level on which the iterator was started\n-92 int startLevel_;\n-93\n-94 // maximal level to go down to\n-95 int maxlevel_;\n-96 };\n-97\n-98\n-99 template< class GridImp >\n-100 inline AlbertaGridHierarchicIterator< GridImp >\n-_\b1_\b0_\b1 ::AlbertaGridHierarchicIterator( const GridImp &grid, int actLevel, int\n-maxLevel )\n-102 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n-103 startLevel_( actLevel ),\n-104 maxlevel_( maxLevel )\n-105 {}\n-106\n+52#ifdef N_LAMBDA\n+53 #undef N_LAMBDA\n+54#endif // N_LAMBDA\n+55\n+56#ifdef DIM_FAC\n+57 #undef DIM_FAC\n+58#endif // DIM_FAC\n+59\n+60#ifdef VERTEX_OF_EDGE\n+61 #undef VERTEX_OF_EDGE\n+62#endif // VERTEX_OF_EDGE\n+63\n+64#ifdef VERTEX_OF_WALL\n+65 #undef VERTEX_OF_WALL\n+66#endif // VERTEX_OF_WALL\n+67\n+68#ifdef N_VERTICES_0D\n+69 #undef N_VERTICES_0D\n+70#endif // N_VERTICES_0D\n+71\n+72#ifdef N_EDGES_0D\n+73 #undef N_EDGES_0D\n+74#endif // N_EDGES_0D\n+75\n+76#ifdef N_FACES_0D\n+77 #undef N_FACES_0D\n+78#endif // N_FACES_0D\n+79\n+80#ifdef N_NEIGH_0D\n+81 #undef N_NEIGH_0D\n+82#endif // N_NEIGH_0D\n+83\n+84#ifdef N_WALLS_0D\n+85 #undef N_WALLS_0D\n+86#endif // N_WALLS_0D\n+87\n+88#ifdef N_LAMBDA_0D\n+89 #undef N_LAMBDA_0D\n+90#endif // N_LAMBDA_0D\n+91\n+92#ifdef DIM_FAC_0D\n+93 #undef DIM_FAC_0D\n+94#endif // DIM_FAC_0D\n+95\n+96#ifdef VERTEX_OF_EDGE_0D\n+97 #undef VERTEX_OF_EDGE_0D\n+98#endif // VERTEX_OF_EDGE_0D\n+99\n+100#ifdef VERTEX_OF_WALL_0D\n+101 #undef VERTEX_OF_WALL_0D\n+102#endif // VERTEX_OF_WALL_0D\n+103\n+104#ifdef N_VERTICES_1D\n+105 #undef N_VERTICES_1D\n+106#endif // N_VERTICES_1D\n 107\n-108 template< class GridImp >\n-109 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-_\b1_\b1_\b0_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &grid,\n-111 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo,\n-112 int maxLevel )\n-113 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n-114 startLevel_( elementInfo.level() ),\n-115 maxlevel_( maxLevel )\n-116 {\n-117 _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt( elementInfo );\n-118 }\n+108#ifdef N_EDGES_1D\n+109 #undef N_EDGES_1D\n+110#endif // N_EDGES_1D\n+111\n+112#ifdef N_FACES_1D\n+113 #undef N_FACES_1D\n+114#endif // N_FACES_1D\n+115\n+116#ifdef N_NEIGH_1D\n+117 #undef N_NEIGH_1D\n+118#endif // N_NEIGH_1D\n 119\n-120\n-121 template< class GridImp >\n-122 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-_\b1_\b2_\b3_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( const _\bT_\bh_\bi_\bs &other )\n-124 : entity_( other.entity_ ),\n-125 startLevel_( other.startLevel_ ),\n-126 maxlevel_( other.maxlevel_ )\n-127 {}\n-128\n-129\n-130 template< class GridImp >\n-131 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs &\n-_\b1_\b3_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n-133 {\n-134 entity_ = other.entity_;\n-135 startLevel_ = other.startLevel_;\n-136 maxlevel_ = other.maxlevel_;\n-137 return *this;\n-138 }\n+120#ifdef N_WALLS_1D\n+121 #undef N_WALLS_1D\n+122#endif // N_WALLS_1D\n+123\n+124#ifdef N_LAMBDA_1D\n+125 #undef N_LAMBDA_1D\n+126#endif // N_LAMBDA_1D\n+127\n+128#ifdef DIM_FAC_1D\n+129 #undef DIM_FAC_1D\n+130#endif // DIM_FAC_1D\n+131\n+132#ifdef VERTEX_OF_EDGE_1D\n+133 #undef VERTEX_OF_EDGE_1D\n+134#endif // VERTEX_OF_EDGE_1D\n+135\n+136#ifdef VERTEX_OF_WALL_1D\n+137 #undef VERTEX_OF_WALL_1D\n+138#endif // VERTEX_OF_WALL_1D\n 139\n-140\n-141 template< class GridImp >\n-_\b1_\b4_\b2 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-143 {\n-144 increment( entity_.impl().elementInfo() );\n-145 }\n-146\n-147 template< class GridImp >\n-148 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-149_\b _\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ( ElementInfo elementInfo )\n-150 {\n-151 assert( !elementInfo == false );\n-152 if( (elementInfo.level() >= maxlevel_) || elementInfo.isLeaf() )\n-153 {\n-154 while( (elementInfo.level() > startLevel_) && (elementInfo.indexInFather()\n-== 1) )\n-155 elementInfo = elementInfo.father();\n-156 if( elementInfo.level() > startLevel_ )\n-157 entity_.impl().setElement( elementInfo.father().child( 1 ), 0 );\n-158 else\n-159 entity_.impl().clearElement();\n-160 }\n-161 else\n-162 entity_.impl().setElement( elementInfo.child( 0 ), 0 );\n-163 }\n-164\n-165}\n-166\n-167#endif // #if HAVE_ALBERTA\n-168\n-169#endif // #ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH\n-_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Entity & dereference() const\n-dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bg_\br_\bi_\bd\n-const GridImp & grid() const\n-obtain a reference to the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-EntityImp::ElementInfo ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-ask for level of entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridHierarchicIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-GridImp::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp\n-EntityObject::ImplementationType EntityImp\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const This &other) const\n-equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const This &other)\n-assignment operator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt\n-MakeableInterfaceObject< Entity > EntityObject\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-InterfaceType::Implementation ImplementationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:1108\n+140#ifdef N_VERTICES_2D\n+141 #undef N_VERTICES_2D\n+142#endif // N_VERTICES_2D\n+143\n+144#ifdef N_EDGES_2D\n+145 #undef N_EDGES_2D\n+146#endif // N_EDGES_2D\n+147\n+148#ifdef N_FACES_2D\n+149 #undef N_FACES_2D\n+150#endif // N_FACES_2D\n+151\n+152#ifdef N_NEIGH_2D\n+153 #undef N_NEIGH_2D\n+154#endif // N_NEIGH_2D\n+155\n+156#ifdef N_WALLS_2D\n+157 #undef N_WALLS_2D\n+158#endif // N_WALLS_2D\n+159\n+160#ifdef N_LAMBDA_2D\n+161 #undef N_LAMBDA_2D\n+162#endif // N_LAMBDA_2D\n+163\n+164#ifdef DIM_FAC_2D\n+165 #undef DIM_FAC_2D\n+166#endif // DIM_FAC_2D\n+167\n+168#ifdef VERTEX_OF_EDGE_2D\n+169 #undef VERTEX_OF_EDGE_2D\n+170#endif // VERTEX_OF_EDGE_2D\n+171\n+172#ifdef VERTEX_OF_WALL_2D\n+173 #undef VERTEX_OF_WALL_2D\n+174#endif // VERTEX_OF_WALL_2D\n+175\n+176#ifdef N_VERTICES_3D\n+177 #undef N_VERTICES_3D\n+178#endif // N_VERTICES_3D\n+179\n+180#ifdef N_EDGES_3D\n+181 #undef N_EDGES_3D\n+182#endif // N_EDGES_3D\n+183\n+184#ifdef N_FACES_3D\n+185 #undef N_FACES_3D\n+186#endif // N_FACES_3D\n+187\n+188#ifdef N_NEIGH_3D\n+189 #undef N_NEIGH_3D\n+190#endif // N_NEIGH_3D\n+191\n+192#ifdef N_WALLS_3D\n+193 #undef N_WALLS_3D\n+194#endif // N_WALLS_3D\n+195\n+196#ifdef N_LAMBDA_3D\n+197 #undef N_LAMBDA_3D\n+198#endif // N_LAMBDA_3D\n+199\n+200#ifdef DIM_FAC_3D\n+201 #undef DIM_FAC_3D\n+202#endif // DIM_FAC_3D\n+203\n+204#ifdef VERTEX_OF_EDGE_3D\n+205 #undef VERTEX_OF_EDGE_3D\n+206#endif // VERTEX_OF_EDGE_3D\n+207\n+208#ifdef VERTEX_OF_WALL_3D\n+209 #undef VERTEX_OF_WALL_3D\n+210#endif // VERTEX_OF_WALL_3D\n+211\n+212#ifdef N_LAMBDA_MAX\n+213 #undef N_LAMBDA_MAX\n+214#endif // N_LAMBDA_MAX\n+215\n+216#ifdef N_VERTICES_MAX\n+217 #undef N_VERTICES_MAX\n+218#endif // N_VERTICES_MAX\n+219\n+220#ifdef N_EDGES_MAX\n+221 #undef N_EDGES_MAX\n+222#endif // N_EDGES_MAX\n+223\n+224#ifdef N_FACES_MAX\n+225 #undef N_FACES_MAX\n+226#endif // N_FACES_MAX\n+227\n+228#ifdef N_NEIGH_MAX\n+229 #undef N_NEIGH_MAX\n+230#endif // N_NEIGH_MAX\n+231\n+232#ifdef N_WALLS_MAX\n+233 #undef N_WALLS_MAX\n+234#endif // N_WALLS_MAX\n+235\n+236#ifdef DIM_FAC_MAX\n+237 #undef DIM_FAC_MAX\n+238#endif // DIM_FAC_MAX\n+239\n+240#ifdef N_LAMBDA_LIMIT\n+241 #undef N_LAMBDA_LIMIT\n+242#endif // N_LAMBDA_LIMIT\n+243\n+244#ifdef N_VERTICES_LIMIT\n+245 #undef N_VERTICES_LIMIT\n+246#endif // N_VERTICES_LIMIT\n+247\n+248#ifdef N_EDGES_LIMIT\n+249 #undef N_EDGES_LIMIT\n+250#endif // N_EDGES_LIMIT\n+251\n+252#ifdef N_FACES_LIMIT\n+253 #undef N_FACES_LIMIT\n+254#endif // N_FACES_LIMIT\n+255\n+256#ifdef N_NEIGH_LIMIT\n+257 #undef N_NEIGH_LIMIT\n+258#endif // N_NEIGH_LIMIT\n+259\n+260#ifdef N_WALLS_LIMIT\n+261 #undef N_WALLS_LIMIT\n+262#endif // N_WALLS_LIMIT\n+263\n+264#ifdef DIM_FAC_LIMIT\n+265 #undef DIM_FAC_LIMIT\n+266#endif // DIM_FAC_LIMIT\n+267\n+268#ifdef INDEX\n+269 #undef INDEX\n+270#endif // INDEX\n+271\n+272#ifdef INDEX\n+273 #undef INDEX\n+274#endif // INDEX\n+275\n+276#ifdef IS_LEAF_EL\n+277 #undef IS_LEAF_EL\n+278#endif // IS_LEAF_EL\n+279\n+280#ifdef LEAF_DATA\n+281 #undef LEAF_DATA\n+282#endif // LEAF_DATA\n+283\n+284#ifdef INTERIOR\n+285 #undef INTERIOR\n+286#endif // INTERIOR\n+287\n+288#ifdef DIRICHLET\n+289 #undef DIRICHLET\n+290#endif // DIRICHLET\n+291\n+292#ifdef NEUMANN\n+293 #undef NEUMANN\n+294#endif // NEUMANN\n+295\n+296#ifdef IS_NEUMANN\n+297 #undef IS_NEUMANN\n+298#endif // IS_NEUMANN\n+299\n+300#ifdef IS_DIRICHLET\n+301 #undef IS_DIRICHLET\n+302#endif // IS_DIRICHLET\n+303\n+304#ifdef IS_INTERIOR\n+305 #undef IS_INTERIOR\n+306#endif // IS_INTERIOR\n+307\n+308#ifdef N_BNDRY_TYPES\n+309 #undef N_BNDRY_TYPES\n+310#endif // N_BNDRY_TYPES\n+311\n+312#ifdef LIST_ENTRY\n+313 #undef LIST_ENTRY\n+314#endif // LIST_ENTRY\n+315\n+316#ifdef INIT_EL_TAG_CTX_INIT\n+317 #undef INIT_EL_TAG_CTX_INIT\n+318#endif // INIT_EL_TAG_CTX_INIT\n+319\n+320#ifdef INIT_EL_TAG_CTX_UNIQ\n+321 #undef INIT_EL_TAG_CTX_UNIQ\n+322#endif // INIT_EL_TAG_CTX_UNIQ\n+323\n+324#ifdef INIT_EL_TAG_CTX_NULL\n+325 #undef INIT_EL_TAG_CTX_NULL\n+326#endif // INIT_EL_TAG_CTX_NULL\n+327\n+328#ifdef INIT_EL_TAG_CTX_DFLT\n+329 #undef INIT_EL_TAG_CTX_DFLT\n+330#endif // INIT_EL_TAG_CTX_DFLT\n+331\n+332#ifdef INIT_EL_TAG_CTX_TAG\n+333 #undef INIT_EL_TAG_CTX_TAG\n+334#endif // INIT_EL_TAG_CTX_TAG\n+335\n+336#ifdef INIT_ELEMENT_METHOD\n+337 #undef INIT_ELEMENT_METHOD\n+338#endif // INIT_ELEMENT_METHOD\n+339\n+340#ifdef INIT_ELEMENT_FLAGS\n+341 #undef INIT_ELEMENT_FLAGS\n+342#endif // INIT_ELEMENT_FLAGS\n+343\n+344#ifdef INIT_ELEMENT_DEFUN\n+345 #undef INIT_ELEMENT_DEFUN\n+346#endif // INIT_ELEMENT_DEFUN\n+347\n+348#ifdef INIT_OBJECT\n+349 #undef INIT_OBJECT\n+350#endif // INIT_OBJECT\n+351\n+352#ifdef INIT_ELEMENT_DECL\n+353 #undef INIT_ELEMENT_DECL\n+354#endif // INIT_ELEMENT_DECL\n+355\n+356#ifdef INIT_ELEMENT_INITIALIZER\n+357 #undef INIT_ELEMENT_INITIALIZER\n+358#endif // INIT_ELEMENT_INITIALIZER\n+359\n+360#ifdef INIT_ELEMENT\n+361 #undef INIT_ELEMENT\n+362#endif // INIT_ELEMENT\n+363\n+364#ifdef INIT_ELEMENT_NEEDED\n+365 #undef INIT_ELEMENT_NEEDED\n+366#endif // INIT_ELEMENT_NEEDED\n+367\n+368#ifdef INIT_ELEMENT_SETUP\n+369 #undef INIT_ELEMENT_SETUP\n+370#endif // INIT_ELEMENT_SETUP\n+371\n+372#ifdef INIT_OBJECT_SINGLE\n+373 #undef INIT_OBJECT_SINGLE\n+374#endif // INIT_OBJECT_SINGLE\n+375\n+376#ifdef INIT_ELEMENT_SINGLE\n+377 #undef INIT_ELEMENT_SINGLE\n+378#endif // INIT_ELEMENT_SINGLE\n+379\n+380#ifdef vertex_of_wall_2d\n+381 #undef vertex_of_wall_2d\n+382#endif // vertex_of_wall_2d\n+383\n+384#ifdef PARAM_STRATEGY_MASK\n+385 #undef PARAM_STRATEGY_MASK\n+386#endif // PARAM_STRATEGY_MASK\n+387\n+388#ifdef PARAM_PERIODIC_COORDS\n+389 #undef PARAM_PERIODIC_COORDS\n+390#endif // PARAM_PERIODIC_COORDS\n+391\n+392#ifdef FILL_EL_DET\n+393 #undef FILL_EL_DET\n+394#endif // FILL_EL_DET\n+395\n+396#ifdef FILL_EL_LAMBDA\n+397 #undef FILL_EL_LAMBDA\n+398#endif // FILL_EL_LAMBDA\n+399\n+400#ifdef FILL_EL_WALL_SHIFT\n+401 #undef FILL_EL_WALL_SHIFT\n+402#endif // FILL_EL_WALL_SHIFT\n+403\n+404#ifdef FILL_EL_WALL_MASK\n+405 #undef FILL_EL_WALL_MASK\n+406#endif // FILL_EL_WALL_MASK\n+407\n+408#ifdef FILL_EL_WALL_DET\n+409 #undef FILL_EL_WALL_DET\n+410#endif // FILL_EL_WALL_DET\n+411\n+412#ifdef FILL_EL_WALL_NORMAL\n+413 #undef FILL_EL_WALL_NORMAL\n+414#endif // FILL_EL_WALL_NORMAL\n+415\n+416#ifdef FILL_EL_WALL_ORIENTATION\n+417 #undef FILL_EL_WALL_ORIENTATION\n+418#endif // FILL_EL_WALL_ORIENTATION\n+419\n+420#ifdef FILL_EL_WALL_REL_ORIENTATION\n+421 #undef FILL_EL_WALL_REL_ORIENTATION\n+422#endif // FILL_EL_WALL_REL_ORIENTATION\n+423\n+424#ifdef FILL_EL_WALL_DETS\n+425 #undef FILL_EL_WALL_DETS\n+426#endif // FILL_EL_WALL_DETS\n+427\n+428#ifdef FILL_EL_WALL_NORMALS\n+429 #undef FILL_EL_WALL_NORMALS\n+430#endif // FILL_EL_WALL_NORMALS\n+431\n+432#ifdef FILL_EL_WALL_ORIENTATIONS\n+433 #undef FILL_EL_WALL_ORIENTATIONS\n+434#endif // FILL_EL_WALL_ORIENTATIONS\n+435\n+436#ifdef FILL_EL_WALL_REL_ORIENTATIONS\n+437 #undef FILL_EL_WALL_REL_ORIENTATIONS\n+438#endif // FILL_EL_WALL_REL_ORIENTATIONS\n+439\n+440#ifdef BNDRY_FLAGS_INIT\n+441 #undef BNDRY_FLAGS_INIT\n+442#endif // BNDRY_FLAGS_INIT\n+443\n+444#ifdef BNDRY_FLAGS_ALL\n+445 #undef BNDRY_FLAGS_ALL\n+446#endif // BNDRY_FLAGS_ALL\n+447\n+448#ifdef BNDRY_FLAGS_CPY\n+449 #undef BNDRY_FLAGS_CPY\n+450#endif // BNDRY_FLAGS_CPY\n+451\n+452#ifdef BNDRY_FLAGS_AND\n+453 #undef BNDRY_FLAGS_AND\n+454#endif // BNDRY_FLAGS_AND\n+455\n+456#ifdef BNDRY_FLAGS_OR\n+457 #undef BNDRY_FLAGS_OR\n+458#endif // BNDRY_FLAGS_OR\n+459\n+460#ifdef BNDRY_FLAGS_XOR\n+461 #undef BNDRY_FLAGS_XOR\n+462#endif // BNDRY_FLAGS_XOR\n+463\n+464#ifdef BNDRY_FLAGS_IS_INTERIOR\n+465 #undef BNDRY_FLAGS_IS_INTERIOR\n+466#endif // BNDRY_FLAGS_IS_INTERIOR\n+467\n+468#ifdef BNDRY_FLAGS_IS_AT_BNDRY\n+469 #undef BNDRY_FLAGS_IS_AT_BNDRY\n+470#endif // BNDRY_FLAGS_IS_AT_BNDRY\n+471\n+472#ifdef BNDRY_FLAGS_SET\n+473 #undef BNDRY_FLAGS_SET\n+474#endif // BNDRY_FLAGS_SET\n+475\n+476#ifdef BNDRY_FLAGS_IS_PARTOF\n+477 #undef BNDRY_FLAGS_IS_PARTOF\n+478#endif // BNDRY_FLAGS_IS_PARTOF\n+479\n+480#ifdef BNDRY_FLAGS_FFBB\n+481 #undef BNDRY_FLAGS_FFBB\n+482#endif // BNDRY_FLAGS_FFBB\n+483\n+484#ifdef RCLE_NONE\n+485 #undef RCLE_NONE\n+486#endif // RCLE_NONE\n+487\n+488#ifdef RCLE_COARSE_EDGE_COMPAT\n+489 #undef RCLE_COARSE_EDGE_COMPAT\n+490#endif // RCLE_COARSE_EDGE_COMPAT\n+491\n+492#ifdef FILL_NOTHING\n+493 #undef FILL_NOTHING\n+494#endif // FILL_NOTHING\n+495\n+496#ifdef FILL_COORDS\n+497 #undef FILL_COORDS\n+498#endif // FILL_COORDS\n+499\n+500#ifdef FILL_BOUND\n+501 #undef FILL_BOUND\n+502#endif // FILL_BOUND\n+503\n+504#ifdef FILL_NEIGH\n+505 #undef FILL_NEIGH\n+506#endif // FILL_NEIGH\n+507\n+508#ifdef FILL_OPP_COORDS\n+509 #undef FILL_OPP_COORDS\n+510#endif // FILL_OPP_COORDS\n+511\n+512#ifdef FILL_ORIENTATION\n+513 #undef FILL_ORIENTATION\n+514#endif // FILL_ORIENTATION\n+515\n+516#ifdef FILL_PROJECTION\n+517 #undef FILL_PROJECTION\n+518#endif // FILL_PROJECTION\n+519\n+520#ifdef FILL_MACRO_WALLS\n+521 #undef FILL_MACRO_WALLS\n+522#endif // FILL_MACRO_WALLS\n+523\n+524#ifdef FILL_WALL_MAP\n+525 #undef FILL_WALL_MAP\n+526#endif // FILL_WALL_MAP\n+527\n+528#ifdef FILL_NON_PERIODIC\n+529 #undef FILL_NON_PERIODIC\n+530#endif // FILL_NON_PERIODIC\n+531\n+532#ifdef FILL_MASTER_INFO\n+533 #undef FILL_MASTER_INFO\n+534#endif // FILL_MASTER_INFO\n+535\n+536#ifdef FILL_ANY\n+537 #undef FILL_ANY\n+538#endif // FILL_ANY\n+539\n+540#ifdef CALL_EVERY_EL_PREORDER\n+541 #undef CALL_EVERY_EL_PREORDER\n+542#endif // CALL_EVERY_EL_PREORDER\n+543\n+544#ifdef CALL_EVERY_EL_INORDER\n+545 #undef CALL_EVERY_EL_INORDER\n+546#endif // CALL_EVERY_EL_INORDER\n+547\n+548#ifdef CALL_EVERY_EL_POSTORDER\n+549 #undef CALL_EVERY_EL_POSTORDER\n+550#endif // CALL_EVERY_EL_POSTORDER\n+551\n+552#ifdef CALL_LEAF_EL\n+553 #undef CALL_LEAF_EL\n+554#endif // CALL_LEAF_EL\n+555\n+556#ifdef CALL_LEAF_EL_LEVEL\n+557 #undef CALL_LEAF_EL_LEVEL\n+558#endif // CALL_LEAF_EL_LEVEL\n+559\n+560#ifdef CALL_EL_LEVEL\n+561 #undef CALL_EL_LEVEL\n+562#endif // CALL_EL_LEVEL\n+563\n+564#ifdef CALL_MG_LEVEL\n+565 #undef CALL_MG_LEVEL\n+566#endif // CALL_MG_LEVEL\n+567\n+568#ifdef TEST_FLAG\n+569 #undef TEST_FLAG\n+570#endif // TEST_FLAG\n+571\n+572#ifdef ADM_FLAGS_MASK\n+573 #undef ADM_FLAGS_MASK\n+574#endif // ADM_FLAGS_MASK\n+575\n+576#ifdef UCHAR_name\n+577 #undef UCHAR_name\n+578#endif // UCHAR_name\n+579\n+580#ifdef uchar_VECNAME\n+581 #undef uchar_VECNAME\n+582#endif // uchar_VECNAME\n+583\n+584#ifdef SCHAR_name\n+585 #undef SCHAR_name\n+586#endif // SCHAR_name\n+587\n+588#ifdef schar_VECNAME\n+589 #undef schar_VECNAME\n+590#endif // schar_VECNAME\n+591\n+592#ifdef INT_name\n+593 #undef INT_name\n+594#endif // INT_name\n+595\n+596#ifdef int_VECNAME\n+597 #undef int_VECNAME\n+598#endif // int_VECNAME\n+599\n+600#ifdef DOF_name\n+601 #undef DOF_name\n+602#endif // DOF_name\n+603\n+604#ifdef dof_VECNAME\n+605 #undef dof_VECNAME\n+606#endif // dof_VECNAME\n+607\n+608#ifdef PTR_name\n+609 #undef PTR_name\n+610#endif // PTR_name\n+611\n+612#ifdef ptr_VECNAME\n+613 #undef ptr_VECNAME\n+614#endif // ptr_VECNAME\n+615\n+616#ifdef REAL_name\n+617 #undef REAL_name\n+618#endif // REAL_name\n+619\n+620#ifdef real_VECNAME\n+621 #undef real_VECNAME\n+622#endif // real_VECNAME\n+623\n+624#ifdef REAL_D_name\n+625 #undef REAL_D_name\n+626#endif // REAL_D_name\n+627\n+628#ifdef real_d_VECNAME\n+629 #undef real_d_VECNAME\n+630#endif // real_d_VECNAME\n+631\n+632#ifdef BNDRY_name\n+633 #undef BNDRY_name\n+634#endif // BNDRY_name\n+635\n+636#ifdef bndry_VECNAME\n+637 #undef bndry_VECNAME\n+638#endif // bndry_VECNAME\n+639\n+640#ifdef DECL_DOF_EL_VEC\n+641 #undef DECL_DOF_EL_VEC\n+642#endif // DECL_DOF_EL_VEC\n+643\n+644#ifdef PHI\n+645 #undef PHI\n+646#endif // PHI\n+647\n+648#ifdef GRD_PHI\n+649 #undef GRD_PHI\n+650#endif // GRD_PHI\n+651\n+652#ifdef D2_PHI\n+653 #undef D2_PHI\n+654#endif // D2_PHI\n+655\n+656#ifdef D3_PHI\n+657 #undef D3_PHI\n+658#endif // D3_PHI\n+659\n+660#ifdef D4_PHI\n+661 #undef D4_PHI\n+662#endif // D4_PHI\n+663\n+664#ifdef PHI_D\n+665 #undef PHI_D\n+666#endif // PHI_D\n+667\n+668#ifdef GRD_PHI_D\n+669 #undef GRD_PHI_D\n+670#endif // GRD_PHI_D\n+671\n+672#ifdef D2_PHI_D\n+673 #undef D2_PHI_D\n+674#endif // D2_PHI_D\n+675\n+676#ifdef GET_DOF_INDICES\n+677 #undef GET_DOF_INDICES\n+678#endif // GET_DOF_INDICES\n+679\n+680#ifdef INTERPOL\n+681 #undef INTERPOL\n+682#endif // INTERPOL\n+683\n+684#ifdef INTERPOL_D\n+685 #undef INTERPOL_D\n+686#endif // INTERPOL_D\n+687\n+688#ifdef INTERPOL_DOW\n+689 #undef INTERPOL_DOW\n+690#endif // INTERPOL_DOW\n+691\n+692#ifdef GET_BOUND\n+693 #undef GET_BOUND\n+694#endif // GET_BOUND\n+695\n+696#ifdef LAGRANGE_NODES\n+697 #undef LAGRANGE_NODES\n+698#endif // LAGRANGE_NODES\n+699\n+700#ifdef FILL_EL_QUAD_WORLD\n+701 #undef FILL_EL_QUAD_WORLD\n+702#endif // FILL_EL_QUAD_WORLD\n+703\n+704#ifdef FILL_EL_QUAD_DET\n+705 #undef FILL_EL_QUAD_DET\n+706#endif // FILL_EL_QUAD_DET\n+707\n+708#ifdef FILL_EL_QUAD_LAMBDA\n+709 #undef FILL_EL_QUAD_LAMBDA\n+710#endif // FILL_EL_QUAD_LAMBDA\n+711\n+712#ifdef FILL_EL_QUAD_DLAMBDA\n+713 #undef FILL_EL_QUAD_DLAMBDA\n+714#endif // FILL_EL_QUAD_DLAMBDA\n+715\n+716#ifdef FILL_EL_QUAD_GRD_WORLD\n+717 #undef FILL_EL_QUAD_GRD_WORLD\n+718#endif // FILL_EL_QUAD_GRD_WORLD\n+719\n+720#ifdef FILL_EL_QUAD_D2_WORLD\n+721 #undef FILL_EL_QUAD_D2_WORLD\n+722#endif // FILL_EL_QUAD_D2_WORLD\n+723\n+724#ifdef FILL_EL_QUAD_D3_WORLD\n+725 #undef FILL_EL_QUAD_D3_WORLD\n+726#endif // FILL_EL_QUAD_D3_WORLD\n+727\n+728#ifdef FILL_EL_QUAD_WALL_DET\n+729 #undef FILL_EL_QUAD_WALL_DET\n+730#endif // FILL_EL_QUAD_WALL_DET\n+731\n+732#ifdef FILL_EL_QUAD_WALL_NORMAL\n+733 #undef FILL_EL_QUAD_WALL_NORMAL\n+734#endif // FILL_EL_QUAD_WALL_NORMAL\n+735\n+736#ifdef FILL_EL_QUAD_GRD_NORMAL\n+737 #undef FILL_EL_QUAD_GRD_NORMAL\n+738#endif // FILL_EL_QUAD_GRD_NORMAL\n+739\n+740#ifdef FILL_EL_QUAD_D2_NORMAL\n+741 #undef FILL_EL_QUAD_D2_NORMAL\n+742#endif // FILL_EL_QUAD_D2_NORMAL\n+743\n+744#ifdef INIT_PHI\n+745 #undef INIT_PHI\n+746#endif // INIT_PHI\n+747\n+748#ifdef INIT_GRD_PHI\n+749 #undef INIT_GRD_PHI\n+750#endif // INIT_GRD_PHI\n+751\n+752#ifdef INIT_D2_PHI\n+753 #undef INIT_D2_PHI\n+754#endif // INIT_D2_PHI\n+755\n+756#ifdef INIT_D3_PHI\n+757 #undef INIT_D3_PHI\n+758#endif // INIT_D3_PHI\n+759\n+760#ifdef INIT_D4_PHI\n+761 #undef INIT_D4_PHI\n+762#endif // INIT_D4_PHI\n+763\n+764#ifdef INIT_TANGENTIAL\n+765 #undef INIT_TANGENTIAL\n+766#endif // INIT_TANGENTIAL\n+767\n+768#ifdef MESH_REFINED\n+769 #undef MESH_REFINED\n+770#endif // MESH_REFINED\n+771\n+772#ifdef MESH_COARSENED\n+773 #undef MESH_COARSENED\n+774#endif // MESH_COARSENED\n+775\n+776#ifdef GRAPH_MESH_BOUNDARY\n+777 #undef GRAPH_MESH_BOUNDARY\n+778#endif // GRAPH_MESH_BOUNDARY\n+779\n+780#ifdef GRAPH_MESH_ELEMENT_MARK\n+781 #undef GRAPH_MESH_ELEMENT_MARK\n+782#endif // GRAPH_MESH_ELEMENT_MARK\n+783\n+784#ifdef GRAPH_MESH_VERTEX_DOF\n+785 #undef GRAPH_MESH_VERTEX_DOF\n+786#endif // GRAPH_MESH_VERTEX_DOF\n+787\n+788#ifdef GRAPH_MESH_ELEMENT_INDEX\n+789 #undef GRAPH_MESH_ELEMENT_INDEX\n+790#endif // GRAPH_MESH_ELEMENT_INDEX\n+791\n+792#ifdef GET_MESH\n+793 #undef GET_MESH\n+794#endif // GET_MESH\n+795\n+796#ifdef GET_DOF_VEC\n+797 #undef GET_DOF_VEC\n+798#endif // GET_DOF_VEC\n+799\n+800#ifdef TRACE_DOF_VEC_PROTO\n+801 #undef TRACE_DOF_VEC_PROTO\n+802#endif // TRACE_DOF_VEC_PROTO\n+803\n+804#ifdef INIT_UH\n+805 #undef INIT_UH\n+806#endif // INIT_UH\n+807\n+808#ifdef INIT_GRD_UH\n+809 #undef INIT_GRD_UH\n+810#endif // INIT_GRD_UH\n+811\n+812#ifdef ellipt_est_d_init\n+813 #undef ellipt_est_d_init\n+814#endif // ellipt_est_d_init\n+815\n+816#ifdef head_est_d_init\n+817 #undef head_est_d_init\n+818#endif // head_est_d_init\n+819\n+820#ifdef element_est_d\n+821 #undef element_est_d\n+822#endif // element_est_d\n+823\n+824#ifdef element_est_d_finish\n+825 #undef element_est_d_finish\n+826#endif // element_est_d_finish\n+827\n+828#ifdef element_est_uh_d\n+829 #undef element_est_uh_d\n+830#endif // element_est_uh_d\n+831\n+832#ifdef element_est_grd_uh_d\n+833 #undef element_est_grd_uh_d\n+834#endif // element_est_grd_uh_d\n+835\n+836#ifdef ellipt_est_d_finish\n+837 #undef ellipt_est_d_finish\n+838#endif // ellipt_est_d_finish\n+839\n+840#ifdef heat_est_d_finish\n+841 #undef heat_est_d_finish\n+842#endif // heat_est_d_finish\n+843\n+844#ifdef TRAVERSE_FIRST\n+845 #undef TRAVERSE_FIRST\n+846#endif // TRAVERSE_FIRST\n+847\n+848#ifdef TRAVERSE_NEXT\n+849 #undef TRAVERSE_NEXT\n+850#endif // TRAVERSE_NEXT\n+851\n+852#ifdef TRAVERSE_START\n+853 #undef TRAVERSE_START\n+854#endif // TRAVERSE_START\n+855\n+856#ifdef TRAVERSE_STOP\n+857 #undef TRAVERSE_STOP\n+858#endif // TRAVERSE_STOP\n+859\n+860#ifdef TRAVERSE_NEIGHBOUR\n+861 #undef TRAVERSE_NEIGHBOUR\n+862#endif // TRAVERSE_NEIGHBOUR\n+863\n+864#ifdef IFF_TAG_ALBERTA\n+865 #undef IFF_TAG_ALBERTA\n+866#endif // IFF_TAG_ALBERTA\n+867\n+868#ifdef IFF_TAG_MESH\n+869 #undef IFF_TAG_MESH\n+870#endif // IFF_TAG_MESH\n+871\n+872#ifdef IFF_TAG_REAL_VEC\n+873 #undef IFF_TAG_REAL_VEC\n+874#endif // IFF_TAG_REAL_VEC\n+875\n+876#ifdef IFF_TAG_REAL_D_VEC\n+877 #undef IFF_TAG_REAL_D_VEC\n+878#endif // IFF_TAG_REAL_D_VEC\n+879\n+880#ifdef IFF_TAG_INT_VEC\n+881 #undef IFF_TAG_INT_VEC\n+882#endif // IFF_TAG_INT_VEC\n+883\n+884#ifdef IFF_TAG_UCHAR_VEC\n+885 #undef IFF_TAG_UCHAR_VEC\n+886#endif // IFF_TAG_UCHAR_VEC\n+887\n+888#ifdef IFF_TAG_SCHAR_VEC\n+889 #undef IFF_TAG_SCHAR_VEC\n+890#endif // IFF_TAG_SCHAR_VEC\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00701.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00701.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: misc.hh File Reference\n+dune-grid: indexstack.hh File Reference\n \n \n \n \n \n \n \n@@ -71,187 +71,42 @@\n \n \n \n
    \n \n-
    misc.hh File Reference
    \n+Namespaces
    \n+
    indexstack.hh File Reference
    \n \n
    \n-
    #include <cassert>
    \n-#include <utility>
    \n+\n+

    Provides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid) \n+More...

    \n+
    #include <assert.h>
    \n+#include <stack>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/common/hybridutilities.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/grid/albertagrid/albertaheader.hh>
    \n+#include <dune/common/reservedvector.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::AlbertaError
     
    class  Dune::AlbertaIOError
     
    class  Dune::Alberta::GlobalSpace
     
    struct  Dune::Alberta::NumSubEntities< dim, 0 >
     
    struct  Dune::Alberta::NumSubEntities< dim, dim >
     
    struct  Dune::Alberta::NumSubEntities< 0, 0 >
     
    struct  Dune::Alberta::NumSubEntities< 2, 1 >
     
    struct  Dune::Alberta::NumSubEntities< 3, 1 >
     
    struct  Dune::Alberta::NumSubEntities< 3, 2 >
     
    struct  Dune::Alberta::CodimType< dim, 0 >
     
    struct  Dune::Alberta::CodimType< dim, dim >
     
    struct  Dune::Alberta::CodimType< 2, 1 >
     
    struct  Dune::Alberta::CodimType< 3, 1 >
     
    struct  Dune::Alberta::CodimType< 3, 2 >
     
    struct  Dune::Alberta::FillFlags< dim >
     
    struct  Dune::Alberta::RefinementEdge< dim >
     
    struct  Dune::Alberta::RefinementEdge< 2 >
     
    struct  Dune::Alberta::Dune2AlbertaNumbering< dim, codim >
     
    struct  Dune::Alberta::Dune2AlbertaNumbering< 3, 2 >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< dim, codim >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< dim, 1 >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< 1, 1 >
     
    struct  Dune::Alberta::Generic2AlbertaNumbering< 3, 2 >
     
    class  Dune::Alberta::NumberingMap< dim, Numbering >
     
    struct  Dune::Alberta::MapVertices< dim, 0 >
     
    struct  Dune::Alberta::MapVertices< 2, 1 >
     
    struct  Dune::Alberta::MapVertices< 3, 1 >
     
    struct  Dune::Alberta::MapVertices< 3, 2 >
     
    struct  Dune::Alberta::MapVertices< dim, dim >
     
    struct  Dune::Alberta::Twist< dim, subdim >
     
    struct  Dune::Alberta::Twist< dim, 1 >
     
    struct  Dune::Alberta::Twist< 1, 1 >
     
    struct  Dune::Alberta::Twist< dim, 2 >
     
    struct  Dune::Alberta::Twist< 2, 2 >
    class  Dune::IndexStack< T, length >
     
    \n \n \n \n \n-\n-\n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n-\n-\n-\n-

    \n-Macros

    #define DUNE_ALBERTA_CACHE_COORDINATES   1
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Typedefs

    typedef ALBERTA REAL Dune::Alberta::Real
     
    typedef ALBERTA REAL_B Dune::Alberta::LocalVector
     
    typedef ALBERTA REAL_D Dune::Alberta::GlobalVector
     
    typedef ALBERTA REAL_DD Dune::Alberta::GlobalMatrix
     
    typedef ALBERTA AFF_TRAFO Dune::Alberta::AffineTransformation
     
    typedef ALBERTA MESH Dune::Alberta::Mesh
     
    typedef ALBERTA EL Dune::Alberta::Element
     
    typedef ALBERTA BNDRY_TYPE Dune::Alberta::BoundaryId
     
    typedef U_CHAR Dune::Alberta::ElementType
     
    typedef ALBERTA FE_SPACE Dune::Alberta::DofSpace
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Functions

    template<class Data >
    Data * Dune::Alberta::memAlloc (size_t size)
     
    template<class Data >
    Data * Dune::Alberta::memCAlloc (size_t size)
     
    template<class Data >
    Data * Dune::Alberta::memReAlloc (Data *ptr, size_t oldSize, size_t newSize)
     
    template<class Data >
    void Dune::Alberta::memFree (Data *ptr, size_t size)
     
    template<int dim>
    int Dune::Alberta::applyTwist (int twist, int i)
     
    template<int dim>
    int Dune::Alberta::applyInverseTwist (int twist, int i)
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

    \n-Variables

    static const int Dune::Alberta::dimWorld = DIM_OF_WORLD
     
    static const int Dune::Alberta::meshRefined = MESH_REFINED
     
    static const int Dune::Alberta::meshCoarsened = MESH_COARSENED
     
    static const int Dune::Alberta::InteriorBoundary = INTERIOR
     
    static const int Dune::Alberta::DirichletBoundary = DIRICHLET
     
    \n-

    Macro Definition Documentation

    \n-\n-

    ◆ DUNE_ALBERTA_CACHE_COORDINATES

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define DUNE_ALBERTA_CACHE_COORDINATES   1
    \n-
    \n-\n-
    \n-
    \n-
    \n+

    Detailed Description

    \n+

    Provides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid)

    \n+
    Author
    Robert Kloefkorn
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,150 +1,30 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs\n-misc.hh File Reference\n-#include \n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+indexstack.hh File Reference\n+Provides an index stack that supplies indices for element numbering for a grid\n+(i.e. AlbertaGrid and ALUGrid) _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bE_\br_\br_\bo_\br\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bI_\bO_\bE_\br_\br_\bo_\br\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b0_\b,_\b _\b0_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be_\b<_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b1_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\b,_\b _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bu_\bb_\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b1_\b,_\b _\b1_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b2_\b,_\b _\b2_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\b _\bT_\b,_\b _\bl_\be_\bn_\bg_\bt_\bh_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n-\u00a0\n-M\bMa\bac\bcr\bro\bos\bs\n-#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bC_\bA_\bC_\bH_\bE_\b__\bC_\bO_\bO_\bR_\bD_\bI_\bN_\bA_\bT_\bE_\bS\u00a0\u00a0\u00a01\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_B\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_D\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_DD\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA AFF_TRAFO\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA MESH\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n-\u00a0\n-typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA BNDRY_TYPE\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-\u00a0\n- typedef U_CHAR\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-\u00a0\n- typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA FE_SPACE\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-Data *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bA_\bl_\bl_\bo_\bc (size_t size)\n-\u00a0\n-template\n-Data *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bC_\bA_\bl_\bl_\bo_\bc (size_t size)\n-\u00a0\n-template\n-Data *\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc (Data *ptr, size_t oldSize, size_t newSize)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bF_\br_\be_\be (Data *ptr, size_t size)\n-\u00a0\n-template\n- int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bw_\bi_\bs_\bt (int twist, int i)\n-\u00a0\n-template\n- int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt (int twist, int i)\n-\u00a0\n-V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n-static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd = _\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD\n-\u00a0\n-static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd = MESH_REFINED\n-\u00a0\n-static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd = MESH_COARSENED\n-\u00a0\n-static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = INTERIOR\n-\u00a0\n-static const int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = DIRICHLET\n-\u00a0\n-*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_C\bCA\bAC\bCH\bHE\bE_\b_C\bCO\bOO\bOR\bRD\bDI\bIN\bNA\bAT\bTE\bES\bS *\b**\b**\b**\b**\b*\n-#define DUNE_ALBERTA_CACHE_COORDINATES\u00a0\u00a0\u00a01\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+Provides an index stack that supplies indices for element numbering for a grid\n+(i.e. AlbertaGrid and ALUGrid)\n+ Author\n+ Robert Kloefkorn\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00701_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00701_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: misc.hh Source File\n+dune-grid: indexstack.hh Source File\n \n \n \n \n \n \n \n@@ -74,870 +74,257 @@\n \n \n \n
    \n-
    misc.hh
    \n+
    indexstack.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_MISC_HH
    \n-
    6#define DUNE_ALBERTA_MISC_HH
    \n+
    5#ifndef DUNE_ALBERTAGRID_INDEXSTACK_HH
    \n+
    6#define DUNE_ALBERTAGRID_INDEXSTACK_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <utility>
    \n+
    8#include <assert.h>
    \n+
    9#include <stack>
    \n
    10
    \n
    11#include <dune/common/exceptions.hh>
    \n-
    12#include <dune/common/hybridutilities.hh>
    \n-
    13#include <dune/common/typetraits.hh>
    \n-
    14
    \n-\n-
    16
    \n-
    17#if HAVE_ALBERTA
    \n-
    18
    \n-
    19// should the coordinates be cached in a vector (required for ALBERTA 2.0)?
    \n-
    20#ifndef DUNE_ALBERTA_CACHE_COORDINATES
    \n-
    21#define DUNE_ALBERTA_CACHE_COORDINATES 1
    \n-
    22#endif
    \n-
    23
    \n-
    24namespace Dune
    \n-
    25{
    \n-
    26
    \n-
    27 // Exceptions
    \n-
    28 // ----------
    \n-
    29
    \n-
    \n-\n-
    31 : public Exception
    \n-
    32 {};
    \n-
    \n+
    12#include <dune/common/reservedvector.hh>
    \n+
    13
    \n+
    20namespace Dune {
    \n+
    21
    \n+
    24 template <class T, int length>
    \n+
    \n+\n+
    26 {
    \n+
    27 class MyFiniteStack : public ReservedVector<T,length>
    \n+
    28 {
    \n+
    29 typedef ReservedVector<T,length> BaseType ;
    \n+
    30 public:
    \n+
    32 bool full () const { return this->size() >= length; }
    \n
    33
    \n-
    \n-\n-
    35 : public IOError
    \n-
    36 {};
    \n-
    \n-
    37
    \n-
    38
    \n-
    39
    \n-
    40 namespace Alberta
    \n-
    41 {
    \n-
    42
    \n-
    43 // Import Types
    \n-
    44 // ------------
    \n-
    45
    \n-
    46 static const int dimWorld = DIM_OF_WORLD;
    \n-
    47
    \n-
    48 typedef ALBERTA REAL Real;
    \n-
    49 typedef ALBERTA REAL_B LocalVector; // in barycentric coordinates
    \n-
    50 typedef ALBERTA REAL_D GlobalVector;
    \n-
    51 typedef ALBERTA REAL_DD GlobalMatrix;
    \n-
    52 typedef ALBERTA AFF_TRAFO AffineTransformation;
    \n-
    53 typedef ALBERTA MESH Mesh;
    \n-
    54 typedef ALBERTA EL Element;
    \n-
    55
    \n-
    56 static const int meshRefined = MESH_REFINED;
    \n-
    57 static const int meshCoarsened = MESH_COARSENED;
    \n-
    58
    \n-
    59 static const int InteriorBoundary = INTERIOR;
    \n-
    60 static const int DirichletBoundary = DIRICHLET;
    \n-
    61 typedef ALBERTA BNDRY_TYPE BoundaryId;
    \n-
    62
    \n-
    63 typedef U_CHAR ElementType;
    \n-
    64
    \n-
    65 typedef ALBERTA FE_SPACE DofSpace;
    \n-
    66
    \n-
    67
    \n+
    35 void push( const T& t ) { BaseType :: push_back( t ); }
    \n+
    36
    \n+
    38 T topAndPop ()
    \n+
    39 {
    \n+
    40 assert( !this->empty() );
    \n+
    41 assert( this->size() <= length );
    \n+
    42 // This code is not slower than using the array structure directly.
    \n+
    43 // The compiler removes the temporary completely. I measured this.
    \n+
    44 // See the commit message for revision 7837 for more details.
    \n+
    45 T tmp = this->back();
    \n+
    46 this->pop_back();
    \n+
    47 return tmp;
    \n+
    48 }
    \n+
    49 };
    \n+
    50
    \n+
    51 typedef MyFiniteStack StackType;
    \n+
    52 typedef typename std::stack < StackType * > StackListType;
    \n+
    53
    \n+
    54 StackListType fullStackList_;
    \n+
    55 StackListType emptyStackList_;
    \n+
    56
    \n+
    57 //typedef typename StackListType::Iterator DListIteratorType;
    \n+
    58 StackType * stack_;
    \n+
    59
    \n+
    60 // current maxIndex
    \n+
    61 int maxIndex_;
    \n+
    62 public:
    \n+
    64 inline IndexStack();
    \n+
    65
    \n+
    67 inline ~IndexStack ();
    \n
    68
    \n-
    69 // Memory Manipulation Functions
    \n-
    70 // -----------------------------
    \n+
    70 inline void checkAndSetMax(T index) { if(index > maxIndex_) maxIndex_ = index;}
    \n
    71
    \n-
    72 template< class Data >
    \n-
    \n-
    73 inline Data *memAlloc ( size_t size )
    \n-
    74 {
    \n-
    75 return MEM_ALLOC( size, Data );
    \n-
    76 }
    \n-
    \n+
    73 inline void setMaxIndex(T index) { maxIndex_ = index; }
    \n+
    74
    \n+
    76 inline int getMaxIndex() const { return maxIndex_; }
    \n
    77
    \n-
    78 template< class Data >
    \n-
    \n-
    79 inline Data *memCAlloc ( size_t size )
    \n-
    80 {
    \n-
    81 return MEM_CALLOC( size, Data );
    \n-
    82 }
    \n-
    \n+
    79 inline int size() const { return getMaxIndex(); }
    \n+
    80
    \n+
    82 inline T getIndex ();
    \n
    83
    \n-
    84 template< class Data >
    \n-
    \n-
    85 inline Data *memReAlloc ( Data *ptr, size_t oldSize, size_t newSize )
    \n-
    86 {
    \n-
    87 return MEM_REALLOC( ptr, oldSize, newSize, Data );
    \n-
    88 }
    \n-
    \n+
    85 inline void freeIndex(T index);
    \n+
    86
    \n+
    88 inline void test ();
    \n
    89
    \n-
    90 template< class Data >
    \n-
    \n-
    91 inline void memFree ( Data *ptr, size_t size )
    \n-
    92 {
    \n-
    93 return MEM_FREE( ptr, size, Data );
    \n-
    94 }
    \n-
    \n-
    95
    \n-
    96
    \n-
    97
    \n-
    98 // GlobalSpace
    \n-
    99 // -----------
    \n-
    100
    \n-
    \n-\n-
    102 {
    \n-
    103 typedef GlobalSpace This;
    \n-
    104
    \n-
    105 public:
    \n-\n-\n+
    90 // backup set to out stream
    \n+
    91 inline void backupIndexSet ( std::ostream & os );
    \n+
    92
    \n+
    93 // restore from in stream
    \n+
    94 inline void restoreIndexSet ( std::istream & is );
    \n+
    95 private:
    \n+
    96 // no copy constructor allowed
    \n+
    97 IndexStack( const IndexStack<T,length> & s) : maxIndex_ (0) , stack_(0) {}
    \n+
    98
    \n+
    99 // no assignment operator allowed
    \n+
    100 IndexStack<T,length> & operator = ( const IndexStack<T,length> & s)
    \n+
    101 {
    \n+
    102 DUNE_THROW(Exception, "IndexStack::operator = () not allowed!");
    \n+
    103 return *this;
    \n+
    104 }
    \n+
    105
    \n+
    106 // clear fullStacks
    \n+
    107 void clearStack ();
    \n
    108
    \n-
    109 private:
    \n-
    110 Matrix identityMatrix_;
    \n-
    111 Vector nullVector_;
    \n-
    112
    \n-
    113 GlobalSpace ()
    \n-
    114 {
    \n-
    115 for( int i = 0; i < dimWorld; ++i )
    \n-
    116 {
    \n-
    117 for( int j = 0; j < dimWorld; ++j )
    \n-
    118 identityMatrix_[ i ][ j ] = Real( 0 );
    \n-
    119 identityMatrix_[ i ][ i ] = Real( 1 );
    \n-
    120 nullVector_[ i ] = Real( 0 );
    \n-
    121 }
    \n-
    122 }
    \n-
    123
    \n-
    124 static This &instance ()
    \n-
    125 {
    \n-
    126 static This theInstance;
    \n-
    127 return theInstance;
    \n-
    128 }
    \n-
    129
    \n-
    130 public:
    \n-
    \n-
    131 static const Matrix &identityMatrix ()
    \n-
    132 {
    \n-
    133 return instance().identityMatrix_;
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    \n-
    136 static const Vector &nullVector ()
    \n-
    137 {
    \n-
    138 return instance().nullVector_;
    \n-
    139 }
    \n-
    \n-
    140 };
    \n-
    \n-
    141
    \n-
    142
    \n-
    143
    \n-
    144 // NumSubEntities
    \n-
    145 // --------------
    \n-
    146
    \n-
    147 template< int dim, int codim >
    \n-\n-
    149
    \n-
    150 template< int dim >
    \n-
    \n-
    151 struct NumSubEntities< dim, 0 >
    \n-
    152 {
    \n-
    153 static const int value = 1;
    \n-
    154 };
    \n-
    \n-
    155
    \n-
    156 template< int dim >
    \n-
    \n-
    157 struct NumSubEntities< dim, dim >
    \n-
    158 {
    \n-
    159 static const int value = dim+1;
    \n-
    160 };
    \n-
    \n-
    161
    \n-
    162 template<>
    \n-
    \n-
    163 struct NumSubEntities< 0, 0 >
    \n-
    164 {
    \n-
    165 static const int value = 1;
    \n-
    166 };
    \n-
    \n-
    167
    \n-
    168 template<>
    \n-
    \n-
    169 struct NumSubEntities< 2, 1 >
    \n-
    170 {
    \n-
    171 static const int value = 3;
    \n-
    172 };
    \n-
    \n-
    173
    \n-
    174 template<>
    \n-
    \n-
    175 struct NumSubEntities< 3, 1 >
    \n-
    176 {
    \n-
    177 static const int value = 4;
    \n-
    178 };
    \n-
    \n-
    179
    \n-
    180 template<>
    \n-
    \n-
    181 struct NumSubEntities< 3, 2 >
    \n-
    182 {
    \n-
    183 static const int value = 6;
    \n-
    184 };
    \n+
    109 }; // end class IndexStack
    \n
    \n-
    185
    \n+
    110
    \n+
    111 //****************************************************************
    \n+
    112 // Inline implementation
    \n+
    113 // ***************************************************************
    \n+
    114 template <class T, int length>
    \n+
    \n+\n+
    116 : stack_ ( new StackType () ) , maxIndex_ (0) {}
    \n+
    \n+
    117
    \n+
    118 template <class T, int length>
    \n+
    \n+\n+
    120 {
    \n+
    121 if(stack_) delete stack_;
    \n+
    122 stack_ = 0;
    \n+
    123
    \n+
    124 while( !fullStackList_.empty() )
    \n+
    125 {
    \n+
    126 StackType * st = fullStackList_.top();
    \n+
    127 if(st) delete st;
    \n+
    128 fullStackList_.pop();
    \n+
    129 }
    \n+
    130 while( !emptyStackList_.empty() )
    \n+
    131 {
    \n+
    132 StackType * st = emptyStackList_.top();
    \n+
    133 if(st) delete st;
    \n+
    134 emptyStackList_.pop();
    \n+
    135 }
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    138 template <class T, int length>
    \n+
    \n+\n+
    140 {
    \n+
    141 if((*stack_).empty())
    \n+
    142 {
    \n+
    143 if( fullStackList_.size() <= 0)
    \n+
    144 {
    \n+
    145 return maxIndex_++;
    \n+
    146 }
    \n+
    147 else
    \n+
    148 {
    \n+
    149 emptyStackList_.push( stack_ );
    \n+
    150 stack_ = fullStackList_.top();
    \n+
    151 fullStackList_.pop();
    \n+
    152 }
    \n+
    153 }
    \n+
    154 return (*stack_).topAndPop();
    \n+
    155 }
    \n+
    \n+
    156
    \n+
    157 template <class T, int length>
    \n+
    \n+
    158 inline void IndexStack<T,length>::freeIndex ( T index )
    \n+
    159 {
    \n+
    160 if((*stack_).full())
    \n+
    161 {
    \n+
    162 fullStackList_.push( stack_ );
    \n+
    163 if(emptyStackList_.size() <= 0)
    \n+
    164 {
    \n+
    165 stack_ = new StackType ();
    \n+
    166 }
    \n+
    167 else
    \n+
    168 {
    \n+
    169 stack_ = emptyStackList_.top();
    \n+
    170 emptyStackList_.pop();
    \n+
    171 }
    \n+
    172 }
    \n+
    173 (*stack_).push(index);
    \n+
    174 }
    \n+
    \n+
    175
    \n+
    176 template <class T, int length>
    \n+
    \n+\n+
    178 {
    \n+
    179 T vec[2*length];
    \n+
    180
    \n+
    181 for(int i=0; i<2*length; i++)
    \n+
    182 vec[i] = getIndex();
    \n+
    183
    \n+
    184 for(int i=0; i<2*length; i++)
    \n+
    185 freeIndex(vec[i]);
    \n
    186
    \n-
    187
    \n-
    188 // CodimType
    \n-
    189 // ---------
    \n-
    190
    \n-
    191 template< int dim, int codim >
    \n-
    192 struct CodimType;
    \n+
    187 for(int i=0; i<2*length; i++)
    \n+
    188 vec[i] = getIndex();
    \n+
    189
    \n+
    190 for(int i=0; i<2*length; i++)
    \n+
    191 printf(" index [%d] = %d \\n",i,vec[i]);
    \n+
    192 }
    \n+
    \n
    193
    \n-
    194 template< int dim >
    \n-
    \n-
    195 struct CodimType< dim, 0 >
    \n-
    196 {
    \n-
    197 static const int value = CENTER;
    \n-
    198 };
    \n-
    \n-
    199
    \n-
    200 template< int dim >
    \n-
    \n-
    201 struct CodimType< dim, dim >
    \n-
    202 {
    \n-
    203 static const int value = VERTEX;
    \n-
    204 };
    \n-
    \n-
    205
    \n-
    206 template<>
    \n-
    \n-
    207 struct CodimType< 2, 1 >
    \n-
    208 {
    \n-
    209 static const int value = EDGE;
    \n-
    210 };
    \n-
    \n-
    211
    \n-
    212 template<>
    \n-
    \n-
    213 struct CodimType< 3, 1 >
    \n-
    214 {
    \n-
    215 static const int value = FACE;
    \n-
    216 };
    \n-
    \n-
    217
    \n-
    218 template<>
    \n-
    \n-
    219 struct CodimType< 3, 2 >
    \n-
    220 {
    \n-
    221 static const int value = EDGE;
    \n-
    222 };
    \n-
    \n-
    223
    \n-
    224
    \n-
    225
    \n-
    226 // FillFlags
    \n-
    227 // ---------
    \n-
    228
    \n-
    229 template< int dim >
    \n-
    \n-\n-
    231 {
    \n-
    232 typedef ALBERTA FLAGS Flags;
    \n-
    233
    \n-
    234 static const Flags nothing = FILL_NOTHING;
    \n-
    235
    \n-
    236 static const Flags coords = FILL_COORDS;
    \n-
    237
    \n-
    238 static const Flags neighbor = FILL_NEIGH;
    \n-
    239
    \n-
    240 static const Flags orientation = (dim == 3 ? FILL_ORIENTATION : FILL_NOTHING);
    \n-
    241
    \n-
    242 static const Flags projection = FILL_PROJECTION;
    \n-
    243
    \n-
    244 static const Flags elementType = FILL_NOTHING;
    \n-
    245
    \n-
    246 static const Flags boundaryId = FILL_MACRO_WALLS;
    \n-
    247
    \n-
    248 static const Flags nonPeriodic = FILL_NON_PERIODIC;
    \n-
    249
    \n-\n-\n-
    252
    \n-
    253 static const Flags standardWithCoords = all & ~nonPeriodic & ~projection;
    \n-
    254
    \n-
    255#if DUNE_ALBERTA_CACHE_COORDINATES
    \n-
    256 static const Flags standard = standardWithCoords & ~coords;
    \n-
    257#else
    \n-\n-
    259#endif
    \n-
    260 };
    \n-
    \n-
    261
    \n-
    262
    \n-
    263
    \n-
    264 // RefinementEdge
    \n-
    265 // --------------
    \n-
    266
    \n-
    267 template< int dim >
    \n-
    \n-\n-
    269 {
    \n-
    270 static const int value = 0;
    \n-
    271 };
    \n-
    \n-
    272
    \n-
    273 template<>
    \n-
    \n-
    274 struct RefinementEdge< 2 >
    \n-
    275 {
    \n-
    276 static const int value = 2;
    \n-
    277 };
    \n-
    \n-
    278
    \n-
    279
    \n-
    280
    \n-
    281 // Dune2AlbertaNumbering
    \n-
    282 // ---------------------
    \n-
    283
    \n-
    284 template< int dim, int codim >
    \n-
    \n-\n-
    286 {
    \n-
    \n-
    287 static int apply ( const int i )
    \n-
    288 {
    \n-
    289 assert( (i >= 0) && (i < NumSubEntities< dim, codim >::value) );
    \n-
    290 return i;
    \n-
    291 }
    \n-
    \n-
    292 };
    \n-
    \n-
    293
    \n-
    294 template<>
    \n-
    \n-\n-
    296 {
    \n-
    297 static const int numSubEntities = NumSubEntities< 3, 2 >::value;
    \n-
    298
    \n-
    \n-
    299 static int apply ( const int i )
    \n-
    300 {
    \n-
    301 assert( (i >= 0) && (i < numSubEntities) );
    \n-
    302 static int dune2alberta[ numSubEntities ] = { 0, 3, 1, 2, 4, 5 };
    \n-
    303 return dune2alberta[ i ];
    \n-
    304 }
    \n-
    \n-
    305 };
    \n-
    \n-
    306
    \n-
    307
    \n-
    308
    \n-
    309 // Generic2AlbertaNumbering
    \n-
    310 // ------------------------
    \n-
    311
    \n-
    312 template< int dim, int codim >
    \n-
    \n-\n-
    314 {
    \n-
    \n-
    315 static int apply ( const int i )
    \n-
    316 {
    \n-
    317 assert( (i >= 0) && (i < NumSubEntities< dim, codim >::value) );
    \n-
    318 return i;
    \n-
    319 }
    \n-
    \n-
    320 };
    \n-
    \n-
    321
    \n-
    322 template< int dim >
    \n-
    \n-\n-
    324 {
    \n-
    \n-
    325 static int apply ( const int i )
    \n-
    326 {
    \n-
    327 assert( (i >= 0) && (i < NumSubEntities< dim, 1 >::value) );
    \n-
    328 return dim - i;
    \n-
    329 }
    \n-
    \n-
    330 };
    \n-
    \n-
    331
    \n-
    332 template<>
    \n-
    \n-\n-
    334 {
    \n-
    \n-
    335 static int apply ( const int i )
    \n-
    336 {
    \n-
    337 assert( (i >= 0) && (i < NumSubEntities< 1, 1 >::value) );
    \n-
    338 return i;
    \n-
    339 }
    \n-
    \n-
    340 };
    \n-
    \n-
    341
    \n-
    342 template<>
    \n-
    \n-\n-
    344 {
    \n-
    345 static const int numSubEntities = NumSubEntities< 3, 2 >::value;
    \n-
    346
    \n-
    \n-
    347 static int apply ( const int i )
    \n-
    348 {
    \n-
    349 assert( (i >= 0) && (i < numSubEntities) );
    \n-
    350 static int generic2alberta[ numSubEntities ] = { 0, 1, 3, 2, 4, 5 };
    \n-
    351 return generic2alberta[ i ];
    \n-
    352 }
    \n-
    \n-
    353 };
    \n-
    \n-
    354
    \n-
    355
    \n-
    356
    \n-
    357 // NumberingMap
    \n-
    358 // ------------
    \n-
    359
    \n-
    360 template< int dim, template< int, int > class Numbering = Generic2AlbertaNumbering >
    \n-
    \n-\n-
    362 {
    \n-\n-
    364
    \n-
    365 template< int codim >
    \n-
    366 struct Initialize;
    \n-
    367
    \n-
    368 int *dune2alberta_[ dim+1 ];
    \n-
    369 int *alberta2dune_[ dim+1 ];
    \n-
    370 int numSubEntities_[ dim+1 ];
    \n-
    371
    \n-
    372 NumberingMap ( const This & );
    \n-
    373 This &operator= ( const This & );
    \n-
    374
    \n-
    375 public:
    \n-
    \n-\n-
    377 {
    \n-
    378 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ Initialize< i >::apply( *this ); } );
    \n-
    379 }
    \n-
    \n-
    380
    \n-
    \n-\n-
    382 {
    \n-
    383 for( int codim = 0; codim <= dim; ++codim )
    \n-
    384 {
    \n-
    385 delete[]( dune2alberta_[ codim ] );
    \n-
    386 delete[]( alberta2dune_[ codim ] );
    \n-
    387 }
    \n-
    388 }
    \n-
    \n-
    389
    \n-
    \n-
    390 int dune2alberta ( int codim, int i ) const
    \n-
    391 {
    \n-
    392 assert( (codim >= 0) && (codim <= dim) );
    \n-
    393 assert( (i >= 0) && (i < numSubEntities( codim )) );
    \n-
    394 return dune2alberta_[ codim ][ i ];
    \n-
    395 }
    \n-
    \n-
    396
    \n-
    \n-
    397 int alberta2dune ( int codim, int i ) const
    \n-
    398 {
    \n-
    399 assert( (codim >= 0) && (codim <= dim) );
    \n-
    400 assert( (i >= 0) && (i < numSubEntities( codim )) );
    \n-
    401 return alberta2dune_[ codim ][ i ];
    \n-
    402 }
    \n-
    \n-
    403
    \n-
    \n-
    404 int numSubEntities ( int codim ) const
    \n-
    405 {
    \n-
    406 assert( (codim >= 0) && (codim <= dim) );
    \n-
    407 return numSubEntities_[ codim ];
    \n-
    408 }
    \n-
    \n-
    409 };
    \n-
    \n-
    410
    \n-
    411
    \n-
    412
    \n-
    413 // NumberingMap::Initialize
    \n-
    414 // ------------------------
    \n-
    415
    \n-
    416 template< int dim, template< int, int > class Numbering >
    \n-
    417 template< int codim >
    \n-
    418 struct NumberingMap< dim, Numbering >::Initialize
    \n-
    419 {
    \n-
    420 static const int numSubEntities = NumSubEntities< dim, codim >::value;
    \n-
    421
    \n-
    422 static void apply ( NumberingMap< dim, Numbering > &map )
    \n-
    423 {
    \n-
    424 map.numSubEntities_[ codim ] = numSubEntities;
    \n-
    425 map.dune2alberta_[ codim ] = new int[ numSubEntities ];
    \n-
    426 map.alberta2dune_[ codim ] = new int[ numSubEntities ];
    \n-
    427
    \n-
    428 for( int i = 0; i < numSubEntities; ++i )
    \n-
    429 {
    \n-
    430 const int j = Numbering< dim, codim >::apply( i );
    \n-
    431 map.dune2alberta_[ codim ][ i ] = j;
    \n-
    432 map.alberta2dune_[ codim ][ j ] = i;
    \n-
    433 }
    \n-
    434 }
    \n-
    435 };
    \n-
    436
    \n-
    437
    \n-
    438
    \n-
    439 // MapVertices
    \n-
    440 // -----------
    \n-
    441
    \n-
    442 template< int dim, int codim >
    \n-\n-
    444
    \n-
    445 template< int dim >
    \n-
    \n-
    446 struct MapVertices< dim, 0 >
    \n-
    447 {
    \n-
    \n-
    448 static int apply ( int subEntity, int vertex )
    \n-
    449 {
    \n-
    450 assert( subEntity == 0 );
    \n-
    451 assert( (vertex >= 0) && (vertex <= NumSubEntities< dim, dim >::value) );
    \n-
    452 return vertex;
    \n-
    453 }
    \n-
    \n-
    454 };
    \n-
    \n-
    455
    \n-
    456 template<>
    \n-
    \n-
    457 struct MapVertices< 2, 1 >
    \n-
    458 {
    \n-
    \n-
    459 static int apply ( int subEntity, int vertex )
    \n-
    460 {
    \n-
    461 assert( (subEntity >= 0) && (subEntity < 3) );
    \n-
    462 assert( (vertex >= 0) && (vertex < 2) );
    \n-
    463 //static const int map[ 3 ][ 2 ] = { {1,2}, {2,0}, {0,1} };
    \n-
    464 static const int map[ 3 ][ 2 ] = { {1,2}, {0,2}, {0,1} };
    \n-
    465 return map[ subEntity ][ vertex ];
    \n-
    466 }
    \n-
    \n-
    467 };
    \n-
    \n-
    468
    \n-
    469 template<>
    \n-
    \n-
    470 struct MapVertices< 3, 1 >
    \n-
    471 {
    \n-
    \n-
    472 static int apply ( int subEntity, int vertex )
    \n-
    473 {
    \n-
    474 assert( (subEntity >= 0) && (subEntity < 4) );
    \n-
    475 assert( (vertex >= 0) && (vertex < 3) );
    \n-
    476 //static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };
    \n-
    477 static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,2,3}, {0,1,3}, {0,1,2} };
    \n-
    478 return map[ subEntity ][ vertex ];
    \n-
    479 }
    \n-
    \n-
    480 };
    \n-
    \n-
    481
    \n-
    482 template<>
    \n-
    \n-
    483 struct MapVertices< 3, 2 >
    \n-
    484 {
    \n-
    \n-
    485 static int apply ( int subEntity, int vertex )
    \n-
    486 {
    \n-
    487 assert( (subEntity >= 0) && (subEntity < 6) );
    \n-
    488 assert( (vertex >= 0) && (vertex < 2) );
    \n-
    489 static const int map[ 6 ][ 2 ] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} };
    \n-
    490 return map[ subEntity ][ vertex ];
    \n-
    491 }
    \n-
    \n-
    492 };
    \n-
    \n-
    493
    \n-
    494 template< int dim >
    \n-
    \n-
    495 struct MapVertices< dim, dim >
    \n-
    496 {
    \n-
    \n-
    497 static int apply ( int subEntity, int vertex )
    \n-
    498 {
    \n-
    499 assert( (subEntity >= 0) && (subEntity < NumSubEntities< dim, 1 >::value) );
    \n-
    500 assert( vertex == 0 );
    \n-
    501 return subEntity;
    \n-
    502 }
    \n-
    \n-
    503 };
    \n-
    \n-
    504
    \n-
    505
    \n-
    506
    \n-
    507 // Twist
    \n-
    508 // -----
    \n-
    509
    \n-
    510 // ******************************************************************
    \n-
    511 // Meaning of the twist (same as in ALU)
    \n-
    512 // -------------------------------------
    \n-
    513 //
    \n-
    514 // Consider a fixed ordering of the vertices v_1, ... v_n of a face
    \n-
    515 // (here, we assume their indices to be increasing). Denote by k the
    \n-
    516 // local number of a vertex v within the element and by t the twist.
    \n-
    517 // Then, v = v_j, where j is computed by the following formula:
    \n-
    518 //
    \n-
    519 // / (2n + 1 - k + t) % n, if t < 0
    \n-
    520 // j = <
    \n-
    521 // \\ (k + t) % n, if t >= 0
    \n-
    522 //
    \n-
    523 // Note: We use the order of the 0-th vertex dof to assign the twist.
    \n-
    524 // This is ok for two reasons:
    \n-
    525 // - ALBERTA preserves the relative order of the dofs during
    \n-
    526 // dof compression.
    \n-
    527 // - ALBERTA enforces the first vertex dof admin to be periodic.
    \n-
    528 // ******************************************************************
    \n-
    529
    \n-
    530 template< int dim, int subdim >
    \n-
    \n-
    531 struct Twist
    \n-
    532 {
    \n-
    533 static const int numSubEntities = NumSubEntities< dim, dim-subdim >::value;
    \n-
    534
    \n-
    535 static const int minTwist = 0;
    \n-
    536 static const int maxTwist = 0;
    \n-
    537
    \n-
    \n-
    538 static int twist ( [[maybe_unused]] const Element *element,
    \n-
    539 [[maybe_unused]] int subEntity )
    \n-
    540 {
    \n-
    541 assert( (subEntity >= 0) && (subEntity < numSubEntities) );
    \n-
    542 return 0;
    \n-
    543 }
    \n-
    \n-
    544 };
    \n-
    \n-
    545
    \n-
    546 template< int dim >
    \n-
    \n-
    547 struct Twist< dim, 1 >
    \n-
    548 {
    \n-
    549 static const int numSubEntities = NumSubEntities< dim, dim-1 >::value;
    \n-
    550
    \n-
    551 static const int minTwist = 0;
    \n-
    552 static const int maxTwist = 1;
    \n-
    553
    \n-
    \n-
    554 static int twist ( const Element *element, int subEntity )
    \n-
    555 {
    \n-
    556 assert( (subEntity >= 0) && (subEntity < numSubEntities) );
    \n-
    557 const int numVertices = NumSubEntities< 1, 1 >::value;
    \n-
    558 int dof[ numVertices ];
    \n-
    559 for( int i = 0; i < numVertices; ++i )
    \n-
    560 {
    \n-
    561 const int j = MapVertices< dim, dim-1 >::apply( subEntity, i );
    \n-
    562 dof[ i ] = element->dof[ j ][ 0 ];
    \n-
    563 }
    \n-
    564 return (dof[ 0 ] < dof[ 1 ] ? 0 : 1);
    \n-
    565 }
    \n-
    \n-
    566 };
    \n-
    \n-
    567
    \n-
    568
    \n-
    569 template<>
    \n-
    \n-
    570 struct Twist< 1, 1 >
    \n-
    571 {
    \n-
    572 static const int minTwist = 0;
    \n-
    573 static const int maxTwist = 0;
    \n-
    574
    \n-
    \n-
    575 static int twist ( [[maybe_unused]] const Element *element,
    \n-
    576 [[maybe_unused]] int subEntity )
    \n-
    577 {
    \n-
    578 assert( subEntity == 0 );
    \n-
    579 return 0;
    \n-
    580 }
    \n-
    \n-
    581 };
    \n-
    \n-
    582
    \n-
    583
    \n-
    584 template< int dim >
    \n-
    \n-
    585 struct Twist< dim, 2 >
    \n-
    586 {
    \n-
    587 static const int numSubEntities = NumSubEntities< dim, dim-2 >::value;
    \n-
    588
    \n-
    589 static const int minTwist = -3;
    \n-
    590 static const int maxTwist = 2;
    \n-
    591
    \n-
    \n-
    592 static int twist ( const Element *element, int subEntity )
    \n-
    593 {
    \n-
    594 assert( (subEntity >= 0) && (subEntity < numSubEntities) );
    \n-
    595 const int numVertices = NumSubEntities< 2, 2 >::value;
    \n-
    596 int dof[ numVertices ];
    \n-
    597 for( int i = 0; i < numVertices; ++i )
    \n-
    598 {
    \n-
    599 const int j = MapVertices< dim, dim-2 >::apply( subEntity, i );
    \n-
    600 dof[ i ] = element->dof[ j ][ 0 ];
    \n-
    601 }
    \n-
    602
    \n-
    603 const int twist[ 8 ] = { -2, 1, 666, -1, 2, 666, -3, 0 };
    \n-
    604 const int k = int( dof[ 0 ] < dof[ 1 ] )
    \n-
    605 | (int( dof[ 0 ] < dof[ 2 ] ) << 1)
    \n-
    606 | (int( dof[ 1 ] < dof[ 2 ] ) << 2);
    \n-
    607 assert( twist[ k ] != 666 );
    \n-
    608 return twist[ k ];
    \n-
    609 }
    \n-
    \n-
    610 };
    \n-
    \n-
    611
    \n-
    612
    \n-
    613 template<>
    \n-
    \n-
    614 struct Twist< 2, 2 >
    \n-
    615 {
    \n-
    616 static const int minTwist = 0;
    \n-
    617 static const int maxTwist = 0;
    \n-
    618
    \n-
    \n-
    619 static int twist ( [[maybe_unused]] const Element *element,
    \n-
    620 [[maybe_unused]] int subEntity )
    \n-
    621 {
    \n-
    622 assert( subEntity == 0 );
    \n-
    623 return 0;
    \n-
    624 }
    \n-
    \n-
    625 };
    \n-
    \n-
    626
    \n-
    627
    \n-
    628
    \n-
    629 template< int dim >
    \n-
    \n-
    630 inline int applyTwist ( int twist, int i )
    \n-
    631 {
    \n-
    632 const int numCorners = NumSubEntities< dim, dim >::value;
    \n-
    633 return (twist < 0 ? (2*numCorners + 1 - i + twist) : i + twist) % numCorners;
    \n-
    634 }
    \n-
    \n-
    635
    \n-
    636 template< int dim >
    \n-
    \n-
    637 inline int applyInverseTwist ( int twist, int i )
    \n-
    638 {
    \n-
    639 const int numCorners = NumSubEntities< dim, dim >::value;
    \n-
    640 return (twist < 0 ? (2*numCorners + 1 - i + twist) : numCorners + i - twist) % numCorners;
    \n-
    641 }
    \n-
    \n-
    642
    \n-
    643 }
    \n-
    644
    \n-
    645}
    \n-
    646
    \n-
    647#endif // #if HAVE_ALBERTA
    \n-
    648
    \n-
    649#endif // #ifndef DUNE_ALBERTA_MISC_HH
    \n-\n-
    #define DIM_OF_WORLD
    Definition albertaheader.hh:23
    \n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    194 template <class T, int length>
    \n+
    \n+
    195 inline void IndexStack<T,length>::backupIndexSet ( std::ostream & os )
    \n+
    196 {
    \n+
    197 // holes are not stored at the moment
    \n+
    198 os.write( ((const char *) &maxIndex_ ), sizeof(int) ) ;
    \n+
    199 return ;
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    202 template <class T, int length>
    \n+
    \n+
    203 inline void IndexStack<T,length>::restoreIndexSet ( std::istream & is )
    \n+
    204 {
    \n+
    205 is.read ( ((char *) &maxIndex_), sizeof(int) );
    \n+
    206 clearStack ();
    \n+
    207
    \n+
    208 return ;
    \n+
    209 }
    \n+
    \n+
    210
    \n+
    211 template <class T, int length>
    \n+\n+
    213 {
    \n+
    214 if(stack_)
    \n+
    215 {
    \n+
    216 delete stack_;
    \n+
    217 stack_ = new StackType();
    \n+
    218 assert(stack_);
    \n+
    219 }
    \n+
    220
    \n+
    221 while( !fullStackList_.empty() )
    \n+
    222 {
    \n+
    223 StackType * st = fullStackList_.top();
    \n+
    224 if(st) delete st;
    \n+
    225 fullStackList_.pop();
    \n+
    226 }
    \n+
    227 return;
    \n+
    228 }
    \n+
    229
    \n+
    230} // end namespace Dune
    \n+
    231#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    int applyInverseTwist(int twist, int i)
    Definition misc.hh:637
    \n-
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n-
    int applyTwist(int twist, int i)
    Definition misc.hh:630
    \n-
    void memFree(Data *ptr, size_t size)
    Definition misc.hh:91
    \n-
    ALBERTA REAL_DD GlobalMatrix
    Definition misc.hh:51
    \n-
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n-
    ALBERTA REAL_B LocalVector
    Definition misc.hh:49
    \n-
    ALBERTA EL Element
    Definition misc.hh:54
    \n-
    ALBERTA BNDRY_TYPE BoundaryId
    Definition misc.hh:61
    \n-
    static const int InteriorBoundary
    Definition misc.hh:59
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    static const int meshRefined
    Definition misc.hh:56
    \n-
    Data * memAlloc(size_t size)
    Definition misc.hh:73
    \n-
    Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)
    Definition misc.hh:85
    \n-
    static const int DirichletBoundary
    Definition misc.hh:60
    \n-
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n-
    Data * memCAlloc(size_t size)
    Definition misc.hh:79
    \n-
    static const int dimWorld
    Definition misc.hh:46
    \n-
    U_CHAR ElementType
    Definition misc.hh:63
    \n-
    static const int meshCoarsened
    Definition misc.hh:57
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition misc.hh:32
    \n-
    Definition misc.hh:36
    \n-
    Definition misc.hh:102
    \n-
    static const Matrix & identityMatrix()
    Definition misc.hh:131
    \n-
    static const Vector & nullVector()
    Definition misc.hh:136
    \n-
    GlobalMatrix Matrix
    Definition misc.hh:106
    \n-
    GlobalVector Vector
    Definition misc.hh:107
    \n-
    Definition misc.hh:148
    \n-
    Definition misc.hh:192
    \n-
    Definition misc.hh:231
    \n-
    static const Flags nothing
    Definition misc.hh:234
    \n-
    static const Flags nonPeriodic
    Definition misc.hh:248
    \n-
    static const Flags boundaryId
    Definition misc.hh:246
    \n-
    static const Flags elementType
    Definition misc.hh:244
    \n-
    ALBERTA FLAGS Flags
    Definition misc.hh:232
    \n-
    static const Flags projection
    Definition misc.hh:242
    \n-
    static const Flags coords
    Definition misc.hh:236
    \n-
    static const Flags orientation
    Definition misc.hh:240
    \n-
    static const Flags standard
    Definition misc.hh:258
    \n-
    static const Flags neighbor
    Definition misc.hh:238
    \n-
    static const Flags all
    Definition misc.hh:250
    \n-
    static const Flags standardWithCoords
    Definition misc.hh:253
    \n-
    Definition misc.hh:269
    \n-
    static const int value
    Definition misc.hh:270
    \n-\n-
    static int apply(const int i)
    Definition misc.hh:287
    \n-
    static int apply(const int i)
    Definition misc.hh:299
    \n-\n-
    static int apply(const int i)
    Definition misc.hh:315
    \n-
    static int apply(const int i)
    Definition misc.hh:325
    \n-
    static int apply(const int i)
    Definition misc.hh:335
    \n-
    static int apply(const int i)
    Definition misc.hh:347
    \n-
    Definition misc.hh:362
    \n-
    int alberta2dune(int codim, int i) const
    Definition misc.hh:397
    \n-
    int numSubEntities(int codim) const
    Definition misc.hh:404
    \n-
    int dune2alberta(int codim, int i) const
    Definition misc.hh:390
    \n-
    ~NumberingMap()
    Definition misc.hh:381
    \n-
    NumberingMap()
    Definition misc.hh:376
    \n-
    Definition misc.hh:443
    \n-
    static int apply(int subEntity, int vertex)
    Definition misc.hh:448
    \n-
    static int apply(int subEntity, int vertex)
    Definition misc.hh:459
    \n-
    static int apply(int subEntity, int vertex)
    Definition misc.hh:472
    \n-
    static int apply(int subEntity, int vertex)
    Definition misc.hh:485
    \n-
    static int apply(int subEntity, int vertex)
    Definition misc.hh:497
    \n-
    Definition misc.hh:532
    \n-
    static const int maxTwist
    Definition misc.hh:536
    \n-
    static const int minTwist
    Definition misc.hh:535
    \n-
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:538
    \n-
    static const int numSubEntities
    Definition misc.hh:533
    \n-
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:554
    \n-
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:575
    \n-
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:592
    \n-
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:619
    \n+
    Definition indexstack.hh:26
    \n+
    void restoreIndexSet(std::istream &is)
    Definition indexstack.hh:203
    \n+
    void checkAndSetMax(T index)
    set index as maxIndex if index is bigger than maxIndex
    Definition indexstack.hh:70
    \n+
    void backupIndexSet(std::ostream &os)
    Definition indexstack.hh:195
    \n+
    ~IndexStack()
    Destructor, deleting all stacks.
    Definition indexstack.hh:119
    \n+
    T getIndex()
    restore index from stack or create new index
    Definition indexstack.hh:139
    \n+
    IndexStack()
    Constructor, create new IndexStack.
    Definition indexstack.hh:115
    \n+
    void setMaxIndex(T index)
    set index as maxIndex
    Definition indexstack.hh:73
    \n+
    int size() const
    return maxIndex which is also the
    Definition indexstack.hh:79
    \n+
    void test()
    test stack functionality
    Definition indexstack.hh:177
    \n+
    void freeIndex(T index)
    store index on stack
    Definition indexstack.hh:158
    \n+
    int getMaxIndex() const
    return maxIndex which is also the
    Definition indexstack.hh:76
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,888 +1,271 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-misc.hh\n+indexstack.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_MISC_HH\n-6#define DUNE_ALBERTA_MISC_HH\n+5#ifndef DUNE_ALBERTAGRID_INDEXSTACK_HH\n+6#define DUNE_ALBERTAGRID_INDEXSTACK_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\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n-16\n-17#if HAVE_ALBERTA\n-18\n-19// should the coordinates be cached in a vector (required for ALBERTA 2.0)?\n-20#ifndef DUNE_ALBERTA_CACHE_COORDINATES\n-_\b2_\b1#define DUNE_ALBERTA_CACHE_COORDINATES 1\n-22#endif\n-23\n-24namespace _\bD_\bu_\bn_\be\n-25{\n-26\n-27 // Exceptions\n-28 // ----------\n-29\n-_\b3_\b0 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bE_\br_\br_\bo_\br\n-31 : public Exception\n-32 {};\n+12#include \n+13\n+20namespace _\bD_\bu_\bn_\be {\n+21\n+24 template \n+_\b2_\b5 class _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n+26 {\n+27 class MyFiniteStack : public ReservedVector\n+28 {\n+29 typedef ReservedVector BaseType ;\n+30 public:\n+32 bool full () const { return this->_\bs_\bi_\bz_\be() >= length; }\n 33\n-_\b3_\b4 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bI_\bO_\bE_\br_\br_\bo_\br\n-35 : public IOError\n-36 {};\n-37\n-38\n-39\n-40 namespace Alberta\n-41 {\n-42\n-43 // Import Types\n-44 // ------------\n-45\n-_\b4_\b6 static const int _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd = _\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD;\n-47\n-_\b4_\b8 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL _\bR_\be_\ba_\bl;\n-_\b4_\b9 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_B _\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br; // in barycentric coordinates\n-_\b5_\b0 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_D _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n-_\b5_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA REAL_DD _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx;\n-_\b5_\b2 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA AFF_TRAFO _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn;\n-_\b5_\b3 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA MESH _\bM_\be_\bs_\bh;\n-_\b5_\b4 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL _\bE_\bl_\be_\bm_\be_\bn_\bt;\n-55\n-_\b5_\b6 static const int _\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd = MESH_REFINED;\n-_\b5_\b7 static const int _\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd = MESH_COARSENED;\n-58\n-_\b5_\b9 static const int _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = INTERIOR;\n-_\b6_\b0 static const int _\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by = DIRICHLET;\n-_\b6_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA BNDRY_TYPE _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd;\n-62\n-_\b6_\b3 typedef U_CHAR _\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n-64\n-_\b6_\b5 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA FE_SPACE _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be;\n-66\n-67\n+35 void push( const T& t ) { BaseType :: push_back( t ); }\n+36\n+38 T topAndPop ()\n+39 {\n+40 assert( !this->empty() );\n+41 assert( this->_\bs_\bi_\bz_\be() <= length );\n+42 // This code is not slower than using the array structure directly.\n+43 // The compiler removes the temporary completely. I measured this.\n+44 // See the commit message for revision 7837 for more details.\n+45 T tmp = this->back();\n+46 this->pop_back();\n+47 return tmp;\n+48 }\n+49 };\n+50\n+51 typedef MyFiniteStack StackType;\n+52 typedef typename std::stack < StackType * > StackListType;\n+53\n+54 StackListType fullStackList_;\n+55 StackListType emptyStackList_;\n+56\n+57 //typedef typename StackListType::Iterator DListIteratorType;\n+58 StackType * stack_;\n+59\n+60 // current maxIndex\n+61 int maxIndex_;\n+62 public:\n+64 inline _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk();\n+65\n+67 inline _\b~_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk ();\n 68\n-69 // Memory Manipulation Functions\n-70 // -----------------------------\n+_\b7_\b0 inline void _\bc_\bh_\be_\bc_\bk_\bA_\bn_\bd_\bS_\be_\bt_\bM_\ba_\bx(T index) { if(index > maxIndex_) maxIndex_ =\n+index;}\n 71\n-72 template< class Data >\n-_\b7_\b3 inline Data *_\bm_\be_\bm_\bA_\bl_\bl_\bo_\bc ( size_t size )\n-74 {\n-75 return MEM_ALLOC( size, Data );\n-76 }\n+_\b7_\b3 inline void _\bs_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx(T index) { maxIndex_ = index; }\n+74\n+_\b7_\b6 inline int _\bg_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx() const { return maxIndex_; }\n 77\n-78 template< class Data >\n-_\b7_\b9 inline Data *_\bm_\be_\bm_\bC_\bA_\bl_\bl_\bo_\bc ( size_t size )\n-80 {\n-81 return MEM_CALLOC( size, Data );\n-82 }\n+_\b7_\b9 inline int _\bs_\bi_\bz_\be() const { return _\bg_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx(); }\n+80\n+82 inline T _\bg_\be_\bt_\bI_\bn_\bd_\be_\bx ();\n 83\n-84 template< class Data >\n-_\b8_\b5 inline Data *_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc ( Data *ptr, size_t oldSize, size_t newSize )\n-86 {\n-87 return MEM_REALLOC( ptr, oldSize, newSize, Data );\n-88 }\n+85 inline void _\bf_\br_\be_\be_\bI_\bn_\bd_\be_\bx(T index);\n+86\n+88 inline void _\bt_\be_\bs_\bt ();\n 89\n-90 template< class Data >\n-_\b9_\b1 inline void _\bm_\be_\bm_\bF_\br_\be_\be ( Data *ptr, size_t size )\n-92 {\n-93 return MEM_FREE( ptr, size, Data );\n-94 }\n-95\n-96\n-97\n-98 // GlobalSpace\n-99 // -----------\n-100\n-_\b1_\b0_\b1 class _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n-102 {\n-103 typedef _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be _\bT_\bh_\bi_\bs;\n-104\n-105 public:\n-_\b1_\b0_\b6 typedef _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-_\b1_\b0_\b7 typedef _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br _\bV_\be_\bc_\bt_\bo_\br;\n+90 // backup set to out stream\n+91 inline void _\bb_\ba_\bc_\bk_\bu_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::ostream & os );\n+92\n+93 // restore from in stream\n+94 inline void _\br_\be_\bs_\bt_\bo_\br_\be_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::istream & is );\n+95 private:\n+96 // no copy constructor allowed\n+97 _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk( const _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b> & s) : maxIndex_ (0) , stack_(0) {}\n+98\n+99 // no assignment operator allowed\n+100 IndexStack & operator = ( const IndexStack & s)\n+101 {\n+102 DUNE_THROW(Exception, \"IndexStack::operator = () not allowed!\");\n+103 return *this;\n+104 }\n+105\n+106 // clear fullStacks\n+107 void clearStack ();\n 108\n-109 private:\n-110 _\bM_\ba_\bt_\br_\bi_\bx identityMatrix_;\n-111 _\bV_\be_\bc_\bt_\bo_\br nullVector_;\n-112\n-113 _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be ()\n-114 {\n-115 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n-116 {\n-117 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n-118 identityMatrix_[ i ][ j ] = _\bR_\be_\ba_\bl( 0 );\n-119 identityMatrix_[ i ][ i ] = _\bR_\be_\ba_\bl( 1 );\n-120 nullVector_[ i ] = _\bR_\be_\ba_\bl( 0 );\n-121 }\n-122 }\n+109 }; // end class IndexStack\n+110\n+111 //****************************************************************\n+112 // Inline implementation\n+113 // ***************************************************************\n+114 template \n+_\b1_\b1_\b5 inline _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk()\n+116 : stack_ ( new StackType () ) , maxIndex_ (0) {}\n+117\n+118 template \n+_\b1_\b1_\b9 inline _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\b~_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk ()\n+120 {\n+121 if(stack_) delete stack_;\n+122 stack_ = 0;\n 123\n-124 static This &instance ()\n+124 while( !fullStackList_.empty() )\n 125 {\n-126 static This theInstance;\n-127 return theInstance;\n-128 }\n-129\n-130 public:\n-_\b1_\b3_\b1 static const _\bM_\ba_\bt_\br_\bi_\bx &_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bM_\ba_\bt_\br_\bi_\bx ()\n-132 {\n-133 return instance().identityMatrix_;\n-134 }\n-135\n-_\b1_\b3_\b6 static const _\bV_\be_\bc_\bt_\bo_\br &_\bn_\bu_\bl_\bl_\bV_\be_\bc_\bt_\bo_\br ()\n-137 {\n-138 return instance().nullVector_;\n-139 }\n-140 };\n-141\n-142\n-143\n-144 // NumSubEntities\n-145 // --------------\n-146\n-147 template< int dim, int codim >\n-_\b1_\b4_\b8 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs;\n-149\n-150 template< int dim >\n-_\b1_\b5_\b1 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, 0 >\n-152 {\n-_\b1_\b5_\b3 static const int value = 1;\n-154 };\n-155\n-156 template< int dim >\n-_\b1_\b5_\b7 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim >\n-158 {\n-_\b1_\b5_\b9 static const int value = dim+1;\n-160 };\n-161\n-162 template<>\n-_\b1_\b6_\b3 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 0, 0 >\n+126 StackType * st = fullStackList_.top();\n+127 if(st) delete st;\n+128 fullStackList_.pop();\n+129 }\n+130 while( !emptyStackList_.empty() )\n+131 {\n+132 StackType * st = emptyStackList_.top();\n+133 if(st) delete st;\n+134 emptyStackList_.pop();\n+135 }\n+136 }\n+137\n+138 template \n+_\b1_\b3_\b9 inline T _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bg_\be_\bt_\bI_\bn_\bd_\be_\bx ()\n+140 {\n+141 if((*stack_).empty())\n+142 {\n+143 if( fullStackList_.size() <= 0)\n+144 {\n+145 return maxIndex_++;\n+146 }\n+147 else\n+148 {\n+149 emptyStackList_.push( stack_ );\n+150 stack_ = fullStackList_.top();\n+151 fullStackList_.pop();\n+152 }\n+153 }\n+154 return (*stack_).topAndPop();\n+155 }\n+156\n+157 template \n+_\b1_\b5_\b8 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bf_\br_\be_\be_\bI_\bn_\bd_\be_\bx ( T index )\n+159 {\n+160 if((*stack_).full())\n+161 {\n+162 fullStackList_.push( stack_ );\n+163 if(emptyStackList_.size() <= 0)\n 164 {\n-_\b1_\b6_\b5 static const int value = 1;\n-166 };\n-167\n-168 template<>\n-_\b1_\b6_\b9 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 2, 1 >\n-170 {\n-_\b1_\b7_\b1 static const int value = 3;\n-172 };\n-173\n-174 template<>\n-_\b1_\b7_\b5 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 3, 1 >\n-176 {\n-_\b1_\b7_\b7 static const int value = 4;\n-178 };\n-179\n-180 template<>\n-_\b1_\b8_\b1 struct _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< 3, 2 >\n-182 {\n-_\b1_\b8_\b3 static const int value = 6;\n-184 };\n-185\n+165 stack_ = new StackType ();\n+166 }\n+167 else\n+168 {\n+169 stack_ = emptyStackList_.top();\n+170 emptyStackList_.pop();\n+171 }\n+172 }\n+173 (*stack_).push(index);\n+174 }\n+175\n+176 template \n+_\b1_\b7_\b7 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bt_\be_\bs_\bt ()\n+178 {\n+179 T vec[2*length];\n+180\n+181 for(int i=0; i<2*length; i++)\n+182 vec[i] = getIndex();\n+183\n+184 for(int i=0; i<2*length; i++)\n+185 freeIndex(vec[i]);\n 186\n-187\n-188 // CodimType\n-189 // ---------\n-190\n-191 template< int dim, int codim >\n-_\b1_\b9_\b2 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be;\n+187 for(int i=0; i<2*length; i++)\n+188 vec[i] = getIndex();\n+189\n+190 for(int i=0; i<2*length; i++)\n+191 printf(\" index [%d] = %d \\n\",i,vec[i]);\n+192 }\n 193\n-194 template< int dim >\n-_\b1_\b9_\b5 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< dim, 0 >\n+194 template \n+_\b1_\b9_\b5 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::ostream & os )\n 196 {\n-_\b1_\b9_\b7 static const int value = CENTER;\n-198 };\n-199\n-200 template< int dim >\n-_\b2_\b0_\b1 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< dim, dim >\n-202 {\n-_\b2_\b0_\b3 static const int value = VERTEX;\n-204 };\n-205\n-206 template<>\n-_\b2_\b0_\b7 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< 2, 1 >\n-208 {\n-_\b2_\b0_\b9 static const int value = EDGE;\n-210 };\n-211\n-212 template<>\n-_\b2_\b1_\b3 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< 3, 1 >\n-214 {\n-_\b2_\b1_\b5 static const int value = FACE;\n-216 };\n-217\n-218 template<>\n-_\b2_\b1_\b9 struct _\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be< 3, 2 >\n-220 {\n-_\b2_\b2_\b1 static const int value = EDGE;\n-222 };\n-223\n-224\n-225\n-226 // FillFlags\n-227 // ---------\n-228\n-229 template< int dim >\n-_\b2_\b3_\b0 struct _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-231 {\n-_\b2_\b3_\b2 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA FLAGS _\bF_\bl_\ba_\bg_\bs;\n-233\n-_\b2_\b3_\b4 static const _\bF_\bl_\ba_\bg_\bs _\bn_\bo_\bt_\bh_\bi_\bn_\bg = FILL_NOTHING;\n-235\n-_\b2_\b3_\b6 static const _\bF_\bl_\ba_\bg_\bs _\bc_\bo_\bo_\br_\bd_\bs = FILL_COORDS;\n-237\n-_\b2_\b3_\b8 static const _\bF_\bl_\ba_\bg_\bs _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br = FILL_NEIGH;\n-239\n-_\b2_\b4_\b0 static const _\bF_\bl_\ba_\bg_\bs _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn = (dim == 3 ? FILL_ORIENTATION :\n-FILL_NOTHING);\n-241\n-_\b2_\b4_\b2 static const _\bF_\bl_\ba_\bg_\bs _\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn = FILL_PROJECTION;\n-243\n-_\b2_\b4_\b4 static const _\bF_\bl_\ba_\bg_\bs _\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be = FILL_NOTHING;\n-245\n-_\b2_\b4_\b6 static const _\bF_\bl_\ba_\bg_\bs _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd = FILL_MACRO_WALLS;\n-247\n-_\b2_\b4_\b8 static const _\bF_\bl_\ba_\bg_\bs _\bn_\bo_\bn_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc = FILL_NON_PERIODIC;\n-249\n-_\b2_\b5_\b0 static const _\bF_\bl_\ba_\bg_\bs _\ba_\bl_\bl = _\bc_\bo_\bo_\br_\bd_\bs | _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br | _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd | _\bn_\bo_\bn_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc\n-251 | _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn | _\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn | _\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n-252\n-_\b2_\b5_\b3 static const _\bF_\bl_\ba_\bg_\bs _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs = _\ba_\bl_\bl & ~nonPeriodic & ~projection;\n-254\n-255#if DUNE_ALBERTA_CACHE_COORDINATES\n-256 static const _\bF_\bl_\ba_\bg_\bs _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd = _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs & ~coords;\n-257#else\n-_\b2_\b5_\b8 static const _\bF_\bl_\ba_\bg_\bs _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd = _\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs;\n-259#endif\n-260 };\n-261\n-262\n-263\n-264 // RefinementEdge\n-265 // --------------\n-266\n-267 template< int dim >\n-_\b2_\b6_\b8 struct _\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be\n-269 {\n-_\b2_\b7_\b0 static const int _\bv_\ba_\bl_\bu_\be = 0;\n-271 };\n-272\n-273 template<>\n-_\b2_\b7_\b4 struct _\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be< 2 >\n-275 {\n-_\b2_\b7_\b6 static const int _\bv_\ba_\bl_\bu_\be = 2;\n-277 };\n-278\n-279\n-280\n-281 // Dune2AlbertaNumbering\n-282 // ---------------------\n-283\n-284 template< int dim, int codim >\n-_\b2_\b8_\b5 struct _\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-286 {\n-_\b2_\b8_\b7 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n-288 {\n-289 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n-290 return i;\n-291 }\n-292 };\n-293\n-294 template<>\n-_\b2_\b9_\b5 struct _\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< 3, 2 >\n-296 {\n-_\b2_\b9_\b7 static const int numSubEntities = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-298\n-_\b2_\b9_\b9 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n-300 {\n-301 assert( (i >= 0) && (i < numSubEntities) );\n-302 static int dune2alberta[ numSubEntities ] = { 0, 3, 1, 2, 4, 5 };\n-303 return dune2alberta[ i ];\n-304 }\n-305 };\n-306\n-307\n-308\n-309 // Generic2AlbertaNumbering\n-310 // ------------------------\n-311\n-312 template< int dim, int codim >\n-_\b3_\b1_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-314 {\n-_\b3_\b1_\b5 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n-316 {\n-317 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n-318 return i;\n-319 }\n-320 };\n-321\n-322 template< int dim >\n-_\b3_\b2_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< dim, 1 >\n-324 {\n-_\b3_\b2_\b5 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n-326 {\n-327 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n-328 return dim - i;\n-329 }\n-330 };\n-331\n-332 template<>\n-_\b3_\b3_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< 1, 1 >\n-334 {\n-_\b3_\b3_\b5 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n-336 {\n-337 assert( (i >= 0) && (i < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n-338 return i;\n-339 }\n-340 };\n-341\n-342 template<>\n-_\b3_\b4_\b3 struct _\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg< 3, 2 >\n-344 {\n-_\b3_\b4_\b5 static const int numSubEntities = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-346\n-_\b3_\b4_\b7 static int _\ba_\bp_\bp_\bl_\by ( const int i )\n-348 {\n-349 assert( (i >= 0) && (i < numSubEntities) );\n-350 static int generic2alberta[ numSubEntities ] = { 0, 1, 3, 2, 4, 5 };\n-351 return generic2alberta[ i ];\n-352 }\n-353 };\n-354\n-355\n-356\n-357 // NumberingMap\n-358 // ------------\n-359\n-360 template< int dim, template< int, int > class Numbering =\n-Generic2AlbertaNumbering >\n-_\b3_\b6_\b1 class _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n-362 {\n-363 typedef _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\b,_\b _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b> _\bT_\bh_\bi_\bs;\n-364\n-365 template< int codim >\n-366 struct Initialize;\n-367\n-368 int *dune2alberta_[ dim+1 ];\n-369 int *alberta2dune_[ dim+1 ];\n-370 int numSubEntities_[ dim+1 ];\n-371\n-372 _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp ( const _\bT_\bh_\bi_\bs & );\n-373 _\bT_\bh_\bi_\bs &operator= ( const _\bT_\bh_\bi_\bs & );\n-374\n-375 public:\n-_\b3_\b7_\b6 _\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp ()\n-377 {\n-378 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n-{ Initialize< i >::apply( *this ); } );\n-379 }\n-380\n-_\b3_\b8_\b1 _\b~_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp ()\n-382 {\n-383 for( int codim = 0; codim <= dim; ++codim )\n-384 {\n-385 delete[]( dune2alberta_[ codim ] );\n-386 delete[]( alberta2dune_[ codim ] );\n-387 }\n-388 }\n-389\n-_\b3_\b9_\b0 int _\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba ( int codim, int i ) const\n-391 {\n-392 assert( (codim >= 0) && (codim <= dim) );\n-393 assert( (i >= 0) && (i < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs( codim )) );\n-394 return dune2alberta_[ codim ][ i ];\n-395 }\n-396\n-_\b3_\b9_\b7 int _\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be ( int codim, int i ) const\n-398 {\n-399 assert( (codim >= 0) && (codim <= dim) );\n-400 assert( (i >= 0) && (i < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs( codim )) );\n-401 return alberta2dune_[ codim ][ i ];\n-402 }\n-403\n-_\b4_\b0_\b4 int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ( int codim ) const\n-405 {\n-406 assert( (codim >= 0) && (codim <= dim) );\n-407 return numSubEntities_[ codim ];\n-408 }\n-409 };\n-410\n-411\n-412\n-413 // NumberingMap::Initialize\n-414 // ------------------------\n-415\n-416 template< int dim, template< int, int > class Numbering >\n-417 template< int codim >\n-418 struct NumberingMap< dim, Numbering >::Initialize\n-419 {\n-420 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = NumSubEntities< dim, codim >::value;\n-421\n-422 static void apply ( NumberingMap< dim, Numbering > &map )\n-423 {\n-424 map.numSubEntities_[ codim ] = _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs;\n-425 map.dune2alberta_[ codim ] = new int[ _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ];\n-426 map.alberta2dune_[ codim ] = new int[ _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ];\n-427\n-428 for( int i = 0; i < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs; ++i )\n-429 {\n-430 const int j = Numbering< dim, codim >::apply( i );\n-431 map.dune2alberta_[ codim ][ i ] = j;\n-432 map.alberta2dune_[ codim ][ j ] = i;\n-433 }\n-434 }\n-435 };\n-436\n-437\n-438\n-439 // MapVertices\n-440 // -----------\n-441\n-442 template< int dim, int codim >\n-_\b4_\b4_\b3 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs;\n-444\n-445 template< int dim >\n-_\b4_\b4_\b6 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< dim, 0 >\n-447 {\n-_\b4_\b4_\b8 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n-449 {\n-450 assert( subEntity == 0 );\n-451 assert( (vertex >= 0) && (vertex <= _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be) );\n-452 return vertex;\n-453 }\n-454 };\n-455\n-456 template<>\n-_\b4_\b5_\b7 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< 2, 1 >\n-458 {\n-_\b4_\b5_\b9 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n-460 {\n-461 assert( (subEntity >= 0) && (subEntity < 3) );\n-462 assert( (vertex >= 0) && (vertex < 2) );\n-463 //static const int map[ 3 ][ 2 ] = { {1,2}, {2,0}, {0,1} };\n-464 static const int map[ 3 ][ 2 ] = { {1,2}, {0,2}, {0,1} };\n-465 return map[ subEntity ][ vertex ];\n-466 }\n-467 };\n-468\n-469 template<>\n-_\b4_\b7_\b0 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< 3, 1 >\n-471 {\n-_\b4_\b7_\b2 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n-473 {\n-474 assert( (subEntity >= 0) && (subEntity < 4) );\n-475 assert( (vertex >= 0) && (vertex < 3) );\n-476 //static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };\n-477 static const int map[ 4 ][ 3 ] = { {1,2,3}, {0,2,3}, {0,1,3}, {0,1,2} };\n-478 return map[ subEntity ][ vertex ];\n-479 }\n-480 };\n-481\n-482 template<>\n-_\b4_\b8_\b3 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< 3, 2 >\n-484 {\n-_\b4_\b8_\b5 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n-486 {\n-487 assert( (subEntity >= 0) && (subEntity < 6) );\n-488 assert( (vertex >= 0) && (vertex < 2) );\n-489 static const int map[ 6 ][ 2 ] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3}\n-};\n-490 return map[ subEntity ][ vertex ];\n-491 }\n-492 };\n-493\n-494 template< int dim >\n-_\b4_\b9_\b5 struct _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs< dim, dim >\n-496 {\n-_\b4_\b9_\b7 static int _\ba_\bp_\bp_\bl_\by ( int subEntity, int vertex )\n-498 {\n-499 assert( (subEntity >= 0) && (subEntity < _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be)\n-);\n-500 assert( vertex == 0 );\n-501 return subEntity;\n-502 }\n-503 };\n-504\n-505\n-506\n-507 // Twist\n-508 // -----\n-509\n-510 // ******************************************************************\n-511 // Meaning of the twist (same as in ALU)\n-512 // -------------------------------------\n-513 //\n-514 // Consider a fixed ordering of the vertices v_1, ... v_n of a face\n-515 // (here, we assume their indices to be increasing). Denote by k the\n-516 // local number of a vertex v within the element and by t the twist.\n-517 // Then, v = v_j, where j is computed by the following formula:\n-518 //\n-519 // / (2n + 1 - k + t) % n, if t < 0\n-520 // j = <\n-521 // \\ (k + t) % n, if t >= 0\n-522 //\n-523 // Note: We use the order of the 0-th vertex dof to assign the twist.\n-524 // This is ok for two reasons:\n-525 // - ALBERTA preserves the relative order of the dofs during\n-526 // dof compression.\n-527 // - ALBERTA enforces the first vertex dof admin to be periodic.\n-528 // ******************************************************************\n-529\n-530 template< int dim, int subdim >\n-_\b5_\b3_\b1 struct _\bT_\bw_\bi_\bs_\bt\n-532 {\n-_\b5_\b3_\b3 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim-subdim >::value;\n-534\n-_\b5_\b3_\b5 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n-_\b5_\b3_\b6 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 0;\n-537\n-_\b5_\b3_\b8 static int _\bt_\bw_\bi_\bs_\bt ( [[maybe_unused]] const _\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n-539 [[maybe_unused]] int subEntity )\n-540 {\n-541 assert( (subEntity >= 0) && (subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs) );\n-542 return 0;\n-543 }\n-544 };\n-545\n-546 template< int dim >\n-_\b5_\b4_\b7 struct _\bT_\bw_\bi_\bs_\bt< dim, 1 >\n-548 {\n-_\b5_\b4_\b9 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim-1 >::value;\n-550\n-_\b5_\b5_\b1 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n-_\b5_\b5_\b2 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 1;\n-553\n-_\b5_\b5_\b4 static int _\bt_\bw_\bi_\bs_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity )\n-555 {\n-556 assert( (subEntity >= 0) && (subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs) );\n-557 const int numVertices = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-558 int dof[ numVertices ];\n-559 for( int i = 0; i < numVertices; ++i )\n-560 {\n-561 const int j = _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( subEntity, i );\n-562 dof[ i ] = element->dof[ j ][ 0 ];\n-563 }\n-564 return (dof[ 0 ] < dof[ 1 ] ? 0 : 1);\n-565 }\n-566 };\n-567\n-568\n-569 template<>\n-_\b5_\b7_\b0 struct _\bT_\bw_\bi_\bs_\bt< 1, 1 >\n-571 {\n-_\b5_\b7_\b2 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n-_\b5_\b7_\b3 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 0;\n-574\n-_\b5_\b7_\b5 static int _\bt_\bw_\bi_\bs_\bt ( [[maybe_unused]] const _\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n-576 [[maybe_unused]] int subEntity )\n-577 {\n-578 assert( subEntity == 0 );\n-579 return 0;\n-580 }\n-581 };\n-582\n-583\n-584 template< int dim >\n-_\b5_\b8_\b5 struct _\bT_\bw_\bi_\bs_\bt< dim, 2 >\n-586 {\n-_\b5_\b8_\b7 static const int _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dim, dim-2 >::value;\n-588\n-_\b5_\b8_\b9 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = -3;\n-_\b5_\b9_\b0 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 2;\n-591\n-_\b5_\b9_\b2 static int _\bt_\bw_\bi_\bs_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int subEntity )\n-593 {\n-594 assert( (subEntity >= 0) && (subEntity < _\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs) );\n-595 const int numVertices = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-596 int dof[ numVertices ];\n-597 for( int i = 0; i < numVertices; ++i )\n-598 {\n-599 const int j = _\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( subEntity, i );\n-600 dof[ i ] = element->dof[ j ][ 0 ];\n-601 }\n-602\n-603 const int _\bt_\bw_\bi_\bs_\bt[ 8 ] = { -2, 1, 666, -1, 2, 666, -3, 0 };\n-604 const int k = int( dof[ 0 ] < dof[ 1 ] )\n-605 | (int( dof[ 0 ] < dof[ 2 ] ) << 1)\n-606 | (int( dof[ 1 ] < dof[ 2 ] ) << 2);\n-607 assert( _\bt_\bw_\bi_\bs_\bt[ k ] != 666 );\n-608 return _\bt_\bw_\bi_\bs_\bt[ k ];\n-609 }\n-610 };\n-611\n-612\n-613 template<>\n-_\b6_\b1_\b4 struct _\bT_\bw_\bi_\bs_\bt< 2, 2 >\n-615 {\n-_\b6_\b1_\b6 static const int _\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt = 0;\n-_\b6_\b1_\b7 static const int _\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt = 0;\n-618\n-_\b6_\b1_\b9 static int _\bt_\bw_\bi_\bs_\bt ( [[maybe_unused]] const _\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n-620 [[maybe_unused]] int subEntity )\n-621 {\n-622 assert( subEntity == 0 );\n-623 return 0;\n-624 }\n-625 };\n-626\n-627\n-628\n-629 template< int dim >\n-_\b6_\b3_\b0 inline int _\ba_\bp_\bp_\bl_\by_\bT_\bw_\bi_\bs_\bt ( int twist, int i )\n-631 {\n-632 const int numCorners = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-633 return (twist < 0 ? (2*numCorners + 1 - i + twist) : i + twist) %\n-numCorners;\n-634 }\n-635\n-636 template< int dim >\n-_\b6_\b3_\b7 inline int _\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt ( int twist, int i )\n-638 {\n-639 const int numCorners = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-640 return (twist < 0 ? (2*numCorners + 1 - i + twist) : numCorners + i -\n-twist) % numCorners;\n-641 }\n-642\n-643 }\n-644\n-645}\n-646\n-647#endif // #if HAVE_ALBERTA\n-648\n-649#endif // #ifndef DUNE_ALBERTA_MISC_HH\n-_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n-_\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD\n-#define DIM_OF_WORLD\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:23\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+197 // holes are not stored at the moment\n+198 os.write( ((const char *) &maxIndex_ ), sizeof(int) ) ;\n+199 return ;\n+200 }\n+201\n+202 template \n+_\b2_\b0_\b3 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::istream & is )\n+204 {\n+205 is.read ( ((char *) &maxIndex_), sizeof(int) );\n+206 clearStack ();\n+207\n+208 return ;\n+209 }\n+210\n+211 template \n+212 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bc_\bl_\be_\ba_\br_\bS_\bt_\ba_\bc_\bk ()\n+213 {\n+214 if(stack_)\n+215 {\n+216 delete stack_;\n+217 stack_ = new StackType();\n+218 assert(stack_);\n+219 }\n+220\n+221 while( !fullStackList_.empty() )\n+222 {\n+223 StackType * st = fullStackList_.top();\n+224 if(st) delete st;\n+225 fullStackList_.pop();\n+226 }\n+227 return;\n+228 }\n+229\n+230} // end namespace Dune\n+231#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt\n-int applyInverseTwist(int twist, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:637\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n-ALBERTA MESH Mesh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bT_\bw_\bi_\bs_\bt\n-int applyTwist(int twist, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:630\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bF_\br_\be_\be\n-void memFree(Data *ptr, size_t size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx\n-ALBERTA REAL_DD GlobalMatrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-ALBERTA AFF_TRAFO AffineTransformation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_B LocalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ALBERTA EL Element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-ALBERTA BNDRY_TYPE BoundaryId\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-static const int InteriorBoundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bR_\be_\bf_\bi_\bn_\be_\bd\n-static const int meshRefined\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bA_\bl_\bl_\bo_\bc\n-Data * memAlloc(size_t size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc\n-Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-static const int DirichletBoundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-ALBERTA FE_SPACE DofSpace\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bC_\bA_\bl_\bl_\bo_\bc\n-Data * memCAlloc(size_t size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-U_CHAR ElementType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bs_\bh_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd\n-static const int meshCoarsened\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bE_\br_\br_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bI_\bO_\bE_\br_\br_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bM_\ba_\bt_\br_\bi_\bx\n-static const Matrix & identityMatrix()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bn_\bu_\bl_\bl_\bV_\be_\bc_\bt_\bo_\br\n-static const Vector & nullVector()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-GlobalMatrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br\n-GlobalVector Vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\bT_\by_\bp_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:192\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n-static const Flags nothing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bn_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc\n-static const Flags nonPeriodic\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-static const Flags boundaryId\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-static const Flags elementType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:244\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n-ALBERTA FLAGS Flags\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-static const Flags projection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs\n-static const Flags coords\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-static const Flags orientation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd\n-static const Flags standard\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:258\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-static const Flags neighbor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\ba_\bl_\bl\n-static const Flags all\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bW_\bi_\bt_\bh_\bC_\bo_\bo_\br_\bd_\bs\n-static const Flags standardWithCoords\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:269\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bE_\bd_\bg_\be_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-static const int value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:270\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:286\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(const int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(const int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:299\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(const int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:315\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(const int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:325\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(const int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(const int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:347\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:362\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be\n-int alberta2dune(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:397\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-int numSubEntities(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:404\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba\n-int dune2alberta(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\b~_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n-~NumberingMap()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:381\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp\n-NumberingMap()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:376\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:443\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(int subEntity, int vertex)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:448\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(int subEntity, int vertex)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:459\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(int subEntity, int vertex)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:472\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b3_\b,_\b _\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(int subEntity, int vertex)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:485\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static int apply(int subEntity, int vertex)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:497\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:532\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bm_\ba_\bx_\bT_\bw_\bi_\bs_\bt\n-static const int maxTwist\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:536\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bm_\bi_\bn_\bT_\bw_\bi_\bs_\bt\n-static const int minTwist\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:535\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-static int twist(const Element *element, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:538\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-static const int numSubEntities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:533\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b1_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-static int twist(const Element *element, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:554\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b1_\b,_\b _\b1_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-static int twist(const Element *element, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:575\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\b2_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-static int twist(const Element *element, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:592\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b<_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n-static int twist(const Element *element, int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:619\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+void restoreIndexSet(std::istream &is)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:203\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bA_\bn_\bd_\bS_\be_\bt_\bM_\ba_\bx\n+void checkAndSetMax(T index)\n+set index as maxIndex if index is bigger than maxIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+void backupIndexSet(std::ostream &os)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\b~_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n+~IndexStack()\n+Destructor, deleting all stacks.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bI_\bn_\bd_\be_\bx\n+T getIndex()\n+restore index from stack or create new index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n+IndexStack()\n+Constructor, create new IndexStack.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bs_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx\n+void setMaxIndex(T index)\n+set index as maxIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bs_\bi_\bz_\be\n+int size() const\n+return maxIndex which is also the\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bt_\be_\bs_\bt\n+void test()\n+test stack functionality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bf_\br_\be_\be_\bI_\bn_\bd_\be_\bx\n+void freeIndex(T index)\n+store index on stack\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx\n+int getMaxIndex() const\n+return maxIndex which is also the\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:76\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00704.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00704.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: agrid.hh File Reference\n+dune-grid: macrodata.hh File Reference\n \n \n \n \n \n \n \n@@ -71,95 +71,47 @@\n \n
    \n \n
    \n \n-
    agrid.hh File Reference
    \n+Namespaces
    \n+
    macrodata.hh File Reference
    \n \n
    \n \n-

    provides the AlbertaGrid class \n+

    provides a wrapper for ALBERTA's macro_data structure \n More...

    \n-
    #include <cassert>
    \n-#include <cstddef>
    \n-#include <algorithm>
    \n-#include <iostream>
    \n-#include <fstream>
    \n-#include <memory>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n+
    #include <dune/common/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/common/stdstreams.hh>
    \n-#include <dune/common/parallel/communication.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n-#include <dune/grid/common/gridfactory.hh>
    \n-#include <dune/grid/common/adaptcallback.hh>
    \n-#include <dune/grid/common/sizecache.hh>
    \n-#include "albertaheader.hh"
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/capabilities.hh>
    \n-#include <dune/grid/albertagrid/backuprestore.hh>
    \n-#include <dune/grid/albertagrid/coordcache.hh>
    \n-#include <dune/grid/albertagrid/gridfamily.hh>
    \n-#include <dune/grid/albertagrid/level.hh>
    \n-#include <dune/grid/albertagrid/intersection.hh>
    \n-#include <dune/grid/albertagrid/intersectioniterator.hh>
    \n-#include <dune/grid/albertagrid/datahandle.hh>
    \n-#include <dune/grid/albertagrid/entityseed.hh>
    \n-#include "indexsets.hh"
    \n-#include "geometry.hh"
    \n-#include "entity.hh"
    \n-#include "hierarchiciterator.hh"
    \n-#include "treeiterator.hh"
    \n-#include "leveliterator.hh"
    \n-#include "leafiterator.hh"
    \n-#include "albertagrid.cc"
    \n-#include <dune/grid/albertagrid/undefine-3.0.hh>
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/algebra.hh>
    \n+#include <dune/grid/albertagrid/albertaheader.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::AlbertaGrid< dim, dimworld >
     [ provides Dune::Grid ] More...
    class  Dune::Alberta::MacroData< dim >
     
    struct  Dune::Alberta::MacroData< dim >::Library< int >
     
    \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n+\n+\n

    \n-Macros

    #define _ALBERTA_H_
     
    namespace  Dune::Alberta
     
    \n

    Detailed Description

    \n-

    provides the AlbertaGrid class

    \n-
    Author
    Robert Kloefkorn and Martin Nolte
    \n-

    Macro Definition Documentation

    \n-\n-

    ◆ _ALBERTA_H_

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define _ALBERTA_H_
    \n-
    \n-\n-
    \n-
    \n-
    \n+

    provides a wrapper for ALBERTA's macro_data structure

    \n+
    Author
    Martin Nolte
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,66 +1,33 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n-agrid.hh File Reference\n-provides the AlbertaGrid class _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+macrodata.hh File Reference\n+provides a wrapper for ALBERTA's macro_data structure _\bM_\bo_\br_\be_\b._\b._\b.\n #include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\ba_\bd_\ba_\bp_\bt_\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bs_\bi_\bz_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-#include \"_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\"\n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bb_\ba_\bc_\bk_\bu_\bp_\br_\be_\bs_\bt_\bo_\br_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bm_\bi_\bl_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bl_\be_\bv_\be_\bl_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh>\n-#include \"_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\"\n-#include \"_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\"\n-#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-#include \"_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-#include \"_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-#include \"_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-#include \"_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b._\bc_\bc\"\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bu_\bn_\bd_\be_\bf_\bi_\bn_\be_\b-_\b3_\b._\b0_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n-\u00a0 [ p\bpr\bro\bov\bvi\bid\bde\bes\bs _\bD\bD_\bu\bu_\bn\bn_\be\be_\b:\b:_\b:\b:_\bG\bG_\br\br_\bi\bi_\bd\bd ] _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bi_\bn_\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 \u00a0 Include standard header files.\n \u00a0\n-M\bMa\bac\bcr\bro\bos\bs\n-#define\u00a0 _\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bH_\b_\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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-provides the AlbertaGrid class\n+provides a wrapper for ALBERTA's macro_data structure\n Author\n- Robert Kloefkorn and Martin Nolte\n-*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_H\bH_\b_ *\b**\b**\b**\b**\b*\n-#define _ALBERTA_H_\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00704_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00704_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: agrid.hh Source File\n+dune-grid: macrodata.hh Source File\n \n \n \n \n \n \n \n@@ -74,849 +74,518 @@\n \n \n \n
    \n-
    agrid.hh
    \n+
    macrodata.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTAGRID_IMP_HH
    \n-
    6#define DUNE_ALBERTAGRID_IMP_HH
    \n+
    5#ifndef DUNE_ALBERTA_MACRODATA_HH
    \n+
    6#define DUNE_ALBERTA_MACRODATA_HH
    \n
    7
    \n-
    13#if HAVE_ALBERTA || DOXYGEN
    \n-
    14
    \n-
    15#include <cassert>
    \n-
    16#include <cstddef>
    \n-
    17
    \n-
    18#include <algorithm>
    \n-
    19#include <iostream>
    \n-
    20#include <fstream>
    \n-
    21#include <memory>
    \n-
    22#include <vector>
    \n-
    23
    \n-
    24// Dune includes
    \n-
    25#include <dune/common/fvector.hh>
    \n-
    26#include <dune/common/fmatrix.hh>
    \n-
    27#include <dune/common/stdstreams.hh>
    \n-
    28#include <dune/common/parallel/communication.hh>
    \n-
    29
    \n-\n-\n-\n-\n+
    13#include <dune/common/fvector.hh>
    \n+
    14#include <dune/common/fmatrix.hh>
    \n+
    15
    \n+\n+\n+\n+
    19
    \n+
    20#if HAVE_ALBERTA
    \n+
    21
    \n+
    22namespace Dune
    \n+
    23{
    \n+
    24
    \n+
    25 namespace Alberta
    \n+
    26 {
    \n+
    27
    \n+
    28 template< int dim >
    \n+
    \n+\n+
    30 {
    \n+
    31 typedef MacroData< dim > This;
    \n+
    32
    \n+
    33 typedef ALBERTA MACRO_DATA Data;
    \n
    34
    \n-
    35//- Local includes
    \n-
    36// some cpp defines and include of alberta.h
    \n-
    37#include "albertaheader.hh"
    \n+
    35 static const int dimension = dim;
    \n+
    36 static const int numVertices = NumSubEntities< dimension, dimension >::value;
    \n+
    37 static const int numEdges = NumSubEntities< dimension, dimension-1 >::value;
    \n
    38
    \n-\n-\n-\n-
    42
    \n-\n-\n-\n-\n-\n-\n-\n-
    50
    \n-
    51#include "indexsets.hh"
    \n-
    52#include "geometry.hh"
    \n-
    53#include "entity.hh"
    \n-
    54#include "hierarchiciterator.hh"
    \n-
    55#include "treeiterator.hh"
    \n-
    56#include "leveliterator.hh"
    \n-
    57#include "leafiterator.hh"
    \n-
    58
    \n-
    \n-
    59namespace Dune
    \n-
    60{
    \n-
    61
    \n-
    62 // External Forward Declarations
    \n-
    63 // -----------------------------
    \n-
    64
    \n-
    65 template< class Grid >
    \n-
    66 struct DGFGridFactory;
    \n+
    39 static const int initialSize = 4096;
    \n+
    40
    \n+
    41 public:
    \n+
    42 template< int >
    \n+
    43 struct Library;
    \n+
    44
    \n+
    45 template< int > friend struct InstantiateMacroDataLibrary;
    \n+
    46
    \n+
    47 public:
    \n+
    48 typedef int ElementId[ numVertices ];
    \n+
    49
    \n+
    50 static const int supportPeriodicity = 1;
    \n+
    51
    \n+
    \n+\n+
    53 : data_( NULL ),
    \n+
    54 vertexCount_( -1 ),
    \n+
    55 elementCount_( -1 )
    \n+
    56 {}
    \n+
    \n+
    57
    \n+
    \n+
    58 operator Data * () const
    \n+
    59 {
    \n+
    60 return data_;
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    \n+
    63 int vertexCount () const
    \n+
    64 {
    \n+
    65 return (vertexCount_ < 0 ? data_->n_total_vertices : vertexCount_);
    \n+
    66 }
    \n+
    \n
    67
    \n-
    68
    \n-
    69
    \n-
    70 // AlbertaGrid
    \n-
    71 // -----------
    \n+
    \n+
    68 int elementCount () const
    \n+
    69 {
    \n+
    70 return (elementCount_ < 0 ? data_->n_macro_elements : elementCount_);
    \n+
    71 }
    \n+
    \n
    72
    \n-
    105 template< int dim, int dimworld = Alberta::dimWorld >
    \n-
    \n-\n-\n-
    108 < dim, dimworld, Alberta::Real, AlbertaGridFamily< dim, dimworld > >
    \n-
    109 {
    \n-\n-\n-\n-
    113 Base;
    \n-
    114
    \n-
    115 template< int, int, class > friend class AlbertaGridEntity;
    \n-
    116 template< class > friend class AlbertaLevelGridView;
    \n-
    117 template< class > friend class AlbertaLeafGridView;
    \n-
    118 template< int, class, bool > friend class AlbertaGridTreeIterator;
    \n-
    119 template< class > friend class AlbertaGridHierarchicIterator;
    \n-
    120
    \n-
    121 friend class GridFactory< This >;
    \n-
    122 friend struct DGFGridFactory< This >;
    \n-
    123
    \n-
    124 friend class AlbertaGridIntersectionBase< const This >;
    \n-
    125 friend class AlbertaGridLeafIntersection< const This >;
    \n-
    126
    \n-
    127 friend class AlbertaMarkerVector< dim, dimworld >;
    \n-
    128#if (__GNUC__ < 4) && !(defined __ICC)
    \n-
    129 // add additional friend decls for gcc 3.4
    \n-
    130 friend struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities<true>;
    \n-
    131 friend struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities<false>;
    \n-
    132#endif
    \n-
    133 friend class AlbertaGridIndexSet< dim, dimworld >;
    \n-\n-
    135
    \n-
    136 template< class, class >
    \n-\n-
    138
    \n-
    139 public:
    \n-\n-
    142
    \n-\n-
    144
    \n-\n-\n-
    147
    \n-
    148 // the Traits
    \n-\n-
    150
    \n-\n-\n-
    155
    \n-\n-
    158
    \n-\n-\n-
    163
    \n-\n-
    166
    \n-
    170 [[deprecated("Use Communication instead!")]]
    \n-\n-
    172
    \n-
    173 private:
    \n-
    175 typedef typename Traits::template Codim<0>::LeafIterator LeafIterator;
    \n-
    176
    \n-
    178 typedef AlbertaGridIdSet<dim,dimworld> IdSetImp;
    \n+
    \n+
    73 ElementId &element ( int i ) const;
    \n+
    \n+
    74 GlobalVector &vertex ( int i ) const;
    \n+
    \n+
    75 int &neighbor ( int element, int i ) const;
    \n+
    \n+
    76 BoundaryId &boundaryId ( int element, int i ) const;
    \n+
    77
    \n+
    \n+
    82 void create ();
    \n+
    83
    \n+
    \n+
    92 void finalize ();
    \n+
    93
    \n+
    \n+\n+
    103
    \n+
    \n+
    112 void setOrientation ( const Real orientation );
    \n+
    113
    \n+
    \n+
    124 bool checkNeighbors () const;
    \n+
    125
    \n+
    \n+
    127 void release ()
    \n+
    128 {
    \n+
    129 if( data_ != NULL )
    \n+
    130 {
    \n+
    131 ALBERTA free_macro_data( data_ );
    \n+
    132 data_ = NULL;
    \n+
    133 }
    \n+
    134 vertexCount_ = elementCount_ = -1;
    \n+
    135 }
    \n+
    \n+
    136
    \n+
    \n+
    142 int insertElement ( const ElementId &id );
    \n+
    143
    \n+
    \n+
    149 int insertVertex ( const GlobalVector &coords )
    \n+
    150 {
    \n+
    151 assert( vertexCount_ >= 0 );
    \n+
    152 if( vertexCount_ >= data_->n_total_vertices )
    \n+
    153 resizeVertices( 2*vertexCount_ );
    \n+
    154 copy( coords, vertex( vertexCount_ ) );
    \n+
    155 return vertexCount_++;
    \n+
    156 }
    \n+
    \n+
    157
    \n+
    \n+
    163 int insertVertex ( const FieldVector< Real, dimWorld > &coords )
    \n+
    164 {
    \n+
    165 assert( vertexCount_ >= 0 );
    \n+
    166 if( vertexCount_ >= data_->n_total_vertices )
    \n+
    167 resizeVertices( 2*vertexCount_ );
    \n+
    168 copy( coords, vertex( vertexCount_ ) );
    \n+
    169 return vertexCount_++;
    \n+
    170 }
    \n+
    \n+
    171
    \n+
    \n+
    172 void insertWallTrafo ( const GlobalMatrix &m, const GlobalVector &t );
    \n+
    \n+
    173 void insertWallTrafo ( const FieldMatrix< Real, dimWorld, dimWorld > &matrix,
    \n+
    174 const FieldVector< Real, dimWorld > &shift );
    \n+
    175
    \n+
    \n+
    176 void checkCycles ();
    \n+
    177
    \n+
    \n+
    178 void read ( const std::string &filename, bool binary = false );
    \n
    179
    \n-
    181 struct AdaptationState
    \n-
    182 {
    \n-
    183 enum Phase { ComputationPhase, PreAdaptationPhase, PostAdaptationPhase };
    \n-
    184
    \n-
    185 private:
    \n-
    186 Phase phase_;
    \n-
    187 int coarsenMarked_;
    \n-
    188 int refineMarked_;
    \n-
    189
    \n-
    190 public:
    \n-
    191 AdaptationState ()
    \n-
    192 : phase_( ComputationPhase ),
    \n-
    193 coarsenMarked_( 0 ),
    \n-
    194 refineMarked_( 0 )
    \n-
    195 {}
    \n-
    196
    \n-
    197 void mark ( int count )
    \n-
    198 {
    \n-
    199 if( count < 0 )
    \n-
    200 ++coarsenMarked_;
    \n-
    201 if( count > 0 )
    \n-
    202 refineMarked_ += (2 << count);
    \n-
    203 }
    \n-
    204
    \n-
    205 void unmark ( int count )
    \n-
    206 {
    \n-
    207 if( count < 0 )
    \n-
    208 --coarsenMarked_;
    \n-
    209 if( count > 0 )
    \n-
    210 refineMarked_ -= (2 << count);
    \n-
    211 }
    \n+
    \n+
    180 bool write ( const std::string &filename, bool binary = false ) const
    \n+
    181 {
    \n+
    182 if( binary )
    \n+
    183 return ALBERTA write_macro_data_xdr( data_, filename.c_str() );
    \n+
    184 else
    \n+
    185 return ALBERTA write_macro_data( data_, filename.c_str() );
    \n+
    186 }
    \n+
    \n+
    187
    \n+
    188 private:
    \n+
    189 template< class Vector >
    \n+
    190 void copy ( const Vector &x, GlobalVector &y )
    \n+
    191 {
    \n+
    192 for( int i = 0; i < dimWorld; ++i )
    \n+
    193 y[ i ] = x[ i ];
    \n+
    194 }
    \n+
    195
    \n+
    196 void resizeElements ( const int newSize );
    \n+
    197
    \n+
    198 void resizeVertices ( const int newSize )
    \n+
    199 {
    \n+
    200 const int oldSize = data_->n_total_vertices;
    \n+
    201 data_->n_total_vertices = newSize;
    \n+
    202 data_->coords = memReAlloc< GlobalVector >( data_->coords, oldSize, newSize );
    \n+
    203 assert( (data_->coords != NULL) || (newSize == 0) );
    \n+
    204 }
    \n+
    205
    \n+
    206 private:
    \n+
    207 Data *data_;
    \n+
    208 int vertexCount_;
    \n+
    209 int elementCount_;
    \n+
    210 };
    \n+
    211
    \n
    212
    \n-
    213 bool coarsen () const
    \n-
    214 {
    \n-
    215 return (coarsenMarked_ > 0);
    \n-
    216 }
    \n-
    217
    \n-
    218 int refineMarked () const
    \n-
    219 {
    \n-
    220 return refineMarked_;
    \n-
    221 }
    \n+
    213
    \n+
    214 // MacroData::Library
    \n+
    215 // ------------------
    \n+
    216
    \n+
    217 template< int dim >
    \n+
    218 template< int >
    \n+
    \n+
    219 struct MacroData< dim >::Library
    \n+
    220 {
    \n+\n
    222
    \n-
    223 void preAdapt ()
    \n-
    224 {
    \n-
    225 if( phase_ != ComputationPhase )
    \n-
    226 error( "preAdapt may only be called in computation phase." );
    \n-
    227 phase_ = PreAdaptationPhase;
    \n-
    228 }
    \n-
    229
    \n-
    230 void adapt ()
    \n-
    231 {
    \n-
    232 if( phase_ != PreAdaptationPhase )
    \n-
    233 error( "adapt may only be called in preadapdation phase." );
    \n-
    234 phase_ = PostAdaptationPhase;
    \n-
    235 }
    \n-
    236
    \n-
    237 void postAdapt ()
    \n-
    238 {
    \n-
    239 if( phase_ != PostAdaptationPhase )
    \n-
    240 error( "postAdapt may only be called in postadaptation phase." );
    \n-
    241 phase_ = ComputationPhase;
    \n-
    242
    \n-
    243 coarsenMarked_ = 0;
    \n-
    244 refineMarked_ = 0;
    \n-
    245 }
    \n-
    246
    \n-
    247 private:
    \n-
    248 void error ( const std::string &message )
    \n-
    249 {
    \n-\n-
    251 }
    \n-
    252 };
    \n+
    223 static bool checkNeighbors ( const MacroData &macroData );
    \n+
    224 static void markLongestEdge ( MacroData &macroData );
    \n+
    225 static void setOrientation ( [[maybe_unused]] MacroData &macroData,
    \n+
    226 [[maybe_unused]] const Real orientation );
    \n+
    227
    \n+
    228 private:
    \n+
    229 static Real edgeLength ( const MacroData &macroData, const ElementId &e, int edge );
    \n+
    230 static int longestEdge ( const MacroData &macroData, const ElementId &e );
    \n+
    231
    \n+
    232 template< class Type >
    \n+
    233 static void rotate ( Type *array, int i, int shift );
    \n+
    234
    \n+
    235 static void rotate ( MacroData &macroData, int i, int shift );
    \n+
    236 static void swap ( MacroData &macroData, int el, int v1, int v2 );
    \n+
    237 };
    \n+
    \n+
    238
    \n+
    239
    \n+
    240
    \n+
    241 // Implementation of MacroData
    \n+
    242 // ---------------------------
    \n+
    243
    \n+
    244 template< int dim >
    \n+
    245 inline typename MacroData< dim >::ElementId &
    \n+
    \n+\n+
    247 {
    \n+
    248 assert( (i >= 0) && (i < data_->n_macro_elements) );
    \n+
    249 const int offset = i * numVertices;
    \n+
    250 return *reinterpret_cast< ElementId * >( data_->mel_vertices + offset );
    \n+
    251 }
    \n+
    \n+
    252
    \n
    253
    \n-
    254 template< class DataHandler >
    \n-
    255 struct AdaptationCallback;
    \n-
    256
    \n-
    257 // max number of allowed levels is 64
    \n-
    258 static const int MAXL = 64;
    \n-
    259
    \n-
    260 typedef Alberta::ElementInfo< dimension > ElementInfo;
    \n-
    261 typedef Alberta::MeshPointer< dimension > MeshPointer;
    \n-\n-
    263 typedef AlbertaGridLevelProvider< dimension > LevelProvider;
    \n-
    264
    \n-
    265 public:
    \n-
    266 AlbertaGrid ( const This & ) = delete;
    \n-
    267 This &operator= ( const This & ) = delete;
    \n-
    268
    \n-
    270 AlbertaGrid ();
    \n-
    271
    \n-\n-
    278 const std::shared_ptr< DuneBoundaryProjection< dimensionworld > > &projection
    \n-
    279 = std::shared_ptr< DuneBoundaryProjection< dimensionworld > >() );
    \n-
    280
    \n-
    281 template< class Proj, class Impl >
    \n-\n-
    283 const Alberta::ProjectionFactoryInterface< Proj, Impl > &projectionFactory );
    \n-
    284
    \n-
    289 AlbertaGrid ( const std::string &macroGridFileName );
    \n-
    290
    \n-
    292 ~AlbertaGrid ();
    \n-
    293
    \n-
    296 int maxLevel () const;
    \n-
    297
    \n-
    299 template<int cd, PartitionIteratorType pitype>
    \n-
    300 typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
    \n-
    301 lbegin (int level) const;
    \n-
    302
    \n-
    304 template<int cd, PartitionIteratorType pitype>
    \n-
    305 typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
    \n-
    306 lend (int level) const;
    \n-
    307
    \n-
    309 template< int codim >
    \n-\n-
    311 lbegin ( int level ) const;
    \n-
    312
    \n-
    314 template< int codim >
    \n-\n-
    316 lend ( int level ) const;
    \n+
    254 template< int dim >
    \n+
    \n+\n+
    256 {
    \n+
    257 assert( (i >= 0) && (i < data_->n_total_vertices) );
    \n+
    258 return data_->coords[ i ];
    \n+
    259 }
    \n+
    \n+
    260
    \n+
    261
    \n+
    262 template< int dim >
    \n+
    \n+
    263 inline int &MacroData< dim >::neighbor ( int element, int i ) const
    \n+
    264 {
    \n+
    265 assert( (element >= 0) && (element < data_->n_macro_elements) );
    \n+
    266 assert( (i >= 0) && (i < numVertices) );
    \n+
    267 return data_->neigh[ element*numVertices + i ];
    \n+
    268 }
    \n+
    \n+
    269
    \n+
    270
    \n+
    271 template< int dim >
    \n+
    \n+
    272 inline BoundaryId &MacroData< dim >::boundaryId ( int element, int i ) const
    \n+
    273 {
    \n+
    274 assert( (element >= 0) && (element < data_->n_macro_elements) );
    \n+
    275 assert( (i >= 0) && (i < numVertices) );
    \n+
    276 return data_->boundary[ element*numVertices + i ];
    \n+
    277 }
    \n+
    \n+
    278
    \n+
    279
    \n+
    280 template< int dim >
    \n+
    \n+\n+
    282 {
    \n+
    283 release();
    \n+
    284 data_ = ALBERTA alloc_macro_data( dim, initialSize, initialSize );
    \n+
    285 data_->boundary = memAlloc< BoundaryId >( initialSize*numVertices );
    \n+
    286 if( dim == 3 )
    \n+
    287 data_->el_type = memAlloc< ElementType >( initialSize );
    \n+
    288 vertexCount_ = elementCount_ = 0;
    \n+
    289 elementCount_ = 0;
    \n+
    290 }
    \n+
    \n+
    291
    \n+
    292
    \n+
    293 template< int dim >
    \n+
    \n+\n+
    295 {
    \n+
    296 if( (vertexCount_ >= 0) && (elementCount_ >= 0) )
    \n+
    297 {
    \n+
    298 resizeVertices( vertexCount_ );
    \n+
    299 resizeElements( elementCount_ );
    \n+
    300 ALBERTA compute_neigh_fast( data_ );
    \n+
    301
    \n+
    302 // assign default boundary id (if none is assigned)
    \n+
    303 for( int element = 0; element < elementCount_; ++element )
    \n+
    304 {
    \n+
    305 for( int i = 0; i < numVertices; ++i )
    \n+
    306 {
    \n+
    307 BoundaryId &id = boundaryId( element, i );
    \n+
    308 if( neighbor( element, i ) >= 0 )
    \n+
    309 {
    \n+
    310 assert( id == InteriorBoundary );
    \n+
    311 id = InteriorBoundary;
    \n+
    312 }
    \n+
    313 else
    \n+
    314 id = (id == InteriorBoundary ? DirichletBoundary : id);
    \n+
    315 }
    \n+
    316 }
    \n
    317
    \n-
    319 template< int codim, PartitionIteratorType pitype >
    \n-
    320 typename Traits
    \n-
    321 ::template Codim< codim >::template Partition< pitype >::LeafIterator
    \n-
    322 leafbegin () const;
    \n+
    318 vertexCount_ = elementCount_ = -1;
    \n+
    319 }
    \n+
    320 assert( (vertexCount_ < 0) && (elementCount_ < 0) );
    \n+
    321 }
    \n+
    \n+
    322
    \n
    323
    \n-
    325 template< int codim, PartitionIteratorType pitype >
    \n-
    326 typename Traits
    \n-
    327 ::template Codim< codim >::template Partition< pitype >::LeafIterator
    \n-
    328 leafend () const;
    \n+
    324 template< int dim >
    \n+
    \n+\n+
    326 {
    \n+\n+
    328 }
    \n+
    \n
    329
    \n-
    331 template< int codim >
    \n-\n-
    333 leafbegin () const;
    \n-
    334
    \n-
    336 template< int codim >
    \n-\n-
    338 leafend () const;
    \n-
    339
    \n-
    344 int size (int level, int codim) const;
    \n-
    345
    \n-
    347 int size (int level, GeometryType type) const;
    \n-
    348
    \n-
    350 int size (int codim) const;
    \n+
    330
    \n+
    331 template< int dim >
    \n+
    \n+
    332 inline void MacroData< dim >::setOrientation ( const Real orientation )
    \n+
    333 {
    \n+
    334 Library< dimWorld >::setOrientation( *this, orientation );
    \n+
    335 }
    \n+
    \n+
    336
    \n+
    337
    \n+
    338 template< int dim >
    \n+
    \n+\n+
    340 {
    \n+\n+
    342 }
    \n+
    \n+
    343
    \n+
    344
    \n+
    345 template< int dim >
    \n+
    \n+
    346 inline int MacroData< dim >::insertElement ( const ElementId &id )
    \n+
    347 {
    \n+
    348 assert( elementCount_ >= 0 );
    \n+
    349 if( elementCount_ >= data_->n_macro_elements )
    \n+
    350 resizeElements( 2*elementCount_ );
    \n
    351
    \n-
    353 int size (GeometryType type) const;
    \n-
    354
    \n-
    \n-
    356 std::size_t numBoundarySegments () const
    \n-
    357 {
    \n-
    358 return numBoundarySegments_;
    \n-
    359 }
    \n-
    \n+
    352 ElementId &e = element( elementCount_ );
    \n+
    353 for( int i = 0; i < numVertices; ++i )
    \n+
    354 {
    \n+
    355 e[ i ] = id[ i ];
    \n+
    356 boundaryId( elementCount_, i ) = InteriorBoundary;
    \n+
    357 }
    \n+
    358 if( dim == 3 )
    \n+
    359 data_->el_type[ elementCount_ ] = 0;
    \n
    360
    \n-
    \n-
    362 typename Traits::LevelGridView levelGridView ( int level ) const
    \n-
    363 {
    \n-
    364 typedef typename Traits::LevelGridView View;
    \n-
    365 typedef typename View::GridViewImp ViewImp;
    \n-
    366 return View( ViewImp( *this, level ) );
    \n-
    367 }
    \n-
    \n-
    368
    \n-
    \n-\n-
    371 {
    \n-
    372 typedef typename Traits::LeafGridView View;
    \n-
    373 typedef typename View::GridViewImp ViewImp;
    \n-
    374 return View( ViewImp( *this ) );
    \n-
    375 }
    \n-
    \n-
    376
    \n-
    377 public:
    \n-
    378 //***************************************************************
    \n-
    379 // Interface for Adaptation
    \n-
    380 //***************************************************************
    \n-
    381 using Base::getMark;
    \n-
    382 using Base::mark;
    \n-
    383
    \n-
    385 int getMark ( const typename Traits::template Codim< 0 >::Entity &e ) const;
    \n-
    386
    \n-
    388 bool mark ( int refCount, const typename Traits::template Codim< 0 >::Entity &e );
    \n-
    389
    \n-
    391 void globalRefine ( int refCount );
    \n-
    392
    \n-
    393 template< class DataHandle >
    \n-
    394 void globalRefine ( int refCount, AdaptDataHandleInterface< This, DataHandle > &handle );
    \n-
    395
    \n-
    397 bool adapt ();
    \n-
    398
    \n-
    400 template< class DataHandle >
    \n-\n+
    361 return elementCount_++;
    \n+
    362 }
    \n+
    \n+
    363
    \n+
    364
    \n+
    365 template< int dim >
    \n+
    366 inline void MacroData< dim >
    \n+
    \n+
    367 ::insertWallTrafo ( const GlobalMatrix &matrix, const GlobalVector &shift )
    \n+
    368 {
    \n+
    369 int &count = data_->n_wall_trafos;
    \n+
    370 AffineTransformation *&array = data_->wall_trafos;
    \n+
    371
    \n+
    372 // resize wall trafo array
    \n+
    373 array = memReAlloc< AffineTransformation >( array, count, count+1 );
    \n+
    374 assert( data_->wall_trafos != NULL );
    \n+
    375
    \n+
    376 // copy matrix and shift
    \n+
    377 for( int i = 0; i < dimWorld; ++i )
    \n+
    378 copy( matrix[ i ], array[ count ].M[ i ] );
    \n+
    379 copy( shift, array[ count ].t );
    \n+
    380 ++count;
    \n+
    381 }
    \n+
    \n+
    382
    \n+
    383 template< int dim >
    \n+
    384 inline void MacroData< dim >
    \n+
    \n+
    385 ::insertWallTrafo ( const FieldMatrix< Real, dimWorld, dimWorld > &matrix,
    \n+
    386 const FieldVector< Real, dimWorld > &shift )
    \n+
    387 {
    \n+
    388 int &count = data_->n_wall_trafos;
    \n+
    389 AffineTransformation *&array = data_->wall_trafos;
    \n+
    390
    \n+
    391 // resize wall trafo array
    \n+
    392 array = memReAlloc< AffineTransformation >( array, count, count+1 );
    \n+
    393 assert( data_->wall_trafos != NULL );
    \n+
    394
    \n+
    395 // copy matrix and shift
    \n+
    396 for( int i = 0; i < dimWorld; ++i )
    \n+
    397 copy( matrix[ i ], array[ count ].M[ i ] );
    \n+
    398 copy( shift, array[ count ].t );
    \n+
    399 ++count;
    \n+
    400 }
    \n+
    \n+
    401
    \n
    402
    \n-
    404 bool preAdapt ();
    \n-
    405
    \n-
    407 void postAdapt();
    \n-
    408
    \n-
    \n-
    411 const Communication &comm () const
    \n-
    412 {
    \n-
    413 return comm_;
    \n-
    414 }
    \n-
    \n-
    415
    \n-
    \n-
    416 static std::string typeName ()
    \n-
    417 {
    \n-
    418 std::ostringstream s;
    \n-
    419 s << "AlbertaGrid< " << dim << ", " << dimworld << " >";
    \n-
    420 return s.str();
    \n-
    421 }
    \n+
    403 template< int dim >
    \n+
    \n+\n+
    405 {
    \n+
    406 // ensure that the macro data has been finalized
    \n+
    407 finalize();
    \n+
    408 ALBERTA macro_test( data_, NULL );
    \n+
    409 }
    \n+
    \n+
    410
    \n+
    411
    \n+
    412 template< int dim >
    \n+
    \n+
    413 inline void MacroData< dim >::read ( const std::string &filename, bool binary )
    \n+
    414 {
    \n+
    415 release();
    \n+
    416 if( binary )
    \n+
    417 data_ = ALBERTA read_macro_xdr( filename.c_str() );
    \n+
    418 else
    \n+
    419 data_ = ALBERTA read_macro( filename.c_str() );
    \n+
    420 }
    \n+
    \n
    \n+
    421
    \n
    422
    \n-
    424 template< class EntitySeed >
    \n-
    425 typename Traits::template Codim< EntitySeed::codimension >::Entity
    \n-
    \n-
    426 entity ( const EntitySeed &seed ) const
    \n-
    427 {
    \n-\n-
    429 return EntityImpl( *this, seed.impl().elementInfo( meshPointer() ), seed.impl().subEntity() );
    \n-
    430 }
    \n-
    \n-
    431
    \n-
    432 //**********************************************************
    \n-
    433 // End of Interface Methods
    \n-
    434 //**********************************************************
    \n-
    436 bool writeGrid( const std::string &filename, ctype time ) const;
    \n-
    437
    \n-
    439 bool readGrid( const std::string &filename, ctype &time );
    \n+
    423 template< int dim >
    \n+
    424 inline void MacroData< dim >::resizeElements ( const int newSize )
    \n+
    425 {
    \n+
    426 const int oldSize = data_->n_macro_elements;
    \n+
    427 data_->n_macro_elements = newSize;
    \n+
    428 data_->mel_vertices = memReAlloc( data_->mel_vertices, oldSize*numVertices, newSize*numVertices );
    \n+
    429 data_->boundary = memReAlloc( data_->boundary, oldSize*numVertices, newSize*numVertices );
    \n+
    430 if( dim == 3 )
    \n+
    431 data_->el_type = memReAlloc( data_->el_type, oldSize, newSize );
    \n+
    432 assert( (newSize == 0) || (data_->mel_vertices != NULL) );
    \n+
    433 }
    \n+
    434
    \n+
    435 }
    \n+
    436
    \n+
    437}
    \n+
    438
    \n+
    439#endif // #if HAVE_ALBERTA
    \n
    440
    \n-
    441 // return hierarchic index set
    \n-
    442 const HierarchicIndexSet & hierarchicIndexSet () const { return hIndexSet_; }
    \n-
    443
    \n-
    445 const typename Traits :: LevelIndexSet & levelIndexSet (int level) const;
    \n-
    446
    \n-
    448 const typename Traits :: LeafIndexSet & leafIndexSet () const;
    \n-
    449
    \n-
    \n-
    451 const GlobalIdSet &globalIdSet () const
    \n-
    452 {
    \n-
    453 return idSet_;
    \n-
    454 }
    \n-
    \n-
    455
    \n-
    \n-
    457 const LocalIdSet &localIdSet () const
    \n-
    458 {
    \n-
    459 return idSet_;
    \n-
    460 }
    \n-
    \n-
    461
    \n-
    462 // access to mesh pointer, needed by some methods
    \n-
    \n-\n-
    464 {
    \n-
    465 return mesh_;
    \n-
    466 };
    \n-
    \n-
    467
    \n-
    \n-
    468 const MeshPointer &meshPointer () const
    \n-
    469 {
    \n-
    470 return mesh_;
    \n-
    471 }
    \n-
    \n-
    472
    \n-
    \n-\n-
    474 {
    \n-
    475 return dofNumbering_;
    \n-
    476 }
    \n-
    \n-
    477
    \n-
    \n-\n-
    479 {
    \n-
    480 return levelProvider_;
    \n-
    481 }
    \n-
    \n-
    482
    \n-
    \n-
    483 int dune2alberta ( int codim, int i ) const
    \n-
    484 {
    \n-
    485 return numberingMap_.dune2alberta( codim, i );
    \n-
    486 }
    \n-
    \n-
    487
    \n-
    \n-
    488 int alberta2dune ( int codim, int i ) const
    \n-
    489 {
    \n-
    490 return numberingMap_.alberta2dune( codim, i );
    \n-
    491 }
    \n-
    \n-
    492
    \n-
    \n-
    493 int generic2alberta ( int codim, int i ) const
    \n-
    494 {
    \n-
    495 return genericNumberingMap_.dune2alberta( codim, i );
    \n-
    496 }
    \n-
    \n-
    497
    \n-
    \n-
    498 int alberta2generic ( int codim, int i ) const
    \n-
    499 {
    \n-
    500 return genericNumberingMap_.alberta2dune( codim, i );
    \n-
    501 }
    \n-
    \n-
    502
    \n-
    503 private:
    \n-
    504 typedef std::vector<int> ArrayType;
    \n-
    505
    \n-
    506 void setup ();
    \n-
    507
    \n-
    508 // make the calculation of indexOnLevel and so on.
    \n-
    509 // extra method because of Reihenfolge
    \n-
    510 void calcExtras();
    \n-
    511
    \n-
    512 private:
    \n-
    513 // delete mesh and all vectors
    \n-
    514 void removeMesh();
    \n-
    515
    \n-
    516 //***********************************************************************
    \n-
    517 // MemoryManagement for Entitys and Geometrys
    \n-
    518 //**********************************************************************
    \n-\n-\n-
    521
    \n-
    522 public:
    \n-\n-
    524
    \n-
    525 template< int codim >
    \n-
    526 static int
    \n-
    \n-\n-
    528 {
    \n-
    529 return entity.impl().twist();
    \n-
    530 }
    \n-
    \n-
    531
    \n-
    532 template< int codim >
    \n-
    533 static int
    \n-
    \n-
    534 getTwist ( const typename Traits::template Codim< 0 >::Entity &entity, int subEntity )
    \n-
    535 {
    \n-
    536 return entity.impl().template twist< codim >( subEntity );
    \n-
    537 }
    \n-
    \n-
    538
    \n-
    539 static int
    \n-
    \n-
    540 getTwistInInside ( const typename Traits::LeafIntersection &intersection )
    \n-
    541 {
    \n-
    542 return intersection.impl().twistInInside();
    \n-
    543 }
    \n-
    \n-
    544
    \n-
    545 static int
    \n-
    \n-
    546 getTwistInOutside ( const typename Traits::LeafIntersection &intersection )
    \n-
    547 {
    \n-
    548 return intersection.impl().twistInOutside();
    \n-
    549 }
    \n-
    \n-
    550
    \n-
    551 public:
    \n-
    552 // read global element number from elNumbers_
    \n-\n-
    554 getCoord ( const ElementInfo &elementInfo, int vertex ) const;
    \n-
    555
    \n-
    556 private:
    \n-
    557 // pointer to an Albert Mesh, which contains the data
    \n-
    558 MeshPointer mesh_;
    \n-
    559
    \n-
    560 // communication
    \n-
    561 Communication comm_;
    \n-
    562
    \n-
    563 // maximum level of the mesh
    \n-
    564 int maxlevel_;
    \n-
    565
    \n-
    566 // number of boundary segments within the macro grid
    \n-
    567 size_t numBoundarySegments_;
    \n-
    568
    \n-
    569 // map between ALBERTA and DUNE numbering
    \n-\n-\n-
    572
    \n-
    573 DofNumbering dofNumbering_;
    \n-
    574
    \n-
    575 LevelProvider levelProvider_;
    \n-
    576
    \n-
    577 // hierarchical numbering of AlbertaGrid, unique per codim
    \n-
    578 HierarchicIndexSet hIndexSet_;
    \n-
    579
    \n-
    580 // the id set of this grid
    \n-
    581 IdSetImp idSet_;
    \n-
    582
    \n-
    583 // the level index set, is generated from the HierarchicIndexSet
    \n-
    584 // is generated, when accessed
    \n-
    585 mutable std::vector< typename GridFamily::LevelIndexSetImp * > levelIndexVec_;
    \n-
    586
    \n-
    587 // the leaf index set, is generated from the HierarchicIndexSet
    \n-
    588 // is generated, when accessed
    \n-
    589 mutable typename GridFamily::LeafIndexSetImp* leafIndexSet_;
    \n-
    590
    \n-
    591 SizeCache< This > sizeCache_;
    \n-
    592
    \n-
    593 typedef AlbertaMarkerVector< dim, dimworld > MarkerVector;
    \n-
    594
    \n-
    595 // needed for VertexIterator, mark on which element a vertex is treated
    \n-
    596 mutable MarkerVector leafMarkerVector_;
    \n-
    597
    \n-
    598 // needed for VertexIterator, mark on which element a vertex is treated
    \n-
    599 mutable std::vector< MarkerVector > levelMarkerVector_;
    \n-
    600
    \n-
    601#if DUNE_ALBERTA_CACHE_COORDINATES
    \n-\n-
    603#endif
    \n-
    604
    \n-
    605 // current state of adaptation
    \n-
    606 AdaptationState adaptationState_;
    \n-
    607 };
    \n-
    \n-
    608
    \n-
    609} // namespace Dune
    \n-
    \n-
    610
    \n-
    611#include "albertagrid.cc"
    \n-
    612
    \n-
    613// undef all dangerous defines
    \n-
    614#undef DIM
    \n-
    615#undef DIM_OF_WORLD
    \n-
    616
    \n-
    617#ifdef _ABS_NOT_DEFINED_
    \n-
    618#undef ABS
    \n-
    619#endif
    \n-
    620
    \n-
    621#ifdef _MIN_NOT_DEFINED_
    \n-
    622#undef MIN
    \n-
    623#endif
    \n-
    624
    \n-
    625#ifdef _MAX_NOT_DEFINED_
    \n-
    626#undef MAX
    \n-
    627#endif
    \n-
    628
    \n-
    629#ifdef obstack_chunk_alloc
    \n-
    630#undef obstack_chunk_alloc
    \n-
    631#endif
    \n-
    632#ifdef obstack_chunk_free
    \n-
    633#undef obstack_chunk_free
    \n-
    634#endif
    \n-\n-
    636
    \n-
    637// We use MEM_ALLOC, so undefine it here.
    \n-
    638#undef MEM_ALLOC
    \n-
    639
    \n-
    640// We use MEM_REALLOC, so undefine it here.
    \n-
    641#undef MEM_REALLOC
    \n-
    642
    \n-
    643// We use MEM_CALLOC, so undefine it here.
    \n-
    644#undef MEM_CALLOC
    \n-
    645
    \n-
    646// We use MEM_FREE, so undefine it here.
    \n-
    647#undef MEM_FREE
    \n-
    648
    \n-
    649// Macro ERROR may be defined by alberta_util.h. If so, undefine it.
    \n-
    650#ifdef ERROR
    \n-
    651#undef ERROR
    \n-
    652#endif // #ifdef ERROR
    \n-
    653
    \n-
    654// Macro ERROR_EXIT may be defined by alberta_util.h. If so, undefine it.
    \n-
    655#ifdef ERROR_EXIT
    \n-
    656#undef ERROR_EXIT
    \n-
    657#endif // #ifdef ERROR_EXIT
    \n-
    658
    \n-
    659// Macro WARNING may be defined by alberta_util.h. If so, undefine it.
    \n-
    660#ifdef WARNING
    \n-
    661#undef WARNING
    \n-
    662#endif // #ifdef WARNING
    \n-
    663
    \n-
    664// Macro TEST may be defined by alberta_util.h. If so, undefine it.
    \n-
    665#ifdef TEST
    \n-
    666#undef TEST
    \n-
    667#endif // #ifdef TEST
    \n-
    668
    \n-
    669// Macro TEST_EXIT may be defined by alberta_util.h. If so, undefine it.
    \n-
    670#ifdef TEST_EXIT
    \n-
    671#undef TEST_EXIT
    \n-
    672#endif // #ifdef TEST_EXIT
    \n-
    673
    \n-
    674// Macro DEBUG_TEST may be defined by alberta_util.h. If so, undefine it.
    \n-
    675#ifdef DEBUG_TEST
    \n-
    676#undef DEBUG_TEST
    \n-
    677#endif // #ifdef DEBUG_TEST
    \n-
    678
    \n-
    679// Macro DEBUG_TEST_EXIT may be defined by alberta_util.h. If so, undefine it.
    \n-
    680#ifdef DEBUG_TEST_EXIT
    \n-
    681#undef DEBUG_TEST_EXIT
    \n-
    682#endif // #ifdef DEBUG_TEST_EXIT
    \n-
    683
    \n-
    684// Macro INFO may be defined by alberta_util.h. If so, undefine it.
    \n-
    685#ifdef INFO
    \n-
    686#undef INFO
    \n-
    687#endif // #ifdef INFO
    \n-
    688
    \n-
    689// Macro PRINT_INFO may be defined by alberta_util.h. If so, undefine it.
    \n-
    690#ifdef PRINT_INFO
    \n-
    691#undef PRINT_INFO
    \n-
    692#endif // #ifdef PRINT_INFO
    \n-
    693
    \n-
    694// Macro PRINT_INT_VEC may be defined by alberta_util.h. If so, undefine it.
    \n-
    695#ifdef PRINT_INT_VEC
    \n-
    696#undef PRINT_INT_VEC
    \n-
    697#endif // #ifdef PRINT_INT_VEC
    \n-
    698
    \n-
    699// Macro PRINT_REAL_VEC may be defined by alberta_util.h. If so, undefine it.
    \n-
    700#ifdef PRINT_REAL_VEC
    \n-
    701#undef PRINT_REAL_VEC
    \n-
    702#endif // #ifdef PRINT_REAL_VEC
    \n-
    703
    \n-
    704// Macro WAIT may be defined by alberta_util.h. If so, undefine it.
    \n-
    705#ifdef WAIT
    \n-
    706#undef WAIT
    \n-
    707#endif // #ifdef WAIT
    \n-
    708
    \n-
    709// Macro WAIT_REALLY may be defined by alberta_util.h. If so, undefine it.
    \n-
    710#ifdef WAIT_REALLY
    \n-
    711#undef WAIT_REALLY
    \n-
    712#endif // #ifdef WAIT_REALLY
    \n-
    713
    \n-
    714// Macro GET_WORKSPACE may be defined by alberta_util.h. If so, undefine it.
    \n-
    715#ifdef GET_WORKSPACE
    \n-
    716#undef GET_WORKSPACE
    \n-
    717#endif // #ifdef GET_WORKSPACE
    \n-
    718
    \n-
    719// Macro FREE_WORKSPACE may be defined by alberta_util.h. If so, undefine it.
    \n-
    720#ifdef FREE_WORKSPACE
    \n-
    721#undef FREE_WORKSPACE
    \n-
    722#endif // #ifdef FREE_WORKSPACE
    \n-
    723
    \n-
    724// Macro MAT_ALLOC may be defined by alberta_util.h. If so, undefine it.
    \n-
    725#ifdef MAT_ALLOC
    \n-
    726#undef MAT_ALLOC
    \n-
    727#endif // #ifdef MAT_ALLOC
    \n-
    728
    \n-
    729// Macro MAT_FREE may be defined by alberta_util.h. If so, undefine it.
    \n-
    730#ifdef MAT_FREE
    \n-
    731#undef MAT_FREE
    \n-
    732#endif // #ifdef MAT_FREE
    \n-
    733
    \n-
    734// Macro NAME may be defined by alberta_util.h. If so, undefine it.
    \n-
    735#ifdef NAME
    \n-
    736#undef NAME
    \n-
    737#endif // #ifdef NAME
    \n-
    738
    \n-
    739// Macro GET_STRUCT may be defined by alberta_util.h. If so, undefine it.
    \n-
    740#ifdef GET_STRUCT
    \n-
    741#undef GET_STRUCT
    \n-
    742#endif // #ifdef GET_STRUCT
    \n-
    743
    \n-
    744// Macro ADD_PARAMETER may be defined by alberta_util.h. If so, undefine it.
    \n-
    745#ifdef ADD_PARAMETER
    \n-
    746#undef ADD_PARAMETER
    \n-
    747#endif // #ifdef ADD_PARAMETER
    \n-
    748
    \n-
    749// Macro GET_PARAMETER may be defined by alberta_util.h. If so, undefine it.
    \n-
    750#ifdef GET_PARAMETER
    \n-
    751#undef GET_PARAMETER
    \n-
    752#endif // #ifdef GET_PARAMETER
    \n-
    753
    \n-
    754#define _ALBERTA_H_
    \n-
    755
    \n-
    756#endif // HAVE_ALBERTA || DOXYGEN
    \n-
    757
    \n-
    758#endif
    \n-
    interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
    \n-
    Provides size cache classes to implement the grids size method efficiently.
    \n-\n-\n-\n-
    Contains #undefs for all preprocessor macros defined by alberta.
    \n-\n-\n-\n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n-\n-\n+
    441#endif
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+\n+\n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n+
    ALBERTA REAL_DD GlobalMatrix
    Definition misc.hh:51
    \n+
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n+
    ALBERTA BNDRY_TYPE BoundaryId
    Definition misc.hh:61
    \n+
    static const int InteriorBoundary
    Definition misc.hh:59
    \n
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)
    Definition misc.hh:85
    \n+
    static const int DirichletBoundary
    Definition misc.hh:60
    \n+
    static const int dimWorld
    Definition misc.hh:46
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n-
    bool readGrid(const std::string &filename, ctype &time)
    read Grid from file filename and store time of mesh in time
    Definition albertagrid.cc:585
    \n-
    const DofNumbering & dofNumbering() const
    Definition agrid.hh:473
    \n-
    int generic2alberta(int codim, int i) const
    Definition agrid.hh:493
    \n-
    static std::string typeName()
    Definition agrid.hh:416
    \n-
    Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
    return LeafIterator which points to first leaf entity
    \n-
    const HierarchicIndexSet & hierarchicIndexSet() const
    Definition agrid.hh:442
    \n-
    Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
    one past the end on this level
    \n-
    static const int dimension
    Definition agrid.hh:145
    \n-
    int dune2alberta(int codim, int i) const
    Definition agrid.hh:483
    \n-
    Traits::Communication Communication
    type of communication
    Definition agrid.hh:165
    \n-
    int maxLevel() const
    Definition albertagrid.cc:483
    \n-
    AlbertaGrid()
    create an empty grid
    Definition albertagrid.cc:42
    \n-
    Traits::template Codim< codim >::LevelIterator lbegin(int level) const
    Iterator to first entity of given codim on level.
    \n-
    const LevelProvider & levelProvider() const
    Definition agrid.hh:478
    \n-
    static int getTwistInOutside(const typename Traits::LeafIntersection &intersection)
    Definition agrid.hh:546
    \n-
    const Alberta::GlobalVector & getCoord(const ElementInfo &elementInfo, int vertex) const
    Definition albertagrid.cc:471
    \n-
    Traits::template Codim< codim >::LevelIterator lend(int level) const
    one past the end on this level
    \n-
    Traits::LeafGridView leafGridView() const
    View for the leaf grid for All_Partition.
    Definition agrid.hh:370
    \n-
    bool adapt()
    Refine all positive marked leaf entities, coarsen all negative marked entities if possible.
    Definition albertagrid.cc:415
    \n-
    static const int dimensionworld
    Definition agrid.hh:146
    \n-
    static int getTwistInInside(const typename Traits::LeafIntersection &intersection)
    Definition agrid.hh:540
    \n-
    void postAdapt()
    clean up some markers
    Definition albertagrid.cc:356
    \n-
    Traits::template Codim< codim >::LeafIterator leafbegin() const
    return LeafIterator which points to first leaf entity
    \n-
    const LocalIdSet & localIdSet() const
    return local IdSet
    Definition agrid.hh:457
    \n-
    std::size_t numBoundarySegments() const
    number of boundary segments within the macro grid
    Definition agrid.hh:356
    \n-
    GridFamily::ctype ctype
    Definition agrid.hh:143
    \n-
    AlbertaGrid(const This &)=delete
    \n-
    Communication CollectiveCommunication
    Definition agrid.hh:171
    \n-
    Traits::template Codim< codim >::LeafIterator leafend() const
    return LeafIterator which points behind last leaf entity
    \n-
    const Traits::LevelIndexSet & levelIndexSet(int level) const
    return level index set for given level
    Definition albertagrid.cc:520
    \n-
    int alberta2generic(int codim, int i) const
    Definition agrid.hh:498
    \n-
    static int getTwist(const typename Traits::template Codim< codim >::Entity &entity)
    Definition agrid.hh:527
    \n-
    const Communication & comm() const
    return reference to communication, if MPI found this is specialisation for MPI
    Definition agrid.hh:411
    \n-
    ALBERTA MESH * getMesh() const
    Definition agrid.hh:463
    \n-
    int size(int level, int codim) const
    Number of grid entities per level and codim because lbegin and lend are none const,...
    Definition albertagrid.cc:490
    \n-
    Traits::HierarchicIndexSet HierarchicIndexSet
    type of hierarchic index set
    Definition agrid.hh:157
    \n-
    const Traits::LeafIndexSet & leafIndexSet() const
    return leaf index set
    Definition albertagrid.cc:535
    \n-
    Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
    return LeafIterator which points behind last leaf entity
    \n-
    bool writeGrid(const std::string &filename, ctype time) const
    write Grid to file in Xdr
    Definition albertagrid.cc:575
    \n-
    Traits::LevelGridView levelGridView(int level) const
    View for a grid level for All_Partition.
    Definition agrid.hh:362
    \n-
    int alberta2dune(int codim, int i) const
    Definition agrid.hh:488
    \n-
    This & operator=(const This &)=delete
    \n-
    AlbertaGridFamily< dim, dimworld >::Traits Traits
    Definition agrid.hh:149
    \n-
    static int getTwist(const typename Traits::template Codim< 0 >::Entity &entity, int subEntity)
    Definition agrid.hh:534
    \n-
    Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lbegin(int level) const
    Iterator to first entity of given codim on level.
    \n-
    const GlobalIdSet & globalIdSet() const
    return global IdSet
    Definition agrid.hh:451
    \n-
    void globalRefine(int refCount)
    uses the interface, mark on entity and refineLocal
    Definition albertagrid.cc:304
    \n-
    int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
    returns adaptation mark for given entity
    Definition albertagrid.cc:408
    \n-
    Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
    obtain Entity from EntitySeed.
    Definition agrid.hh:426
    \n-
    ~AlbertaGrid()
    desctructor
    Definition albertagrid.cc:196
    \n-
    bool preAdapt()
    returns true, if a least one element is marked for coarsening
    Definition albertagrid.cc:348
    \n-
    bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
    Marks an entity to be refined/coarsened in a subsequent adapt.
    Definition albertagrid.cc:385
    \n-
    const MeshPointer & meshPointer() const
    Definition agrid.hh:468
    \n-
    Definition coordcache.hh:25
    \n-
    Definition albertagrid/datahandle.hh:27
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    Implementation & impl()
    access to the underlying implementation
    Definition common/intersection.hh:178
    \n-\n-\n-\n-
    Definition treeiterator.hh:189
    \n-
    Definition hierarchiciterator.hh:29
    \n-
    Definition albertagrid/intersection.hh:105
    \n-
    Definition albertagrid/intersectioniterator.hh:27
    \n-
    Definition albertagrid/entity.hh:46
    \n-
    Definition albertagrid/indexsets.hh:42
    \n-
    hierarchic index set of AlbertaGrid
    Definition albertagrid/indexsets.hh:534
    \n-
    Definition albertagrid/indexsets.hh:335
    \n-
    Definition albertagrid/gridfamily.hh:83
    \n-
    static const int dimension
    Definition albertagrid/gridfamily.hh:88
    \n-
    static const int dimensionworld
    Definition albertagrid/gridfamily.hh:89
    \n-
    AlbertaGridIndexSet< dim, dimworld > LeafIndexSetImp
    Definition albertagrid/gridfamily.hh:92
    \n-
    Alberta::Real ctype
    Definition albertagrid/gridfamily.hh:86
    \n-
    Definition albertagrid/gridfamily.hh:98
    \n-
    Dune::Communication< No_Comm > Communication
    Definition albertagrid/gridfamily.hh:148
    \n-
    Definition albertagrid/gridfamily.hh:117
    \n-
    Definition albertagrid/gridview.hh:80
    \n-
    Definition albertagrid/gridview.hh:299
    \n-
    Definition albertagrid/intersection.hh:32
    \n-\n-\n-\n-
    int alberta2dune(int codim, int i) const
    Definition misc.hh:397
    \n-
    int dune2alberta(int codim, int i) const
    Definition misc.hh:390
    \n-
    Definition albertagrid/projection.hh:80
    \n-
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n-
    Interface class for the Grid's adapt method where the parameter is a AdaptDataHandleInterface.
    Definition adaptcallback.hh:33
    \n-
    Store a reference to an entity with a minimal memory footprint.
    Definition common/entityseed.hh:26
    \n-
    Implementation & impl()
    access to the underlying implementation
    Definition common/entityseed.hh:59
    \n-
    Definition common/grid.hh:862
    \n-
    bool mark(int refCount, const typename Traits ::template Codim< 0 >::Entity &e)
    Marks an entity to be refined/coarsened in a subsequent adapt.
    Definition common/grid.hh:915
    \n-
    int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
    returns adaptation mark for given entity, i.e. here the default implementation returns 0.
    Definition common/grid.hh:927
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-
    Definition common/grid.hh:1107
    \n-
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    organizes the caching of sizes for one grid and one GeometryType
    Definition sizecache.hh:33
    \n-\n-\n-\n-\n-\n-\n-
    Provide a generic factory class for unstructured grids.
    \n-
    provides the GridFamily for AlbertaGrid
    \n-\n-\n-
    Implementation of the IntersectionIterator for AlbertaGrid.
    \n-
    Different resources needed by all grid implementations.
    \n+
    Definition macrodata.hh:30
    \n+
    friend struct InstantiateMacroDataLibrary
    Definition macrodata.hh:45
    \n+
    BoundaryId & boundaryId(int element, int i) const
    Definition macrodata.hh:272
    \n+
    int insertVertex(const GlobalVector &coords)
    insert vertex
    Definition macrodata.hh:149
    \n+
    int ElementId[numVertices]
    Definition macrodata.hh:48
    \n+
    static const int supportPeriodicity
    Definition macrodata.hh:50
    \n+
    void release()
    release the macro data structure
    Definition macrodata.hh:127
    \n+
    int elementCount() const
    Definition macrodata.hh:68
    \n+
    GlobalVector & vertex(int i) const
    Definition macrodata.hh:255
    \n+
    int vertexCount() const
    Definition macrodata.hh:63
    \n+
    void markLongestEdge()
    mark the longest edge of all elements as refinement edges
    Definition macrodata.hh:325
    \n+
    int insertVertex(const FieldVector< Real, dimWorld > &coords)
    insert vertex
    Definition macrodata.hh:163
    \n+
    bool checkNeighbors() const
    check the neighbor information
    Definition macrodata.hh:339
    \n+
    void insertWallTrafo(const FieldMatrix< Real, dimWorld, dimWorld > &matrix, const FieldVector< Real, dimWorld > &shift)
    Definition macrodata.hh:385
    \n+
    ElementId & element(int i) const
    Definition macrodata.hh:246
    \n+
    void checkCycles()
    Definition macrodata.hh:404
    \n+
    int & neighbor(int element, int i) const
    Definition macrodata.hh:263
    \n+
    MacroData()
    Definition macrodata.hh:52
    \n+
    void finalize()
    compress macro data structure
    Definition macrodata.hh:294
    \n+
    void insertWallTrafo(const GlobalMatrix &m, const GlobalVector &t)
    Definition macrodata.hh:367
    \n+
    void setOrientation(const Real orientation)
    set the orientation of all elements
    Definition macrodata.hh:332
    \n+
    void create()
    create a new macro data structure
    Definition macrodata.hh:281
    \n+
    int insertElement(const ElementId &id)
    insert element
    Definition macrodata.hh:346
    \n+
    bool write(const std::string &filename, bool binary=false) const
    Definition macrodata.hh:180
    \n+
    void read(const std::string &filename, bool binary=false)
    Definition macrodata.hh:413
    \n+
    Definition macrodata.hh:220
    \n+
    static void markLongestEdge(MacroData &macroData)
    \n+
    Alberta::MacroData< dim > MacroData
    Definition macrodata.hh:221
    \n+
    Definition misc.hh:148
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1042 +1,531 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-agrid.hh\n+macrodata.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTAGRID_IMP_HH\n-6#define DUNE_ALBERTAGRID_IMP_HH\n+5#ifndef DUNE_ALBERTA_MACRODATA_HH\n+6#define DUNE_ALBERTA_MACRODATA_HH\n 7\n-13#if HAVE_ALBERTA || DOXYGEN\n-14\n-15#include \n-16#include \n-17\n-18#include \n-19#include \n-20#include \n-21#include \n-22#include \n-23\n-24// Dune includes\n-25#include \n-26#include \n-27#include \n-28#include \n-29\n-30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-31#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-32#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\ba_\bd_\ba_\bp_\bt_\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\b._\bh_\bh>\n-33#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bs_\bi_\bz_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+13#include \n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+19\n+20#if HAVE_ALBERTA\n+21\n+22namespace _\bD_\bu_\bn_\be\n+23{\n+24\n+25 namespace Alberta\n+26 {\n+27\n+28 template< int dim >\n+_\b2_\b9 class _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n+30 {\n+31 typedef _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+32\n+33 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_DATA Data;\n 34\n-35//- Local includes\n-36// some cpp defines and include of alberta.h\n-37#include \"_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\"\n+35 static const int dimension = dim;\n+36 static const int numVertices = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be;\n+37 static const int numEdges = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dimension, dimension-1 >::value;\n 38\n-39#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-40#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n-41#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bb_\ba_\bc_\bk_\bu_\bp_\br_\be_\bs_\bt_\bo_\br_\be_\b._\bh_\bh>\n-42\n-43#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-44#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bm_\bi_\bl_\by_\b._\bh_\bh>\n-45#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bl_\be_\bv_\be_\bl_\b._\bh_\bh>\n-46#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-47#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-48#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bh>\n-49#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh>\n-50\n-51#include \"_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh\"\n-52#include \"_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\"\n-53#include \"_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\"\n-54#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-55#include \"_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-56#include \"_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-57#include \"_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-58\n-_\b5_\b9namespace _\bD_\bu_\bn_\be\n-60{\n-61\n-62 // External Forward Declarations\n-63 // -----------------------------\n-64\n-65 template< class Grid >\n-66 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+39 static const int initialSize = 4096;\n+40\n+41 public:\n+42 template< int >\n+43 struct _\bL_\bi_\bb_\br_\ba_\br_\by;\n+44\n+_\b4_\b5 template< int > friend struct _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\be_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\bL_\bi_\bb_\br_\ba_\br_\by;\n+46\n+47 public:\n+_\b4_\b8 typedef int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd[ numVertices ];\n+49\n+_\b5_\b0 static const int _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bi_\bt_\by = 1;\n+51\n+_\b5_\b2 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ()\n+53 : data_( NULL ),\n+54 vertexCount_( -1 ),\n+55 elementCount_( -1 )\n+56 {}\n+57\n+_\b5_\b8 operator Data * () const\n+59 {\n+60 return data_;\n+61 }\n+62\n+_\b6_\b3 int _\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt () const\n+64 {\n+65 return (vertexCount_ < 0 ? data_->n_total_vertices : vertexCount_);\n+66 }\n 67\n-68\n-69\n-70 // AlbertaGrid\n-71 // -----------\n+_\b6_\b8 int _\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt () const\n+69 {\n+70 return (elementCount_ < 0 ? data_->n_macro_elements : elementCount_);\n+71 }\n 72\n-105 template< int dim, int dimworld = Alberta::dimWorld >\n-_\b1_\b0_\b6 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd\n-107 : public _\bG_\br_\bi_\bd_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-108 < dim, dimworld, Alberta::Real, AlbertaGridFamily< dim, dimworld > >\n-109 {\n-110 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n-111 typedef _\bG_\br_\bi_\bd_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-112 < dim, dimworld, _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl, _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> >\n-113 _\bB_\ba_\bs_\be;\n-114\n-_\b1_\b1_\b5 template< int, int, class > friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by;\n-_\b1_\b1_\b6 template< class > friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n-_\b1_\b1_\b7 template< class > friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bL_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n-_\b1_\b1_\b8 template< int, class, bool > friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b1_\b1_\b9 template< class > friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-120\n-121 friend class _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bT_\bh_\bi_\bs >;\n-122 friend struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bT_\bh_\bi_\bs >;\n-123\n-124 friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be< _\bc_\bo_\bn_\bs_\bt _\bT_\bh_\bi_\bs >;\n-125 friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn< _\bc_\bo_\bn_\bs_\bt _\bT_\bh_\bi_\bs >;\n-126\n-127 friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br< dim, dimworld >;\n-128#if (__GNUC__ < 4) && !(defined __ICC)\n-129 // add additional friend decls for gcc 3.4\n-130 friend struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br< dim, dimworld >::MarkSubEntities;\n-131 _\bf_\br_\bi_\be_\bn_\bd _\bs_\bt_\br_\bu_\bc_\bt _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br< dim, dimworld >::MarkSubEntities;\n-132#endif\n-133 _\bf_\br_\bi_\be_\bn_\bd _\bc_\bl_\ba_\bs_\bs _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt< dim, dimworld >;\n-134 _\bf_\br_\bi_\be_\bn_\bd _\bc_\bl_\ba_\bs_\bs _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt< dim, dimworld >;\n-135\n-136 _\bt_\be_\bm_\bp_\bl_\ba_\bt_\be< class, class >\n-_\b1_\b3_\b7 _\bf_\br_\bi_\be_\bn_\bd _\bc_\bl_\ba_\bs_\bs _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bP_\br_\bo_\bl_\bo_\bn_\bg_\bH_\ba_\bn_\bd_\bl_\be_\br;\n-138\n-139 public:\n-_\b1_\b4_\b1 _\bt_\by_\bp_\be_\bd_\be_\bf _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by< dim, dimworld > _\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by;\n-142\n-_\b1_\b4_\b3 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-144\n-_\b1_\b4_\b5 _\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt _\bi_\bn_\bt _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b1_\b4_\b6 _\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt _\bi_\bn_\bt _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd = _\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-147\n-148 // the Traits\n-_\b1_\b4_\b9 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by< dim, dimworld >_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n-150\n-_\b1_\b5_\b2 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt _\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-_\b1_\b5_\b4 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt _\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-155\n-_\b1_\b5_\b7 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-158\n-_\b1_\b6_\b0 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt _\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-_\b1_\b6_\b2 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt _\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-163\n-_\b1_\b6_\b5 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn;\n-166\n-170 [[deprecated(\"Use Communication instead!\")]]\n-_\b1_\b7_\b1 _\bt_\by_\bp_\be_\bd_\be_\bf _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bv_\be_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn;\n-172\n-173 private:\n-175 _\bt_\by_\bp_\be_\bd_\be_\bf _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm<0>::LeafIterator LeafIterator;\n-176\n-178 _\bt_\by_\bp_\be_\bd_\be_\bf _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bd_\bS_\be_\bt _\bI_\bd_\bS_\be_\bt_\bI_\bm_\bp;\n+_\b7_\b3 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &_\be_\bl_\be_\bm_\be_\bn_\bt ( int i ) const;\n+_\b7_\b4 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bv_\be_\br_\bt_\be_\bx ( int i ) const;\n+_\b7_\b5 int &_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int _\be_\bl_\be_\bm_\be_\bn_\bt, int i ) const;\n+_\b7_\b6 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int _\be_\bl_\be_\bm_\be_\bn_\bt, int i ) const;\n+77\n+_\b8_\b2 void _\bc_\br_\be_\ba_\bt_\be ();\n+83\n+_\b9_\b2 void _\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be ();\n+93\n+_\b1_\b0_\b2 void _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be ();\n+103\n+_\b1_\b1_\b2 void _\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( const _\bR_\be_\ba_\bl orientation );\n+113\n+_\b1_\b2_\b4 bool _\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs () const;\n+125\n+_\b1_\b2_\b7 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n+128 {\n+129 if( data_ != NULL )\n+130 {\n+131 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_macro_data( data_ );\n+132 data_ = NULL;\n+133 }\n+134 vertexCount_ = elementCount_ = -1;\n+135 }\n+136\n+_\b1_\b4_\b2 int _\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &id );\n+143\n+_\b1_\b4_\b9 int _\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coords )\n+150 {\n+151 assert( vertexCount_ >= 0 );\n+152 if( vertexCount_ >= data_->n_total_vertices )\n+153 resizeVertices( 2*vertexCount_ );\n+154 copy( coords, _\bv_\be_\br_\bt_\be_\bx( vertexCount_ ) );\n+155 return vertexCount_++;\n+156 }\n+157\n+_\b1_\b6_\b3 int _\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx ( const FieldVector< Real, dimWorld > &coords )\n+164 {\n+165 assert( vertexCount_ >= 0 );\n+166 if( vertexCount_ >= data_->n_total_vertices )\n+167 resizeVertices( 2*vertexCount_ );\n+168 copy( coords, _\bv_\be_\br_\bt_\be_\bx( vertexCount_ ) );\n+169 return vertexCount_++;\n+170 }\n+171\n+_\b1_\b7_\b2 void _\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx &m, const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &t );\n+_\b1_\b7_\b3 void _\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const FieldMatrix< Real, dimWorld, dimWorld >\n+&matrix,\n+174 const FieldVector< Real, dimWorld > &shift );\n+175\n+_\b1_\b7_\b6 void _\bc_\bh_\be_\bc_\bk_\bC_\by_\bc_\bl_\be_\bs ();\n+177\n+_\b1_\b7_\b8 void _\br_\be_\ba_\bd ( const std::string &filename, bool binary = false );\n 179\n-181 _\bs_\bt_\br_\bu_\bc_\bt AdaptationState\n-182 {\n-183 enum Phase { ComputationPhase, PreAdaptationPhase, PostAdaptationPhase };\n-184\n-185 private:\n-186 Phase phase_;\n-187 int coarsenMarked_;\n-188 int refineMarked_;\n-189\n-190 public:\n-191 AdaptationState ()\n-192 : phase_( ComputationPhase ),\n-193 coarsenMarked_( 0 ),\n-194 refineMarked_( 0 )\n-195 {}\n-196\n-197 void mark ( int count )\n-198 {\n-199 if( count < 0 )\n-200 ++coarsenMarked_;\n-201 if( count > 0 )\n-202 refineMarked_ += (2 << count);\n-203 }\n-204\n-205 void unmark ( int count )\n-206 {\n-207 if( count < 0 )\n-208 --coarsenMarked_;\n-209 if( count > 0 )\n-210 refineMarked_ -= (2 << count);\n-211 }\n+_\b1_\b8_\b0 bool _\bw_\br_\bi_\bt_\be ( const std::string &filename, bool binary = false ) const\n+181 {\n+182 if( binary )\n+183 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_macro_data_xdr( data_, filename.c_str() );\n+184 else\n+185 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_macro_data( data_, filename.c_str() );\n+186 }\n+187\n+188 private:\n+189 template< class Vector >\n+190 void copy ( const Vector &x, _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &y )\n+191 {\n+192 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n+193 y[ i ] = x[ i ];\n+194 }\n+195\n+196 void resizeElements ( const int newSize );\n+197\n+198 void resizeVertices ( const int newSize )\n+199 {\n+200 const int oldSize = data_->n_total_vertices;\n+201 data_->n_total_vertices = newSize;\n+202 data_->coords = memReAlloc< GlobalVector >( data_->coords, oldSize, newSize\n+);\n+203 assert( (data_->coords != NULL) || (newSize == 0) );\n+204 }\n+205\n+206 private:\n+207 Data *data_;\n+208 int vertexCount_;\n+209 int elementCount_;\n+210 };\n+211\n 212\n-213 bool coarsen () const\n-214 {\n-215 return (coarsenMarked_ > 0);\n-216 }\n-217\n-218 int refineMarked () const\n-219 {\n-220 return refineMarked_;\n-221 }\n+213\n+214 // MacroData::Library\n+215 // ------------------\n+216\n+217 template< int dim >\n+218 template< int >\n+_\b2_\b1_\b9 struct _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba< dim >::_\bL_\bi_\bb_\br_\ba_\br_\by\n+220 {\n+_\b2_\b2_\b1 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba;\n 222\n-223 void preAdapt ()\n-224 {\n-225 if( phase_ != ComputationPhase )\n-226 error( \"preAdapt may only be called in computation phase.\" );\n-227 phase_ = PreAdaptationPhase;\n-228 }\n-229\n-230 void adapt ()\n-231 {\n-232 if( phase_ != PreAdaptationPhase )\n-233 error( \"adapt may only be called in preadapdation phase.\" );\n-234 phase_ = PostAdaptationPhase;\n-235 }\n-236\n-237 void postAdapt ()\n-238 {\n-239 if( phase_ != PostAdaptationPhase )\n-240 error( \"postAdapt may only be called in postadaptation phase.\" );\n-241 phase_ = ComputationPhase;\n-242\n-243 coarsenMarked_ = 0;\n-244 refineMarked_ = 0;\n-245 }\n-246\n-247 private:\n-248 void error ( const std::string &_\bm_\be_\bs_\bs_\ba_\bg_\be )\n-249 {\n-250 _\bD_\bU_\bN_\bE_\b__\bT_\bH_\bR_\bO_\bW( _\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bS_\bt_\ba_\bt_\be_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, _\bm_\be_\bs_\bs_\ba_\bg_\be );\n+223 static bool _\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData );\n+_\b2_\b2_\b4 static void _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be ( _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData );\n+225 static void _\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( [[maybe_unused]] _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData,\n+226 [[maybe_unused]] const _\bR_\be_\ba_\bl orientation );\n+227\n+228 private:\n+229 static _\bR_\be_\ba_\bl edgeLength ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &e,\n+int edge );\n+230 static int longestEdge ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &e );\n+231\n+232 template< class Type >\n+233 static void rotate ( Type *array, int i, int shift );\n+234\n+235 static void rotate ( _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, int i, int shift );\n+236 static void swap ( _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, int el, int v1, int v2 );\n+237 };\n+238\n+239\n+240\n+241 // Implementation of MacroData\n+242 // ---------------------------\n+243\n+244 template< int dim >\n+245 inline typename _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &\n+_\b2_\b4_\b6 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt ( int i ) const\n+247 {\n+248 assert( (i >= 0) && (i < data_->n_macro_elements) );\n+249 const int offset = i * numVertices;\n+250 return *reinterpret_cast< ElementId * >( data_->mel_vertices + offset );\n 251 }\n-252 };\n+252\n 253\n-254 template< class DataHandler >\n-255 struct AdaptationCallback;\n-256\n-257 // max number of allowed levels is 64\n-258 static const int MAXL = 64;\n-259\n-260 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> ElementInfo;\n-261 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> MeshPointer;\n-262 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> DofNumbering;\n-263 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> LevelProvider;\n-264\n-265 public:\n-_\b2_\b6_\b6 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd ( const _\bT_\bh_\bi_\bs & ) = delete;\n-_\b2_\b6_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs & ) = delete;\n-268\n-270 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd ();\n-271\n-277 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> &_\bm_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba,\n-278 const std::shared_ptr< _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd_\b _\b> >\n-&projection\n-279 = std::shared_ptr< _\bD_\bu_\bn_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd_\b _\b> >() );\n-280\n-281 template< class Proj, class Impl >\n-282 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> &_\bm_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba,\n-283 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\br_\bo_\bj_\b,_\b _\bI_\bm_\bp_\bl_\b _\b> &projectionFactory\n-);\n-284\n-289 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd ( const std::string &_\bm_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be );\n-290\n-292 _\b~_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd ();\n-293\n-296 int _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl () const;\n-297\n-299 template\n-300 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bd_\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Partition::\n-LevelIterator\n-_\b3_\b0_\b1 _\bl_\bb_\be_\bg_\bi_\bn (int level) const;\n-302\n-304 template\n-305 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bd_\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Partition::\n-LevelIterator\n-_\b3_\b0_\b6 _\bl_\be_\bn_\bd (int level) const;\n-307\n-309 template< int codim >\n-310 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b1_\b1 _\bl_\bb_\be_\bg_\bi_\bn ( int level ) const;\n-312\n-314 template< int codim >\n-315 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b1_\b6 _\bl_\be_\bn_\bd ( int level ) const;\n+254 template< int dim >\n+_\b2_\b5_\b5 inline _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\be_\br_\bt_\be_\bx ( int i ) const\n+256 {\n+257 assert( (i >= 0) && (i < data_->n_total_vertices) );\n+258 return data_->coords[ i ];\n+259 }\n+260\n+261\n+262 template< int dim >\n+_\b2_\b6_\b3 inline int &_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int element, int i ) const\n+264 {\n+265 assert( (element >= 0) && (element < data_->n_macro_elements) );\n+266 assert( (i >= 0) && (i < numVertices) );\n+267 return data_->neigh[ element*numVertices + i ];\n+268 }\n+269\n+270\n+271 template< int dim >\n+_\b2_\b7_\b2 inline _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd &_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int element, int i )\n+const\n+273 {\n+274 assert( (element >= 0) && (element < data_->n_macro_elements) );\n+275 assert( (i >= 0) && (i < numVertices) );\n+276 return data_->boundary[ element*numVertices + i ];\n+277 }\n+278\n+279\n+280 template< int dim >\n+_\b2_\b8_\b1 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be ()\n+282 {\n+283 release();\n+284 data_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA alloc_macro_data( dim, initialSize, initialSize );\n+285 data_->boundary = memAlloc< BoundaryId >( initialSize*numVertices );\n+286 if( dim == 3 )\n+287 data_->el_type = memAlloc< ElementType >( initialSize );\n+288 vertexCount_ = elementCount_ = 0;\n+289 elementCount_ = 0;\n+290 }\n+291\n+292\n+293 template< int dim >\n+_\b2_\b9_\b4 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be ()\n+295 {\n+296 if( (vertexCount_ >= 0) && (elementCount_ >= 0) )\n+297 {\n+298 resizeVertices( vertexCount_ );\n+299 resizeElements( elementCount_ );\n+300 _\bA_\bL_\bB_\bE_\bR_\bT_\bA compute_neigh_fast( data_ );\n+301\n+302 // assign default boundary id (if none is assigned)\n+303 for( int element = 0; element < elementCount_; ++element )\n+304 {\n+305 for( int i = 0; i < numVertices; ++i )\n+306 {\n+307 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd &id = boundaryId( element, i );\n+308 if( neighbor( element, i ) >= 0 )\n+309 {\n+310 assert( id == _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by );\n+311 id = _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by;\n+312 }\n+313 else\n+314 id = (id == _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ? _\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by : id);\n+315 }\n+316 }\n 317\n-319 template< int codim, PartitionIteratorType pitype >\n-320 typename Traits\n-321 ::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Partition< pitype >::LeafIterator\n-_\b3_\b2_\b2 _\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn () const;\n+318 vertexCount_ = elementCount_ = -1;\n+319 }\n+320 assert( (vertexCount_ < 0) && (elementCount_ < 0) );\n+321 }\n+322\n 323\n-325 template< int codim, PartitionIteratorType pitype >\n-326 typename Traits\n-327 ::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Partition< pitype >::LeafIterator\n-_\b3_\b2_\b8 _\bl_\be_\ba_\bf_\be_\bn_\bd () const;\n+324 template< int dim >\n+_\b3_\b2_\b5 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be ()\n+326 {\n+327 _\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be( *this );\n+328 }\n 329\n-331 template< int codim >\n-332 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b3_\b3 _\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn () const;\n-334\n-336 template< int codim >\n-337 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b3_\b3_\b8 _\bl_\be_\ba_\bf_\be_\bn_\bd () const;\n-339\n-344 int _\bs_\bi_\bz_\be (int level, int _\bc_\bo_\bd_\bi_\bm) const;\n-345\n-347 int _\bs_\bi_\bz_\be (int level, GeometryType type) const;\n-348\n-350 int _\bs_\bi_\bz_\be (int _\bc_\bo_\bd_\bi_\bm) const;\n+330\n+331 template< int dim >\n+_\b3_\b3_\b2 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( const _\bR_\be_\ba_\bl orientation )\n+333 {\n+334 _\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn( *this, orientation );\n+335 }\n+336\n+337\n+338 template< int dim >\n+_\b3_\b3_\b9 inline bool _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs () const\n+340 {\n+341 return _\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs( *this );\n+342 }\n+343\n+344\n+345 template< int dim >\n+_\b3_\b4_\b6 inline int _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const ElementId &id )\n+347 {\n+348 assert( elementCount_ >= 0 );\n+349 if( elementCount_ >= data_->n_macro_elements )\n+350 resizeElements( 2*elementCount_ );\n 351\n-353 int _\bs_\bi_\bz_\be (GeometryType type) const;\n-354\n-_\b3_\b5_\b6 std::size_t _\bn_\bu_\bm_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs () const\n-357 {\n-358 return numBoundarySegments_;\n-359 }\n+352 ElementId &e = element( elementCount_ );\n+353 for( int i = 0; i < numVertices; ++i )\n+354 {\n+355 e[ i ] = id[ i ];\n+356 boundaryId( elementCount_, i ) = _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by;\n+357 }\n+358 if( dim == 3 )\n+359 data_->el_type[ elementCount_ ] = 0;\n 360\n-_\b3_\b6_\b2 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw ( int level ) const\n-363 {\n-364 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bV_\bi_\be_\bw;\n-365 typedef typename View::GridViewImp _\bV_\bi_\be_\bw_\bI_\bm_\bp;\n-366 return _\bV_\bi_\be_\bw( _\bV_\bi_\be_\bw_\bI_\bm_\bp( *this, level ) );\n-367 }\n-368\n-_\b3_\b7_\b0 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw () const\n-371 {\n-372 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bV_\bi_\be_\bw;\n-373 typedef typename View::GridViewImp _\bV_\bi_\be_\bw_\bI_\bm_\bp;\n-374 return _\bV_\bi_\be_\bw( _\bV_\bi_\be_\bw_\bI_\bm_\bp( *this ) );\n-375 }\n-376\n-377 public:\n-378 //***************************************************************\n-379 // Interface for Adaptation\n-380 //***************************************************************\n-381 using _\bB_\ba_\bs_\be_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk;\n-382 using _\bB_\ba_\bs_\be_\b:_\b:_\bm_\ba_\br_\bk;\n-383\n-385 int _\bg_\be_\bt_\bM_\ba_\br_\bk ( const typename Traits::template Codim< 0 >::Entity &e )\n-const;\n-386\n-388 bool _\bm_\ba_\br_\bk ( int refCount, const typename Traits::template Codim< 0 >::\n-Entity &e );\n-389\n-391 void _\bg_\bl_\bo_\bb_\ba_\bl_\bR_\be_\bf_\bi_\bn_\be ( int refCount );\n-392\n-393 template< class DataHandle >\n-394 void _\bg_\bl_\bo_\bb_\ba_\bl_\bR_\be_\bf_\bi_\bn_\be ( int refCount, _\bA_\bd_\ba_\bp_\bt_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bT_\bh_\bi_\bs_\b,\n-_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b _\b> &handle );\n-395\n-397 bool _\ba_\bd_\ba_\bp_\bt ();\n-398\n-400 template< class DataHandle >\n-401 bool _\ba_\bd_\ba_\bp_\bt ( _\bA_\bd_\ba_\bp_\bt_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bT_\bh_\bi_\bs_\b,_\b _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b _\b> &handle );\n+361 return elementCount_++;\n+362 }\n+363\n+364\n+365 template< int dim >\n+366 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b6_\b7_\b _\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx &matrix, const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &shift )\n+368 {\n+369 int &count = data_->n_wall_trafos;\n+370 _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *&array = data_->wall_trafos;\n+371\n+372 // resize wall trafo array\n+373 array = memReAlloc< AffineTransformation >( array, count, count+1 );\n+374 assert( data_->wall_trafos != NULL );\n+375\n+376 // copy matrix and shift\n+377 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n+378 copy( matrix[ i ], array[ count ].M[ i ] );\n+379 copy( shift, array[ count ].t );\n+380 ++count;\n+381 }\n+382\n+383 template< int dim >\n+384 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b8_\b5_\b _\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const FieldMatrix< Real, dimWorld, dimWorld > &matrix,\n+386 const FieldVector< Real, dimWorld > &shift )\n+387 {\n+388 int &count = data_->n_wall_trafos;\n+389 _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *&array = data_->wall_trafos;\n+390\n+391 // resize wall trafo array\n+392 array = memReAlloc< AffineTransformation >( array, count, count+1 );\n+393 assert( data_->wall_trafos != NULL );\n+394\n+395 // copy matrix and shift\n+396 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n+397 copy( matrix[ i ], array[ count ].M[ i ] );\n+398 copy( shift, array[ count ].t );\n+399 ++count;\n+400 }\n+401\n 402\n-404 bool _\bp_\br_\be_\bA_\bd_\ba_\bp_\bt ();\n-405\n-407 void _\bp_\bo_\bs_\bt_\bA_\bd_\ba_\bp_\bt();\n-408\n-_\b4_\b1_\b1 const _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn &_\bc_\bo_\bm_\bm () const\n-412 {\n-413 return comm_;\n-414 }\n-415\n-_\b4_\b1_\b6 static std::string _\bt_\by_\bp_\be_\bN_\ba_\bm_\be ()\n-417 {\n-418 std::ostringstream s;\n-419 s << \"AlbertaGrid< \" << dim << \", \" << dimworld << \" >\";\n-420 return s.str();\n-421 }\n+403 template< int dim >\n+_\b4_\b0_\b4 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bC_\by_\bc_\bl_\be_\bs ()\n+405 {\n+406 // ensure that the macro data has been finalized\n+407 finalize();\n+408 _\bA_\bL_\bB_\bE_\bR_\bT_\bA macro_test( data_, NULL );\n+409 }\n+410\n+411\n+412 template< int dim >\n+_\b4_\b1_\b3 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\ba_\bd ( const std::string &filename, bool\n+binary )\n+414 {\n+415 release();\n+416 if( binary )\n+417 data_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_macro_xdr( filename.c_str() );\n+418 else\n+419 data_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_macro( filename.c_str() );\n+420 }\n+421\n 422\n-424 template< class EntitySeed >\n-425 typename Traits::template Codim< EntitySeed::codimension >::Entity\n-_\b4_\b2_\b6 _\be_\bn_\bt_\bi_\bt_\by ( const _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd &seed ) const\n-427 {\n-428 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:\n-_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp_\bl EntityImpl;\n-429 return EntityImpl( *this, seed._\bi_\bm_\bp_\bl().elementInfo( _\bm_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br() ),\n-seed._\bi_\bm_\bp_\bl().subEntity() );\n-430 }\n-431\n-432 //**********************************************************\n-433 // End of Interface Methods\n-434 //**********************************************************\n-436 bool _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd( const std::string &filename, _\bc_\bt_\by_\bp_\be time ) const;\n-437\n-439 bool _\br_\be_\ba_\bd_\bG_\br_\bi_\bd( const std::string &filename, _\bc_\bt_\by_\bp_\be &time );\n+423 template< int dim >\n+424 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs ( const int newSize )\n+425 {\n+426 const int oldSize = data_->n_macro_elements;\n+427 data_->n_macro_elements = newSize;\n+428 data_->mel_vertices = _\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc( data_->mel_vertices, oldSize*numVertices,\n+newSize*numVertices );\n+429 data_->boundary = _\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc( data_->boundary, oldSize*numVertices,\n+newSize*numVertices );\n+430 if( dim == 3 )\n+431 data_->el_type = _\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc( data_->el_type, oldSize, newSize );\n+432 assert( (newSize == 0) || (data_->mel_vertices != NULL) );\n+433 }\n+434\n+435 }\n+436\n+437}\n+438\n+439#endif // #if HAVE_ALBERTA\n 440\n-441 // return hierarchic index set\n-_\b4_\b4_\b2 const _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt & _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt () const { return hIndexSet_;\n-}\n-443\n-445 const typename Traits :: LevelIndexSet & _\bl_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt (int level) const;\n-446\n-448 const typename Traits :: LeafIndexSet & _\bl_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt () const;\n-449\n-_\b4_\b5_\b1 const _\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt &_\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt () const\n-452 {\n-453 return idSet_;\n-454 }\n-455\n-_\b4_\b5_\b7 const _\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt &_\bl_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt () const\n-458 {\n-459 return idSet_;\n-460 }\n-461\n-462 // access to mesh pointer, needed by some methods\n-_\b4_\b6_\b3 _\bA_\bL_\bB_\bE_\bR_\bT_\bA _\bM_\bE_\bS_\bH* _\bg_\be_\bt_\bM_\be_\bs_\bh () const\n-464 {\n-465 return mesh_;\n-466 };\n-467\n-_\b4_\b6_\b8 const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br () const\n-469 {\n-470 return mesh_;\n-471 }\n-472\n-_\b4_\b7_\b3 const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &_\bd_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg () const\n-474 {\n-475 return dofNumbering_;\n-476 }\n-477\n-_\b4_\b7_\b8 const _\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br &_\bl_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br () const\n-479 {\n-480 return levelProvider_;\n-481 }\n-482\n-_\b4_\b8_\b3 int _\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba ( int _\bc_\bo_\bd_\bi_\bm, int i ) const\n-484 {\n-485 return numberingMap_._\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba( _\bc_\bo_\bd_\bi_\bm, i );\n-486 }\n-487\n-_\b4_\b8_\b8 int _\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be ( int _\bc_\bo_\bd_\bi_\bm, int i ) const\n-489 {\n-490 return numberingMap_._\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be( _\bc_\bo_\bd_\bi_\bm, i );\n-491 }\n-492\n-_\b4_\b9_\b3 int _\bg_\be_\bn_\be_\br_\bi_\bc_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba ( int _\bc_\bo_\bd_\bi_\bm, int i ) const\n-494 {\n-495 return genericNumberingMap_.dune2alberta( _\bc_\bo_\bd_\bi_\bm, i );\n-496 }\n-497\n-_\b4_\b9_\b8 int _\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bg_\be_\bn_\be_\br_\bi_\bc ( int _\bc_\bo_\bd_\bi_\bm, int i ) const\n-499 {\n-500 return genericNumberingMap_.alberta2dune( _\bc_\bo_\bd_\bi_\bm, i );\n-501 }\n-502\n-503 private:\n-504 typedef std::vector ArrayType;\n-505\n-506 void setup ();\n-507\n-508 // make the calculation of indexOnLevel and so on.\n-509 // extra method because of Reihenfolge\n-510 void calcExtras();\n-511\n-512 private:\n-513 // delete mesh and all vectors\n-514 void removeMesh();\n-515\n-516 //***********************************************************************\n-517 // MemoryManagement for Entitys and Geometrys\n-518 //**********************************************************************\n-519 typedef _\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be_\b _\bC_\bo_\bd_\bi_\bm_\b<_\b _\b0_\b _\b>_\b:_\b:\n-_\bE_\bn_\bt_\bi_\bt_\by >\n-_\b5_\b2_\b0 _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt;\n-521\n-522 public:\n-523 friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< _\bc_\bo_\bn_\bs_\bt _\bT_\bh_\bi_\bs >;\n-524\n-525 template< int codim >\n-526 static int\n-_\b5_\b2_\b7 _\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &_\be_\bn_\bt_\bi_\bt_\by )\n-528 {\n-529 return _\be_\bn_\bt_\bi_\bt_\by.impl().twist();\n-530 }\n-531\n-532 template< int codim >\n-533 static int\n-_\b5_\b3_\b4 _\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\b0_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &_\be_\bn_\bt_\bi_\bt_\by, int\n-subEntity )\n-535 {\n-536 return _\be_\bn_\bt_\bi_\bt_\by.impl().template _\bt_\bw_\bi_\bs_\bt_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>( subEntity );\n-537 }\n-538\n-539 static int\n-_\b5_\b4_\b0 _\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection )\n-541 {\n-542 return intersection._\bi_\bm_\bp_\bl().twistInInside();\n-543 }\n-544\n-545 static int\n-_\b5_\b4_\b6 _\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection )\n-547 {\n-548 return intersection._\bi_\bm_\bp_\bl().twistInOutside();\n-549 }\n-550\n-551 public:\n-552 // read global element number from elNumbers_\n-553 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &\n-554 _\bg_\be_\bt_\bC_\bo_\bo_\br_\bd ( const ElementInfo &elementInfo, int vertex ) const;\n-555\n-556 private:\n-557 // pointer to an Albert Mesh, which contains the data\n-558 MeshPointer mesh_;\n-559\n-560 // communication\n-561 _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn comm_;\n-562\n-563 // maximum level of the mesh\n-564 int maxlevel_;\n-565\n-566 // number of boundary segments within the macro grid\n-567 size_t numBoundarySegments_;\n-568\n-569 // map between ALBERTA and DUNE numbering\n-570 _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b>\n-numberingMap_;\n-571 _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b>\n-genericNumberingMap_;\n-572\n-573 DofNumbering dofNumbering_;\n-574\n-575 LevelProvider levelProvider_;\n-576\n-577 // hierarchical numbering of AlbertaGrid, unique per codim\n-578 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt hIndexSet_;\n-579\n-580 // the id set of this grid\n-581 IdSetImp idSet_;\n-582\n-583 // the level index set, is generated from the HierarchicIndexSet\n-584 // is generated, when accessed\n-585 mutable std::vector< typename GridFamily::LevelIndexSetImp * >\n-levelIndexVec_;\n-586\n-587 // the leaf index set, is generated from the HierarchicIndexSet\n-588 // is generated, when accessed\n-589 mutable typename _\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp* leafIndexSet_;\n-590\n-591 _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b<_\b _\bT_\bh_\bi_\bs_\b _\b> sizeCache_;\n-592\n-593 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> MarkerVector;\n-594\n-595 // needed for VertexIterator, mark on which element a vertex is treated\n-596 mutable MarkerVector leafMarkerVector_;\n-597\n-598 // needed for VertexIterator, mark on which element a vertex is treated\n-599 mutable std::vector< MarkerVector > levelMarkerVector_;\n-600\n-601#if DUNE_ALBERTA_CACHE_COORDINATES\n-602 _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> coordCache_;\n-603#endif\n-604\n-605 // current state of adaptation\n-606 AdaptationState adaptationState_;\n-607 };\n-608\n-609} // namespace Dune\n-610\n-611#include \"_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b._\bc_\bc\"\n-612\n-613// undef all dangerous defines\n-614#undef DIM\n-615#undef DIM_OF_WORLD\n-616\n-617#ifdef _ABS_NOT_DEFINED_\n-618#undef ABS\n-619#endif\n-620\n-621#ifdef _MIN_NOT_DEFINED_\n-622#undef MIN\n-623#endif\n-624\n-625#ifdef _MAX_NOT_DEFINED_\n-626#undef MAX\n-627#endif\n-628\n-629#ifdef obstack_chunk_alloc\n-630#undef obstack_chunk_alloc\n-631#endif\n-632#ifdef obstack_chunk_free\n-633#undef obstack_chunk_free\n-634#endif\n-635#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bu_\bn_\bd_\be_\bf_\bi_\bn_\be_\b-_\b3_\b._\b0_\b._\bh_\bh>\n-636\n-637// We use MEM_ALLOC, so undefine it here.\n-638#undef MEM_ALLOC\n-639\n-640// We use MEM_REALLOC, so undefine it here.\n-641#undef MEM_REALLOC\n-642\n-643// We use MEM_CALLOC, so undefine it here.\n-644#undef MEM_CALLOC\n-645\n-646// We use MEM_FREE, so undefine it here.\n-647#undef MEM_FREE\n-648\n-649// Macro ERROR may be defined by alberta_util.h. If so, undefine it.\n-650#ifdef ERROR\n-651#undef ERROR\n-652#endif // #ifdef ERROR\n-653\n-654// Macro ERROR_EXIT may be defined by alberta_util.h. If so, undefine it.\n-655#ifdef ERROR_EXIT\n-656#undef ERROR_EXIT\n-657#endif // #ifdef ERROR_EXIT\n-658\n-659// Macro WARNING may be defined by alberta_util.h. If so, undefine it.\n-660#ifdef WARNING\n-661#undef WARNING\n-662#endif // #ifdef WARNING\n-663\n-664// Macro TEST may be defined by alberta_util.h. If so, undefine it.\n-665#ifdef TEST\n-666#undef TEST\n-667#endif // #ifdef TEST\n-668\n-669// Macro TEST_EXIT may be defined by alberta_util.h. If so, undefine it.\n-670#ifdef TEST_EXIT\n-671#undef TEST_EXIT\n-672#endif // #ifdef TEST_EXIT\n-673\n-674// Macro DEBUG_TEST may be defined by alberta_util.h. If so, undefine it.\n-675#ifdef DEBUG_TEST\n-676#undef DEBUG_TEST\n-677#endif // #ifdef DEBUG_TEST\n-678\n-679// Macro DEBUG_TEST_EXIT may be defined by alberta_util.h. If so, undefine\n-it.\n-680#ifdef DEBUG_TEST_EXIT\n-681#undef DEBUG_TEST_EXIT\n-682#endif // #ifdef DEBUG_TEST_EXIT\n-683\n-684// Macro INFO may be defined by alberta_util.h. If so, undefine it.\n-685#ifdef INFO\n-686#undef INFO\n-687#endif // #ifdef INFO\n-688\n-689// Macro PRINT_INFO may be defined by alberta_util.h. If so, undefine it.\n-690#ifdef PRINT_INFO\n-691#undef PRINT_INFO\n-692#endif // #ifdef PRINT_INFO\n-693\n-694// Macro PRINT_INT_VEC may be defined by alberta_util.h. If so, undefine it.\n-695#ifdef PRINT_INT_VEC\n-696#undef PRINT_INT_VEC\n-697#endif // #ifdef PRINT_INT_VEC\n-698\n-699// Macro PRINT_REAL_VEC may be defined by alberta_util.h. If so, undefine\n-it.\n-700#ifdef PRINT_REAL_VEC\n-701#undef PRINT_REAL_VEC\n-702#endif // #ifdef PRINT_REAL_VEC\n-703\n-704// Macro WAIT may be defined by alberta_util.h. If so, undefine it.\n-705#ifdef WAIT\n-706#undef WAIT\n-707#endif // #ifdef WAIT\n-708\n-709// Macro WAIT_REALLY may be defined by alberta_util.h. If so, undefine it.\n-710#ifdef WAIT_REALLY\n-711#undef WAIT_REALLY\n-712#endif // #ifdef WAIT_REALLY\n-713\n-714// Macro GET_WORKSPACE may be defined by alberta_util.h. If so, undefine it.\n-715#ifdef GET_WORKSPACE\n-716#undef GET_WORKSPACE\n-717#endif // #ifdef GET_WORKSPACE\n-718\n-719// Macro FREE_WORKSPACE may be defined by alberta_util.h. If so, undefine\n-it.\n-720#ifdef FREE_WORKSPACE\n-721#undef FREE_WORKSPACE\n-722#endif // #ifdef FREE_WORKSPACE\n-723\n-724// Macro MAT_ALLOC may be defined by alberta_util.h. If so, undefine it.\n-725#ifdef MAT_ALLOC\n-726#undef MAT_ALLOC\n-727#endif // #ifdef MAT_ALLOC\n-728\n-729// Macro MAT_FREE may be defined by alberta_util.h. If so, undefine it.\n-730#ifdef MAT_FREE\n-731#undef MAT_FREE\n-732#endif // #ifdef MAT_FREE\n-733\n-734// Macro NAME may be defined by alberta_util.h. If so, undefine it.\n-735#ifdef NAME\n-736#undef NAME\n-737#endif // #ifdef NAME\n-738\n-739// Macro GET_STRUCT may be defined by alberta_util.h. If so, undefine it.\n-740#ifdef GET_STRUCT\n-741#undef GET_STRUCT\n-742#endif // #ifdef GET_STRUCT\n-743\n-744// Macro ADD_PARAMETER may be defined by alberta_util.h. If so, undefine it.\n-745#ifdef ADD_PARAMETER\n-746#undef ADD_PARAMETER\n-747#endif // #ifdef ADD_PARAMETER\n-748\n-749// Macro GET_PARAMETER may be defined by alberta_util.h. If so, undefine it.\n-750#ifdef GET_PARAMETER\n-751#undef GET_PARAMETER\n-752#endif // #ifdef GET_PARAMETER\n-753\n-_\b7_\b5_\b4#define _ALBERTA_H_\n-755\n-756#endif // HAVE_ALBERTA || DOXYGEN\n-757\n-758#endif\n-_\ba_\bd_\ba_\bp_\bt_\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\b._\bh_\bh\n-interfaces and wrappers needed for the callback adaptation provided by\n-AlbertaGrid and dune-ALUGrid\n-_\bs_\bi_\bz_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n-Provides size cache classes to implement the grids size method efficiently.\n-_\bc_\bo_\bo_\br_\bd_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n-_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b._\bc_\bc\n-_\bl_\be_\bv_\be_\bl_\b._\bh_\bh\n-_\bu_\bn_\bd_\be_\bf_\bi_\bn_\be_\b-_\b3_\b._\b0_\b._\bh_\bh\n-Contains #undefs for all preprocessor macros defined by alberta.\n-_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+441#endif\n _\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh\n _\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n-_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx\n+ALBERTA REAL_DD GlobalMatrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+ALBERTA AFF_TRAFO AffineTransformation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+ALBERTA BNDRY_TYPE BoundaryId\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+static const int InteriorBoundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:59\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n ALBERTA REAL Real\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc\n+Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+static const int DirichletBoundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n ALBERTA REAL_D GlobalVector\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd\n-[ provides Dune::Grid ]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\br_\be_\ba_\bd_\bG_\br_\bi_\bd\n-bool readGrid(const std::string &filename, ctype &time)\n-read Grid from file filename and store time of mesh in time\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:585\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-const DofNumbering & dofNumbering() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:473\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bn_\be_\br_\bi_\bc_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba\n-int generic2alberta(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:493\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bt_\by_\bp_\be_\bN_\ba_\bm_\be\n-static std::string typeName()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:416\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn\n-Traits::template Codim< codim >::template Partition< pitype >::LeafIterator\n-leafbegin() const\n-return LeafIterator which points to first leaf entity\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const HierarchicIndexSet & hierarchicIndexSet() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:442\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bn_\bd\n-Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend\n-(int level) const\n-one past the end on this level\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\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 agrid.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba\n-int dune2alberta(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:483\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-Traits::Communication Communication\n-type of communication\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n-int maxLevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:483\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd\n-AlbertaGrid()\n-create an empty grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\bb_\be_\bg_\bi_\bn\n-Traits::template Codim< codim >::LevelIterator lbegin(int level) const\n-Iterator to first entity of given codim on level.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-const LevelProvider & levelProvider() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:478\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-static int getTwistInOutside(const typename Traits::LeafIntersection\n-&intersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:546\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bC_\bo_\bo_\br_\bd\n-const Alberta::GlobalVector & getCoord(const ElementInfo &elementInfo, int\n-vertex) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:471\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bn_\bd\n-Traits::template Codim< codim >::LevelIterator lend(int level) const\n-one past the end on this level\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Traits::LeafGridView leafGridView() const\n-View for the leaf grid for All_Partition.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n-bool adapt()\n-Refine all positive marked leaf entities, coarsen all negative marked entities\n-if possible.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:415\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static const int dimensionworld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-static int getTwistInInside(const typename Traits::LeafIntersection\n-&intersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:540\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bp_\bo_\bs_\bt_\bA_\bd_\ba_\bp_\bt\n-void postAdapt()\n-clean up some markers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:356\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn\n-Traits::template Codim< codim >::LeafIterator leafbegin() const\n-return LeafIterator which points to first leaf entity\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-const LocalIdSet & localIdSet() const\n-return local IdSet\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:457\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bn_\bu_\bm_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs\n-std::size_t numBoundarySegments() const\n-number of boundary segments within the macro grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:356\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n-GridFamily::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd\n-AlbertaGrid(const This &)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bv_\be_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-Communication CollectiveCommunication\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\ba_\bf_\be_\bn_\bd\n-Traits::template Codim< codim >::LeafIterator leafend() const\n-return LeafIterator which points behind last leaf entity\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const Traits::LevelIndexSet & levelIndexSet(int level) const\n-return level index set for given level\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:520\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bg_\be_\bn_\be_\br_\bi_\bc\n-int alberta2generic(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt\n-static int getTwist(const typename Traits::template Codim< codim >::Entity\n-&entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:527\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bo_\bm_\bm\n-const Communication & comm() const\n-return reference to communication, if MPI found this is specialisation for MPI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bM_\be_\bs_\bh\n-ALBERTA MESH * getMesh() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:463\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int level, int codim) const\n-Number of grid entities per level and codim because lbegin and lend are none\n-const,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:490\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Traits::HierarchicIndexSet HierarchicIndexSet\n-type of hierarchic index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const Traits::LeafIndexSet & leafIndexSet() const\n-return leaf index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:535\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\ba_\bf_\be_\bn_\bd\n-Traits::template Codim< codim >::template Partition< pitype >::LeafIterator\n-leafend() const\n-return LeafIterator which points behind last leaf entity\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd\n-bool writeGrid(const std::string &filename, ctype time) const\n-write Grid to file in Xdr\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:575\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Traits::LevelGridView levelGridView(int level) const\n-View for a grid level for All_Partition.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:362\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be\n-int alberta2dune(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:488\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const This &)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-AlbertaGridFamily< dim, dimworld >::Traits Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bT_\bw_\bi_\bs_\bt\n-static int getTwist(const typename Traits::template Codim< 0 >::Entity &entity,\n-int subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:534\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bl_\bb_\be_\bg_\bi_\bn\n-Traits::template Codim< cd >::template Partition< pitype >::LevelIterator\n-lbegin(int level) const\n-Iterator to first entity of given codim on level.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-const GlobalIdSet & globalIdSet() const\n-return global IdSet\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:451\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl_\bR_\be_\bf_\bi_\bn_\be\n-void globalRefine(int refCount)\n-uses the interface, mark on entity and refineLocal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:304\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk\n-int getMark(const typename Traits::template Codim< 0 >::Entity &e) const\n-returns adaptation mark for given entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:408\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\be_\bn_\bt_\bi_\bt_\by\n-Traits::template Codim< EntitySeed::codimension >::Entity entity(const\n-EntitySeed &seed) const\n-obtain Entity from EntitySeed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\b~_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd\n-~AlbertaGrid()\n-desctructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bp_\br_\be_\bA_\bd_\ba_\bp_\bt\n-bool preAdapt()\n-returns true, if a least one element is marked for coarsening\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:348\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bm_\ba_\br_\bk\n-bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)\n-Marks an entity to be refined/coarsened in a subsequent adapt.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid.cc:385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b:_\b:_\bm_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-const MeshPointer & meshPointer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:468\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bP_\br_\bo_\bl_\bo_\bn_\bg_\bH_\ba_\bn_\bd_\bl_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/datahandle.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bm_\bp_\bl\n-Implementation & impl()\n-access to the underlying implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersectioniterator.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/indexsets.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bd_\bS_\be_\bt\n-hierarchic index set of AlbertaGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/indexsets.hh:534\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/indexsets.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\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 albertagrid/gridfamily.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static const int dimensionworld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\bI_\bm_\bp\n-AlbertaGridIndexSet< dim, dimworld > LeafIndexSetImp\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Alberta::Real ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-Dune::Communication< No_Comm > Communication\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridfamily.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridview.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bL_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/gridview.hh:299\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bu_\bn_\be_\b2_\bA_\bl_\bb_\be_\br_\bt_\ba_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\ba_\bl_\bb_\be_\br_\bt_\ba_\b2_\bd_\bu_\bn_\be\n-int alberta2dune(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:397\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\bM_\ba_\bp_\b:_\b:_\bd_\bu_\bn_\be_\b2_\ba_\bl_\bb_\be_\br_\bt_\ba\n-int dune2alberta(int codim, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-marker assigning subentities to one element containing them\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface class for the Grid's adapt method where the parameter is a\n-AdaptDataHandleInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn adaptcallback.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-Store a reference to an entity with a minimal memory footprint.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entityseed.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bi_\bm_\bp_\bl\n-Implementation & impl()\n-access to the underlying implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entityseed.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:862\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl_\b,\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:_\bm_\ba_\br_\bk\n-bool mark(int refCount, const typename Traits ::template Codim< 0 >::Entity &e)\n-Marks an entity to be refined/coarsened in a subsequent adapt.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:915\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b,_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl_\b,\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bF_\ba_\bm_\bi_\bl_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk\n-int getMark(const typename Traits::template Codim< 0 >::Entity &e) const\n-returns adaptation mark for given entity, i.e. here the default implementation\n-returns 0.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:927\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:1107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Provide a generic factory class for unstructured grids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be\n-organizes the caching of sizes for one grid and one GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:33\n-_\bb_\ba_\bc_\bk_\bu_\bp_\br_\be_\bs_\bt_\bo_\br_\be_\b._\bh_\bh\n-_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n-_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bh\n-_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n-_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh\n-_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n-_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-Provide a generic factory class for unstructured grids.\n-_\bg_\br_\bi_\bd_\bf_\ba_\bm_\bi_\bl_\by_\b._\bh_\bh\n-provides the GridFamily for AlbertaGrid\n-_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-Implementation of the IntersectionIterator for AlbertaGrid.\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\be_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\bL_\bi_\bb_\br_\ba_\br_\by\n+friend struct InstantiateMacroDataLibrary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+BoundaryId & boundaryId(int element, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n+int insertVertex(const GlobalVector &coords)\n+insert vertex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd\n+int ElementId[numVertices]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bi_\bt_\by\n+static const int supportPeriodicity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+release the macro data structure\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt\n+int elementCount() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx\n+GlobalVector & vertex(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt\n+int vertexCount() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n+void markLongestEdge()\n+mark the longest edge of all elements as refinement edges\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:325\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n+int insertVertex(const FieldVector< Real, dimWorld > &coords)\n+insert vertex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n+bool checkNeighbors() const\n+check the neighbor information\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:339\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo\n+void insertWallTrafo(const FieldMatrix< Real, dimWorld, dimWorld > &matrix,\n+const FieldVector< Real, dimWorld > &shift)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:385\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n+ElementId & element(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bC_\by_\bc_\bl_\be_\bs\n+void checkCycles()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:404\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+int & neighbor(int element, int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:263\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n+MacroData()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be\n+void finalize()\n+compress macro data structure\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:294\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo\n+void insertWallTrafo(const GlobalMatrix &m, const GlobalVector &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:367\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+void setOrientation(const Real orientation)\n+set the orientation of all elements\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:332\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create()\n+create a new macro data structure\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:281\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n+int insertElement(const ElementId &id)\n+insert element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bw_\br_\bi_\bt_\be\n+bool write(const std::string &filename, bool binary=false) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\ba_\bd\n+void read(const std::string &filename, bool binary=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:413\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n+static void markLongestEdge(MacroData ¯oData)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n+Alberta::MacroData< dim > MacroData\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:221\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00707.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00707.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: intersection.cc File Reference\n+dune-grid: macroelement.hh File Reference\n \n \n \n \n \n \n \n@@ -71,56 +71,35 @@\n \n
    \n \n
    \n \n-
    intersection.cc File Reference
    \n+Namespaces
    \n+
    macroelement.hh File Reference
    \n \n
    \n-
    #include <dune/grid/albertagrid/intersection.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::AlbertaGridIntersectionBase< Grid >::GlobalCoordReader< GridImp >
     
    struct  Dune::AlbertaGridIntersectionBase< Grid >::LocalCoordReader< GridImp >
    struct  Dune::Alberta::MacroElement< dim >
     
    \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n+\n+\n

    \n-Macros

    #define DUNE_ALBERTA_INTERSECTION_CC
     
    namespace  Dune::Alberta
     
    \n-

    Macro Definition Documentation

    \n-\n-

    ◆ DUNE_ALBERTA_INTERSECTION_CC

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define DUNE_ALBERTA_INTERSECTION_CC
    \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,29 +1,22 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bM_\ba_\bc_\br_\bo_\bs\n-intersection.cc File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+macroelement.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp\n- _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\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 Include standard header files.\n \u00a0\n-M\bMa\bac\bcr\bro\bos\bs\n-#define\u00a0 _\bD_\bU_\bN_\bE_\b__\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bI_\bN_\bT_\bE_\bR_\bS_\bE_\bC_\bT_\bI_\bO_\bN_\b__\bC_\bC\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n \u00a0\n-*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDU\bUN\bNE\bE_\b_A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_I\bIN\bNT\bTE\bER\bRS\bSE\bEC\bCT\bTI\bIO\bON\bN_\b_C\bCC\bC *\b**\b**\b**\b**\b*\n-#define DUNE_ALBERTA_INTERSECTION_CC\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00707_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00707_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: intersection.cc Source File\n+dune-grid: macroelement.hh Source File\n \n \n \n \n \n \n \n@@ -74,618 +74,105 @@\n \n \n
    \n
    \n-
    intersection.cc
    \n+
    macroelement.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_INTERSECTION_CC
    \n-
    6#define DUNE_ALBERTA_INTERSECTION_CC
    \n+
    5#ifndef DUNE_ALBERTA_MACROELEMENT_HH
    \n+
    6#define DUNE_ALBERTA_MACROELEMENT_HH
    \n
    7
    \n-\n+\n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    12
    \n-
    13 // AlbertaGridIntersectionBase
    \n-
    14 // ---------------------------
    \n-
    15
    \n-
    16 template< class Grid >
    \n-
    17 inline AlbertaGridIntersectionBase< Grid >
    \n-
    \n-
    18 ::AlbertaGridIntersectionBase ()
    \n-
    19 : grid_( nullptr ),
    \n-
    20 elementInfo_(),
    \n-
    21 oppVertex_( -1 ) // mark invalid intersection
    \n-
    22 {}
    \n-
    \n-
    23
    \n-
    24 template< class Grid >
    \n-\n-
    \n-
    26 ::AlbertaGridIntersectionBase ( const EntityImp &entity, const int oppVertex )
    \n-
    27 : grid_( &entity.grid() ),
    \n-
    28 elementInfo_( entity.elementInfo() ),
    \n-
    29 oppVertex_( oppVertex )
    \n-
    30 {}
    \n+
    10#if HAVE_ALBERTA
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    15 namespace Alberta
    \n+
    16 {
    \n+
    17
    \n+
    18 // MacroElement
    \n+
    19 // ------------
    \n+
    20
    \n+
    21 template< int dim >
    \n+
    \n+\n+
    23 : public ALBERTA MACRO_EL
    \n+
    24 {
    \n+
    25 const GlobalVector &coordinate ( const int vertex ) const;
    \n+
    26
    \n+
    27 int boundaryId ( const int face ) const;
    \n+
    28 bool isBoundary ( const int face ) const;
    \n+
    29 const MacroElement< dim > *neighbor ( const int face ) const;
    \n+
    30 };
    \n
    \n
    31
    \n
    32
    \n-
    33 template< class Grid >
    \n-
    34 inline typename Grid::template Codim< 0 >::Entity
    \n-
    \n-\n-
    36 {
    \n-\n-
    38 return EntityImp( grid(), elementInfo(), 0 );
    \n-
    39 }
    \n+
    33 template< int dim >
    \n+
    \n+
    34 inline const GlobalVector &MacroElement< dim >::coordinate ( const int vertex ) const
    \n+
    35 {
    \n+
    36 assert( (vertex >= 0) && (vertex < N_VERTICES_MAX) );
    \n+
    37 return *coord[ vertex ];
    \n+
    38 }
    \n
    \n+
    39
    \n
    40
    \n-
    41
    \n-
    42 template< class Grid >
    \n-
    \n-\n-
    44 {
    \n-
    45 return elementInfo().isBoundary( oppVertex_ );
    \n-
    46 }
    \n+
    41 template< int dim >
    \n+
    \n+
    42 inline bool MacroElement< dim >::isBoundary ( const int face ) const
    \n+
    43 {
    \n+
    44 return (boundaryId( face ) != InteriorBoundary);
    \n+
    45 }
    \n
    \n+
    46
    \n
    47
    \n-
    48
    \n-
    49 template< class Grid >
    \n-
    \n-\n-
    51 {
    \n-
    52 if( boundary() )
    \n-
    53 {
    \n-
    54 const int id = elementInfo().boundaryId( oppVertex_ );
    \n-
    55 assert( id != 0 );
    \n-
    56 return id;
    \n-
    57 }
    \n-
    58 else
    \n-
    59 return 0;
    \n-
    60 }
    \n+
    48 template< int dim >
    \n+
    \n+
    49 inline int MacroElement< dim >::boundaryId ( const int face ) const
    \n+
    50 {
    \n+
    51 return wall_bound[ face ];
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    54
    \n+
    55 template< int dim >
    \n+
    \n+
    56 const MacroElement< dim > *MacroElement< dim >::neighbor ( const int face ) const
    \n+
    57 {
    \n+
    58 assert( (face >= 0) && (face < N_NEIGH_MAX) );
    \n+
    59 return static_cast< const MacroElement * >( neigh[ face ] );
    \n+
    60 }
    \n
    \n
    61
    \n-
    \n-\n-
    63 template< class Grid >
    \n-
    \n-\n-
    65 {
    \n-
    \n-
    66 assert( boundary() );
    \n-
    67 const Alberta::BasicNodeProjection *projection = elementInfo().boundaryProjection( oppVertex_ );
    \n-
    \n-
    68 assert( projection );
    \n-
    \n-
    69 return projection->boundaryIndex();
    \n-
    70 }
    \n-
    71
    \n-
    \n-\n-
    73 template< class Grid >
    \n-
    \n-\n-
    75 {
    \n-
    \n-
    76 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);
    \n-
    \n-
    77 return grid().alberta2generic( 1, face );
    \n-
    \n-
    78 }
    \n-
    79
    \n-
    \n-\n-
    \n-
    81 template< class Grid >
    \n-
    \n-
    82 inline GeometryType AlbertaGridIntersectionBase< Grid >::type () const
    \n-
    83 {
    \n-
    84 return GeometryTypes::simplex( dimension-1 );
    \n-
    85 }
    \n-
    \n-
    86
    \n-
    87
    \n-
    \n-
    88 template< class Grid >
    \n-
    \n-\n-
    \n-\n-
    91 {
    \n-
    92 const typename Entity::Geometry geoInside = inside().geometry();
    \n-
    93
    \n-
    94 const int face = indexInInside();
    \n-
    95 auto refSimplex = ReferenceElements< ctype, dimension >::simplex();
    \n-
    96 FieldVector< ctype, dimension > refNormal = refSimplex.integrationOuterNormal( face );
    \n-
    97
    \n-
    98 const typename Entity::Geometry::JacobianInverseTransposed &jInvT
    \n-
    99 = geoInside.impl().jacobianInverseTransposed();
    \n-
    100
    \n-
    101 NormalVector normal;
    \n-
    102 jInvT.mv( refNormal, normal );
    \n-
    103 normal *= geoInside.impl().integrationElement();
    \n-
    104
    \n-
    105 return normal;
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    108 template<>
    \n-\n-
    \n-
    110 AlbertaGridIntersectionBase< const AlbertaGrid< 1, 1 > >::centerIntegrationOuterNormal () const
    \n-
    111 {
    \n-
    112 const Alberta::GlobalVector &oppCoord = grid().getCoord( elementInfo(), oppVertex_ );
    \n-
    113 const Alberta::GlobalVector &myCoord = grid().getCoord( elementInfo(), 1-oppVertex_ );
    \n-
    114 NormalVector n;
    \n-
    115 n[ 0 ] = (myCoord[ 0 ] > oppCoord[ 0 ] ? ctype( 1 ) : -ctype( 1 ));
    \n-
    116 return n;
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    119#if defined GRIDDIM && GRIDDIM > 1
    \n-
    120 template<>
    \n-\n-
    122 AlbertaGridIntersectionBase< const AlbertaGrid< 2, 2 > >::centerIntegrationOuterNormal () const
    \n-
    123 {
    \n-
    124 const Alberta::GlobalVector &coordOne = grid().getCoord( elementInfo(), (oppVertex_+1)%3 );
    \n-
    125 const Alberta::GlobalVector &coordTwo = grid().getCoord( elementInfo(), (oppVertex_+2)%3 );
    \n-
    126
    \n-
    127 NormalVector n;
    \n-
    128 n[ 0 ] = -(coordOne[ 1 ] - coordTwo[ 1 ]);
    \n-
    129 n[ 1 ] = coordOne[ 0 ] - coordTwo[ 0 ];
    \n-
    130 return n;
    \n-
    131 }
    \n-
    132#endif // defined GRIDDIM && GRIDDIM > 1
    \n-
    133
    \n-
    134 template<>
    \n-
    135 inline AlbertaGridIntersectionBase< const AlbertaGrid< 3, 3 > >::NormalVector
    \n-
    \n-
    136 AlbertaGridIntersectionBase< const AlbertaGrid< 3, 3 > >::centerIntegrationOuterNormal () const
    \n-
    137 {
    \n-
    138 // in this case the orientation is negative, multiply by -1
    \n-
    139 const ALBERTA EL_INFO &elInfo = elementInfo().elInfo();
    \n-
    140 const ctype val = (elInfo.orientation > 0) ? 1.0 : -1.0;
    \n-
    141
    \n-
    142 static const int faceVertices[ 4 ][ 3 ]
    \n-
    143 = { {1,3,2}, {0,2,3}, {0,3,1}, {0,1,2} };
    \n-
    144 const int *localFaces = faceVertices[ oppVertex_ ];
    \n-
    145
    \n-
    146 const Alberta::GlobalVector &coord0 = grid().getCoord( elementInfo(), localFaces[ 0 ] );
    \n-
    147 const Alberta::GlobalVector &coord1 = grid().getCoord( elementInfo(), localFaces[ 1 ] );
    \n-
    148 const Alberta::GlobalVector &coord2 = grid().getCoord( elementInfo(), localFaces[ 2 ] );
    \n-
    149
    \n-
    150 FieldVector< ctype, dimensionworld > u;
    \n-
    151 FieldVector< ctype, dimensionworld > v;
    \n-
    152 for( int i = 0; i < dimension; ++i )
    \n-
    153 {
    \n-
    154 v[ i ] = coord1[ i ] - coord0[ i ];
    \n-
    155 u[ i ] = coord2[ i ] - coord1[ i ];
    \n-
    156 }
    \n-
    157
    \n-
    158 NormalVector n;
    \n-
    159 for( int i = 0; i < dimension; ++i )
    \n-
    160 {
    \n-
    161 const int j = (i+1)%dimension;
    \n-
    162 const int k = (i+2)%dimension;
    \n-
    163 n[ i ] = val * (u[ j ] * v[ k ] - u[ k ] * v[ j ]);
    \n-
    164 }
    \n-
    165 return n;
    \n-
    166 }
    \n-
    \n-
    167
    \n-
    168
    \n-
    169 template< class Grid >
    \n-\n-
    \n-\n-
    172 {
    \n-
    173 return centerIntegrationOuterNormal();
    \n-
    174 }
    \n-
    \n-
    175
    \n-
    176
    \n-
    177 template< class Grid >
    \n-\n-
    \n-\n-
    180 {
    \n-
    181 NormalVector normal = centerOuterNormal();
    \n-
    182 normal *= (1.0 / normal.two_norm());
    \n-
    183 return normal;
    \n-
    184 }
    \n-
    \n-
    185
    \n-
    186
    \n-
    187 template< class Grid >
    \n-\n-
    \n-\n-
    190 {
    \n-
    191 return centerIntegrationOuterNormal();
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    194
    \n-
    195 template< class Grid >
    \n-\n-
    \n-\n-
    198 {
    \n-
    199 return centerOuterNormal();
    \n-
    200 }
    \n-
    \n-
    201
    \n-
    202
    \n-
    203 template< class Grid >
    \n-\n-
    \n-\n-
    206 {
    \n-
    207 return centerUnitOuterNormal();
    \n-
    208 }
    \n-
    \n-
    209
    \n-
    210
    \n-
    211 template< class Grid >
    \n-\n-
    \n-\n-
    214 {
    \n-
    215 return AlbertaTransformation( elementInfo().transformation( oppVertex_ ) );
    \n-
    216 }
    \n-
    \n-
    217
    \n-
    218
    \n-
    219 template< class Grid >
    \n-
    \n-\n-
    221 {
    \n-
    222 return *grid_;
    \n-
    223 }
    \n-
    \n-
    224
    \n-
    225
    \n-
    226 template< class Grid >
    \n-\n-
    \n-\n-
    229 {
    \n-
    230 assert( !!elementInfo_ );
    \n-
    231 return elementInfo_;
    \n-
    232 }
    \n-
    \n-
    \n-
    233
    \n-
    234
    \n-
    235
    \n-
    236 // AlbertaGridIntersectionBase::GlobalCoordReader
    \n-
    237 // ----------------------------------------------
    \n-
    238
    \n-
    239 template< class GridImp >
    \n-
    \n-\n-
    241 {
    \n-
    242 typedef typename std::remove_const< GridImp >::type Grid;
    \n-
    243
    \n-
    244 static const int dimension = Grid::dimension;
    \n-
    245 static const int codimension = 1;
    \n-
    246 static const int mydimension = dimension - codimension;
    \n-
    247 static const int coorddimension = Grid::dimensionworld;
    \n-
    248
    \n-\n-
    250
    \n-\n-
    252 typedef FieldVector< ctype, coorddimension > Coordinate;
    \n-
    253
    \n-
    254 private:
    \n-
    255 const Grid &grid_;
    \n-\n-
    257 const int subEntity_;
    \n-
    258 const int twist_;
    \n-
    259
    \n-
    260 public:
    \n-
    \n-
    261 GlobalCoordReader ( const GridImp &grid,
    \n-\n-
    263 int subEntity )
    \n-
    264 : grid_( grid ),
    \n-\n-
    266 subEntity_( subEntity ),
    \n-
    267 twist_( elementInfo.template twist< codimension >( subEntity ) )
    \n-
    268 {}
    \n-
    \n-
    269
    \n-
    \n-
    270 void coordinate ( int i, Coordinate &x ) const
    \n-
    271 {
    \n-
    272 assert( !elementInfo_ == false );
    \n-
    273 assert( (i >= 0) && (i <= mydimension) );
    \n-
    274
    \n-
    275 const int ti = Alberta::applyInverseTwist< mydimension >( twist_, i );
    \n-
    276 const int k = mapVertices( subEntity_, ti );
    \n-
    277 const Alberta::GlobalVector &coord = grid_.getCoord( elementInfo_, k );
    \n-
    278 for( int j = 0; j < coorddimension; ++j )
    \n-
    279 x[ j ] = coord[ j ];
    \n-
    280 }
    \n-
    \n-
    281
    \n-
    \n-
    282 bool hasDeterminant () const
    \n-
    283 {
    \n-
    284 return false;
    \n-
    285 }
    \n-
    \n-
    286
    \n-
    \n-\n-
    288 {
    \n-
    289 assert( false );
    \n-
    290 return ctype( 0 );
    \n-
    291 }
    \n-
    \n-
    292
    \n-
    293 private:
    \n-
    294 static int mapVertices ( int subEntity, int i )
    \n-
    295 {
    \n-\n-
    297 }
    \n-
    298 };
    \n-
    \n-
    299
    \n-
    300
    \n-
    301
    \n-
    302
    \n-
    303 // AlbertaGridIntersectionBase::LocalCoordReader
    \n-
    304 // ---------------------------------------------
    \n-
    305
    \n-
    306 template< class GridImp >
    \n-
    \n-\n-
    308 {
    \n-
    309 typedef typename std::remove_const< GridImp >::type Grid;
    \n-
    310
    \n-
    311 static const int dimension = Grid::dimension;
    \n-
    312 static const int codimension = 1;
    \n-
    313 static const int mydimension = dimension - codimension;
    \n-
    314 static const int coorddimension = dimension;
    \n-
    315
    \n-\n-
    317
    \n-
    318 typedef FieldVector< ctype, coorddimension > Coordinate;
    \n-
    319
    \n-
    320 typedef typename Grid::template Codim< 0 >::Geometry ElementGeometry;
    \n-
    321 typedef typename Grid::template Codim< 1 >::Geometry FaceGeometry;
    \n-
    322
    \n-
    323 private:
    \n-
    324 const ElementGeometry &elementGeometry_;
    \n-
    325 const FaceGeometry &faceGeometry_;
    \n-
    326
    \n-
    327 public:
    \n-
    \n-
    328 LocalCoordReader ( const ElementGeometry &elementGeometry,
    \n-
    329 const FaceGeometry &faceGeometry )
    \n-
    330 : elementGeometry_( elementGeometry ),
    \n-
    331 faceGeometry_( faceGeometry )
    \n-
    332 {}
    \n-
    \n-
    333
    \n-
    \n-
    334 void coordinate ( int i, Coordinate &x ) const
    \n-
    335 {
    \n-
    336 x = elementGeometry_.local( faceGeometry_.corner( i ) );
    \n-
    337 }
    \n-
    \n-
    338
    \n-
    \n-
    339 bool hasDeterminant () const
    \n-
    340 {
    \n-
    341 return false;
    \n-
    342 }
    \n-
    \n-
    343
    \n-
    \n-\n-
    345 {
    \n-
    346 return ctype( 0 );
    \n-
    347 }
    \n-
    \n-
    348 };
    \n-
    \n-
    349
    \n-
    350
    \n-
    351
    \n-
    352 // AlbertaGridLeafIntersection
    \n-
    353 // ---------------------------
    \n-
    354
    \n-
    355 template< class GridImp >
    \n-
    \n-\n-
    357 {
    \n-
    358 assert( oppVertex_ <= dimension );
    \n-
    359 ++oppVertex_;
    \n-
    360 neighborInfo_ = ElementInfo();
    \n-
    361 }
    \n-
    \n-
    362
    \n-
    363 template< class GridImp >
    \n-
    364 inline typename GridImp::template Codim< 0 >::Entity
    \n-
    \n-\n-
    366 {
    \n-\n-
    368
    \n-
    369 if( !neighborInfo_ )
    \n-
    370 {
    \n-
    371 assert( neighbor() );
    \n-
    372
    \n-
    373 neighborInfo_ = elementInfo().leafNeighbor( oppVertex_ );
    \n-
    374 }
    \n-
    375
    \n-
    376 assert( !neighborInfo_ == false );
    \n-
    377 assert( neighborInfo_.el() != NULL );
    \n-
    378 return EntityImp( grid(), neighborInfo_, 0 );
    \n-
    379 }
    \n-
    \n-
    380
    \n-
    381 template< class GridImp >
    \n-
    \n-\n-
    383 {
    \n-
    384 assert( oppVertex_ <= dimension );
    \n-
    385 return elementInfo().hasLeafNeighbor( oppVertex_ );
    \n-
    386 }
    \n-
    \n-
    387
    \n-
    388
    \n-
    389 template< class GridImp >
    \n-\n-
    \n-\n-
    392 {
    \n-
    393 typedef AlbertaGridLocalGeometryProvider< GridImp > LocalGeoProvider;
    \n-
    394 const int twist = elementInfo().template twist< 1 >( oppVertex_ );
    \n-
    395 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);
    \n-
    396 return LocalGeometry( LocalGeoProvider::instance().faceGeometry( face, twist ) );
    \n-
    397 }
    \n-
    \n-
    398
    \n-
    399
    \n-
    400 template< class GridImp >
    \n-\n-
    \n-\n-
    403 {
    \n-
    404 assert( neighbor() );
    \n-
    405
    \n-
    406 typedef AlbertaGridLocalGeometryProvider< GridImp > LocalGeoProvider;
    \n-
    407 const ALBERTA EL_INFO &elInfo = elementInfo().elInfo();
    \n-
    408 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];
    \n-
    409 const int twist = elementInfo().twistInNeighbor( oppVertex_ );
    \n-
    410 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);
    \n-
    411 return LocalGeometry( LocalGeoProvider::instance().faceGeometry( face, twist ) );
    \n-
    412 }
    \n-
    \n-
    413
    \n-
    414
    \n-
    415 template< class GridImp >
    \n-\n-
    \n-\n-
    418 {
    \n-
    419 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);
    \n-
    420 const GlobalCoordReader coordReader( grid(), elementInfo(), face );
    \n-
    421 return Geometry( GeometryImpl( coordReader ) );
    \n-
    422 }
    \n-
    \n-
    423
    \n-
    424
    \n-
    425 template< class GridImp >
    \n-
    \n-\n-
    427 {
    \n-
    428 const ALBERTA EL_INFO &elInfo = elementInfo().elInfo();
    \n-
    429 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];
    \n-
    430 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);
    \n-
    431 return grid().alberta2generic( 1, face );
    \n-
    432 }
    \n-
    \n-
    433
    \n-
    434} // namespace Dune
    \n-
    435
    \n-
    436#endif // #ifndef DUNE_ALBERTA_INTERSECTION_CC
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    62 }
    \n+
    63
    \n+
    64}
    \n+
    65
    \n+
    66#endif // #if HAVE_ALBERTA
    \n+
    67
    \n+
    68#endif // #ifndef DUNE_ALBERTA_MACROELEMENT_HH
    \n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    static const int InteriorBoundary
    Definition misc.hh:59
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-\n-
    LocalGeometry geometryInOutside() const
    Definition intersection.cc:402
    \n-
    GridImp::template Codim< 0 >::Entity outside() const
    Definition intersection.cc:365
    \n-
    void next()
    Definition intersection.cc:356
    \n-
    Base::GeometryImpl GeometryImpl
    Definition albertagrid/intersection.hh:130
    \n-
    int indexInOutside() const
    Definition intersection.cc:426
    \n-
    LocalGeometry geometryInInside() const
    Definition intersection.cc:391
    \n-
    Base::GlobalCoordReader GlobalCoordReader
    Definition albertagrid/intersection.hh:133
    \n-
    Base::Geometry Geometry
    Definition albertagrid/intersection.hh:122
    \n-
    Geometry geometry() const
    Definition intersection.cc:417
    \n-
    bool neighbor() const
    Definition intersection.cc:382
    \n-
    Base::LocalGeometry LocalGeometry
    Definition albertagrid/intersection.hh:123
    \n-
    Definition albertagrid/entity.hh:46
    \n-
    Definition albertagrid/geometry.hh:504
    \n-\n-
    FieldVector< ctype, coorddimension > Coordinate
    Definition intersection.cc:252
    \n-
    Alberta::Real ctype
    Definition intersection.cc:249
    \n-
    std::remove_const< GridImp >::type Grid
    Definition intersection.cc:242
    \n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition intersection.cc:251
    \n-
    ctype determinant() const
    Definition intersection.cc:287
    \n-
    bool hasDeterminant() const
    Definition intersection.cc:282
    \n-
    GlobalCoordReader(const GridImp &grid, const ElementInfo &elementInfo, int subEntity)
    Definition intersection.cc:261
    \n-
    void coordinate(int i, Coordinate &x) const
    Definition intersection.cc:270
    \n-\n-
    Grid::template Codim< 1 >::Geometry FaceGeometry
    Definition intersection.cc:321
    \n-
    Alberta::Real ctype
    Definition intersection.cc:316
    \n-
    LocalCoordReader(const ElementGeometry &elementGeometry, const FaceGeometry &faceGeometry)
    Definition intersection.cc:328
    \n-
    std::remove_const< GridImp >::type Grid
    Definition intersection.cc:309
    \n-
    void coordinate(int i, Coordinate &x) const
    Definition intersection.cc:334
    \n-
    bool hasDeterminant() const
    Definition intersection.cc:339
    \n-
    ctype determinant() const
    Definition intersection.cc:344
    \n-
    FieldVector< ctype, coorddimension > Coordinate
    Definition intersection.cc:318
    \n-
    Grid::template Codim< 0 >::Geometry ElementGeometry
    Definition intersection.cc:320
    \n-
    Definition albertagrid/intersection.hh:32
    \n-
    NormalVector centerOuterNormal() const
    Definition intersection.cc:171
    \n-
    const ElementInfo & elementInfo() const
    Definition intersection.cc:228
    \n-
    FieldVector< ctype, dimensionworld > NormalVector
    Definition albertagrid/intersection.hh:41
    \n-
    NormalVector centerIntegrationOuterNormal() const
    Definition intersection.cc:90
    \n-
    Grid::ctype ctype
    Definition albertagrid/intersection.hh:36
    \n-
    NormalVector integrationOuterNormal(const LocalCoordType &local) const
    Definition intersection.cc:189
    \n-
    ElementInfo elementInfo_
    Definition albertagrid/intersection.hh:93
    \n-
    FieldVector< ctype, dimension-1 > LocalCoordType
    Definition albertagrid/intersection.hh:42
    \n-
    NormalVector centerUnitOuterNormal() const
    Definition intersection.cc:179
    \n-
    int indexInInside() const
    Definition intersection.cc:74
    \n-
    Entity inside() const
    Definition intersection.cc:35
    \n-
    NormalVector unitOuterNormal(const LocalCoordType &local) const
    Definition intersection.cc:205
    \n-
    const Grid & grid() const
    Definition intersection.cc:220
    \n-
    static const int dimension
    Definition albertagrid/intersection.hh:38
    \n-
    bool boundary() const
    Definition intersection.cc:43
    \n-
    size_t boundarySegmentIndex() const
    Definition intersection.cc:64
    \n-
    GeometryType type() const
    Definition intersection.cc:82
    \n-
    AlbertaTransformation transformation() const
    Definition intersection.cc:213
    \n-
    NormalVector outerNormal(const LocalCoordType &local) const
    Definition intersection.cc:197
    \n-
    int boundaryId() const
    Definition intersection.cc:50
    \n-
    const Grid * grid_
    Definition albertagrid/intersection.hh:92
    \n-
    Definition misc.hh:443
    \n-
    Definition albertagrid/projection.hh:208
    \n-
    unsigned int boundaryIndex() const
    Definition albertagrid/projection.hh:218
    \n-
    Definition transformation.hh:18
    \n-
    GridImp::template Codim< cd >::Geometry Geometry
    The corresponding geometry type.
    Definition common/entity.hh:100
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-\n+
    Definition macroelement.hh:24
    \n+
    bool isBoundary(const int face) const
    Definition macroelement.hh:42
    \n+
    const MacroElement< dim > * neighbor(const int face) const
    Definition macroelement.hh:56
    \n+
    int boundaryId(const int face) const
    Definition macroelement.hh:49
    \n+
    const GlobalVector & coordinate(const int vertex) const
    Definition macroelement.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,671 +1,109 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-intersection.cc\n+macroelement.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_INTERSECTION_CC\n-_\b6#define DUNE_ALBERTA_INTERSECTION_CC\n+5#ifndef DUNE_ALBERTA_MACROELEMENT_HH\n+6#define DUNE_ALBERTA_MACROELEMENT_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-12\n-13 // AlbertaGridIntersectionBase\n-14 // ---------------------------\n-15\n-16 template< class Grid >\n-17 inline AlbertaGridIntersectionBase< Grid >\n-_\b1_\b8 ::AlbertaGridIntersectionBase ()\n-19 : grid_( nullptr ),\n-20 elementInfo_(),\n-21 oppVertex_( -1 ) // mark invalid intersection\n-22 {}\n-23\n-24 template< class Grid >\n-25 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-_\b2_\b6_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be ( const _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp &entity, const int oppVertex\n-)\n-27 : grid_( &entity.grid() ),\n-28 elementInfo_( entity.elementInfo() ),\n-29 oppVertex_( oppVertex )\n-30 {}\n+10#if HAVE_ALBERTA\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+15 namespace Alberta\n+16 {\n+17\n+18 // MacroElement\n+19 // ------------\n+20\n+21 template< int dim >\n+_\b2_\b2 struct _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+23 : public _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL\n+24 {\n+25 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( const int vertex ) const;\n+26\n+27 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const int face ) const;\n+28 bool _\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( const int face ) const;\n+29 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b> *_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const;\n+30 };\n 31\n 32\n-33 template< class Grid >\n-34 inline typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity\n-_\b3_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be () const\n-36 {\n-37 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n-38 return _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid(), elementInfo(), 0 );\n-39 }\n+33 template< int dim >\n+_\b3_\b4 inline const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( const int\n+vertex ) const\n+35 {\n+36 assert( (vertex >= 0) && (vertex < N_VERTICES_MAX) );\n+37 return *coord[ vertex ];\n+38 }\n+39\n 40\n-41\n-42 template< class Grid >\n-_\b4_\b3 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const\n-44 {\n-45 return elementInfo().isBoundary( oppVertex_ );\n-46 }\n+41 template< int dim >\n+_\b4_\b2 inline bool _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( const int face ) const\n+43 {\n+44 return (boundaryId( face ) != _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by);\n+45 }\n+46\n 47\n-48\n-49 template< class Grid >\n-_\b5_\b0 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd () const\n-51 {\n-52 if( boundary() )\n-53 {\n-54 const int id = elementInfo().boundaryId( oppVertex_ );\n-55 assert( id != 0 );\n-56 return id;\n-57 }\n-58 else\n-59 return 0;\n+48 template< int dim >\n+_\b4_\b9 inline int _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const int face ) const\n+50 {\n+51 return wall_bound[ face ];\n+52 }\n+53\n+54\n+55 template< int dim >\n+_\b5_\b6 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b> *_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face )\n+const\n+57 {\n+58 assert( (face >= 0) && (face < N_NEIGH_MAX) );\n+59 return static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt * >( neigh[ face ] );\n 60 }\n 61\n-_\b6_\b2\n-63 template< class Grid >\n-_\b6_\b4 inline size_t _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx ()\n-const\n-65 {\n-_\b6_\b6 assert( boundary() );\n-67 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn *projection = elementInfo\n-().boundaryProjection( oppVertex_ );\n-_\b6_\b8 assert( projection );\n-_\b6_\b9 return projection->_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx();\n-_\b7_\b0 }\n-71\n-_\b7_\b2\n-73 template< class Grid >\n-_\b7_\b4 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n-75 {\n-_\b7_\b6 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);\n-_\b7_\b7 return grid().alberta2generic( 1, face );\n-_\b7_\b8 }\n-79\n-_\b8_\b0\n-_\b8_\b1 template< class Grid >\n-_\b8_\b2 inline GeometryType _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n-83 {\n-84 return GeometryTypes::simplex( dimension-1 );\n-_\b8_\b5 }\n-86\n-87\n-_\b8_\b8 template< class Grid >\n-_\b8_\b9 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-_\b9_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const\n-91 {\n-92 const typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by geoInside = inside().geometry();\n-93\n-94 const int face = indexInInside();\n-95 auto refSimplex = ReferenceElements< ctype, dimension >::simplex();\n-96 FieldVector< ctype, dimension > refNormal =\n-refSimplex.integrationOuterNormal( face );\n-97\n-98 const typename Entity::Geometry::JacobianInverseTransposed &jInvT\n-99 = geoInside.impl().jacobianInverseTransposed();\n-100\n-101 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br normal;\n-102 jInvT.mv( refNormal, normal );\n-103 normal *= geoInside.impl().integrationElement();\n-104\n-105 return normal;\n-106 }\n-107\n-108 template<>\n-109 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b1_\b,_\b _\b1_\b _\b> >::\n-NormalVector\n-_\b1_\b1_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b1_\b,_\b _\b1_\b _\b> >::\n-centerIntegrationOuterNormal () const\n-111 {\n-112 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &oppCoord = grid().getCoord( elementInfo(),\n-oppVertex_ );\n-113 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &myCoord = grid().getCoord( elementInfo(), 1-\n-oppVertex_ );\n-114 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br n;\n-115 n[ 0 ] = (myCoord[ 0 ] > oppCoord[ 0 ] ? _\bc_\bt_\by_\bp_\be( 1 ) : -_\bc_\bt_\by_\bp_\be( 1 ));\n-116 return n;\n-117 }\n-118\n-119#if defined GRIDDIM && GRIDDIM > 1\n-120 template<>\n-121 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b2_\b,_\b _\b2_\b _\b> >::\n-NormalVector\n-122 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b2_\b,_\b _\b2_\b _\b> >::\n-centerIntegrationOuterNormal () const\n-123 {\n-124 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coordOne = grid().getCoord( elementInfo(),\n-(oppVertex_+1)%3 );\n-125 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coordTwo = grid().getCoord( elementInfo(),\n-(oppVertex_+2)%3 );\n-126\n-127 NormalVector n;\n-128 n[ 0 ] = -(coordOne[ 1 ] - coordTwo[ 1 ]);\n-129 n[ 1 ] = coordOne[ 0 ] - coordTwo[ 0 ];\n-130 return n;\n-131 }\n-132#endif // defined GRIDDIM && GRIDDIM > 1\n-133\n-134 template<>\n-135 inline AlbertaGridIntersectionBase< const AlbertaGrid< 3, 3 > >::\n-NormalVector\n-_\b1_\b3_\b6 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\b3_\b,_\b _\b3_\b _\b> >::\n-centerIntegrationOuterNormal () const\n-137 {\n-138 // in this case the orientation is negative, multiply by -1\n-139 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo = elementInfo().elInfo();\n-140 const _\bc_\bt_\by_\bp_\be val = (elInfo.orientation > 0) ? 1.0 : -1.0;\n-141\n-142 static const int faceVertices[ 4 ][ 3 ]\n-143 = { {1,3,2}, {0,2,3}, {0,3,1}, {0,1,2} };\n-144 const int *localFaces = faceVertices[ oppVertex_ ];\n-145\n-146 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord0 = grid().getCoord( elementInfo(),\n-localFaces[ 0 ] );\n-147 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord1 = grid().getCoord( elementInfo(),\n-localFaces[ 1 ] );\n-148 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord2 = grid().getCoord( elementInfo(),\n-localFaces[ 2 ] );\n-149\n-150 FieldVector< ctype, dimensionworld > u;\n-151 FieldVector< ctype, dimensionworld > v;\n-152 for( int i = 0; i < dimension; ++i )\n-153 {\n-154 v[ i ] = coord1[ i ] - coord0[ i ];\n-155 u[ i ] = coord2[ i ] - coord1[ i ];\n-156 }\n-157\n-158 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br n;\n-159 for( int i = 0; i < dimension; ++i )\n-160 {\n-161 const int j = (i+1)%dimension;\n-162 const int k = (i+2)%dimension;\n-163 n[ i ] = val * (u[ j ] * v[ k ] - u[ k ] * v[ j ]);\n-164 }\n-165 return n;\n-166 }\n-167\n-168\n-169 template< class Grid >\n-170 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-_\b1_\b7_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl() const\n-172 {\n-173 return centerIntegrationOuterNormal();\n-174 }\n-175\n-176\n-177 template< class Grid >\n-178 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-_\b1_\b7_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const\n-180 {\n-181 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br normal = centerOuterNormal();\n-182 normal *= (1.0 / normal.two_norm());\n-183 return normal;\n-184 }\n-185\n-186\n-187 template< class Grid >\n-188 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-_\b1_\b8_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl ( const\n-_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be & ) const\n-190 {\n-191 return centerIntegrationOuterNormal();\n-192 }\n-193\n-194\n-195 template< class Grid >\n-196 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-_\b1_\b9_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be & )\n-const\n-198 {\n-199 return centerOuterNormal();\n-200 }\n-201\n-202\n-203 template< class Grid >\n-204 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-_\b2_\b0_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be\n-& ) const\n-206 {\n-207 return centerUnitOuterNormal();\n-208 }\n-209\n-210\n-211 template< class Grid >\n-212 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-_\b2_\b1_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn () const\n-214 {\n-215 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn( elementInfo().transformation( oppVertex_ ) );\n-216 }\n-217\n-218\n-219 template< class Grid >\n-_\b2_\b2_\b0 inline const _\bG_\br_\bi_\bd &_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd () const\n-221 {\n-222 return *grid_;\n-223 }\n-224\n-225\n-226 template< class Grid >\n-227 inline const typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &\n-_\b2_\b2_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo () const\n-229 {\n-230 assert( !!elementInfo_ );\n-231 return elementInfo_;\n-232 }\n-233\n-234\n-235\n-236 // AlbertaGridIntersectionBase::GlobalCoordReader\n-237 // ----------------------------------------------\n-238\n-239 template< class GridImp >\n-_\b2_\b4_\b0 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be< GridImp >::_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-241 {\n-_\b2_\b4_\b2 typedef typename std::remove_const< GridImp >::type _\bG_\br_\bi_\bd;\n-243\n-_\b2_\b4_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b2_\b4_\b5 static const int codimension = 1;\n-_\b2_\b4_\b6 static const int mydimension = _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn - codimension;\n-_\b2_\b4_\b7 static const int coorddimension = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-248\n-_\b2_\b4_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n-250\n-_\b2_\b5_\b1 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-_\b2_\b5_\b2 typedef FieldVector< ctype, coorddimension > _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-253\n-254 private:\n-255 const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd_\b_;\n-256 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_;\n-257 const int subEntity_;\n-258 const int twist_;\n-259\n-260 public:\n-_\b2_\b6_\b1 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-262 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo,\n-263 int subEntity )\n-264 : _\bg_\br_\bi_\bd_\b_( _\bg_\br_\bi_\bd ),\n-265 _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_( _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ),\n-266 subEntity_( subEntity ),\n-267 twist_( _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo.template twist< codimension >( subEntity ) )\n-268 {}\n-269\n-_\b2_\b7_\b0 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &x ) const\n-271 {\n-272 assert( !_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_ == false );\n-273 assert( (i >= 0) && (i <= mydimension) );\n-274\n-275 const int ti = Alberta::applyInverseTwist< mydimension >( twist_, i );\n-276 const int k = mapVertices( subEntity_, ti );\n-277 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord = _\bg_\br_\bi_\bd_\b_.getCoord( _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_, k );\n-278 for( int j = 0; j < coorddimension; ++j )\n-279 x[ j ] = coord[ j ];\n-280 }\n-281\n-_\b2_\b8_\b2 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-283 {\n-284 return false;\n-285 }\n-286\n-_\b2_\b8_\b7 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-288 {\n-289 assert( false );\n-290 return _\bc_\bt_\by_\bp_\be( 0 );\n-291 }\n-292\n-293 private:\n-294 static int mapVertices ( int subEntity, int i )\n-295 {\n-296 return _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by( subEntity, i\n-);\n-297 }\n-298 };\n-299\n-300\n-301\n-302\n-303 // AlbertaGridIntersectionBase::LocalCoordReader\n-304 // ---------------------------------------------\n-305\n-306 template< class GridImp >\n-_\b3_\b0_\b7 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be< GridImp >::_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-308 {\n-_\b3_\b0_\b9 typedef typename std::remove_const< GridImp >::type _\bG_\br_\bi_\bd;\n-310\n-_\b3_\b1_\b1 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b3_\b1_\b2 static const int codimension = 1;\n-_\b3_\b1_\b3 static const int mydimension = _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn - codimension;\n-_\b3_\b1_\b4 static const int coorddimension = _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-315\n-_\b3_\b1_\b6 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n-317\n-_\b3_\b1_\b8 typedef FieldVector< ctype, coorddimension > _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-319\n-_\b3_\b2_\b0 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Geometry _\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b3_\b2_\b1 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 1 >::Geometry _\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-322\n-323 private:\n-324 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by &elementGeometry_;\n-325 const _\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by &faceGeometry_;\n-326\n-327 public:\n-_\b3_\b2_\b8 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by &elementGeometry,\n-329 const _\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by &faceGeometry )\n-330 : elementGeometry_( elementGeometry ),\n-331 faceGeometry_( faceGeometry )\n-332 {}\n-333\n-_\b3_\b3_\b4 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &x ) const\n-335 {\n-336 x = elementGeometry_.local( faceGeometry_.corner( i ) );\n-337 }\n-338\n-_\b3_\b3_\b9 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-340 {\n-341 return false;\n-342 }\n-343\n-_\b3_\b4_\b4 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-345 {\n-346 return _\bc_\bt_\by_\bp_\be( 0 );\n-347 }\n-348 };\n-349\n-350\n-351\n-352 // AlbertaGridLeafIntersection\n-353 // ---------------------------\n-354\n-355 template< class GridImp >\n-_\b3_\b5_\b6 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>_\b:_\b:_\bn_\be_\bx_\bt ()\n-357 {\n-358 assert( oppVertex_ <= dimension );\n-359 ++oppVertex_;\n-360 neighborInfo_ = _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo();\n-361 }\n-362\n-363 template< class GridImp >\n-364 inline typename GridImp::template Codim< 0 >::Entity\n-_\b3_\b6_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be () const\n-366 {\n-367 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n-368\n-369 if( !neighborInfo_ )\n-370 {\n-371 assert( neighbor() );\n-372\n-373 neighborInfo_ = elementInfo().leafNeighbor( oppVertex_ );\n-374 }\n-375\n-376 assert( !neighborInfo_ == false );\n-377 assert( neighborInfo_.el() != NULL );\n-378 return _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid(), neighborInfo_, 0 );\n-379 }\n-380\n-381 template< class GridImp >\n-_\b3_\b8_\b2 inline bool _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const\n-383 {\n-384 assert( oppVertex_ <= dimension );\n-385 return elementInfo().hasLeafNeighbor( oppVertex_ );\n-386 }\n-387\n-388\n-389 template< class GridImp >\n-390 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-_\b3_\b9_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n-392 {\n-393 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> LocalGeoProvider;\n-394 const int twist = elementInfo().template twist< 1 >( oppVertex_ );\n-395 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);\n-396 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( LocalGeoProvider::instance().faceGeometry( face,\n-twist ) );\n-397 }\n-398\n-399\n-400 template< class GridImp >\n-401 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-_\b4_\b0_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n-403 {\n-404 assert( neighbor() );\n-405\n-406 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> LocalGeoProvider;\n-407 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo = elementInfo().elInfo();\n-408 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];\n-409 const int twist = elementInfo().twistInNeighbor( oppVertex_ );\n-410 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);\n-411 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( LocalGeoProvider::instance().faceGeometry( face,\n-twist ) );\n-412 }\n-413\n-414\n-415 template< class GridImp >\n-416 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-_\b4_\b1_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-418 {\n-419 const int face = (dimension > 1 ? oppVertex_ : 1-oppVertex_);\n-420 const _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br coordReader( grid(), elementInfo(), face );\n-421 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl( coordReader ) );\n-422 }\n-423\n-424\n-425 template< class GridImp >\n-_\b4_\b2_\b6 inline int _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n-427 {\n-428 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo = elementInfo().elInfo();\n-429 const int oppVertex = elInfo.opp_vertex[ oppVertex_ ];\n-430 const int face = (dimension > 1 ? oppVertex : 1-oppVertex);\n-431 return grid().alberta2generic( 1, face );\n-432 }\n-433\n-434} // namespace Dune\n-435\n-436#endif // #ifndef DUNE_ALBERTA_INTERSECTION_CC\n+62 }\n+63\n+64}\n+65\n+66#endif // #if HAVE_ALBERTA\n+67\n+68#endif // #ifndef DUNE_ALBERTA_MACROELEMENT_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+static const int InteriorBoundary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:59\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n ALBERTA REAL_D GlobalVector\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-LocalGeometry geometryInOutside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:402\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n-GridImp::template Codim< 0 >::Entity outside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:365\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bx_\bt\n-void next()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:356\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl\n-Base::GeometryImpl GeometryImpl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-int indexInOutside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-LocalGeometry geometryInInside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:391\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-Base::GlobalCoordReader GlobalCoordReader\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Base::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:417\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-bool neighbor() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:382\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Base::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/entity.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:504\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:241\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, coorddimension > Coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Alberta::Real ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n-std::remove_const< GridImp >::type Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:251\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-ctype determinant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-bool hasDeterminant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:282\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-GlobalCoordReader(const GridImp &grid, const ElementInfo &elementInfo, int\n-subEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:261\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-void coordinate(int i, Coordinate &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:270\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:308\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Grid::template Codim< 1 >::Geometry FaceGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:321\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Alberta::Real ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:316\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-LocalCoordReader(const ElementGeometry &elementGeometry, const FaceGeometry\n-&faceGeometry)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:328\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n-std::remove_const< GridImp >::type Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:309\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-void coordinate(int i, Coordinate &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:334\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-bool hasDeterminant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:339\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-ctype determinant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:344\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, coorddimension > Coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:318\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Grid::template Codim< 0 >::Geometry ElementGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector centerOuterNormal() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-const ElementInfo & elementInfo() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:228\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimensionworld > NormalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector centerIntegrationOuterNormal() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector integrationOuterNormal(const LocalCoordType &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b_\n-ElementInfo elementInfo_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bT_\by_\bp_\be\n-FieldVector< ctype, dimension-1 > LocalCoordType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector centerUnitOuterNormal() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-int indexInInside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n-Entity inside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector unitOuterNormal(const LocalCoordType &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bg_\br_\bi_\bd\n-const Grid & grid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\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 albertagrid/intersection.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool boundary() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-size_t boundarySegmentIndex() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-AlbertaTransformation transformation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector outerNormal(const LocalCoordType &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn intersection.cc:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bg_\br_\bi_\bd_\b_\n-const Grid * grid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/intersection.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:443\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:208\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx\n-unsigned int boundaryIndex() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< cd >::Geometry Geometry\n-The corresponding geometry type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static constexpr int dimensionworld\n-The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool isBoundary(const int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+const MacroElement< dim > * neighbor(const int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+const GlobalVector & coordinate(const int vertex) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.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-grid-doc/doxygen/a00710.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00710.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: albertaheader.hh File Reference\n+dune-grid: transformation.hh File Reference\n \n \n \n \n \n \n \n@@ -70,122 +70,35 @@\n \n
    \n
    \n
    \n-Macros
    \n-
    albertaheader.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    transformation.hh File Reference
    \n
    \n
    \n-
    #include <alberta/alberta.h>
    \n+
    #include <dune/common/fvector.hh>
    \n+#include <dune/grid/albertagrid/misc.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-Macros

    #define DIM_OF_WORLD   ALBERTA_DIM
     
    #define ALBERTA   ::
     
    #define ALBERTA_DEBUG   0
     
    #define _MAX_NOT_DEFINED_
     
    #define _MIN_NOT_DEFINED_
     
    #define _ABS_NOT_DEFINED_
     

    \n+Classes

    class  Dune::AlbertaTransformation
     
    \n+\n+\n+\n+\n

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-

    Macro Definition Documentation

    \n-\n-

    ◆ _ABS_NOT_DEFINED_

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define _ABS_NOT_DEFINED_
    \n-
    \n-\n-
    \n-
    \n-\n-

    ◆ _MAX_NOT_DEFINED_

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define _MAX_NOT_DEFINED_
    \n-
    \n-\n-
    \n-
    \n-\n-

    ◆ _MIN_NOT_DEFINED_

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define _MIN_NOT_DEFINED_
    \n-
    \n-\n-
    \n-
    \n-\n-

    ◆ ALBERTA

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define ALBERTA   ::
    \n-
    \n-\n-
    \n-
    \n-\n-

    ◆ ALBERTA_DEBUG

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define ALBERTA_DEBUG   0
    \n-
    \n-\n-
    \n-
    \n-\n-

    ◆ DIM_OF_WORLD

    \n-\n-
    \n-
    \n- \n- \n- \n- \n-
    #define DIM_OF_WORLD   ALBERTA_DIM
    \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,39 +1,21 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bM_\ba_\bc_\br_\bo_\bs\n-albertaheader.hh File Reference\n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+transformation.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-M\bMa\bac\bcr\bro\bos\bs\n-#define\u00a0 _\bD_\bI_\bM_\b__\bO_\bF_\b__\bW_\bO_\bR_\bL_\bD\u00a0\u00a0\u00a0ALBERTA_DIM\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n \u00a0\n-#define\u00a0 _\bA_\bL_\bB_\bE_\bR_\bT_\bA\u00a0\u00a0\u00a0::\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\n \u00a0\n-#define\u00a0 _\bA_\bL_\bB_\bE_\bR_\bT_\bA_\b__\bD_\bE_\bB_\bU_\bG\u00a0\u00a0\u00a00\n-\u00a0\n-#define\u00a0 _\b__\bM_\bA_\bX_\b__\bN_\bO_\bT_\b__\bD_\bE_\bF_\bI_\bN_\bE_\bD_\b_\n-\u00a0\n-#define\u00a0 _\b__\bM_\bI_\bN_\b__\bN_\bO_\bT_\b__\bD_\bE_\bF_\bI_\bN_\bE_\bD_\b_\n-\u00a0\n-#define\u00a0 _\b__\bA_\bB_\bS_\b__\bN_\bO_\bT_\b__\bD_\bE_\bF_\bI_\bN_\bE_\bD_\b_\n-\u00a0\n-*\b**\b**\b**\b**\b* M\bMa\bac\bcr\bro\bo D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_A\bAB\bBS\bS_\b_N\bNO\bOT\bT_\b_D\bDE\bEF\bFI\bIN\bNE\bED\bD_\b_ *\b**\b**\b**\b**\b*\n-#define _ABS_NOT_DEFINED_\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_M\bMA\bAX\bX_\b_N\bNO\bOT\bT_\b_D\bDE\bEF\bFI\bIN\bNE\bED\bD_\b_ *\b**\b**\b**\b**\b*\n-#define _MAX_NOT_DEFINED_\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0_\b_M\bMI\bIN\bN_\b_N\bNO\bOT\bT_\b_D\bDE\bEF\bFI\bIN\bNE\bED\bD_\b_ *\b**\b**\b**\b**\b*\n-#define _MIN_NOT_DEFINED_\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0A\bAL\bLB\bBE\bER\bRT\bTA\bA *\b**\b**\b**\b**\b*\n-#define ALBERTA\u00a0\u00a0\u00a0::\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0A\bAL\bLB\bBE\bER\bRT\bTA\bA_\b_D\bDE\bEB\bBU\bUG\bG *\b**\b**\b**\b**\b*\n-#define ALBERTA_DEBUG\u00a0\u00a0\u00a00\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0D\bDI\bIM\bM_\b_O\bOF\bF_\b_W\bWO\bOR\bRL\bLD\bD *\b**\b**\b**\b**\b*\n-#define DIM_OF_WORLD\u00a0\u00a0\u00a0ALBERTA_DIM\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00710_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00710_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: albertaheader.hh Source File\n+dune-grid: transformation.hh Source File\n \n \n \n \n \n \n \n@@ -74,94 +74,119 @@\n \n \n
    \n
    \n-
    albertaheader.hh
    \n+
    transformation.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTAHEADER_HH
    \n-
    6#define DUNE_ALBERTAHEADER_HH
    \n+
    5#ifndef DUNE_ALBERTA_TRANSFORMATION_HH
    \n+
    6#define DUNE_ALBERTA_TRANSFORMATION_HH
    \n
    7
    \n-
    8#if HAVE_ALBERTA
    \n+
    8#include <dune/common/fvector.hh>
    \n
    9
    \n-
    10#if not (ALBERTA_DIM > 0)
    \n-
    11 #if HEADERCHECK
    \n-
    12 #undef ALBERTA_DIM
    \n-
    13 #define ALBERTA_DIM 2
    \n-
    14 #else
    \n-
    15 #error ALBERTA_DIM should be 1, 2, or 3
    \n-
    16 #endif
    \n-
    17#endif
    \n-
    18
    \n-
    19// Set ALBERTA's DIM_OF_WORLD preprocessor variable
    \n-
    20#ifndef ALBERTA_DIM
    \n-
    21#error "ALBERTA_DIM needed to use AlbertaGrid."
    \n-
    22#endif
    \n-
    23#define DIM_OF_WORLD ALBERTA_DIM
    \n-
    24
    \n-
    25// if we have ALBERTA C++ lib define namespace for ALBERTA
    \n-
    26#ifdef __ALBERTApp__
    \n-
    27#define ALBERTA Alberta::
    \n-
    28#else
    \n-
    29#define ALBERTA ::
    \n-
    30#endif
    \n-
    31
    \n-
    32#ifndef ALBERTA_DEBUG
    \n-
    33#define ALBERTA_DEBUG 0
    \n-
    34#endif
    \n-
    35
    \n-
    36// MAX, MIN, and ABS are defined macros of ALBERTA
    \n-
    37// if they are not defined elsewhere, they are undefined here
    \n-
    38#ifndef MAX
    \n-
    39#define _MAX_NOT_DEFINED_
    \n-
    40#endif
    \n-
    41
    \n-
    42#ifndef MIN
    \n-
    43#define _MIN_NOT_DEFINED_
    \n-
    44#endif
    \n-
    45
    \n-
    46#ifndef ABS
    \n-
    47#define _ABS_NOT_DEFINED_
    \n-
    48#endif
    \n-
    49
    \n-
    50#ifndef DIM_OF_WORLD
    \n-
    51#error "DIM_OF_WORLD not defined."
    \n-
    52#endif
    \n-
    53
    \n-
    54#ifdef HAVE_CONFIG_H
    \n-
    55#define ALBERTASAVE_HAVE_CONFIG_H HAVE_CONFIG_H
    \n-
    56#undef HAVE_CONFIG_H
    \n-
    57#endif
    \n-
    58
    \n-
    59#include <alberta/alberta.h>
    \n-
    60
    \n-
    61#ifdef ALBERTASAVE_HAVE_CONFIG_H
    \n-
    62#define HAVE_CONFIG_H ALBERTASAVE_HAVE_CONFIG_H
    \n-
    63#undef ALBERTASAVE_HAVE_CONFIG_H
    \n-
    64#endif
    \n-
    65
    \n-
    66#ifndef _ALBERTA_H_
    \n-
    67#error "Unable to include alberta.h."
    \n-
    68#endif
    \n-
    69
    \n-
    70// Macro nil may be defined by alberta_util.h. If so, undefine it.
    \n-
    71#ifdef nil
    \n-
    72#undef nil
    \n-
    73#endif
    \n-
    74
    \n-
    75#endif // #if HAVE_ALBERTA
    \n-
    76
    \n-
    77#endif // #ifndef DUNE_ALBERTAHEADER_HH
    \n+\n+
    11
    \n+
    12#if HAVE_ALBERTA
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    \n+\n+
    18 {
    \n+\n+
    20
    \n+
    21 public:
    \n+\n+
    23
    \n+
    24 static const int dimension = Alberta::dimWorld;
    \n+
    25
    \n+
    26 typedef FieldVector< ctype, dimension > WorldVector;
    \n+
    27
    \n+
    28 explicit
    \n+
    \n+\n+
    30 : matrix_( (trafo != NULL ? trafo->M : GlobalSpace::identityMatrix()) ),
    \n+
    31 shift_( (trafo != NULL ? trafo->t : GlobalSpace::nullVector()) )
    \n+
    32 {}
    \n+
    \n+
    33
    \n+
    \n+\n+
    35 const GlobalSpace::Vector &shift )
    \n+
    36 : matrix_( matrix ),
    \n+
    37 shift_( shift )
    \n+
    38 {}
    \n+
    \n+
    39
    \n+
    \n+
    40 WorldVector evaluate ( const WorldVector &x ) const
    \n+
    41 {
    \n+\n+
    43 for( int i = 0; i < dimension; ++i )
    \n+
    44 {
    \n+
    45 const GlobalSpace::Vector &row = matrix_[ i ];
    \n+
    46 y[ i ] = shift_[ i ];
    \n+
    47 for( int j = 0; j < dimension; ++j )
    \n+
    48 y[ i ] += row[ j ] * x[ j ];
    \n+
    49 }
    \n+
    50 return y;
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    \n+\n+
    54 {
    \n+
    55 // Note: ALBERTA requires the matrix to be orthogonal
    \n+
    56 WorldVector x( ctype( 0 ) );
    \n+
    57 for( int i = 0; i < dimension; ++i )
    \n+
    58 {
    \n+
    59 const GlobalSpace::Vector &row = matrix_[ i ];
    \n+
    60 const ctype v = y[ i ] - shift_[ i ];
    \n+
    61 for( int j = 0; j < dimension; ++j )
    \n+
    62 x[ j ] += row[ j ] * v;
    \n+
    63 }
    \n+
    64 return x;
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    67 private:
    \n+
    68 const GlobalSpace::Matrix &matrix_;
    \n+
    69 const GlobalSpace::Vector &shift_;
    \n+
    70 };
    \n+
    \n+
    71
    \n+
    72}
    \n+
    73
    \n+
    74#endif // #if HAVE_ALBERTA
    \n+
    75
    \n+
    76#endif // #ifndef DUNE_ALBERTA_TRANSFORMATION_HH
    \n+\n+
    Include standard header files.
    Definition agrid.hh:60
    \n+
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    static const int dimWorld
    Definition misc.hh:46
    \n+
    Definition misc.hh:102
    \n+
    GlobalMatrix Matrix
    Definition misc.hh:106
    \n+
    GlobalVector Vector
    Definition misc.hh:107
    \n+
    Definition transformation.hh:18
    \n+
    AlbertaTransformation(const Alberta::AffineTransformation *trafo=NULL)
    Definition transformation.hh:29
    \n+
    static const int dimension
    Definition transformation.hh:24
    \n+
    FieldVector< ctype, dimension > WorldVector
    Definition transformation.hh:26
    \n+
    AlbertaTransformation(const GlobalSpace::Matrix &matrix, const GlobalSpace::Vector &shift)
    Definition transformation.hh:34
    \n+
    Alberta::Real ctype
    Definition transformation.hh:22
    \n+
    WorldVector evaluateInverse(const WorldVector &y) const
    Definition transformation.hh:53
    \n+
    WorldVector evaluate(const WorldVector &x) const
    Definition transformation.hh:40
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,89 +1,133 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-albertaheader.hh\n+transformation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTAHEADER_HH\n-6#define DUNE_ALBERTAHEADER_HH\n+5#ifndef DUNE_ALBERTA_TRANSFORMATION_HH\n+6#define DUNE_ALBERTA_TRANSFORMATION_HH\n 7\n-8#if HAVE_ALBERTA\n+8#include \n 9\n-10#if not (ALBERTA_DIM > 0)\n-11 #if HEADERCHECK\n-12 #undef ALBERTA_DIM\n-13 #define ALBERTA_DIM 2\n-14 #else\n-15 #error ALBERTA_DIM should be 1, 2, or 3\n-16 #endif\n-17#endif\n-18\n-19// Set ALBERTA's DIM_OF_WORLD preprocessor variable\n-20#ifndef ALBERTA_DIM\n-21#error \"ALBERTA_DIM needed to use AlbertaGrid.\"\n-22#endif\n-_\b2_\b3#define DIM_OF_WORLD ALBERTA_DIM\n-24\n-25// if we have ALBERTA C++ lib define namespace for ALBERTA\n-26#ifdef __ALBERTApp__\n-27#define ALBERTA Alberta::\n-28#else\n-_\b2_\b9#define ALBERTA ::\n-30#endif\n-31\n-32#ifndef ALBERTA_DEBUG\n-_\b3_\b3#define ALBERTA_DEBUG 0\n-34#endif\n-35\n-36// MAX, MIN, and ABS are defined macros of ALBERTA\n-37// if they are not defined elsewhere, they are undefined here\n-38#ifndef MAX\n-_\b3_\b9#define _MAX_NOT_DEFINED_\n-40#endif\n-41\n-42#ifndef MIN\n-_\b4_\b3#define _MIN_NOT_DEFINED_\n-44#endif\n-45\n-46#ifndef ABS\n-_\b4_\b7#define _ABS_NOT_DEFINED_\n-48#endif\n-49\n-50#ifndef DIM_OF_WORLD\n-51#error \"DIM_OF_WORLD not defined.\"\n-52#endif\n-53\n-54#ifdef HAVE_CONFIG_H\n-55#define ALBERTASAVE_HAVE_CONFIG_H HAVE_CONFIG_H\n-56#undef HAVE_CONFIG_H\n-57#endif\n-58\n-59#include \n-60\n-61#ifdef ALBERTASAVE_HAVE_CONFIG_H\n-62#define HAVE_CONFIG_H ALBERTASAVE_HAVE_CONFIG_H\n-63#undef ALBERTASAVE_HAVE_CONFIG_H\n-64#endif\n-65\n-66#ifndef _ALBERTA_H_\n-67#error \"Unable to include alberta.h.\"\n-68#endif\n-69\n-70// Macro nil may be defined by alberta_util.h. If so, undefine it.\n-71#ifdef nil\n-72#undef nil\n-73#endif\n-74\n-75#endif // #if HAVE_ALBERTA\n-76\n-77#endif // #ifndef DUNE_ALBERTAHEADER_HH\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+11\n+12#if HAVE_ALBERTA\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+_\b1_\b7 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+18 {\n+19 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be;\n+20\n+21 public:\n+_\b2_\b2 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n+23\n+_\b2_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd;\n+25\n+_\b2_\b6 typedef FieldVector< ctype, dimension > _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br;\n+27\n+28 explicit\n+_\b2_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *trafo = NULL )\n+30 : matrix_( (trafo != NULL ? trafo->M : _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be::identityMatrix()) ),\n+31 shift_( (trafo != NULL ? trafo->t : _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be::nullVector()) )\n+32 {}\n+33\n+_\b3_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx &matrix,\n+35 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &shift )\n+36 : matrix_( matrix ),\n+37 shift_( shift )\n+38 {}\n+39\n+_\b4_\b0 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br &x ) const\n+41 {\n+42 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br y;\n+43 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+44 {\n+45 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &row = matrix_[ i ];\n+46 y[ i ] = shift_[ i ];\n+47 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n+48 y[ i ] += row[ j ] * x[ j ];\n+49 }\n+50 return y;\n+51 }\n+52\n+_\b5_\b3 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bI_\bn_\bv_\be_\br_\bs_\be ( const _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br &y ) const\n+54 {\n+55 // Note: ALBERTA requires the matrix to be orthogonal\n+56 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br x( _\bc_\bt_\by_\bp_\be( 0 ) );\n+57 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+58 {\n+59 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &row = matrix_[ i ];\n+60 const _\bc_\bt_\by_\bp_\be v = y[ i ] - shift_[ i ];\n+61 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n+62 x[ j ] += row[ j ] * v;\n+63 }\n+64 return x;\n+65 }\n+66\n+67 private:\n+68 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx &matrix_;\n+69 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &shift_;\n+70 };\n+71\n+72}\n+73\n+74#endif // #if HAVE_ALBERTA\n+75\n+76#endif // #ifndef DUNE_ALBERTA_TRANSFORMATION_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\bD_\bu_\bn_\be\n+Include standard header files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+ALBERTA AFF_TRAFO AffineTransformation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+GlobalMatrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br\n+GlobalVector Vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+AlbertaTransformation(const Alberta::AffineTransformation *trafo=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\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 transformation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimension > WorldVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+AlbertaTransformation(const GlobalSpace::Matrix &matrix, const GlobalSpace::\n+Vector &shift)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Alberta::Real ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bI_\bn_\bv_\be_\br_\bs_\be\n+WorldVector evaluateInverse(const WorldVector &y) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+WorldVector evaluate(const WorldVector &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.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-grid-doc/doxygen/a00713.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00713.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: leafiterator.hh File Reference\n+dune-grid: hierarchiciterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,27 +72,25 @@\n
  • dune
  • grid
  • albertagrid
  • \n
    \n
    \n
    \n \n-
    leafiterator.hh File Reference
    \n+
    hierarchiciterator.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/common/entityiterator.hh>
    \n-#include <dune/grid/albertagrid/treeiterator.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::AlbertaGridLeafIterator< codim, pitype, GridImp >
     
    class  Dune::AlbertaGridLeafIterator< codim, Ghost_Partition, GridImp >
    class  Dune::AlbertaGridHierarchicIterator< GridImp >
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,22 +2,20 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-leafiterator.hh File Reference\n+hierarchiciterator.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00713_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00713_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: leafiterator.hh Source File\n+dune-grid: hierarchiciterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,146 +74,210 @@\n \n \n \n
    \n-
    leafiterator.hh
    \n+
    hierarchiciterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_LEAFITERATOR_HH
    \n-
    6#define DUNE_ALBERTA_LEAFITERATOR_HH
    \n+
    5#ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH
    \n+
    6#define DUNE_ALBERTA_HIERARCHICITERATOR_HH
    \n
    7
    \n-\n-
    9
    \n-\n-
    11
    \n-
    12#if HAVE_ALBERTA
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17 // AlbertaGridLeafIterator
    \n-
    18 // -----------------------
    \n-
    19
    \n-
    20 template< int codim, PartitionIteratorType pitype, class GridImp >
    \n-
    \n-\n-
    22 : public AlbertaGridTreeIterator< codim, GridImp, true >
    \n-
    23 {
    \n-\n-\n-
    26
    \n-
    27 public:
    \n-
    28 typedef typename Base::Entity Entity;
    \n-\n-
    30
    \n-
    \n-\n-
    32 {}
    \n-
    \n-
    33
    \n-
    \n-
    35 AlbertaGridLeafIterator ( const GridImp &grid, int level )
    \n-
    36 : Base( grid, level )
    \n-
    37 {}
    \n-
    \n+\n+\n+
    10
    \n+
    11#if HAVE_ALBERTA
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 // AlbertaGridHierarchicIterator
    \n+
    17 // -----------------------------
    \n+
    18
    \n+
    27 template< class GridImp >
    \n+
    \n+\n+
    29 {
    \n+\n+
    31
    \n+
    32 public:
    \n+
    33 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n+
    34 typedef typename GridImp::ctype ctype;
    \n+
    35
    \n+\n+\n
    38
    \n-
    \n-
    40 AlbertaGridLeafIterator ( const GridImp &grid,
    \n-
    41 const MarkerVector *vec,
    \n-
    42 int level )
    \n-
    43 : Base( grid, vec, level )
    \n-
    44 {}
    \n-
    \n-
    45
    \n-
    \n-
    47 void increment ()
    \n-
    48 {
    \n-\n-
    50 }
    \n-
    \n-
    51 };
    \n-
    \n-
    52
    \n-
    53
    \n-
    54 template< int codim, class GridImp >
    \n-
    \n-\n-
    56 : public AlbertaGridTreeIterator< codim, GridImp, true >
    \n-
    57 {
    \n-\n-\n+
    39 typedef typename EntityImp::ElementInfo ElementInfo;
    \n+
    40
    \n+\n+
    43
    \n+
    45 AlbertaGridHierarchicIterator ( const GridImp &grid,
    \n+
    46 const ElementInfo &elementInfo,
    \n+
    47 int maxLevel );
    \n+
    48
    \n+
    50 AlbertaGridHierarchicIterator ( const GridImp &grid, int actLevel, int maxLevel );
    \n+
    51
    \n+
    53 AlbertaGridHierarchicIterator ( const This &other );
    \n+
    54
    \n+
    56 This &operator= ( const This &other );
    \n+
    57
    \n+
    59 void increment();
    \n
    60
    \n-
    61 public:
    \n-
    62 typedef typename Base::Entity Entity;
    \n-\n-
    64
    \n-
    \n-\n-
    66 {}
    \n-
    \n-
    67
    \n-
    \n-
    69 AlbertaGridLeafIterator ( const GridImp &grid, int level )
    \n-
    70 : Base( grid, level )
    \n-
    71 {}
    \n+
    \n+
    62 bool equals ( const This &other ) const
    \n+
    63 {
    \n+
    64 return entity_.impl().equals( other.entity_.impl() );
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    \n+\n+
    69 {
    \n+
    70 return entity_;
    \n+
    71 }
    \n
    \n
    72
    \n
    \n-
    74 AlbertaGridLeafIterator ( const GridImp &grid,
    \n-
    75 const MarkerVector *,
    \n-
    76 int level )
    \n-
    77 : Base( grid, level )
    \n-
    78 {}
    \n+
    74 int level () const
    \n+
    75 {
    \n+
    76 return entity_.impl().level();
    \n+
    77 }
    \n
    \n-
    79
    \n+
    78
    \n+
    79 protected:
    \n
    \n-
    81 void increment ()
    \n-
    82 {
    \n-\n+
    81 const GridImp &grid () const
    \n+
    82 {
    \n+
    83 return entity_.impl().grid();
    \n
    84 }
    \n
    \n-
    85 };
    \n-
    \n-
    86
    \n-
    87}
    \n+
    85
    \n+
    86 private:
    \n+
    87 void increment ( ElementInfo elementInfo );
    \n
    88
    \n-
    89#endif // #if HAVE_ALBERTA
    \n+
    89 mutable Entity entity_;
    \n
    90
    \n-
    91#endif // #ifndef DUNE_ALBERTA_LEAFITERATOR_HH
    \n-\n-\n-
    @ Ghost_Partition
    only ghost entities
    Definition gridenums.hh:142
    \n+
    91 // level on which the iterator was started
    \n+
    92 int startLevel_;
    \n+
    93
    \n+
    94 // maximal level to go down to
    \n+
    95 int maxlevel_;
    \n+
    96 };
    \n+
    \n+
    97
    \n+
    98
    \n+
    99 template< class GridImp >
    \n+
    100 inline AlbertaGridHierarchicIterator< GridImp >
    \n+
    \n+
    101 ::AlbertaGridHierarchicIterator( const GridImp &grid, int actLevel, int maxLevel )
    \n+
    102 : entity_( EntityImp( grid ) ),
    \n+
    103 startLevel_( actLevel ),
    \n+
    104 maxlevel_( maxLevel )
    \n+
    105 {}
    \n+
    \n+
    106
    \n+
    107
    \n+
    108 template< class GridImp >
    \n+\n+
    \n+\n+
    111 const ElementInfo &elementInfo,
    \n+
    112 int maxLevel )
    \n+
    113 : entity_( EntityImp( grid ) ),
    \n+
    114 startLevel_( elementInfo.level() ),
    \n+
    115 maxlevel_( maxLevel )
    \n+
    116 {
    \n+
    117 increment( elementInfo );
    \n+
    118 }
    \n+
    \n+
    119
    \n+
    120
    \n+
    121 template< class GridImp >
    \n+\n+
    \n+\n+
    124 : entity_( other.entity_ ),
    \n+
    125 startLevel_( other.startLevel_ ),
    \n+
    126 maxlevel_( other.maxlevel_ )
    \n+
    127 {}
    \n+
    \n+
    128
    \n+
    129
    \n+
    130 template< class GridImp >
    \n+\n+
    \n+\n+
    133 {
    \n+
    134 entity_ = other.entity_;
    \n+
    135 startLevel_ = other.startLevel_;
    \n+
    136 maxlevel_ = other.maxlevel_;
    \n+
    137 return *this;
    \n+
    138 }
    \n+
    \n+
    139
    \n+
    140
    \n+
    141 template< class GridImp >
    \n+
    \n+\n+
    143 {
    \n+
    144 increment( entity_.impl().elementInfo() );
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    147 template< class GridImp >
    \n+\n+
    149 ::increment ( ElementInfo elementInfo )
    \n+
    150 {
    \n+
    151 assert( !elementInfo == false );
    \n+
    152 if( (elementInfo.level() >= maxlevel_) || elementInfo.isLeaf() )
    \n+
    153 {
    \n+
    154 while( (elementInfo.level() > startLevel_) && (elementInfo.indexInFather() == 1) )
    \n+
    155 elementInfo = elementInfo.father();
    \n+
    156 if( elementInfo.level() > startLevel_ )
    \n+
    157 entity_.impl().setElement( elementInfo.father().child( 1 ), 0 );
    \n+
    158 else
    \n+
    159 entity_.impl().clearElement();
    \n+
    160 }
    \n+
    161 else
    \n+
    162 entity_.impl().setElement( elementInfo.child( 0 ), 0 );
    \n+
    163 }
    \n+
    164
    \n+
    165}
    \n+
    166
    \n+
    167#endif // #if HAVE_ALBERTA
    \n+
    168
    \n+
    169#endif // #ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH
    \n+\n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition treeiterator.hh:189
    \n-
    GridImp::template Codim< codim >::Entity Entity
    Definition treeiterator.hh:207
    \n-
    int level() const
    ask for level of entities
    Definition treeiterator.hh:243
    \n-
    void increment()
    increment
    Definition treeiterator.hh:411
    \n-
    const GridImp & grid() const
    obtain a reference to the grid
    Definition treeiterator.hh:253
    \n-
    Definition leafiterator.hh:23
    \n-
    Base::Entity Entity
    Definition leafiterator.hh:28
    \n-
    AlbertaGridLeafIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leafiterator.hh:35
    \n-
    Base::MarkerVector MarkerVector
    Definition leafiterator.hh:29
    \n-
    AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *vec, int level)
    Constructor making begin iterator.
    Definition leafiterator.hh:40
    \n-
    AlbertaGridLeafIterator()
    Definition leafiterator.hh:31
    \n-
    void increment()
    increment the iterator
    Definition leafiterator.hh:47
    \n-\n-
    Base::Entity Entity
    Definition leafiterator.hh:62
    \n-
    void increment()
    increment the iterator
    Definition leafiterator.hh:81
    \n-
    AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *, int level)
    Constructor making begin iterator (which is the end iterator in this case)
    Definition leafiterator.hh:74
    \n-\n-
    Base::MarkerVector MarkerVector
    Definition leafiterator.hh:63
    \n-
    AlbertaGridLeafIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leafiterator.hh:69
    \n-
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n+
    Definition hierarchiciterator.hh:29
    \n+
    Entity & dereference() const
    dereferencing
    Definition hierarchiciterator.hh:68
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition hierarchiciterator.hh:33
    \n+
    const GridImp & grid() const
    obtain a reference to the grid
    Definition hierarchiciterator.hh:81
    \n+
    EntityImp::ElementInfo ElementInfo
    Definition hierarchiciterator.hh:39
    \n+
    int level() const
    ask for level of entities
    Definition hierarchiciterator.hh:74
    \n+
    AlbertaGridHierarchicIterator()
    Definition hierarchiciterator.hh:41
    \n+
    void increment()
    increment
    Definition hierarchiciterator.hh:142
    \n+
    GridImp::ctype ctype
    Definition hierarchiciterator.hh:34
    \n+
    EntityObject::ImplementationType EntityImp
    Definition hierarchiciterator.hh:37
    \n+
    bool equals(const This &other) const
    equality
    Definition hierarchiciterator.hh:62
    \n+
    This & operator=(const This &other)
    assignment operator
    Definition hierarchiciterator.hh:132
    \n+
    MakeableInterfaceObject< Entity > EntityObject
    Definition hierarchiciterator.hh:36
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+\n+
    InterfaceType::Implementation ImplementationType
    Definition common/grid.hh:1108
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,176 +1,224 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-leafiterator.hh\n+hierarchiciterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_LEAFITERATOR_HH\n-6#define DUNE_ALBERTA_LEAFITERATOR_HH\n+5#ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH\n+6#define DUNE_ALBERTA_HIERARCHICITERATOR_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-11\n-12#if HAVE_ALBERTA\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17 // AlbertaGridLeafIterator\n-18 // -----------------------\n-19\n-20 template< int codim, PartitionIteratorType pitype, class GridImp >\n-_\b2_\b1 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-22 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, true >\n-23 {\n-24 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n-25 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b> _\bB_\ba_\bs_\be;\n-26\n-27 public:\n-_\b2_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b2_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n-30\n-_\b3_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-32 {}\n-33\n-_\b3_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n-36 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n-37 {}\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+10\n+11#if HAVE_ALBERTA\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 // AlbertaGridHierarchicIterator\n+17 // -----------------------------\n+18\n+27 template< class GridImp >\n+_\b2_\b8 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+29 {\n+30 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+31\n+32 public:\n+_\b3_\b3 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b3_\b4 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n+35\n+_\b3_\b6 typedef _\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt;\n+_\b3_\b7 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n 38\n-_\b4_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-41 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *vec,\n-42 int _\bl_\be_\bv_\be_\bl )\n-43 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, vec, _\bl_\be_\bv_\be_\bl )\n-44 {}\n-45\n-_\b4_\b7 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-48 {\n-49 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n-50 }\n-51 };\n-52\n-53\n-54 template< int codim, class GridImp >\n-_\b5_\b5 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn, GridImp >\n-56 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, true >\n-57 {\n-58 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n-59 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b> _\bB_\ba_\bs_\be;\n+_\b3_\b9 typedef typename EntityImp::ElementInfo _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+40\n+_\b4_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+42 {}\n+43\n+45 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+46 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo,\n+47 int maxLevel );\n+48\n+50 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int actLevel, int\n+maxLevel );\n+51\n+53 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const This &other );\n+54\n+56 This &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const This &other );\n+57\n+59 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n 60\n-61 public:\n-_\b6_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b6_\b3 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n-64\n-_\b6_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-66 {}\n-67\n-_\b6_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n-70 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n-71 {}\n+_\b6_\b2 bool _\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &other ) const\n+63 {\n+64 return entity_.impl().equals( other.entity_.impl() );\n+65 }\n+66\n+_\b6_\b8 _\bE_\bn_\bt_\bi_\bt_\by &_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be () const\n+69 {\n+70 return entity_;\n+71 }\n 72\n-_\b7_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-75 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *,\n-76 int _\bl_\be_\bv_\be_\bl )\n-77 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n-78 {}\n-79\n-_\b8_\b1 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+_\b7_\b4 int _\bl_\be_\bv_\be_\bl () const\n+75 {\n+76 return entity_.impl().level();\n+77 }\n+78\n+79 protected:\n+_\b8_\b1 const GridImp &_\bg_\br_\bi_\bd () const\n 82 {\n-83 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+83 return entity_.impl().grid();\n 84 }\n-85 };\n-86\n-87}\n+85\n+86 private:\n+87 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo elementInfo );\n 88\n-89#endif // #if HAVE_ALBERTA\n+89 mutable _\bE_\bn_\bt_\bi_\bt_\by entity_;\n 90\n-91#endif // #ifndef DUNE_ALBERTA_LEAFITERATOR_HH\n+91 // level on which the iterator was started\n+92 int startLevel_;\n+93\n+94 // maximal level to go down to\n+95 int maxlevel_;\n+96 };\n+97\n+98\n+99 template< class GridImp >\n+100 inline AlbertaGridHierarchicIterator< GridImp >\n+_\b1_\b0_\b1 ::AlbertaGridHierarchicIterator( const GridImp &grid, int actLevel, int\n+maxLevel )\n+102 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n+103 startLevel_( actLevel ),\n+104 maxlevel_( maxLevel )\n+105 {}\n+106\n+107\n+108 template< class GridImp >\n+109 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+_\b1_\b1_\b0_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &grid,\n+111 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo,\n+112 int maxLevel )\n+113 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n+114 startLevel_( elementInfo.level() ),\n+115 maxlevel_( maxLevel )\n+116 {\n+117 _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt( elementInfo );\n+118 }\n+119\n+120\n+121 template< class GridImp >\n+122 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+_\b1_\b2_\b3_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( const _\bT_\bh_\bi_\bs &other )\n+124 : entity_( other.entity_ ),\n+125 startLevel_( other.startLevel_ ),\n+126 maxlevel_( other.maxlevel_ )\n+127 {}\n+128\n+129\n+130 template< class GridImp >\n+131 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs &\n+_\b1_\b3_\b2 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+133 {\n+134 entity_ = other.entity_;\n+135 startLevel_ = other.startLevel_;\n+136 maxlevel_ = other.maxlevel_;\n+137 return *this;\n+138 }\n+139\n+140\n+141 template< class GridImp >\n+_\b1_\b4_\b2 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+143 {\n+144 increment( entity_.impl().elementInfo() );\n+145 }\n+146\n+147 template< class GridImp >\n+148 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+149_\b _\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ( ElementInfo elementInfo )\n+150 {\n+151 assert( !elementInfo == false );\n+152 if( (elementInfo.level() >= maxlevel_) || elementInfo.isLeaf() )\n+153 {\n+154 while( (elementInfo.level() > startLevel_) && (elementInfo.indexInFather()\n+== 1) )\n+155 elementInfo = elementInfo.father();\n+156 if( elementInfo.level() > startLevel_ )\n+157 entity_.impl().setElement( elementInfo.father().child( 1 ), 0 );\n+158 else\n+159 entity_.impl().clearElement();\n+160 }\n+161 else\n+162 entity_.impl().setElement( elementInfo.child( 0 ), 0 );\n+163 }\n+164\n+165}\n+166\n+167#endif // #if HAVE_ALBERTA\n+168\n+169#endif // #ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH\n _\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-@ Ghost_Partition\n-only ghost entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:142\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Entity & dereference() const\n+dereferencing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bg_\br_\bi_\bd\n+const GridImp & grid() const\n+obtain a reference to the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+EntityImp::ElementInfo ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\be_\bv_\be_\bl\n int level() const\n ask for level of entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridHierarchicIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n void increment()\n increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n-const GridImp & grid() const\n-obtain a reference to the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Base::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLeafIterator(const GridImp &grid, int level)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-Base::MarkerVector MarkerVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *vec, int\n-level)\n-Constructor making begin iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLeafIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment the iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Base::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment the iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *, int level)\n-Constructor making begin iterator (which is the end iterator in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLeafIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-Base::MarkerVector MarkerVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridLeafIterator(const GridImp &grid, int level)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-marker assigning subentities to one element containing them\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:35\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+GridImp::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp\n+EntityObject::ImplementationType EntityImp\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const This &other) const\n+equality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const This &other)\n+assignment operator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt\n+MakeableInterfaceObject< Entity > EntityObject\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchiciterator.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+InterfaceType::Implementation ImplementationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:1108\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00716.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00716.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: indexstack.hh File Reference\n+dune-grid: level.hh File Reference\n \n \n \n \n \n \n \n@@ -72,41 +72,42 @@\n
  • dune
  • grid
  • albertagrid
  • \n
    \n \n
    \n \n-
    indexstack.hh File Reference
    \n+
    level.hh File Reference
    \n
    \n
    \n-\n-

    Provides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid) \n-More...

    \n-
    #include <assert.h>
    \n-#include <stack>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/reservedvector.hh>
    \n+
    #include <cassert>
    \n+#include <cstdlib>
    \n+#include <dune/grid/albertagrid/meshpointer.hh>
    \n+#include <dune/grid/albertagrid/dofadmin.hh>
    \n+#include <dune/grid/albertagrid/dofvector.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::IndexStack< T, length >
    class  Dune::AlbertaGridLevelProvider< dim >
     
    class  Dune::AlbertaGridLevelProvider< dim >::SetLocal
     
    class  Dune::AlbertaGridLevelProvider< dim >::CalcMaxLevel
     
    struct  Dune::AlbertaGridLevelProvider< dim >::Interpolation
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-

    Detailed Description

    \n-

    Provides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid)

    \n-
    Author
    Robert Kloefkorn
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-indexstack.hh File Reference\n-Provides an index stack that supplies indices for element numbering for a grid\n-(i.e. AlbertaGrid and ALUGrid) _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n+level.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\b _\bT_\b,_\b _\bl_\be_\bn_\bg_\bt_\bh_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-Provides an index stack that supplies indices for element numbering for a grid\n-(i.e. AlbertaGrid and ALUGrid)\n- Author\n- Robert Kloefkorn\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00716_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00716_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: indexstack.hh Source File\n+dune-grid: level.hh Source File\n \n \n \n \n \n \n \n@@ -74,257 +74,327 @@\n \n \n \n
    \n-
    indexstack.hh
    \n+
    level.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTAGRID_INDEXSTACK_HH
    \n-
    6#define DUNE_ALBERTAGRID_INDEXSTACK_HH
    \n+
    5#ifndef DUNE_ALBERTA_LEVEL_HH
    \n+
    6#define DUNE_ALBERTA_LEVEL_HH
    \n
    7
    \n-
    8#include <assert.h>
    \n-
    9#include <stack>
    \n+
    8#include <cassert>
    \n+
    9#include <cstdlib>
    \n
    10
    \n-
    11#include <dune/common/exceptions.hh>
    \n-
    12#include <dune/common/reservedvector.hh>
    \n-
    13
    \n-
    20namespace Dune {
    \n-
    21
    \n-
    24 template <class T, int length>
    \n-
    \n-\n-
    26 {
    \n-
    27 class MyFiniteStack : public ReservedVector<T,length>
    \n-
    28 {
    \n-
    29 typedef ReservedVector<T,length> BaseType ;
    \n-
    30 public:
    \n-
    32 bool full () const { return this->size() >= length; }
    \n-
    33
    \n-
    35 void push( const T& t ) { BaseType :: push_back( t ); }
    \n-
    36
    \n-
    38 T topAndPop ()
    \n-
    39 {
    \n-
    40 assert( !this->empty() );
    \n-
    41 assert( this->size() <= length );
    \n-
    42 // This code is not slower than using the array structure directly.
    \n-
    43 // The compiler removes the temporary completely. I measured this.
    \n-
    44 // See the commit message for revision 7837 for more details.
    \n-
    45 T tmp = this->back();
    \n-
    46 this->pop_back();
    \n-
    47 return tmp;
    \n-
    48 }
    \n-
    49 };
    \n+\n+\n+\n+
    14
    \n+
    15#if HAVE_ALBERTA
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 // AlbertaGridLevelProvider
    \n+
    21 // ------------------------
    \n+
    22
    \n+
    23 template< int dim >
    \n+
    \n+\n+
    25 {
    \n+\n+
    27
    \n+
    28 typedef unsigned char Level;
    \n+
    29
    \n+\n+\n+
    32
    \n+\n+
    34
    \n+
    35 static const Level isNewFlag = (1 << 7);
    \n+
    36 static const Level levelMask = (1 << 7) - 1;
    \n+
    37
    \n+
    38 class SetLocal;
    \n+
    39 class CalcMaxLevel;
    \n+
    40
    \n+
    41 template< Level flags >
    \n+
    42 struct ClearFlags;
    \n+
    43
    \n+
    44 struct Interpolation;
    \n+
    45
    \n+
    46 public:
    \n+\n+\n+\n
    50
    \n-
    51 typedef MyFiniteStack StackType;
    \n-
    52 typedef typename std::stack < StackType * > StackListType;
    \n-
    53
    \n-
    54 StackListType fullStackList_;
    \n-
    55 StackListType emptyStackList_;
    \n+
    \n+
    51 Level operator() ( const Alberta::Element *element ) const
    \n+
    52 {
    \n+
    53 const Level *array = (Level *)level_;
    \n+
    54 return array[ dofAccess_( element, 0 ) ] & levelMask;
    \n+
    55 }
    \n+
    \n
    56
    \n-
    57 //typedef typename StackListType::Iterator DListIteratorType;
    \n-
    58 StackType * stack_;
    \n-
    59
    \n-
    60 // current maxIndex
    \n-
    61 int maxIndex_;
    \n-
    62 public:
    \n-
    64 inline IndexStack();
    \n-
    65
    \n-
    67 inline ~IndexStack ();
    \n-
    68
    \n-
    70 inline void checkAndSetMax(T index) { if(index > maxIndex_) maxIndex_ = index;}
    \n-
    71
    \n-
    73 inline void setMaxIndex(T index) { maxIndex_ = index; }
    \n-
    74
    \n-
    76 inline int getMaxIndex() const { return maxIndex_; }
    \n-
    77
    \n-
    79 inline int size() const { return getMaxIndex(); }
    \n-
    80
    \n-
    82 inline T getIndex ();
    \n-
    83
    \n-
    85 inline void freeIndex(T index);
    \n-
    86
    \n-
    88 inline void test ();
    \n+
    \n+
    57 Level operator() ( const ElementInfo &elementInfo ) const
    \n+
    58 {
    \n+
    59 return (*this)( elementInfo.el() );
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    62 bool isNew ( const Alberta::Element *element ) const
    \n+
    63 {
    \n+
    64 const Level *array = (Level *)level_;
    \n+
    65 return ((array[ dofAccess_( element, 0 ) ] & isNewFlag) != 0);
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    68 bool isNew ( const ElementInfo &elementInfo ) const
    \n+
    69 {
    \n+
    70 return isNew( elementInfo.el() );
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    73 Level maxLevel () const
    \n+
    74 {
    \n+
    75 CalcMaxLevel calcFromCache;
    \n+
    76 level_.forEach( calcFromCache );
    \n+
    77#ifndef NDEBUG
    \n+
    78 CalcMaxLevel calcFromGrid;
    \n+
    79 mesh().leafTraverse( calcFromGrid, FillFlags::nothing );
    \n+
    80 assert( calcFromCache.maxLevel() == calcFromGrid.maxLevel() );
    \n+
    81#endif
    \n+
    82 return calcFromCache.maxLevel();;
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+\n+
    86 {
    \n+
    87 return MeshPointer( level_.dofSpace()->mesh );
    \n+
    88 }
    \n+
    \n
    89
    \n-
    90 // backup set to out stream
    \n-
    91 inline void backupIndexSet ( std::ostream & os );
    \n-
    92
    \n-
    93 // restore from in stream
    \n-
    94 inline void restoreIndexSet ( std::istream & is );
    \n-
    95 private:
    \n-
    96 // no copy constructor allowed
    \n-
    97 IndexStack( const IndexStack<T,length> & s) : maxIndex_ (0) , stack_(0) {}
    \n-
    98
    \n-
    99 // no assignment operator allowed
    \n-
    100 IndexStack<T,length> & operator = ( const IndexStack<T,length> & s)
    \n-
    101 {
    \n-
    102 DUNE_THROW(Exception, "IndexStack::operator = () not allowed!");
    \n-
    103 return *this;
    \n-
    104 }
    \n-
    105
    \n-
    106 // clear fullStacks
    \n-
    107 void clearStack ();
    \n-
    108
    \n-
    109 }; // end class IndexStack
    \n+
    \n+
    90 void markAllOld ()
    \n+
    91 {
    \n+
    92 ClearFlags< isNewFlag > clearIsNew;
    \n+
    93 level_.forEach( clearIsNew );
    \n+
    94 }
    \n+
    \n+
    95
    \n+
    \n+
    96 void create ( const DofNumbering &dofNumbering )
    \n+
    97 {
    \n+
    98 const Alberta::DofSpace *const dofSpace = dofNumbering.dofSpace( 0 );
    \n+
    99 dofAccess_ = DofAccess( dofSpace );
    \n+
    100
    \n+
    101 level_.create( dofSpace, "Element level" );
    \n+
    102 assert( level_ );
    \n+
    103 level_.template setupInterpolation< Interpolation >();
    \n+
    104
    \n+
    105 SetLocal setLocal( level_ );
    \n+\n+
    107 }
    \n
    \n-
    110
    \n-
    111 //****************************************************************
    \n-
    112 // Inline implementation
    \n-
    113 // ***************************************************************
    \n-
    114 template <class T, int length>
    \n-
    \n-\n-
    116 : stack_ ( new StackType () ) , maxIndex_ (0) {}
    \n-
    \n-
    117
    \n-
    118 template <class T, int length>
    \n-
    \n-\n-
    120 {
    \n-
    121 if(stack_) delete stack_;
    \n-
    122 stack_ = 0;
    \n-
    123
    \n-
    124 while( !fullStackList_.empty() )
    \n-
    125 {
    \n-
    126 StackType * st = fullStackList_.top();
    \n-
    127 if(st) delete st;
    \n-
    128 fullStackList_.pop();
    \n-
    129 }
    \n-
    130 while( !emptyStackList_.empty() )
    \n-
    131 {
    \n-
    132 StackType * st = emptyStackList_.top();
    \n-
    133 if(st) delete st;
    \n-
    134 emptyStackList_.pop();
    \n-
    135 }
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    138 template <class T, int length>
    \n-
    \n-\n-
    140 {
    \n-
    141 if((*stack_).empty())
    \n-
    142 {
    \n-
    143 if( fullStackList_.size() <= 0)
    \n-
    144 {
    \n-
    145 return maxIndex_++;
    \n-
    146 }
    \n-
    147 else
    \n-
    148 {
    \n-
    149 emptyStackList_.push( stack_ );
    \n-
    150 stack_ = fullStackList_.top();
    \n-
    151 fullStackList_.pop();
    \n-
    152 }
    \n-
    153 }
    \n-
    154 return (*stack_).topAndPop();
    \n-
    155 }
    \n-
    \n-
    156
    \n-
    157 template <class T, int length>
    \n-
    \n-
    158 inline void IndexStack<T,length>::freeIndex ( T index )
    \n-
    159 {
    \n-
    160 if((*stack_).full())
    \n-
    161 {
    \n-
    162 fullStackList_.push( stack_ );
    \n-
    163 if(emptyStackList_.size() <= 0)
    \n-
    164 {
    \n-
    165 stack_ = new StackType ();
    \n-
    166 }
    \n-
    167 else
    \n-
    168 {
    \n-
    169 stack_ = emptyStackList_.top();
    \n-
    170 emptyStackList_.pop();
    \n-
    171 }
    \n+
    108
    \n+
    \n+
    109 void release ()
    \n+
    110 {
    \n+
    111 level_.release();
    \n+
    112 dofAccess_ = DofAccess();
    \n+
    113 }
    \n+
    \n+
    114
    \n+
    115 private:
    \n+
    116 DofVectorPointer level_;
    \n+
    117 DofAccess dofAccess_;
    \n+
    118 };
    \n+
    \n+
    119
    \n+
    120
    \n+
    121
    \n+
    122 // AlbertaGridLevelProvider::SetLocal
    \n+
    123 // ----------------------------------
    \n+
    124
    \n+
    125 template< int dim >
    \n+
    \n+\n+
    127 {
    \n+
    128 DofVectorPointer level_;
    \n+
    129 DofAccess dofAccess_;
    \n+
    130
    \n+
    131 public:
    \n+
    \n+
    132 explicit SetLocal ( const DofVectorPointer &level )
    \n+
    133 : level_( level ),
    \n+
    134 dofAccess_( level.dofSpace() )
    \n+
    135 {}
    \n+
    \n+
    136
    \n+
    \n+
    137 void operator() ( const Alberta::ElementInfo< dim > &elementInfo ) const
    \n+
    138 {
    \n+
    139 Level *const array = (Level *)level_;
    \n+
    140 array[ dofAccess_( elementInfo, 0 ) ] = elementInfo.level();
    \n+
    141 }
    \n+
    \n+
    142 };
    \n+
    \n+
    143
    \n+
    144
    \n+
    145
    \n+
    146 // AlbertaGridLevelProvider::CalcMaxLevel
    \n+
    147 // --------------------------------------
    \n+
    148
    \n+
    149 template< int dim >
    \n+
    \n+\n+
    151 {
    \n+
    152 Level maxLevel_;
    \n+
    153
    \n+
    154 public:
    \n+
    \n+\n+
    156 : maxLevel_( 0 )
    \n+
    157 {}
    \n+
    \n+
    158
    \n+
    \n+
    159 void operator() ( const Level &dof )
    \n+
    160 {
    \n+
    161 maxLevel_ = std::max( maxLevel_, Level( dof & levelMask ) );
    \n+
    162 }
    \n+
    \n+
    163
    \n+
    \n+
    164 void operator() ( const Alberta::ElementInfo< dim > &elementInfo )
    \n+
    165 {
    \n+
    166 maxLevel_ = std::max( maxLevel_, Level( elementInfo.level() ) );
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    \n+
    169 Level maxLevel () const
    \n+
    170 {
    \n+
    171 return maxLevel_;
    \n
    172 }
    \n-
    173 (*stack_).push(index);
    \n-
    174 }
    \n
    \n+
    173 };
    \n+
    \n+
    174
    \n
    175
    \n-
    176 template <class T, int length>
    \n-
    \n-\n-
    178 {
    \n-
    179 T vec[2*length];
    \n-
    180
    \n-
    181 for(int i=0; i<2*length; i++)
    \n-
    182 vec[i] = getIndex();
    \n-
    183
    \n-
    184 for(int i=0; i<2*length; i++)
    \n-
    185 freeIndex(vec[i]);
    \n-
    186
    \n-
    187 for(int i=0; i<2*length; i++)
    \n-
    188 vec[i] = getIndex();
    \n+
    176
    \n+
    177 // AlbertaGridLevelProvider::ClearFlags
    \n+
    178 // ------------------------------------
    \n+
    179
    \n+
    180 template< int dim >
    \n+
    181 template< typename AlbertaGridLevelProvider< dim >::Level flags >
    \n+
    182 struct AlbertaGridLevelProvider< dim >::ClearFlags
    \n+
    183 {
    \n+
    184 void operator() ( Level &dof ) const
    \n+
    185 {
    \n+
    186 dof &= ~flags;
    \n+
    187 }
    \n+
    188 };
    \n
    189
    \n-
    190 for(int i=0; i<2*length; i++)
    \n-
    191 printf(" index [%d] = %d \\n",i,vec[i]);
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    194 template <class T, int length>
    \n-
    \n-
    195 inline void IndexStack<T,length>::backupIndexSet ( std::ostream & os )
    \n-
    196 {
    \n-
    197 // holes are not stored at the moment
    \n-
    198 os.write( ((const char *) &maxIndex_ ), sizeof(int) ) ;
    \n-
    199 return ;
    \n-
    200 }
    \n-
    \n+
    190
    \n+
    191
    \n+
    192 // AlbertaGridLevelProvider::Interpolation
    \n+
    193 // ---------------------------------------
    \n+
    194
    \n+
    195 template< int dim >
    \n+
    \n+\n+
    197 {
    \n+
    198 static const int dimension = dim;
    \n+
    199
    \n+\n
    201
    \n-
    202 template <class T, int length>
    \n-
    \n-
    203 inline void IndexStack<T,length>::restoreIndexSet ( std::istream & is )
    \n-
    204 {
    \n-
    205 is.read ( ((char *) &maxIndex_), sizeof(int) );
    \n-
    206 clearStack ();
    \n+
    \n+
    202 static void interpolateVector ( const DofVectorPointer &dofVector,
    \n+
    203 const Patch &patch )
    \n+
    204 {
    \n+
    205 const DofAccess dofAccess( dofVector.dofSpace() );
    \n+
    206 Level *array = (Level *)dofVector;
    \n
    207
    \n-
    208 return ;
    \n-
    209 }
    \n-
    \n-
    210
    \n-
    211 template <class T, int length>
    \n-\n-
    213 {
    \n-
    214 if(stack_)
    \n-
    215 {
    \n-
    216 delete stack_;
    \n-
    217 stack_ = new StackType();
    \n-
    218 assert(stack_);
    \n+
    208 for( int i = 0; i < patch.count(); ++i )
    \n+
    209 {
    \n+
    210 const Alberta::Element *const father = patch[ i ];
    \n+
    211 assert( (array[ dofAccess( father, 0 ) ] & levelMask) < levelMask );
    \n+
    212 const Level childLevel = (array[ dofAccess( father, 0 ) ] + 1) | isNewFlag;
    \n+
    213 for( int i = 0; i < 2; ++i )
    \n+
    214 {
    \n+
    215 const Alberta::Element *child = father->child[ i ];
    \n+
    216 array[ dofAccess( child, 0 ) ] = childLevel;
    \n+
    217 }
    \n+
    218 }
    \n
    219 }
    \n-
    220
    \n-
    221 while( !fullStackList_.empty() )
    \n-
    222 {
    \n-
    223 StackType * st = fullStackList_.top();
    \n-
    224 if(st) delete st;
    \n-
    225 fullStackList_.pop();
    \n-
    226 }
    \n-
    227 return;
    \n-
    228 }
    \n-
    229
    \n-
    230} // end namespace Dune
    \n-
    231#endif
    \n+
    \n+
    220 };
    \n+
    \n+
    221
    \n+
    222}
    \n+
    223
    \n+
    224#endif // #if HAVE_ALBERTA
    \n+
    225
    \n+
    226#endif
    \n+
    provides a wrapper for ALBERTA's mesh structure
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition indexstack.hh:26
    \n-
    void restoreIndexSet(std::istream &is)
    Definition indexstack.hh:203
    \n-
    void checkAndSetMax(T index)
    set index as maxIndex if index is bigger than maxIndex
    Definition indexstack.hh:70
    \n-
    void backupIndexSet(std::ostream &os)
    Definition indexstack.hh:195
    \n-
    ~IndexStack()
    Destructor, deleting all stacks.
    Definition indexstack.hh:119
    \n-
    T getIndex()
    restore index from stack or create new index
    Definition indexstack.hh:139
    \n-
    IndexStack()
    Constructor, create new IndexStack.
    Definition indexstack.hh:115
    \n-
    void setMaxIndex(T index)
    set index as maxIndex
    Definition indexstack.hh:73
    \n-
    int size() const
    return maxIndex which is also the
    Definition indexstack.hh:79
    \n-
    void test()
    test stack functionality
    Definition indexstack.hh:177
    \n-
    void freeIndex(T index)
    store index on stack
    Definition indexstack.hh:158
    \n-
    int getMaxIndex() const
    return maxIndex which is also the
    Definition indexstack.hh:76
    \n+
    ALBERTA EL Element
    Definition misc.hh:54
    \n+
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n+
    Definition meshpointer.hh:40
    \n+
    void leafTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:385
    \n+
    void hierarchicTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:370
    \n+\n+
    Definition dofadmin.hh:93
    \n+
    const DofSpace * dofSpace(int codim) const
    Definition dofadmin.hh:145
    \n+\n+
    void create(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:236
    \n+
    void release()
    Definition dofvector.hh:254
    \n+
    const DofSpace * dofSpace() const
    Definition dofvector.hh:223
    \n+
    void forEach(Functor &functor) const
    Definition dofvector.hh:264
    \n+
    Definition elementinfo.hh:43
    \n+
    int level() const
    Definition elementinfo.hh:533
    \n+
    Element * el() const
    Definition elementinfo.hh:737
    \n+
    Definition level.hh:25
    \n+
    bool isNew(const Alberta::Element *element) const
    Definition level.hh:62
    \n+
    bool isNew(const ElementInfo &elementInfo) const
    Definition level.hh:68
    \n+
    Alberta::MeshPointer< dim > MeshPointer
    Definition level.hh:48
    \n+
    MeshPointer mesh() const
    Definition level.hh:85
    \n+
    void create(const DofNumbering &dofNumbering)
    Definition level.hh:96
    \n+
    Level maxLevel() const
    Definition level.hh:73
    \n+
    Alberta::HierarchyDofNumbering< dim > DofNumbering
    Definition level.hh:49
    \n+
    void release()
    Definition level.hh:109
    \n+
    Level operator()(const Alberta::Element *element) const
    Definition level.hh:51
    \n+
    void markAllOld()
    Definition level.hh:90
    \n+
    Alberta::ElementInfo< dim > ElementInfo
    Definition level.hh:47
    \n+\n+
    SetLocal(const DofVectorPointer &level)
    Definition level.hh:132
    \n+\n+\n+
    Level maxLevel() const
    Definition level.hh:169
    \n+\n+
    Alberta::Patch< dimension > Patch
    Definition level.hh:200
    \n+
    static void interpolateVector(const DofVectorPointer &dofVector, const Patch &patch)
    Definition level.hh:202
    \n+
    Definition misc.hh:231
    \n+
    static const Flags nothing
    Definition misc.hh:234
    \n+
    Definition refinement.hh:40
    \n+
    int count() const
    Definition refinement.hh:67
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,271 +1,355 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-indexstack.hh\n+level.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTAGRID_INDEXSTACK_HH\n-6#define DUNE_ALBERTAGRID_INDEXSTACK_HH\n+5#ifndef DUNE_ALBERTA_LEVEL_HH\n+6#define DUNE_ALBERTA_LEVEL_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\n-20namespace _\bD_\bu_\bn_\be {\n-21\n-24 template \n-_\b2_\b5 class _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n-26 {\n-27 class MyFiniteStack : public ReservedVector\n-28 {\n-29 typedef ReservedVector BaseType ;\n-30 public:\n-32 bool full () const { return this->_\bs_\bi_\bz_\be() >= length; }\n-33\n-35 void push( const T& t ) { BaseType :: push_back( t ); }\n-36\n-38 T topAndPop ()\n-39 {\n-40 assert( !this->empty() );\n-41 assert( this->_\bs_\bi_\bz_\be() <= length );\n-42 // This code is not slower than using the array structure directly.\n-43 // The compiler removes the temporary completely. I measured this.\n-44 // See the commit message for revision 7837 for more details.\n-45 T tmp = this->back();\n-46 this->pop_back();\n-47 return tmp;\n-48 }\n-49 };\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n+14\n+15#if HAVE_ALBERTA\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 // AlbertaGridLevelProvider\n+21 // ------------------------\n+22\n+23 template< int dim >\n+_\b2_\b4 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+25 {\n+26 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+27\n+28 typedef unsigned char Level;\n+29\n+30 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bL_\be_\bv_\be_\bl_\b _\b> _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+31 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b> _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs;\n+32\n+33 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\b _\b> _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs;\n+34\n+35 static const Level isNewFlag = (1 << 7);\n+36 static const Level levelMask = (1 << 7) - 1;\n+37\n+38 class _\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl;\n+39 class _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl;\n+40\n+41 template< Level flags >\n+42 struct ClearFlags;\n+43\n+44 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+45\n+46 public:\n+_\b4_\b7 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+_\b4_\b8 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+_\b4_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b> _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg;\n 50\n-51 typedef MyFiniteStack StackType;\n-52 typedef typename std::stack < StackType * > StackListType;\n-53\n-54 StackListType fullStackList_;\n-55 StackListType emptyStackList_;\n+_\b5_\b1 Level _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *element ) const\n+52 {\n+53 const Level *array = (Level *)level_;\n+54 return array[ dofAccess_( element, 0 ) ] & levelMask;\n+55 }\n 56\n-57 //typedef typename StackListType::Iterator DListIteratorType;\n-58 StackType * stack_;\n-59\n-60 // current maxIndex\n-61 int maxIndex_;\n-62 public:\n-64 inline _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk();\n-65\n-67 inline _\b~_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk ();\n-68\n-_\b7_\b0 inline void _\bc_\bh_\be_\bc_\bk_\bA_\bn_\bd_\bS_\be_\bt_\bM_\ba_\bx(T index) { if(index > maxIndex_) maxIndex_ =\n-index;}\n-71\n-_\b7_\b3 inline void _\bs_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx(T index) { maxIndex_ = index; }\n-74\n-_\b7_\b6 inline int _\bg_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx() const { return maxIndex_; }\n-77\n-_\b7_\b9 inline int _\bs_\bi_\bz_\be() const { return _\bg_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx(); }\n-80\n-82 inline T _\bg_\be_\bt_\bI_\bn_\bd_\be_\bx ();\n-83\n-85 inline void _\bf_\br_\be_\be_\bI_\bn_\bd_\be_\bx(T index);\n-86\n-88 inline void _\bt_\be_\bs_\bt ();\n+_\b5_\b7 Level _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const\n+58 {\n+59 return (*this)( elementInfo._\be_\bl() );\n+60 }\n+61\n+_\b6_\b2 bool _\bi_\bs_\bN_\be_\bw ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *element ) const\n+63 {\n+64 const Level *array = (Level *)level_;\n+65 return ((array[ dofAccess_( element, 0 ) ] & isNewFlag) != 0);\n+66 }\n+67\n+_\b6_\b8 bool _\bi_\bs_\bN_\be_\bw ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const\n+69 {\n+70 return _\bi_\bs_\bN_\be_\bw( elementInfo._\be_\bl() );\n+71 }\n+72\n+_\b7_\b3 Level _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl () const\n+74 {\n+75 _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl calcFromCache;\n+76 level_._\bf_\bo_\br_\bE_\ba_\bc_\bh( calcFromCache );\n+77#ifndef NDEBUG\n+78 _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl calcFromGrid;\n+79 _\bm_\be_\bs_\bh()._\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be( calcFromGrid, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n+80 assert( calcFromCache._\bm_\ba_\bx_\bL_\be_\bv_\be_\bl() == calcFromGrid._\bm_\ba_\bx_\bL_\be_\bv_\be_\bl() );\n+81#endif\n+82 return calcFromCache._\bm_\ba_\bx_\bL_\be_\bv_\be_\bl();;\n+83 }\n+84\n+_\b8_\b5 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br _\bm_\be_\bs_\bh () const\n+86 {\n+87 return _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br( level_._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->mesh );\n+88 }\n 89\n-90 // backup set to out stream\n-91 inline void _\bb_\ba_\bc_\bk_\bu_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::ostream & os );\n-92\n-93 // restore from in stream\n-94 inline void _\br_\be_\bs_\bt_\bo_\br_\be_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::istream & is );\n-95 private:\n-96 // no copy constructor allowed\n-97 _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk( const _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b> & s) : maxIndex_ (0) , stack_(0) {}\n-98\n-99 // no assignment operator allowed\n-100 IndexStack & operator = ( const IndexStack & s)\n-101 {\n-102 DUNE_THROW(Exception, \"IndexStack::operator = () not allowed!\");\n-103 return *this;\n-104 }\n-105\n-106 // clear fullStacks\n-107 void clearStack ();\n+_\b9_\b0 void _\bm_\ba_\br_\bk_\bA_\bl_\bl_\bO_\bl_\bd ()\n+91 {\n+92 ClearFlags< isNewFlag > clearIsNew;\n+93 level_._\bf_\bo_\br_\bE_\ba_\bc_\bh( clearIsNew );\n+94 }\n+95\n+_\b9_\b6 void _\bc_\br_\be_\ba_\bt_\be ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering )\n+97 {\n+98 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *const dofSpace = dofNumbering._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be( 0 );\n+99 dofAccess_ = _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs( dofSpace );\n+100\n+101 level_._\bc_\br_\be_\ba_\bt_\be( dofSpace, \"Element level\" );\n+102 assert( level_ );\n+103 level_.template setupInterpolation< Interpolation >();\n+104\n+105 _\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl setLocal( level_ );\n+106 _\bm_\be_\bs_\bh()._\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be( setLocal, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n+107 }\n 108\n-109 }; // end class IndexStack\n-110\n-111 //****************************************************************\n-112 // Inline implementation\n-113 // ***************************************************************\n-114 template \n-_\b1_\b1_\b5 inline _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk()\n-116 : stack_ ( new StackType () ) , maxIndex_ (0) {}\n-117\n-118 template \n-_\b1_\b1_\b9 inline _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\b~_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk ()\n-120 {\n-121 if(stack_) delete stack_;\n-122 stack_ = 0;\n-123\n-124 while( !fullStackList_.empty() )\n-125 {\n-126 StackType * st = fullStackList_.top();\n-127 if(st) delete st;\n-128 fullStackList_.pop();\n-129 }\n-130 while( !emptyStackList_.empty() )\n-131 {\n-132 StackType * st = emptyStackList_.top();\n-133 if(st) delete st;\n-134 emptyStackList_.pop();\n-135 }\n-136 }\n-137\n-138 template \n-_\b1_\b3_\b9 inline T _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bg_\be_\bt_\bI_\bn_\bd_\be_\bx ()\n-140 {\n-141 if((*stack_).empty())\n-142 {\n-143 if( fullStackList_.size() <= 0)\n-144 {\n-145 return maxIndex_++;\n-146 }\n-147 else\n-148 {\n-149 emptyStackList_.push( stack_ );\n-150 stack_ = fullStackList_.top();\n-151 fullStackList_.pop();\n-152 }\n-153 }\n-154 return (*stack_).topAndPop();\n-155 }\n-156\n-157 template \n-_\b1_\b5_\b8 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bf_\br_\be_\be_\bI_\bn_\bd_\be_\bx ( T index )\n-159 {\n-160 if((*stack_).full())\n-161 {\n-162 fullStackList_.push( stack_ );\n-163 if(emptyStackList_.size() <= 0)\n-164 {\n-165 stack_ = new StackType ();\n-166 }\n-167 else\n-168 {\n-169 stack_ = emptyStackList_.top();\n-170 emptyStackList_.pop();\n-171 }\n+_\b1_\b0_\b9 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n+110 {\n+111 level_._\br_\be_\bl_\be_\ba_\bs_\be();\n+112 dofAccess_ = _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs();\n+113 }\n+114\n+115 private:\n+116 DofVectorPointer level_;\n+117 DofAccess dofAccess_;\n+118 };\n+119\n+120\n+121\n+122 // AlbertaGridLevelProvider::SetLocal\n+123 // ----------------------------------\n+124\n+125 template< int dim >\n+_\b1_\b2_\b6 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n+127 {\n+128 _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br level_;\n+129 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess_;\n+130\n+131 public:\n+_\b1_\b3_\b2 explicit _\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &level )\n+133 : level_( level ),\n+134 dofAccess_( level.dofSpace() )\n+135 {}\n+136\n+_\b1_\b3_\b7 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &elementInfo ) const\n+138 {\n+139 Level *const array = (Level *)level_;\n+140 array[ dofAccess_( elementInfo, 0 ) ] = elementInfo._\bl_\be_\bv_\be_\bl();\n+141 }\n+142 };\n+143\n+144\n+145\n+146 // AlbertaGridLevelProvider::CalcMaxLevel\n+147 // --------------------------------------\n+148\n+149 template< int dim >\n+_\b1_\b5_\b0 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n+151 {\n+152 Level maxLevel_;\n+153\n+154 public:\n+_\b1_\b5_\b5 _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl ()\n+156 : maxLevel_( 0 )\n+157 {}\n+158\n+_\b1_\b5_\b9 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const Level &dof )\n+160 {\n+161 maxLevel_ = std::max( maxLevel_, Level( dof & levelMask ) );\n+162 }\n+163\n+_\b1_\b6_\b4 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &elementInfo )\n+165 {\n+166 maxLevel_ = std::max( maxLevel_, Level( elementInfo._\bl_\be_\bv_\be_\bl() ) );\n+167 }\n+168\n+_\b1_\b6_\b9 Level _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl () const\n+170 {\n+171 return maxLevel_;\n 172 }\n-173 (*stack_).push(index);\n-174 }\n+173 };\n+174\n 175\n-176 template \n-_\b1_\b7_\b7 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bt_\be_\bs_\bt ()\n-178 {\n-179 T vec[2*length];\n-180\n-181 for(int i=0; i<2*length; i++)\n-182 vec[i] = getIndex();\n-183\n-184 for(int i=0; i<2*length; i++)\n-185 freeIndex(vec[i]);\n-186\n-187 for(int i=0; i<2*length; i++)\n-188 vec[i] = getIndex();\n+176\n+177 // AlbertaGridLevelProvider::ClearFlags\n+178 // ------------------------------------\n+179\n+180 template< int dim >\n+181 template< typename AlbertaGridLevelProvider< dim >::Level flags >\n+182 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::ClearFlags\n+183 {\n+184 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( Level &dof ) const\n+185 {\n+186 dof &= ~flags;\n+187 }\n+188 };\n 189\n-190 for(int i=0; i<2*length; i++)\n-191 printf(\" index [%d] = %d \\n\",i,vec[i]);\n-192 }\n-193\n-194 template \n-_\b1_\b9_\b5 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::ostream & os )\n-196 {\n-197 // holes are not stored at the moment\n-198 os.write( ((const char *) &maxIndex_ ), sizeof(int) ) ;\n-199 return ;\n-200 }\n+190\n+191\n+192 // AlbertaGridLevelProvider::Interpolation\n+193 // ---------------------------------------\n+194\n+195 template< int dim >\n+_\b1_\b9_\b6 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+197 {\n+_\b1_\b9_\b8 static const int dimension = dim;\n+199\n+_\b2_\b0_\b0 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bP_\ba_\bt_\bc_\bh;\n 201\n-202 template \n-_\b2_\b0_\b3 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( std::istream & is )\n+_\b2_\b0_\b2 static void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\be_\bc_\bt_\bo_\br ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &dofVector,\n+203 const _\bP_\ba_\bt_\bc_\bh &patch )\n 204 {\n-205 is.read ( ((char *) &maxIndex_), sizeof(int) );\n-206 clearStack ();\n+205 const _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be() );\n+206 Level *array = (Level *)dofVector;\n 207\n-208 return ;\n-209 }\n-210\n-211 template \n-212 inline void _\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b<_\bT_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b>_\b:_\b:_\bc_\bl_\be_\ba_\br_\bS_\bt_\ba_\bc_\bk ()\n-213 {\n-214 if(stack_)\n-215 {\n-216 delete stack_;\n-217 stack_ = new StackType();\n-218 assert(stack_);\n+208 for( int i = 0; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n+209 {\n+210 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n+211 assert( (array[ dofAccess( father, 0 ) ] & levelMask) < levelMask );\n+212 const Level childLevel = (array[ dofAccess( father, 0 ) ] + 1) | isNewFlag;\n+213 for( int i = 0; i < 2; ++i )\n+214 {\n+215 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *child = father->child[ i ];\n+216 array[ dofAccess( child, 0 ) ] = childLevel;\n+217 }\n+218 }\n 219 }\n-220\n-221 while( !fullStackList_.empty() )\n-222 {\n-223 StackType * st = fullStackList_.top();\n-224 if(st) delete st;\n-225 fullStackList_.pop();\n-226 }\n-227 return;\n-228 }\n-229\n-230} // end namespace Dune\n-231#endif\n+220 };\n+221\n+222}\n+223\n+224#endif // #if HAVE_ALBERTA\n+225\n+226#endif\n+_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n+provides a wrapper for ALBERTA's mesh structure\n+_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n+_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\br_\be_\bs_\bt_\bo_\br_\be_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-void restoreIndexSet(std::istream &is)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:203\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bA_\bn_\bd_\bS_\be_\bt_\bM_\ba_\bx\n-void checkAndSetMax(T index)\n-set index as maxIndex if index is bigger than maxIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bb_\ba_\bc_\bk_\bu_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-void backupIndexSet(std::ostream &os)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\b~_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n-~IndexStack()\n-Destructor, deleting all stacks.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bI_\bn_\bd_\be_\bx\n-T getIndex()\n-restore index from stack or create new index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n-IndexStack()\n-Constructor, create new IndexStack.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bs_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx\n-void setMaxIndex(T index)\n-set index as maxIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bs_\bi_\bz_\be\n-int size() const\n-return maxIndex which is also the\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bt_\be_\bs_\bt\n-void test()\n-test stack functionality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bf_\br_\be_\be_\bI_\bn_\bd_\be_\bx\n-void freeIndex(T index)\n-store index on stack\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bM_\ba_\bx_\bI_\bn_\bd_\be_\bx\n-int getMaxIndex() const\n-return maxIndex which is also the\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexstack.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ALBERTA EL Element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+ALBERTA FE_SPACE DofSpace\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void leafTraverse(Functor &functor, typename FillFlags::Flags\n+fillFlags=FillFlags::standard) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:385\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void hierarchicTraverse(Functor &functor, typename FillFlags::Flags\n+fillFlags=FillFlags::standard) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * dofSpace(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bL_\be_\bv_\be_\bl_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create(const DofSpace *dofSpace, const std::string &name=\"\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * dofSpace() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh\n+void forEach(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:533\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n+Element * el() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bi_\bs_\bN_\be_\bw\n+bool isNew(const Alberta::Element *element) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bi_\bs_\bN_\be_\bw\n+bool isNew(const ElementInfo &elementInfo) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+Alberta::MeshPointer< dim > MeshPointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bm_\be_\bs_\bh\n+MeshPointer mesh() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create(const DofNumbering &dofNumbering)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n+Level maxLevel() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+Alberta::HierarchyDofNumbering< dim > DofNumbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+Level operator()(const Alberta::Element *element) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bm_\ba_\br_\bk_\bA_\bl_\bl_\bO_\bl_\bd\n+void markAllOld()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dim > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n+SetLocal(const DofVectorPointer &level)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n+CalcMaxLevel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n+Level maxLevel() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:169\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\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 level.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n+Alberta::Patch< dimension > Patch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:200\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\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_\bV_\be_\bc_\bt_\bo_\br\n+static void interpolateVector(const DofVectorPointer &dofVector, const Patch\n+&patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n+static const Flags nothing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bc_\bo_\bu_\bn_\bt\n+int count() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:67\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00719.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00719.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: treeiterator.hh File Reference\n+dune-grid: elementinfo.hh File Reference\n \n \n \n \n \n \n \n@@ -72,41 +72,50 @@\n
  • dune
  • grid
  • albertagrid
  • \n
    \n
    \n
    \n \n-
    treeiterator.hh File Reference
    \n+
    elementinfo.hh File Reference
    \n
    \n
    \n-
    #include <utility>
    \n-#include <dune/common/hybridutilities.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n-#include <dune/grid/albertagrid/meshpointer.hh>
    \n+\n+

    provides a wrapper for ALBERTA's el_info structure \n+More...

    \n+
    #include <cassert>
    \n+#include <vector>
    \n+#include <utility>
    \n+#include <dune/grid/albertagrid/geometrycache.hh>
    \n+#include <dune/grid/albertagrid/macroelement.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::AlbertaMarkerVector< dim, dimworld >
     marker assigning subentities to one element containing them More...
    class  Dune::Alberta::ElementInfo< dim >
     
    struct  Dune::Alberta::ElementInfo< dim >::Instance
     
    struct  Dune::AlbertaMarkerVector< dim, dimworld >::MarkSubEntities< bool >::Codim< codim >
    class  Dune::Alberta::ElementInfo< dim >::Stack
     
    class  Dune::AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    struct  Dune::Alberta::ElementInfo< dim >::Seed
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n-
    \n+

    Detailed Description

    \n+

    provides a wrapper for ALBERTA's el_info structure

    \n+
    Author
    Martin Nolte
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,36 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-treeiterator.hh File Reference\n+elementinfo.hh File Reference\n+provides a wrapper for ALBERTA's el_info structure _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\be_\bl_\be_\bm_\be_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n-\u00a0 marker assigning subentities to one element containing them _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bb_\bo_\bo_\bl_\b _\b>_\b:_\b:\n- _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\be_\be_\bd\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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+provides a wrapper for ALBERTA's el_info structure\n+ Author\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00719_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00719_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: treeiterator.hh Source File\n+dune-grid: elementinfo.hh Source File\n \n \n \n \n \n \n \n@@ -74,647 +74,1228 @@\n \n \n \n
    \n-
    treeiterator.hh
    \n+
    elementinfo.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_ALBERTA_TREEITERATOR_HH
    \n-
    7#define DUNE_ALBERTA_TREEITERATOR_HH
    \n-
    8
    \n-
    9#include <utility>
    \n-
    10
    \n-
    11#include <dune/common/hybridutilities.hh>
    \n-
    12#include <dune/common/typetraits.hh>
    \n-
    13
    \n-\n-\n+
    5#ifndef DUNE_ALBERTA_ELEMENTINFO_HH
    \n+
    6#define DUNE_ALBERTA_ELEMENTINFO_HH
    \n+
    7
    \n+
    13#include <cassert>
    \n+
    14#include <vector>
    \n+
    15#include <utility>
    \n
    16
    \n-
    17#if HAVE_ALBERTA
    \n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n+\n+\n+
    19
    \n+
    20#if HAVE_ALBERTA
    \n
    21
    \n-
    22 // AlbertaMarkerVector
    \n-
    23 // -------------------
    \n+
    22namespace Dune
    \n+
    23{
    \n
    24
    \n-
    33 template< int dim, int dimworld >
    \n-
    \n-\n-
    35 {
    \n-\n+
    25 namespace Alberta
    \n+
    26 {
    \n+
    27
    \n+
    28 // External Forward Declarations
    \n+
    29 // -----------------------------
    \n+
    30
    \n+
    31 template< int dim >
    \n+
    32 class MeshPointer;
    \n+
    33
    \n+
    34 struct BasicNodeProjection;
    \n+
    35
    \n+
    36
    \n
    37
    \n-\n-
    39
    \n-
    40 //friend class AlbertaGrid< dim, dimworld >;
    \n-
    41
    \n-
    42 static const int dimension = Grid::dimension;
    \n-
    43
    \n-\n-\n+
    38 // ElementInfo
    \n+
    39 // -----------
    \n+
    40
    \n+
    41 template< int dim >
    \n+
    \n+\n+
    43 {
    \n+
    44 struct Instance;
    \n+
    45 class Stack;
    \n
    46
    \n-
    47 template< bool >
    \n-
    48 struct NoMarkSubEntities;
    \n-
    49 template< bool >
    \n-
    50 struct MarkSubEntities;
    \n+
    47 template< int >
    \n+
    48 struct Library;
    \n+
    49
    \n+
    50 typedef Instance *InstancePtr;
    \n
    51
    \n-
    52 public:
    \n-
    \n-
    54 explicit AlbertaMarkerVector ( const DofNumbering &dofNumbering )
    \n-
    55 : dofNumbering_( dofNumbering )
    \n-
    56 {
    \n-
    57 for( int codim = 0; codim <= dimension; ++codim )
    \n-
    58 marker_[ codim ] = 0;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    61 AlbertaMarkerVector ( const This &other )
    \n-
    62 : dofNumbering_( other.dofNumbering_ )
    \n-
    63 {
    \n-
    64 for( int codim = 0; codim <= dimension; ++codim )
    \n-
    65 marker_[ codim ] = 0;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-\n-
    69 {
    \n-
    70 clear();
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    73 private:
    \n-
    74 This &operator= ( const This & );
    \n-
    75
    \n-
    76 public:
    \n-
    78 template< int codim >
    \n+
    52 public:
    \n+
    53 static const int dimension = dim;
    \n+
    54
    \n+\n+\n+
    57
    \n+\n+\n+\n+
    61
    \n+
    62 static const int maxNeighbors = N_NEIGH_MAX;
    \n+
    63
    \n+
    64 static const int maxLevelNeighbors = Library< dimWorld >::maxLevelNeighbors;
    \n+
    65
    \n+
    66#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n+\n+
    68#endif
    \n+
    69
    \n+
    70 struct Seed;
    \n+
    71
    \n+
    72 private:
    \n+
    73 explicit ElementInfo ( const InstancePtr &instance );
    \n+
    74
    \n+
    75 public:
    \n+
    \n+\n+
    \n+\n+
    78 typename FillFlags::Flags fillFlags = FillFlags::standard );
    \n
    \n-
    79 bool subEntityOnElement ( const ElementInfo &elementInfo, int subEntity ) const;
    \n-
    80
    \n-
    81 template< int firstCodim, class Iterator >
    \n+
    79 ElementInfo ( const MeshPointer &mesh, const Seed &seed,
    \n+
    80 typename FillFlags::Flags fillFlags = FillFlags::standard );
    \n+
    \n+
    81 ElementInfo ( const ElementInfo &other );
    \n
    \n-
    82 void markSubEntities ( const Iterator &begin, const Iterator &end );
    \n+\n
    83
    \n
    \n-
    84 void clear ()
    \n-
    85 {
    \n-
    86 for( int codim = 0; codim <= dimension; ++codim )
    \n-
    87 {
    \n-
    88 if( marker_[ codim ] != 0 )
    \n-
    89 delete[] marker_[ codim ];
    \n-
    90 marker_[ codim ] = 0;
    \n-
    91 }
    \n-
    92 }
    \n-
    \n+\n+
    85
    \n+
    \n+\n+
    \n+\n+
    88
    \n+
    89 explicit operator bool () const { return (instance_ != null()); }
    \n+
    90
    \n+
    \n+
    91 bool operator== ( const ElementInfo &other ) const;
    \n+
    \n+
    92 bool operator!= ( const ElementInfo &other ) const;
    \n
    93
    \n+
    \n+
    94 const MacroElement &macroElement () const;
    \n
    \n-
    95 bool up2Date () const
    \n-
    96 {
    \n-
    97 return (marker_[ dimension ] != 0);
    \n-
    98 }
    \n-
    \n+\n+
    \n+
    96 int indexInFather () const;
    \n+
    \n+
    97 ElementInfo child ( int i ) const;
    \n+
    \n+
    98 bool isLeaf () const;
    \n
    99
    \n-
    \n-
    101 void print ( std::ostream &out = std::cout ) const;
    \n-
    102
    \n-
    103 private:
    \n-
    104 const DofNumbering &dofNumbering_;
    \n-
    105 int *marker_[ dimension+1 ];
    \n-
    106 };
    \n-
    107
    \n-
    108
    \n-
    109
    \n-
    110 // AlbertaMarkerVector::NoMarkSubEntities
    \n-
    111 // --------------------------------------
    \n-
    112
    \n-
    113 template< int dim, int dimworld >
    \n-
    114 template< bool >
    \n-
    115 struct AlbertaMarkerVector< dim, dimworld >::NoMarkSubEntities
    \n-
    116 {
    \n-
    117 template< int firstCodim, class Iterator >
    \n-
    118 static void mark ( [[maybe_unused]] const DofNumbering & dofNumbering,
    \n-
    119 [[maybe_unused]] int *(&marker)[ dimension + 1 ],
    \n-
    120 [[maybe_unused]] const Iterator &begin,
    \n-
    121 [[maybe_unused]] const Iterator &end )
    \n-
    122 {}
    \n-
    123 };
    \n-
    124
    \n-
    125
    \n-
    126
    \n-
    127 // AlbertaMarkerVector::MarkSubEntities
    \n-
    128 // ------------------------------------
    \n-
    129
    \n-
    130 template< int dim, int dimworld >
    \n-
    131 template< bool >
    \n-
    132 struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities
    \n-
    133 {
    \n-
    134 template< int codim >
    \n-
    \n-
    135 struct Codim
    \n-
    136 {
    \n-
    137 static const int numSubEntities = Alberta::NumSubEntities< dimension, codim >::value;
    \n-
    138
    \n-\n-
    140
    \n-
    \n-
    141 static void apply ( const DofNumbering &dofNumbering,
    \n-
    142 int *(&marker)[ dimension + 1 ],
    \n-
    143 const ElementInfo &elementInfo )
    \n-
    144 {
    \n-
    145 int *array = marker[ codim ];
    \n-
    146
    \n-
    147 const int index = dofNumbering( elementInfo, 0, 0 );
    \n-
    148 for( int i = 0; i < numSubEntities; ++i )
    \n-
    149 {
    \n-
    150 int &mark = array[ dofNumbering( elementInfo, codim, i ) ];
    \n-
    151 mark = std::max( index, mark );
    \n-
    152 }
    \n-
    153 }
    \n-
    \n-
    154 };
    \n-
    \n-
    155
    \n-
    156 template< int firstCodim, class Iterator >
    \n-
    157 static void mark ( const DofNumbering &dofNumbering, int *(&marker)[ dimension + 1 ],
    \n-
    158 const Iterator &begin, const Iterator &end )
    \n-
    159 {
    \n-
    160 for( int codim = firstCodim; codim <= dimension; ++codim )
    \n-
    161 {
    \n-
    162 const int size = dofNumbering.size( codim );
    \n-
    163 marker[ codim ] = new int[ size ];
    \n-
    164
    \n-
    165 int *array = marker[ codim ];
    \n-
    166 for( int i = 0; i < size; ++i )
    \n-
    167 array[ i ] = -1;
    \n-
    168 }
    \n-
    169
    \n-
    170 for( Iterator it = begin; it != end; ++it )
    \n-
    171 {
    \n-
    172 const ElementInfo &elementInfo = it->impl().elementInfo();
    \n-
    173 Hybrid::forEach( std::make_index_sequence< dimension+1-firstCodim >{},
    \n-
    174 [ & ]( auto i ){ Codim< i+firstCodim >::apply( dofNumbering, marker, elementInfo ); } );
    \n-
    175 }
    \n-
    176 }
    \n-
    177 };
    \n+
    \n+
    100 Seed seed () const;
    \n+
    101
    \n+
    \n+\n+
    103
    \n+
    \n+
    104 bool mightVanish () const;
    \n+
    105
    \n+
    \n+
    106 int level () const;
    \n+
    107 // see ALBERTA documentation for definition of element type
    \n+
    108 // values are 0, 1, 2
    \n+
    \n+
    109 int type () const;
    \n+
    110
    \n+
    \n+
    111 int getMark () const;
    \n+
    \n+
    112 void setMark ( int refCount ) const;
    \n+
    113
    \n+
    \n+
    114 bool hasLeafNeighbor ( const int face ) const;
    \n+
    \n+
    115 ElementInfo leafNeighbor ( const int face ) const;
    \n+
    116
    \n+
    117 /* obtain all level neighbors of a face
    \n+
    118 *
    \n+
    119 * param[in] face face for which the neighbors are desired
    \n+
    120 * param[out] neighbor array storing the neighbors
    \n+
    121 * param[out] faceInNeighbor array storing the faces in neighbor
    \n+
    122 * (-1, if this neighbor does not exist)
    \n+
    123 *
    \n+
    124 * returns (potential) number of neighbors (i.e., the number of valid
    \n+
    125 * entries in the output arrays
    \n+
    126 */
    \n+
    \n+
    127 int levelNeighbors ( const int face, ElementInfo (&neighbor)[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] ) const;
    \n+
    128
    \n+
    129 template< int codim >
    \n+
    \n+
    130 int twist ( int subEntity ) const;
    \n+
    \n+
    131 int twistInNeighbor ( int face ) const;
    \n+
    \n+
    132 bool isBoundary ( int face ) const;
    \n+
    \n+
    133 int boundaryId ( int face ) const;
    \n+
    \n+\n+
    \n+\n+
    136
    \n+
    \n+
    137 bool hasCoordinates () const;
    \n+
    \n+
    138 const GlobalVector &coordinate ( int vertex ) const;
    \n+
    139#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n+
    \n+\n+
    141 {
    \n+
    142 return GeometryCache( instance_->geometryCache, instance_->elInfo );
    \n+
    143 }
    \n+
    \n+
    144#endif
    \n+
    145
    \n+
    146 template< class Functor >
    \n+
    \n+
    147 void hierarchicTraverse ( Functor &functor ) const;
    \n+
    148
    \n+
    149 template< class Functor >
    \n+
    \n+
    150 void leafTraverse ( Functor &functor ) const;
    \n+
    151
    \n+
    \n+
    152 const Element *element () const;
    \n+
    \n+
    153 const Element *neighbor ( int face ) const;
    \n+
    \n+
    154 Element *el () const;
    \n+
    \n+
    155 ALBERTA EL_INFO &elInfo () const;
    \n+
    156
    \n+
    157 static ElementInfo
    \n+
    \n+\n+
    159 const Element *element, int level, int type = 0 );
    \n+
    \n+
    160 static ElementInfo createFake ( const ALBERTA EL_INFO &elInfo );
    \n+
    161
    \n+
    162 private:
    \n+
    163 static bool isLeaf ( Element *element );
    \n+
    164 static bool mightVanish ( Element *element, int depth );
    \n+
    165
    \n+
    166 static void fill ( Mesh *mesh, const ALBERTA MACRO_EL *mel, ALBERTA EL_INFO &elInfo );
    \n+
    167 static void fill ( int ichild, const ALBERTA EL_INFO &parentInfo, ALBERTA EL_INFO &elInfo );
    \n+
    168
    \n+
    169 void addReference () const;
    \n+
    170 void removeReference () const;
    \n+
    171
    \n+
    172 static InstancePtr null ();
    \n+
    173 static Stack &stack ();
    \n+
    174
    \n+
    175 InstancePtr instance_;
    \n+
    176 };
    \n+
    177
    \n
    178
    \n
    179
    \n-
    180
    \n-
    181 // AlbertaGridTreeIterator
    \n-
    182 // -----------------------
    \n-
    183
    \n-
    187 template< int codim, class GridImp, bool leafIterator >
    \n-
    \n-\n-
    189 {
    \n-\n-
    191
    \n-
    192 public:
    \n-
    193 static const int dimension = GridImp::dimension;
    \n-
    194 static const int codimension = codim;
    \n-
    195 static const int dimensionworld = GridImp::dimensionworld;
    \n+
    180 // ElementInfo::Instance
    \n+
    181 // ---------------------
    \n+
    182
    \n+
    183 template< int dim >
    \n+
    \n+
    184 struct ElementInfo< dim >::Instance
    \n+
    185 {
    \n+\n+
    187 unsigned int refCount;
    \n+
    188
    \n+
    \n+\n+
    190 {
    \n+
    191 return parent_;
    \n+
    192 }
    \n+
    \n+
    193
    \n+
    194 private:
    \n+
    195 InstancePtr parent_;
    \n
    196
    \n-
    197 private:
    \n-
    198 friend class AlbertaGrid< dimension, dimensionworld >;
    \n-
    199
    \n-
    200 static const int numSubEntities
    \n-\n+
    197#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n+
    198 public:
    \n+\n+
    200#endif
    \n+
    201 };
    \n+
    \n
    202
    \n-
    203 public:
    \n-\n-
    205 typedef typename MeshPointer::MacroIterator MacroIterator;
    \n-
    206
    \n-
    207 typedef typename GridImp::template Codim< codim >::Entity Entity;
    \n-\n-\n-
    210 typedef typename EntityImp::ElementInfo ElementInfo;
    \n-
    211
    \n-\n+
    203
    \n+
    204
    \n+
    205 // ElementInfo::Stack
    \n+
    206 // ------------------
    \n+
    207
    \n+
    208 template< int dim >
    \n+
    \n+
    209 class ElementInfo< dim >::Stack
    \n+
    210 {
    \n+
    211 InstancePtr top_;
    \n+
    212 Instance null_;
    \n
    213
    \n-
    \n-\n-
    215
    \n-
    \n-\n-
    218
    \n+
    214 public:
    \n+
    \n+
    215 Stack ();
    \n+
    \n+
    216 ~Stack ();
    \n+
    217
    \n+
    \n+
    218 InstancePtr allocate ();
    \n+
    \n+
    219 void release ( InstancePtr &p );
    \n
    \n-
    220 This &operator= ( const This &other );
    \n-
    221
    \n-
    \n-
    223 AlbertaGridTreeIterator ( const GridImp &grid, int travLevel );
    \n+
    220 InstancePtr null ();
    \n+
    221 };
    \n+
    222
    \n+
    223
    \n
    224
    \n-
    \n-\n-
    227 const MarkerVector *marker,
    \n-
    228 int travLevel );
    \n-
    229
    \n-
    \n-
    231 bool equals ( const This &other ) const
    \n-
    232 {
    \n-
    233 return entity_.impl().equals( other.entity_.impl() );
    \n-
    234 }
    \n-
    \n+
    225 // ElementInfo::Library
    \n+
    226 // --------------------
    \n+
    227
    \n+
    228 template< int dim >
    \n+
    229 template< int >
    \n+
    230 struct ElementInfo< dim >::Library
    \n+
    231 {
    \n+\n+
    233
    \n+
    234 static const int maxLevelNeighbors = (1 << (dim-1));
    \n
    235
    \n-
    \n-\n-
    238 {
    \n-
    239 return entity_;
    \n-
    240 }
    \n-
    \n-
    241
    \n-
    \n-
    243 int level () const
    \n-
    244 {
    \n-
    245 return entity_.impl().level();
    \n-
    246 }
    \n-
    \n+
    236 static int
    \n+
    237 leafNeighbor ( const ElementInfo &element, const int face, ElementInfo &neighbor );
    \n+
    238
    \n+
    239 static int
    \n+
    240 levelNeighbors ( const ElementInfo &element, const int face,
    \n+
    241 ElementInfo (&neighbor)[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] );
    \n+
    242
    \n+
    243 private:
    \n+
    244 static int
    \n+
    245 macroNeighbor ( const ElementInfo &element, const int face, ElementInfo &neighbor );
    \n+
    246 };
    \n
    247
    \n-
    \n-
    249 void increment();
    \n-
    250
    \n-
    251 protected:
    \n-
    \n-
    253 const GridImp &grid () const
    \n-
    254 {
    \n-
    255 return entity_.impl().grid();
    \n-
    256 }
    \n-
    \n-
    257
    \n-
    258 private:
    \n-
    259 void nextElement ( ElementInfo &elementInfo );
    \n-
    260 void nextElementStop (ElementInfo &elementInfo );
    \n-
    261 bool stopAtElement ( const ElementInfo &elementInfo ) const;
    \n-
    262
    \n-
    263 void goNext ( ElementInfo &elementInfo );
    \n-
    264 void goNext ( const std::integral_constant< int, 0 > cdVariable,
    \n-
    265 ElementInfo &elementInfo );
    \n-
    266 void goNext ( const std::integral_constant< int, 1 > cdVariable,
    \n-
    267 ElementInfo &elementInfo );
    \n-
    268 template< int cd >
    \n-
    269 void goNext ( const std::integral_constant< int, cd > cdVariable,
    \n-
    270 ElementInfo &elementInfo );
    \n-
    271
    \n-
    272 mutable Entity entity_;
    \n-
    273
    \n-
    275 int level_;
    \n-
    276
    \n-
    278 int subEntity_;
    \n-
    279
    \n-
    280 MacroIterator macroIterator_;
    \n-
    281
    \n-
    282 // knows on which element a point,edge,face is viewed
    \n-
    283 const MarkerVector *marker_;
    \n-
    284 };
    \n+
    248
    \n+
    249
    \n+
    250 // ElementInfo::Seed
    \n+
    251 // -----------------
    \n+
    252
    \n+
    253 template< int dim >
    \n+
    \n+
    254 struct ElementInfo< dim >::Seed
    \n+
    255 {
    \n+
    \n+\n+
    257 : macroIndex_( -1 ), level_( 0 ), path_( 0 )
    \n+
    258 {}
    \n+
    \n+
    259
    \n+
    \n+
    260 Seed ( const int macroIndex, const int level, const unsigned long path )
    \n+
    261 : macroIndex_( macroIndex ), level_( level ), path_( path )
    \n+
    262 {}
    \n+
    \n+
    263
    \n+
    \n+
    264 bool operator== ( const Seed &other ) const
    \n+
    265 {
    \n+
    266 return (macroIndex() == other.macroIndex()) && (level() == other.level()) && (path() == other.path());
    \n+
    267 }
    \n+
    \n+
    268
    \n+
    \n+
    269 bool operator< ( const Seed &other ) const
    \n+
    270 {
    \n+
    271 const bool ml = (macroIndex() < other.macroIndex());
    \n+
    272 const bool me = (macroIndex() == other.macroIndex());
    \n+
    273 const bool ll = (level() < other.level());
    \n+
    274 const bool le = (level() == other.level());
    \n+
    275 const bool pl = (path() < other.path());
    \n+
    276 return ml | (me & (ll | (le & pl)));
    \n+
    277 }
    \n+
    \n+
    278
    \n+
    279 bool operator!= ( const Seed &other ) const { return !(*this == other); }
    \n+
    280 bool operator<= ( const Seed &other ) const { return !(other < *this); }
    \n+
    281 bool operator> ( const Seed &other ) const { return (other < *this); }
    \n+
    282 bool operator>= ( const Seed &other ) const { return !(*this < other); }
    \n+
    283
    \n+
    284 bool isValid ( ) const { return macroIndex_ != -1; }
    \n
    285
    \n-
    286
    \n-
    287
    \n-
    288 // Implementation of AlbertaMarkerVector
    \n-
    289 // -------------------------------------
    \n-
    290
    \n-
    291 template< int dim, int dimworld >
    \n-
    292 template< int codim >
    \n-
    293 inline bool AlbertaMarkerVector< dim, dimworld >
    \n-
    \n-
    294 ::subEntityOnElement ( const ElementInfo &elementInfo, int subEntity ) const
    \n-
    295 {
    \n-
    296 assert( marker_[ codim ] != 0 );
    \n+
    286 int macroIndex () const { return macroIndex_; }
    \n+
    287 int level () const { return level_; }
    \n+
    288 unsigned long path () const { return path_; }
    \n+
    289
    \n+
    290 private:
    \n+
    291 int macroIndex_;
    \n+
    292 int level_;
    \n+
    293 unsigned long path_;
    \n+
    294 };
    \n+
    \n+
    295
    \n+
    296
    \n
    297
    \n-
    298 const int subIndex = dofNumbering_( elementInfo, codim, subEntity );
    \n-
    299 const int markIndex = marker_[ codim ][ subIndex ];
    \n-
    300 assert( (markIndex >= 0) );
    \n-
    301
    \n-
    302 const int index = dofNumbering_( elementInfo, 0, 0 );
    \n-
    303 return (markIndex == index);
    \n-
    304 }
    \n-
    \n-
    305
    \n-
    306
    \n-
    307 template< int dim, int dimworld >
    \n-
    308 template< int firstCodim, class Iterator >
    \n-\n+
    298 // Implementation of ElementInfo
    \n+
    299 // -----------------------------
    \n+
    300
    \n+
    301 template< int dim >
    \n+
    302 inline ElementInfo< dim >::ElementInfo ( const InstancePtr &instance )
    \n+
    303 : instance_( instance )
    \n+
    304 {
    \n+
    305 addReference();
    \n+
    306 }
    \n+
    307
    \n+
    308
    \n+
    309 template< int dim >
    \n
    \n-
    310 ::markSubEntities ( const Iterator &begin, const Iterator &end )
    \n-
    311 {
    \n-
    312 clear();
    \n-
    313 std::conditional< (firstCodim <= dimension), MarkSubEntities<true>, NoMarkSubEntities<false> >::type
    \n-
    314 ::template mark< firstCodim, Iterator >( dofNumbering_, marker_, begin, end );
    \n-
    315 }
    \n+\n+
    311 : instance_( null() )
    \n+
    312 {
    \n+
    313 addReference();
    \n+
    314 }
    \n
    \n+
    315
    \n
    316
    \n-
    317
    \n-
    318 template< int dim, int dimworld >
    \n+
    317 template< int dim >
    \n+
    318 inline ElementInfo< dim >
    \n
    \n-
    319 inline void AlbertaMarkerVector< dim, dimworld >::print ( std::ostream &out ) const
    \n-
    320 {
    \n-
    321 for( int codim = 1; codim <= dimension; ++codim )
    \n-
    322 {
    \n-
    323 int *marker = marker_[ codim ];
    \n-
    324 if( marker != 0 )
    \n-
    325 {
    \n-
    326 const int size = dofNumbering_.size( codim );
    \n-
    327 out << std::endl;
    \n-
    328 out << "Codimension " << codim << " (" << size << " entries)" << std::endl;
    \n-
    329 for( int i = 0; i < size; ++i )
    \n-
    330 out << "subentity " << i << " visited on Element " << marker[ i ] << std::endl;
    \n-
    331 }
    \n-
    332 }
    \n-
    333 }
    \n+
    319 ::ElementInfo ( const MeshPointer &mesh, const MacroElement &macroElement,
    \n+
    320 typename FillFlags::Flags fillFlags )
    \n+
    321 {
    \n+
    322 instance_ = stack().allocate();
    \n+
    323 instance_->parent() = null();
    \n+
    324 ++(instance_->parent()->refCount);
    \n+
    325
    \n+
    326 addReference();
    \n+
    327
    \n+
    328 elInfo().fill_flag = fillFlags;
    \n+
    329
    \n+
    330 // Alberta fills opp_vertex only if there is a neighbor
    \n+
    331 for( int k = 0; k < maxNeighbors; ++k )
    \n+
    332 elInfo().opp_vertex[ k ] = -1;
    \n+
    333
    \n+
    334 fill( mesh, &macroElement, elInfo() );
    \n+
    335 }
    \n
    \n-
    334
    \n-
    335
    \n
    336
    \n-
    337 // Implementation of AlbertaGridTreeIterator
    \n-
    338 // -----------------------------------------
    \n-
    339
    \n-
    340 template< int codim, class GridImp, bool leafIterator >
    \n-\n-
    \n-\n-
    343 : entity_(),
    \n-
    344 level_( -1 ),
    \n-
    345 subEntity_( -1 ),
    \n-
    346 macroIterator_(),
    \n-
    347 marker_( NULL )
    \n-
    348 {}
    \n-
    \n-
    349
    \n-
    350 template< int codim, class GridImp, bool leafIterator >
    \n-\n-
    \n-
    352 ::AlbertaGridTreeIterator ( const GridImp &grid,
    \n-
    353 const MarkerVector *marker,
    \n-
    354 int travLevel )
    \n-
    355 : entity_( EntityImp( grid ) ),
    \n-
    356 level_( travLevel ),
    \n-
    357 subEntity_( (codim == 0 ? 0 : -1) ),
    \n-
    358 macroIterator_( grid.meshPointer().begin() ),
    \n-
    359 marker_( marker )
    \n-
    360 {
    \n-
    361 ElementInfo elementInfo = *macroIterator_;
    \n-
    362 nextElementStop( elementInfo );
    \n-
    363 if( codim > 0 )
    \n-
    364 goNext( elementInfo );
    \n-
    365 // it is ok to set the invalid ElementInfo
    \n-
    366 entity_.impl().setElement( elementInfo, subEntity_ );
    \n-
    367 }
    \n-
    \n+
    337
    \n+
    338 template< int dim >
    \n+
    339 inline ElementInfo< dim >
    \n+
    \n+
    340 ::ElementInfo ( const MeshPointer &mesh, const Seed &seed,
    \n+
    341 typename FillFlags::Flags fillFlags )
    \n+
    342 {
    \n+
    343 instance_ = stack().allocate();
    \n+
    344 instance_->parent() = null();
    \n+
    345 ++(instance_->parent()->refCount);
    \n+
    346
    \n+
    347 addReference();
    \n+
    348
    \n+
    349 // fill in macro element info
    \n+
    350 elInfo().fill_flag = fillFlags;
    \n+
    351
    \n+
    352 // Alberta fills opp_vertex only if there is a neighbor
    \n+
    353 for( int k = 0; k < maxNeighbors; ++k )
    \n+
    354 elInfo().opp_vertex[ k ] = -1;
    \n+
    355
    \n+
    356 fill( mesh, ((Mesh *)mesh)->macro_els + seed.macroIndex(), elInfo() );
    \n+
    357
    \n+
    358 // traverse the seed's path
    \n+
    359 unsigned long path = seed.path();
    \n+
    360 for( int i = 0; i < seed.level(); ++i )
    \n+
    361 {
    \n+
    362 InstancePtr child = stack().allocate();
    \n+
    363 child->parent() = instance_;
    \n+
    364
    \n+
    365 // Alberta fills opp_vertex only if there is a neighbor
    \n+
    366 for( int k = 0; k < maxNeighbors; ++k )
    \n+
    367 child->elInfo.opp_vertex[ k ] = -2;
    \n
    368
    \n-
    369
    \n-
    370 // Make LevelIterator with point to element from previous iterations
    \n-
    371 template< int codim, class GridImp, bool leafIterator >
    \n-\n-
    \n-
    373 ::AlbertaGridTreeIterator ( const GridImp &grid,
    \n-
    374 int travLevel )
    \n-
    375 : entity_( EntityImp( grid ) ),
    \n-
    376 level_( travLevel ),
    \n-
    377 subEntity_( -1 ),
    \n-
    378 macroIterator_( grid.meshPointer().end() ),
    \n-
    379 marker_( 0 )
    \n-
    380 {}
    \n-
    \n-
    381
    \n-
    382
    \n-
    383 // Make LevelIterator with point to element from previous iterations
    \n-
    384 template< int codim, class GridImp, bool leafIterator >
    \n-\n-
    \n-\n-
    387 : entity_( other.entity_ ),
    \n-
    388 level_( other.level_ ),
    \n-
    389 subEntity_( other.subEntity_ ),
    \n-
    390 macroIterator_( other.macroIterator_ ),
    \n-
    391 marker_( other.marker_ )
    \n-
    392 {}
    \n-
    \n-
    393
    \n-
    394
    \n-
    395 // Make LevelIterator with point to element from previous iterations
    \n-
    396 template< int codim, class GridImp, bool leafIterator >
    \n-\n-
    \n-\n-
    399 {
    \n-
    400 entity_ = other.entity_;
    \n-
    401 level_ = other.level_;
    \n-
    402 subEntity_ = other.subEntity_;
    \n-
    403 macroIterator_ = other.macroIterator_;
    \n-
    404 marker_ = other.marker_;
    \n-
    405
    \n-
    406 return *this;
    \n-
    407 }
    \n-
    \n-
    408
    \n-
    409
    \n-
    410 template< int codim, class GridImp, bool leafIterator >
    \n-
    \n-\n-
    412 {
    \n-
    413 ElementInfo elementInfo = entity_.impl().elementInfo_;
    \n-
    414 goNext ( elementInfo );
    \n-
    415 // it is ok to set the invalid ElementInfo
    \n-
    416 entity_.impl().setElement( elementInfo, subEntity_ );
    \n-
    417 }
    \n-
    \n-
    \n-
    418
    \n-
    419
    \n-
    420 template< int codim, class GridImp, bool leafIterator >
    \n-\n-
    422 ::nextElement ( ElementInfo &elementInfo )
    \n-
    423 {
    \n-
    424 if( elementInfo.isLeaf() || (elementInfo.level() >= level_) )
    \n-
    425 {
    \n-
    426 while( (elementInfo.level() > 0) && (elementInfo.indexInFather() == 1) )
    \n-
    427 elementInfo = elementInfo.father();
    \n-
    428 if( elementInfo.level() == 0 )
    \n-
    429 {
    \n-
    430 ++macroIterator_;
    \n-
    431 elementInfo = *macroIterator_;
    \n-
    432 }
    \n-
    433 else
    \n-
    434 elementInfo = elementInfo.father().child( 1 );
    \n+
    369 fill( path & 1, elInfo(), child->elInfo );
    \n+
    370
    \n+
    371 instance_ = child;
    \n+
    372 addReference();
    \n+
    373
    \n+
    374 path = path >> 1;
    \n+
    375 }
    \n+
    376
    \n+
    377 assert( this->seed() == seed );
    \n+
    378 }
    \n+
    \n+
    379
    \n+
    380
    \n+
    381 template< int dim >
    \n+
    \n+\n+
    383 : instance_( other.instance_ )
    \n+
    384 {
    \n+
    385 addReference();
    \n+
    386 }
    \n+
    \n+
    387
    \n+
    388 template< int dim >
    \n+
    \n+\n+
    390 : instance_( NULL )
    \n+
    391 {
    \n+
    392 using std::swap;
    \n+
    393 swap( instance_, other.instance_ );
    \n+
    394 }
    \n+
    \n+
    395
    \n+
    396 template< int dim >
    \n+
    \n+\n+
    398 {
    \n+
    399 removeReference();
    \n+
    400 }
    \n+
    \n+
    401
    \n+
    402
    \n+
    403 template< int dim >
    \n+
    404 inline ElementInfo< dim > &
    \n+
    \n+\n+
    406 {
    \n+
    407 other.addReference();
    \n+
    408 removeReference();
    \n+
    409 instance_ = other.instance_;
    \n+
    410 return *this;
    \n+
    411 }
    \n+
    \n+
    412
    \n+
    413 template< int dim >
    \n+
    414 inline ElementInfo< dim > &
    \n+
    \n+\n+
    416 {
    \n+
    417 using std::swap;
    \n+
    418 swap( instance_, other.instance_ );
    \n+
    419 return *this;
    \n+
    420 }
    \n+
    \n+
    421
    \n+
    422 template< int dim >
    \n+
    423 inline bool
    \n+
    \n+\n+
    425 {
    \n+
    426 return (instance_->elInfo.el == other.instance_->elInfo.el);
    \n+
    427 }
    \n+
    \n+
    428
    \n+
    429
    \n+
    430 template< int dim >
    \n+
    431 inline bool
    \n+
    \n+\n+
    433 {
    \n+
    434 return (instance_->elInfo.el != other.instance_->elInfo.el);
    \n
    435 }
    \n-
    436 else
    \n-
    437 elementInfo = elementInfo.child( 0 );
    \n-
    438 }
    \n-
    439
    \n-
    440
    \n-
    441 template< int codim, class GridImp, bool leafIterator >
    \n-
    442 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n-
    443 ::nextElementStop ( ElementInfo &elementInfo )
    \n-
    444 {
    \n-
    445 while( !(!elementInfo || stopAtElement( elementInfo )) )
    \n-
    446 nextElement( elementInfo );
    \n-
    447 }
    \n-
    448
    \n-
    449
    \n-
    450 template< int codim, class GridImp, bool leafIterator >
    \n-
    451 inline bool AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n-
    452 ::stopAtElement ( const ElementInfo &elementInfo ) const
    \n-
    453 {
    \n-
    454 if( !elementInfo )
    \n-
    455 return true;
    \n-
    456 return (leafIterator ? elementInfo.isLeaf() : (level_ == elementInfo.level()));
    \n-
    457 }
    \n-
    458
    \n-
    459
    \n-
    460 template< int codim, class GridImp, bool leafIterator >
    \n-
    461 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n-
    462 ::goNext ( ElementInfo &elementInfo )
    \n-
    463 {
    \n-
    464 std::integral_constant< int, codim > codimVariable;
    \n-
    465 goNext( codimVariable, elementInfo );
    \n-
    466 }
    \n+
    \n+
    436
    \n+
    437
    \n+
    438 template< int dim >
    \n+
    439 inline const typename ElementInfo< dim >::MacroElement &
    \n+
    \n+\n+
    441 {
    \n+
    442 assert( !!(*this) );
    \n+
    443 assert( elInfo().macro_el != NULL );
    \n+
    444 return static_cast< const MacroElement & >( *(elInfo().macro_el) );
    \n+
    445 }
    \n+
    \n+
    446
    \n+
    447
    \n+
    448 template< int dim >
    \n+
    \n+\n+
    450 {
    \n+
    451 assert( !!(*this) );
    \n+
    452 return ElementInfo< dim >( instance_->parent() );
    \n+
    453 }
    \n+
    \n+
    454
    \n+
    455
    \n+
    456 template< int dim >
    \n+
    \n+\n+
    458 {
    \n+
    459 const Element *element = elInfo().el;
    \n+
    460 const Element *father = elInfo().parent->el;
    \n+
    461 assert( father != NULL );
    \n+
    462
    \n+
    463 const int index = (father->child[ 0 ] == element ? 0 : 1);
    \n+
    464 assert( father->child[ index ] == element );
    \n+
    465 return index;
    \n+
    466 }
    \n+
    \n
    467
    \n-
    468 template< int codim, class GridImp, bool leafIterator >
    \n-
    469 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n-
    470 ::goNext ( const std::integral_constant< int, 0 > /* cdVariable */,
    \n-
    471 ElementInfo &elementInfo )
    \n-
    472 {
    \n-
    473 assert( stopAtElement( elementInfo ) );
    \n-
    474
    \n-
    475 nextElement( elementInfo );
    \n-
    476 nextElementStop( elementInfo );
    \n-
    477 }
    \n-
    478
    \n-
    479 template< int codim, class GridImp, bool leafIterator >
    \n-
    480 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n-
    481 ::goNext ( const std::integral_constant< int, 1 > cdVariable,
    \n-
    482 ElementInfo &elementInfo )
    \n-
    483 {
    \n-
    484 assert( stopAtElement( elementInfo ) );
    \n+
    468
    \n+
    469 template< int dim >
    \n+
    \n+\n+
    471 {
    \n+
    472 assert( !isLeaf() );
    \n+
    473
    \n+
    474 InstancePtr child = stack().allocate();
    \n+
    475 child->parent() = instance_;
    \n+
    476 addReference();
    \n+
    477
    \n+
    478 // Alberta fills opp_vertex only if there is a neighbor
    \n+
    479 for( int k = 0; k < maxNeighbors; ++k )
    \n+
    480 child->elInfo.opp_vertex[ k ] = -2;
    \n+
    481
    \n+
    482 fill( i, elInfo(), child->elInfo );
    \n+
    483 return ElementInfo< dim >( child );
    \n+
    484 }
    \n+
    \n
    485
    \n-
    486 ++subEntity_;
    \n-
    487 if( subEntity_ >= numSubEntities )
    \n-
    488 {
    \n-
    489 subEntity_ = 0;
    \n-
    490 nextElement( elementInfo );
    \n-
    491 nextElementStop( elementInfo );
    \n-
    492 if( !elementInfo )
    \n-
    493 return;
    \n-
    494 }
    \n-
    495
    \n-
    496 if( leafIterator )
    \n-
    497 {
    \n-
    498 const int face = (dimension == 1 ? (numSubEntities-1)-subEntity_ : subEntity_);
    \n+
    486
    \n+
    487 template< int dim >
    \n+
    \n+
    488 inline bool ElementInfo< dim >::isLeaf () const
    \n+
    489 {
    \n+
    490 assert( !(*this) == false );
    \n+
    491 return isLeaf( el() );
    \n+
    492 }
    \n+
    \n+
    493
    \n+
    494
    \n+
    495 template< int dim >
    \n+
    \n+\n+
    497 {
    \n+
    498 assert( !!(*this) );
    \n
    499
    \n-
    500 const ALBERTA EL *neighbor = elementInfo.elInfo().neigh[ face ];
    \n-
    501 if( (neighbor != NULL) && !elementInfo.isBoundary( face ) )
    \n-
    502 {
    \n-
    503 // face is reached from element with largest number
    \n-
    504 const int elIndex = grid().dofNumbering() ( elementInfo, 0, 0 );
    \n-
    505 const int nbIndex = grid().dofNumbering() ( neighbor, 0, 0 );
    \n-
    506 if( elIndex < nbIndex )
    \n-
    507 goNext( cdVariable, elementInfo );
    \n-
    508 }
    \n-
    509 // uncomment this assertion only if codimension 1 entities are marked
    \n-
    510 // assert( marker_->template subEntityOnElement< 1 >( elementInfo, subEntity_ ) );
    \n-
    511 }
    \n-
    512 else
    \n-
    513 {
    \n-
    514 assert( marker_ != 0 );
    \n-
    515 if( !marker_->template subEntityOnElement< 1 >( elementInfo, subEntity_ ) )
    \n-
    516 goNext( cdVariable, elementInfo );
    \n-
    517 }
    \n-
    518 }
    \n-
    519
    \n-
    520 template< int codim, class GridImp, bool leafIterator >
    \n-
    521 template< int cd >
    \n-
    522 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n-
    523 ::goNext ( const std::integral_constant< int, cd > cdVariable,
    \n-
    524 ElementInfo &elementInfo )
    \n-
    525 {
    \n-
    526 assert( stopAtElement( elementInfo ) );
    \n-
    527
    \n-
    528 ++subEntity_;
    \n-
    529 if( subEntity_ >= numSubEntities )
    \n-
    530 {
    \n-
    531 subEntity_ = 0;
    \n-
    532 nextElement( elementInfo );
    \n-
    533 nextElementStop( elementInfo );
    \n-
    534 if( !elementInfo )
    \n-
    535 return;
    \n+
    500 int level = 0;
    \n+
    501 unsigned long path = 0;
    \n+
    502 for( InstancePtr p = instance_; p->parent() != null(); p = p->parent() )
    \n+
    503 {
    \n+
    504 const Element *element = p->elInfo.el;
    \n+
    505 const Element *father = p->parent()->elInfo.el;
    \n+
    506 const unsigned long child = static_cast< unsigned long >( father->child[ 1 ] == element );
    \n+
    507 path = (path << 1) | child;
    \n+
    508 ++level;
    \n+
    509 }
    \n+
    510
    \n+
    511 if( level != elInfo().level )
    \n+
    512 DUNE_THROW( NotImplemented, "Seed for fake elements not implemented." );
    \n+
    513
    \n+
    514 return Seed( macroElement().index, level, path );
    \n+
    515 }
    \n+
    \n+
    516
    \n+
    517
    \n+
    518 template< int dim >
    \n+
    \n+\n+
    520 {
    \n+
    521 return MeshPointer( elInfo().mesh );
    \n+
    522 }
    \n+
    \n+
    523
    \n+
    524
    \n+
    525 template< int dim >
    \n+
    \n+\n+
    527 {
    \n+
    528 return mightVanish( el(), 0 );
    \n+
    529 }
    \n+
    \n+
    530
    \n+
    531
    \n+
    532 template< int dim >
    \n+
    \n+
    533 inline int ElementInfo< dim >::level () const
    \n+
    534 {
    \n+
    535 return elInfo().level;
    \n
    536 }
    \n+
    \n
    537
    \n-
    538 assert( marker_ != 0 );
    \n-
    539 if( !marker_->template subEntityOnElement< cd >( elementInfo, subEntity_ ) )
    \n-
    540 goNext( cdVariable, elementInfo );
    \n-
    541 }
    \n-
    542
    \n-
    543}
    \n+
    538
    \n+
    539 template< int dim >
    \n+
    \n+
    540 inline int ElementInfo< dim >::type () const
    \n+
    541 {
    \n+
    542 return 0;
    \n+
    543 }
    \n+
    \n
    544
    \n-
    545#endif // #if HAVE_ALBERTA
    \n-
    546
    \n-
    547#endif // #ifndef DUNE_ALBERTA_TREEITERATOR_HH
    \n+
    545
    \n+
    546 template<>
    \n+
    \n+
    547 inline int ElementInfo< 3 >::type () const
    \n+
    548 {
    \n+
    549 return instance_->elInfo.el_type;
    \n+
    550 }
    \n+
    \n+
    551
    \n+
    552
    \n+
    553 template< int dim >
    \n+
    \n+
    554 inline int ElementInfo< dim >::getMark () const
    \n+
    555 {
    \n+
    556 return el()->mark;
    \n+
    557 }
    \n+
    \n+
    558
    \n+
    559
    \n+
    560 template< int dim >
    \n+
    \n+
    561 inline void ElementInfo< dim >::setMark ( int refCount ) const
    \n+
    562 {
    \n+
    563 assert( isLeaf() );
    \n+
    564 assert( (refCount >= -128) && (refCount < 127) );
    \n+
    565 el()->mark = refCount;
    \n+
    566 }
    \n+
    \n+
    567
    \n+
    568
    \n+
    569 template< int dim >
    \n+
    \n+
    570 inline bool ElementInfo< dim >::hasLeafNeighbor ( const int face ) const
    \n+
    571 {
    \n+
    572 assert( !!(*this) );
    \n+
    573 assert( (face >= 0) && (face < maxNeighbors) );
    \n+
    574
    \n+
    575 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n+
    576 const int macroFace = elInfo().macro_wall[ face ];
    \n+
    577 if( macroFace >= 0 )
    \n+
    578 return (macroElement().neighbor( macroFace ) != NULL);
    \n+
    579 else
    \n+
    580 return true;
    \n+
    581 }
    \n+
    \n+
    582
    \n+
    583
    \n+
    584 template< int dim >
    \n+
    \n+\n+
    586 {
    \n+
    587 assert( (face >= 0) && (face < numFaces) );
    \n+
    588 ElementInfo neighbor;
    \n+
    589 Library< dimWorld >::leafNeighbor( *this, face, neighbor );
    \n+
    590 return neighbor;
    \n+
    591 }
    \n+
    \n+
    592
    \n+
    593
    \n+
    594 template< int dim >
    \n+
    595 inline int ElementInfo< dim >
    \n+
    \n+
    596 ::levelNeighbors ( const int face, ElementInfo (&neighbor)[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] ) const
    \n+
    597 {
    \n+
    598 assert( (face >= 0) && (face < numFaces) );
    \n+
    599 return Library< dimWorld >::levelNeighbors( *this, face, neighbor, faceInNeighbor );
    \n+
    600 }
    \n+
    \n+
    601
    \n+
    602
    \n+
    603 template< int dim >
    \n+
    604 template< int codim >
    \n+
    \n+
    605 inline int ElementInfo< dim >::twist ( int subEntity ) const
    \n+
    606 {
    \n+
    607 return Twist< dim, dim-codim >::twist( element(), subEntity );
    \n+
    608 }
    \n+
    \n+
    609
    \n+
    610
    \n+
    611 template< int dim >
    \n+
    \n+
    612 inline int ElementInfo< dim >::twistInNeighbor ( const int face ) const
    \n+
    613 {
    \n+
    614 assert( neighbor( face ) != NULL );
    \n+
    615 return Twist< dim, dim-1 >::twist( neighbor( face ), elInfo().opp_vertex[ face ] );
    \n+
    616 }
    \n+
    \n+
    617
    \n+
    618
    \n+
    619 template< int dim >
    \n+
    \n+
    620 inline bool ElementInfo< dim >::isBoundary ( int face ) const
    \n+
    621 {
    \n+
    622 assert( !!(*this) );
    \n+
    623 assert( (face >= 0) && (face < maxNeighbors) );
    \n+
    624
    \n+
    625 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n+
    626 const int macroFace = elInfo().macro_wall[ face ];
    \n+
    627 if( macroFace >= 0 )
    \n+
    628 return macroElement().isBoundary( macroFace );
    \n+
    629 else
    \n+
    630 return false;
    \n+
    631 }
    \n+
    \n+
    632
    \n+
    633
    \n+
    634 template< int dim >
    \n+
    \n+
    635 inline int ElementInfo< dim >::boundaryId ( int face ) const
    \n+
    636 {
    \n+
    637 assert( !!(*this) );
    \n+
    638 assert( (face >= 0) && (face < N_WALLS_MAX) );
    \n+
    639
    \n+
    640 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n+
    641 const int macroFace = elInfo().macro_wall[ face ];
    \n+
    642 const int id = macroElement().boundaryId( macroFace );
    \n+
    643 // this assertion is only allowed, if FILL_BOUND is set
    \n+
    644 // assert( id == elInfo().wall_bound[ face ] );
    \n+
    645 return id;
    \n+
    646 }
    \n+
    \n+
    647
    \n+
    648
    \n+
    649 template< int dim >
    \n+
    650 inline AffineTransformation *
    \n+
    \n+\n+
    652 {
    \n+
    653 assert( !!(*this) );
    \n+
    654 assert( (face >= 0) && (face < N_WALLS_MAX) );
    \n+
    655
    \n+
    656 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n+
    657 const int macroFace = elInfo().macro_wall[ face ];
    \n+
    658 return (macroFace < 0 ? NULL : macroElement().wall_trafo[ macroFace ]);
    \n+
    659 }
    \n+
    \n+
    660
    \n+
    661
    \n+
    662 template< int dim >
    \n+
    663 inline BasicNodeProjection *
    \n+
    \n+\n+
    665 {
    \n+
    666 assert( !!(*this) );
    \n+
    667 assert( (face >= 0) && (face < N_WALLS_MAX) );
    \n+
    668
    \n+
    669 assert( (elInfo().fill_flag & FillFlags::boundaryId) != 0 );
    \n+
    670 const int macroFace = elInfo().macro_wall[ face ];
    \n+
    671 if( macroFace >= 0 )
    \n+
    672 return static_cast< BasicNodeProjection * >( macroElement().projection[ macroFace+1 ] );
    \n+
    673 else
    \n+
    674 return 0;
    \n+
    675 }
    \n+
    \n+
    676
    \n+
    677
    \n+
    678 template< int dim >
    \n+
    \n+\n+
    680 {
    \n+
    681 return ((elInfo().fill_flag & FillFlags::coords) != 0);
    \n+
    682 }
    \n+
    \n+
    683
    \n+
    684 template< int dim >
    \n+
    \n+
    685 inline const GlobalVector &ElementInfo< dim >::coordinate ( int vertex ) const
    \n+
    686 {
    \n+
    687 assert( hasCoordinates() );
    \n+
    688 assert( (vertex >= 0) && (vertex < numVertices) );
    \n+
    689 return elInfo().coord[ vertex ];
    \n+
    690 }
    \n+
    \n+
    691
    \n+
    692
    \n+
    693 template< int dim >
    \n+
    694 template< class Functor >
    \n+
    \n+
    695 inline void ElementInfo< dim >::hierarchicTraverse ( Functor &functor ) const
    \n+
    696 {
    \n+
    697 functor( *this );
    \n+
    698 if( !isLeaf() )
    \n+
    699 {
    \n+
    700 child( 0 ).hierarchicTraverse( functor );
    \n+
    701 child( 1 ).hierarchicTraverse( functor );
    \n+
    702 }
    \n+
    703 }
    \n+
    \n+
    704
    \n+
    705
    \n+
    706 template< int dim >
    \n+
    707 template< class Functor >
    \n+
    \n+
    708 inline void ElementInfo< dim >::leafTraverse ( Functor &functor ) const
    \n+
    709 {
    \n+
    710 if( !isLeaf() )
    \n+
    711 {
    \n+
    712 child( 0 ).leafTraverse( functor );
    \n+
    713 child( 1 ).leafTraverse( functor );
    \n+
    714 }
    \n+
    715 else
    \n+
    716 functor( *this );
    \n+
    717 }
    \n+
    \n+
    718
    \n+
    719
    \n+
    720 template< int dim >
    \n+
    \n+\n+
    722 {
    \n+
    723 return elInfo().el;
    \n+
    724 }
    \n+
    \n+
    725
    \n+
    726
    \n+
    727 template< int dim >
    \n+
    \n+
    728 inline const Element *ElementInfo< dim >::neighbor ( int face ) const
    \n+
    729 {
    \n+
    730 assert( (face >= 0) && (face < numFaces) );
    \n+
    731 assert( (elInfo().fill_flag & FillFlags::neighbor) != 0 );
    \n+
    732 return elInfo().neigh[ face ];
    \n+
    733 }
    \n+
    \n+
    734
    \n+
    735
    \n+
    736 template< int dim >
    \n+
    \n+\n+
    738 {
    \n+
    739 return elInfo().el;
    \n+
    740 }
    \n+
    \n+
    741
    \n+
    742
    \n+
    743 template< int dim >
    \n+
    \n+
    744 inline ALBERTA EL_INFO &ElementInfo< dim >::elInfo () const
    \n+
    745 {
    \n+
    746 return (instance_->elInfo);
    \n+
    747 }
    \n+
    \n+
    748
    \n+
    749
    \n+
    750 template< int dim >
    \n+
    751 inline ElementInfo< dim >
    \n+
    \n+\n+
    753 const Element *element, int level, int type )
    \n+
    754 {
    \n+
    755 InstancePtr instance = stack().allocate();
    \n+
    756 instance->parent() = null();
    \n+
    757 ++(instance->parent()->refCount);
    \n+
    758
    \n+
    759 instance->elInfo.mesh = mesh;
    \n+
    760 instance->elInfo.macro_el = NULL;
    \n+
    761 instance->elInfo.el = const_cast< Element * >( element );
    \n+
    762 instance->elInfo.parent = NULL;
    \n+
    763 instance->elInfo.fill_flag = FillFlags::nothing;
    \n+
    764 instance->elInfo.level = level;
    \n+
    765 instance->elInfo.el_type = type;
    \n+
    766
    \n+
    767 return ElementInfo< dim >( instance );
    \n+
    768 }
    \n+
    \n+
    769
    \n+
    770
    \n+
    771 template< int dim >
    \n+
    772 inline ElementInfo< dim >
    \n+
    \n+
    773 ElementInfo< dim >::createFake ( const ALBERTA EL_INFO &elInfo )
    \n+
    774 {
    \n+
    775 InstancePtr instance = stack().allocate();
    \n+
    776 instance->parent() = null();
    \n+
    777 ++(instance->parent()->refCount);
    \n+
    778
    \n+
    779 instance->elInfo = elInfo;
    \n+
    780 return ElementInfo< dim >( instance );
    \n+
    781 }
    \n+
    \n+
    782
    \n+
    783
    \n+
    784 template< int dim >
    \n+
    785 inline bool ElementInfo< dim >::isLeaf ( Element *element )
    \n+
    786 {
    \n+
    787 return IS_LEAF_EL( element );
    \n+
    788 }
    \n+
    789
    \n+
    790
    \n+
    791 template< int dim >
    \n+
    792 inline bool ElementInfo< dim >::mightVanish ( Alberta::Element *element, int depth )
    \n+
    793 {
    \n+
    794 if( isLeaf( element ) )
    \n+
    795 return (element->mark < depth);
    \n+
    796 else
    \n+
    797 return (mightVanish( element->child[ 0 ], depth-1 ) && mightVanish( element->child[ 1 ], depth-1 ));
    \n+
    798 }
    \n+
    799
    \n+
    800
    \n+
    801 template< int dim >
    \n+
    802 inline void ElementInfo< dim >
    \n+
    803 ::fill ( Mesh *mesh, const ALBERTA MACRO_EL *mel, ALBERTA EL_INFO &elInfo )
    \n+
    804 {
    \n+
    805 ALBERTA fill_macro_info( mesh, mel, &elInfo );
    \n+
    806 }
    \n+
    807
    \n+
    808 template< int dim >
    \n+
    809 inline void ElementInfo< dim >
    \n+
    810 ::fill ( int ichild, const ALBERTA EL_INFO &parentInfo, ALBERTA EL_INFO &elInfo )
    \n+
    811 {
    \n+
    812 ALBERTA fill_elinfo( ichild, FILL_ANY, &parentInfo, &elInfo );
    \n+
    813 }
    \n+
    814
    \n+
    815
    \n+
    816 template< int dim >
    \n+
    817 inline void ElementInfo< dim >::addReference () const
    \n+
    818 {
    \n+
    819 ++(instance_->refCount);
    \n+
    820 }
    \n+
    821
    \n+
    822
    \n+
    823 template< int dim >
    \n+
    824 inline void ElementInfo< dim >::removeReference () const
    \n+
    825 {
    \n+
    826 // short-circuit for rvalues that have been drained as argument to a move operation
    \n+
    827 if ( !instance_ )
    \n+
    828 return;
    \n+
    829 // this loop breaks when instance becomes null()
    \n+
    830 for( InstancePtr instance = instance_; --(instance->refCount) == 0; )
    \n+
    831 {
    \n+
    832 const InstancePtr parent = instance->parent();
    \n+
    833 stack().release( instance );
    \n+
    834 instance = parent;
    \n+
    835 }
    \n+
    836 }
    \n+
    837
    \n+
    838
    \n+
    839 template< int dim >
    \n+
    840 inline typename ElementInfo< dim >::InstancePtr
    \n+
    841 ElementInfo< dim >::null ()
    \n+
    842 {
    \n+
    843 return stack().null();
    \n+
    844 }
    \n+
    845
    \n+
    846
    \n+
    847 template< int dim >
    \n+
    848 inline typename ElementInfo< dim >::Stack &
    \n+
    849 ElementInfo< dim >::stack ()
    \n+
    850 {
    \n+
    851 static Stack s;
    \n+
    852 return s;
    \n+
    853 }
    \n+
    854
    \n+
    855
    \n+
    856
    \n+
    857 // Implementation of ElementInfo::Stack
    \n+
    858 // ------------------------------------
    \n+
    859
    \n+
    860 template< int dim >
    \n+
    \n+\n+
    862 : top_( 0 )
    \n+
    863 {
    \n+
    864 null_.elInfo.el = NULL;
    \n+
    865 null_.refCount = 1;
    \n+
    866 null_.parent() = 0;
    \n+
    867 }
    \n+
    \n+
    868
    \n+
    869
    \n+
    870 template< int dim >
    \n+
    \n+\n+
    872 {
    \n+
    873 while( top_ != 0 )
    \n+
    874 {
    \n+
    875 InstancePtr p = top_;
    \n+
    876 top_ = p->parent();
    \n+
    877 delete p;
    \n+
    878 }
    \n+
    879 }
    \n+
    \n+
    880
    \n+
    881
    \n+
    882 template< int dim >
    \n+
    883 inline typename ElementInfo< dim >::InstancePtr
    \n+
    \n+\n+
    885 {
    \n+
    886 InstancePtr p = top_;
    \n+
    887 if( p != 0 )
    \n+
    888 top_ = p->parent();
    \n+
    889 else
    \n+
    890 p = new Instance;
    \n+
    891 p->refCount = 0;
    \n+
    892 return p;
    \n+
    893 }
    \n+
    \n+
    894
    \n+
    895
    \n+
    896 template< int dim >
    \n+
    \n+\n+
    898 {
    \n+
    899 assert( (p != null()) && (p->refCount == 0) );
    \n+
    900 p->parent() = top_;
    \n+
    901 top_ = p;
    \n+
    902 }
    \n+
    \n+
    903
    \n+
    904
    \n+
    905 template< int dim >
    \n+
    906 inline typename ElementInfo< dim >::InstancePtr
    \n+
    \n+\n+
    908 {
    \n+
    909 return &null_;
    \n+
    910 }
    \n+
    \n+
    \n+
    911
    \n+
    912 } // namespace Alberta
    \n+
    913
    \n+
    914} // namespace Dune
    \n+
    915
    \n+
    916#endif // #if HAVE_ALBERTA
    \n+
    917
    \n+
    918#endif // #ifndef DUNE_ALBERTA_ELEMENTINFO_HH
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    provides a wrapper for ALBERTA's mesh structure
    \n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+\n+\n+
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-\n-
    static const int dimension
    Definition agrid.hh:145
    \n+
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n+
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n+
    ALBERTA EL Element
    Definition misc.hh:54
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n \n-\n-
    int size(int codim) const
    Definition dofadmin.hh:163
    \n-\n-
    Definition treeiterator.hh:189
    \n-
    bool equals(const This &other) const
    equality
    Definition treeiterator.hh:231
    \n-
    MakeableInterfaceObject< Entity > EntityObject
    Definition treeiterator.hh:208
    \n-
    Alberta::MeshPointer< dimension > MeshPointer
    Definition treeiterator.hh:204
    \n-
    AlbertaGridTreeIterator(const GridImp &grid, const MarkerVector *marker, int travLevel)
    Constructor making begin iterator.
    Definition treeiterator.hh:352
    \n-
    AlbertaGridTreeIterator(const GridImp &grid, int travLevel)
    Constructor making end iterator.
    Definition treeiterator.hh:373
    \n-
    EntityObject::ImplementationType EntityImp
    Definition treeiterator.hh:209
    \n-
    static const int codimension
    Definition treeiterator.hh:194
    \n-
    MeshPointer::MacroIterator MacroIterator
    Definition treeiterator.hh:205
    \n-
    This & operator=(const This &other)
    Constructor making end iterator.
    Definition treeiterator.hh:398
    \n-
    Entity & dereference() const
    dereferencing
    Definition treeiterator.hh:237
    \n-
    AlbertaMarkerVector< dimension, dimensionworld > MarkerVector
    Definition treeiterator.hh:212
    \n-
    GridImp::template Codim< codim >::Entity Entity
    Definition treeiterator.hh:207
    \n-
    int level() const
    ask for level of entities
    Definition treeiterator.hh:243
    \n-
    static const int dimensionworld
    Definition treeiterator.hh:195
    \n-
    AlbertaGridTreeIterator()
    Definition treeiterator.hh:342
    \n-
    void increment()
    increment
    Definition treeiterator.hh:411
    \n-
    const GridImp & grid() const
    obtain a reference to the grid
    Definition treeiterator.hh:253
    \n-
    static const int dimension
    Definition treeiterator.hh:193
    \n-
    AlbertaGridTreeIterator(const This &other)
    Constructor making end iterator.
    Definition treeiterator.hh:386
    \n-
    EntityImp::ElementInfo ElementInfo
    Definition treeiterator.hh:210
    \n+
    Definition elementinfo.hh:43
    \n+
    ElementInfo leafNeighbor(const int face) const
    Definition elementinfo.hh:585
    \n+
    bool isLeaf() const
    Definition elementinfo.hh:488
    \n+
    static ElementInfo createFake(const MeshPointer &mesh, const Element *element, int level, int type=0)
    Definition elementinfo.hh:752
    \n+
    ElementInfo child(int i) const
    Definition elementinfo.hh:470
    \n+
    int level() const
    Definition elementinfo.hh:533
    \n+
    bool mightVanish() const
    Definition elementinfo.hh:526
    \n+
    static const int numFaces
    Definition elementinfo.hh:56
    \n+
    int twist(int subEntity) const
    Definition elementinfo.hh:605
    \n+
    int twistInNeighbor(int face) const
    Definition elementinfo.hh:612
    \n+
    Alberta::MacroElement< dimension > MacroElement
    Definition elementinfo.hh:58
    \n+
    BasicNodeProjection * boundaryProjection(int face) const
    Definition elementinfo.hh:664
    \n+
    const MacroElement & macroElement() const
    Definition elementinfo.hh:440
    \n+
    static const int maxLevelNeighbors
    Definition elementinfo.hh:64
    \n+
    ElementInfo father() const
    Definition elementinfo.hh:449
    \n+
    ElementInfo(const ElementInfo &other)
    Definition elementinfo.hh:382
    \n+
    GeometryCacheProxy< dim > GeometryCache
    Definition elementinfo.hh:67
    \n+
    ElementInfo & operator=(const ElementInfo &other)
    Definition elementinfo.hh:405
    \n+
    bool hasLeafNeighbor(const int face) const
    Definition elementinfo.hh:570
    \n+
    bool operator==(const ElementInfo &other) const
    Definition elementinfo.hh:424
    \n+
    static const int dimension
    Definition elementinfo.hh:53
    \n+
    void hierarchicTraverse(Functor &functor) const
    Definition elementinfo.hh:695
    \n+
    int type() const
    Definition elementinfo.hh:540
    \n+
    static const int maxNeighbors
    Definition elementinfo.hh:62
    \n+
    void setMark(int refCount) const
    Definition elementinfo.hh:561
    \n+
    ~ElementInfo()
    Definition elementinfo.hh:397
    \n+
    const GlobalVector & coordinate(int vertex) const
    Definition elementinfo.hh:685
    \n+
    static const int numVertices
    Definition elementinfo.hh:55
    \n+
    int getMark() const
    Definition elementinfo.hh:554
    \n+
    void leafTraverse(Functor &functor) const
    Definition elementinfo.hh:708
    \n+
    Alberta::MeshPointer< dimension > MeshPointer
    Definition elementinfo.hh:59
    \n+
    const Element * neighbor(int face) const
    Definition elementinfo.hh:728
    \n+
    static ElementInfo createFake(const ALBERTA EL_INFO &elInfo)
    Definition elementinfo.hh:773
    \n+
    ElementInfo()
    Definition elementinfo.hh:310
    \n+
    int boundaryId(int face) const
    Definition elementinfo.hh:635
    \n+
    bool operator!=(const ElementInfo &other) const
    Definition elementinfo.hh:432
    \n+
    Alberta::FillFlags< dimension > FillFlags
    Definition elementinfo.hh:60
    \n+
    ElementInfo(const MeshPointer &mesh, const MacroElement &macroElement, typename FillFlags::Flags fillFlags=FillFlags::standard)
    Definition elementinfo.hh:319
    \n+
    AffineTransformation * transformation(int face) const
    Definition elementinfo.hh:651
    \n+
    bool isBoundary(int face) const
    Definition elementinfo.hh:620
    \n+
    int indexInFather() const
    Definition elementinfo.hh:457
    \n+
    Seed seed() const
    Definition elementinfo.hh:496
    \n+
    Element * el() const
    Definition elementinfo.hh:737
    \n+
    const Element * element() const
    Definition elementinfo.hh:721
    \n+
    ALBERTA EL_INFO & elInfo() const
    Definition elementinfo.hh:744
    \n+
    MeshPointer mesh() const
    Definition elementinfo.hh:519
    \n+
    GeometryCache geometryCache() const
    Definition elementinfo.hh:140
    \n+
    bool hasCoordinates() const
    Definition elementinfo.hh:679
    \n+
    int levelNeighbors(const int face, ElementInfo(&neighbor)[maxLevelNeighbors], int(&faceInNeighbor)[maxLevelNeighbors]) const
    Definition elementinfo.hh:596
    \n+
    ElementInfo(ElementInfo &&other)
    Definition elementinfo.hh:389
    \n+
    ElementInfo(const MeshPointer &mesh, const Seed &seed, typename FillFlags::Flags fillFlags=FillFlags::standard)
    Definition elementinfo.hh:340
    \n+
    Definition elementinfo.hh:185
    \n+
    InstancePtr & parent()
    Definition elementinfo.hh:189
    \n+
    Alberta::GeometryCache< dim > geometryCache
    Definition elementinfo.hh:199
    \n+
    ALBERTA EL_INFO elInfo
    Definition elementinfo.hh:186
    \n+
    unsigned int refCount
    Definition elementinfo.hh:187
    \n+
    Definition elementinfo.hh:210
    \n+
    InstancePtr null()
    Definition elementinfo.hh:907
    \n+
    ~Stack()
    Definition elementinfo.hh:871
    \n+
    void release(InstancePtr &p)
    Definition elementinfo.hh:897
    \n+
    Stack()
    Definition elementinfo.hh:861
    \n+
    InstancePtr allocate()
    Definition elementinfo.hh:884
    \n+
    Definition elementinfo.hh:255
    \n+
    Seed(const int macroIndex, const int level, const unsigned long path)
    Definition elementinfo.hh:260
    \n+
    Seed()
    Definition elementinfo.hh:256
    \n+
    int level() const
    Definition elementinfo.hh:287
    \n+
    bool isValid() const
    Definition elementinfo.hh:284
    \n+
    unsigned long path() const
    Definition elementinfo.hh:288
    \n+
    int macroIndex() const
    Definition elementinfo.hh:286
    \n+
    Definition geometrycache.hh:24
    \n+
    Definition geometrycache.hh:91
    \n+
    Definition macroelement.hh:24
    \n
    Definition misc.hh:148
    \n-
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n-
    AlbertaMarkerVector(const DofNumbering &dofNumbering)
    create AlbertaMarkerVector with empty vectors
    Definition treeiterator.hh:54
    \n-
    bool up2Date() const
    return true if marking is up to date
    Definition treeiterator.hh:95
    \n-
    bool subEntityOnElement(const ElementInfo &elementInfo, int subEntity) const
    visit subentity on this element?
    Definition treeiterator.hh:294
    \n-
    void markSubEntities(const Iterator &begin, const Iterator &end)
    Definition treeiterator.hh:310
    \n-
    ~AlbertaMarkerVector()
    Definition treeiterator.hh:68
    \n-
    void clear()
    Definition treeiterator.hh:84
    \n-
    AlbertaMarkerVector(const This &other)
    Definition treeiterator.hh:61
    \n-
    void print(std::ostream &out=std::cout) const
    print for debugin' only
    Definition treeiterator.hh:319
    \n-\n-
    Alberta::ElementInfo< dimension > ElementInfo
    Definition treeiterator.hh:139
    \n-
    static void apply(const DofNumbering &dofNumbering, int *(&marker)[dimension+1], const ElementInfo &elementInfo)
    Definition treeiterator.hh:141
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-\n-
    InterfaceType::Implementation ImplementationType
    Definition common/grid.hh:1108
    \n+
    Definition misc.hh:231
    \n+
    static const Flags nothing
    Definition misc.hh:234
    \n+
    static const Flags boundaryId
    Definition misc.hh:246
    \n+
    ALBERTA FLAGS Flags
    Definition misc.hh:232
    \n+
    static const Flags coords
    Definition misc.hh:236
    \n+
    static const Flags standard
    Definition misc.hh:258
    \n+
    static const Flags neighbor
    Definition misc.hh:238
    \n+
    static int twist(const Element *element, int subEntity)
    Definition misc.hh:538
    \n+
    Definition albertagrid/projection.hh:208
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,690 +1,1211 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-treeiterator.hh\n+elementinfo.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_ALBERTA_TREEITERATOR_HH\n-7#define DUNE_ALBERTA_TREEITERATOR_HH\n-8\n-9#include \n-10\n-11#include \n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+5#ifndef DUNE_ALBERTA_ELEMENTINFO_HH\n+6#define DUNE_ALBERTA_ELEMENTINFO_HH\n+7\n+13#include \n+14#include \n+15#include \n 16\n-17#if HAVE_ALBERTA\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\ba_\bc_\br_\bo_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+19\n+20#if HAVE_ALBERTA\n 21\n-22 // AlbertaMarkerVector\n-23 // -------------------\n+22namespace _\bD_\bu_\bn_\be\n+23{\n 24\n-33 template< int dim, int dimworld >\n-_\b3_\b4 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-35 {\n-36 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n+25 namespace Alberta\n+26 {\n+27\n+28 // External Forward Declarations\n+29 // -----------------------------\n+30\n+31 template< int dim >\n+32 class MeshPointer;\n+33\n+34 struct BasicNodeProjection;\n+35\n+36\n 37\n-38 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bG_\br_\bi_\bd;\n-39\n-40 //friend class AlbertaGrid< dim, dimworld >;\n-41\n-42 static const int dimension = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-43\n-44 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg;\n-45 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+38 // ElementInfo\n+39 // -----------\n+40\n+41 template< int dim >\n+_\b4_\b2 class _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+43 {\n+44 struct _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be;\n+45 class _\bS_\bt_\ba_\bc_\bk;\n 46\n-47 template< bool >\n-48 struct NoMarkSubEntities;\n-49 template< bool >\n-50 struct MarkSubEntities;\n+47 template< int >\n+48 struct Library;\n+49\n+50 typedef _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be *_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br;\n 51\n 52 public:\n-_\b5_\b4 explicit _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering )\n-55 : dofNumbering_( dofNumbering )\n-56 {\n-57 for( int codim = 0; codim <= dimension; ++codim )\n-58 marker_[ codim ] = 0;\n-59 }\n-60\n-_\b6_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br ( const _\bT_\bh_\bi_\bs &other )\n-62 : dofNumbering_( other.dofNumbering_ )\n-63 {\n-64 for( int codim = 0; codim <= dimension; ++codim )\n-65 marker_[ codim ] = 0;\n-66 }\n-67\n-_\b6_\b8 _\b~_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br ()\n-69 {\n-70 _\bc_\bl_\be_\ba_\br();\n-71 }\n-72\n-73 private:\n-74 This &operator= ( const This & );\n-75\n-76 public:\n-78 template< int codim >\n-_\b7_\b9 bool _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity )\n-const;\n-80\n-81 template< int firstCodim, class Iterator >\n-_\b8_\b2 void _\bm_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ( const Iterator &begin, const Iterator &end );\n+_\b5_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+54\n+_\b5_\b5 static const int _\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be;\n+_\b5_\b6 static const int _\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\b1_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+57\n+_\b5_\b8 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+_\b5_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+_\b6_\b0 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs;\n+61\n+_\b6_\b2 static const int _\bm_\ba_\bx_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs = N_NEIGH_MAX;\n+63\n+_\b6_\b4 static const int _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs = Library< dimWorld >::maxLevelNeighbors;\n+65\n+66#if !DUNE_ALBERTA_CACHE_COORDINATES\n+_\b6_\b7 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by_\b<_\b _\bd_\bi_\bm_\b _\b> _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be;\n+68#endif\n+69\n+70 struct _\bS_\be_\be_\bd;\n+71\n+72 private:\n+73 explicit _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br &instance );\n+74\n+75 public:\n+_\b7_\b6 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ();\n+_\b7_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh, const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt,\n+78 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd );\n+_\b7_\b9 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh, const Seed &_\bs_\be_\be_\bd,\n+80 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd );\n+_\b8_\b1 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other );\n+_\b8_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo&& other );\n 83\n-_\b8_\b4 void _\bc_\bl_\be_\ba_\br ()\n-85 {\n-86 for( int codim = 0; codim <= dimension; ++codim )\n-87 {\n-88 if( marker_[ codim ] != 0 )\n-89 delete[] marker_[ codim ];\n-90 marker_[ codim ] = 0;\n-91 }\n-92 }\n+_\b8_\b4 _\b~_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ();\n+85\n+_\b8_\b6 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other );\n+_\b8_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &&other );\n+88\n+_\b8_\b9 explicit operator bool () const { return (instance_ != null()); }\n+90\n+_\b9_\b1 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other ) const;\n+_\b9_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other ) const;\n 93\n-_\b9_\b5 bool _\bu_\bp_\b2_\bD_\ba_\bt_\be () const\n-96 {\n-97 return (marker_[ dimension ] != 0);\n-98 }\n+_\b9_\b4 const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt () const;\n+_\b9_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bf_\ba_\bt_\bh_\be_\br () const;\n+_\b9_\b6 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const;\n+_\b9_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bc_\bh_\bi_\bl_\bd ( int i ) const;\n+_\b9_\b8 bool _\bi_\bs_\bL_\be_\ba_\bf () const;\n 99\n-_\b1_\b0_\b1 void _\bp_\br_\bi_\bn_\bt ( std::ostream &out = std::cout ) const;\n-102\n-103 private:\n-104 const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering_;\n-105 int *marker_[ dimension+1 ];\n-106 };\n-107\n-108\n-109\n-110 // AlbertaMarkerVector::NoMarkSubEntities\n-111 // --------------------------------------\n-112\n-113 template< int dim, int dimworld >\n-114 template< bool >\n-115 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br< dim, dimworld >::NoMarkSubEntities\n-116 {\n-117 template< int firstCodim, class Iterator >\n-118 static void mark ( [[maybe_unused]] const DofNumbering & dofNumbering,\n-119 [[maybe_unused]] int *(&marker)[ dimension + 1 ],\n-120 [[maybe_unused]] const Iterator &begin,\n-121 [[maybe_unused]] const Iterator &end )\n-122 {}\n-123 };\n-124\n-125\n-126\n-127 // AlbertaMarkerVector::MarkSubEntities\n-128 // ------------------------------------\n-129\n-130 template< int dim, int dimworld >\n-131 template< bool >\n-132 struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities\n-133 {\n-134 template< int codim >\n-_\b1_\b3_\b5 struct _\bC_\bo_\bd_\bi_\bm\n-136 {\n-_\b1_\b3_\b7 static const int numSubEntities = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bc_\bo_\bd_\bi_\bm\n-_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-138\n-_\b1_\b3_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-140\n-_\b1_\b4_\b1 static void _\ba_\bp_\bp_\bl_\by ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering,\n-142 int *(&_\bm_\ba_\br_\bk_\be_\br)[ dimension + 1 ],\n-143 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo )\n-144 {\n-145 int *array = _\bm_\ba_\br_\bk_\be_\br[ _\bc_\bo_\bd_\bi_\bm ];\n-146\n-147 const int index = dofNumbering( elementInfo, 0, 0 );\n-148 for( int i = 0; i < numSubEntities; ++i )\n-149 {\n-150 int &mark = array[ dofNumbering( elementInfo, _\bc_\bo_\bd_\bi_\bm, i ) ];\n-151 mark = std::max( index, mark );\n-152 }\n-153 }\n-154 };\n-155\n-156 template< int firstCodim, class Iterator >\n-157 static void mark ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering, int *(&marker)\n-[ dimension + 1 ],\n-158 const Iterator &begin, const Iterator &end )\n-159 {\n-160 for( int codim = firstCodim; codim <= dimension; ++codim )\n-161 {\n-162 const int size = dofNumbering._\bs_\bi_\bz_\be( codim );\n-163 marker[ codim ] = new int[ size ];\n-164\n-165 int *array = marker[ codim ];\n-166 for( int i = 0; i < size; ++i )\n-167 array[ i ] = -1;\n-168 }\n-169\n-170 for( Iterator it = begin; it != end; ++it )\n-171 {\n-172 const ElementInfo &elementInfo = it->impl().elementInfo();\n-173 Hybrid::forEach( std::make_index_sequence< dimension+1-firstCodim >{},\n-174 [ & ]( auto i ){ Codim< i+firstCodim >::apply( dofNumbering, marker,\n-elementInfo ); } );\n-175 }\n-176 }\n-177 };\n+_\b1_\b0_\b0 Seed _\bs_\be_\be_\bd () const;\n+101\n+_\b1_\b0_\b2 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br _\bm_\be_\bs_\bh () const;\n+103\n+_\b1_\b0_\b4 bool _\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const;\n+105\n+_\b1_\b0_\b6 int _\bl_\be_\bv_\be_\bl () const;\n+107 // see ALBERTA documentation for definition of element type\n+108 // values are 0, 1, 2\n+_\b1_\b0_\b9 int _\bt_\by_\bp_\be () const;\n+110\n+_\b1_\b1_\b1 int _\bg_\be_\bt_\bM_\ba_\br_\bk () const;\n+_\b1_\b1_\b2 void _\bs_\be_\bt_\bM_\ba_\br_\bk ( int refCount ) const;\n+113\n+_\b1_\b1_\b4 bool _\bh_\ba_\bs_\bL_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const;\n+_\b1_\b1_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const;\n+116\n+117 /* obtain all level neighbors of a face\n+118 *\n+119 * param[in] face face for which the neighbors are desired\n+120 * param[out] neighbor array storing the neighbors\n+121 * param[out] faceInNeighbor array storing the faces in neighbor\n+122 * (-1, if this neighbor does not exist)\n+123 *\n+124 * returns (potential) number of neighbors (i.e., the number of valid\n+125 * entries in the output arrays\n+126 */\n+_\b1_\b2_\b7 int _\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo (&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br)\n+[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ], int (&faceInNeighbor)[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ] ) const;\n+128\n+129 template< int codim >\n+_\b1_\b3_\b0 int _\bt_\bw_\bi_\bs_\bt ( int subEntity ) const;\n+_\b1_\b3_\b1 int _\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( int face ) const;\n+_\b1_\b3_\b2 bool _\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( int face ) const;\n+_\b1_\b3_\b3 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int face ) const;\n+_\b1_\b3_\b4 _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int face ) const;\n+_\b1_\b3_\b5 _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn *_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn ( int face ) const;\n+136\n+_\b1_\b3_\b7 bool _\bh_\ba_\bs_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs () const;\n+_\b1_\b3_\b8 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int vertex ) const;\n+139#if !DUNE_ALBERTA_CACHE_COORDINATES\n+_\b1_\b4_\b0 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be () const\n+141 {\n+142 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be( instance_->_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be, instance_->_\be_\bl_\bI_\bn_\bf_\bo );\n+143 }\n+144#endif\n+145\n+146 template< class Functor >\n+_\b1_\b4_\b7 void _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor ) const;\n+148\n+149 template< class Functor >\n+_\b1_\b5_\b0 void _\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor ) const;\n+151\n+_\b1_\b5_\b2 const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt () const;\n+_\b1_\b5_\b3 const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int face ) const;\n+_\b1_\b5_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl () const;\n+_\b1_\b5_\b5 _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &_\be_\bl_\bI_\bn_\bf_\bo () const;\n+156\n+157 static _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+_\b1_\b5_\b8 _\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &_\bm_\be_\bs_\bh,\n+159 const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt, int _\bl_\be_\bv_\be_\bl, int _\bt_\by_\bp_\be = 0 );\n+_\b1_\b6_\b0 static _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo _\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &_\be_\bl_\bI_\bn_\bf_\bo );\n+161\n+162 private:\n+163 static bool _\bi_\bs_\bL_\be_\ba_\bf ( _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt );\n+164 static bool _\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh ( _\bE_\bl_\be_\bm_\be_\bn_\bt *_\be_\bl_\be_\bm_\be_\bn_\bt, int depth );\n+165\n+166 static void fill ( _\bM_\be_\bs_\bh *_\bm_\be_\bs_\bh, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *mel, _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO\n+&_\be_\bl_\bI_\bn_\bf_\bo );\n+167 static void fill ( int ichild, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &parentInfo, _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+EL_INFO &_\be_\bl_\bI_\bn_\bf_\bo );\n+168\n+169 void addReference () const;\n+170 void removeReference () const;\n+171\n+172 static InstancePtr null ();\n+173 static Stack &stack ();\n+174\n+175 InstancePtr instance_;\n+176 };\n+177\n 178\n 179\n-180\n-181 // AlbertaGridTreeIterator\n-182 // -----------------------\n-183\n-187 template< int codim, class GridImp, bool leafIterator >\n-_\b1_\b8_\b8 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-189 {\n-190 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b> _\bT_\bh_\bi_\bs;\n-191\n-192 public:\n-_\b1_\b9_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = GridImp::dimension;\n-_\b1_\b9_\b4 static const int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n-_\b1_\b9_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd = GridImp::dimensionworld;\n+180 // ElementInfo::Instance\n+181 // ---------------------\n+182\n+183 template< int dim >\n+_\b1_\b8_\b4 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be\n+185 {\n+_\b1_\b8_\b6 _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO _\be_\bl_\bI_\bn_\bf_\bo;\n+_\b1_\b8_\b7 unsigned int _\br_\be_\bf_\bC_\bo_\bu_\bn_\bt;\n+188\n+_\b1_\b8_\b9 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br &_\bp_\ba_\br_\be_\bn_\bt ()\n+190 {\n+191 return parent_;\n+192 }\n+193\n+194 private:\n+195 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br parent_;\n 196\n-197 private:\n-198 friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd >;\n-199\n-200 static const int numSubEntities\n-201 = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+197#if !DUNE_ALBERTA_CACHE_COORDINATES\n+198 public:\n+_\b1_\b9_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b> _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be;\n+200#endif\n+201 };\n 202\n-203 public:\n-_\b2_\b0_\b4 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-_\b2_\b0_\b5 typedef typename MeshPointer::MacroIterator _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-206\n-_\b2_\b0_\b7 typedef typename GridImp::template Codim< codim >::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b2_\b0_\b8 typedef _\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt;\n-_\b2_\b0_\b9 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n-_\b2_\b1_\b0 typedef typename EntityImp::ElementInfo _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-211\n-_\b2_\b1_\b2 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd_\b _\b> _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n+203\n+204\n+205 // ElementInfo::Stack\n+206 // ------------------\n+207\n+208 template< int dim >\n+_\b2_\b0_\b9 class _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::_\bS_\bt_\ba_\bc_\bk\n+210 {\n+211 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br top_;\n+212 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be null_;\n 213\n-_\b2_\b1_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ();\n-215\n-_\b2_\b1_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const _\bT_\bh_\bi_\bs &other );\n-218\n-_\b2_\b2_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other );\n-221\n-_\b2_\b2_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int travLevel );\n+214 public:\n+_\b2_\b1_\b5 Stack ();\n+_\b2_\b1_\b6 ~Stack ();\n+217\n+_\b2_\b1_\b8 InstancePtr allocate ();\n+_\b2_\b1_\b9 void release ( InstancePtr &p );\n+_\b2_\b2_\b0 InstancePtr null ();\n+221 };\n+222\n+223\n 224\n-_\b2_\b2_\b6 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n-227 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *marker,\n-228 int travLevel );\n-229\n-_\b2_\b3_\b1 bool _\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &other ) const\n-232 {\n-233 return entity_.impl().equals( other.entity_.impl() );\n-234 }\n+225 // ElementInfo::Library\n+226 // --------------------\n+227\n+228 template< int dim >\n+229 template< int >\n+230 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::Library\n+231 {\n+232 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+233\n+234 static const int _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs = (1 << (dim-1));\n 235\n-_\b2_\b3_\b7 _\bE_\bn_\bt_\bi_\bt_\by &_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be () const\n-238 {\n-239 return entity_;\n-240 }\n-241\n-_\b2_\b4_\b3 int _\bl_\be_\bv_\be_\bl () const\n-244 {\n-245 return entity_.impl().level();\n-246 }\n+236 static int\n+237 _\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt, const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br );\n+238\n+239 static int\n+240 _\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt, const int face,\n+241 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo (&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br)[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ], int (&faceInNeighbor)\n+[ _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ] );\n+242\n+243 private:\n+244 static int\n+245 macroNeighbor ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &_\be_\bl_\be_\bm_\be_\bn_\bt, const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+&_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br );\n+246 };\n 247\n-_\b2_\b4_\b9 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n-250\n-251 protected:\n-_\b2_\b5_\b3 const GridImp &_\bg_\br_\bi_\bd () const\n-254 {\n-255 return entity_.impl().grid();\n-256 }\n-257\n-258 private:\n-259 void nextElement ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n-260 void nextElementStop (_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n-261 bool stopAtElement ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const;\n-262\n-263 void goNext ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n-264 void goNext ( const std::integral_constant< int, 0 > cdVariable,\n-265 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n-266 void goNext ( const std::integral_constant< int, 1 > cdVariable,\n-267 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n-268 template< int cd >\n-269 void goNext ( const std::integral_constant< int, cd > cdVariable,\n-270 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n-271\n-272 mutable _\bE_\bn_\bt_\bi_\bt_\by entity_;\n-273\n-275 int level_;\n-276\n-278 int subEntity_;\n-279\n-280 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br macroIterator_;\n-281\n-282 // knows on which element a point,edge,face is viewed\n-283 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *marker_;\n-284 };\n+248\n+249\n+250 // ElementInfo::Seed\n+251 // -----------------\n+252\n+253 template< int dim >\n+_\b2_\b5_\b4 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo< dim >::_\bS_\be_\be_\bd\n+255 {\n+_\b2_\b5_\b6 _\bS_\be_\be_\bd ()\n+257 : macroIndex_( -1 ), level_( 0 ), path_( 0 )\n+258 {}\n+259\n+_\b2_\b6_\b0 _\bS_\be_\be_\bd ( const int macroIndex, const int _\bl_\be_\bv_\be_\bl, const unsigned long path )\n+261 : macroIndex_( macroIndex ), level_( _\bl_\be_\bv_\be_\bl ), path_( path )\n+262 {}\n+263\n+_\b2_\b6_\b4 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b ( const _\bS_\be_\be_\bd &other ) const\n+265 {\n+266 return (macroIndex() == other._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx()) && (_\bl_\be_\bv_\be_\bl() == other._\bl_\be_\bv_\be_\bl())\n+&& (path() == other._\bp_\ba_\bt_\bh());\n+267 }\n+268\n+_\b2_\b6_\b9 bool operator< ( const _\bS_\be_\be_\bd &other ) const\n+270 {\n+271 const bool ml = (macroIndex() < other._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx());\n+272 const bool me = (macroIndex() == other._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx());\n+273 const bool ll = (_\bl_\be_\bv_\be_\bl() < other._\bl_\be_\bv_\be_\bl());\n+274 const bool le = (_\bl_\be_\bv_\be_\bl() == other._\bl_\be_\bv_\be_\bl());\n+275 const bool pl = (path() < other._\bp_\ba_\bt_\bh());\n+276 return ml | (me & (ll | (le & pl)));\n+277 }\n+278\n+_\b2_\b7_\b9 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b ( const _\bS_\be_\be_\bd &other ) const { return !(*this == other); }\n+_\b2_\b8_\b0 bool operator<= ( const _\bS_\be_\be_\bd &other ) const { return !(other < *this); }\n+_\b2_\b8_\b1 bool operator> ( const _\bS_\be_\be_\bd &other ) const { return (other < *this); }\n+_\b2_\b8_\b2 bool operator>= ( const _\bS_\be_\be_\bd &other ) const { return !(*this < other); }\n+283\n+_\b2_\b8_\b4 bool _\bi_\bs_\bV_\ba_\bl_\bi_\bd ( ) const { return macroIndex_ != -1; }\n 285\n-286\n-287\n-288 // Implementation of AlbertaMarkerVector\n-289 // -------------------------------------\n-290\n-291 template< int dim, int dimworld >\n-292 template< int codim >\n-293 inline bool AlbertaMarkerVector< dim, dimworld >\n-_\b2_\b9_\b4 ::subEntityOnElement ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity )\n-const\n-295 {\n-296 assert( marker_[ codim ] != 0 );\n+_\b2_\b8_\b6 int _\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx () const { return macroIndex_; }\n+_\b2_\b8_\b7 int _\bl_\be_\bv_\be_\bl () const { return level_; }\n+_\b2_\b8_\b8 unsigned long _\bp_\ba_\bt_\bh () const { return path_; }\n+289\n+290 private:\n+291 int macroIndex_;\n+292 int level_;\n+293 unsigned long path_;\n+294 };\n+295\n+296\n 297\n-298 const int subIndex = dofNumbering_( elementInfo, codim, subEntity );\n-299 const int markIndex = marker_[ codim ][ subIndex ];\n-300 assert( (markIndex >= 0) );\n-301\n-302 const int index = dofNumbering_( elementInfo, 0, 0 );\n-303 return (markIndex == index);\n-304 }\n-305\n-306\n-307 template< int dim, int dimworld >\n-308 template< int firstCodim, class Iterator >\n-309 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n-_\b3_\b1_\b0_\b _\b:_\b:_\bm_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ( const Iterator &begin, const Iterator &end )\n-311 {\n-312 clear();\n-313 std::conditional< (firstCodim <= dimension), MarkSubEntities,\n-NoMarkSubEntities >::type\n-314 ::template mark< firstCodim, Iterator >( dofNumbering_, marker_, begin, end\n-);\n-315 }\n+298 // Implementation of ElementInfo\n+299 // -----------------------------\n+300\n+301 template< int dim >\n+302 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const InstancePtr &instance )\n+303 : instance_( instance )\n+304 {\n+305 addReference();\n+306 }\n+307\n+308\n+309 template< int dim >\n+_\b3_\b1_\b0 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ()\n+311 : instance_( null() )\n+312 {\n+313 addReference();\n+314 }\n+315\n 316\n-317\n-318 template< int dim, int dimworld >\n-_\b3_\b1_\b9 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bp_\br_\bi_\bn_\bt ( std::ostream &out\n-) const\n-320 {\n-321 for( int codim = 1; codim <= dimension; ++codim )\n-322 {\n-323 int *marker = marker_[ codim ];\n-324 if( marker != 0 )\n-325 {\n-326 const int size = dofNumbering_.size( codim );\n-327 out << std::endl;\n-328 out << \"Codimension \" << codim << \" (\" << size << \" entries)\" << std::endl;\n-329 for( int i = 0; i < size; ++i )\n-330 out << \"subentity \" << i << \" visited on Element \" << marker[ i ] << std::\n-endl;\n-331 }\n-332 }\n-333 }\n-334\n-335\n+317 template< int dim >\n+318 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b1_\b9_\b _\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh, const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt ¯oElement,\n+320 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags )\n+321 {\n+322 instance_ = stack().allocate();\n+323 instance_->parent() = null();\n+324 ++(instance_->parent()->refCount);\n+325\n+326 addReference();\n+327\n+328 elInfo().fill_flag = fillFlags;\n+329\n+330 // Alberta fills opp_vertex only if there is a neighbor\n+331 for( int k = 0; k < maxNeighbors; ++k )\n+332 elInfo().opp_vertex[ k ] = -1;\n+333\n+334 fill( mesh, ¯oElement, elInfo() );\n+335 }\n 336\n-337 // Implementation of AlbertaGridTreeIterator\n-338 // -----------------------------------------\n-339\n-340 template< int codim, class GridImp, bool leafIterator >\n-341 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-_\b3_\b4_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n-343 : entity_(),\n-344 level_( -1 ),\n-345 subEntity_( -1 ),\n-346 macroIterator_(),\n-347 marker_( NULL )\n-348 {}\n-349\n-350 template< int codim, class GridImp, bool leafIterator >\n-351 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-_\b3_\b5_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &grid,\n-353 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *marker,\n-354 int travLevel )\n-355 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n-356 level_( travLevel ),\n-357 subEntity_( (codim == 0 ? 0 : -1) ),\n-358 macroIterator_( grid.meshPointer().begin() ),\n-359 marker_( marker )\n-360 {\n-361 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo elementInfo = *macroIterator_;\n-362 nextElementStop( elementInfo );\n-363 if( codim > 0 )\n-364 goNext( elementInfo );\n-365 // it is ok to set the invalid ElementInfo\n-366 entity_.impl().setElement( elementInfo, subEntity_ );\n-367 }\n+337\n+338 template< int dim >\n+339 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b3_\b4_\b0_\b _\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh, const _\bS_\be_\be_\bd &seed,\n+341 typename _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs fillFlags )\n+342 {\n+343 instance_ = stack().allocate();\n+344 instance_->parent() = null();\n+345 ++(instance_->parent()->refCount);\n+346\n+347 addReference();\n+348\n+349 // fill in macro element info\n+350 elInfo().fill_flag = fillFlags;\n+351\n+352 // Alberta fills opp_vertex only if there is a neighbor\n+353 for( int k = 0; k < maxNeighbors; ++k )\n+354 elInfo().opp_vertex[ k ] = -1;\n+355\n+356 fill( mesh, ((_\bM_\be_\bs_\bh *)mesh)->macro_els + seed._\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx(), elInfo() );\n+357\n+358 // traverse the seed's path\n+359 unsigned long path = seed._\bp_\ba_\bt_\bh();\n+360 for( int i = 0; i < seed._\bl_\be_\bv_\be_\bl(); ++i )\n+361 {\n+362 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br child = stack().allocate();\n+363 child->_\bp_\ba_\br_\be_\bn_\bt() = instance_;\n+364\n+365 // Alberta fills opp_vertex only if there is a neighbor\n+366 for( int k = 0; k < maxNeighbors; ++k )\n+367 child->_\be_\bl_\bI_\bn_\bf_\bo.opp_vertex[ k ] = -2;\n 368\n-369\n-370 // Make LevelIterator with point to element from previous iterations\n-371 template< int codim, class GridImp, bool leafIterator >\n-372 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-_\b3_\b7_\b3_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &grid,\n-374 int travLevel )\n-375 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n-376 level_( travLevel ),\n-377 subEntity_( -1 ),\n-378 macroIterator_( grid.meshPointer().end() ),\n-379 marker_( 0 )\n-380 {}\n-381\n-382\n-383 // Make LevelIterator with point to element from previous iterations\n-384 template< int codim, class GridImp, bool leafIterator >\n-385 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-_\b3_\b8_\b6_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( const _\bT_\bh_\bi_\bs &other )\n-387 : entity_( other.entity_ ),\n-388 level_( other.level_ ),\n-389 subEntity_( other.subEntity_ ),\n-390 macroIterator_( other.macroIterator_ ),\n-391 marker_( other.marker_ )\n-392 {}\n-393\n-394\n-395 // Make LevelIterator with point to element from previous iterations\n-396 template< int codim, class GridImp, bool leafIterator >\n-397 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>_\b:_\b:\n-_\bT_\bh_\bi_\bs &\n-_\b3_\b9_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const\n-_\bT_\bh_\bi_\bs &other )\n-399 {\n-400 entity_ = other.entity_;\n-401 level_ = other.level_;\n-402 subEntity_ = other.subEntity_;\n-403 macroIterator_ = other.macroIterator_;\n-404 marker_ = other.marker_;\n-405\n-406 return *this;\n-407 }\n-408\n-409\n-410 template< int codim, class GridImp, bool leafIterator >\n-_\b4_\b1_\b1 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>_\b:_\b:\n-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-412 {\n-413 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo elementInfo = entity_.impl().elementInfo_;\n-414 goNext ( elementInfo );\n-415 // it is ok to set the invalid ElementInfo\n-416 entity_.impl().setElement( elementInfo, subEntity_ );\n-417 }\n-418\n-419\n-420 template< int codim, class GridImp, bool leafIterator >\n-421 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-422_\b _\b:_\b:_\bn_\be_\bx_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( ElementInfo &elementInfo )\n-423 {\n-424 if( elementInfo.isLeaf() || (elementInfo.level() >= level_) )\n+369 fill( path & 1, elInfo(), child->_\be_\bl_\bI_\bn_\bf_\bo );\n+370\n+371 instance_ = child;\n+372 addReference();\n+373\n+374 path = path >> 1;\n+375 }\n+376\n+377 assert( this->seed() == seed );\n+378 }\n+379\n+380\n+381 template< int dim >\n+_\b3_\b8_\b2 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &other )\n+383 : instance_( other.instance_ )\n+384 {\n+385 addReference();\n+386 }\n+387\n+388 template< int dim >\n+_\b3_\b8_\b9 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &&other )\n+390 : instance_( NULL )\n+391 {\n+392 using _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp;\n+393 swap( instance_, other.instance_ );\n+394 }\n+395\n+396 template< int dim >\n+_\b3_\b9_\b7 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\b~_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo ()\n+398 {\n+399 removeReference();\n+400 }\n+401\n+402\n+403 template< int dim >\n+404 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &\n+_\b4_\b0_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &other )\n+406 {\n+407 other.addReference();\n+408 removeReference();\n+409 instance_ = other.instance_;\n+410 return *this;\n+411 }\n+412\n+413 template< int dim >\n+414 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &\n+_\b4_\b1_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &&other )\n+416 {\n+417 using _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp;\n+418 swap( instance_, other.instance_ );\n+419 return *this;\n+420 }\n+421\n+422 template< int dim >\n+423 inline bool\n+_\b4_\b2_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &other ) const\n 425 {\n-426 while( (elementInfo.level() > 0) && (elementInfo.indexInFather() == 1) )\n-427 elementInfo = elementInfo.father();\n-428 if( elementInfo.level() == 0 )\n-429 {\n-430 ++macroIterator_;\n-431 elementInfo = *macroIterator_;\n-432 }\n-433 else\n-434 elementInfo = elementInfo.father().child( 1 );\n+426 return (instance_->elInfo.el == other.instance_->_\be_\bl_\bI_\bn_\bf_\bo.el);\n+427 }\n+428\n+429\n+430 template< int dim >\n+431 inline bool\n+_\b4_\b3_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &other ) const\n+433 {\n+434 return (instance_->elInfo.el != other.instance_->_\be_\bl_\bI_\bn_\bf_\bo.el);\n 435 }\n-436 else\n-437 elementInfo = elementInfo.child( 0 );\n-438 }\n-439\n-440\n-441 template< int codim, class GridImp, bool leafIterator >\n-442 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n-443 ::nextElementStop ( ElementInfo &elementInfo )\n-444 {\n-445 while( !(!elementInfo || stopAtElement( elementInfo )) )\n-446 nextElement( elementInfo );\n-447 }\n-448\n-449\n-450 template< int codim, class GridImp, bool leafIterator >\n-451 inline bool AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n-452 ::stopAtElement ( const ElementInfo &elementInfo ) const\n-453 {\n-454 if( !elementInfo )\n-455 return true;\n-456 return (leafIterator ? elementInfo.isLeaf() : (level_ == elementInfo.level\n-()));\n-457 }\n-458\n-459\n-460 template< int codim, class GridImp, bool leafIterator >\n-461 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n-462 ::goNext ( ElementInfo &elementInfo )\n-463 {\n-464 std::integral_constant< int, codim > codimVariable;\n-465 goNext( codimVariable, elementInfo );\n+436\n+437\n+438 template< int dim >\n+439 inline const typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt &\n+_\b4_\b4_\b0 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt () const\n+441 {\n+442 assert( !!(*this) );\n+443 assert( elInfo().macro_el != NULL );\n+444 return static_cast< const _\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt & >( *(elInfo().macro_el) );\n+445 }\n+446\n+447\n+448 template< int dim >\n+_\b4_\b4_\b9 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br () const\n+450 {\n+451 assert( !!(*this) );\n+452 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( instance_->parent() );\n+453 }\n+454\n+455\n+456 template< int dim >\n+_\b4_\b5_\b7 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const\n+458 {\n+459 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = elInfo()._\be_\bl;\n+460 const _\bE_\bl_\be_\bm_\be_\bn_\bt *father = elInfo().parent->el;\n+461 assert( father != NULL );\n+462\n+463 const int index = (father->child[ 0 ] == element ? 0 : 1);\n+464 assert( father->child[ index ] == element );\n+465 return index;\n 466 }\n 467\n-468 template< int codim, class GridImp, bool leafIterator >\n-469 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n-470 ::goNext ( const std::integral_constant< int, 0 > /* cdVariable */,\n-471 ElementInfo &elementInfo )\n-472 {\n-473 assert( stopAtElement( elementInfo ) );\n-474\n-475 nextElement( elementInfo );\n-476 nextElementStop( elementInfo );\n-477 }\n-478\n-479 template< int codim, class GridImp, bool leafIterator >\n-480 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n-481 ::goNext ( const std::integral_constant< int, 1 > cdVariable,\n-482 ElementInfo &elementInfo )\n-483 {\n-484 assert( stopAtElement( elementInfo ) );\n+468\n+469 template< int dim >\n+_\b4_\b7_\b0 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bh_\bi_\bl_\bd ( int i ) const\n+471 {\n+472 assert( !isLeaf() );\n+473\n+474 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br child = stack().allocate();\n+475 child->_\bp_\ba_\br_\be_\bn_\bt() = instance_;\n+476 addReference();\n+477\n+478 // Alberta fills opp_vertex only if there is a neighbor\n+479 for( int k = 0; k < maxNeighbors; ++k )\n+480 child->_\be_\bl_\bI_\bn_\bf_\bo.opp_vertex[ k ] = -2;\n+481\n+482 fill( i, elInfo(), child->_\be_\bl_\bI_\bn_\bf_\bo );\n+483 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( child );\n+484 }\n 485\n-486 ++subEntity_;\n-487 if( subEntity_ >= numSubEntities )\n-488 {\n-489 subEntity_ = 0;\n-490 nextElement( elementInfo );\n-491 nextElementStop( elementInfo );\n-492 if( !elementInfo )\n-493 return;\n-494 }\n-495\n-496 if( leafIterator )\n+486\n+487 template< int dim >\n+_\b4_\b8_\b8 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf () const\n+489 {\n+490 assert( !(*this) == false );\n+491 return isLeaf( el() );\n+492 }\n+493\n+494\n+495 template< int dim >\n+_\b4_\b9_\b6 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\be_\be_\bd _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bs_\be_\be_\bd () const\n 497 {\n-498 const int face = (dimension == 1 ? (numSubEntities-1)-subEntity_ :\n-subEntity_);\n+498 assert( !!(*this) );\n 499\n-500 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL *neighbor = elementInfo.elInfo().neigh[ face ];\n-501 if( (neighbor != NULL) && !elementInfo.isBoundary( face ) )\n-502 {\n-503 // face is reached from element with largest number\n-504 const int elIndex = grid().dofNumbering() ( elementInfo, 0, 0 );\n-505 const int nbIndex = grid().dofNumbering() ( neighbor, 0, 0 );\n-506 if( elIndex < nbIndex )\n-507 goNext( cdVariable, elementInfo );\n-508 }\n-509 // uncomment this assertion only if codimension 1 entities are marked\n-510 // assert( marker_->template subEntityOnElement< 1 >( elementInfo,\n-subEntity_ ) );\n-511 }\n-512 else\n-513 {\n-514 assert( marker_ != 0 );\n-515 if( !marker_->template subEntityOnElement< 1 >( elementInfo, subEntity_ ) )\n-516 goNext( cdVariable, elementInfo );\n-517 }\n-518 }\n-519\n-520 template< int codim, class GridImp, bool leafIterator >\n-521 template< int cd >\n-522 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n-523 ::goNext ( const std::integral_constant< int, cd > cdVariable,\n-524 ElementInfo &elementInfo )\n-525 {\n-526 assert( stopAtElement( elementInfo ) );\n-527\n-528 ++subEntity_;\n-529 if( subEntity_ >= numSubEntities )\n-530 {\n-531 subEntity_ = 0;\n-532 nextElement( elementInfo );\n-533 nextElementStop( elementInfo );\n-534 if( !elementInfo )\n-535 return;\n+500 int level = 0;\n+501 unsigned long path = 0;\n+502 for( _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br p = instance_; p->_\bp_\ba_\br_\be_\bn_\bt() != null(); p = p->_\bp_\ba_\br_\be_\bn_\bt() )\n+503 {\n+504 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = p->_\be_\bl_\bI_\bn_\bf_\bo.el;\n+505 const _\bE_\bl_\be_\bm_\be_\bn_\bt *father = p->parent()->elInfo.el;\n+506 const unsigned long child = static_cast< unsigned long >( father->child[ 1\n+] == element );\n+507 path = (path << 1) | child;\n+508 ++level;\n+509 }\n+510\n+511 if( level != elInfo().level )\n+512 DUNE_THROW( NotImplemented, \"Seed for fake elements not implemented.\" );\n+513\n+514 return _\bS_\be_\be_\bd( macroElement().index, level, path );\n+515 }\n+516\n+517\n+518 template< int dim >\n+_\b5_\b1_\b9 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\be_\bs_\bh ()\n+const\n+520 {\n+521 return _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br( elInfo().mesh );\n+522 }\n+523\n+524\n+525 template< int dim >\n+_\b5_\b2_\b6 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const\n+527 {\n+528 return mightVanish( el(), 0 );\n+529 }\n+530\n+531\n+532 template< int dim >\n+_\b5_\b3_\b3 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl () const\n+534 {\n+535 return elInfo().level;\n 536 }\n 537\n-538 assert( marker_ != 0 );\n-539 if( !marker_->template subEntityOnElement< cd >( elementInfo, subEntity_ )\n-)\n-540 goNext( cdVariable, elementInfo );\n-541 }\n-542\n-543}\n+538\n+539 template< int dim >\n+_\b5_\b4_\b0 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n+541 {\n+542 return 0;\n+543 }\n 544\n-545#endif // #if HAVE_ALBERTA\n-546\n-547#endif // #ifndef DUNE_ALBERTA_TREEITERATOR_HH\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n-provides a wrapper for ALBERTA's mesh structure\n+545\n+546 template<>\n+_\b5_\b4_\b7 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\b3_\b _\b>_\b:_\b:_\bt_\by_\bp_\be () const\n+548 {\n+549 return instance_->elInfo.el_type;\n+550 }\n+551\n+552\n+553 template< int dim >\n+_\b5_\b5_\b4 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk () const\n+555 {\n+556 return el()->mark;\n+557 }\n+558\n+559\n+560 template< int dim >\n+_\b5_\b6_\b1 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bs_\be_\bt_\bM_\ba_\br_\bk ( int refCount ) const\n+562 {\n+563 assert( isLeaf() );\n+564 assert( (refCount >= -128) && (refCount < 127) );\n+565 el()->mark = refCount;\n+566 }\n+567\n+568\n+569 template< int dim >\n+_\b5_\b7_\b0 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bL_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const\n+571 {\n+572 assert( !!(*this) );\n+573 assert( (face >= 0) && (face < maxNeighbors) );\n+574\n+575 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n+576 const int macroFace = elInfo().macro_wall[ face ];\n+577 if( macroFace >= 0 )\n+578 return (macroElement().neighbor( macroFace ) != NULL);\n+579 else\n+580 return true;\n+581 }\n+582\n+583\n+584 template< int dim >\n+_\b5_\b8_\b5 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face\n+) const\n+586 {\n+587 assert( (face >= 0) && (face < numFaces) );\n+588 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo neighbor;\n+589 Library< dimWorld >::leafNeighbor( *this, face, neighbor );\n+590 return neighbor;\n+591 }\n+592\n+593\n+594 template< int dim >\n+595 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b5_\b9_\b6_\b _\b:_\b:_\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const int face, _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo (&neighbor)\n+[ maxLevelNeighbors ], int (&faceInNeighbor)[ maxLevelNeighbors ] ) const\n+597 {\n+598 assert( (face >= 0) && (face < numFaces) );\n+599 return Library< dimWorld >::levelNeighbors( *this, face, neighbor,\n+faceInNeighbor );\n+600 }\n+601\n+602\n+603 template< int dim >\n+604 template< int codim >\n+_\b6_\b0_\b5 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt ( int subEntity ) const\n+606 {\n+607 return _\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt( element(), subEntity );\n+608 }\n+609\n+610\n+611 template< int dim >\n+_\b6_\b1_\b2 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br ( const int face ) const\n+613 {\n+614 assert( neighbor( face ) != NULL );\n+615 return _\bT_\bw_\bi_\bs_\bt_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b-_\b1_\b _\b>_\b:_\b:_\bt_\bw_\bi_\bs_\bt( neighbor( face ), elInfo().opp_vertex\n+[ face ] );\n+616 }\n+617\n+618\n+619 template< int dim >\n+_\b6_\b2_\b0 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ( int face ) const\n+621 {\n+622 assert( !!(*this) );\n+623 assert( (face >= 0) && (face < maxNeighbors) );\n+624\n+625 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n+626 const int macroFace = elInfo().macro_wall[ face ];\n+627 if( macroFace >= 0 )\n+628 return macroElement().isBoundary( macroFace );\n+629 else\n+630 return false;\n+631 }\n+632\n+633\n+634 template< int dim >\n+_\b6_\b3_\b5 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int face ) const\n+636 {\n+637 assert( !!(*this) );\n+638 assert( (face >= 0) && (face < N_WALLS_MAX) );\n+639\n+640 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n+641 const int macroFace = elInfo().macro_wall[ face ];\n+642 const int id = macroElement().boundaryId( macroFace );\n+643 // this assertion is only allowed, if FILL_BOUND is set\n+644 // assert( id == elInfo().wall_bound[ face ] );\n+645 return id;\n+646 }\n+647\n+648\n+649 template< int dim >\n+650 inline _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *\n+_\b6_\b5_\b1 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int face ) const\n+652 {\n+653 assert( !!(*this) );\n+654 assert( (face >= 0) && (face < N_WALLS_MAX) );\n+655\n+656 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n+657 const int macroFace = elInfo().macro_wall[ face ];\n+658 return (macroFace < 0 ? NULL : macroElement().wall_trafo[ macroFace ]);\n+659 }\n+660\n+661\n+662 template< int dim >\n+663 inline _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn *\n+_\b6_\b6_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn ( int face ) const\n+665 {\n+666 assert( !!(*this) );\n+667 assert( (face >= 0) && (face < N_WALLS_MAX) );\n+668\n+669 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd) != 0 );\n+670 const int macroFace = elInfo().macro_wall[ face ];\n+671 if( macroFace >= 0 )\n+672 return static_cast< _\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn * >( macroElement().projection\n+[ macroFace+1 ] );\n+673 else\n+674 return 0;\n+675 }\n+676\n+677\n+678 template< int dim >\n+_\b6_\b7_\b9 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs () const\n+680 {\n+681 return ((elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs) != 0);\n+682 }\n+683\n+684 template< int dim >\n+_\b6_\b8_\b5 inline const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int vertex )\n+const\n+686 {\n+687 assert( hasCoordinates() );\n+688 assert( (vertex >= 0) && (vertex < numVertices) );\n+689 return elInfo().coord[ vertex ];\n+690 }\n+691\n+692\n+693 template< int dim >\n+694 template< class Functor >\n+_\b6_\b9_\b5 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor )\n+const\n+696 {\n+697 functor( *this );\n+698 if( !isLeaf() )\n+699 {\n+700 child( 0 ).hierarchicTraverse( functor );\n+701 child( 1 ).hierarchicTraverse( functor );\n+702 }\n+703 }\n+704\n+705\n+706 template< int dim >\n+707 template< class Functor >\n+_\b7_\b0_\b8 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be ( Functor &functor ) const\n+709 {\n+710 if( !isLeaf() )\n+711 {\n+712 child( 0 ).leafTraverse( functor );\n+713 child( 1 ).leafTraverse( functor );\n+714 }\n+715 else\n+716 functor( *this );\n+717 }\n+718\n+719\n+720 template< int dim >\n+_\b7_\b2_\b1 inline const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt () const\n+722 {\n+723 return elInfo().el;\n+724 }\n+725\n+726\n+727 template< int dim >\n+_\b7_\b2_\b8 inline const _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int face ) const\n+729 {\n+730 assert( (face >= 0) && (face < numFaces) );\n+731 assert( (elInfo().fill_flag & _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br) != 0 );\n+732 return elInfo().neigh[ face ];\n+733 }\n+734\n+735\n+736 template< int dim >\n+_\b7_\b3_\b7 inline _\bE_\bl_\be_\bm_\be_\bn_\bt *_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl () const\n+738 {\n+739 return elInfo().el;\n+740 }\n+741\n+742\n+743 template< int dim >\n+_\b7_\b4_\b4 inline _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo () const\n+745 {\n+746 return (instance_->elInfo);\n+747 }\n+748\n+749\n+750 template< int dim >\n+751 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b7_\b5_\b2 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br &mesh,\n+753 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int level, int type )\n+754 {\n+755 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br instance = stack().allocate();\n+756 instance->_\bp_\ba_\br_\be_\bn_\bt() = null();\n+757 ++(instance->_\bp_\ba_\br_\be_\bn_\bt()->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt);\n+758\n+759 instance->_\be_\bl_\bI_\bn_\bf_\bo.mesh = mesh;\n+760 instance->_\be_\bl_\bI_\bn_\bf_\bo.macro_el = NULL;\n+761 instance->_\be_\bl_\bI_\bn_\bf_\bo.el = const_cast< _\bE_\bl_\be_\bm_\be_\bn_\bt * >( element );\n+762 instance->_\be_\bl_\bI_\bn_\bf_\bo.parent = NULL;\n+763 instance->_\be_\bl_\bI_\bn_\bf_\bo.fill_flag = _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg;\n+764 instance->_\be_\bl_\bI_\bn_\bf_\bo.level = level;\n+765 instance->_\be_\bl_\bI_\bn_\bf_\bo.el_type = type;\n+766\n+767 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( instance );\n+768 }\n+769\n+770\n+771 template< int dim >\n+772 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>\n+_\b7_\b7_\b3 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be ( const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n+774 {\n+775 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br instance = stack().allocate();\n+776 instance->_\bp_\ba_\br_\be_\bn_\bt() = null();\n+777 ++(instance->_\bp_\ba_\br_\be_\bn_\bt()->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt);\n+778\n+779 instance->_\be_\bl_\bI_\bn_\bf_\bo = elInfo;\n+780 return _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>( instance );\n+781 }\n+782\n+783\n+784 template< int dim >\n+785 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf ( _\bE_\bl_\be_\bm_\be_\bn_\bt *element )\n+786 {\n+787 return IS_LEAF_EL( element );\n+788 }\n+789\n+790\n+791 template< int dim >\n+792 inline bool _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh ( _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *element,\n+int depth )\n+793 {\n+794 if( isLeaf( element ) )\n+795 return (element->mark < depth);\n+796 else\n+797 return (mightVanish( element->child[ 0 ], depth-1 ) && mightVanish\n+( element->child[ 1 ], depth-1 ));\n+798 }\n+799\n+800\n+801 template< int dim >\n+802 inline void ElementInfo< dim >\n+803 ::fill ( _\bM_\be_\bs_\bh *mesh, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_EL *mel, _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &elInfo )\n+804 {\n+805 _\bA_\bL_\bB_\bE_\bR_\bT_\bA fill_macro_info( mesh, mel, &elInfo );\n+806 }\n+807\n+808 template< int dim >\n+809 inline void ElementInfo< dim >\n+810 ::fill ( int ichild, const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO &parentInfo, _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL_INFO\n+&elInfo )\n+811 {\n+812 _\bA_\bL_\bB_\bE_\bR_\bT_\bA fill_elinfo( ichild, FILL_ANY, &parentInfo, &elInfo );\n+813 }\n+814\n+815\n+816 template< int dim >\n+817 inline void ElementInfo< dim >::addReference () const\n+818 {\n+819 ++(instance_->refCount);\n+820 }\n+821\n+822\n+823 template< int dim >\n+824 inline void ElementInfo< dim >::removeReference () const\n+825 {\n+826 // short-circuit for rvalues that have been drained as argument to a move\n+operation\n+827 if ( !instance_ )\n+828 return;\n+829 // this loop breaks when instance becomes null()\n+830 for( InstancePtr instance = instance_; --(instance->refCount) == 0; )\n+831 {\n+832 const InstancePtr parent = instance->parent();\n+833 stack().release( instance );\n+834 instance = parent;\n+835 }\n+836 }\n+837\n+838\n+839 template< int dim >\n+840 inline typename ElementInfo< dim >::InstancePtr\n+841 ElementInfo< dim >::null ()\n+842 {\n+843 return stack().null();\n+844 }\n+845\n+846\n+847 template< int dim >\n+848 inline typename ElementInfo< dim >::Stack &\n+849 ElementInfo< dim >::stack ()\n+850 {\n+851 static Stack s;\n+852 return s;\n+853 }\n+854\n+855\n+856\n+857 // Implementation of ElementInfo::Stack\n+858 // ------------------------------------\n+859\n+860 template< int dim >\n+_\b8_\b6_\b1 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bS_\bt_\ba_\bc_\bk ()\n+862 : top_( 0 )\n+863 {\n+864 null_._\be_\bl_\bI_\bn_\bf_\bo.el = NULL;\n+865 null_._\br_\be_\bf_\bC_\bo_\bu_\bn_\bt = 1;\n+866 null_._\bp_\ba_\br_\be_\bn_\bt() = 0;\n+867 }\n+868\n+869\n+870 template< int dim >\n+_\b8_\b7_\b1 inline _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\b~_\bS_\bt_\ba_\bc_\bk ()\n+872 {\n+873 while( top_ != 0 )\n+874 {\n+875 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br p = top_;\n+876 top_ = p->_\bp_\ba_\br_\be_\bn_\bt();\n+877 delete p;\n+878 }\n+879 }\n+880\n+881\n+882 template< int dim >\n+883 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br\n+_\b8_\b8_\b4 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be ()\n+885 {\n+886 _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br p = top_;\n+887 if( p != 0 )\n+888 top_ = p->_\bp_\ba_\br_\be_\bn_\bt();\n+889 else\n+890 p = new _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be;\n+891 p->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt = 0;\n+892 return p;\n+893 }\n+894\n+895\n+896 template< int dim >\n+_\b8_\b9_\b7 inline void _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be ( _\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br &p )\n+898 {\n+899 assert( (p != null()) && (p->_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt == 0) );\n+900 p->_\bp_\ba_\br_\be_\bn_\bt() = top_;\n+901 top_ = p;\n+902 }\n+903\n+904\n+905 template< int dim >\n+906 inline typename _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\bP_\bt_\br\n+_\b9_\b0_\b7 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bn_\bu_\bl_\bl ()\n+908 {\n+909 return &null_;\n+910 }\n+911\n+912 } // namespace Alberta\n+913\n+914} // namespace Dune\n+915\n+916#endif // #if HAVE_ALBERTA\n+917\n+918#endif // #ifndef DUNE_ALBERTA_ELEMENTINFO_HH\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n+_\bm_\ba_\bc_\br_\bo_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n+_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n+> &b)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\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 agrid.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n+ALBERTA MESH Mesh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+ALBERTA AFF_TRAFO AffineTransformation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ALBERTA EL Element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const This &other) const\n-equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt\n-MakeableInterfaceObject< Entity > EntityObject\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:208\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-Alberta::MeshPointer< dimension > MeshPointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:204\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridTreeIterator(const GridImp &grid, const MarkerVector *marker, int\n-travLevel)\n-Constructor making begin iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:352\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridTreeIterator(const GridImp &grid, int travLevel)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:373\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp\n-EntityObject::ImplementationType EntityImp\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-MeshPointer::MacroIterator MacroIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const This &other)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:398\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Entity & dereference() const\n-dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:237\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-AlbertaMarkerVector< dimension, dimensionworld > MarkerVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:212\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\be_\bv_\be_\bl\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n+ElementInfo leafNeighbor(const int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:585\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+bool isLeaf() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:488\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be\n+static ElementInfo createFake(const MeshPointer &mesh, const Element *element,\n+int level, int type=0)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:752\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\bh_\bi_\bl_\bd\n+ElementInfo child(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:470\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl\n int level() const\n-ask for level of entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static const int dimensionworld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridTreeIterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:342\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bg_\br_\bi_\bd\n-const GridImp & grid() const\n-obtain a reference to the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:533\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh\n+bool mightVanish() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:526\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs\n+static const int numFaces\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+int twist(int subEntity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:605\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n+int twistInNeighbor(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:612\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Alberta::MacroElement< dimension > MacroElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+BasicNodeProjection * boundaryProjection(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:664\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+const MacroElement & macroElement() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:440\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n+static const int maxLevelNeighbors\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n+ElementInfo father() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:449\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo(const ElementInfo &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:382\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+GeometryCacheProxy< dim > GeometryCache\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+ElementInfo & operator=(const ElementInfo &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:405\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\ba_\bs_\bL_\be_\ba_\bf_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n+bool hasLeafNeighbor(const int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:570\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(const ElementInfo &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:424\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\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 treeiterator.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-AlbertaGridTreeIterator(const This &other)\n-Constructor making end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:386\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-EntityImp::ElementInfo ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:210\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void hierarchicTraverse(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:695\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n+int type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:540\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\ba_\bx_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n+static const int maxNeighbors\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\be_\bt_\bM_\ba_\br_\bk\n+void setMark(int refCount) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:561\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\b~_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+~ElementInfo()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:397\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+const GlobalVector & coordinate(int vertex) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:685\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+static const int numVertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bg_\be_\bt_\bM_\ba_\br_\bk\n+int getMark() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:554\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void leafTraverse(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:708\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+Alberta::MeshPointer< dimension > MeshPointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+const Element * neighbor(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:728\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bF_\ba_\bk_\be\n+static ElementInfo createFake(const ALBERTA EL_INFO &elInfo)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:773\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:635\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n+bool operator!=(const ElementInfo &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:432\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+Alberta::FillFlags< dimension > FillFlags\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo(const MeshPointer &mesh, const MacroElement ¯oElement, typename\n+FillFlags::Flags fillFlags=FillFlags::standard)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+AffineTransformation * transformation(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:651\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool isBoundary(int face) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:620\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n+int indexInFather() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:457\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\be_\be_\bd\n+Seed seed() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:496\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n+Element * el() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n+const Element * element() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:721\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo\n+ALBERTA EL_INFO & elInfo() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:744\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bm_\be_\bs_\bh\n+MeshPointer mesh() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:519\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+GeometryCache geometryCache() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bh_\ba_\bs_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+bool hasCoordinates() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:679\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n+int levelNeighbors(const int face, ElementInfo(&neighbor)[maxLevelNeighbors],\n+int(&faceInNeighbor)[maxLevelNeighbors]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:596\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo(ElementInfo &&other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:389\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+ElementInfo(const MeshPointer &mesh, const Seed &seed, typename FillFlags::\n+Flags fillFlags=FillFlags::standard)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:340\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\bp_\ba_\br_\be_\bn_\bt\n+InstancePtr & parent()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+Alberta::GeometryCache< dim > geometryCache\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\be_\bl_\bI_\bn_\bf_\bo\n+ALBERTA EL_INFO elInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bc_\be_\b:_\b:_\br_\be_\bf_\bC_\bo_\bu_\bn_\bt\n+unsigned int refCount\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bn_\bu_\bl_\bl\n+InstancePtr null()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:907\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\b~_\bS_\bt_\ba_\bc_\bk\n+~Stack()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:871\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release(InstancePtr &p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:897\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\bS_\bt_\ba_\bc_\bk\n+Stack()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:861\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\bt_\ba_\bc_\bk_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+InstancePtr allocate()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:884\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bS_\be_\be_\bd\n+Seed(const int macroIndex, const int level, const unsigned long path)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:260\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bS_\be_\be_\bd\n+Seed()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bi_\bs_\bV_\ba_\bl_\bi_\bd\n+bool isValid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:284\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bp_\ba_\bt_\bh\n+unsigned long path() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:288\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bS_\be_\be_\bd_\b:_\b:_\bm_\ba_\bc_\br_\bo_\bI_\bn_\bd_\be_\bx\n+int macroIndex() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:286\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bC_\ba_\bc_\bh_\be_\bP_\br_\bo_\bx_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrycache.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macroelement.hh:24\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-marker assigning subentities to one element containing them\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-AlbertaMarkerVector(const DofNumbering &dofNumbering)\n-create AlbertaMarkerVector with empty vectors\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bu_\bp_\b2_\bD_\ba_\bt_\be\n-bool up2Date() const\n-return true if marking is up to date\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n-bool subEntityOnElement(const ElementInfo &elementInfo, int subEntity) const\n-visit subentity on this element?\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:294\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bm_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-void markSubEntities(const Iterator &begin, const Iterator &end)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\b~_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-~AlbertaMarkerVector()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\bl_\be_\ba_\br\n-void clear()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-AlbertaMarkerVector(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print(std::ostream &out=std::cout) const\n-print for debugin' only\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dimension > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(const DofNumbering &dofNumbering, int *(&marker)\n-[dimension+1], const ElementInfo &elementInfo)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-InterfaceType::Implementation ImplementationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:1108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n+static const Flags nothing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+static const Flags boundaryId\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n+ALBERTA FLAGS Flags\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs\n+static const Flags coords\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd\n+static const Flags standard\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:258\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+static const Flags neighbor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bT_\bw_\bi_\bs_\bt_\b:_\b:_\bt_\bw_\bi_\bs_\bt\n+static int twist(const Element *element, int subEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:538\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bN_\bo_\bd_\be_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/projection.hh:208\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00722.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00722.html", "unified_diff": "@@ -72,15 +72,15 @@\n
  • dune
  • grid
  • \n
    \n
    \n
    \n
    albertagrid.hh File Reference
    \n
    \n
    \n-\n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00722_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00722_source.html", "unified_diff": "@@ -83,20 +83,20 @@\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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTAGRID_HH
    \n
    6#define DUNE_ALBERTAGRID_HH
    \n-\n+\n \n \n \n
    11#endif
    \n-
    provides the AlbertaGrid class
    \n+
    provides the AlbertaGrid class
    \n
    specialization of the generic GridFactory for AlbertaGrid
    \n \n
    specialization of the generic StructuredGridFactory for AlbertaGrid
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00728.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00728.html", "unified_diff": "@@ -84,21 +84,21 @@\n More...

    \n \n

    Go to the source code of this file.

    \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00728_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00728_source.html", "unified_diff": "@@ -93,21 +93,21 @@\n
    14
    \n
    15#include <dune/common/parallel/communication.hh>
    \n \n \n
    18
    \n
    19// The components of the IdentityGrid interface
    \n \n-\n-\n+\n+\n \n-\n-\n-\n-\n+\n+\n+\n+\n
    28
    \n
    29namespace Dune
    \n
    30{
    \n
    31 // Forward declaration
    \n
    32 template <class HostGrid>
    \n
    33 class IdentityGrid;
    \n
    34
    \n@@ -555,21 +555,21 @@\n
    499 static const bool v = isLeafwiseConforming<HostGrid>::v;
    \n
    500 };
    \n
    501 } // end namespace Capabilities
    \n
    502
    \n
    503} // namespace Dune
    \n
    504
    \n
    505#endif // DUNE_GRID_IDENTITYGRID_HH
    \n-
    The IdentityGridLevelIterator class.
    \n-
    The IdentityGridLeafIterator class.
    \n-
    The IdentityGridHierarchicIterator class.
    \n-
    The IdentityGridEntity class.
    \n+
    The IdentityGridHierarchicIterator class.
    \n+
    The IdentityGridEntity class.
    \n+
    The IdentityGridEntitySeed class.
    \n+
    The index and id sets for the IdentityGrid class.
    \n
    The IdentityGridGeometry class and its specializations.
    \n-
    The IdentityGridEntitySeed class.
    \n-
    The index and id sets for the IdentityGrid class.
    \n+
    The IdentityGridLevelIterator class.
    \n+
    The IdentityGridLeafIterator class.
    \n
    The IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    static const bool v
    Definition common/capabilities.hh:59
    \n
    static const bool v
    Definition common/capabilities.hh:75
    \n
    static const bool v
    Definition common/capabilities.hh:98
    \n
    static const bool v
    Definition common/capabilities.hh:107
    \n
    static const bool v
    Definition common/capabilities.hh:116
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -433,28 +433,28 @@\n 499 static const bool _\bv = _\bi_\bs_\bL_\be_\ba_\bf_\bw_\bi_\bs_\be_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\b<_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b>_\b:_\b:_\bv;\n 500 };\n 501 } // end namespace Capabilities\n 502\n 503} // namespace Dune\n 504\n 505#endif // DUNE_GRID_IDENTITYGRID_HH\n-_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-The IdentityGridLevelIterator class.\n-_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-The IdentityGridLeafIterator class.\n _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n The IdentityGridHierarchicIterator class.\n _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n The IdentityGridEntity class.\n-_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n-The IdentityGridGeometry class and its specializations.\n _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh\n The IdentityGridEntitySeed class.\n _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh\n The index and id sets for the IdentityGrid class.\n+_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n+The IdentityGridGeometry class and its specializations.\n+_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+The IdentityGridLevelIterator class.\n+_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+The IdentityGridLeafIterator class.\n _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n The IdentityGridLeafIntersectionIterator and\n IdentityGridLevelIntersectionIterator classes.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bh_\ba_\bs_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bv\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00731.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00731.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridleveliterator.hh File Reference\n+dune-grid: identitygridhierarchiciterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,38 +72,37 @@\n
  • dune
  • grid
  • identitygrid
  • \n \n \n
    \n \n-
    identitygridleveliterator.hh File Reference
    \n+
    identitygridhierarchiciterator.hh File Reference
    \n
    \n
    \n \n-

    The IdentityGridLevelIterator class. \n+

    The IdentityGridHierarchicIterator class. \n More...

    \n-\n+\n

    Go to the source code of this file.

    \n

    \n Classes

    struct  Dune::IdentityGridFamily< dim, HostGrid >
     
    \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::IdentityGridLevelIterator< codim, pitype, GridImp >
     Iterator over all entities of a given codimension and level of a grid. More...
    class  Dune::IdentityGridHierarchicIterator< GridImp >
     Iterator over the descendants of an entity.Mesh entities of codimension 0 (\"elements\") allow to visit all entities of codimension 0 obtained through nested, hierarchic refinement of the entity. Iteration over this set of entities is provided by the HierarchicIterator, starting from a given entity. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The IdentityGridLevelIterator class.

    \n+

    The IdentityGridHierarchicIterator class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,24 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridleveliterator.hh File Reference\n-The IdentityGridLevelIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+identitygridhierarchiciterator.hh File Reference\n+The IdentityGridHierarchicIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 Iterator over all entities of a given codimension and level of a grid.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+ Iterator over the descendants of an entity.Mesh entities of codimension\n+ 0 (\"elements\") allow to visit all entities of codimension 0 obtained\n+\u00a0 through nested, hierarchic refinement of the entity. Iteration over\n+ this set of entities is provided by the HierarchicIterator, starting\n+ from a given entity. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The IdentityGridLevelIterator class.\n+The IdentityGridHierarchicIterator class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00731_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00731_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridleveliterator.hh Source File\n+dune-grid: identitygridhierarchiciterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,97 +74,99 @@\n \n \n
    \n
    \n-
    identitygridleveliterator.hh
    \n+
    identitygridhierarchiciterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITYGRIDLEVELITERATOR_HH
    \n-
    6#define DUNE_IDENTITYGRIDLEVELITERATOR_HH
    \n+
    5#ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH
    \n+
    6#define DUNE_IDENTITYGRIDHIERITERATOR_HH
    \n
    7
    \n-\n-
    9
    \n-
    14namespace Dune {
    \n-
    15
    \n-
    19 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n-
    \n-\n-
    21 {
    \n-
    22
    \n-
    23 typedef typename GridImp::HostGridType::Traits::template Codim<codim>::template Partition<pitype>::LevelIterator HostGridLevelIterator;
    \n-
    24
    \n-
    25 public:
    \n-
    26
    \n-
    27 constexpr static int codimension = codim;
    \n-
    28
    \n-
    29 typedef typename GridImp::template Codim<codim>::Entity Entity;
    \n+
    12namespace Dune {
    \n+
    13
    \n+
    14
    \n+
    15 //**********************************************************************
    \n+
    16 //
    \n+
    24 template<class GridImp>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 // Type of the corresponding HierarchicIterator in the host grid
    \n+
    29 typedef typename GridImp::HostGridType::template Codim<0>::Entity::HierarchicIterator HostGridHierarchicIterator;
    \n
    30
    \n-
    \n-
    32 explicit IdentityGridLevelIterator(const GridImp* identityGrid, int level)
    \n-
    33 : identityGrid_(identityGrid),
    \n-
    34 hostLevelIterator_(identityGrid->hostgrid_->levelGridView(level).template begin<codim,pitype>())
    \n-
    35 {}
    \n-
    \n+
    31 public:
    \n+
    32
    \n+
    33 constexpr static int codimension = 0;
    \n+
    34
    \n+
    35 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n
    36
    \n-
    37
    \n-
    \n-
    43 explicit IdentityGridLevelIterator(const GridImp* identityGrid, int level, [[maybe_unused]] bool endDummy)
    \n-
    44 : identityGrid_(identityGrid),
    \n-
    45 hostLevelIterator_(identityGrid->hostgrid_->levelGridView(level).template end<codim,pitype>())
    \n-
    46 {}
    \n-
    \n-
    47
    \n-
    48
    \n-
    \n-
    50 void increment() {
    \n-
    51 ++hostLevelIterator_;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    56 return Entity{{identityGrid_,*hostLevelIterator_}};
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-
    60 bool equals(const IdentityGridLevelIterator& i) const {
    \n-
    61 return hostLevelIterator_ == i.hostLevelIterator_;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    64 private:
    \n-
    65 const GridImp* identityGrid_;
    \n-
    66
    \n-
    67 HostGridLevelIterator hostLevelIterator_;
    \n-
    68 };
    \n+
    \n+
    38 explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const Entity& startEntity, int maxLevel) :
    \n+
    39 identityGrid_(identityGrid),
    \n+
    40 hostHierarchicIterator_(startEntity.impl().hostEntity_.hbegin(maxLevel))
    \n+
    41 {}
    \n+
    \n+
    42
    \n+
    43
    \n+
    \n+
    45 explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const Entity& startEntity, int maxLevel, [[maybe_unused]] bool endDummy) :
    \n+
    46 identityGrid_(identityGrid),
    \n+
    47 hostHierarchicIterator_(startEntity.impl().hostEntity_.hend(maxLevel))
    \n+
    48 {}
    \n+
    \n+
    49
    \n+
    50
    \n+
    \n+
    52 void increment()
    \n+
    53 {
    \n+
    54 ++hostHierarchicIterator_;
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    \n+\n+
    59 return Entity{{identityGrid_,*hostHierarchicIterator_}};
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+\n+
    64 return hostHierarchicIterator_ == i.hostHierarchicIterator_;
    \n+
    65 }
    \n
    \n+
    66
    \n+
    67 private:
    \n+
    68 const GridImp* identityGrid_;
    \n
    69
    \n-
    70
    \n-
    71} // namespace Dune
    \n-
    72
    \n-
    73#endif
    \n-\n-
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n+
    70 HostGridHierarchicIterator hostHierarchicIterator_;
    \n+
    71
    \n+
    72 };
    \n+
    \n+
    73
    \n+
    74
    \n+
    75} // end namespace Dune
    \n+
    76
    \n+
    77#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Iterator over all entities of a given codimension and level of a grid.
    Definition identitygridleveliterator.hh:21
    \n-
    void increment()
    prefix increment
    Definition identitygridleveliterator.hh:50
    \n-
    GridImp::template Codim< codim >::Entity Entity
    Definition identitygridleveliterator.hh:29
    \n-
    IdentityGridLevelIterator(const GridImp *identityGrid, int level)
    Constructor.
    Definition identitygridleveliterator.hh:32
    \n-
    IdentityGridLevelIterator(const GridImp *identityGrid, int level, bool endDummy)
    Constructor which create the end iterator.
    Definition identitygridleveliterator.hh:43
    \n-
    static constexpr int codimension
    Definition identitygridleveliterator.hh:27
    \n-
    bool equals(const IdentityGridLevelIterator &i) const
    equality
    Definition identitygridleveliterator.hh:60
    \n-
    Entity dereference() const
    dereferencing
    Definition identitygridleveliterator.hh:55
    \n+
    Iterator over the descendants of an entity.Mesh entities of codimension 0 ("elements") allow to visit...
    Definition identitygridhierarchiciterator.hh:26
    \n+
    void increment()
    Definition identitygridhierarchiciterator.hh:52
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition identitygridhierarchiciterator.hh:35
    \n+
    bool equals(const IdentityGridHierarchicIterator &i) const
    equality
    Definition identitygridhierarchiciterator.hh:63
    \n+
    static constexpr int codimension
    Definition identitygridhierarchiciterator.hh:33
    \n+
    IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity &startEntity, int maxLevel, bool endDummy)
    Definition identitygridhierarchiciterator.hh:45
    \n+
    Entity dereference() const
    dereferencing
    Definition identitygridhierarchiciterator.hh:58
    \n+
    IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity &startEntity, int maxLevel)
    the default Constructor
    Definition identitygridhierarchiciterator.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,112 +1,109 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridleveliterator.hh\n+identitygridhierarchiciterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITYGRIDLEVELITERATOR_HH\n-6#define DUNE_IDENTITYGRIDLEVELITERATOR_HH\n+5#ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH\n+6#define DUNE_IDENTITYGRIDHIERITERATOR_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-9\n-14namespace _\bD_\bu_\bn_\be {\n-15\n-19 template\n-_\b2_\b0 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-21 {\n-22\n-23 typedef typename GridImp::HostGridType::Traits::template Codim::\n-template Partition::LevelIterator HostGridLevelIterator;\n-24\n-25 public:\n-26\n-_\b2_\b7 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n-28\n-_\b2_\b9 typedef typename GridImp::template Codim::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+12namespace _\bD_\bu_\bn_\be {\n+13\n+14\n+15 //**********************************************************************\n+16 //\n+24 template\n+_\b2_\b5 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+26 {\n+27\n+28 // Type of the corresponding HierarchicIterator in the host grid\n+29 typedef typename GridImp::HostGridType::template Codim<0>::Entity::\n+HierarchicIterator HostGridHierarchicIterator;\n 30\n-_\b3_\b2 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, int level)\n-33 : identityGrid_(identityGrid),\n-34 hostLevelIterator_(identityGrid->hostgrid_->_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level).template\n-begin())\n-35 {}\n+31 public:\n+32\n+_\b3_\b3 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = 0;\n+34\n+_\b3_\b5 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n 36\n-37\n-_\b4_\b3 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, int level, [\n-[maybe_unused]] bool endDummy)\n-44 : identityGrid_(identityGrid),\n-45 hostLevelIterator_(identityGrid->hostgrid_->_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level).template\n-end())\n-46 {}\n-47\n-48\n-_\b5_\b0 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n-51 ++hostLevelIterator_;\n-52 }\n-53\n-_\b5_\b5 _\bE_\bn_\bt_\bi_\bt_\by _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n-56 return _\bE_\bn_\bt_\bi_\bt_\by{{identityGrid_,*hostLevelIterator_}};\n-57 }\n-58\n-_\b6_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const {\n-61 return hostLevelIterator_ == i.hostLevelIterator_;\n-62 }\n-63\n-64 private:\n-65 const GridImp* identityGrid_;\n+_\b3_\b8 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, const\n+_\bE_\bn_\bt_\bi_\bt_\by& startEntity, int maxLevel) :\n+39 identityGrid_(identityGrid),\n+40 hostHierarchicIterator_(startEntity.impl().hostEntity_.hbegin(maxLevel))\n+41 {}\n+42\n+43\n+_\b4_\b5 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, const\n+_\bE_\bn_\bt_\bi_\bt_\by& startEntity, int maxLevel, [[maybe_unused]] bool endDummy) :\n+46 identityGrid_(identityGrid),\n+47 hostHierarchicIterator_(startEntity.impl().hostEntity_.hend(maxLevel))\n+48 {}\n+49\n+50\n+_\b5_\b2 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt()\n+53 {\n+54 ++hostHierarchicIterator_;\n+55 }\n+56\n+_\b5_\b8 _\bE_\bn_\bt_\bi_\bt_\by _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n+59 return _\bE_\bn_\bt_\bi_\bt_\by{{identityGrid_,*hostHierarchicIterator_}};\n+60 }\n+61\n+_\b6_\b3 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const {\n+64 return hostHierarchicIterator_ == i.hostHierarchicIterator_;\n+65 }\n 66\n-67 HostGridLevelIterator hostLevelIterator_;\n-68 };\n+67 private:\n+68 const GridImp* identityGrid_;\n 69\n-70\n-71} // namespace Dune\n-72\n-73#endif\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid<\n-dim, dimworld, ct, GridFamily > &grid, int level)\n-level grid view for the given grid and level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:802\n+70 HostGridHierarchicIterator hostHierarchicIterator_;\n+71\n+72 };\n+73\n+74\n+75} // end namespace Dune\n+76\n+77#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over all entities of a given codimension and level of a grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over the descendants of an entity.Mesh entities of codimension 0\n+(\"elements\") allow to visit...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n void increment()\n-prefix increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IdentityGridLevelIterator(const GridImp *identityGrid, int level)\n-Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IdentityGridLevelIterator(const GridImp *identityGrid, int level, bool\n-endDummy)\n-Constructor which create the end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridLevelIterator &i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridHierarchicIterator &i) const\n equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity\n+&startEntity, int maxLevel, bool endDummy)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n Entity dereference() const\n dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:55\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity\n+&startEntity, int maxLevel)\n+the default Constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.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-grid-doc/doxygen/a00734.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00734.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridleafiterator.hh File Reference\n+dune-grid: identitygridintersections.hh File Reference\n \n \n \n \n \n \n \n@@ -72,38 +72,41 @@\n
  • dune
  • grid
  • identitygrid
  • \n
    \n
    \n
    \n \n-
    identitygridleafiterator.hh File Reference
    \n+
    identitygridintersections.hh File Reference
    \n
    \n
    \n \n-

    The IdentityGridLeafIterator class. \n+

    The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes. \n More...

    \n-
    #include <dune/grid/common/gridenums.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::IdentityGridLeafIterator< codim, pitype, GridImp >
     Iterator over all entities of a given codimension and level of a grid. More...
    class  Dune::IdentityGridLeafIntersection< GridImp >
     An intersection with a leaf neighbor elementMesh entities of codimension 0 (\"elements\") allow to visit all neighbors, where a neighbor is an entity of codimension 0 which has a common entity of codimension 1 These neighbors are accessed via a IntersectionIterator. This allows the implement non-matching meshes. The number of neighbors may be different from the number of an element! More...
     
    class  Dune::IdentityGridLevelIntersection< GridImp >
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The IdentityGridLeafIterator class.

    \n+

    The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,24 +2,32 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridleafiterator.hh File Reference\n-The IdentityGridLeafIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+identitygridintersections.hh File Reference\n+The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.\n+_\bM_\bo_\br_\be_\b._\b._\b.\n+#include \"_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\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:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 Iterator over all entities of a given codimension and level of a grid.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+ An intersection with a leaf neighbor elementMesh entities of\n+ codimension 0 (\"elements\") allow to visit all neighbors, where a\n+\u00a0 neighbor is an entity of codimension 0 which has a common entity of\n+ codimension 1 These neighbors are accessed via a _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.\n+ This allows the implement non-matching meshes. The number of neighbors\n+ may be different from the number of an element! _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The IdentityGridLeafIterator class.\n+The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00734_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00734_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridleafiterator.hh Source File\n+dune-grid: identitygridintersections.hh Source File\n \n \n \n \n \n \n \n@@ -74,100 +74,435 @@\n \n \n
    \n
    \n-
    identitygridleafiterator.hh
    \n+
    identitygridintersections.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITYGRIDLEAFITERATOR_HH
    \n-
    6#define DUNE_IDENTITYGRIDLEAFITERATOR_HH
    \n+
    5#ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH
    \n+
    6#define DUNE_IDENTITYGRID_INTERSECTIONS_HH
    \n
    7
    \n-\n-
    9
    \n-
    14namespace Dune {
    \n-
    15
    \n+\n+\n+
    10
    \n+
    15namespace Dune {
    \n
    16
    \n-
    20 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n-
    \n-\n-
    22 {
    \n-
    23 private:
    \n-
    24
    \n-
    25 // LevelIterator to the equivalent entity in the host grid
    \n-
    26 typedef typename GridImp::HostGridType::template Codim<codim>::template Partition<pitype>::LeafIterator HostGridLeafIterator;
    \n-
    27
    \n-
    28 public:
    \n-
    29
    \n-
    30 constexpr static int codimension = codim;
    \n-
    31
    \n-
    32 typedef typename GridImp::template Codim<codim>::Entity Entity;
    \n-
    33
    \n-
    \n-
    35 explicit IdentityGridLeafIterator(const GridImp* identityGrid) :
    \n-
    36 identityGrid_(identityGrid),
    \n-
    37 hostLeafIterator_(identityGrid->hostgrid_->leafGridView().template begin<codim,pitype>())
    \n-
    38 {}
    \n-
    \n-
    39
    \n-
    \n-
    44 explicit IdentityGridLeafIterator(const GridImp* identityGrid, [[maybe_unused]] bool endDummy) :
    \n-
    45 identityGrid_(identityGrid),
    \n-
    46 hostLeafIterator_(identityGrid->hostgrid_->leafGridView().template end<codim,pitype>())
    \n-
    47 {}
    \n-
    \n-
    48
    \n+
    17
    \n+
    18 // External forward declarations
    \n+
    19 template< class Grid >
    \n+
    20 struct HostGridAccess;
    \n+
    21
    \n+
    22
    \n+
    31 template<class GridImp>
    \n+
    \n+\n+
    33 {
    \n+
    34
    \n+
    35 friend class IdentityGridLeafIntersectionIterator<GridImp>;
    \n+
    36
    \n+
    37 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n+
    38
    \n+
    39 constexpr static int dim = GridImp::dimension;
    \n+
    40
    \n+
    41 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    42
    \n+
    43 // The type used to store coordinates
    \n+
    44 typedef typename GridImp::ctype ctype;
    \n+
    45
    \n+
    46 typedef typename GridImp::HostGridType::LeafGridView::Intersection HostLeafIntersection;
    \n+
    47
    \n+
    48 public:
    \n
    49
    \n-
    \n-
    51 void increment() {
    \n-
    52 ++hostLeafIterator_;
    \n-
    53 }
    \n-
    \n+
    50 typedef typename GridImp::template Codim<1>::Geometry Geometry;
    \n+
    51 typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
    \n+
    52 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n+
    53 typedef FieldVector<ctype, dimworld> NormalVector;
    \n
    54
    \n-
    \n-\n-
    57 return Entity{{identityGrid_,*hostLeafIterator_}};
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    61 bool equals(const IdentityGridLeafIterator& i) const {
    \n-
    62 return hostLeafIterator_ == i.hostLeafIterator_;
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    65 private:
    \n-
    66 const GridImp* identityGrid_;
    \n-
    67
    \n-
    68 HostGridLeafIterator hostLeafIterator_;
    \n+\n+
    57
    \n+
    \n+
    58 IdentityGridLeafIntersection(const GridImp* identityGrid,
    \n+
    59 const HostLeafIntersection& hostIntersection)
    \n+
    60 : identityGrid_(identityGrid)
    \n+
    61 , hostIntersection_(hostIntersection)
    \n+
    62 {}
    \n+
    \n+
    63
    \n+
    \n+
    64 IdentityGridLeafIntersection(const GridImp* identityGrid,
    \n+
    65 HostLeafIntersection&& hostIntersection)
    \n+
    66 : identityGrid_(identityGrid)
    \n+
    67 , hostIntersection_(std::move(hostIntersection))
    \n+
    68 {}
    \n+
    \n
    69
    \n-
    70 };
    \n+
    \n+
    70 bool equals(const IdentityGridLeafIntersection& other) const
    \n+
    71 {
    \n+
    72 return hostIntersection_ == other.hostIntersection_;
    \n+
    73 }
    \n
    \n-
    71
    \n-
    72
    \n-
    73} // namespace Dune
    \n
    74
    \n-
    75#endif
    \n-\n-
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n+
    \n+
    77 Entity inside() const {
    \n+
    78 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.inside());
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    81
    \n+
    \n+
    84 Entity outside() const {
    \n+
    85 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.outside());
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    88
    \n+
    \n+
    90 bool boundary () const {
    \n+
    91 return hostIntersection_.boundary();
    \n+
    92 }
    \n+
    \n+
    93
    \n+
    \n+\n+
    100 return hostIntersection_.centerUnitOuterNormal();
    \n+
    101 }
    \n+
    \n+
    102
    \n+
    \n+
    104 bool neighbor () const {
    \n+
    105 return hostIntersection_.neighbor();
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    \n+
    109 size_t boundarySegmentIndex() const {
    \n+
    110 return hostIntersection_.boundarySegmentIndex();
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    \n+
    114 bool conforming () const {
    \n+
    115 return hostIntersection_.conforming();
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+
    119 GeometryType type () const {
    \n+
    120 return hostIntersection_.type();
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    123
    \n+
    \n+\n+
    129 {
    \n+
    130 return LocalGeometry( hostIntersection_.geometryInInside() );
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    \n+\n+
    136 {
    \n+
    137 return LocalGeometry( hostIntersection_.geometryInOutside() );
    \n+
    138 }
    \n+
    \n+
    139
    \n+
    \n+\n+
    143 {
    \n+
    144 return Geometry( hostIntersection_.geometry() );
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    147
    \n+
    \n+
    149 int indexInInside () const {
    \n+
    150 return hostIntersection_.indexInInside();
    \n+
    151 }
    \n+
    \n+
    152
    \n+
    153
    \n+
    \n+
    155 int indexInOutside () const {
    \n+
    156 return hostIntersection_.indexInOutside();
    \n+
    157 }
    \n+
    \n+
    158
    \n+
    159
    \n+
    \n+
    161 FieldVector<ctype, GridImp::dimensionworld> outerNormal (const FieldVector<ctype, GridImp::dimension-1>& local) const {
    \n+
    162 return hostIntersection_.outerNormal(local);
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    \n+
    166 FieldVector<ctype, GridImp::dimensionworld> integrationOuterNormal (const FieldVector<ctype, GridImp::dimension-1>& local) const {
    \n+
    167 return hostIntersection_.integrationOuterNormal(local);
    \n+
    168 }
    \n+
    \n+
    169
    \n+
    \n+
    171 FieldVector<ctype, GridImp::dimensionworld> unitOuterNormal (const FieldVector<ctype, GridImp::dimension-1>& local) const {
    \n+
    172 return hostIntersection_.unitOuterNormal(local);
    \n+
    173 }
    \n+
    \n+
    174
    \n+
    175
    \n+
    176 private:
    \n+
    177 //**********************************************************
    \n+
    178 // private methods
    \n+
    179 //**********************************************************
    \n+
    180
    \n+
    181 const GridImp* identityGrid_;
    \n+
    182
    \n+
    183 HostLeafIntersection hostIntersection_;
    \n+
    184 };
    \n+
    \n+
    185
    \n+
    186
    \n+
    187
    \n+
    188
    \n+
    190 template<class GridImp>
    \n+
    \n+\n+
    192 {
    \n+
    193
    \n+
    194 friend class IdentityGridLevelIntersectionIterator<GridImp>;
    \n+
    195
    \n+
    196 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n+
    197
    \n+
    198 constexpr static int dim = GridImp::dimension;
    \n+
    199
    \n+
    200 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    201
    \n+
    202 // The type used to store coordinates
    \n+
    203 typedef typename GridImp::ctype ctype;
    \n+
    204
    \n+
    205 typedef typename GridImp::HostGridType::LevelGridView::Intersection HostLevelIntersection;
    \n+
    206
    \n+
    207 public:
    \n+
    208
    \n+
    209 typedef typename GridImp::template Codim<1>::Geometry Geometry;
    \n+
    210 typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
    \n+
    211 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n+
    212 typedef FieldVector<ctype, dimworld> NormalVector;
    \n+
    213
    \n+\n+
    216
    \n+
    \n+
    217 IdentityGridLevelIntersection(const GridImp* identityGrid,
    \n+
    218 const HostLevelIntersection& hostIntersection)
    \n+
    219 : identityGrid_(identityGrid)
    \n+
    220 , hostIntersection_(hostIntersection)
    \n+
    221 {}
    \n+
    \n+
    222
    \n+
    \n+
    223 IdentityGridLevelIntersection(const GridImp* identityGrid,
    \n+
    224 HostLevelIntersection&& hostIntersection)
    \n+
    225 : identityGrid_(identityGrid)
    \n+
    226 , hostIntersection_(std::move(hostIntersection))
    \n+
    227 {}
    \n+
    \n+
    228
    \n+
    \n+
    229 bool equals(const IdentityGridLevelIntersection& other) const
    \n+
    230 {
    \n+
    231 return hostIntersection_ == other.hostIntersection_;
    \n+
    232 }
    \n+
    \n+
    233
    \n+
    \n+
    236 Entity inside() const {
    \n+
    237 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.inside());
    \n+
    238 }
    \n+
    \n+
    239
    \n+
    240
    \n+
    \n+
    243 Entity outside() const {
    \n+
    244 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.outside());
    \n+
    245 }
    \n+
    \n+
    246
    \n+
    247
    \n+
    \n+
    250 bool boundary () const {
    \n+
    251 return hostIntersection_.boundary();
    \n+
    252 }
    \n+
    \n+
    253
    \n+
    \n+\n+
    260 return hostIntersection_.centerUnitOuterNormal();
    \n+
    261 }
    \n+
    \n+
    262
    \n+
    \n+
    264 bool neighbor () const {
    \n+
    265 return hostIntersection_.neighbor();
    \n+
    266 }
    \n+
    \n+
    267
    \n+
    \n+
    269 size_t boundarySegmentIndex() const {
    \n+
    270 return hostIntersection_.boundarySegmentIndex();
    \n+
    271 }
    \n+
    \n+
    272
    \n+
    \n+
    274 bool conforming () const {
    \n+
    275 return hostIntersection_.conforming();
    \n+
    276 }
    \n+
    \n+
    277
    \n+
    \n+
    279 GeometryType type () const {
    \n+
    280 return hostIntersection_.type();
    \n+
    281 }
    \n+
    \n+
    282
    \n+
    283
    \n+
    \n+\n+
    289 {
    \n+
    290 return LocalGeometry( hostIntersection_.geometryInInside() );
    \n+
    291 }
    \n+
    \n+
    292
    \n+
    \n+\n+
    296 {
    \n+
    297 return LocalGeometry( hostIntersection_.geometryInOutside() );
    \n+
    298 }
    \n+
    \n+
    299
    \n+
    \n+\n+
    303 {
    \n+
    304 return Geometry( hostIntersection_.geometry() );
    \n+
    305 }
    \n+
    \n+
    306
    \n+
    307
    \n+
    \n+
    309 int indexInInside () const {
    \n+
    310 return hostIntersection_.indexInInside();
    \n+
    311 }
    \n+
    \n+
    312
    \n+
    313
    \n+
    \n+
    315 int indexInOutside () const {
    \n+
    316 return hostIntersection_.indexInOutside();
    \n+
    317 }
    \n+
    \n+
    318
    \n+
    319
    \n+
    \n+
    321 FieldVector<ctype, dimworld> outerNormal (const FieldVector<ctype, dim-1>& local) const {
    \n+
    322 return hostIntersection_.outerNormal(local);
    \n+
    323 }
    \n+
    \n+
    324
    \n+
    \n+
    326 FieldVector<ctype, dimworld> integrationOuterNormal (const FieldVector<ctype, dim-1>& local) const {
    \n+
    327 return hostIntersection_.integrationOuterNormal(local);
    \n+
    328 }
    \n+
    \n+
    329
    \n+
    \n+
    331 FieldVector<ctype, dimworld> unitOuterNormal (const FieldVector<ctype, dim-1>& local) const {
    \n+
    332 return hostIntersection_.unitOuterNormal(local);
    \n+
    333 }
    \n+
    \n+
    334
    \n+
    335 private:
    \n+
    336
    \n+
    337 const GridImp* identityGrid_;
    \n+
    338
    \n+
    339 HostLevelIntersection hostIntersection_;
    \n+
    340
    \n+
    341 };
    \n+
    \n+
    342
    \n+
    343
    \n+
    344} // namespace Dune
    \n+
    345
    \n+
    346#endif
    \n+
    The IdentityGridEntity class.
    \n+
    The IdentityGridLeafIterator class.
    \n+
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Iterator over all entities of a given codimension and level of a grid.
    Definition identitygridleafiterator.hh:22
    \n-
    Entity dereference() const
    dereferencing
    Definition identitygridleafiterator.hh:56
    \n-
    bool equals(const IdentityGridLeafIterator &i) const
    equality
    Definition identitygridleafiterator.hh:61
    \n-
    IdentityGridLeafIterator(const GridImp *identityGrid, bool endDummy)
    Constructor which create the end iterator.
    Definition identitygridleafiterator.hh:44
    \n-
    static constexpr int codimension
    Definition identitygridleafiterator.hh:30
    \n-
    GridImp::template Codim< codim >::Entity Entity
    Definition identitygridleafiterator.hh:32
    \n-
    IdentityGridLeafIterator(const GridImp *identityGrid)
    Definition identitygridleafiterator.hh:35
    \n-
    void increment()
    prefix increment
    Definition identitygridleafiterator.hh:51
    \n+
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n+
    The implementation of entities in a IdentityGrid.
    Definition identitygridentity.hh:55
    \n+
    Definition identitygridintersectioniterator.hh:84
    \n+
    Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
    Definition identitygridintersectioniterator.hh:29
    \n+
    An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
    Definition identitygridintersections.hh:33
    \n+
    Entity inside() const
    Definition identitygridintersections.hh:77
    \n+
    IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection &&hostIntersection)
    Definition identitygridintersections.hh:64
    \n+
    NormalVector centerUnitOuterNormal() const
    Return unit outer normal (length == 1)
    Definition identitygridintersections.hh:99
    \n+
    GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
    Definition identitygridintersections.hh:51
    \n+
    Geometry geometry() const
    Definition identitygridintersections.hh:142
    \n+
    Entity outside() const
    Definition identitygridintersections.hh:84
    \n+
    LocalGeometry geometryInOutside() const
    Definition identitygridintersections.hh:135
    \n+
    bool boundary() const
    return true if intersection is with boundary.
    Definition identitygridintersections.hh:90
    \n+
    GeometryType type() const
    Geometry type of an intersection.
    Definition identitygridintersections.hh:119
    \n+
    FieldVector< ctype, dimworld > NormalVector
    Definition identitygridintersections.hh:53
    \n+
    LocalGeometry geometryInInside() const
    Definition identitygridintersections.hh:128
    \n+
    bool conforming() const
    Return true if this is a conforming intersection.
    Definition identitygridintersections.hh:114
    \n+
    IdentityGridLeafIntersection(const GridImp *identityGrid, const HostLeafIntersection &hostIntersection)
    Definition identitygridintersections.hh:58
    \n+
    size_t boundarySegmentIndex() const
    return the boundary segment index
    Definition identitygridintersections.hh:109
    \n+
    bool equals(const IdentityGridLeafIntersection &other) const
    Definition identitygridintersections.hh:70
    \n+
    FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
    return outer normal
    Definition identitygridintersections.hh:161
    \n+
    int indexInOutside() const
    local number of codim 1 entity in neighbor where intersection is contained
    Definition identitygridintersections.hh:155
    \n+
    FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
    return outer normal multiplied by the integration element
    Definition identitygridintersections.hh:166
    \n+
    bool neighbor() const
    return true if across the edge an neighbor on this level exists
    Definition identitygridintersections.hh:104
    \n+
    FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
    return unit outer normal
    Definition identitygridintersections.hh:171
    \n+
    int indexInInside() const
    local number of codim 1 entity in self where intersection is contained in
    Definition identitygridintersections.hh:149
    \n+
    GridImp::template Codim< 1 >::Geometry Geometry
    Definition identitygridintersections.hh:50
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition identitygridintersections.hh:52
    \n+
    Definition identitygridintersections.hh:192
    \n+
    Geometry geometry() const
    Definition identitygridintersections.hh:302
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition identitygridintersections.hh:211
    \n+
    IdentityGridLevelIntersection(const GridImp *identityGrid, const HostLevelIntersection &hostIntersection)
    Definition identitygridintersections.hh:217
    \n+
    GridImp::template Codim< 1 >::Geometry Geometry
    Definition identitygridintersections.hh:209
    \n+
    bool equals(const IdentityGridLevelIntersection &other) const
    Definition identitygridintersections.hh:229
    \n+
    bool neighbor() const
    return true if across the edge an neighbor on this level exists
    Definition identitygridintersections.hh:264
    \n+
    NormalVector centerUnitOuterNormal() const
    Return unit outer normal (length == 1)
    Definition identitygridintersections.hh:259
    \n+
    bool conforming() const
    Return true if this is a conforming intersection.
    Definition identitygridintersections.hh:274
    \n+
    int indexInInside() const
    local number of codim 1 entity in self where intersection is contained in
    Definition identitygridintersections.hh:309
    \n+
    FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &local) const
    return outer normal
    Definition identitygridintersections.hh:321
    \n+
    GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
    Definition identitygridintersections.hh:210
    \n+
    FieldVector< ctype, dimworld > NormalVector
    Definition identitygridintersections.hh:212
    \n+
    bool boundary() const
    return true if intersection is with boundary.
    Definition identitygridintersections.hh:250
    \n+
    FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
    return outer normal multiplied by the integration element
    Definition identitygridintersections.hh:326
    \n+
    LocalGeometry geometryInOutside() const
    Definition identitygridintersections.hh:295
    \n+
    LocalGeometry geometryInInside() const
    Definition identitygridintersections.hh:288
    \n+
    int indexInOutside() const
    local number of codim 1 entity in neighbor where intersection is contained
    Definition identitygridintersections.hh:315
    \n+
    FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &local) const
    return unit outer normal
    Definition identitygridintersections.hh:331
    \n+
    size_t boundarySegmentIndex() const
    return the boundary segment index
    Definition identitygridintersections.hh:269
    \n+
    Entity outside() const
    Definition identitygridintersections.hh:243
    \n+
    Entity inside() const
    Definition identitygridintersections.hh:236
    \n+
    GeometryType type() const
    Geometry type of an intersection.
    Definition identitygridintersections.hh:279
    \n+
    IdentityGridLevelIntersection(const GridImp *identityGrid, HostLevelIntersection &&hostIntersection)
    Definition identitygridintersections.hh:223
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,113 +1,500 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridleafiterator.hh\n+identitygridintersections.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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+_\b1// SPDX-FileCopyrightText: 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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITYGRIDLEAFITERATOR_HH\n-6#define DUNE_IDENTITYGRIDLEAFITERATOR_HH\n+5#ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH\n+6#define DUNE_IDENTITYGRID_INTERSECTIONS_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-9\n-14namespace _\bD_\bu_\bn_\be {\n-15\n+8#include \"_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh>\n+10\n+15namespace _\bD_\bu_\bn_\be {\n 16\n-20 template\n-_\b2_\b1 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-22 {\n-23 private:\n-24\n-25 // LevelIterator to the equivalent entity in the host grid\n-26 typedef typename GridImp::HostGridType::template Codim::template\n-Partition::LeafIterator HostGridLeafIterator;\n-27\n-28 public:\n-29\n-_\b3_\b0 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n-31\n-_\b3_\b2 typedef typename GridImp::template Codim::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-33\n-_\b3_\b5 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid) :\n-36 identityGrid_(identityGrid),\n-37 hostLeafIterator_(identityGrid->hostgrid_->_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw().template\n-begin())\n-38 {}\n-39\n-_\b4_\b4 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, [\n-[maybe_unused]] bool endDummy) :\n-45 identityGrid_(identityGrid),\n-46 hostLeafIterator_(identityGrid->hostgrid_->_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw().template\n-end())\n-47 {}\n-48\n+17\n+18 // External forward declarations\n+19 template< class Grid >\n+20 struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs;\n+21\n+22\n+31 template\n+_\b3_\b2 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+33 {\n+34\n+35 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+36\n+37 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be >;\n+38\n+39 constexpr static int dim = GridImp::dimension;\n+40\n+41 constexpr static int dimworld = GridImp::dimensionworld;\n+42\n+43 // The type used to store coordinates\n+44 typedef typename GridImp::ctype ctype;\n+45\n+46 typedef typename GridImp::HostGridType::LeafGridView::Intersection\n+HostLeafIntersection;\n+47\n+48 public:\n 49\n-_\b5_\b1 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n-52 ++hostLeafIterator_;\n-53 }\n+_\b5_\b0 typedef typename GridImp::template Codim<1>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b5_\b1 typedef typename GridImp::template Codim<1>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b5_\b2 typedef typename GridImp::template Codim<0>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b5_\b3 typedef FieldVector _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n 54\n-_\b5_\b6 _\bE_\bn_\bt_\bi_\bt_\by _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n-57 return _\bE_\bn_\bt_\bi_\bt_\by{{identityGrid_,*hostLeafIterator_}};\n-58 }\n-59\n-_\b6_\b1 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const {\n-62 return hostLeafIterator_ == i.hostLeafIterator_;\n-63 }\n-64\n-65 private:\n-66 const GridImp* identityGrid_;\n-67\n-68 HostGridLeafIterator hostLeafIterator_;\n+_\b5_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn()\n+56 {}\n+57\n+_\b5_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n+59 const HostLeafIntersection& hostIntersection)\n+60 : identityGrid_(identityGrid)\n+61 , hostIntersection_(hostIntersection)\n+62 {}\n+63\n+_\b6_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n+65 HostLeafIntersection&& hostIntersection)\n+66 : identityGrid_(identityGrid)\n+67 , hostIntersection_(_\bs_\bt_\bd::move(hostIntersection))\n+68 {}\n 69\n-70 };\n-71\n-72\n-73} // namespace Dune\n+_\b7_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& other) const\n+71 {\n+72 return hostIntersection_ == other.hostIntersection_;\n+73 }\n 74\n-75#endif\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n-dim, dimworld, ct, GridFamily > &grid)\n-leaf grid view for the given grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:819\n+_\b7_\b7 _\bE_\bn_\bt_\bi_\bt_\by _\bi_\bn_\bs_\bi_\bd_\be() const {\n+78 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n+(identityGrid_,hostIntersection_.inside());\n+79 }\n+80\n+81\n+_\b8_\b4 _\bE_\bn_\bt_\bi_\bt_\by _\bo_\bu_\bt_\bs_\bi_\bd_\be() const {\n+85 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n+(identityGrid_,hostIntersection_.outside());\n+86 }\n+87\n+88\n+_\b9_\b0 bool _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const {\n+91 return hostIntersection_.boundary();\n+92 }\n+93\n+_\b9_\b9 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const {\n+100 return hostIntersection_.centerUnitOuterNormal();\n+101 }\n+102\n+_\b1_\b0_\b4 bool _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const {\n+105 return hostIntersection_.neighbor();\n+106 }\n+107\n+_\b1_\b0_\b9 size_t _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() const {\n+110 return hostIntersection_.boundarySegmentIndex();\n+111 }\n+112\n+_\b1_\b1_\b4 bool _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg () const {\n+115 return hostIntersection_.conforming();\n+116 }\n+117\n+_\b1_\b1_\b9 GeometryType _\bt_\by_\bp_\be () const {\n+120 return hostIntersection_.type();\n+121 }\n+122\n+123\n+_\b1_\b2_\b8 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n+129 {\n+130 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInInside() );\n+131 }\n+132\n+_\b1_\b3_\b5 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n+136 {\n+137 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInOutside() );\n+138 }\n+139\n+_\b1_\b4_\b2 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+143 {\n+144 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometry() );\n+145 }\n+146\n+147\n+_\b1_\b4_\b9 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const {\n+150 return hostIntersection_.indexInInside();\n+151 }\n+152\n+153\n+_\b1_\b5_\b5 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const {\n+156 return hostIntersection_.indexInOutside();\n+157 }\n+158\n+159\n+_\b1_\b6_\b1 FieldVector _\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n+FieldVector& local) const {\n+162 return hostIntersection_.outerNormal(local);\n+163 }\n+164\n+_\b1_\b6_\b6 FieldVector _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n+FieldVector& local) const {\n+167 return hostIntersection_.integrationOuterNormal(local);\n+168 }\n+169\n+_\b1_\b7_\b1 FieldVector _\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n+FieldVector& local) const {\n+172 return hostIntersection_.unitOuterNormal(local);\n+173 }\n+174\n+175\n+176 private:\n+177 //**********************************************************\n+178 // private methods\n+179 //**********************************************************\n+180\n+181 const GridImp* identityGrid_;\n+182\n+_\b1_\b8_\b3 HostLeafIntersection hostIntersection_;\n+184 };\n+185\n+186\n+187\n+188\n+190 template\n+_\b1_\b9_\b1 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+192 {\n+193\n+194 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+195\n+196 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be\n+>;\n+197\n+198 constexpr static int dim = GridImp::dimension;\n+199\n+200 constexpr static int dimworld = GridImp::dimensionworld;\n+201\n+202 // The type used to store coordinates\n+203 typedef typename GridImp::ctype ctype;\n+204\n+205 typedef typename GridImp::HostGridType::LevelGridView::Intersection\n+HostLevelIntersection;\n+206\n+207 public:\n+208\n+_\b2_\b0_\b9 typedef typename GridImp::template Codim<1>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b2_\b1_\b0 typedef typename GridImp::template Codim<1>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b2_\b1_\b1 typedef typename GridImp::template Codim<0>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b2_\b1_\b2 typedef FieldVector _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n+213\n+_\b2_\b1_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn()\n+215 {}\n+216\n+_\b2_\b1_\b7 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n+218 const HostLevelIntersection& hostIntersection)\n+219 : identityGrid_(identityGrid)\n+220 , hostIntersection_(hostIntersection)\n+221 {}\n+222\n+_\b2_\b2_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n+224 HostLevelIntersection&& hostIntersection)\n+225 : identityGrid_(identityGrid)\n+226 , hostIntersection_(_\bs_\bt_\bd::move(hostIntersection))\n+227 {}\n+228\n+_\b2_\b2_\b9 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& other) const\n+230 {\n+231 return hostIntersection_ == other.hostIntersection_;\n+232 }\n+233\n+_\b2_\b3_\b6 _\bE_\bn_\bt_\bi_\bt_\by _\bi_\bn_\bs_\bi_\bd_\be() const {\n+237 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n+(identityGrid_,hostIntersection_.inside());\n+238 }\n+239\n+240\n+_\b2_\b4_\b3 _\bE_\bn_\bt_\bi_\bt_\by _\bo_\bu_\bt_\bs_\bi_\bd_\be() const {\n+244 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n+(identityGrid_,hostIntersection_.outside());\n+245 }\n+246\n+247\n+_\b2_\b5_\b0 bool _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const {\n+251 return hostIntersection_.boundary();\n+252 }\n+253\n+_\b2_\b5_\b9 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const {\n+260 return hostIntersection_.centerUnitOuterNormal();\n+261 }\n+262\n+_\b2_\b6_\b4 bool _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const {\n+265 return hostIntersection_.neighbor();\n+266 }\n+267\n+_\b2_\b6_\b9 size_t _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() const {\n+270 return hostIntersection_.boundarySegmentIndex();\n+271 }\n+272\n+_\b2_\b7_\b4 bool _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg () const {\n+275 return hostIntersection_.conforming();\n+276 }\n+277\n+_\b2_\b7_\b9 GeometryType _\bt_\by_\bp_\be () const {\n+280 return hostIntersection_.type();\n+281 }\n+282\n+283\n+_\b2_\b8_\b8 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n+289 {\n+290 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInInside() );\n+291 }\n+292\n+_\b2_\b9_\b5 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n+296 {\n+297 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInOutside() );\n+298 }\n+299\n+_\b3_\b0_\b2 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+303 {\n+304 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometry() );\n+305 }\n+306\n+307\n+_\b3_\b0_\b9 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const {\n+310 return hostIntersection_.indexInInside();\n+311 }\n+312\n+313\n+_\b3_\b1_\b5 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const {\n+316 return hostIntersection_.indexInOutside();\n+317 }\n+318\n+319\n+_\b3_\b2_\b1 FieldVector _\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector&\n+local) const {\n+322 return hostIntersection_.outerNormal(local);\n+323 }\n+324\n+_\b3_\b2_\b6 FieldVector _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n+FieldVector& local) const {\n+327 return hostIntersection_.integrationOuterNormal(local);\n+328 }\n+329\n+_\b3_\b3_\b1 FieldVector _\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector& local) const {\n+332 return hostIntersection_.unitOuterNormal(local);\n+333 }\n+334\n+335 private:\n+336\n+337 const GridImp* identityGrid_;\n+338\n+339 HostLevelIntersection hostIntersection_;\n+340\n+341 };\n+342\n+343\n+344} // namespace Dune\n+345\n+346#endif\n+_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n+The IdentityGridEntity class.\n+_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+The IdentityGridLeafIterator class.\n+_\bs_\bt_\bd\n+STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over all entities of a given codimension and level of a grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Entity dereference() const\n-dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridLeafIterator &i) const\n-equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IdentityGridLeafIterator(const GridImp *identityGrid, bool endDummy)\n-Constructor which create the end iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< codim >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IdentityGridLeafIterator(const GridImp *identityGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-prefix increment\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n+provides access to host grid objects from GeometryGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+The implementation of entities in a IdentityGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over all element neighborsMesh entities of codimension 0 (\"elements\")\n+allow to visit all nei...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+An intersection with a leaf neighbor elementMesh entities of codimension 0\n+(\"elements\") allow to visi...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+Entity inside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection\n+&&hostIntersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector centerUnitOuterNormal() const\n+Return unit outer normal (length == 1)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 1 >::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n+Entity outside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+LocalGeometry geometryInOutside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool boundary() const\n+return true if intersection is with boundary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+Geometry type of an intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimworld > NormalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+LocalGeometry geometryInInside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+bool conforming() const\n+Return true if this is a conforming intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+IdentityGridLeafIntersection(const GridImp *identityGrid, const\n+HostLeafIntersection &hostIntersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+size_t boundarySegmentIndex() const\n+return the boundary segment index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridLeafIntersection &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector<\n+ctype, GridImp::dimension-1 > &local) const\n+return outer normal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:161\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+int indexInOutside() const\n+local number of codim 1 entity in neighbor where intersection is contained\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const\n+FieldVector< ctype, GridImp::dimension-1 > &local) const\n+return outer normal multiplied by the integration element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+bool neighbor() const\n+return true if across the edge an neighbor on this level exists\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const\n+FieldVector< ctype, GridImp::dimension-1 > &local) const\n+return unit outer normal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+local number of codim 1 entity in self where intersection is contained in\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 1 >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:192\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:302\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+IdentityGridLevelIntersection(const GridImp *identityGrid, const\n+HostLevelIntersection &hostIntersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:217\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 1 >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridLevelIntersection &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:229\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n+bool neighbor() const\n+return true if across the edge an neighbor on this level exists\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+NormalVector centerUnitOuterNormal() const\n+Return unit outer normal (length == 1)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:259\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+bool conforming() const\n+Return true if this is a conforming intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+local number of codim 1 entity in self where intersection is contained in\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:309\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 >\n+&local) const\n+return outer normal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:321\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 1 >::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< ctype, dimworld > NormalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:212\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool boundary() const\n+return true if intersection is with boundary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype,\n+dim-1 > &local) const\n+return outer normal multiplied by the integration element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+LocalGeometry geometryInOutside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:295\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+LocalGeometry geometryInInside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:288\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n+int indexInOutside() const\n+local number of codim 1 entity in neighbor where intersection is contained\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:315\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-\n+1 > &local) const\n+return unit outer normal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:331\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+size_t boundarySegmentIndex() const\n+return the boundary segment index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:269\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n+Entity outside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+Entity inside() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+Geometry type of an intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:279\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+IdentityGridLevelIntersection(const GridImp *identityGrid,\n+HostLevelIntersection &&hostIntersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:223\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00737.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00737.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridhierarchiciterator.hh File Reference\n+dune-grid: identitygridentity.hh File Reference\n \n \n \n \n \n \n \n@@ -72,37 +72,41 @@\n
  • dune
  • grid
  • identitygrid
  • \n
    \n
    \n
    \n \n-
    identitygridhierarchiciterator.hh File Reference
    \n+
    identitygridentity.hh File Reference
    \n
    \n
    \n \n-

    The IdentityGridHierarchicIterator class. \n+

    The IdentityGridEntity class. \n More...

    \n-\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::IdentityGridHierarchicIterator< GridImp >
     Iterator over the descendants of an entity.Mesh entities of codimension 0 (\"elements\") allow to visit all entities of codimension 0 obtained through nested, hierarchic refinement of the entity. Iteration over this set of entities is provided by the HierarchicIterator, starting from a given entity. More...
    class  Dune::IdentityGridEntity< codim, dim, GridImp >
     The implementation of entities in a IdentityGrid. More...
     
    class  Dune::IdentityGridEntity< 0, dim, GridImp >
     Specialization for codim-0-entities. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The IdentityGridHierarchicIterator class.

    \n+

    The IdentityGridEntity class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridhierarchiciterator.hh File Reference\n-The IdentityGridHierarchicIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n+identitygridentity.hh File Reference\n+The IdentityGridEntity class. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\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:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n- Iterator over the descendants of an entity.Mesh entities of codimension\n- 0 (\"elements\") allow to visit all entities of codimension 0 obtained\n-\u00a0 through nested, hierarchic refinement of the entity. Iteration over\n- this set of entities is provided by the HierarchicIterator, starting\n- from a given entity. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 The implementation of entities in a _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 Specialization for codim-0-entities. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The IdentityGridHierarchicIterator class.\n+The IdentityGridEntity class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00737_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00737_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridhierarchiciterator.hh Source File\n+dune-grid: identitygridentity.hh Source File\n \n \n \n \n \n \n \n@@ -74,99 +74,542 @@\n \n \n
    \n
    \n-
    identitygridhierarchiciterator.hh
    \n+
    identitygridentity.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH
    \n-
    6#define DUNE_IDENTITYGRIDHIERITERATOR_HH
    \n+
    5#ifndef DUNE_IDENTITYGRIDENTITY_HH
    \n+
    6#define DUNE_IDENTITYGRIDENTITY_HH
    \n
    7
    \n-
    12namespace Dune {
    \n+\n
    13
    \n-
    14
    \n-
    15 //**********************************************************************
    \n-
    16 //
    \n-
    24 template<class GridImp>
    \n-
    \n-\n-
    26 {
    \n+
    14namespace Dune {
    \n+
    15
    \n+
    16
    \n+
    17 // Forward declarations
    \n+
    18
    \n+
    19 template<int codim, int dim, class GridImp>
    \n+
    20 class IdentityGridEntity;
    \n+
    21
    \n+
    22 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n+
    23 class IdentityGridLevelIterator;
    \n+
    24
    \n+
    25 template<class GridImp>
    \n+
    26 class IdentityGridLevelIntersectionIterator;
    \n
    27
    \n-
    28 // Type of the corresponding HierarchicIterator in the host grid
    \n-
    29 typedef typename GridImp::HostGridType::template Codim<0>::Entity::HierarchicIterator HostGridHierarchicIterator;
    \n+
    28 template<class GridImp>
    \n+
    29 class IdentityGridLeafIntersectionIterator;
    \n
    30
    \n-
    31 public:
    \n-
    32
    \n-
    33 constexpr static int codimension = 0;
    \n+
    31 template<class GridImp>
    \n+
    32 class IdentityGridHierarchicIterator;
    \n+
    33
    \n
    34
    \n-
    35 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    36
    \n-
    \n-
    38 explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const Entity& startEntity, int maxLevel) :
    \n-
    39 identityGrid_(identityGrid),
    \n-
    40 hostHierarchicIterator_(startEntity.impl().hostEntity_.hbegin(maxLevel))
    \n-
    41 {}
    \n-
    \n-
    42
    \n-
    43
    \n-
    \n-
    45 explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const Entity& startEntity, int maxLevel, [[maybe_unused]] bool endDummy) :
    \n-
    46 identityGrid_(identityGrid),
    \n-
    47 hostHierarchicIterator_(startEntity.impl().hostEntity_.hend(maxLevel))
    \n-
    48 {}
    \n-
    \n-
    49
    \n-
    50
    \n-
    \n-
    52 void increment()
    \n-
    53 {
    \n-
    54 ++hostHierarchicIterator_;
    \n-
    55 }
    \n-
    \n+
    35 // External forward declarations
    \n+
    36 template< class Grid >
    \n+
    37 struct HostGridAccess;
    \n+
    38
    \n+
    39
    \n+
    40 //**********************************************************************
    \n+
    41 //
    \n+
    42 // --IdentityGridEntity
    \n+
    43 // --Entity
    \n+
    44 //
    \n+
    52 template<int codim, int dim, class GridImp>
    \n+
    \n+\n+
    54 public EntityDefaultImplementation <codim,dim,GridImp,IdentityGridEntity>
    \n+
    55 {
    \n
    56
    \n-
    \n-\n-
    59 return Entity{{identityGrid_,*hostHierarchicIterator_}};
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-\n-
    64 return hostHierarchicIterator_ == i.hostHierarchicIterator_;
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67 private:
    \n-
    68 const GridImp* identityGrid_;
    \n-
    69
    \n-
    70 HostGridHierarchicIterator hostHierarchicIterator_;
    \n+
    57 template <class GridImp_>
    \n+\n+
    59
    \n+
    60 template <class GridImp_>
    \n+\n+
    62
    \n+
    63 template <class GridImp_>
    \n+\n+
    65
    \n+
    66 template <class GridImp_>
    \n+\n+
    68
    \n+
    69 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n+
    70
    \n
    71
    \n-
    72 };
    \n-
    \n+
    72 private:
    \n
    73
    \n-
    74
    \n-
    75} // end namespace Dune
    \n-
    76
    \n-
    77#endif
    \n+
    74 typedef typename GridImp::ctype ctype;
    \n+
    75
    \n+
    76 // The codimension of this entity wrt the host grid
    \n+
    77 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim;
    \n+
    78
    \n+
    79 // equivalent entity in the host grid
    \n+
    80 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::Entity HostGridEntity;
    \n+
    81
    \n+
    82
    \n+
    83 public:
    \n+
    84
    \n+
    85 typedef typename GridImp::template Codim<codim>::Geometry Geometry;
    \n+
    86
    \n+
    88 typedef typename GridImp::template Codim<codim>::EntitySeed EntitySeed;
    \n+
    89
    \n+
    \n+\n+
    91 : identityGrid_(nullptr)
    \n+
    92 {}
    \n+
    \n+
    93
    \n+
    \n+
    94 IdentityGridEntity(const GridImp* identityGrid, const HostGridEntity& hostEntity)
    \n+
    95 : hostEntity_(hostEntity)
    \n+
    96 , identityGrid_(identityGrid)
    \n+
    97 {}
    \n+
    \n+
    98
    \n+
    \n+
    99 IdentityGridEntity(const GridImp* identityGrid, HostGridEntity&& hostEntity)
    \n+
    100 : hostEntity_(std::move(hostEntity))
    \n+
    101 , identityGrid_(identityGrid)
    \n+
    102 {}
    \n+
    \n+
    103
    \n+
    \n+\n+
    106 : hostEntity_(original.hostEntity_)
    \n+
    107 , identityGrid_(original.identityGrid_)
    \n+
    108 {}
    \n+
    \n+
    109
    \n+
    \n+\n+
    111 : hostEntity_(std::move(original.hostEntity_))
    \n+
    112 , identityGrid_(original.identityGrid_)
    \n+
    113 {}
    \n+
    \n+
    114
    \n+
    \n+\n+
    117 {
    \n+
    118 if (this != &original)
    \n+
    119 {
    \n+
    120 identityGrid_ = original.identityGrid_;
    \n+
    121 hostEntity_ = original.hostEntity_;
    \n+
    122 }
    \n+
    123 return *this;
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    \n+\n+
    128 {
    \n+
    129 if (this != &original)
    \n+
    130 {
    \n+
    131 identityGrid_ = original.identityGrid_;
    \n+
    132 hostEntity_ = std::move(original.hostEntity_);
    \n+
    133 }
    \n+
    134 return *this;
    \n+
    135 }
    \n+
    \n+
    136
    \n+
    \n+
    137 bool equals(const IdentityGridEntity& other) const
    \n+
    138 {
    \n+
    139 return hostEntity_ == other.hostEntity_;
    \n+
    140 }
    \n+
    \n+
    141
    \n+
    \n+
    143 bool hasFather () const {
    \n+
    144 return hostEntity_.hasFather();
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    \n+\n+
    149 {
    \n+
    150 return EntitySeed(hostEntity_);
    \n+
    151 }
    \n+
    \n+
    152
    \n+
    \n+
    154 int level () const {
    \n+
    155 return hostEntity_.level();
    \n+
    156 }
    \n+
    \n+
    157
    \n+
    158
    \n+
    \n+\n+
    162 return hostEntity_.partitionType();
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    \n+
    167 unsigned int subEntities (unsigned int cc) const
    \n+
    168 {
    \n+
    169 return hostEntity_.subEntities(cc);
    \n+
    170 }
    \n+
    \n+
    171
    \n+
    \n+\n+
    174 {
    \n+
    175 return Geometry( hostEntity_.geometry() );
    \n+
    176 }
    \n+
    \n+
    177
    \n+
    178
    \n+
    179 HostGridEntity hostEntity_;
    \n+
    180
    \n+
    181 private:
    \n+
    182
    \n+
    183 const GridImp* identityGrid_;
    \n+
    184
    \n+
    185 };
    \n+
    \n+
    186
    \n+
    187
    \n+
    188
    \n+
    189
    \n+
    190 //***********************
    \n+
    191 //
    \n+
    192 // --IdentityGridEntity
    \n+
    193 //
    \n+
    194 //***********************
    \n+
    202 template<int dim, class GridImp>
    \n+
    \n+
    203 class IdentityGridEntity<0,dim,GridImp> :
    \n+
    204 public EntityDefaultImplementation<0,dim,GridImp, IdentityGridEntity>
    \n+
    205 {
    \n+
    206 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n+
    207
    \n+
    208 public:
    \n+
    209
    \n+
    210 // The codimension of this entitypointer wrt the host grid
    \n+
    211 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension;
    \n+
    212
    \n+
    213 // equivalent entity in the host grid
    \n+
    214 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::Entity HostGridEntity;
    \n+
    215
    \n+
    216 typedef typename GridImp::template Codim<0>::Geometry Geometry;
    \n+
    217
    \n+
    218 typedef typename GridImp::template Codim<0>::LocalGeometry LocalGeometry;
    \n+
    219
    \n+\n+
    222
    \n+\n+
    225
    \n+\n+
    228
    \n+
    230 typedef typename GridImp::template Codim<0>::EntitySeed EntitySeed;
    \n+
    231
    \n+
    232
    \n+
    233
    \n+
    \n+\n+
    235 : identityGrid_(nullptr)
    \n+
    236 {}
    \n+
    \n+
    237
    \n+
    \n+
    238 IdentityGridEntity(const GridImp* identityGrid, const HostGridEntity& hostEntity)
    \n+
    239 : hostEntity_(hostEntity)
    \n+
    240 , identityGrid_(identityGrid)
    \n+
    241 {}
    \n+
    \n+
    242
    \n+
    \n+
    243 IdentityGridEntity(const GridImp* identityGrid, HostGridEntity&& hostEntity)
    \n+
    244 : hostEntity_(std::move(hostEntity))
    \n+
    245 , identityGrid_(identityGrid)
    \n+
    246 {}
    \n+
    \n+
    247
    \n+
    \n+\n+
    250 : hostEntity_(original.hostEntity_)
    \n+
    251 , identityGrid_(original.identityGrid_)
    \n+
    252 {}
    \n+
    \n+
    253
    \n+
    \n+\n+
    255 : hostEntity_(std::move(original.hostEntity_))
    \n+
    256 , identityGrid_(original.identityGrid_)
    \n+
    257 {}
    \n+
    \n+
    258
    \n+
    \n+\n+
    261 {
    \n+
    262 if (this != &original)
    \n+
    263 {
    \n+
    264 identityGrid_ = original.identityGrid_;
    \n+
    265 hostEntity_ = original.hostEntity_;
    \n+
    266 }
    \n+
    267 return *this;
    \n+
    268 }
    \n+
    \n+
    269
    \n+
    \n+\n+
    272 {
    \n+
    273 if (this != &original)
    \n+
    274 {
    \n+
    275 identityGrid_ = original.identityGrid_;
    \n+
    276 hostEntity_ = std::move(original.hostEntity_);
    \n+
    277 }
    \n+
    278 return *this;
    \n+
    279 }
    \n+
    \n+
    280
    \n+
    \n+
    281 bool equals(const IdentityGridEntity& other) const
    \n+
    282 {
    \n+
    283 return hostEntity_ == other.hostEntity_;
    \n+
    284 }
    \n+
    \n+
    285
    \n+
    \n+
    287 bool hasFather () const {
    \n+
    288 return hostEntity_.hasFather();
    \n+
    289 }
    \n+
    \n+
    290
    \n+
    \n+\n+
    293 {
    \n+
    294 return EntitySeed(hostEntity_);
    \n+
    295 }
    \n+
    \n+
    296
    \n+
    \n+
    298 int level () const
    \n+
    299 {
    \n+
    300 return hostEntity_.level();
    \n+
    301 }
    \n+
    \n+
    302
    \n+
    303
    \n+
    \n+\n+
    306 return hostEntity_.partitionType();
    \n+
    307 }
    \n+
    \n+
    308
    \n+
    309
    \n+
    \n+\n+
    312 {
    \n+
    313 return Geometry( hostEntity_.geometry() );
    \n+
    314 }
    \n+
    \n+
    315
    \n+
    316
    \n+
    \n+
    319 unsigned int subEntities (unsigned int codim) const
    \n+
    320 {
    \n+
    321 return hostEntity_.subEntities(codim);
    \n+
    322 }
    \n+
    \n+
    323
    \n+
    324
    \n+
    328 template<int cc>
    \n+
    \n+
    329 typename GridImp::template Codim<cc>::Entity subEntity (int i) const {
    \n+
    330 return IdentityGridEntity<cc,dim,GridImp>(identityGrid_, hostEntity_.template subEntity<cc>(i));
    \n+
    331 }
    \n+
    \n+
    332
    \n+
    333
    \n+
    \n+\n+\n+
    337 identityGrid_,
    \n+
    338 identityGrid_->getHostGrid().levelGridView(level()).ibegin(hostEntity_));
    \n+
    339 }
    \n+
    \n+
    340
    \n+
    341
    \n+
    \n+\n+\n+
    345 identityGrid_,
    \n+
    346 identityGrid_->getHostGrid().levelGridView(level()).iend(hostEntity_));
    \n+
    347 }
    \n+
    \n+
    348
    \n+
    349
    \n+
    \n+\n+\n+
    353 identityGrid_,
    \n+
    354 identityGrid_->getHostGrid().leafGridView().ibegin(hostEntity_));
    \n+
    355 }
    \n+
    \n+
    356
    \n+
    357
    \n+
    \n+\n+\n+
    361 identityGrid_,
    \n+
    362 identityGrid_->getHostGrid().leafGridView().iend(hostEntity_));
    \n+
    363 }
    \n+
    \n+
    364
    \n+
    365
    \n+
    \n+
    367 bool isLeaf() const {
    \n+
    368 return hostEntity_.isLeaf();
    \n+
    369 }
    \n+
    \n+
    370
    \n+
    371
    \n+
    \n+
    374 typename GridImp::template Codim<0>::Entity father () const {
    \n+
    375 return IdentityGridEntity(identityGrid_, hostEntity_.father());
    \n+
    376 }
    \n+
    \n+
    377
    \n+
    378
    \n+
    \n+\n+
    389 {
    \n+
    390 return LocalGeometry( hostEntity_.geometryInFather() );
    \n+
    391 }
    \n+
    \n+
    392
    \n+
    393
    \n+
    \n+\n+
    399 {
    \n+
    400 return IdentityGridHierarchicIterator<const GridImp>(identityGrid_, *this, maxLevel);
    \n+
    401 }
    \n+
    \n+
    402
    \n+
    403
    \n+
    \n+\n+
    406 {
    \n+
    407 return IdentityGridHierarchicIterator<const GridImp>(identityGrid_, *this, maxLevel, true);
    \n+
    408 }
    \n+
    \n+
    409
    \n+
    410
    \n+
    \n+
    412 bool wasRefined () const
    \n+
    413 {
    \n+
    414 if (identityGrid_->adaptationStep!=GridImp::adaptDone)
    \n+
    415 return false;
    \n+
    416
    \n+
    417 int level = this->level();
    \n+
    418 int index = identityGrid_->levelIndexSet(level).index(*this);
    \n+
    419 return identityGrid_->refinementMark_[level][index];
    \n+
    420 }
    \n+
    \n+
    421
    \n+
    422
    \n+
    \n+
    424 bool mightBeCoarsened () const
    \n+
    425 {
    \n+
    426 return true;
    \n+
    427 }
    \n+
    \n+
    428
    \n+
    429
    \n+
    430 // /////////////////////////////////////////
    \n+
    431 // Internal stuff
    \n+
    432 // /////////////////////////////////////////
    \n+
    433
    \n+
    434
    \n+\n+
    436 const GridImp* identityGrid_;
    \n+
    437
    \n+
    438 private:
    \n+
    439
    \n+
    440 typedef typename GridImp::ctype ctype;
    \n+
    441
    \n+
    442 }; // end of IdentityGridEntity codim = 0
    \n+
    \n+
    443
    \n+
    444
    \n+
    445} // namespace Dune
    \n+
    446
    \n+
    447
    \n+
    448#endif
    \n+
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n+
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n+
    Default Implementations for EntityImp.
    Definition common/entity.hh:542
    \n+
    GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition common/entity.hh:576
    \n+
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n+
    The implementation of entities in a IdentityGrid.
    Definition identitygridentity.hh:55
    \n+
    IdentityGridEntity()
    Definition identitygridentity.hh:90
    \n+
    IdentityGridEntity & operator=(IdentityGridEntity &&original)
    Definition identitygridentity.hh:127
    \n+
    IdentityGridEntity(IdentityGridEntity &&original)
    Definition identitygridentity.hh:110
    \n+
    bool equals(const IdentityGridEntity &other) const
    Definition identitygridentity.hh:137
    \n+
    HostGridEntity hostEntity_
    Definition identitygridentity.hh:179
    \n+
    GridImp::template Codim< codim >::EntitySeed EntitySeed
    The type of the EntitySeed interface class.
    Definition identitygridentity.hh:88
    \n+
    EntitySeed seed() const
    Create EntitySeed.
    Definition identitygridentity.hh:148
    \n+
    IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity &hostEntity)
    Definition identitygridentity.hh:94
    \n+
    Geometry geometry() const
    geometry of this entity
    Definition identitygridentity.hh:173
    \n+
    PartitionType partitionType() const
    The partition type for parallel computing.
    Definition identitygridentity.hh:161
    \n+
    unsigned int subEntities(unsigned int cc) const
    Return the number of subEntities of codimension codim.
    Definition identitygridentity.hh:167
    \n+
    IdentityGridEntity(const IdentityGridEntity &original)
    Definition identitygridentity.hh:105
    \n+
    IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)
    Definition identitygridentity.hh:99
    \n+
    bool hasFather() const
    returns true if father entity exists
    Definition identitygridentity.hh:143
    \n+
    GridImp::template Codim< codim >::Geometry Geometry
    Definition identitygridentity.hh:85
    \n+
    IdentityGridEntity & operator=(const IdentityGridEntity &original)
    Definition identitygridentity.hh:116
    \n+
    int level() const
    level of this element
    Definition identitygridentity.hh:154
    \n+
    Definition identitygridintersectioniterator.hh:84
    \n+
    Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
    Definition identitygridintersectioniterator.hh:29
    \n
    Iterator over the descendants of an entity.Mesh entities of codimension 0 ("elements") allow to visit...
    Definition identitygridhierarchiciterator.hh:26
    \n-
    void increment()
    Definition identitygridhierarchiciterator.hh:52
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition identitygridhierarchiciterator.hh:35
    \n-
    bool equals(const IdentityGridHierarchicIterator &i) const
    equality
    Definition identitygridhierarchiciterator.hh:63
    \n-
    static constexpr int codimension
    Definition identitygridhierarchiciterator.hh:33
    \n-
    IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity &startEntity, int maxLevel, bool endDummy)
    Definition identitygridhierarchiciterator.hh:45
    \n-
    Entity dereference() const
    dereferencing
    Definition identitygridhierarchiciterator.hh:58
    \n-
    IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity &startEntity, int maxLevel)
    the default Constructor
    Definition identitygridhierarchiciterator.hh:38
    \n+
    unsigned int subEntities(unsigned int codim) const
    Return the number of subEntities of codimension codim.
    Definition identitygridentity.hh:319
    \n+
    IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)
    Definition identitygridentity.hh:243
    \n+
    bool isLeaf() const
    returns true if Entity has NO children
    Definition identitygridentity.hh:367
    \n+
    IdentityGridHierarchicIterator< GridImp > hbegin(int maxLevel) const
    Inter-level access to son elements on higher levels<=maxlevel. This is provided for sparsely stored n...
    Definition identitygridentity.hh:398
    \n+
    GridImp::template Codim< 0 >::LocalGeometry LocalGeometry
    Definition identitygridentity.hh:218
    \n+
    GridImp::template Codim< 0 >::EntitySeed EntitySeed
    The type of the EntitySeed interface class.
    Definition identitygridentity.hh:230
    \n+
    EntitySeed seed() const
    Create EntitySeed.
    Definition identitygridentity.hh:292
    \n+
    IdentityGridLevelIntersectionIterator< GridImp > ilevelbegin() const
    First level intersection.
    Definition identitygridentity.hh:335
    \n+
    IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity &hostEntity)
    Definition identitygridentity.hh:238
    \n+
    int level() const
    Level of this element.
    Definition identitygridentity.hh:298
    \n+
    IdentityGridLeafIntersectionIterator< GridImp > ileafbegin() const
    First leaf intersection.
    Definition identitygridentity.hh:351
    \n+
    HostGridEntity hostEntity_
    Definition identitygridentity.hh:435
    \n+
    IdentityGridEntity & operator=(const IdentityGridEntity &original)
    Definition identitygridentity.hh:260
    \n+
    Geometry geometry() const
    Geometry of this entity.
    Definition identitygridentity.hh:311
    \n+
    IdentityGridLevelIntersectionIterator< GridImp > ilevelend() const
    Reference to one past the last neighbor.
    Definition identitygridentity.hh:343
    \n+
    IdentityGridEntity(const IdentityGridEntity &original)
    Definition identitygridentity.hh:249
    \n+
    IdentityGridHierarchicIterator< GridImp > hend(int maxLevel) const
    Returns iterator to one past the last son.
    Definition identitygridentity.hh:405
    \n+
    IdentityGridLeafIntersectionIterator< GridImp > ileafend() const
    Reference to one past the last leaf intersection.
    Definition identitygridentity.hh:359
    \n+
    bool wasRefined() const
    Definition identitygridentity.hh:412
    \n+
    IdentityGridEntity & operator=(IdentityGridEntity &&original)
    Definition identitygridentity.hh:271
    \n+
    bool hasFather() const
    returns true if father entity exists
    Definition identitygridentity.hh:287
    \n+
    GridImp::HostGridType::Traits::template Codim< CodimInHostGrid >::Entity HostGridEntity
    Definition identitygridentity.hh:214
    \n+
    GridImp::template Codim< 0 >::Entity father() const
    Definition identitygridentity.hh:374
    \n+
    bool mightBeCoarsened() const
    Definition identitygridentity.hh:424
    \n+
    LocalGeometry geometryInFather() const
    Location of this element relative to the reference element element of the father. This is sufficient ...
    Definition identitygridentity.hh:388
    \n+
    const GridImp * identityGrid_
    Definition identitygridentity.hh:436
    \n+
    GridImp::template Codim< cc >::Entity subEntity(int i) const
    Provide access to sub entity i of given codimension. Entities are numbered 0 ... subEntities(cc)-1.
    Definition identitygridentity.hh:329
    \n+
    IdentityGridEntity(IdentityGridEntity &&original)
    Definition identitygridentity.hh:254
    \n+
    GridImp::template Codim< 0 >::Geometry Geometry
    Definition identitygridentity.hh:216
    \n+
    bool equals(const IdentityGridEntity &other) const
    Definition identitygridentity.hh:281
    \n+
    PartitionType partitionType() const
    The partition type for parallel computing.
    Definition identitygridentity.hh:305
    \n+
    Definition identitygridindexsets.hh:26
    \n+
    Definition identitygridindexsets.hh:103
    \n+
    Definition identitygridindexsets.hh:199
    \n+
    Definition identitygridindexsets.hh:251
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,109 +1,620 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridhierarchiciterator.hh\n+identitygridentity.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH\n-6#define DUNE_IDENTITYGRIDHIERITERATOR_HH\n+5#ifndef DUNE_IDENTITYGRIDENTITY_HH\n+6#define DUNE_IDENTITYGRIDENTITY_HH\n 7\n-12namespace _\bD_\bu_\bn_\be {\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n 13\n-14\n-15 //**********************************************************************\n-16 //\n-24 template\n-_\b2_\b5 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-26 {\n+14namespace _\bD_\bu_\bn_\be {\n+15\n+16\n+17 // Forward declarations\n+18\n+19 template\n+20 class IdentityGridEntity;\n+21\n+22 template\n+23 class IdentityGridLevelIterator;\n+24\n+25 template\n+26 class IdentityGridLevelIntersectionIterator;\n 27\n-28 // Type of the corresponding HierarchicIterator in the host grid\n-29 typedef typename GridImp::HostGridType::template Codim<0>::Entity::\n-HierarchicIterator HostGridHierarchicIterator;\n+28 template\n+29 class IdentityGridLeafIntersectionIterator;\n 30\n-31 public:\n-32\n-_\b3_\b3 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = 0;\n+31 template\n+32 class IdentityGridHierarchicIterator;\n+33\n 34\n-_\b3_\b5 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-36\n-_\b3_\b8 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, const\n-_\bE_\bn_\bt_\bi_\bt_\by& startEntity, int maxLevel) :\n-39 identityGrid_(identityGrid),\n-40 hostHierarchicIterator_(startEntity.impl().hostEntity_.hbegin(maxLevel))\n-41 {}\n-42\n-43\n-_\b4_\b5 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, const\n-_\bE_\bn_\bt_\bi_\bt_\by& startEntity, int maxLevel, [[maybe_unused]] bool endDummy) :\n-46 identityGrid_(identityGrid),\n-47 hostHierarchicIterator_(startEntity.impl().hostEntity_.hend(maxLevel))\n-48 {}\n-49\n-50\n-_\b5_\b2 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt()\n-53 {\n-54 ++hostHierarchicIterator_;\n-55 }\n+35 // External forward declarations\n+36 template< class Grid >\n+37 struct HostGridAccess;\n+38\n+39\n+40 //**********************************************************************\n+41 //\n+42 // --IdentityGridEntity\n+43 // --Entity\n+44 //\n+52 template\n+_\b5_\b3 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by :\n+54 public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn \n+55 {\n 56\n-_\b5_\b8 _\bE_\bn_\bt_\bi_\bt_\by _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n-59 return _\bE_\bn_\bt_\bi_\bt_\by{{identityGrid_,*hostHierarchicIterator_}};\n-60 }\n-61\n-_\b6_\b3 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const {\n-64 return hostHierarchicIterator_ == i.hostHierarchicIterator_;\n-65 }\n-66\n-67 private:\n-68 const GridImp* identityGrid_;\n-69\n-70 HostGridHierarchicIterator hostHierarchicIterator_;\n+57 template \n+_\b5_\b8 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+59\n+60 template \n+_\b6_\b1 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+62\n+63 template \n+_\b6_\b4 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n+65\n+66 template \n+_\b6_\b7 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n+68\n+69 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be >;\n+70\n 71\n-72 };\n+72 private:\n 73\n-74\n-75} // end namespace Dune\n-76\n-77#endif\n+74 typedef typename GridImp::ctype ctype;\n+75\n+76 // The codimension of this entity wrt the host grid\n+77 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension -\n+GridImp::dimension + codim;\n+78\n+79 // equivalent entity in the host grid\n+80 typedef typename GridImp::HostGridType::Traits::template\n+Codim::Entity HostGridEntity;\n+81\n+82\n+83 public:\n+84\n+_\b8_\b5 typedef typename GridImp::template Codim_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+86\n+_\b8_\b8 typedef typename GridImp::template Codim_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n+89\n+_\b9_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by()\n+91 : identityGrid_(nullptr)\n+92 {}\n+93\n+_\b9_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, const HostGridEntity&\n+hostEntity)\n+95 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(hostEntity)\n+96 , identityGrid_(identityGrid)\n+97 {}\n+98\n+_\b9_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, HostGridEntity&& hostEntity)\n+100 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(hostEntity))\n+101 , identityGrid_(identityGrid)\n+102 {}\n+103\n+_\b1_\b0_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n+106 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_)\n+107 , identityGrid_(original.identityGrid_)\n+108 {}\n+109\n+_\b1_\b1_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n+111 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_))\n+112 , identityGrid_(original.identityGrid_)\n+113 {}\n+114\n+_\b1_\b1_\b6 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n+117 {\n+118 if (this != &original)\n+119 {\n+120 identityGrid_ = original.identityGrid_;\n+121 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+122 }\n+123 return *this;\n+124 }\n+125\n+_\b1_\b2_\b7 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n+128 {\n+129 if (this != &original)\n+130 {\n+131 identityGrid_ = original.identityGrid_;\n+132 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = std::move(original.hostEntity_);\n+133 }\n+134 return *this;\n+135 }\n+136\n+_\b1_\b3_\b7 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& other) const\n+138 {\n+139 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ == other._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+140 }\n+141\n+_\b1_\b4_\b3 bool _\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br () const {\n+144 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.hasFather();\n+145 }\n+146\n+_\b1_\b4_\b8 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const\n+149 {\n+150 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_);\n+151 }\n+152\n+_\b1_\b5_\b4 int _\bl_\be_\bv_\be_\bl () const {\n+155 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.level();\n+156 }\n+157\n+158\n+_\b1_\b6_\b1 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const {\n+162 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.partitionType();\n+163 }\n+164\n+_\b1_\b6_\b7 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int cc) const\n+168 {\n+169 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.subEntities(cc);\n+170 }\n+171\n+_\b1_\b7_\b3 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+174 {\n+175 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.geometry() );\n+176 }\n+177\n+178\n+_\b1_\b7_\b9 HostGridEntity _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+180\n+181 private:\n+182\n+_\b1_\b8_\b3 const GridImp* identityGrid_;\n+184\n+185 };\n+186\n+187\n+188\n+189\n+190 //***********************\n+191 //\n+192 // --IdentityGridEntity\n+193 //\n+194 //***********************\n+202 template\n+_\b2_\b0_\b3 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by<0,dim,GridImp> :\n+204 public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn<0,dim,GridImp, IdentityGridEntity>\n+205 {\n+206 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be\n+>;\n+207\n+208 public:\n+209\n+210 // The codimension of this entitypointer wrt the host grid\n+_\b2_\b1_\b1 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension -\n+GridImp::dimension;\n+212\n+213 // equivalent entity in the host grid\n+_\b2_\b1_\b4 typedef typename GridImp::HostGridType::Traits::template\n+Codim::Entity _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by;\n+215\n+_\b2_\b1_\b6 typedef typename GridImp::template Codim<0>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+217\n+_\b2_\b1_\b8 typedef typename GridImp::template Codim<0>::LocalGeometry _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+219\n+_\b2_\b2_\b1 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+222\n+_\b2_\b2_\b4 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+225\n+_\b2_\b2_\b7 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+228\n+_\b2_\b3_\b0 typedef typename GridImp::template Codim<0>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n+231\n+232\n+233\n+_\b2_\b3_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by()\n+235 : identityGrid_(nullptr)\n+236 {}\n+237\n+_\b2_\b3_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, const _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&\n+hostEntity)\n+239 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(hostEntity)\n+240 , identityGrid_(identityGrid)\n+241 {}\n+242\n+_\b2_\b4_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&&\n+hostEntity)\n+244 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(hostEntity))\n+245 , identityGrid_(identityGrid)\n+246 {}\n+247\n+_\b2_\b4_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n+250 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_)\n+251 , identityGrid_(original.identityGrid_)\n+252 {}\n+253\n+_\b2_\b5_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n+255 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_))\n+256 , identityGrid_(original.identityGrid_)\n+257 {}\n+258\n+_\b2_\b6_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n+261 {\n+262 if (this != &original)\n+263 {\n+264 identityGrid_ = original.identityGrid_;\n+265 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+266 }\n+267 return *this;\n+268 }\n+269\n+_\b2_\b7_\b1 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n+272 {\n+273 if (this != &original)\n+274 {\n+275 identityGrid_ = original.identityGrid_;\n+276 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = std::move(original.hostEntity_);\n+277 }\n+278 return *this;\n+279 }\n+280\n+_\b2_\b8_\b1 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& other) const\n+282 {\n+283 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ == other._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+284 }\n+285\n+_\b2_\b8_\b7 bool _\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br () const {\n+288 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.hasFather();\n+289 }\n+290\n+_\b2_\b9_\b2 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const\n+293 {\n+294 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_);\n+295 }\n+296\n+_\b2_\b9_\b8 int _\bl_\be_\bv_\be_\bl () const\n+299 {\n+300 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.level();\n+301 }\n+302\n+303\n+_\b3_\b0_\b5 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const {\n+306 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.partitionType();\n+307 }\n+308\n+309\n+_\b3_\b1_\b1 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+312 {\n+313 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.geometry() );\n+314 }\n+315\n+316\n+_\b3_\b1_\b9 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int codim) const\n+320 {\n+321 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.subEntities(codim);\n+322 }\n+323\n+324\n+328 template\n+_\b3_\b2_\b9 typename GridImp::template Codim::Entity _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by (int i) const {\n+330 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\bc_\bc_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(identityGrid_,\n+_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.template subEntity(i));\n+331 }\n+332\n+333\n+_\b3_\b3_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn () const {\n+336 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n+337 identityGrid_,\n+338 identityGrid_->getHostGrid().levelGridView(_\bl_\be_\bv_\be_\bl()).ibegin(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n+339 }\n+340\n+341\n+_\b3_\b4_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd () const {\n+344 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n+345 identityGrid_,\n+346 identityGrid_->getHostGrid().levelGridView(_\bl_\be_\bv_\be_\bl()).iend(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n+347 }\n+348\n+349\n+_\b3_\b5_\b1 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn () const {\n+352 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n+353 identityGrid_,\n+354 identityGrid_->getHostGrid().leafGridView().ibegin(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n+355 }\n+356\n+357\n+_\b3_\b5_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\ba_\bf_\be_\bn_\bd () const {\n+360 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n+361 identityGrid_,\n+362 identityGrid_->getHostGrid().leafGridView().iend(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n+363 }\n+364\n+365\n+_\b3_\b6_\b7 bool _\bi_\bs_\bL_\be_\ba_\bf() const {\n+368 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.isLeaf();\n+369 }\n+370\n+371\n+_\b3_\b7_\b4 typename GridImp::template Codim<0>::Entity _\bf_\ba_\bt_\bh_\be_\br () const {\n+375 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(identityGrid_, _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.father());\n+376 }\n+377\n+378\n+_\b3_\b8_\b8 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const\n+389 {\n+390 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.geometryInFather() );\n+391 }\n+392\n+393\n+_\b3_\b9_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bh_\bb_\be_\bg_\bi_\bn (int maxLevel) const\n+399 {\n+400 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bc_\bo_\bn_\bs_\bt_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(identityGrid_, *this,\n+maxLevel);\n+401 }\n+402\n+403\n+_\b4_\b0_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bh_\be_\bn_\bd (int maxLevel) const\n+406 {\n+407 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bc_\bo_\bn_\bs_\bt_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(identityGrid_, *this,\n+maxLevel, true);\n+408 }\n+409\n+410\n+_\b4_\b1_\b2 bool _\bw_\ba_\bs_\bR_\be_\bf_\bi_\bn_\be_\bd () const\n+413 {\n+414 if (identityGrid_->adaptationStep!=GridImp::adaptDone)\n+415 return false;\n+416\n+417 int _\bl_\be_\bv_\be_\bl = this->_\bl_\be_\bv_\be_\bl();\n+418 int index = identityGrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl).index(*this);\n+419 return identityGrid_->refinementMark_[_\bl_\be_\bv_\be_\bl][index];\n+420 }\n+421\n+422\n+_\b4_\b2_\b4 bool _\bm_\bi_\bg_\bh_\bt_\bB_\be_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd () const\n+425 {\n+426 return true;\n+427 }\n+428\n+429\n+430 // /////////////////////////////////////////\n+431 // Internal stuff\n+432 // /////////////////////////////////////////\n+433\n+434\n+_\b4_\b3_\b5 _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+_\b4_\b3_\b6 const GridImp* _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b_;\n+437\n+438 private:\n+439\n+440 typedef typename GridImp::ctype ctype;\n+441\n+442 }; // end of IdentityGridEntity codim = 0\n+443\n+444\n+445} // namespace Dune\n+446\n+447\n+448#endif\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType\n+Attributes used in the generic overlap model.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n+_\bs_\bt_\bd\n+STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+Default Implementations for EntityImp.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:542\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b _\b>_\b:_\b:\n+_\bt_\by_\bp_\be\n+GeometryType type() const\n+Return the name of the reference element. The type can be used to access the\n+Dune::ReferenceElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:576\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n+provides access to host grid objects from GeometryGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+The implementation of entities in a IdentityGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+IdentityGridEntity & operator=(IdentityGridEntity &&original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(IdentityGridEntity &&original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridEntity &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_\n+HostGridEntity hostEntity_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+GridImp::template Codim< codim >::EntitySeed EntitySeed\n+The type of the EntitySeed interface class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\be_\bd\n+EntitySeed seed() const\n+Create EntitySeed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity\n+&hostEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+geometry of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:173\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+The partition type for parallel computing.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:161\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+unsigned int subEntities(unsigned int cc) const\n+Return the number of subEntities of codimension codim.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(const IdentityGridEntity &original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br\n+bool hasFather() const\n+returns true if father entity exists\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:143\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< codim >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+IdentityGridEntity & operator=(const IdentityGridEntity &original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+level of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over all element neighborsMesh entities of codimension 0 (\"elements\")\n+allow to visit all nei...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:29\n _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n Iterator over the descendants of an entity.Mesh entities of codimension 0\n (\"elements\") allow to visit...\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridHierarchicIterator &i) const\n-equality\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity\n-&startEntity, int maxLevel, bool endDummy)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Entity dereference() const\n-dereferencing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IdentityGridHierarchicIterator(const GridImp *identityGrid, const Entity\n-&startEntity, int maxLevel)\n-the default Constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+unsigned int subEntities(unsigned int codim) const\n+Return the number of subEntities of codimension codim.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+bool isLeaf() const\n+returns true if Entity has NO children\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:367\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\bb_\be_\bg_\bi_\bn\n+IdentityGridHierarchicIterator< GridImp > hbegin(int maxLevel) const\n+Inter-level access to son elements on higher levels<=maxlevel. This is provided\n+for sparsely stored n...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:398\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 0 >::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+GridImp::template Codim< 0 >::EntitySeed EntitySeed\n+The type of the EntitySeed interface class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\be_\be_\bd\n+EntitySeed seed() const\n+Create EntitySeed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn\n+IdentityGridLevelIntersectionIterator< GridImp > ilevelbegin() const\n+First level intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity\n+&hostEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+Level of this element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:298\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn\n+IdentityGridLeafIntersectionIterator< GridImp > ileafbegin() const\n+First leaf intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:351\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_\n+HostGridEntity hostEntity_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:435\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+IdentityGridEntity & operator=(const IdentityGridEntity &original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:260\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+Geometry of this entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:311\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd\n+IdentityGridLevelIntersectionIterator< GridImp > ilevelend() const\n+Reference to one past the last neighbor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:343\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(const IdentityGridEntity &original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\be_\bn_\bd\n+IdentityGridHierarchicIterator< GridImp > hend(int maxLevel) const\n+Returns iterator to one past the last son.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:405\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\be_\bn_\bd\n+IdentityGridLeafIntersectionIterator< GridImp > ileafend() const\n+Reference to one past the last leaf intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:359\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bR_\be_\bf_\bi_\bn_\be_\bd\n+bool wasRefined() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:412\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+IdentityGridEntity & operator=(IdentityGridEntity &&original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br\n+bool hasFather() const\n+returns true if father entity exists\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::HostGridType::Traits::template Codim< CodimInHostGrid >::Entity\n+HostGridEntity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n+GridImp::template Codim< 0 >::Entity father() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:374\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bB_\be_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd\n+bool mightBeCoarsened() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:424\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n+LocalGeometry geometryInFather() const\n+Location of this element relative to the reference element element of the\n+father. This is sufficient ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:388\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b_\n+const GridImp * identityGrid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:436\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< cc >::Entity subEntity(int i) const\n+Provide access to sub entity i of given codimension. Entities are numbered 0\n+... subEntities(cc)-1.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:329\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+IdentityGridEntity(IdentityGridEntity &&original)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 0 >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridEntity &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:281\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+The partition type for parallel computing.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:305\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:251\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00740.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00740.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridentity.hh File Reference\n+dune-grid: identitygridentityseed.hh File Reference\n \n \n \n \n \n \n \n@@ -72,41 +72,37 @@\n
  • dune
  • grid
  • identitygrid
  • \n
    \n
    \n
    \n \n-
    identitygridentity.hh File Reference
    \n+
    identitygridentityseed.hh File Reference
    \n
    \n
    \n \n-

    The IdentityGridEntity class. \n+

    The IdentityGridEntitySeed class. \n More...

    \n-\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::IdentityGridEntity< codim, dim, GridImp >
     The implementation of entities in a IdentityGrid. More...
     
    class  Dune::IdentityGridEntity< 0, dim, GridImp >
     Specialization for codim-0-entities. More...
    class  Dune::IdentityGridEntitySeed< codim, GridImp >
     The EntitySeed class provides the minimal information needed to restore an Entity using the grid. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The IdentityGridEntity class.

    \n+

    The IdentityGridEntitySeed class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,23 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridentity.hh File Reference\n-The IdentityGridEntity class. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+identitygridentityseed.hh File Reference\n+The IdentityGridEntitySeed class. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 The implementation of entities in a _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 Specialization for codim-0-entities. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 The _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd class provides the minimal information needed to restore\n+ an _\bE_\bn_\bt_\bi_\bt_\by using the grid. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The IdentityGridEntity class.\n+The IdentityGridEntitySeed class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00740_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00740_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridentity.hh Source File\n+dune-grid: identitygridentityseed.hh Source File\n \n \n \n \n \n \n \n@@ -74,542 +74,85 @@\n \n \n
    \n
    \n-
    identitygridentity.hh
    \n+
    identitygridentityseed.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITYGRIDENTITY_HH
    \n-
    6#define DUNE_IDENTITYGRIDENTITY_HH
    \n+
    5#ifndef DUNE_IDENTITY_GRID_ENTITY_SEED_HH
    \n+
    6#define DUNE_IDENTITY_GRID_ENTITY_SEED_HH
    \n
    7
    \n-\n-
    13
    \n
    14namespace Dune {
    \n
    15
    \n
    16
    \n-
    17 // Forward declarations
    \n-
    18
    \n-
    19 template<int codim, int dim, class GridImp>
    \n-
    20 class IdentityGridEntity;
    \n-
    21
    \n-
    22 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n-
    23 class IdentityGridLevelIterator;
    \n-
    24
    \n-
    25 template<class GridImp>
    \n-
    26 class IdentityGridLevelIntersectionIterator;
    \n-
    27
    \n-
    28 template<class GridImp>
    \n-
    29 class IdentityGridLeafIntersectionIterator;
    \n-
    30
    \n-
    31 template<class GridImp>
    \n-
    32 class IdentityGridHierarchicIterator;
    \n-
    33
    \n+
    22 template<int codim, class GridImp>
    \n+
    \n+\n+
    24 {
    \n+
    25 protected:
    \n+
    26
    \n+
    27 // Entity type of the hostgrid
    \n+
    28 typedef typename GridImp::HostGridType::Traits::template Codim<codim>::Entity HostEntity;
    \n+
    29
    \n+
    30 // EntitySeed type of the hostgrid
    \n+
    31 typedef typename GridImp::HostGridType::Traits::template Codim<codim>::EntitySeed HostEntitySeed;
    \n+
    32
    \n+
    33 public:
    \n
    34
    \n-
    35 // External forward declarations
    \n-
    36 template< class Grid >
    \n-
    37 struct HostGridAccess;
    \n-
    38
    \n-
    39
    \n-
    40 //**********************************************************************
    \n-
    41 //
    \n-
    42 // --IdentityGridEntity
    \n-
    43 // --Entity
    \n-
    44 //
    \n-
    52 template<int codim, int dim, class GridImp>
    \n-
    \n-\n-
    54 public EntityDefaultImplementation <codim,dim,GridImp,IdentityGridEntity>
    \n-
    55 {
    \n-
    56
    \n-
    57 template <class GridImp_>
    \n-\n-
    59
    \n-
    60 template <class GridImp_>
    \n-\n-
    62
    \n-
    63 template <class GridImp_>
    \n-\n-
    65
    \n-
    66 template <class GridImp_>
    \n-\n-
    68
    \n-
    69 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n-
    70
    \n-
    71
    \n-
    72 private:
    \n-
    73
    \n-
    74 typedef typename GridImp::ctype ctype;
    \n-
    75
    \n-
    76 // The codimension of this entity wrt the host grid
    \n-
    77 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim;
    \n-
    78
    \n-
    79 // equivalent entity in the host grid
    \n-
    80 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::Entity HostGridEntity;
    \n-
    81
    \n-
    82
    \n-
    83 public:
    \n-
    84
    \n-
    85 typedef typename GridImp::template Codim<codim>::Geometry Geometry;
    \n-
    86
    \n-
    88 typedef typename GridImp::template Codim<codim>::EntitySeed EntitySeed;
    \n-
    89
    \n-
    \n-\n-
    91 : identityGrid_(nullptr)
    \n-
    92 {}
    \n-
    \n-
    93
    \n-
    \n-
    94 IdentityGridEntity(const GridImp* identityGrid, const HostGridEntity& hostEntity)
    \n-
    95 : hostEntity_(hostEntity)
    \n-
    96 , identityGrid_(identityGrid)
    \n-
    97 {}
    \n-
    \n-
    98
    \n-
    \n-
    99 IdentityGridEntity(const GridImp* identityGrid, HostGridEntity&& hostEntity)
    \n-
    100 : hostEntity_(std::move(hostEntity))
    \n-
    101 , identityGrid_(identityGrid)
    \n-
    102 {}
    \n-
    \n-
    103
    \n-
    \n-\n-
    106 : hostEntity_(original.hostEntity_)
    \n-
    107 , identityGrid_(original.identityGrid_)
    \n-
    108 {}
    \n-
    \n-
    109
    \n-
    \n-\n-
    111 : hostEntity_(std::move(original.hostEntity_))
    \n-
    112 , identityGrid_(original.identityGrid_)
    \n-
    113 {}
    \n-
    \n-
    114
    \n-
    \n-\n-
    117 {
    \n-
    118 if (this != &original)
    \n-
    119 {
    \n-
    120 identityGrid_ = original.identityGrid_;
    \n-
    121 hostEntity_ = original.hostEntity_;
    \n-
    122 }
    \n-
    123 return *this;
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    \n-\n-
    128 {
    \n-
    129 if (this != &original)
    \n-
    130 {
    \n-
    131 identityGrid_ = original.identityGrid_;
    \n-
    132 hostEntity_ = std::move(original.hostEntity_);
    \n-
    133 }
    \n-
    134 return *this;
    \n-
    135 }
    \n-
    \n-
    136
    \n-
    \n-
    137 bool equals(const IdentityGridEntity& other) const
    \n-
    138 {
    \n-
    139 return hostEntity_ == other.hostEntity_;
    \n-
    140 }
    \n-
    \n-
    141
    \n-
    \n-
    143 bool hasFather () const {
    \n-
    144 return hostEntity_.hasFather();
    \n-
    145 }
    \n-
    \n-
    146
    \n-
    \n-\n-
    149 {
    \n-
    150 return EntitySeed(hostEntity_);
    \n-
    151 }
    \n-
    \n-
    152
    \n-
    \n-
    154 int level () const {
    \n-
    155 return hostEntity_.level();
    \n-
    156 }
    \n-
    \n-
    157
    \n-
    158
    \n-
    \n-\n-
    162 return hostEntity_.partitionType();
    \n-
    163 }
    \n-
    \n-
    164
    \n-
    \n-
    167 unsigned int subEntities (unsigned int cc) const
    \n-
    168 {
    \n-
    169 return hostEntity_.subEntities(cc);
    \n-
    170 }
    \n-
    \n-
    171
    \n-
    \n-\n-
    174 {
    \n-
    175 return Geometry( hostEntity_.geometry() );
    \n-
    176 }
    \n-
    \n-
    177
    \n-
    178
    \n-
    179 HostGridEntity hostEntity_;
    \n-
    180
    \n-
    181 private:
    \n-
    182
    \n-
    183 const GridImp* identityGrid_;
    \n-
    184
    \n-
    185 };
    \n-
    \n-
    186
    \n-
    187
    \n-
    188
    \n-
    189
    \n-
    190 //***********************
    \n-
    191 //
    \n-
    192 // --IdentityGridEntity
    \n-
    193 //
    \n-
    194 //***********************
    \n-
    202 template<int dim, class GridImp>
    \n-
    \n-
    203 class IdentityGridEntity<0,dim,GridImp> :
    \n-
    204 public EntityDefaultImplementation<0,dim,GridImp, IdentityGridEntity>
    \n-
    205 {
    \n-
    206 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n-
    207
    \n-
    208 public:
    \n-
    209
    \n-
    210 // The codimension of this entitypointer wrt the host grid
    \n-
    211 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension;
    \n-
    212
    \n-
    213 // equivalent entity in the host grid
    \n-
    214 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::Entity HostGridEntity;
    \n-
    215
    \n-
    216 typedef typename GridImp::template Codim<0>::Geometry Geometry;
    \n-
    217
    \n-
    218 typedef typename GridImp::template Codim<0>::LocalGeometry LocalGeometry;
    \n-
    219
    \n-\n-
    222
    \n-\n-
    225
    \n-\n-
    228
    \n-
    230 typedef typename GridImp::template Codim<0>::EntitySeed EntitySeed;
    \n-
    231
    \n-
    232
    \n-
    233
    \n-
    \n-\n-
    235 : identityGrid_(nullptr)
    \n-
    236 {}
    \n-
    \n-
    237
    \n-
    \n-
    238 IdentityGridEntity(const GridImp* identityGrid, const HostGridEntity& hostEntity)
    \n-
    239 : hostEntity_(hostEntity)
    \n-
    240 , identityGrid_(identityGrid)
    \n-
    241 {}
    \n-
    \n-
    242
    \n-
    \n-
    243 IdentityGridEntity(const GridImp* identityGrid, HostGridEntity&& hostEntity)
    \n-
    244 : hostEntity_(std::move(hostEntity))
    \n-
    245 , identityGrid_(identityGrid)
    \n-
    246 {}
    \n-
    \n-
    247
    \n-
    \n-\n-
    250 : hostEntity_(original.hostEntity_)
    \n-
    251 , identityGrid_(original.identityGrid_)
    \n-
    252 {}
    \n-
    \n-
    253
    \n-
    \n-\n-
    255 : hostEntity_(std::move(original.hostEntity_))
    \n-
    256 , identityGrid_(original.identityGrid_)
    \n-
    257 {}
    \n-
    \n-
    258
    \n-
    \n-\n-
    261 {
    \n-
    262 if (this != &original)
    \n-
    263 {
    \n-
    264 identityGrid_ = original.identityGrid_;
    \n-
    265 hostEntity_ = original.hostEntity_;
    \n-
    266 }
    \n-
    267 return *this;
    \n-
    268 }
    \n-
    \n-
    269
    \n-
    \n-\n-
    272 {
    \n-
    273 if (this != &original)
    \n-
    274 {
    \n-
    275 identityGrid_ = original.identityGrid_;
    \n-
    276 hostEntity_ = std::move(original.hostEntity_);
    \n-
    277 }
    \n-
    278 return *this;
    \n-
    279 }
    \n-
    \n-
    280
    \n-
    \n-
    281 bool equals(const IdentityGridEntity& other) const
    \n-
    282 {
    \n-
    283 return hostEntity_ == other.hostEntity_;
    \n-
    284 }
    \n-
    \n-
    285
    \n-
    \n-
    287 bool hasFather () const {
    \n-
    288 return hostEntity_.hasFather();
    \n-
    289 }
    \n-
    \n-
    290
    \n-
    \n-\n-
    293 {
    \n-
    294 return EntitySeed(hostEntity_);
    \n-
    295 }
    \n-
    \n-
    296
    \n-
    \n-
    298 int level () const
    \n-
    299 {
    \n-
    300 return hostEntity_.level();
    \n-
    301 }
    \n-
    \n-
    302
    \n-
    303
    \n-
    \n-\n-
    306 return hostEntity_.partitionType();
    \n-
    307 }
    \n-
    \n-
    308
    \n-
    309
    \n-
    \n-\n-
    312 {
    \n-
    313 return Geometry( hostEntity_.geometry() );
    \n-
    314 }
    \n-
    \n-
    315
    \n-
    316
    \n-
    \n-
    319 unsigned int subEntities (unsigned int codim) const
    \n-
    320 {
    \n-
    321 return hostEntity_.subEntities(codim);
    \n-
    322 }
    \n-
    \n-
    323
    \n-
    324
    \n-
    328 template<int cc>
    \n-
    \n-
    329 typename GridImp::template Codim<cc>::Entity subEntity (int i) const {
    \n-
    330 return IdentityGridEntity<cc,dim,GridImp>(identityGrid_, hostEntity_.template subEntity<cc>(i));
    \n-
    331 }
    \n-
    \n-
    332
    \n-
    333
    \n-
    \n-\n-\n-
    337 identityGrid_,
    \n-
    338 identityGrid_->getHostGrid().levelGridView(level()).ibegin(hostEntity_));
    \n-
    339 }
    \n-
    \n-
    340
    \n-
    341
    \n-
    \n-\n-\n-
    345 identityGrid_,
    \n-
    346 identityGrid_->getHostGrid().levelGridView(level()).iend(hostEntity_));
    \n-
    347 }
    \n-
    \n-
    348
    \n-
    349
    \n-
    \n-\n-\n-
    353 identityGrid_,
    \n-
    354 identityGrid_->getHostGrid().leafGridView().ibegin(hostEntity_));
    \n-
    355 }
    \n-
    \n-
    356
    \n-
    357
    \n-
    \n-\n-\n-
    361 identityGrid_,
    \n-
    362 identityGrid_->getHostGrid().leafGridView().iend(hostEntity_));
    \n-
    363 }
    \n-
    \n-
    364
    \n-
    365
    \n-
    \n-
    367 bool isLeaf() const {
    \n-
    368 return hostEntity_.isLeaf();
    \n-
    369 }
    \n-
    \n-
    370
    \n-
    371
    \n-
    \n-
    374 typename GridImp::template Codim<0>::Entity father () const {
    \n-
    375 return IdentityGridEntity(identityGrid_, hostEntity_.father());
    \n-
    376 }
    \n-
    \n-
    377
    \n-
    378
    \n-
    \n-\n-
    389 {
    \n-
    390 return LocalGeometry( hostEntity_.geometryInFather() );
    \n-
    391 }
    \n-
    \n-
    392
    \n-
    393
    \n-
    \n-\n-
    399 {
    \n-
    400 return IdentityGridHierarchicIterator<const GridImp>(identityGrid_, *this, maxLevel);
    \n-
    401 }
    \n-
    \n-
    402
    \n-
    403
    \n-
    \n-\n-
    406 {
    \n-
    407 return IdentityGridHierarchicIterator<const GridImp>(identityGrid_, *this, maxLevel, true);
    \n-
    408 }
    \n-
    \n-
    409
    \n-
    410
    \n-
    \n-
    412 bool wasRefined () const
    \n-
    413 {
    \n-
    414 if (identityGrid_->adaptationStep!=GridImp::adaptDone)
    \n-
    415 return false;
    \n-
    416
    \n-
    417 int level = this->level();
    \n-
    418 int index = identityGrid_->levelIndexSet(level).index(*this);
    \n-
    419 return identityGrid_->refinementMark_[level][index];
    \n-
    420 }
    \n-
    \n-
    421
    \n-
    422
    \n-
    \n-
    424 bool mightBeCoarsened () const
    \n-
    425 {
    \n-
    426 return true;
    \n-
    427 }
    \n-
    \n-
    428
    \n-
    429
    \n-
    430 // /////////////////////////////////////////
    \n-
    431 // Internal stuff
    \n-
    432 // /////////////////////////////////////////
    \n-
    433
    \n-
    434
    \n-\n-
    436 const GridImp* identityGrid_;
    \n-
    437
    \n-
    438 private:
    \n-
    439
    \n-
    440 typedef typename GridImp::ctype ctype;
    \n-
    441
    \n-
    442 }; // end of IdentityGridEntity codim = 0
    \n-
    \n-
    443
    \n-
    444
    \n-
    445} // namespace Dune
    \n-
    446
    \n-
    447
    \n-
    448#endif
    \n-
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n-
    STL namespace.
    \n+
    35 constexpr static int codimension = codim;
    \n+
    36
    \n+
    \n+\n+
    41 {}
    \n+
    \n+
    42
    \n+
    \n+\n+
    50 hostEntitySeed_(hostEntity.seed())
    \n+
    51 {}
    \n+
    \n+
    52
    \n+
    \n+\n+
    57 {
    \n+
    58 return hostEntitySeed_;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    64 bool isValid() const
    \n+
    65 {
    \n+
    66 return hostEntitySeed_.isValid();
    \n+
    67 }
    \n+
    \n+
    68 private:
    \n+
    69
    \n+
    70 HostEntitySeed hostEntitySeed_;
    \n+
    71 };
    \n+
    \n+
    72
    \n+
    73} // namespace Dune
    \n+
    74
    \n+
    75#endif // #define DUNE_IDENTITY_GRID_ENTITY_SEED_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Default Implementations for EntityImp.
    Definition common/entity.hh:542
    \n-
    GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition common/entity.hh:576
    \n-
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n-
    The implementation of entities in a IdentityGrid.
    Definition identitygridentity.hh:55
    \n-
    IdentityGridEntity()
    Definition identitygridentity.hh:90
    \n-
    IdentityGridEntity & operator=(IdentityGridEntity &&original)
    Definition identitygridentity.hh:127
    \n-
    IdentityGridEntity(IdentityGridEntity &&original)
    Definition identitygridentity.hh:110
    \n-
    bool equals(const IdentityGridEntity &other) const
    Definition identitygridentity.hh:137
    \n-
    HostGridEntity hostEntity_
    Definition identitygridentity.hh:179
    \n-
    GridImp::template Codim< codim >::EntitySeed EntitySeed
    The type of the EntitySeed interface class.
    Definition identitygridentity.hh:88
    \n-
    EntitySeed seed() const
    Create EntitySeed.
    Definition identitygridentity.hh:148
    \n-
    IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity &hostEntity)
    Definition identitygridentity.hh:94
    \n-
    Geometry geometry() const
    geometry of this entity
    Definition identitygridentity.hh:173
    \n-
    PartitionType partitionType() const
    The partition type for parallel computing.
    Definition identitygridentity.hh:161
    \n-
    unsigned int subEntities(unsigned int cc) const
    Return the number of subEntities of codimension codim.
    Definition identitygridentity.hh:167
    \n-
    IdentityGridEntity(const IdentityGridEntity &original)
    Definition identitygridentity.hh:105
    \n-
    IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)
    Definition identitygridentity.hh:99
    \n-
    bool hasFather() const
    returns true if father entity exists
    Definition identitygridentity.hh:143
    \n-
    GridImp::template Codim< codim >::Geometry Geometry
    Definition identitygridentity.hh:85
    \n-
    IdentityGridEntity & operator=(const IdentityGridEntity &original)
    Definition identitygridentity.hh:116
    \n-
    int level() const
    level of this element
    Definition identitygridentity.hh:154
    \n-
    Definition identitygridintersectioniterator.hh:84
    \n-
    Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
    Definition identitygridintersectioniterator.hh:29
    \n-
    Iterator over the descendants of an entity.Mesh entities of codimension 0 ("elements") allow to visit...
    Definition identitygridhierarchiciterator.hh:26
    \n-
    unsigned int subEntities(unsigned int codim) const
    Return the number of subEntities of codimension codim.
    Definition identitygridentity.hh:319
    \n-
    IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)
    Definition identitygridentity.hh:243
    \n-
    bool isLeaf() const
    returns true if Entity has NO children
    Definition identitygridentity.hh:367
    \n-
    IdentityGridHierarchicIterator< GridImp > hbegin(int maxLevel) const
    Inter-level access to son elements on higher levels<=maxlevel. This is provided for sparsely stored n...
    Definition identitygridentity.hh:398
    \n-
    GridImp::template Codim< 0 >::LocalGeometry LocalGeometry
    Definition identitygridentity.hh:218
    \n-
    GridImp::template Codim< 0 >::EntitySeed EntitySeed
    The type of the EntitySeed interface class.
    Definition identitygridentity.hh:230
    \n-
    EntitySeed seed() const
    Create EntitySeed.
    Definition identitygridentity.hh:292
    \n-
    IdentityGridLevelIntersectionIterator< GridImp > ilevelbegin() const
    First level intersection.
    Definition identitygridentity.hh:335
    \n-
    IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity &hostEntity)
    Definition identitygridentity.hh:238
    \n-
    int level() const
    Level of this element.
    Definition identitygridentity.hh:298
    \n-
    IdentityGridLeafIntersectionIterator< GridImp > ileafbegin() const
    First leaf intersection.
    Definition identitygridentity.hh:351
    \n-
    HostGridEntity hostEntity_
    Definition identitygridentity.hh:435
    \n-
    IdentityGridEntity & operator=(const IdentityGridEntity &original)
    Definition identitygridentity.hh:260
    \n-
    Geometry geometry() const
    Geometry of this entity.
    Definition identitygridentity.hh:311
    \n-
    IdentityGridLevelIntersectionIterator< GridImp > ilevelend() const
    Reference to one past the last neighbor.
    Definition identitygridentity.hh:343
    \n-
    IdentityGridEntity(const IdentityGridEntity &original)
    Definition identitygridentity.hh:249
    \n-
    IdentityGridHierarchicIterator< GridImp > hend(int maxLevel) const
    Returns iterator to one past the last son.
    Definition identitygridentity.hh:405
    \n-
    IdentityGridLeafIntersectionIterator< GridImp > ileafend() const
    Reference to one past the last leaf intersection.
    Definition identitygridentity.hh:359
    \n-
    bool wasRefined() const
    Definition identitygridentity.hh:412
    \n-
    IdentityGridEntity & operator=(IdentityGridEntity &&original)
    Definition identitygridentity.hh:271
    \n-
    bool hasFather() const
    returns true if father entity exists
    Definition identitygridentity.hh:287
    \n-
    GridImp::HostGridType::Traits::template Codim< CodimInHostGrid >::Entity HostGridEntity
    Definition identitygridentity.hh:214
    \n-
    GridImp::template Codim< 0 >::Entity father() const
    Definition identitygridentity.hh:374
    \n-
    bool mightBeCoarsened() const
    Definition identitygridentity.hh:424
    \n-
    LocalGeometry geometryInFather() const
    Location of this element relative to the reference element element of the father. This is sufficient ...
    Definition identitygridentity.hh:388
    \n-
    const GridImp * identityGrid_
    Definition identitygridentity.hh:436
    \n-
    GridImp::template Codim< cc >::Entity subEntity(int i) const
    Provide access to sub entity i of given codimension. Entities are numbered 0 ... subEntities(cc)-1.
    Definition identitygridentity.hh:329
    \n-
    IdentityGridEntity(IdentityGridEntity &&original)
    Definition identitygridentity.hh:254
    \n-
    GridImp::template Codim< 0 >::Geometry Geometry
    Definition identitygridentity.hh:216
    \n-
    bool equals(const IdentityGridEntity &other) const
    Definition identitygridentity.hh:281
    \n-
    PartitionType partitionType() const
    The partition type for parallel computing.
    Definition identitygridentity.hh:305
    \n-
    Definition identitygridindexsets.hh:26
    \n-
    Definition identitygridindexsets.hh:103
    \n-
    Definition identitygridindexsets.hh:199
    \n-
    Definition identitygridindexsets.hh:251
    \n-
    Different resources needed by all grid implementations.
    \n+
    The EntitySeed class provides the minimal information needed to restore an Entity using the grid.
    Definition identitygridentityseed.hh:24
    \n+
    static constexpr int codimension
    Definition identitygridentityseed.hh:35
    \n+
    IdentityGridEntitySeed()
    Construct an empty (i.e. isValid() == false) seed.
    Definition identitygridentityseed.hh:40
    \n+
    bool isValid() const
    Check whether it is safe to create an Entity from this Seed.
    Definition identitygridentityseed.hh:64
    \n+
    GridImp::HostGridType::Traits::template Codim< codim >::Entity HostEntity
    Definition identitygridentityseed.hh:28
    \n+
    IdentityGridEntitySeed(const HostEntity &hostEntity)
    Create EntitySeed from hostgrid Entity.
    Definition identitygridentityseed.hh:49
    \n+
    const HostEntitySeed & hostEntitySeed() const
    Get stored HostEntitySeed.
    Definition identitygridentityseed.hh:56
    \n+
    GridImp::HostGridType::Traits::template Codim< codim >::EntitySeed HostEntitySeed
    Definition identitygridentityseed.hh:31
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,620 +1,96 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridentity.hh\n+identitygridentityseed.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITYGRIDENTITY_HH\n-6#define DUNE_IDENTITYGRIDENTITY_HH\n+5#ifndef DUNE_IDENTITY_GRID_ENTITY_SEED_HH\n+6#define DUNE_IDENTITY_GRID_ENTITY_SEED_HH\n 7\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-13\n 14namespace _\bD_\bu_\bn_\be {\n 15\n 16\n-17 // Forward declarations\n-18\n-19 template\n-20 class IdentityGridEntity;\n-21\n-22 template\n-23 class IdentityGridLevelIterator;\n-24\n-25 template\n-26 class IdentityGridLevelIntersectionIterator;\n-27\n-28 template\n-29 class IdentityGridLeafIntersectionIterator;\n-30\n-31 template\n-32 class IdentityGridHierarchicIterator;\n-33\n+22 template\n+_\b2_\b3 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+24 {\n+25 protected:\n+26\n+27 // Entity type of the hostgrid\n+_\b2_\b8 typedef typename GridImp::HostGridType::Traits::template Codim::\n+Entity _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+29\n+30 // EntitySeed type of the hostgrid\n+_\b3_\b1 typedef typename GridImp::HostGridType::Traits::template Codim::\n+EntitySeed _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n+32\n+33 public:\n 34\n-35 // External forward declarations\n-36 template< class Grid >\n-37 struct HostGridAccess;\n-38\n-39\n-40 //**********************************************************************\n-41 //\n-42 // --IdentityGridEntity\n-43 // --Entity\n-44 //\n-52 template\n-_\b5_\b3 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by :\n-54 public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn \n-55 {\n-56\n-57 template \n-_\b5_\b8 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-59\n-60 template \n-_\b6_\b1 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-62\n-63 template \n-_\b6_\b4 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-65\n-66 template \n-_\b6_\b7 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-68\n-69 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be >;\n-70\n-71\n-72 private:\n-73\n-74 typedef typename GridImp::ctype ctype;\n-75\n-76 // The codimension of this entity wrt the host grid\n-77 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension -\n-GridImp::dimension + codim;\n-78\n-79 // equivalent entity in the host grid\n-80 typedef typename GridImp::HostGridType::Traits::template\n-Codim::Entity HostGridEntity;\n-81\n-82\n-83 public:\n-84\n-_\b8_\b5 typedef typename GridImp::template Codim_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-86\n-_\b8_\b8 typedef typename GridImp::template Codim_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n-89\n-_\b9_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by()\n-91 : identityGrid_(nullptr)\n-92 {}\n-93\n-_\b9_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, const HostGridEntity&\n-hostEntity)\n-95 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(hostEntity)\n-96 , identityGrid_(identityGrid)\n-97 {}\n-98\n-_\b9_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, HostGridEntity&& hostEntity)\n-100 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(hostEntity))\n-101 , identityGrid_(identityGrid)\n-102 {}\n-103\n-_\b1_\b0_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n-106 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_)\n-107 , identityGrid_(original.identityGrid_)\n-108 {}\n-109\n-_\b1_\b1_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n-111 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_))\n-112 , identityGrid_(original.identityGrid_)\n-113 {}\n-114\n-_\b1_\b1_\b6 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n-117 {\n-118 if (this != &original)\n-119 {\n-120 identityGrid_ = original.identityGrid_;\n-121 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-122 }\n-123 return *this;\n-124 }\n-125\n-_\b1_\b2_\b7 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n-128 {\n-129 if (this != &original)\n-130 {\n-131 identityGrid_ = original.identityGrid_;\n-132 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = std::move(original.hostEntity_);\n-133 }\n-134 return *this;\n-135 }\n-136\n-_\b1_\b3_\b7 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& other) const\n-138 {\n-139 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ == other._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-140 }\n-141\n-_\b1_\b4_\b3 bool _\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br () const {\n-144 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.hasFather();\n-145 }\n-146\n-_\b1_\b4_\b8 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const\n-149 {\n-150 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_);\n-151 }\n-152\n-_\b1_\b5_\b4 int _\bl_\be_\bv_\be_\bl () const {\n-155 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.level();\n-156 }\n-157\n-158\n-_\b1_\b6_\b1 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const {\n-162 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.partitionType();\n-163 }\n-164\n-_\b1_\b6_\b7 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int cc) const\n-168 {\n-169 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.subEntities(cc);\n-170 }\n-171\n-_\b1_\b7_\b3 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-174 {\n-175 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.geometry() );\n-176 }\n-177\n-178\n-_\b1_\b7_\b9 HostGridEntity _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-180\n-181 private:\n-182\n-_\b1_\b8_\b3 const GridImp* identityGrid_;\n-184\n-185 };\n-186\n-187\n-188\n-189\n-190 //***********************\n-191 //\n-192 // --IdentityGridEntity\n-193 //\n-194 //***********************\n-202 template\n-_\b2_\b0_\b3 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by<0,dim,GridImp> :\n-204 public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn<0,dim,GridImp, IdentityGridEntity>\n-205 {\n-206 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be\n->;\n-207\n-208 public:\n-209\n-210 // The codimension of this entitypointer wrt the host grid\n-_\b2_\b1_\b1 constexpr static int CodimInHostGrid = GridImp::HostGridType::dimension -\n-GridImp::dimension;\n-212\n-213 // equivalent entity in the host grid\n-_\b2_\b1_\b4 typedef typename GridImp::HostGridType::Traits::template\n-Codim::Entity _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by;\n-215\n-_\b2_\b1_\b6 typedef typename GridImp::template Codim<0>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-217\n-_\b2_\b1_\b8 typedef typename GridImp::template Codim<0>::LocalGeometry _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-219\n-_\b2_\b2_\b1 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-222\n-_\b2_\b2_\b4 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-225\n-_\b2_\b2_\b7 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-228\n-_\b2_\b3_\b0 typedef typename GridImp::template Codim<0>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n-231\n-232\n-233\n-_\b2_\b3_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by()\n-235 : identityGrid_(nullptr)\n-236 {}\n-237\n-_\b2_\b3_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, const _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&\n-hostEntity)\n-239 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(hostEntity)\n-240 , identityGrid_(identityGrid)\n-241 {}\n-242\n-_\b2_\b4_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const GridImp* identityGrid, _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&&\n-hostEntity)\n-244 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(hostEntity))\n-245 , identityGrid_(identityGrid)\n-246 {}\n-247\n-_\b2_\b4_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n-250 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_)\n-251 , identityGrid_(original.identityGrid_)\n-252 {}\n-253\n-_\b2_\b5_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n-255 : _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_(_\bs_\bt_\bd::move(original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_))\n-256 , identityGrid_(original.identityGrid_)\n-257 {}\n-258\n-_\b2_\b6_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& original)\n-261 {\n-262 if (this != &original)\n-263 {\n-264 identityGrid_ = original.identityGrid_;\n-265 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = original._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-266 }\n-267 return *this;\n-268 }\n-269\n-_\b2_\b7_\b1 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by&& original)\n-272 {\n-273 if (this != &original)\n-274 {\n-275 identityGrid_ = original.identityGrid_;\n-276 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ = std::move(original.hostEntity_);\n-277 }\n-278 return *this;\n-279 }\n-280\n-_\b2_\b8_\b1 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by& other) const\n-282 {\n-283 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_ == other._\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-284 }\n-285\n-_\b2_\b8_\b7 bool _\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br () const {\n-288 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.hasFather();\n-289 }\n-290\n-_\b2_\b9_\b2 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const\n-293 {\n-294 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_);\n-295 }\n-296\n-_\b2_\b9_\b8 int _\bl_\be_\bv_\be_\bl () const\n-299 {\n-300 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.level();\n-301 }\n-302\n-303\n-_\b3_\b0_\b5 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const {\n-306 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.partitionType();\n-307 }\n-308\n-309\n-_\b3_\b1_\b1 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-312 {\n-313 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.geometry() );\n-314 }\n-315\n-316\n-_\b3_\b1_\b9 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int codim) const\n-320 {\n-321 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.subEntities(codim);\n-322 }\n-323\n-324\n-328 template\n-_\b3_\b2_\b9 typename GridImp::template Codim::Entity _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by (int i) const {\n-330 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\bc_\bc_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(identityGrid_,\n-_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.template subEntity(i));\n-331 }\n-332\n-333\n-_\b3_\b3_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn () const {\n-336 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n-337 identityGrid_,\n-338 identityGrid_->getHostGrid().levelGridView(_\bl_\be_\bv_\be_\bl()).ibegin(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n-339 }\n-340\n-341\n-_\b3_\b4_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd () const {\n-344 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n-345 identityGrid_,\n-346 identityGrid_->getHostGrid().levelGridView(_\bl_\be_\bv_\be_\bl()).iend(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n-347 }\n-348\n-349\n-_\b3_\b5_\b1 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn () const {\n-352 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n-353 identityGrid_,\n-354 identityGrid_->getHostGrid().leafGridView().ibegin(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n-355 }\n-356\n-357\n-_\b3_\b5_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bi_\bl_\be_\ba_\bf_\be_\bn_\bd () const {\n-360 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(\n-361 identityGrid_,\n-362 identityGrid_->getHostGrid().leafGridView().iend(_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_));\n-363 }\n-364\n-365\n-_\b3_\b6_\b7 bool _\bi_\bs_\bL_\be_\ba_\bf() const {\n-368 return _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.isLeaf();\n-369 }\n-370\n-371\n-_\b3_\b7_\b4 typename GridImp::template Codim<0>::Entity _\bf_\ba_\bt_\bh_\be_\br () const {\n-375 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by(identityGrid_, _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.father());\n-376 }\n-377\n-378\n-_\b3_\b8_\b8 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const\n-389 {\n-390 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_.geometryInFather() );\n-391 }\n-392\n-393\n-_\b3_\b9_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bh_\bb_\be_\bg_\bi_\bn (int maxLevel) const\n-399 {\n-400 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bc_\bo_\bn_\bs_\bt_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(identityGrid_, *this,\n-maxLevel);\n-401 }\n-402\n-403\n-_\b4_\b0_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bh_\be_\bn_\bd (int maxLevel) const\n-406 {\n-407 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bc_\bo_\bn_\bs_\bt_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(identityGrid_, *this,\n-maxLevel, true);\n-408 }\n-409\n-410\n-_\b4_\b1_\b2 bool _\bw_\ba_\bs_\bR_\be_\bf_\bi_\bn_\be_\bd () const\n-413 {\n-414 if (identityGrid_->adaptationStep!=GridImp::adaptDone)\n-415 return false;\n-416\n-417 int _\bl_\be_\bv_\be_\bl = this->_\bl_\be_\bv_\be_\bl();\n-418 int index = identityGrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl).index(*this);\n-419 return identityGrid_->refinementMark_[_\bl_\be_\bv_\be_\bl][index];\n-420 }\n-421\n-422\n-_\b4_\b2_\b4 bool _\bm_\bi_\bg_\bh_\bt_\bB_\be_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd () const\n-425 {\n-426 return true;\n-427 }\n-428\n-429\n-430 // /////////////////////////////////////////\n-431 // Internal stuff\n-432 // /////////////////////////////////////////\n-433\n-434\n-_\b4_\b3_\b5 _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-_\b4_\b3_\b6 const GridImp* _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b_;\n-437\n-438 private:\n-439\n-440 typedef typename GridImp::ctype ctype;\n-441\n-442 }; // end of IdentityGridEntity codim = 0\n-443\n-444\n-445} // namespace Dune\n-446\n-447\n-448#endif\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType\n-Attributes used in the generic overlap model.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n-_\bs_\bt_\bd\n-STL namespace.\n+_\b3_\b5 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n+36\n+_\b4_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd()\n+41 {}\n+42\n+_\b4_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(const _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by& hostEntity) :\n+50 hostEntitySeed_(hostEntity.seed())\n+51 {}\n+52\n+_\b5_\b6 const _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd& _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd() const\n+57 {\n+58 return hostEntitySeed_;\n+59 }\n+60\n+_\b6_\b4 bool _\bi_\bs_\bV_\ba_\bl_\bi_\bd() const\n+65 {\n+66 return hostEntitySeed_.isValid();\n+67 }\n+68 private:\n+69\n+70 _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd hostEntitySeed_;\n+71 };\n+72\n+73} // namespace Dune\n+74\n+75#endif // #define DUNE_IDENTITY_GRID_ENTITY_SEED_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-Default Implementations for EntityImp.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:542\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b _\b>_\b:_\b:\n-_\bt_\by_\bp_\be\n-GeometryType type() const\n-Return the name of the reference element. The type can be used to access the\n-Dune::ReferenceElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:576\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n-provides access to host grid objects from GeometryGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-The implementation of entities in a IdentityGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-IdentityGridEntity & operator=(IdentityGridEntity &&original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(IdentityGridEntity &&original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridEntity &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_\n-HostGridEntity hostEntity_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-GridImp::template Codim< codim >::EntitySeed EntitySeed\n-The type of the EntitySeed interface class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\be_\bd\n-EntitySeed seed() const\n-Create EntitySeed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity\n-&hostEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-geometry of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:173\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-The partition type for parallel computing.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:161\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-unsigned int subEntities(unsigned int cc) const\n-Return the number of subEntities of codimension codim.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(const IdentityGridEntity &original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br\n-bool hasFather() const\n-returns true if father entity exists\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< codim >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-IdentityGridEntity & operator=(const IdentityGridEntity &original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-level of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over all element neighborsMesh entities of codimension 0 (\"elements\")\n-allow to visit all nei...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over the descendants of an entity.Mesh entities of codimension 0\n-(\"elements\") allow to visit...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridhierarchiciterator.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-unsigned int subEntities(unsigned int codim) const\n-Return the number of subEntities of codimension codim.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(const GridImp *identityGrid, HostGridEntity &&hostEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-bool isLeaf() const\n-returns true if Entity has NO children\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:367\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\bb_\be_\bg_\bi_\bn\n-IdentityGridHierarchicIterator< GridImp > hbegin(int maxLevel) const\n-Inter-level access to son elements on higher levels<=maxlevel. This is provided\n-for sparsely stored n...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:398\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 0 >::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-GridImp::template Codim< 0 >::EntitySeed EntitySeed\n-The type of the EntitySeed interface class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\be_\be_\bd\n-EntitySeed seed() const\n-Create EntitySeed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn\n-IdentityGridLevelIntersectionIterator< GridImp > ilevelbegin() const\n-First level intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(const GridImp *identityGrid, const HostGridEntity\n-&hostEntity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-Level of this element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:298\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn\n-IdentityGridLeafIntersectionIterator< GridImp > ileafbegin() const\n-First leaf intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:351\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b_\n-HostGridEntity hostEntity_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:435\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-IdentityGridEntity & operator=(const IdentityGridEntity &original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:260\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-Geometry of this entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:311\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd\n-IdentityGridLevelIntersectionIterator< GridImp > ilevelend() const\n-Reference to one past the last neighbor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:343\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(const IdentityGridEntity &original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\be_\bn_\bd\n-IdentityGridHierarchicIterator< GridImp > hend(int maxLevel) const\n-Returns iterator to one past the last son.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:405\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\be_\bn_\bd\n-IdentityGridLeafIntersectionIterator< GridImp > ileafend() const\n-Reference to one past the last leaf intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:359\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bR_\be_\bf_\bi_\bn_\be_\bd\n-bool wasRefined() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:412\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-IdentityGridEntity & operator=(IdentityGridEntity &&original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br\n-bool hasFather() const\n-returns true if father entity exists\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::HostGridType::Traits::template Codim< CodimInHostGrid >::Entity\n-HostGridEntity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n-GridImp::template Codim< 0 >::Entity father() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:374\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bB_\be_\bC_\bo_\ba_\br_\bs_\be_\bn_\be_\bd\n-bool mightBeCoarsened() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:424\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n-LocalGeometry geometryInFather() const\n-Location of this element relative to the reference element element of the\n-father. This is sufficient ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:388\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b_\n-const GridImp * identityGrid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:436\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< cc >::Entity subEntity(int i) const\n-Provide access to sub entity i of given codimension. Entities are numbered 0\n-... subEntities(cc)-1.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:329\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-IdentityGridEntity(IdentityGridEntity &&original)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 0 >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridEntity &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:281\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-The partition type for parallel computing.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:305\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:251\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+The EntitySeed class provides the minimal information needed to restore an\n+Entity using the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+IdentityGridEntitySeed()\n+Construct an empty (i.e. isValid() == false) seed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bi_\bs_\bV_\ba_\bl_\bi_\bd\n+bool isValid() const\n+Check whether it is safe to create an Entity from this Seed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::HostGridType::Traits::template Codim< codim >::Entity HostEntity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+IdentityGridEntitySeed(const HostEntity &hostEntity)\n+Create EntitySeed from hostgrid Entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+const HostEntitySeed & hostEntitySeed() const\n+Get stored HostEntitySeed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+GridImp::HostGridType::Traits::template Codim< codim >::EntitySeed\n+HostEntitySeed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.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-grid-doc/doxygen/a00743.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00743.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridintersections.hh File Reference\n+dune-grid: identitygridindexsets.hh File Reference\n \n \n \n \n \n \n \n@@ -72,41 +72,44 @@\n
  • dune
  • grid
  • identitygrid
  • \n
    \n \n
    \n \n-
    identitygridintersections.hh File Reference
    \n+
    identitygridindexsets.hh File Reference
    \n
    \n
    \n \n-

    The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes. \n+

    The index and id sets for the IdentityGrid class. \n More...

    \n-
    #include "identitygridleafiterator.hh"
    \n-#include <dune/grid/identitygrid/identitygridentity.hh>
    \n+
    #include <dune/grid/common/indexidset.hh>
    \n+#include <vector>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::IdentityGridLeafIntersection< GridImp >
     An intersection with a leaf neighbor elementMesh entities of codimension 0 (\"elements\") allow to visit all neighbors, where a neighbor is an entity of codimension 0 which has a common entity of codimension 1 These neighbors are accessed via a IntersectionIterator. This allows the implement non-matching meshes. The number of neighbors may be different from the number of an element! More...
    class  Dune::IdentityGridLevelIndexSet< GridImp >
     
    class  Dune::IdentityGridLevelIntersection< GridImp >
    class  Dune::IdentityGridLeafIndexSet< GridImp >
     
    class  Dune::IdentityGridGlobalIdSet< GridImp >
     
    class  Dune::IdentityGridLocalIdSet< GridImp >
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.

    \n+

    The index and id sets for the IdentityGrid class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,32 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridintersections.hh File Reference\n-The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n-#include \"_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh>\n+identitygridindexsets.hh File Reference\n+The index and id sets for the IdentityGrid class. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\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:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n- An intersection with a leaf neighbor elementMesh entities of\n- codimension 0 (\"elements\") allow to visit all neighbors, where a\n-\u00a0 neighbor is an entity of codimension 0 which has a common entity of\n- codimension 1 These neighbors are accessed via a _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br.\n- This allows the implement non-matching meshes. The number of neighbors\n- may be different from the number of an element! _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.\n+The index and id sets for the IdentityGrid class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00743_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00743_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridintersections.hh Source File\n+dune-grid: identitygridindexsets.hh Source File\n \n \n \n \n \n \n \n@@ -74,435 +74,382 @@\n \n \n
    \n
    \n-
    identitygridintersections.hh
    \n+
    identitygridindexsets.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH
    \n-
    6#define DUNE_IDENTITYGRID_INTERSECTIONS_HH
    \n+
    5#ifndef DUNE_IDENTITYGRID_INDEXSETS_HH
    \n+
    6#define DUNE_IDENTITYGRID_INDEXSETS_HH
    \n
    7
    \n-\n-\n-
    10
    \n-
    15namespace Dune {
    \n-
    16
    \n+\n+
    13
    \n+
    14#include <vector>
    \n+
    15
    \n+
    16namespace Dune {
    \n
    17
    \n-
    18 // External forward declarations
    \n-
    19 template< class Grid >
    \n-
    20 struct HostGridAccess;
    \n-
    21
    \n-
    22
    \n-
    31 template<class GridImp>
    \n-
    \n-\n-
    33 {
    \n-
    34
    \n-
    35 friend class IdentityGridLeafIntersectionIterator<GridImp>;
    \n-
    36
    \n-
    37 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n-
    38
    \n-
    39 constexpr static int dim = GridImp::dimension;
    \n+
    19 template<class GridImp>
    \n+
    \n+\n+
    21 public IndexSet<GridImp,
    \n+
    22 IdentityGridLevelIndexSet<GridImp>,
    \n+
    23 typename std::remove_const<GridImp>::type::HostGridType::LevelGridView::IndexSet::IndexType,
    \n+
    24 typename std::remove_const<GridImp>::type::HostGridType::LevelGridView::IndexSet::Types
    \n+
    25 >
    \n+
    26 {
    \n+
    27 public:
    \n+
    28
    \n+
    29 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n+
    30 typedef typename HostGrid::LevelGridView::IndexSet::Types Types;
    \n+
    31
    \n+
    32 constexpr static int dim = GridImp::dimension;
    \n+
    33
    \n+
    35 template<int codim>
    \n+
    \n+
    36 int index (const typename GridImp::Traits::template Codim<codim>::Entity& e) const
    \n+
    37 {
    \n+
    38 return grid_->hostgrid_->levelIndexSet(level_).template index<codim>(grid_->template getHostEntity<codim>(e));
    \n+
    39 }
    \n+
    \n
    40
    \n-
    41 constexpr static int dimworld = GridImp::dimensionworld;
    \n-
    42
    \n-
    43 // The type used to store coordinates
    \n-
    44 typedef typename GridImp::ctype ctype;
    \n-
    45
    \n-
    46 typedef typename GridImp::HostGridType::LeafGridView::Intersection HostLeafIntersection;
    \n-
    47
    \n-
    48 public:
    \n+
    41
    \n+
    43 template<int cc>
    \n+
    \n+
    44 int subIndex (const typename GridImp::Traits::template Codim<cc>::Entity& e, int i, int codim) const
    \n+
    45 {
    \n+
    46 return grid_->hostgrid_->levelIndexSet(level_).subIndex(grid_->template getHostEntity<cc>(e), i, codim);
    \n+
    47 }
    \n+
    \n+
    48
    \n
    49
    \n-
    50 typedef typename GridImp::template Codim<1>::Geometry Geometry;
    \n-
    51 typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
    \n-
    52 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    53 typedef FieldVector<ctype, dimworld> NormalVector;
    \n+
    \n+
    51 std::size_t size (int codim) const {
    \n+
    52 return grid_->hostgrid_->levelIndexSet(level_).size(codim);
    \n+
    53 }
    \n+
    \n
    54
    \n-\n-
    57
    \n-
    \n-
    58 IdentityGridLeafIntersection(const GridImp* identityGrid,
    \n-
    59 const HostLeafIntersection& hostIntersection)
    \n-
    60 : identityGrid_(identityGrid)
    \n-
    61 , hostIntersection_(hostIntersection)
    \n-
    62 {}
    \n+
    55
    \n+
    \n+
    57 std::size_t size (GeometryType type) const
    \n+
    58 {
    \n+
    59 return grid_->hostgrid_->levelIndexSet(level_).size(type);
    \n+
    60 }
    \n
    \n-
    63
    \n+
    61
    \n+
    62
    \n
    \n-
    64 IdentityGridLeafIntersection(const GridImp* identityGrid,
    \n-
    65 HostLeafIntersection&& hostIntersection)
    \n-
    66 : identityGrid_(identityGrid)
    \n-
    67 , hostIntersection_(std::move(hostIntersection))
    \n-
    68 {}
    \n+
    64 const std::vector<GeometryType>& geomTypes (int codim) const
    \n+
    65 {
    \n+
    66 return grid_->hostgrid_->levelIndexSet(level_).geomTypes(codim);
    \n+
    67 }
    \n
    \n-
    69
    \n+
    68
    \n
    \n-
    70 bool equals(const IdentityGridLeafIntersection& other) const
    \n+
    70 Types types (int codim) const
    \n
    71 {
    \n-
    72 return hostIntersection_ == other.hostIntersection_;
    \n+
    72 return grid_->hostgrid_->levelIndexSet(level_).types(codim);
    \n
    73 }
    \n
    \n
    74
    \n+
    76 template<class EntityType>
    \n
    \n-
    77 Entity inside() const {
    \n-
    78 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.inside());
    \n-
    79 }
    \n+
    77 bool contains (const EntityType& e) const
    \n+
    78 {
    \n+
    79 return grid_->hostgrid_->levelIndexSet(level_).contains(grid_->template getHostEntity<EntityType::codimension>(e));
    \n+
    80 }
    \n
    \n-
    80
    \n
    81
    \n-
    \n-
    84 Entity outside() const {
    \n-
    85 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.outside());
    \n-
    86 }
    \n+
    \n+
    83 void update(const GridImp& grid, int level)
    \n+
    84 {
    \n+
    85 grid_ = &grid;
    \n+
    86 level_ = level;
    \n+
    87 }
    \n
    \n-
    87
    \n
    88
    \n-
    \n-
    90 bool boundary () const {
    \n-
    91 return hostIntersection_.boundary();
    \n-
    92 }
    \n-
    \n-
    93
    \n-
    \n-\n-
    100 return hostIntersection_.centerUnitOuterNormal();
    \n-
    101 }
    \n-
    \n-
    102
    \n-
    \n-
    104 bool neighbor () const {
    \n-
    105 return hostIntersection_.neighbor();
    \n-
    106 }
    \n-
    \n+
    89
    \n+
    90 GridImp* grid_;
    \n+
    91
    \n+
    92 int level_;
    \n+
    93 };
    \n+
    \n+
    94
    \n+
    95
    \n+
    96 template<class GridImp>
    \n+
    \n+\n+
    98 public IndexSet<GridImp,
    \n+
    99 IdentityGridLeafIndexSet<GridImp>,
    \n+
    100 typename std::remove_const<GridImp>::type::HostGridType::LeafGridView::IndexSet::IndexType,
    \n+
    101 typename std::remove_const<GridImp>::type::HostGridType::LeafGridView::IndexSet::Types
    \n+
    102 >
    \n+
    103 {
    \n+
    104 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n+
    105
    \n+
    106 public:
    \n
    107
    \n-
    \n-
    109 size_t boundarySegmentIndex() const {
    \n-
    110 return hostIntersection_.boundarySegmentIndex();
    \n-
    111 }
    \n-
    \n-
    112
    \n-
    \n-
    114 bool conforming () const {
    \n-
    115 return hostIntersection_.conforming();
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-
    119 GeometryType type () const {
    \n-
    120 return hostIntersection_.type();
    \n-
    121 }
    \n+
    108 typedef typename HostGrid::LevelGridView::IndexSet::Types Types;
    \n+
    109
    \n+
    110 /*
    \n+
    111 * We use the remove_const to extract the Type from the mutable class,
    \n+
    112 * because the const class is not instantiated yet.
    \n+
    113 */
    \n+
    114 constexpr static int dim = std::remove_const<GridImp>::type::dimension;
    \n+
    115
    \n+
    116
    \n+
    \n+
    118 IdentityGridLeafIndexSet (const GridImp& grid)
    \n+
    119 : grid_(&grid)
    \n+
    120 {}
    \n
    \n+
    121
    \n
    122
    \n-
    123
    \n-
    \n-\n-
    129 {
    \n-
    130 return LocalGeometry( hostIntersection_.geometryInInside() );
    \n-
    131 }
    \n-
    \n-
    132
    \n-
    \n-\n-
    136 {
    \n-
    137 return LocalGeometry( hostIntersection_.geometryInOutside() );
    \n-
    138 }
    \n-
    \n-
    139
    \n-
    \n-\n-
    143 {
    \n-
    144 return Geometry( hostIntersection_.geometry() );
    \n-
    145 }
    \n+
    124 /*
    \n+
    125 We use the RemoveConst to extract the Type from the mutable class,
    \n+
    126 because the const class is not instantiated yet.
    \n+
    127 */
    \n+
    128 template<int codim>
    \n+
    \n+
    129 int index (const typename std::remove_const<GridImp>::type::template Codim<codim>::Entity& e) const
    \n+
    130 {
    \n+
    131 return grid_->hostgrid_->leafIndexSet().template index<codim>(grid_->template getHostEntity<codim>(e));
    \n+
    132 }
    \n+
    \n+
    133
    \n+
    134
    \n+
    136 /*
    \n+
    137 We use the RemoveConst to extract the Type from the mutable class,
    \n+
    138 because the const class is not instantiated yet.
    \n+
    139 */
    \n+
    140 template<int cc>
    \n+
    \n+
    141 int subIndex (const typename std::remove_const<GridImp>::type::Traits::template Codim<cc>::Entity& e, int i, int codim) const
    \n+
    142 {
    \n+
    143 return grid_->hostgrid_->leafIndexSet().subIndex(grid_->template getHostEntity<cc>(e),i, codim);
    \n+
    144 }
    \n
    \n+
    145
    \n
    146
    \n-
    147
    \n-
    \n-
    149 int indexInInside () const {
    \n-
    150 return hostIntersection_.indexInInside();
    \n+
    \n+
    148 std::size_t size (GeometryType type) const
    \n+
    149 {
    \n+
    150 return grid_->hostgrid_->leafIndexSet().size(type);
    \n
    151 }
    \n
    \n
    152
    \n
    153
    \n
    \n-
    155 int indexInOutside () const {
    \n-
    156 return hostIntersection_.indexInOutside();
    \n-
    157 }
    \n+
    155 std::size_t size (int codim) const
    \n+
    156 {
    \n+
    157 return grid_->hostgrid_->leafIndexSet().size(codim);
    \n+
    158 }
    \n
    \n-
    158
    \n
    159
    \n-
    \n-
    161 FieldVector<ctype, GridImp::dimensionworld> outerNormal (const FieldVector<ctype, GridImp::dimension-1>& local) const {
    \n-
    162 return hostIntersection_.outerNormal(local);
    \n-
    163 }
    \n-
    \n-
    164
    \n-
    \n-
    166 FieldVector<ctype, GridImp::dimensionworld> integrationOuterNormal (const FieldVector<ctype, GridImp::dimension-1>& local) const {
    \n-
    167 return hostIntersection_.integrationOuterNormal(local);
    \n-
    168 }
    \n-
    \n-
    169
    \n-
    \n-
    171 FieldVector<ctype, GridImp::dimensionworld> unitOuterNormal (const FieldVector<ctype, GridImp::dimension-1>& local) const {
    \n-
    172 return hostIntersection_.unitOuterNormal(local);
    \n-
    173 }
    \n-
    \n-
    174
    \n-
    175
    \n-
    176 private:
    \n-
    177 //**********************************************************
    \n-
    178 // private methods
    \n-
    179 //**********************************************************
    \n+
    160
    \n+
    \n+
    162 const std::vector<GeometryType>& geomTypes (int codim) const
    \n+
    163 {
    \n+
    164 return grid_->hostgrid_->leafIndexSet().geomTypes(codim);
    \n+
    165 }
    \n+
    \n+
    166
    \n+
    \n+
    168 Types types (int codim) const
    \n+
    169 {
    \n+
    170 return grid_->hostgrid_->leafIndexSet().types(codim);
    \n+
    171 }
    \n+
    \n+
    172
    \n+
    174 template<class EntityType>
    \n+
    \n+
    175 bool contains (const EntityType& e) const
    \n+
    176 {
    \n+
    177 return grid_->hostgrid_->leafIndexSet().contains(grid_->template getHostEntity<EntityType::codimension>(e));
    \n+
    178 }
    \n+
    \n+
    179
    \n
    180
    \n-
    181 const GridImp* identityGrid_;
    \n-
    182
    \n-
    183 HostLeafIntersection hostIntersection_;
    \n-
    184 };
    \n+
    181
    \n+
    \n+
    183 void update(const GridImp& grid)
    \n+
    184 {
    \n+
    185 grid_ = &grid;
    \n+
    186 }
    \n
    \n-
    185
    \n-
    186
    \n
    187
    \n
    188
    \n-
    190 template<class GridImp>
    \n-
    \n-\n-
    192 {
    \n-
    193
    \n-
    194 friend class IdentityGridLevelIntersectionIterator<GridImp>;
    \n-
    195
    \n-
    196 friend struct HostGridAccess< typename std::remove_const< GridImp >::type >;
    \n-
    197
    \n-
    198 constexpr static int dim = GridImp::dimension;
    \n-
    199
    \n-
    200 constexpr static int dimworld = GridImp::dimensionworld;
    \n-
    201
    \n-
    202 // The type used to store coordinates
    \n-
    203 typedef typename GridImp::ctype ctype;
    \n-
    204
    \n-
    205 typedef typename GridImp::HostGridType::LevelGridView::Intersection HostLevelIntersection;
    \n-
    206
    \n-
    207 public:
    \n-
    208
    \n-
    209 typedef typename GridImp::template Codim<1>::Geometry Geometry;
    \n-
    210 typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
    \n-
    211 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    212 typedef FieldVector<ctype, dimworld> NormalVector;
    \n-
    213
    \n-\n-
    216
    \n-
    \n-
    217 IdentityGridLevelIntersection(const GridImp* identityGrid,
    \n-
    218 const HostLevelIntersection& hostIntersection)
    \n-
    219 : identityGrid_(identityGrid)
    \n-
    220 , hostIntersection_(hostIntersection)
    \n-
    221 {}
    \n-
    \n-
    222
    \n-
    \n-
    223 IdentityGridLevelIntersection(const GridImp* identityGrid,
    \n-
    224 HostLevelIntersection&& hostIntersection)
    \n-
    225 : identityGrid_(identityGrid)
    \n-
    226 , hostIntersection_(std::move(hostIntersection))
    \n-
    227 {}
    \n-
    \n-
    228
    \n-
    \n-
    229 bool equals(const IdentityGridLevelIntersection& other) const
    \n-
    230 {
    \n-
    231 return hostIntersection_ == other.hostIntersection_;
    \n-
    232 }
    \n-
    \n-
    233
    \n-
    \n-
    236 Entity inside() const {
    \n-
    237 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.inside());
    \n-
    238 }
    \n+
    189 GridImp* grid_;
    \n+
    190 };
    \n
    \n+
    191
    \n+
    192
    \n+
    193
    \n+
    194
    \n+
    195 template <class GridImp>
    \n+
    \n+\n+
    197 public IdSet<GridImp,IdentityGridGlobalIdSet<GridImp>,
    \n+
    198 typename std::remove_const<GridImp>::type::HostGridType::Traits::GlobalIdSet::IdType>
    \n+
    199 {
    \n+
    200
    \n+
    201 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n+
    202
    \n+
    203
    \n+
    204 public:
    \n+
    206 IdentityGridGlobalIdSet (const GridImp& g) : grid_(&g) {}
    \n+
    207
    \n+
    209 typedef typename HostGrid::Traits::GlobalIdSet::IdType IdType;
    \n+
    210
    \n+
    211
    \n+
    213 /*
    \n+
    214 We use the remove_const to extract the Type from the mutable class,
    \n+
    215 because the const class is not instantiated yet.
    \n+
    216 */
    \n+
    217 template<int cd>
    \n+
    \n+
    218 IdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
    \n+
    219 {
    \n+
    220 // Return id of the host entity
    \n+
    221 return grid_->hostgrid_->globalIdSet().id(e.impl().hostEntity_);
    \n+
    222 }
    \n+
    \n+
    223
    \n+
    224
    \n+
    226 /*
    \n+
    227 We use the remove_const to extract the Type from the mutable class,
    \n+
    228 because the const class is not instantiated yet.
    \n+
    229 */
    \n+
    \n+
    230 IdType subId (const typename std::remove_const<GridImp>::type::Traits::template Codim<0>::Entity& e, int i, int codim) const
    \n+
    231 {
    \n+
    232 // Return sub id of the host entity
    \n+
    233 return grid_->hostgrid_->globalIdSet().subId(e.impl().hostEntity_,i, codim);
    \n+
    234 }
    \n+
    \n+
    235
    \n+
    236
    \n+
    238 void update() {}
    \n
    239
    \n
    240
    \n-
    \n-
    243 Entity outside() const {
    \n-
    244 return IdentityGridEntity<0,dim,GridImp>(identityGrid_,hostIntersection_.outside());
    \n-
    245 }
    \n+
    241 const GridImp* grid_;
    \n+
    242 };
    \n
    \n+
    243
    \n+
    244
    \n+
    245
    \n
    246
    \n-
    247
    \n-
    \n-
    250 bool boundary () const {
    \n-
    251 return hostIntersection_.boundary();
    \n-
    252 }
    \n-
    \n+
    247 template<class GridImp>
    \n+
    \n+\n+
    249 public IdSet<GridImp,IdentityGridLocalIdSet<GridImp>,
    \n+
    250 typename std::remove_const<GridImp>::type::HostGridType::Traits::LocalIdSet::IdType>
    \n+
    251 {
    \n+
    252 private:
    \n
    253
    \n-
    \n-\n-
    260 return hostIntersection_.centerUnitOuterNormal();
    \n-
    261 }
    \n-
    \n-
    262
    \n-
    \n-
    264 bool neighbor () const {
    \n-
    265 return hostIntersection_.neighbor();
    \n-
    266 }
    \n-
    \n-
    267
    \n-
    \n-
    269 size_t boundarySegmentIndex() const {
    \n-
    270 return hostIntersection_.boundarySegmentIndex();
    \n-
    271 }
    \n-
    \n-
    272
    \n-
    \n-
    274 bool conforming () const {
    \n-
    275 return hostIntersection_.conforming();
    \n+
    254 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n+
    255
    \n+
    256
    \n+
    257 public:
    \n+
    259 typedef typename HostGrid::Traits::LocalIdSet::IdType IdType;
    \n+
    260
    \n+
    261
    \n+
    263 IdentityGridLocalIdSet (const GridImp& g) : grid_(&g) {}
    \n+
    264
    \n+
    265
    \n+
    267 /*
    \n+
    268 We use the remove_const to extract the Type from the mutable class,
    \n+
    269 because the const class is not instantiated yet.
    \n+
    270 */
    \n+
    271 template<int cd>
    \n+
    \n+
    272 IdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
    \n+
    273 {
    \n+
    274 // Return id of the host entity
    \n+
    275 return grid_->hostgrid_->localIdSet().id(e.impl().hostEntity_);
    \n
    276 }
    \n
    \n
    277
    \n-
    \n-
    279 GeometryType type () const {
    \n-
    280 return hostIntersection_.type();
    \n-
    281 }
    \n-
    \n-
    282
    \n-
    283
    \n-
    \n-\n-
    289 {
    \n-
    290 return LocalGeometry( hostIntersection_.geometryInInside() );
    \n-
    291 }
    \n-
    \n-
    292
    \n-
    \n-\n-
    296 {
    \n-
    297 return LocalGeometry( hostIntersection_.geometryInOutside() );
    \n-
    298 }
    \n-
    \n-
    299
    \n-
    \n-\n-
    303 {
    \n-
    304 return Geometry( hostIntersection_.geometry() );
    \n-
    305 }
    \n-
    \n-
    306
    \n-
    307
    \n-
    \n-
    309 int indexInInside () const {
    \n-
    310 return hostIntersection_.indexInInside();
    \n-
    311 }
    \n-
    \n-
    312
    \n-
    313
    \n-
    \n-
    315 int indexInOutside () const {
    \n-
    316 return hostIntersection_.indexInOutside();
    \n-
    317 }
    \n-
    \n-
    318
    \n-
    319
    \n-
    \n-
    321 FieldVector<ctype, dimworld> outerNormal (const FieldVector<ctype, dim-1>& local) const {
    \n-
    322 return hostIntersection_.outerNormal(local);
    \n-
    323 }
    \n-
    \n-
    324
    \n-
    \n-
    326 FieldVector<ctype, dimworld> integrationOuterNormal (const FieldVector<ctype, dim-1>& local) const {
    \n-
    327 return hostIntersection_.integrationOuterNormal(local);
    \n-
    328 }
    \n-
    \n-
    329
    \n-
    \n-
    331 FieldVector<ctype, dimworld> unitOuterNormal (const FieldVector<ctype, dim-1>& local) const {
    \n-
    332 return hostIntersection_.unitOuterNormal(local);
    \n-
    333 }
    \n-
    \n-
    334
    \n-
    335 private:
    \n-
    336
    \n-
    337 const GridImp* identityGrid_;
    \n-
    338
    \n-
    339 HostLevelIntersection hostIntersection_;
    \n-
    340
    \n-
    341 };
    \n-
    \n-
    342
    \n-
    343
    \n-
    344} // namespace Dune
    \n-
    345
    \n-
    346#endif
    \n-
    The IdentityGridLeafIterator class.
    \n-
    The IdentityGridEntity class.
    \n-
    STL namespace.
    \n+
    278
    \n+
    280 /*
    \n+
    281 * We use the remove_const to extract the Type from the mutable class,
    \n+
    282 * because the const class is not instantiated yet.
    \n+
    283 */
    \n+
    \n+
    284 IdType subId (const typename std::remove_const<GridImp>::type::template Codim<0>::Entity& e, int i, int codim) const
    \n+
    285 {
    \n+
    286 // Return sub id of the host entity
    \n+
    287 return grid_->hostgrid_->localIdSet().subId(e.impl().hostEntity_,i,codim);
    \n+
    288 }
    \n+
    \n+
    289
    \n+
    290
    \n+
    292 void update() {}
    \n+
    293
    \n+
    294
    \n+
    295 const GridImp* grid_;
    \n+
    296 };
    \n+
    \n+
    297
    \n+
    298
    \n+
    299} // namespace Dune
    \n+
    300
    \n+
    301
    \n+
    302#endif
    \n+
    Provides base classes for index and id sets.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n-
    The implementation of entities in a IdentityGrid.
    Definition identitygridentity.hh:55
    \n-
    Definition identitygridintersectioniterator.hh:84
    \n-
    Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
    Definition identitygridintersectioniterator.hh:29
    \n-
    An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
    Definition identitygridintersections.hh:33
    \n-
    Entity inside() const
    Definition identitygridintersections.hh:77
    \n-
    IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection &&hostIntersection)
    Definition identitygridintersections.hh:64
    \n-
    NormalVector centerUnitOuterNormal() const
    Return unit outer normal (length == 1)
    Definition identitygridintersections.hh:99
    \n-
    GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
    Definition identitygridintersections.hh:51
    \n-
    Geometry geometry() const
    Definition identitygridintersections.hh:142
    \n-
    Entity outside() const
    Definition identitygridintersections.hh:84
    \n-
    LocalGeometry geometryInOutside() const
    Definition identitygridintersections.hh:135
    \n-
    bool boundary() const
    return true if intersection is with boundary.
    Definition identitygridintersections.hh:90
    \n-
    GeometryType type() const
    Geometry type of an intersection.
    Definition identitygridintersections.hh:119
    \n-
    FieldVector< ctype, dimworld > NormalVector
    Definition identitygridintersections.hh:53
    \n-
    LocalGeometry geometryInInside() const
    Definition identitygridintersections.hh:128
    \n-
    bool conforming() const
    Return true if this is a conforming intersection.
    Definition identitygridintersections.hh:114
    \n-
    IdentityGridLeafIntersection(const GridImp *identityGrid, const HostLeafIntersection &hostIntersection)
    Definition identitygridintersections.hh:58
    \n-
    size_t boundarySegmentIndex() const
    return the boundary segment index
    Definition identitygridintersections.hh:109
    \n-
    bool equals(const IdentityGridLeafIntersection &other) const
    Definition identitygridintersections.hh:70
    \n-
    FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
    return outer normal
    Definition identitygridintersections.hh:161
    \n-
    int indexInOutside() const
    local number of codim 1 entity in neighbor where intersection is contained
    Definition identitygridintersections.hh:155
    \n-
    FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
    return outer normal multiplied by the integration element
    Definition identitygridintersections.hh:166
    \n-
    bool neighbor() const
    return true if across the edge an neighbor on this level exists
    Definition identitygridintersections.hh:104
    \n-
    FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
    return unit outer normal
    Definition identitygridintersections.hh:171
    \n-
    int indexInInside() const
    local number of codim 1 entity in self where intersection is contained in
    Definition identitygridintersections.hh:149
    \n-
    GridImp::template Codim< 1 >::Geometry Geometry
    Definition identitygridintersections.hh:50
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition identitygridintersections.hh:52
    \n-
    Definition identitygridintersections.hh:192
    \n-
    Geometry geometry() const
    Definition identitygridintersections.hh:302
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition identitygridintersections.hh:211
    \n-
    IdentityGridLevelIntersection(const GridImp *identityGrid, const HostLevelIntersection &hostIntersection)
    Definition identitygridintersections.hh:217
    \n-
    GridImp::template Codim< 1 >::Geometry Geometry
    Definition identitygridintersections.hh:209
    \n-
    bool equals(const IdentityGridLevelIntersection &other) const
    Definition identitygridintersections.hh:229
    \n-
    bool neighbor() const
    return true if across the edge an neighbor on this level exists
    Definition identitygridintersections.hh:264
    \n-
    NormalVector centerUnitOuterNormal() const
    Return unit outer normal (length == 1)
    Definition identitygridintersections.hh:259
    \n-
    bool conforming() const
    Return true if this is a conforming intersection.
    Definition identitygridintersections.hh:274
    \n-
    int indexInInside() const
    local number of codim 1 entity in self where intersection is contained in
    Definition identitygridintersections.hh:309
    \n-
    FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &local) const
    return outer normal
    Definition identitygridintersections.hh:321
    \n-
    GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
    Definition identitygridintersections.hh:210
    \n-
    FieldVector< ctype, dimworld > NormalVector
    Definition identitygridintersections.hh:212
    \n-
    bool boundary() const
    return true if intersection is with boundary.
    Definition identitygridintersections.hh:250
    \n-
    FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
    return outer normal multiplied by the integration element
    Definition identitygridintersections.hh:326
    \n-
    LocalGeometry geometryInOutside() const
    Definition identitygridintersections.hh:295
    \n-
    LocalGeometry geometryInInside() const
    Definition identitygridintersections.hh:288
    \n-
    int indexInOutside() const
    local number of codim 1 entity in neighbor where intersection is contained
    Definition identitygridintersections.hh:315
    \n-
    FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &local) const
    return unit outer normal
    Definition identitygridintersections.hh:331
    \n-
    size_t boundarySegmentIndex() const
    return the boundary segment index
    Definition identitygridintersections.hh:269
    \n-
    Entity outside() const
    Definition identitygridintersections.hh:243
    \n-
    Entity inside() const
    Definition identitygridintersections.hh:236
    \n-
    GeometryType type() const
    Geometry type of an intersection.
    Definition identitygridintersections.hh:279
    \n-
    IdentityGridLevelIntersection(const GridImp *identityGrid, HostLevelIntersection &&hostIntersection)
    Definition identitygridintersections.hh:223
    \n+
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n+
    Id Set Interface.
    Definition indexidset.hh:452
    \n+
    Definition identitygridindexsets.hh:26
    \n+
    bool contains(const EntityType &e) const
    Return true if the given entity is contained in the index set.
    Definition identitygridindexsets.hh:77
    \n+
    int index(const typename GridImp::Traits::template Codim< codim >::Entity &e) const
    get index of an entity
    Definition identitygridindexsets.hh:36
    \n+
    GridImp * grid_
    Definition identitygridindexsets.hh:90
    \n+
    std::remove_const< GridImp >::type::HostGridType HostGrid
    Definition identitygridindexsets.hh:29
    \n+
    const std::vector< GeometryType > & geomTypes(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:64
    \n+
    Types types(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:70
    \n+
    std::size_t size(GeometryType type) const
    get number of entities of given codim, type and on this level
    Definition identitygridindexsets.hh:57
    \n+
    static constexpr int dim
    Definition identitygridindexsets.hh:32
    \n+
    HostGrid::LevelGridView::IndexSet::Types Types
    Definition identitygridindexsets.hh:30
    \n+
    std::size_t size(int codim) const
    get number of entities of given codim, type and on this level
    Definition identitygridindexsets.hh:51
    \n+
    int subIndex(const typename GridImp::Traits::template Codim< cc >::Entity &e, int i, int codim) const
    get index of subEntity of a codim 0 entity
    Definition identitygridindexsets.hh:44
    \n+
    int level_
    Definition identitygridindexsets.hh:92
    \n+
    void update(const GridImp &grid, int level)
    Set up the index set.
    Definition identitygridindexsets.hh:83
    \n+
    Definition identitygridindexsets.hh:103
    \n+
    IdentityGridLeafIndexSet(const GridImp &grid)
    constructor stores reference to a grid and level
    Definition identitygridindexsets.hh:118
    \n+
    static constexpr int dim
    Definition identitygridindexsets.hh:114
    \n+
    std::size_t size(int codim) const
    get number of entities of given codim
    Definition identitygridindexsets.hh:155
    \n+
    bool contains(const EntityType &e) const
    Return true if the given entity is contained in the index set.
    Definition identitygridindexsets.hh:175
    \n+
    std::size_t size(GeometryType type) const
    get number of entities of given type
    Definition identitygridindexsets.hh:148
    \n+
    HostGrid::LevelGridView::IndexSet::Types Types
    Definition identitygridindexsets.hh:108
    \n+
    int index(const typename std::remove_const< GridImp >::type::template Codim< codim >::Entity &e) const
    get index of an entity
    Definition identitygridindexsets.hh:129
    \n+
    int subIndex(const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e, int i, int codim) const
    get index of subEntity of a codim 0 entity
    Definition identitygridindexsets.hh:141
    \n+
    Types types(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:168
    \n+
    GridImp * grid_
    Definition identitygridindexsets.hh:189
    \n+
    void update(const GridImp &grid)
    Definition identitygridindexsets.hh:183
    \n+
    const std::vector< GeometryType > & geomTypes(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:162
    \n+
    Definition identitygridindexsets.hh:199
    \n+
    IdentityGridGlobalIdSet(const GridImp &g)
    constructor stores reference to a grid
    Definition identitygridindexsets.hh:206
    \n+
    void update()
    Definition identitygridindexsets.hh:238
    \n+
    const GridImp * grid_
    Definition identitygridindexsets.hh:241
    \n+
    HostGrid::Traits::GlobalIdSet::IdType IdType
    define the type used for persistent indices
    Definition identitygridindexsets.hh:209
    \n+
    IdType subId(const typename std::remove_const< GridImp >::type::Traits::template Codim< 0 >::Entity &e, int i, int codim) const
    get id of subEntity
    Definition identitygridindexsets.hh:230
    \n+
    IdType id(const typename std::remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
    get id of an entity
    Definition identitygridindexsets.hh:218
    \n+
    Definition identitygridindexsets.hh:251
    \n+
    IdType subId(const typename std::remove_const< GridImp >::type::template Codim< 0 >::Entity &e, int i, int codim) const
    get id of subEntity
    Definition identitygridindexsets.hh:284
    \n+
    IdentityGridLocalIdSet(const GridImp &g)
    constructor stores reference to a grid
    Definition identitygridindexsets.hh:263
    \n+
    const GridImp * grid_
    Definition identitygridindexsets.hh:295
    \n+
    void update()
    Definition identitygridindexsets.hh:292
    \n+
    IdType id(const typename std::remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
    get id of an entity
    Definition identitygridindexsets.hh:272
    \n+
    HostGrid::Traits::LocalIdSet::IdType IdType
    define the type used for persistent local ids
    Definition identitygridindexsets.hh:259
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,500 +1,465 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridintersections.hh\n+identitygridindexsets.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-_\b1// SPDX-FileCopyrightText: 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 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH\n-6#define DUNE_IDENTITYGRID_INTERSECTIONS_HH\n+5#ifndef DUNE_IDENTITYGRID_INDEXSETS_HH\n+6#define DUNE_IDENTITYGRID_INDEXSETS_HH\n 7\n-8#include \"_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh>\n-10\n-15namespace _\bD_\bu_\bn_\be {\n-16\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh>\n+13\n+14#include \n+15\n+16namespace _\bD_\bu_\bn_\be {\n 17\n-18 // External forward declarations\n-19 template< class Grid >\n-20 struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs;\n-21\n-22\n-31 template\n-_\b3_\b2 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-33 {\n-34\n-35 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-36\n-37 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be >;\n-38\n-39 constexpr static int dim = GridImp::dimension;\n+19 template\n+_\b2_\b0 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt :\n+21 public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt,\n+23 typename std::remove_const::type::HostGridType::LevelGridView::\n+IndexSet::IndexType,\n+24 typename std::remove_const::type::HostGridType::LevelGridView::\n+IndexSet::Types\n+25 >\n+26 {\n+27 public:\n+28\n+_\b2_\b9 typedef typename std::remove_const::type::HostGridType _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n+_\b3_\b0 typedef typename HostGrid::LevelGridView::IndexSet::Types _\bT_\by_\bp_\be_\bs;\n+31\n+_\b3_\b2 constexpr static int _\bd_\bi_\bm = GridImp::dimension;\n+33\n+35 template\n+_\b3_\b6 int _\bi_\bn_\bd_\be_\bx (const typename GridImp::Traits::template Codim::Entity& e)\n+const\n+37 {\n+38 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).template index(_\bg_\br_\bi_\bd_\b_-\n+>template getHostEntity(e));\n+39 }\n 40\n-41 constexpr static int dimworld = GridImp::dimensionworld;\n-42\n-43 // The type used to store coordinates\n-44 typedef typename GridImp::ctype ctype;\n-45\n-46 typedef typename GridImp::HostGridType::LeafGridView::Intersection\n-HostLeafIntersection;\n-47\n-48 public:\n+41\n+43 template\n+_\b4_\b4 int _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename GridImp::Traits::template Codim::Entity& e,\n+int i, int codim) const\n+45 {\n+46 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).subIndex(_\bg_\br_\bi_\bd_\b_->template\n+getHostEntity(e), i, codim);\n+47 }\n+48\n 49\n-_\b5_\b0 typedef typename GridImp::template Codim<1>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b5_\b1 typedef typename GridImp::template Codim<1>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b5_\b2 typedef typename GridImp::template Codim<0>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b5_\b3 typedef FieldVector _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n+_\b5_\b1 std::size_t _\bs_\bi_\bz_\be (int codim) const {\n+52 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).size(codim);\n+53 }\n 54\n-_\b5_\b5 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn()\n-56 {}\n-57\n-_\b5_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n-59 const HostLeafIntersection& hostIntersection)\n-60 : identityGrid_(identityGrid)\n-61 , hostIntersection_(hostIntersection)\n-62 {}\n-63\n-_\b6_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n-65 HostLeafIntersection&& hostIntersection)\n-66 : identityGrid_(identityGrid)\n-67 , hostIntersection_(_\bs_\bt_\bd::move(hostIntersection))\n-68 {}\n-69\n-_\b7_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& other) const\n+55\n+_\b5_\b7 std::size_t _\bs_\bi_\bz_\be (GeometryType type) const\n+58 {\n+59 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).size(type);\n+60 }\n+61\n+62\n+_\b6_\b4 const std::vector& _\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs (int codim) const\n+65 {\n+66 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).geomTypes(codim);\n+67 }\n+68\n+_\b7_\b0 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs (int codim) const\n 71 {\n-72 return hostIntersection_ == other.hostIntersection_;\n+72 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).types(codim);\n 73 }\n 74\n-_\b7_\b7 _\bE_\bn_\bt_\bi_\bt_\by _\bi_\bn_\bs_\bi_\bd_\be() const {\n-78 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n-(identityGrid_,hostIntersection_.inside());\n-79 }\n-80\n+76 template\n+_\b7_\b7 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e) const\n+78 {\n+79 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).contains(_\bg_\br_\bi_\bd_\b_->template\n+getHostEntity(e));\n+80 }\n 81\n-_\b8_\b4 _\bE_\bn_\bt_\bi_\bt_\by _\bo_\bu_\bt_\bs_\bi_\bd_\be() const {\n-85 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n-(identityGrid_,hostIntersection_.outside());\n-86 }\n-87\n+_\b8_\b3 void _\bu_\bp_\bd_\ba_\bt_\be(const GridImp& grid, int level)\n+84 {\n+85 _\bg_\br_\bi_\bd_\b_ = &grid;\n+86 _\bl_\be_\bv_\be_\bl_\b_ = level;\n+87 }\n 88\n-_\b9_\b0 bool _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const {\n-91 return hostIntersection_.boundary();\n-92 }\n-93\n-_\b9_\b9 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const {\n-100 return hostIntersection_.centerUnitOuterNormal();\n-101 }\n-102\n-_\b1_\b0_\b4 bool _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const {\n-105 return hostIntersection_.neighbor();\n-106 }\n+89\n+_\b9_\b0 GridImp* _\bg_\br_\bi_\bd_\b_;\n+91\n+_\b9_\b2 int _\bl_\be_\bv_\be_\bl_\b_;\n+93 };\n+94\n+95\n+96 template\n+_\b9_\b7 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt :\n+98 public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt,\n+100 typename std::remove_const::type::HostGridType::LeafGridView::\n+IndexSet::IndexType,\n+101 typename std::remove_const::type::HostGridType::LeafGridView::\n+IndexSet::Types\n+102 >\n+103 {\n+104 typedef typename std::remove_const::type::HostGridType HostGrid;\n+105\n+106 public:\n 107\n-_\b1_\b0_\b9 size_t _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() const {\n-110 return hostIntersection_.boundarySegmentIndex();\n-111 }\n-112\n-_\b1_\b1_\b4 bool _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg () const {\n-115 return hostIntersection_.conforming();\n-116 }\n-117\n-_\b1_\b1_\b9 GeometryType _\bt_\by_\bp_\be () const {\n-120 return hostIntersection_.type();\n-121 }\n+_\b1_\b0_\b8 typedef typename HostGrid::LevelGridView::IndexSet::Types _\bT_\by_\bp_\be_\bs;\n+109\n+110 /*\n+111 * We use the remove_const to extract the Type from the mutable class,\n+112 * because the const class is not instantiated yet.\n+113 */\n+_\b1_\b1_\b4 constexpr static int _\bd_\bi_\bm = std::remove_const::type::dimension;\n+115\n+116\n+_\b1_\b1_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt (const GridImp& grid)\n+119 : _\bg_\br_\bi_\bd_\b_(&grid)\n+120 {}\n+121\n 122\n-123\n-_\b1_\b2_\b8 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n-129 {\n-130 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInInside() );\n-131 }\n-132\n-_\b1_\b3_\b5 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n-136 {\n-137 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInOutside() );\n-138 }\n-139\n-_\b1_\b4_\b2 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-143 {\n-144 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometry() );\n-145 }\n+124 /*\n+125 We use the RemoveConst to extract the Type from the mutable class,\n+126 because the const class is not instantiated yet.\n+127 */\n+128 template\n+_\b1_\b2_\b9 int _\bi_\bn_\bd_\be_\bx (const typename std::remove_const::type::template\n+Codim::Entity& e) const\n+130 {\n+131 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().template index(_\bg_\br_\bi_\bd_\b_-\n+>template getHostEntity(e));\n+132 }\n+133\n+134\n+136 /*\n+137 We use the RemoveConst to extract the Type from the mutable class,\n+138 because the const class is not instantiated yet.\n+139 */\n+140 template\n+_\b1_\b4_\b1 int _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename std::remove_const::type::Traits::\n+template Codim::Entity& e, int i, int codim) const\n+142 {\n+143 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().subIndex(_\bg_\br_\bi_\bd_\b_->template\n+getHostEntity(e),i, codim);\n+144 }\n+145\n 146\n-147\n-_\b1_\b4_\b9 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const {\n-150 return hostIntersection_.indexInInside();\n+_\b1_\b4_\b8 std::size_t _\bs_\bi_\bz_\be (GeometryType type) const\n+149 {\n+150 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().size(type);\n 151 }\n 152\n 153\n-_\b1_\b5_\b5 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const {\n-156 return hostIntersection_.indexInOutside();\n-157 }\n-158\n+_\b1_\b5_\b5 std::size_t _\bs_\bi_\bz_\be (int codim) const\n+156 {\n+157 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().size(codim);\n+158 }\n 159\n-_\b1_\b6_\b1 FieldVector _\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n-FieldVector& local) const {\n-162 return hostIntersection_.outerNormal(local);\n-163 }\n-164\n-_\b1_\b6_\b6 FieldVector _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n-FieldVector& local) const {\n-167 return hostIntersection_.integrationOuterNormal(local);\n-168 }\n-169\n-_\b1_\b7_\b1 FieldVector _\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n-FieldVector& local) const {\n-172 return hostIntersection_.unitOuterNormal(local);\n-173 }\n-174\n-175\n-176 private:\n-177 //**********************************************************\n-178 // private methods\n-179 //**********************************************************\n+160\n+_\b1_\b6_\b2 const std::vector& _\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs (int codim) const\n+163 {\n+164 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().geomTypes(codim);\n+165 }\n+166\n+_\b1_\b6_\b8 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs (int codim) const\n+169 {\n+170 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().types(codim);\n+171 }\n+172\n+174 template\n+_\b1_\b7_\b5 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e) const\n+176 {\n+177 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().contains(_\bg_\br_\bi_\bd_\b_->template\n+getHostEntity(e));\n+178 }\n+179\n 180\n-181 const GridImp* identityGrid_;\n-182\n-_\b1_\b8_\b3 HostLeafIntersection hostIntersection_;\n-184 };\n-185\n-186\n+181\n+_\b1_\b8_\b3 void _\bu_\bp_\bd_\ba_\bt_\be(const GridImp& grid)\n+184 {\n+185 _\bg_\br_\bi_\bd_\b_ = &grid;\n+186 }\n 187\n 188\n-190 template\n-_\b1_\b9_\b1 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-192 {\n+_\b1_\b8_\b9 GridImp* _\bg_\br_\bi_\bd_\b_;\n+190 };\n+191\n+192\n 193\n-194 friend class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-195\n-196 friend struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< typename _\bs_\bt_\bd::remove_const< GridImp >_\b:_\b:_\bt_\by_\bp_\be\n->;\n-197\n-198 constexpr static int dim = GridImp::dimension;\n-199\n-200 constexpr static int dimworld = GridImp::dimensionworld;\n-201\n-202 // The type used to store coordinates\n-203 typedef typename GridImp::ctype ctype;\n-204\n-205 typedef typename GridImp::HostGridType::LevelGridView::Intersection\n-HostLevelIntersection;\n-206\n-207 public:\n-208\n-_\b2_\b0_\b9 typedef typename GridImp::template Codim<1>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b2_\b1_\b0 typedef typename GridImp::template Codim<1>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b2_\b1_\b1 typedef typename GridImp::template Codim<0>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b2_\b1_\b2 typedef FieldVector _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n-213\n-_\b2_\b1_\b4 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn()\n-215 {}\n-216\n-_\b2_\b1_\b7 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n-218 const HostLevelIntersection& hostIntersection)\n-219 : identityGrid_(identityGrid)\n-220 , hostIntersection_(hostIntersection)\n-221 {}\n-222\n-_\b2_\b2_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn(const GridImp* identityGrid,\n-224 HostLevelIntersection&& hostIntersection)\n-225 : identityGrid_(identityGrid)\n-226 , hostIntersection_(_\bs_\bt_\bd::move(hostIntersection))\n-227 {}\n-228\n-_\b2_\b2_\b9 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn& other) const\n-230 {\n-231 return hostIntersection_ == other.hostIntersection_;\n-232 }\n-233\n-_\b2_\b3_\b6 _\bE_\bn_\bt_\bi_\bt_\by _\bi_\bn_\bs_\bi_\bd_\be() const {\n-237 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n-(identityGrid_,hostIntersection_.inside());\n-238 }\n+194\n+195 template \n+_\b1_\b9_\b6 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt :\n+197 public _\bI_\bd_\bS_\be_\bt,\n+198 typename std::remove_const::type::HostGridType::Traits::\n+GlobalIdSet::IdType>\n+199 {\n+200\n+201 typedef typename std::remove_const::type::HostGridType HostGrid;\n+202\n+203\n+204 public:\n+_\b2_\b0_\b6 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt (const GridImp& g) : _\bg_\br_\bi_\bd_\b_(&g) {}\n+207\n+_\b2_\b0_\b9 typedef typename HostGrid::Traits::GlobalIdSet::IdType _\bI_\bd_\bT_\by_\bp_\be;\n+210\n+211\n+213 /*\n+214 We use the remove_const to extract the Type from the mutable class,\n+215 because the const class is not instantiated yet.\n+216 */\n+217 template\n+_\b2_\b1_\b8 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename std::remove_const::type::Traits::\n+template Codim::Entity& e) const\n+219 {\n+220 // Return id of the host entity\n+221 return _\bg_\br_\bi_\bd_\b_->hostgrid_->globalIdSet().id(e.impl().hostEntity_);\n+222 }\n+223\n+224\n+226 /*\n+227 We use the remove_const to extract the Type from the mutable class,\n+228 because the const class is not instantiated yet.\n+229 */\n+_\b2_\b3_\b0 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename std::remove_const::type::Traits::\n+template Codim<0>::Entity& e, int i, int codim) const\n+231 {\n+232 // Return sub id of the host entity\n+233 return _\bg_\br_\bi_\bd_\b_->hostgrid_->globalIdSet().subId(e.impl().hostEntity_,i,\n+codim);\n+234 }\n+235\n+236\n+_\b2_\b3_\b8 void _\bu_\bp_\bd_\ba_\bt_\be() {}\n 239\n 240\n-_\b2_\b4_\b3 _\bE_\bn_\bt_\bi_\bt_\by _\bo_\bu_\bt_\bs_\bi_\bd_\be() const {\n-244 return _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n-(identityGrid_,hostIntersection_.outside());\n-245 }\n+_\b2_\b4_\b1 const GridImp* _\bg_\br_\bi_\bd_\b_;\n+242 };\n+243\n+244\n+245\n 246\n-247\n-_\b2_\b5_\b0 bool _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by () const {\n-251 return hostIntersection_.boundary();\n-252 }\n+247 template\n+_\b2_\b4_\b8 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt :\n+249 public _\bI_\bd_\bS_\be_\bt,\n+250 typename std::remove_const::type::HostGridType::Traits::\n+LocalIdSet::IdType>\n+251 {\n+252 private:\n 253\n-_\b2_\b5_\b9 _\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br _\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl () const {\n-260 return hostIntersection_.centerUnitOuterNormal();\n-261 }\n-262\n-_\b2_\b6_\b4 bool _\bn_\be_\bi_\bg_\bh_\bb_\bo_\br () const {\n-265 return hostIntersection_.neighbor();\n-266 }\n-267\n-_\b2_\b6_\b9 size_t _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() const {\n-270 return hostIntersection_.boundarySegmentIndex();\n-271 }\n-272\n-_\b2_\b7_\b4 bool _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg () const {\n-275 return hostIntersection_.conforming();\n+254 typedef typename std::remove_const::type::HostGridType HostGrid;\n+255\n+256\n+257 public:\n+_\b2_\b5_\b9 typedef typename HostGrid::Traits::LocalIdSet::IdType _\bI_\bd_\bT_\by_\bp_\be;\n+260\n+261\n+_\b2_\b6_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt (const GridImp& g) : _\bg_\br_\bi_\bd_\b_(&g) {}\n+264\n+265\n+267 /*\n+268 We use the remove_const to extract the Type from the mutable class,\n+269 because the const class is not instantiated yet.\n+270 */\n+271 template\n+_\b2_\b7_\b2 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename std::remove_const::type::Traits::\n+template Codim::Entity& e) const\n+273 {\n+274 // Return id of the host entity\n+275 return _\bg_\br_\bi_\bd_\b_->hostgrid_->localIdSet().id(e.impl().hostEntity_);\n 276 }\n 277\n-_\b2_\b7_\b9 GeometryType _\bt_\by_\bp_\be () const {\n-280 return hostIntersection_.type();\n-281 }\n-282\n-283\n-_\b2_\b8_\b8 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const\n-289 {\n-290 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInInside() );\n-291 }\n-292\n-_\b2_\b9_\b5 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const\n-296 {\n-297 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometryInOutside() );\n-298 }\n-299\n-_\b3_\b0_\b2 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-303 {\n-304 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( hostIntersection_.geometry() );\n-305 }\n-306\n-307\n-_\b3_\b0_\b9 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be () const {\n-310 return hostIntersection_.indexInInside();\n-311 }\n-312\n-313\n-_\b3_\b1_\b5 int _\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be () const {\n-316 return hostIntersection_.indexInOutside();\n-317 }\n-318\n-319\n-_\b3_\b2_\b1 FieldVector _\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector&\n-local) const {\n-322 return hostIntersection_.outerNormal(local);\n-323 }\n-324\n-_\b3_\b2_\b6 FieldVector _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const\n-FieldVector& local) const {\n-327 return hostIntersection_.integrationOuterNormal(local);\n-328 }\n-329\n-_\b3_\b3_\b1 FieldVector _\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl (const FieldVector& local) const {\n-332 return hostIntersection_.unitOuterNormal(local);\n-333 }\n-334\n-335 private:\n-336\n-337 const GridImp* identityGrid_;\n-338\n-339 HostLevelIntersection hostIntersection_;\n-340\n-341 };\n-342\n-343\n-344} // namespace Dune\n-345\n-346#endif\n-_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bl_\be_\ba_\bf_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-The IdentityGridLeafIterator class.\n-_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n-The IdentityGridEntity class.\n-_\bs_\bt_\bd\n-STL namespace.\n+278\n+280 /*\n+281 * We use the remove_const to extract the Type from the mutable class,\n+282 * because the const class is not instantiated yet.\n+283 */\n+_\b2_\b8_\b4 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename std::remove_const::type::template\n+Codim<0>::Entity& e, int i, int codim) const\n+285 {\n+286 // Return sub id of the host entity\n+287 return _\bg_\br_\bi_\bd_\b_->hostgrid_->localIdSet().subId(e.impl().hostEntity_,i,codim);\n+288 }\n+289\n+290\n+_\b2_\b9_\b2 void _\bu_\bp_\bd_\ba_\bt_\be() {}\n+293\n+294\n+_\b2_\b9_\b5 const GridImp* _\bg_\br_\bi_\bd_\b_;\n+296 };\n+297\n+298\n+299} // namespace Dune\n+300\n+301\n+302#endif\n+_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n+Provides base classes for index and id sets.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n-provides access to host grid objects from GeometryGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-The implementation of entities in a IdentityGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentity.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over all element neighborsMesh entities of codimension 0 (\"elements\")\n-allow to visit all nei...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersectioniterator.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-An intersection with a leaf neighbor elementMesh entities of codimension 0\n-(\"elements\") allow to visi...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n-Entity inside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection\n-&&hostIntersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector centerUnitOuterNormal() const\n-Return unit outer normal (length == 1)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 1 >::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n-Entity outside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-LocalGeometry geometryInOutside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool boundary() const\n-return true if intersection is with boundary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-Geometry type of an intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimworld > NormalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-LocalGeometry geometryInInside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-bool conforming() const\n-Return true if this is a conforming intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-IdentityGridLeafIntersection(const GridImp *identityGrid, const\n-HostLeafIntersection &hostIntersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-size_t boundarySegmentIndex() const\n-return the boundary segment index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridLeafIntersection &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector<\n-ctype, GridImp::dimension-1 > &local) const\n-return outer normal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:161\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-int indexInOutside() const\n-local number of codim 1 entity in neighbor where intersection is contained\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const\n-FieldVector< ctype, GridImp::dimension-1 > &local) const\n-return outer normal multiplied by the integration element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-bool neighbor() const\n-return true if across the edge an neighbor on this level exists\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const\n-FieldVector< ctype, GridImp::dimension-1 > &local) const\n-return unit outer normal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-int indexInInside() const\n-local number of codim 1 entity in self where intersection is contained in\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 1 >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:192\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:302\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-IdentityGridLevelIntersection(const GridImp *identityGrid, const\n-HostLevelIntersection &hostIntersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 1 >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const IdentityGridLevelIntersection &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:229\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-bool neighbor() const\n-return true if across the edge an neighbor on this level exists\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\be_\bn_\bt_\be_\br_\bU_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-NormalVector centerUnitOuterNormal() const\n-Return unit outer normal (length == 1)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:259\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-bool conforming() const\n-Return true if this is a conforming intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-int indexInInside() const\n-local number of codim 1 entity in self where intersection is contained in\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:309\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 >\n-&local) const\n-return outer normal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:321\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 1 >::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimworld > NormalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:212\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool boundary() const\n-return true if intersection is with boundary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype,\n-dim-1 > &local) const\n-return outer normal multiplied by the integration element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-LocalGeometry geometryInOutside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:295\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-LocalGeometry geometryInInside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:288\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bO_\bu_\bt_\bs_\bi_\bd_\be\n-int indexInOutside() const\n-local number of codim 1 entity in neighbor where intersection is contained\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:315\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bi_\bt_\bO_\bu_\bt_\be_\br_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-\n-1 > &local) const\n-return unit outer normal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:331\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-size_t boundarySegmentIndex() const\n-return the boundary segment index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:269\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bu_\bt_\bs_\bi_\bd_\be\n-Entity outside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n-Entity inside() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-Geometry type of an intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:279\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-IdentityGridLevelIntersection(const GridImp *identityGrid,\n-HostLevelIntersection &&hostIntersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridintersections.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Index Set Interface base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+Id Set Interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const EntityType &e) const\n+Return true if the given entity is contained in the index set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+int index(const typename GridImp::Traits::template Codim< codim >::Entity &e)\n+const\n+get index of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n+GridImp * grid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+std::remove_const< GridImp >::type::HostGridType HostGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs\n+const std::vector< GeometryType > & geomTypes(int codim) const\n+Deliver all geometry types used in this grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n+Types types(int codim) const\n+Deliver all geometry types used in this grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(GeometryType type) const\n+get number of entities of given codim, type and on this level\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm\n+static constexpr int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bT_\by_\bp_\be_\bs\n+HostGrid::LevelGridView::IndexSet::Types Types\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(int codim) const\n+get number of entities of given codim, type and on this level\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+int subIndex(const typename GridImp::Traits::template Codim< cc >::Entity &e,\n+int i, int codim) const\n+get index of subEntity of a codim 0 entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bl_\be_\bv_\be_\bl_\b_\n+int level_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(const GridImp &grid, int level)\n+Set up the index set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+IdentityGridLeafIndexSet(const GridImp &grid)\n+constructor stores reference to a grid and level\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm\n+static constexpr int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(int codim) const\n+get number of entities of given codim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const EntityType &e) const\n+Return true if the given entity is contained in the index set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(GeometryType type) const\n+get number of entities of given type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bT_\by_\bp_\be_\bs\n+HostGrid::LevelGridView::IndexSet::Types Types\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+int index(const typename std::remove_const< GridImp >::type::template Codim<\n+codim >::Entity &e) const\n+get index of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+int subIndex(const typename std::remove_const< GridImp >::type::Traits::\n+template Codim< cc >::Entity &e, int i, int codim) const\n+get index of subEntity of a codim 0 entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n+Types types(int codim) const\n+Deliver all geometry types used in this grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:168\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n+GridImp * grid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(const GridImp &grid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:183\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs\n+const std::vector< GeometryType > & geomTypes(int codim) const\n+Deliver all geometry types used in this grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+IdentityGridGlobalIdSet(const GridImp &g)\n+constructor stores reference to a grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:206\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n+const GridImp * grid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:241\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n+HostGrid::Traits::GlobalIdSet::IdType IdType\n+define the type used for persistent indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename std::remove_const< GridImp >::type::Traits::\n+template Codim< 0 >::Entity &e, int i, int codim) const\n+get id of subEntity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const typename std::remove_const< GridImp >::type::Traits::template\n+Codim< cd >::Entity &e) const\n+get id of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:251\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename std::remove_const< GridImp >::type::template Codim<\n+0 >::Entity &e, int i, int codim) const\n+get id of subEntity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:284\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+IdentityGridLocalIdSet(const GridImp &g)\n+constructor stores reference to a grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:263\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n+const GridImp * grid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:295\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const typename std::remove_const< GridImp >::type::Traits::template\n+Codim< cd >::Entity &e) const\n+get id of an entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n+HostGrid::Traits::LocalIdSet::IdType IdType\n+define the type used for persistent local ids\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:259\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00749.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00749.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridentityseed.hh File Reference\n+dune-grid: identitygridleveliterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,37 +72,38 @@\n
  • dune
  • grid
  • identitygrid
  • \n
    \n
    \n
    \n \n-
    identitygridentityseed.hh File Reference
    \n+
    identitygridleveliterator.hh File Reference
    \n
    \n
    \n \n-

    The IdentityGridEntitySeed class. \n+

    The IdentityGridLevelIterator class. \n More...

    \n-\n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::IdentityGridEntitySeed< codim, GridImp >
     The EntitySeed class provides the minimal information needed to restore an Entity using the grid. More...
    class  Dune::IdentityGridLevelIterator< codim, pitype, GridImp >
     Iterator over all entities of a given codimension and level of a grid. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The IdentityGridEntitySeed class.

    \n+

    The IdentityGridLevelIterator class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,23 +2,24 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridentityseed.hh File Reference\n-The IdentityGridEntitySeed class. _\bM_\bo_\br_\be_\b._\b._\b.\n+identitygridleveliterator.hh File Reference\n+The IdentityGridLevelIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\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:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0 The _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd class provides the minimal information needed to restore\n- an _\bE_\bn_\bt_\bi_\bt_\by using the grid. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 Iterator over all entities of a given codimension and level of a grid.\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 Include standard header files.\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-The IdentityGridEntitySeed class.\n+The IdentityGridLevelIterator class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00749_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00749_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridentityseed.hh Source File\n+dune-grid: identitygridleveliterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,85 +74,97 @@\n \n \n
    \n
    \n-
    identitygridentityseed.hh
    \n+
    identitygridleveliterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITY_GRID_ENTITY_SEED_HH
    \n-
    6#define DUNE_IDENTITY_GRID_ENTITY_SEED_HH
    \n+
    5#ifndef DUNE_IDENTITYGRIDLEVELITERATOR_HH
    \n+
    6#define DUNE_IDENTITYGRIDLEVELITERATOR_HH
    \n
    7
    \n+\n+
    9
    \n
    14namespace Dune {
    \n
    15
    \n-
    16
    \n-
    22 template<int codim, class GridImp>
    \n-
    \n-\n-
    24 {
    \n-
    25 protected:
    \n+
    19 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n+
    \n+\n+
    21 {
    \n+
    22
    \n+
    23 typedef typename GridImp::HostGridType::Traits::template Codim<codim>::template Partition<pitype>::LevelIterator HostGridLevelIterator;
    \n+
    24
    \n+
    25 public:
    \n
    26
    \n-
    27 // Entity type of the hostgrid
    \n-
    28 typedef typename GridImp::HostGridType::Traits::template Codim<codim>::Entity HostEntity;
    \n-
    29
    \n-
    30 // EntitySeed type of the hostgrid
    \n-
    31 typedef typename GridImp::HostGridType::Traits::template Codim<codim>::EntitySeed HostEntitySeed;
    \n-
    32
    \n-
    33 public:
    \n-
    34
    \n-
    35 constexpr static int codimension = codim;
    \n+
    27 constexpr static int codimension = codim;
    \n+
    28
    \n+
    29 typedef typename GridImp::template Codim<codim>::Entity Entity;
    \n+
    30
    \n+
    \n+
    32 explicit IdentityGridLevelIterator(const GridImp* identityGrid, int level)
    \n+
    33 : identityGrid_(identityGrid),
    \n+
    34 hostLevelIterator_(identityGrid->hostgrid_->levelGridView(level).template begin<codim,pitype>())
    \n+
    35 {}
    \n+
    \n
    36
    \n-
    \n-\n-
    41 {}
    \n-
    \n-
    42
    \n-
    \n-\n-
    50 hostEntitySeed_(hostEntity.seed())
    \n-
    51 {}
    \n-
    \n-
    52
    \n-
    \n-\n-
    57 {
    \n-
    58 return hostEntitySeed_;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    64 bool isValid() const
    \n-
    65 {
    \n-
    66 return hostEntitySeed_.isValid();
    \n-
    67 }
    \n+
    37
    \n+
    \n+
    43 explicit IdentityGridLevelIterator(const GridImp* identityGrid, int level, [[maybe_unused]] bool endDummy)
    \n+
    44 : identityGrid_(identityGrid),
    \n+
    45 hostLevelIterator_(identityGrid->hostgrid_->levelGridView(level).template end<codim,pitype>())
    \n+
    46 {}
    \n+
    \n+
    47
    \n+
    48
    \n+
    \n+
    50 void increment() {
    \n+
    51 ++hostLevelIterator_;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    56 return Entity{{identityGrid_,*hostLevelIterator_}};
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+
    60 bool equals(const IdentityGridLevelIterator& i) const {
    \n+
    61 return hostLevelIterator_ == i.hostLevelIterator_;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    64 private:
    \n+
    65 const GridImp* identityGrid_;
    \n+
    66
    \n+
    67 HostGridLevelIterator hostLevelIterator_;
    \n+
    68 };
    \n
    \n-
    68 private:
    \n
    69
    \n-
    70 HostEntitySeed hostEntitySeed_;
    \n-
    71 };
    \n-
    \n+
    70
    \n+
    71} // namespace Dune
    \n
    72
    \n-
    73} // namespace Dune
    \n-
    74
    \n-
    75#endif // #define DUNE_IDENTITY_GRID_ENTITY_SEED_HH
    \n+
    73#endif
    \n+\n+
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    The EntitySeed class provides the minimal information needed to restore an Entity using the grid.
    Definition identitygridentityseed.hh:24
    \n-
    static constexpr int codimension
    Definition identitygridentityseed.hh:35
    \n-
    IdentityGridEntitySeed()
    Construct an empty (i.e. isValid() == false) seed.
    Definition identitygridentityseed.hh:40
    \n-
    bool isValid() const
    Check whether it is safe to create an Entity from this Seed.
    Definition identitygridentityseed.hh:64
    \n-
    GridImp::HostGridType::Traits::template Codim< codim >::Entity HostEntity
    Definition identitygridentityseed.hh:28
    \n-
    IdentityGridEntitySeed(const HostEntity &hostEntity)
    Create EntitySeed from hostgrid Entity.
    Definition identitygridentityseed.hh:49
    \n-
    const HostEntitySeed & hostEntitySeed() const
    Get stored HostEntitySeed.
    Definition identitygridentityseed.hh:56
    \n-
    GridImp::HostGridType::Traits::template Codim< codim >::EntitySeed HostEntitySeed
    Definition identitygridentityseed.hh:31
    \n+
    Iterator over all entities of a given codimension and level of a grid.
    Definition identitygridleveliterator.hh:21
    \n+
    void increment()
    prefix increment
    Definition identitygridleveliterator.hh:50
    \n+
    GridImp::template Codim< codim >::Entity Entity
    Definition identitygridleveliterator.hh:29
    \n+
    IdentityGridLevelIterator(const GridImp *identityGrid, int level)
    Constructor.
    Definition identitygridleveliterator.hh:32
    \n+
    IdentityGridLevelIterator(const GridImp *identityGrid, int level, bool endDummy)
    Constructor which create the end iterator.
    Definition identitygridleveliterator.hh:43
    \n+
    static constexpr int codimension
    Definition identitygridleveliterator.hh:27
    \n+
    bool equals(const IdentityGridLevelIterator &i) const
    equality
    Definition identitygridleveliterator.hh:60
    \n+
    Entity dereference() const
    dereferencing
    Definition identitygridleveliterator.hh:55
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,96 +1,112 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridentityseed.hh\n+identitygridleveliterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITY_GRID_ENTITY_SEED_HH\n-6#define DUNE_IDENTITY_GRID_ENTITY_SEED_HH\n+5#ifndef DUNE_IDENTITYGRIDLEVELITERATOR_HH\n+6#define DUNE_IDENTITYGRIDLEVELITERATOR_HH\n 7\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+9\n 14namespace _\bD_\bu_\bn_\be {\n 15\n-16\n-22 template\n-_\b2_\b3 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-24 {\n-25 protected:\n+19 template\n+_\b2_\b0 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+21 {\n+22\n+23 typedef typename GridImp::HostGridType::Traits::template Codim::\n+template Partition::LevelIterator HostGridLevelIterator;\n+24\n+25 public:\n 26\n-27 // Entity type of the hostgrid\n-_\b2_\b8 typedef typename GridImp::HostGridType::Traits::template Codim::\n-Entity _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-29\n-30 // EntitySeed type of the hostgrid\n-_\b3_\b1 typedef typename GridImp::HostGridType::Traits::template Codim::\n-EntitySeed _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n-32\n-33 public:\n-34\n-_\b3_\b5 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n+_\b2_\b7 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n+28\n+_\b2_\b9 typedef typename GridImp::template Codim::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+30\n+_\b3_\b2 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, int level)\n+33 : identityGrid_(identityGrid),\n+34 hostLevelIterator_(identityGrid->hostgrid_->_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level).template\n+begin())\n+35 {}\n 36\n-_\b4_\b0 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd()\n-41 {}\n-42\n-_\b4_\b9 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(const _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by& hostEntity) :\n-50 hostEntitySeed_(hostEntity.seed())\n-51 {}\n-52\n-_\b5_\b6 const _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd& _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd() const\n-57 {\n-58 return hostEntitySeed_;\n-59 }\n-60\n-_\b6_\b4 bool _\bi_\bs_\bV_\ba_\bl_\bi_\bd() const\n-65 {\n-66 return hostEntitySeed_.isValid();\n-67 }\n-68 private:\n+37\n+_\b4_\b3 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, int level, [\n+[maybe_unused]] bool endDummy)\n+44 : identityGrid_(identityGrid),\n+45 hostLevelIterator_(identityGrid->hostgrid_->_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level).template\n+end())\n+46 {}\n+47\n+48\n+_\b5_\b0 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n+51 ++hostLevelIterator_;\n+52 }\n+53\n+_\b5_\b5 _\bE_\bn_\bt_\bi_\bt_\by _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n+56 return _\bE_\bn_\bt_\bi_\bt_\by{{identityGrid_,*hostLevelIterator_}};\n+57 }\n+58\n+_\b6_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const {\n+61 return hostLevelIterator_ == i.hostLevelIterator_;\n+62 }\n+63\n+64 private:\n+65 const GridImp* identityGrid_;\n+66\n+67 HostGridLevelIterator hostLevelIterator_;\n+68 };\n 69\n-70 _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd hostEntitySeed_;\n-71 };\n+70\n+71} // namespace Dune\n 72\n-73} // namespace Dune\n-74\n-75#endif // #define DUNE_IDENTITY_GRID_ENTITY_SEED_HH\n+73#endif\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid<\n+dim, dimworld, ct, GridFamily > &grid, int level)\n+level grid view for the given grid and level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:802\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-The EntitySeed class provides the minimal information needed to restore an\n-Entity using the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over all entities of a given codimension and level of a grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+prefix increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IdentityGridLevelIterator(const GridImp *identityGrid, int level)\n+Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IdentityGridLevelIterator(const GridImp *identityGrid, int level, bool\n+endDummy)\n+Constructor which create the end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n static constexpr int codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-IdentityGridEntitySeed()\n-Construct an empty (i.e. isValid() == false) seed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bi_\bs_\bV_\ba_\bl_\bi_\bd\n-bool isValid() const\n-Check whether it is safe to create an Entity from this Seed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::HostGridType::Traits::template Codim< codim >::Entity HostEntity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-IdentityGridEntitySeed(const HostEntity &hostEntity)\n-Create EntitySeed from hostgrid Entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-const HostEntitySeed & hostEntitySeed() const\n-Get stored HostEntitySeed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-GridImp::HostGridType::Traits::template Codim< codim >::EntitySeed\n-HostEntitySeed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridentityseed.hh:31\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridLevelIterator &i) const\n+equality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Entity dereference() const\n+dereferencing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleveliterator.hh:55\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00752.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00752.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridindexsets.hh File Reference\n+dune-grid: identitygridleafiterator.hh File Reference\n \n \n \n \n \n \n \n@@ -72,44 +72,38 @@\n
  • dune
  • grid
  • identitygrid
  • \n
    \n
    \n
    \n \n-
    identitygridindexsets.hh File Reference
    \n+
    identitygridleafiterator.hh File Reference
    \n
    \n
    \n \n-

    The index and id sets for the IdentityGrid class. \n+

    The IdentityGridLeafIterator class. \n More...

    \n-
    #include <dune/grid/common/indexidset.hh>
    \n-#include <vector>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::IdentityGridLevelIndexSet< GridImp >
     
    class  Dune::IdentityGridLeafIndexSet< GridImp >
     
    class  Dune::IdentityGridGlobalIdSet< GridImp >
     
    class  Dune::IdentityGridLocalIdSet< GridImp >
    class  Dune::IdentityGridLeafIterator< codim, pitype, GridImp >
     Iterator over all entities of a given codimension and level of a grid. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    The index and id sets for the IdentityGrid class.

    \n+

    The IdentityGridLeafIterator class.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,24 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-identitygridindexsets.hh File Reference\n-The index and id sets for the IdentityGrid class. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh>\n-#include \n+identitygridleafiterator.hh File Reference\n+The IdentityGridLeafIterator class. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\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:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 Iterator over all entities of a given codimension and level of a grid.\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 Include standard header files.\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-The index and id sets for the IdentityGrid class.\n+The IdentityGridLeafIterator class.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00752_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00752_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: identitygridindexsets.hh Source File\n+dune-grid: identitygridleafiterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,382 +74,100 @@\n \n \n
    \n
    \n-
    identitygridindexsets.hh
    \n+
    identitygridleafiterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IDENTITYGRID_INDEXSETS_HH
    \n-
    6#define DUNE_IDENTITYGRID_INDEXSETS_HH
    \n+
    5#ifndef DUNE_IDENTITYGRIDLEAFITERATOR_HH
    \n+
    6#define DUNE_IDENTITYGRIDLEAFITERATOR_HH
    \n
    7
    \n-\n-
    13
    \n-
    14#include <vector>
    \n+\n+
    9
    \n+
    14namespace Dune {
    \n
    15
    \n-
    16namespace Dune {
    \n-
    17
    \n-
    19 template<class GridImp>
    \n-
    \n-\n-
    21 public IndexSet<GridImp,
    \n-
    22 IdentityGridLevelIndexSet<GridImp>,
    \n-
    23 typename std::remove_const<GridImp>::type::HostGridType::LevelGridView::IndexSet::IndexType,
    \n-
    24 typename std::remove_const<GridImp>::type::HostGridType::LevelGridView::IndexSet::Types
    \n-
    25 >
    \n-
    26 {
    \n-
    27 public:
    \n-
    28
    \n-
    29 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n-
    30 typedef typename HostGrid::LevelGridView::IndexSet::Types Types;
    \n+
    16
    \n+
    20 template<int codim, PartitionIteratorType pitype, class GridImp>
    \n+
    \n+\n+
    22 {
    \n+
    23 private:
    \n+
    24
    \n+
    25 // LevelIterator to the equivalent entity in the host grid
    \n+
    26 typedef typename GridImp::HostGridType::template Codim<codim>::template Partition<pitype>::LeafIterator HostGridLeafIterator;
    \n+
    27
    \n+
    28 public:
    \n+
    29
    \n+
    30 constexpr static int codimension = codim;
    \n
    31
    \n-
    32 constexpr static int dim = GridImp::dimension;
    \n+
    32 typedef typename GridImp::template Codim<codim>::Entity Entity;
    \n
    33
    \n-
    35 template<int codim>
    \n-
    \n-
    36 int index (const typename GridImp::Traits::template Codim<codim>::Entity& e) const
    \n-
    37 {
    \n-
    38 return grid_->hostgrid_->levelIndexSet(level_).template index<codim>(grid_->template getHostEntity<codim>(e));
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    41
    \n-
    43 template<int cc>
    \n+
    \n+
    35 explicit IdentityGridLeafIterator(const GridImp* identityGrid) :
    \n+
    36 identityGrid_(identityGrid),
    \n+
    37 hostLeafIterator_(identityGrid->hostgrid_->leafGridView().template begin<codim,pitype>())
    \n+
    38 {}
    \n+
    \n+
    39
    \n
    \n-
    44 int subIndex (const typename GridImp::Traits::template Codim<cc>::Entity& e, int i, int codim) const
    \n-
    45 {
    \n-
    46 return grid_->hostgrid_->levelIndexSet(level_).subIndex(grid_->template getHostEntity<cc>(e), i, codim);
    \n-
    47 }
    \n+
    44 explicit IdentityGridLeafIterator(const GridImp* identityGrid, [[maybe_unused]] bool endDummy) :
    \n+
    45 identityGrid_(identityGrid),
    \n+
    46 hostLeafIterator_(identityGrid->hostgrid_->leafGridView().template end<codim,pitype>())
    \n+
    47 {}
    \n
    \n
    48
    \n
    49
    \n
    \n-
    51 std::size_t size (int codim) const {
    \n-
    52 return grid_->hostgrid_->levelIndexSet(level_).size(codim);
    \n+
    51 void increment() {
    \n+
    52 ++hostLeafIterator_;
    \n
    53 }
    \n
    \n
    54
    \n-
    55
    \n-
    \n-
    57 std::size_t size (GeometryType type) const
    \n-
    58 {
    \n-
    59 return grid_->hostgrid_->levelIndexSet(level_).size(type);
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    62
    \n-
    \n-
    64 const std::vector<GeometryType>& geomTypes (int codim) const
    \n-
    65 {
    \n-
    66 return grid_->hostgrid_->levelIndexSet(level_).geomTypes(codim);
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    \n-
    70 Types types (int codim) const
    \n-
    71 {
    \n-
    72 return grid_->hostgrid_->levelIndexSet(level_).types(codim);
    \n-
    73 }
    \n-
    \n+
    \n+\n+
    57 return Entity{{identityGrid_,*hostLeafIterator_}};
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    61 bool equals(const IdentityGridLeafIterator& i) const {
    \n+
    62 return hostLeafIterator_ == i.hostLeafIterator_;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    65 private:
    \n+
    66 const GridImp* identityGrid_;
    \n+
    67
    \n+
    68 HostGridLeafIterator hostLeafIterator_;
    \n+
    69
    \n+
    70 };
    \n+
    \n+
    71
    \n+
    72
    \n+
    73} // namespace Dune
    \n
    74
    \n-
    76 template<class EntityType>
    \n-
    \n-
    77 bool contains (const EntityType& e) const
    \n-
    78 {
    \n-
    79 return grid_->hostgrid_->levelIndexSet(level_).contains(grid_->template getHostEntity<EntityType::codimension>(e));
    \n-
    80 }
    \n-
    \n-
    81
    \n-
    \n-
    83 void update(const GridImp& grid, int level)
    \n-
    84 {
    \n-
    85 grid_ = &grid;
    \n-
    86 level_ = level;
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    89
    \n-
    90 GridImp* grid_;
    \n-
    91
    \n-
    92 int level_;
    \n-
    93 };
    \n-
    \n-
    94
    \n-
    95
    \n-
    96 template<class GridImp>
    \n-
    \n-\n-
    98 public IndexSet<GridImp,
    \n-
    99 IdentityGridLeafIndexSet<GridImp>,
    \n-
    100 typename std::remove_const<GridImp>::type::HostGridType::LeafGridView::IndexSet::IndexType,
    \n-
    101 typename std::remove_const<GridImp>::type::HostGridType::LeafGridView::IndexSet::Types
    \n-
    102 >
    \n-
    103 {
    \n-
    104 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n-
    105
    \n-
    106 public:
    \n-
    107
    \n-
    108 typedef typename HostGrid::LevelGridView::IndexSet::Types Types;
    \n-
    109
    \n-
    110 /*
    \n-
    111 * We use the remove_const to extract the Type from the mutable class,
    \n-
    112 * because the const class is not instantiated yet.
    \n-
    113 */
    \n-
    114 constexpr static int dim = std::remove_const<GridImp>::type::dimension;
    \n-
    115
    \n-
    116
    \n-
    \n-
    118 IdentityGridLeafIndexSet (const GridImp& grid)
    \n-
    119 : grid_(&grid)
    \n-
    120 {}
    \n-
    \n-
    121
    \n-
    122
    \n-
    124 /*
    \n-
    125 We use the RemoveConst to extract the Type from the mutable class,
    \n-
    126 because the const class is not instantiated yet.
    \n-
    127 */
    \n-
    128 template<int codim>
    \n-
    \n-
    129 int index (const typename std::remove_const<GridImp>::type::template Codim<codim>::Entity& e) const
    \n-
    130 {
    \n-
    131 return grid_->hostgrid_->leafIndexSet().template index<codim>(grid_->template getHostEntity<codim>(e));
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    134
    \n-
    136 /*
    \n-
    137 We use the RemoveConst to extract the Type from the mutable class,
    \n-
    138 because the const class is not instantiated yet.
    \n-
    139 */
    \n-
    140 template<int cc>
    \n-
    \n-
    141 int subIndex (const typename std::remove_const<GridImp>::type::Traits::template Codim<cc>::Entity& e, int i, int codim) const
    \n-
    142 {
    \n-
    143 return grid_->hostgrid_->leafIndexSet().subIndex(grid_->template getHostEntity<cc>(e),i, codim);
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    146
    \n-
    \n-
    148 std::size_t size (GeometryType type) const
    \n-
    149 {
    \n-
    150 return grid_->hostgrid_->leafIndexSet().size(type);
    \n-
    151 }
    \n-
    \n-
    152
    \n-
    153
    \n-
    \n-
    155 std::size_t size (int codim) const
    \n-
    156 {
    \n-
    157 return grid_->hostgrid_->leafIndexSet().size(codim);
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    160
    \n-
    \n-
    162 const std::vector<GeometryType>& geomTypes (int codim) const
    \n-
    163 {
    \n-
    164 return grid_->hostgrid_->leafIndexSet().geomTypes(codim);
    \n-
    165 }
    \n-
    \n-
    166
    \n-
    \n-
    168 Types types (int codim) const
    \n-
    169 {
    \n-
    170 return grid_->hostgrid_->leafIndexSet().types(codim);
    \n-
    171 }
    \n-
    \n-
    172
    \n-
    174 template<class EntityType>
    \n-
    \n-
    175 bool contains (const EntityType& e) const
    \n-
    176 {
    \n-
    177 return grid_->hostgrid_->leafIndexSet().contains(grid_->template getHostEntity<EntityType::codimension>(e));
    \n-
    178 }
    \n-
    \n-
    179
    \n-
    180
    \n-
    181
    \n-
    \n-
    183 void update(const GridImp& grid)
    \n-
    184 {
    \n-
    185 grid_ = &grid;
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    188
    \n-
    189 GridImp* grid_;
    \n-
    190 };
    \n-
    \n-
    191
    \n-
    192
    \n-
    193
    \n-
    194
    \n-
    195 template <class GridImp>
    \n-
    \n-\n-
    197 public IdSet<GridImp,IdentityGridGlobalIdSet<GridImp>,
    \n-
    198 typename std::remove_const<GridImp>::type::HostGridType::Traits::GlobalIdSet::IdType>
    \n-
    199 {
    \n-
    200
    \n-
    201 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n-
    202
    \n-
    203
    \n-
    204 public:
    \n-
    206 IdentityGridGlobalIdSet (const GridImp& g) : grid_(&g) {}
    \n-
    207
    \n-
    209 typedef typename HostGrid::Traits::GlobalIdSet::IdType IdType;
    \n-
    210
    \n-
    211
    \n-
    213 /*
    \n-
    214 We use the remove_const to extract the Type from the mutable class,
    \n-
    215 because the const class is not instantiated yet.
    \n-
    216 */
    \n-
    217 template<int cd>
    \n-
    \n-
    218 IdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
    \n-
    219 {
    \n-
    220 // Return id of the host entity
    \n-
    221 return grid_->hostgrid_->globalIdSet().id(e.impl().hostEntity_);
    \n-
    222 }
    \n-
    \n-
    223
    \n-
    224
    \n-
    226 /*
    \n-
    227 We use the remove_const to extract the Type from the mutable class,
    \n-
    228 because the const class is not instantiated yet.
    \n-
    229 */
    \n-
    \n-
    230 IdType subId (const typename std::remove_const<GridImp>::type::Traits::template Codim<0>::Entity& e, int i, int codim) const
    \n-
    231 {
    \n-
    232 // Return sub id of the host entity
    \n-
    233 return grid_->hostgrid_->globalIdSet().subId(e.impl().hostEntity_,i, codim);
    \n-
    234 }
    \n-
    \n-
    235
    \n-
    236
    \n-
    238 void update() {}
    \n-
    239
    \n-
    240
    \n-
    241 const GridImp* grid_;
    \n-
    242 };
    \n-
    \n-
    243
    \n-
    244
    \n-
    245
    \n-
    246
    \n-
    247 template<class GridImp>
    \n-
    \n-\n-
    249 public IdSet<GridImp,IdentityGridLocalIdSet<GridImp>,
    \n-
    250 typename std::remove_const<GridImp>::type::HostGridType::Traits::LocalIdSet::IdType>
    \n-
    251 {
    \n-
    252 private:
    \n-
    253
    \n-
    254 typedef typename std::remove_const<GridImp>::type::HostGridType HostGrid;
    \n-
    255
    \n-
    256
    \n-
    257 public:
    \n-
    259 typedef typename HostGrid::Traits::LocalIdSet::IdType IdType;
    \n-
    260
    \n-
    261
    \n-
    263 IdentityGridLocalIdSet (const GridImp& g) : grid_(&g) {}
    \n-
    264
    \n-
    265
    \n-
    267 /*
    \n-
    268 We use the remove_const to extract the Type from the mutable class,
    \n-
    269 because the const class is not instantiated yet.
    \n-
    270 */
    \n-
    271 template<int cd>
    \n-
    \n-
    272 IdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
    \n-
    273 {
    \n-
    274 // Return id of the host entity
    \n-
    275 return grid_->hostgrid_->localIdSet().id(e.impl().hostEntity_);
    \n-
    276 }
    \n-
    \n-
    277
    \n-
    278
    \n-
    280 /*
    \n-
    281 * We use the remove_const to extract the Type from the mutable class,
    \n-
    282 * because the const class is not instantiated yet.
    \n-
    283 */
    \n-
    \n-
    284 IdType subId (const typename std::remove_const<GridImp>::type::template Codim<0>::Entity& e, int i, int codim) const
    \n-
    285 {
    \n-
    286 // Return sub id of the host entity
    \n-
    287 return grid_->hostgrid_->localIdSet().subId(e.impl().hostEntity_,i,codim);
    \n-
    288 }
    \n-
    \n-
    289
    \n-
    290
    \n-
    292 void update() {}
    \n-
    293
    \n-
    294
    \n-
    295 const GridImp* grid_;
    \n-
    296 };
    \n-
    \n-
    297
    \n-
    298
    \n-
    299} // namespace Dune
    \n-
    300
    \n-
    301
    \n-
    302#endif
    \n-
    Provides base classes for index and id sets.
    \n+
    75#endif
    \n+\n+
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n-
    Id Set Interface.
    Definition indexidset.hh:452
    \n-
    Definition identitygridindexsets.hh:26
    \n-
    bool contains(const EntityType &e) const
    Return true if the given entity is contained in the index set.
    Definition identitygridindexsets.hh:77
    \n-
    int index(const typename GridImp::Traits::template Codim< codim >::Entity &e) const
    get index of an entity
    Definition identitygridindexsets.hh:36
    \n-
    GridImp * grid_
    Definition identitygridindexsets.hh:90
    \n-
    std::remove_const< GridImp >::type::HostGridType HostGrid
    Definition identitygridindexsets.hh:29
    \n-
    const std::vector< GeometryType > & geomTypes(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:64
    \n-
    Types types(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:70
    \n-
    std::size_t size(GeometryType type) const
    get number of entities of given codim, type and on this level
    Definition identitygridindexsets.hh:57
    \n-
    static constexpr int dim
    Definition identitygridindexsets.hh:32
    \n-
    HostGrid::LevelGridView::IndexSet::Types Types
    Definition identitygridindexsets.hh:30
    \n-
    std::size_t size(int codim) const
    get number of entities of given codim, type and on this level
    Definition identitygridindexsets.hh:51
    \n-
    int subIndex(const typename GridImp::Traits::template Codim< cc >::Entity &e, int i, int codim) const
    get index of subEntity of a codim 0 entity
    Definition identitygridindexsets.hh:44
    \n-
    int level_
    Definition identitygridindexsets.hh:92
    \n-
    void update(const GridImp &grid, int level)
    Set up the index set.
    Definition identitygridindexsets.hh:83
    \n-
    Definition identitygridindexsets.hh:103
    \n-
    IdentityGridLeafIndexSet(const GridImp &grid)
    constructor stores reference to a grid and level
    Definition identitygridindexsets.hh:118
    \n-
    static constexpr int dim
    Definition identitygridindexsets.hh:114
    \n-
    std::size_t size(int codim) const
    get number of entities of given codim
    Definition identitygridindexsets.hh:155
    \n-
    bool contains(const EntityType &e) const
    Return true if the given entity is contained in the index set.
    Definition identitygridindexsets.hh:175
    \n-
    std::size_t size(GeometryType type) const
    get number of entities of given type
    Definition identitygridindexsets.hh:148
    \n-
    HostGrid::LevelGridView::IndexSet::Types Types
    Definition identitygridindexsets.hh:108
    \n-
    int index(const typename std::remove_const< GridImp >::type::template Codim< codim >::Entity &e) const
    get index of an entity
    Definition identitygridindexsets.hh:129
    \n-
    int subIndex(const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e, int i, int codim) const
    get index of subEntity of a codim 0 entity
    Definition identitygridindexsets.hh:141
    \n-
    Types types(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:168
    \n-
    GridImp * grid_
    Definition identitygridindexsets.hh:189
    \n-
    void update(const GridImp &grid)
    Definition identitygridindexsets.hh:183
    \n-
    const std::vector< GeometryType > & geomTypes(int codim) const
    Deliver all geometry types used in this grid.
    Definition identitygridindexsets.hh:162
    \n-
    Definition identitygridindexsets.hh:199
    \n-
    IdentityGridGlobalIdSet(const GridImp &g)
    constructor stores reference to a grid
    Definition identitygridindexsets.hh:206
    \n-
    void update()
    Definition identitygridindexsets.hh:238
    \n-
    const GridImp * grid_
    Definition identitygridindexsets.hh:241
    \n-
    HostGrid::Traits::GlobalIdSet::IdType IdType
    define the type used for persistent indices
    Definition identitygridindexsets.hh:209
    \n-
    IdType subId(const typename std::remove_const< GridImp >::type::Traits::template Codim< 0 >::Entity &e, int i, int codim) const
    get id of subEntity
    Definition identitygridindexsets.hh:230
    \n-
    IdType id(const typename std::remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
    get id of an entity
    Definition identitygridindexsets.hh:218
    \n-
    Definition identitygridindexsets.hh:251
    \n-
    IdType subId(const typename std::remove_const< GridImp >::type::template Codim< 0 >::Entity &e, int i, int codim) const
    get id of subEntity
    Definition identitygridindexsets.hh:284
    \n-
    IdentityGridLocalIdSet(const GridImp &g)
    constructor stores reference to a grid
    Definition identitygridindexsets.hh:263
    \n-
    const GridImp * grid_
    Definition identitygridindexsets.hh:295
    \n-
    void update()
    Definition identitygridindexsets.hh:292
    \n-
    IdType id(const typename std::remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
    get id of an entity
    Definition identitygridindexsets.hh:272
    \n-
    HostGrid::Traits::LocalIdSet::IdType IdType
    define the type used for persistent local ids
    Definition identitygridindexsets.hh:259
    \n+
    Iterator over all entities of a given codimension and level of a grid.
    Definition identitygridleafiterator.hh:22
    \n+
    Entity dereference() const
    dereferencing
    Definition identitygridleafiterator.hh:56
    \n+
    bool equals(const IdentityGridLeafIterator &i) const
    equality
    Definition identitygridleafiterator.hh:61
    \n+
    IdentityGridLeafIterator(const GridImp *identityGrid, bool endDummy)
    Constructor which create the end iterator.
    Definition identitygridleafiterator.hh:44
    \n+
    static constexpr int codimension
    Definition identitygridleafiterator.hh:30
    \n+
    GridImp::template Codim< codim >::Entity Entity
    Definition identitygridleafiterator.hh:32
    \n+
    IdentityGridLeafIterator(const GridImp *identityGrid)
    Definition identitygridleafiterator.hh:35
    \n+
    void increment()
    prefix increment
    Definition identitygridleafiterator.hh:51
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,465 +1,113 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd\n-identitygridindexsets.hh\n+identitygridleafiterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IDENTITYGRID_INDEXSETS_HH\n-6#define DUNE_IDENTITYGRID_INDEXSETS_HH\n+5#ifndef DUNE_IDENTITYGRIDLEAFITERATOR_HH\n+6#define DUNE_IDENTITYGRIDLEAFITERATOR_HH\n 7\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh>\n-13\n-14#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+9\n+14namespace _\bD_\bu_\bn_\be {\n 15\n-16namespace _\bD_\bu_\bn_\be {\n-17\n-19 template\n-_\b2_\b0 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt :\n-21 public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt,\n-23 typename std::remove_const::type::HostGridType::LevelGridView::\n-IndexSet::IndexType,\n-24 typename std::remove_const::type::HostGridType::LevelGridView::\n-IndexSet::Types\n-25 >\n-26 {\n-27 public:\n-28\n-_\b2_\b9 typedef typename std::remove_const::type::HostGridType _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n-_\b3_\b0 typedef typename HostGrid::LevelGridView::IndexSet::Types _\bT_\by_\bp_\be_\bs;\n+16\n+20 template\n+_\b2_\b1 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+22 {\n+23 private:\n+24\n+25 // LevelIterator to the equivalent entity in the host grid\n+26 typedef typename GridImp::HostGridType::template Codim::template\n+Partition::LeafIterator HostGridLeafIterator;\n+27\n+28 public:\n+29\n+_\b3_\b0 constexpr static int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n 31\n-_\b3_\b2 constexpr static int _\bd_\bi_\bm = GridImp::dimension;\n+_\b3_\b2 typedef typename GridImp::template Codim::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n 33\n-35 template\n-_\b3_\b6 int _\bi_\bn_\bd_\be_\bx (const typename GridImp::Traits::template Codim::Entity& e)\n-const\n-37 {\n-38 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).template index(_\bg_\br_\bi_\bd_\b_-\n->template getHostEntity(e));\n-39 }\n-40\n-41\n-43 template\n-_\b4_\b4 int _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename GridImp::Traits::template Codim::Entity& e,\n-int i, int codim) const\n-45 {\n-46 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).subIndex(_\bg_\br_\bi_\bd_\b_->template\n-getHostEntity(e), i, codim);\n-47 }\n+_\b3_\b5 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid) :\n+36 identityGrid_(identityGrid),\n+37 hostLeafIterator_(identityGrid->hostgrid_->_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw().template\n+begin())\n+38 {}\n+39\n+_\b4_\b4 explicit _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridImp* identityGrid, [\n+[maybe_unused]] bool endDummy) :\n+45 identityGrid_(identityGrid),\n+46 hostLeafIterator_(identityGrid->hostgrid_->_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw().template\n+end())\n+47 {}\n 48\n 49\n-_\b5_\b1 std::size_t _\bs_\bi_\bz_\be (int codim) const {\n-52 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).size(codim);\n+_\b5_\b1 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n+52 ++hostLeafIterator_;\n 53 }\n 54\n-55\n-_\b5_\b7 std::size_t _\bs_\bi_\bz_\be (GeometryType type) const\n-58 {\n-59 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).size(type);\n-60 }\n-61\n-62\n-_\b6_\b4 const std::vector& _\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs (int codim) const\n-65 {\n-66 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).geomTypes(codim);\n-67 }\n-68\n-_\b7_\b0 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs (int codim) const\n-71 {\n-72 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).types(codim);\n-73 }\n+_\b5_\b6 _\bE_\bn_\bt_\bi_\bt_\by _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n+57 return _\bE_\bn_\bt_\bi_\bt_\by{{identityGrid_,*hostLeafIterator_}};\n+58 }\n+59\n+_\b6_\b1 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const {\n+62 return hostLeafIterator_ == i.hostLeafIterator_;\n+63 }\n+64\n+65 private:\n+66 const GridImp* identityGrid_;\n+67\n+68 HostGridLeafIterator hostLeafIterator_;\n+69\n+70 };\n+71\n+72\n+73} // namespace Dune\n 74\n-76 template\n-_\b7_\b7 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e) const\n-78 {\n-79 return _\bg_\br_\bi_\bd_\b_->hostgrid_->levelIndexSet(_\bl_\be_\bv_\be_\bl_\b_).contains(_\bg_\br_\bi_\bd_\b_->template\n-getHostEntity(e));\n-80 }\n-81\n-_\b8_\b3 void _\bu_\bp_\bd_\ba_\bt_\be(const GridImp& grid, int level)\n-84 {\n-85 _\bg_\br_\bi_\bd_\b_ = &grid;\n-86 _\bl_\be_\bv_\be_\bl_\b_ = level;\n-87 }\n-88\n-89\n-_\b9_\b0 GridImp* _\bg_\br_\bi_\bd_\b_;\n-91\n-_\b9_\b2 int _\bl_\be_\bv_\be_\bl_\b_;\n-93 };\n-94\n-95\n-96 template\n-_\b9_\b7 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt :\n-98 public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt,\n-100 typename std::remove_const::type::HostGridType::LeafGridView::\n-IndexSet::IndexType,\n-101 typename std::remove_const::type::HostGridType::LeafGridView::\n-IndexSet::Types\n-102 >\n-103 {\n-104 typedef typename std::remove_const::type::HostGridType HostGrid;\n-105\n-106 public:\n-107\n-_\b1_\b0_\b8 typedef typename HostGrid::LevelGridView::IndexSet::Types _\bT_\by_\bp_\be_\bs;\n-109\n-110 /*\n-111 * We use the remove_const to extract the Type from the mutable class,\n-112 * because the const class is not instantiated yet.\n-113 */\n-_\b1_\b1_\b4 constexpr static int _\bd_\bi_\bm = std::remove_const::type::dimension;\n-115\n-116\n-_\b1_\b1_\b8 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt (const GridImp& grid)\n-119 : _\bg_\br_\bi_\bd_\b_(&grid)\n-120 {}\n-121\n-122\n-124 /*\n-125 We use the RemoveConst to extract the Type from the mutable class,\n-126 because the const class is not instantiated yet.\n-127 */\n-128 template\n-_\b1_\b2_\b9 int _\bi_\bn_\bd_\be_\bx (const typename std::remove_const::type::template\n-Codim::Entity& e) const\n-130 {\n-131 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().template index(_\bg_\br_\bi_\bd_\b_-\n->template getHostEntity(e));\n-132 }\n-133\n-134\n-136 /*\n-137 We use the RemoveConst to extract the Type from the mutable class,\n-138 because the const class is not instantiated yet.\n-139 */\n-140 template\n-_\b1_\b4_\b1 int _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename std::remove_const::type::Traits::\n-template Codim::Entity& e, int i, int codim) const\n-142 {\n-143 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().subIndex(_\bg_\br_\bi_\bd_\b_->template\n-getHostEntity(e),i, codim);\n-144 }\n-145\n-146\n-_\b1_\b4_\b8 std::size_t _\bs_\bi_\bz_\be (GeometryType type) const\n-149 {\n-150 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().size(type);\n-151 }\n-152\n-153\n-_\b1_\b5_\b5 std::size_t _\bs_\bi_\bz_\be (int codim) const\n-156 {\n-157 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().size(codim);\n-158 }\n-159\n-160\n-_\b1_\b6_\b2 const std::vector& _\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs (int codim) const\n-163 {\n-164 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().geomTypes(codim);\n-165 }\n-166\n-_\b1_\b6_\b8 _\bT_\by_\bp_\be_\bs _\bt_\by_\bp_\be_\bs (int codim) const\n-169 {\n-170 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().types(codim);\n-171 }\n-172\n-174 template\n-_\b1_\b7_\b5 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e) const\n-176 {\n-177 return _\bg_\br_\bi_\bd_\b_->hostgrid_->leafIndexSet().contains(_\bg_\br_\bi_\bd_\b_->template\n-getHostEntity(e));\n-178 }\n-179\n-180\n-181\n-_\b1_\b8_\b3 void _\bu_\bp_\bd_\ba_\bt_\be(const GridImp& grid)\n-184 {\n-185 _\bg_\br_\bi_\bd_\b_ = &grid;\n-186 }\n-187\n-188\n-_\b1_\b8_\b9 GridImp* _\bg_\br_\bi_\bd_\b_;\n-190 };\n-191\n-192\n-193\n-194\n-195 template \n-_\b1_\b9_\b6 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt :\n-197 public _\bI_\bd_\bS_\be_\bt,\n-198 typename std::remove_const::type::HostGridType::Traits::\n-GlobalIdSet::IdType>\n-199 {\n-200\n-201 typedef typename std::remove_const::type::HostGridType HostGrid;\n-202\n-203\n-204 public:\n-_\b2_\b0_\b6 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt (const GridImp& g) : _\bg_\br_\bi_\bd_\b_(&g) {}\n-207\n-_\b2_\b0_\b9 typedef typename HostGrid::Traits::GlobalIdSet::IdType _\bI_\bd_\bT_\by_\bp_\be;\n-210\n-211\n-213 /*\n-214 We use the remove_const to extract the Type from the mutable class,\n-215 because the const class is not instantiated yet.\n-216 */\n-217 template\n-_\b2_\b1_\b8 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename std::remove_const::type::Traits::\n-template Codim::Entity& e) const\n-219 {\n-220 // Return id of the host entity\n-221 return _\bg_\br_\bi_\bd_\b_->hostgrid_->globalIdSet().id(e.impl().hostEntity_);\n-222 }\n-223\n-224\n-226 /*\n-227 We use the remove_const to extract the Type from the mutable class,\n-228 because the const class is not instantiated yet.\n-229 */\n-_\b2_\b3_\b0 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename std::remove_const::type::Traits::\n-template Codim<0>::Entity& e, int i, int codim) const\n-231 {\n-232 // Return sub id of the host entity\n-233 return _\bg_\br_\bi_\bd_\b_->hostgrid_->globalIdSet().subId(e.impl().hostEntity_,i,\n-codim);\n-234 }\n-235\n-236\n-_\b2_\b3_\b8 void _\bu_\bp_\bd_\ba_\bt_\be() {}\n-239\n-240\n-_\b2_\b4_\b1 const GridImp* _\bg_\br_\bi_\bd_\b_;\n-242 };\n-243\n-244\n-245\n-246\n-247 template\n-_\b2_\b4_\b8 class _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt :\n-249 public _\bI_\bd_\bS_\be_\bt,\n-250 typename std::remove_const::type::HostGridType::Traits::\n-LocalIdSet::IdType>\n-251 {\n-252 private:\n-253\n-254 typedef typename std::remove_const::type::HostGridType HostGrid;\n-255\n-256\n-257 public:\n-_\b2_\b5_\b9 typedef typename HostGrid::Traits::LocalIdSet::IdType _\bI_\bd_\bT_\by_\bp_\be;\n-260\n-261\n-_\b2_\b6_\b3 _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt (const GridImp& g) : _\bg_\br_\bi_\bd_\b_(&g) {}\n-264\n-265\n-267 /*\n-268 We use the remove_const to extract the Type from the mutable class,\n-269 because the const class is not instantiated yet.\n-270 */\n-271 template\n-_\b2_\b7_\b2 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd (const typename std::remove_const::type::Traits::\n-template Codim::Entity& e) const\n-273 {\n-274 // Return id of the host entity\n-275 return _\bg_\br_\bi_\bd_\b_->hostgrid_->localIdSet().id(e.impl().hostEntity_);\n-276 }\n-277\n-278\n-280 /*\n-281 * We use the remove_const to extract the Type from the mutable class,\n-282 * because the const class is not instantiated yet.\n-283 */\n-_\b2_\b8_\b4 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd (const typename std::remove_const::type::template\n-Codim<0>::Entity& e, int i, int codim) const\n-285 {\n-286 // Return sub id of the host entity\n-287 return _\bg_\br_\bi_\bd_\b_->hostgrid_->localIdSet().subId(e.impl().hostEntity_,i,codim);\n-288 }\n-289\n-290\n-_\b2_\b9_\b2 void _\bu_\bp_\bd_\ba_\bt_\be() {}\n-293\n-294\n-_\b2_\b9_\b5 const GridImp* _\bg_\br_\bi_\bd_\b_;\n-296 };\n-297\n-298\n-299} // namespace Dune\n-300\n-301\n-302#endif\n-_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n-Provides base classes for index and id sets.\n+75#endif\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n+dim, dimworld, ct, GridFamily > &grid)\n+leaf grid view for the given grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:819\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Index Set Interface base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-Id Set Interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const EntityType &e) const\n-Return true if the given entity is contained in the index set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-int index(const typename GridImp::Traits::template Codim< codim >::Entity &e)\n-const\n-get index of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n-GridImp * grid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-std::remove_const< GridImp >::type::HostGridType HostGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs\n-const std::vector< GeometryType > & geomTypes(int codim) const\n-Deliver all geometry types used in this grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n-Types types(int codim) const\n-Deliver all geometry types used in this grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(GeometryType type) const\n-get number of entities of given codim, type and on this level\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm\n-static constexpr int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bT_\by_\bp_\be_\bs\n-HostGrid::LevelGridView::IndexSet::Types Types\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(int codim) const\n-get number of entities of given codim, type and on this level\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-int subIndex(const typename GridImp::Traits::template Codim< cc >::Entity &e,\n-int i, int codim) const\n-get index of subEntity of a codim 0 entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bl_\be_\bv_\be_\bl_\b_\n-int level_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(const GridImp &grid, int level)\n-Set up the index set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-IdentityGridLeafIndexSet(const GridImp &grid)\n-constructor stores reference to a grid and level\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm\n-static constexpr int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(int codim) const\n-get number of entities of given codim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const EntityType &e) const\n-Return true if the given entity is contained in the index set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(GeometryType type) const\n-get number of entities of given type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bT_\by_\bp_\be_\bs\n-HostGrid::LevelGridView::IndexSet::Types Types\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-int index(const typename std::remove_const< GridImp >::type::template Codim<\n-codim >::Entity &e) const\n-get index of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-int subIndex(const typename std::remove_const< GridImp >::type::Traits::\n-template Codim< cc >::Entity &e, int i, int codim) const\n-get index of subEntity of a codim 0 entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n-Types types(int codim) const\n-Deliver all geometry types used in this grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:168\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n-GridImp * grid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(const GridImp &grid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:183\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs\n-const std::vector< GeometryType > & geomTypes(int codim) const\n-Deliver all geometry types used in this grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-IdentityGridGlobalIdSet(const GridImp &g)\n-constructor stores reference to a grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:206\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n-const GridImp * grid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:241\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n-HostGrid::Traits::GlobalIdSet::IdType IdType\n-define the type used for persistent indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename std::remove_const< GridImp >::type::Traits::\n-template Codim< 0 >::Entity &e, int i, int codim) const\n-get id of subEntity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const typename std::remove_const< GridImp >::type::Traits::template\n-Codim< cd >::Entity &e) const\n-get id of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:251\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename std::remove_const< GridImp >::type::template Codim<\n-0 >::Entity &e, int i, int codim) const\n-get id of subEntity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:284\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-IdentityGridLocalIdSet(const GridImp &g)\n-constructor stores reference to a grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:263\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\b_\n-const GridImp * grid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:295\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n-IdType id(const typename std::remove_const< GridImp >::type::Traits::template\n-Codim< cd >::Entity &e) const\n-get id of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:272\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n-HostGrid::Traits::LocalIdSet::IdType IdType\n-define the type used for persistent local ids\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridindexsets.hh:259\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over all entities of a given codimension and level of a grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Entity dereference() const\n+dereferencing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const IdentityGridLeafIterator &i) const\n+equality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IdentityGridLeafIterator(const GridImp *identityGrid, bool endDummy)\n+Constructor which create the end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IdentityGridLeafIterator(const GridImp *identityGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+prefix increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygridleafiterator.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-grid-doc/doxygen/a00755.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00755.html", "unified_diff": "@@ -78,16 +78,16 @@\n Namespaces
    \n
    identitygridintersectioniterator.hh File Reference
    \n
    \n
    \n \n

    The IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes. \n More...

    \n-
    #include "identitygridintersections.hh"
    \n-#include "identitygridentity.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00755_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00755_source.html", "unified_diff": "@@ -84,16 +84,16 @@\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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_IDENTITYGRID_INTERSECTIONITERATOR_HH
    \n
    6#define DUNE_IDENTITYGRID_INTERSECTIONITERATOR_HH
    \n
    7
    \n-\n-\n+\n+\n
    10
    \n \n
    12
    \n
    17namespace Dune {
    \n
    18
    \n
    27 template<class GridImp>
    \n
    \n@@ -216,16 +216,16 @@\n
    129 };
    \n
    \n
    130
    \n
    131
    \n
    132} // namespace Dune
    \n
    133
    \n
    134#endif
    \n-
    The IdentityGridEntity class.
    \n-
    The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.
    \n+
    The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.
    \n+
    The IdentityGridEntity class.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    Definition identitygridintersectioniterator.hh:84
    \n
    bool equals(const IdentityGridLevelIntersectionIterator< GridImp > &other) const
    equality
    Definition identitygridintersectioniterator.hh:108
    \n
    void increment()
    prefix increment
    Definition identitygridintersectioniterator.hh:114
    \n
    IdentityGridLevelIntersectionIterator(const GridImp *identityGrid, const HostLevelIntersectionIterator &hostIterator)
    Definition identitygridintersectioniterator.hh:101
    \n
    Dune::Intersection< const GridImp, Dune::IdentityGridLevelIntersection< GridImp > > Intersection
    Definition identitygridintersectioniterator.hh:96
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -125,18 +125,18 @@\n 128\n 129 };\n 130\n 131\n 132} // namespace Dune\n 133\n 134#endif\n-_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n-The IdentityGridEntity class.\n _\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bh\n The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.\n+_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n+The IdentityGridEntity class.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n element or with the d...\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00758.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00758.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: starcdreader.hh File Reference\n+dune-grid: corner.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,41 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    starcdreader.hh File Reference
    \n+
    corner.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/exceptions.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/gridfactory.hh>
    \n-#include <iostream>
    \n-#include <fstream>
    \n-#include <memory>
    \n+\n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::IdentityGridLeafIntersectionIterator< GridImp >
    \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::StarCDReader< GridType >
     File reader for the Star-CD format. More...
    class  Dune::VTK::Corner< Cell >
     simple class representing a corner of a cell More...
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,24 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-starcdreader.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include \n-#include \n-#include \n+corner.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\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:_\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 File reader for the Star-CD format. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n+\u00a0 simple class representing a corner of a cell _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00758_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00758_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: starcdreader.hh Source File\n+dune-grid: corner.hh Source File\n \n \n \n \n \n \n \n@@ -70,180 +70,87 @@\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n-
    starcdreader.hh
    \n+
    corner.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_STARCD_READER_HH
    \n-
    6#define DUNE_STARCD_READER_HH
    \n-
    7
    \n-
    8#include <dune/common/exceptions.hh>
    \n-
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-\n-
    12#include <iostream>
    \n-
    13#include <fstream>
    \n-
    14#include <memory>
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_CORNER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_CORNER_HH
    \n+
    8
    \n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n
    15
    \n-
    16namespace Dune {
    \n+
    16 namespace VTK {
    \n
    17
    \n-
    51 template <class GridType>
    \n-
    \n-\n+
    19
    \n+
    24 template<typename Cell>
    \n+
    \n+
    25 class Corner {
    \n+
    26 // store a pointer to the element
    \n+
    27 const Cell* cell_;
    \n+
    28 // store index of the corner within element (Dune numbering)
    \n+
    29 unsigned index;
    \n+
    30
    \n+
    31 public:
    \n+
    33
    \n+
    \n+
    38 Corner(const Cell& cell, unsigned duneIndex)
    \n+
    39 : cell_(&cell), index(duneIndex)
    \n+
    40 { }
    \n+
    \n+
    41
    \n+
    43 Corner() { }
    \n+
    44
    \n+
    46 const Cell& cell() const { return *cell_; }
    \n+
    48
    \n+
    52 void cell(const Cell& cell__) { cell_ = &cell__; index = 0; }
    \n
    53
    \n-
    54 public:
    \n-
    55
    \n-
    \n-
    65 static std::unique_ptr<GridType> read(const std::string& fileName, bool verbose = true)
    \n-
    66 {
    \n-
    67 // extract the grid dimension
    \n-
    68 const int dim = GridType::dimension;
    \n-
    69
    \n-
    70 // currently only dim = 3 is implemented
    \n-
    71 if (dim != 3)
    \n-
    72 DUNE_THROW(Dune::NotImplemented,
    \n-
    73 "Reading Star-CD format is not implemented for dimension " << dim);
    \n+
    55 unsigned duneIndex() const { return index; }
    \n+
    57 void duneIndex(unsigned i) { index = i; }
    \n+
    58
    \n+
    60
    \n+
    63 unsigned vtkIndex() const { return renumber(cell_->type(), index); }
    \n+
    65
    \n+
    68 void vtkIndex(unsigned i) { index = renumber(cell_->type(), i); }
    \n+
    69 };
    \n+
    \n+
    70
    \n+
    71 } // namespace VTK
    \n+
    72
    \n
    74
    \n-
    75 // set up the grid factory
    \n-\n-
    77
    \n-
    78 // set the name of the vertex file
    \n-
    79 std::string vertexFileName = fileName + ".vrt";
    \n-
    80
    \n-
    81 // set the vertex input stream
    \n-
    82 std::ifstream vertexFile(vertexFileName.c_str());
    \n-
    83 if (!vertexFile)
    \n-
    84 DUNE_THROW(Dune::IOError, "Could not open " << vertexFileName);
    \n-
    85
    \n-
    86 // read the vertices
    \n-
    87 int dummyIdx;
    \n-
    88 int numberOfVertices = 0;
    \n-
    89 while (vertexFile >> dummyIdx) {
    \n-
    90 numberOfVertices++;
    \n-
    91
    \n-
    92 Dune::FieldVector<double,dim> position;
    \n-
    93
    \n-
    94 for (int k = 0; k < dim; k++)
    \n-
    95 vertexFile >> position[k];
    \n-
    96
    \n-
    97 factory.insertVertex(position);
    \n-
    98 }
    \n-
    99 if (verbose)
    \n-
    100 std::cout << numberOfVertices << " vertices read." << std::endl;
    \n-
    101
    \n-
    102 // set the name of the element file
    \n-
    103 std::string elementFileName = fileName + ".cel";
    \n-
    104
    \n-
    105 // set the element input stream
    \n-
    106 std::ifstream elementFile(elementFileName.c_str());
    \n-
    107 if (!elementFile)
    \n-
    108 DUNE_THROW(Dune::IOError, "Could not open " << elementFileName);
    \n-
    109
    \n-
    110 // read the elements
    \n-
    111 int numberOfElements = 0;
    \n-
    112 int numberOfSimplices = 0;
    \n-
    113 int numberOfPyramids = 0;
    \n-
    114 int numberOfPrisms = 0;
    \n-
    115 int numberOfCubes = 0;;
    \n-
    116 int maxNumberOfVertices = (int)pow(2, dim);
    \n-
    117 int isVolume = 1;
    \n-
    118 while (elementFile >> dummyIdx) {
    \n-
    119 std::vector<unsigned int> vertices(maxNumberOfVertices);
    \n-
    120 for (int k = 0; k < maxNumberOfVertices; k++)
    \n-
    121 elementFile >> vertices[k];
    \n-
    122
    \n-
    123 int boundaryId;
    \n-
    124 elementFile >> boundaryId;
    \n-
    125
    \n-
    126 int volumeOrSurface[2];
    \n-
    127 elementFile >> volumeOrSurface[0] >> volumeOrSurface[1];
    \n-
    128
    \n-
    129 if (volumeOrSurface[0] == isVolume) {
    \n-
    130 numberOfElements++;
    \n-
    131
    \n-
    132 if (vertices[2] == vertices[3]) { // simplex or prism
    \n-
    133 if (vertices[4] == vertices[5]) { // simplex
    \n-
    134 numberOfSimplices++;
    \n-
    135 std::vector<unsigned int> simplexVertices(4);
    \n-
    136 for (int k = 0; k < 3; k++)
    \n-
    137 simplexVertices[k] = vertices[k] - 1;
    \n-
    138 simplexVertices[3] = vertices[4] - 1;
    \n-
    139 factory.insertElement(Dune::GeometryTypes::tetrahedron, simplexVertices);
    \n-
    140 }
    \n-
    141 else { // prism
    \n-
    142 numberOfPrisms++;
    \n-
    143 std::vector<unsigned int> prismVertices(6);
    \n-
    144 for (int k = 0; k < 3; k++)
    \n-
    145 prismVertices[k] = vertices[k] - 1;
    \n-
    146 for (int k = 3; k < 6; k++)
    \n-
    147 prismVertices[k] = vertices[k+1] - 1;
    \n-
    148 factory.insertElement(Dune::GeometryTypes::prism, prismVertices);
    \n-
    149 }
    \n-
    150 }
    \n-
    151 else { // cube or pyramid
    \n-
    152 if (vertices[4] == vertices[5]) { // pyramid
    \n-
    153 numberOfPyramids++;
    \n-
    154 std::vector<unsigned int> pyramidVertices(5);
    \n-
    155 for (int k = 0; k < 5; k++)
    \n-
    156 pyramidVertices[k] = vertices[k] - 1;
    \n-
    157 factory.insertElement(Dune::GeometryTypes::pyramid, pyramidVertices);
    \n-
    158 }
    \n-
    159 else { // cube
    \n-
    160 numberOfCubes++;
    \n-
    161 std::vector<unsigned int> cubeVertices(8);
    \n-
    162 for (int k = 0; k < 8; k++)
    \n-
    163 cubeVertices[k] = vertices[k] - 1;
    \n-
    164 std::swap(cubeVertices[2], cubeVertices[3]);
    \n-
    165 std::swap(cubeVertices[6], cubeVertices[7]);
    \n-
    166 factory.insertElement(Dune::GeometryTypes::hexahedron, cubeVertices);
    \n-
    167 }
    \n-
    168 }
    \n-
    169 }
    \n-
    170 }
    \n-
    171 if (verbose)
    \n-
    172 std::cout << numberOfElements << " elements read: "
    \n-
    173 << numberOfSimplices << " simplices, " << numberOfPyramids << " pyramids, "
    \n-
    174 << numberOfPrisms << " prisms, " << numberOfCubes << " cubes." << std::endl;
    \n-
    175
    \n-
    176 // finish off the construction of the grid object
    \n-
    177 if (verbose)
    \n-
    178 std::cout << "Starting createGrid() ... " << std::flush;
    \n-
    179
    \n-
    180 return factory.createGrid();
    \n-
    181
    \n-
    182 }
    \n-
    \n-
    183
    \n-
    184 };
    \n-
    \n-
    185
    \n-
    186}
    \n-
    187
    \n-
    188#endif
    \n-
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n+
    75} // namespace Dune
    \n+
    76
    \n+
    77#endif // DUNE_GRID_IO_FILE_VTK_CORNER_HH
    \n+
    Common stuff for the VTKWriter.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n-
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)
    Insert an element into the coarse grid.
    Definition common/gridfactory.hh:346
    \n-
    virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)
    Insert a vertex into the coarse grid.
    Definition common/gridfactory.hh:335
    \n-
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n-
    File reader for the Star-CD format.
    Definition starcdreader.hh:52
    \n-
    static std::unique_ptr< GridType > read(const std::string &fileName, bool verbose=true)
    Read grid from a Star-CD file.
    Definition starcdreader.hh:65
    \n-
    Provide a generic factory class for unstructured grids.
    \n+
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n+
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n+
    unsigned vtkIndex() const
    get the index of the corner within the cell in VTK-numbering
    Definition corner.hh:63
    \n+
    void vtkIndex(unsigned i)
    set the index of the corner within the cell in VTK-numbering
    Definition corner.hh:68
    \n+
    Corner(const Cell &cell, unsigned duneIndex)
    construct a Corner
    Definition corner.hh:38
    \n+
    void cell(const Cell &cell__)
    set a new cell
    Definition corner.hh:52
    \n+
    void duneIndex(unsigned i)
    set the index of the corner within the cell in Dune-numbering
    Definition corner.hh:57
    \n+
    unsigned duneIndex() const
    get the index of the corner within the cell in Dune-numbering
    Definition corner.hh:55
    \n+
    const Cell & cell() const
    get reference to the cell
    Definition corner.hh:46
    \n+
    Corner()
    construct an invalid Corner
    Definition corner.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,193 +2,107 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-starcdreader.hh\n+ * _\bv_\bt_\bk\n+corner.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_STARCD_READER_HH\n-6#define DUNE_STARCD_READER_HH\n-7\n-8#include \n-9\n-10#include \n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-12#include \n-13#include \n-14#include \n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_CORNER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_CORNER_HH\n+8\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n 15\n-16namespace _\bD_\bu_\bn_\be {\n+16 namespace VTK {\n 17\n-51 template \n-_\b5_\b2 class _\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br {\n+19\n+24 template\n+_\b2_\b5 class _\bC_\bo_\br_\bn_\be_\br {\n+26 // store a pointer to the element\n+27 const Cell* cell_;\n+28 // store index of the corner within element (Dune numbering)\n+29 unsigned index;\n+30\n+31 public:\n+33\n+_\b3_\b8 _\bC_\bo_\br_\bn_\be_\br(const Cell& _\bc_\be_\bl_\bl, unsigned _\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx)\n+39 : cell_(&_\bc_\be_\bl_\bl), index(_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx)\n+40 { }\n+41\n+_\b4_\b3 _\bC_\bo_\br_\bn_\be_\br() { }\n+44\n+_\b4_\b6 const Cell& _\bc_\be_\bl_\bl() const { return *cell_; }\n+48\n+_\b5_\b2 void _\bc_\be_\bl_\bl(const Cell& cell__) { cell_ = &cell__; index = 0; }\n 53\n-54 public:\n-55\n-_\b6_\b5 static std::unique_ptr _\br_\be_\ba_\bd(const std::string& fileName, bool\n-verbose = true)\n-66 {\n-67 // extract the grid dimension\n-68 const int dim = GridType::dimension;\n-69\n-70 // currently only dim = 3 is implemented\n-71 if (dim != 3)\n-72 DUNE_THROW(Dune::NotImplemented,\n-73 \"Reading Star-CD format is not implemented for dimension \" << dim);\n+_\b5_\b5 unsigned _\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx() const { return index; }\n+_\b5_\b7 void _\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx(unsigned i) { index = i; }\n+58\n+60\n+_\b6_\b3 unsigned _\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx() const { return _\br_\be_\bn_\bu_\bm_\bb_\be_\br(cell_->type(), index); }\n+65\n+_\b6_\b8 void _\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(unsigned i) { index = _\br_\be_\bn_\bu_\bm_\bb_\be_\br(cell_->type(), i); }\n+69 };\n+70\n+71 } // namespace VTK\n+72\n 74\n-75 // set up the grid factory\n-76 _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b> factory;\n-77\n-78 // set the name of the vertex file\n-79 std::string vertexFileName = fileName + \".vrt\";\n-80\n-81 // set the vertex input stream\n-82 std::ifstream vertexFile(vertexFileName.c_str());\n-83 if (!vertexFile)\n-84 DUNE_THROW(Dune::IOError, \"Could not open \" << vertexFileName);\n-85\n-86 // read the vertices\n-87 int dummyIdx;\n-88 int numberOfVertices = 0;\n-89 while (vertexFile >> dummyIdx) {\n-90 numberOfVertices++;\n-91\n-92 Dune::FieldVector position;\n-93\n-94 for (int k = 0; k < dim; k++)\n-95 vertexFile >> position[k];\n-96\n-97 factory._\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx(position);\n-98 }\n-99 if (verbose)\n-100 std::cout << numberOfVertices << \" vertices read.\" << std::endl;\n-101\n-102 // set the name of the element file\n-103 std::string elementFileName = fileName + \".cel\";\n-104\n-105 // set the element input stream\n-106 std::ifstream elementFile(elementFileName.c_str());\n-107 if (!elementFile)\n-108 DUNE_THROW(Dune::IOError, \"Could not open \" << elementFileName);\n-109\n-110 // read the elements\n-111 int numberOfElements = 0;\n-112 int numberOfSimplices = 0;\n-113 int numberOfPyramids = 0;\n-114 int numberOfPrisms = 0;\n-115 int numberOfCubes = 0;;\n-116 int maxNumberOfVertices = (int)pow(2, dim);\n-117 int isVolume = 1;\n-118 while (elementFile >> dummyIdx) {\n-119 std::vector vertices(maxNumberOfVertices);\n-120 for (int k = 0; k < maxNumberOfVertices; k++)\n-121 elementFile >> vertices[k];\n-122\n-123 int boundaryId;\n-124 elementFile >> boundaryId;\n-125\n-126 int volumeOrSurface[2];\n-127 elementFile >> volumeOrSurface[0] >> volumeOrSurface[1];\n-128\n-129 if (volumeOrSurface[0] == isVolume) {\n-130 numberOfElements++;\n-131\n-132 if (vertices[2] == vertices[3]) { // simplex or prism\n-133 if (vertices[4] == vertices[5]) { // simplex\n-134 numberOfSimplices++;\n-135 std::vector simplexVertices(4);\n-136 for (int k = 0; k < 3; k++)\n-137 simplexVertices[k] = vertices[k] - 1;\n-138 simplexVertices[3] = vertices[4] - 1;\n-139 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::tetrahedron, simplexVertices);\n-140 }\n-141 else { // prism\n-142 numberOfPrisms++;\n-143 std::vector prismVertices(6);\n-144 for (int k = 0; k < 3; k++)\n-145 prismVertices[k] = vertices[k] - 1;\n-146 for (int k = 3; k < 6; k++)\n-147 prismVertices[k] = vertices[k+1] - 1;\n-148 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::prism, prismVertices);\n-149 }\n-150 }\n-151 else { // cube or pyramid\n-152 if (vertices[4] == vertices[5]) { // pyramid\n-153 numberOfPyramids++;\n-154 std::vector pyramidVertices(5);\n-155 for (int k = 0; k < 5; k++)\n-156 pyramidVertices[k] = vertices[k] - 1;\n-157 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::pyramid, pyramidVertices);\n-158 }\n-159 else { // cube\n-160 numberOfCubes++;\n-161 std::vector cubeVertices(8);\n-162 for (int k = 0; k < 8; k++)\n-163 cubeVertices[k] = vertices[k] - 1;\n-164 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(cubeVertices[2], cubeVertices[3]);\n-165 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(cubeVertices[6], cubeVertices[7]);\n-166 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::hexahedron, cubeVertices);\n-167 }\n-168 }\n-169 }\n-170 }\n-171 if (verbose)\n-172 std::cout << numberOfElements << \" elements read: \"\n-173 << numberOfSimplices << \" simplices, \" << numberOfPyramids << \" pyramids, \"\n-174 << numberOfPrisms << \" prisms, \" << numberOfCubes << \" cubes.\" << std::\n-endl;\n-175\n-176 // finish off the construction of the grid object\n-177 if (verbose)\n-178 std::cout << \"Starting createGrid() ... \" << std::flush;\n-179\n-180 return factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd();\n-181\n-182 }\n-183\n-184 };\n-185\n-186}\n-187\n-188#endif\n-_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n-> &b)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n+75} // namespace Dune\n+76\n+77#endif // DUNE_GRID_IO_FILE_VTK_CORNER_HH\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Provide a generic factory class for unstructured grids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n-virtual void insertElement(const GeometryType &type, const std::vector<\n-unsigned int > &vertices)\n-Insert an element into the coarse grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n-virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)\n-Insert a vertex into the coarse grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-virtual std::unique_ptr< GridType > createGrid()\n-Finalize grid creation and hand over the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br\n-File reader for the Star-CD format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn starcdreader.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static std::unique_ptr< GridType > read(const std::string &fileName, bool\n-verbose=true)\n-Read grid from a Star-CD file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn starcdreader.hh:65\n-_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-Provide a generic factory class for unstructured grids.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n+int renumber(const Dune::GeometryType &t, int i)\n+renumber VTK <-> Dune\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+simple class representing a corner of a cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx\n+unsigned vtkIndex() const\n+get the index of the corner within the cell in VTK-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx\n+void vtkIndex(unsigned i)\n+set the index of the corner within the cell in VTK-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+Corner(const Cell &cell, unsigned duneIndex)\n+construct a Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bc_\be_\bl_\bl\n+void cell(const Cell &cell__)\n+set a new cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx\n+void duneIndex(unsigned i)\n+set the index of the corner within the cell in Dune-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx\n+unsigned duneIndex() const\n+get the index of the corner within the cell in Dune-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bc_\be_\bl_\bl\n+const Cell & cell() const\n+get reference to the cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+Corner()\n+construct an invalid Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.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-grid-doc/doxygen/a00761.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00761.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gmshreader.hh File Reference\n+dune-grid: dataarraywriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,84 +65,78 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    gmshreader.hh File Reference
    \n+Namespaces
    \n+
    dataarraywriter.hh File Reference
    \n \n
    \n-
    #include <cstdarg>
    \n-#include <cstdio>
    \n-#include <cstring>
    \n-#include <fstream>
    \n+\n+

    Data array writers for the VTKWriter. \n+More...

    \n+
    #include <cstdint>
    \n #include <iostream>
    \n-#include <map>
    \n-#include <memory>
    \n #include <string>
    \n-#include <tuple>
    \n-#include <vector>
    \n-#include <utility>
    \n+#include <iomanip>
    \n+#include <cmath>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/boundarysegment.hh>
    \n-#include <dune/grid/common/gridfactory.hh>
    \n+#include <dune/common/indent.hh>
    \n+#include <dune/grid/io/file/vtk/streams.hh>
    \n+#include <dune/grid/io/file/vtk/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+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    struct  Dune::GmshReaderOptions
     Options for read operation. More...
    class  Dune::VTK::DataArrayWriter
     base class for data array writers More...
     
    class  Dune::VTK::AsciiDataArrayWriter
     a streaming writer for data array tags, uses ASCII inline format More...
     
    class  Dune::VTK::BinaryDataArrayWriter
     a streaming writer for data array tags, uses binary inline format More...
     
    class  Dune::VTK::AppendedRawDataArrayWriter
     a streaming writer for data array tags, uses appended raw format More...
     
    class  Dune::GmshReaderParser< GridType >
     dimension independent parts for GmshReaderParser More...
    class  Dune::VTK::AppendedBase64DataArrayWriter
     a streaming writer for data array tags, uses appended base64 format More...
     
    class  Dune::GmshReader< GridType >
     Read Gmsh mesh file. More...
    class  Dune::VTK::NakedBase64DataArrayWriter
     a streaming writer for appended data array tags, uses base64 format More...
     
    class  Dune::VTK::NakedRawDataArrayWriter
     a streaming writer for appended data arrays, uses raw format More...
     
    class  Dune::VTK::DataArrayWriterFactory
     a factory for DataArrayWriters More...
     
    \n \n \n \n \n-\n+\n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Gmsh
    namespace  Dune::VTK
     
    \n-\n-\n-\n-\n-

    \n-Enumerations

    enum class  Dune::Gmsh::ReaderOptions { Dune::Gmsh::ReaderOptions::verbose = 1\n-, Dune::Gmsh::ReaderOptions::insertBoundarySegments = 2\n-, Dune::Gmsh::ReaderOptions::readElementData = 4\n-, Dune::Gmsh::ReaderOptions::readBoundaryData = 8\n- }
     Option for the Gmsh mesh file reader. More...
     
    \n-\n-\n-\n-\n-\n-\n-\n

    \n-Functions

    constexpr ReaderOptions Dune::Gmsh::operator| (ReaderOptions a, ReaderOptions b)
     composition operator for reader options
     
    constexpr bool Dune::Gmsh::operator& (ReaderOptions a, ReaderOptions b)
     query operator for reader options (is b set in a)
     
    \n-
    \n+

    Detailed Description

    \n+

    Data array writers for the VTKWriter.

    \n+
    Author
    Peter Bastian, Christian Engwer
    \n+

    This file contains classes to help writing data in the difeerent VTK output modes

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,60 +2,65 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\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-gmshreader.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dataarraywriter.hh File Reference\n+Data array writers for the VTKWriter. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n #include \n-#include \n-#include \n #include \n-#include \n-#include \n-#include \n+#include \n+#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0 Options for read operation. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 base class for data array writers _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 dimension independent parts for _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 a streaming writer for data array tags, uses ASCII inline format\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 a streaming writer for data array tags, uses binary inline format\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 a streaming writer for data array tags, uses appended raw format\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 a streaming writer for data array tags, uses appended base64 format\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 a streaming writer for appended data array tags, uses base64 format\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 Read _\bG_\bm_\bs_\bh mesh file. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 a streaming writer for appended data arrays, uses raw format _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+\u00a0 a factory for DataArrayWriters _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh\n-\u00a0\n-E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n-enum class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs { _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bv_\be_\br_\bb_\bo_\bs_\be = 1\n- , _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs = 2 , _\bD_\bu_\bn_\be_\b:_\b:\n- _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba = 4 , _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:\n- _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba = 8 }\n-\u00a0 Option for the Gmsh mesh file reader. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-constexpr _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b| (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n- b)\n-\u00a0 composition operator for reader options\n-\u00a0\n- constexpr bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b& (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n- b)\n-\u00a0 query operator for reader options (is b set in a)\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\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+Data array writers for the VTKWriter.\n+ Author\n+ Peter Bastian, Christian Engwer\n+This file contains classes to help writing data in the difeerent VTK output\n+modes\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00761_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00761_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gmshreader.hh Source File\n+dune-grid: dataarraywriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,1167 +70,526 @@\n \n \n \n \n \n \n \n
    \n-
    gmshreader.hh
    \n+
    dataarraywriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_GMSHREADER_HH
    \n-
    7#define DUNE_GMSHREADER_HH
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH
    \n
    8
    \n-
    9#include <cstdarg>
    \n-
    10#include <cstdio>
    \n-
    11#include <cstring>
    \n-
    12#include <fstream>
    \n-
    13#include <iostream>
    \n-
    14#include <map>
    \n-
    15#include <memory>
    \n-
    16#include <string>
    \n-
    17#include <tuple>
    \n-
    18#include <vector>
    \n-
    19#include <utility>
    \n-
    20
    \n-
    21#include <dune/common/exceptions.hh>
    \n-
    22#include <dune/common/fvector.hh>
    \n-
    23
    \n-
    24#include <dune/geometry/type.hh>
    \n-
    25
    \n-\n-\n-
    28
    \n-
    29namespace Dune
    \n-
    30{
    \n-
    31
    \n-
    \n-\n-
    39 {
    \n-
    \n-\n-\n-\n-
    45 };
    \n-
    \n-
    46 };
    \n-
    \n-
    47
    \n-
    48 namespace {
    \n-
    49
    \n-
    50 // arbitrary dimension, implementation is in specialization
    \n-
    51 template< int dimension, int dimWorld = dimension >
    \n-
    52 class GmshReaderQuadraticBoundarySegment
    \n-
    53 {
    \n-
    54 public:
    \n-
    55 // empty function since this class does not implement anything
    \n-
    56 static void registerFactory() {}
    \n-
    57 };
    \n-
    58
    \n-
    59 // quadratic boundary segments in 1d
    \n-
    60 /*
    \n-
    61 Note the points
    \n-
    62
    \n-
    63 (0) (alpha) (1)
    \n-
    64
    \n-
    65 are mapped to the points in global coordinates
    \n-
    66
    \n-
    67 p0 p2 p1
    \n-
    68
    \n-
    69 alpha is determined automatically from the given points.
    \n-
    70 */
    \n-
    71 template< int dimWorld >
    \n-
    72 struct GmshReaderQuadraticBoundarySegment< 2, dimWorld >
    \n-
    73 : public Dune::BoundarySegment< 2, dimWorld >
    \n-
    74 {
    \n-
    75 typedef GmshReaderQuadraticBoundarySegment< 2, dimWorld > ThisType;
    \n-
    76 typedef typename Dune::BoundarySegment< 2, dimWorld > :: ObjectStreamType ObjectStreamType;
    \n-
    77 typedef Dune::FieldVector< double, dimWorld > GlobalVector;
    \n-
    78
    \n-
    79 GmshReaderQuadraticBoundarySegment ( const GlobalVector &p0_, const GlobalVector &p1_, const GlobalVector &p2_)
    \n-
    80 : p0(p0_), p1(p1_), p2(p2_)
    \n-
    81 {
    \n-
    82 init();
    \n-
    83 }
    \n-
    84
    \n-
    85 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )
    \n-
    86 {
    \n-
    87 // key is read before by the factory
    \n-
    88 const int bytes = sizeof(double)*dimWorld;
    \n-
    89 in.read( (char *) &p0[ 0 ], bytes );
    \n-
    90 in.read( (char *) &p1[ 0 ], bytes );
    \n-
    91 in.read( (char *) &p2[ 0 ], bytes );
    \n-
    92 init();
    \n-
    93 }
    \n-
    94
    \n-
    95 static void registerFactory()
    \n-
    96 {
    \n-
    97 if( key() < 0 )
    \n-
    98 {
    \n-
    99 key() = Dune::BoundarySegment< 2, dimWorld >::template registerFactory< ThisType >();
    \n-
    100 }
    \n-
    101 }
    \n-
    102
    \n-
    103 virtual GlobalVector operator() ( const Dune::FieldVector<double,1> &local ) const
    \n-
    104 {
    \n-
    105 GlobalVector y;
    \n-
    106 y = 0.0;
    \n-
    107 y.axpy((local[0]-alpha)*(local[0]-1.0)/alpha,p0);
    \n-
    108 y.axpy(local[0]*(local[0]-1.0)/(alpha*(alpha-1.0)),p1);
    \n-
    109 y.axpy(local[0]*(local[0]-alpha)/(1.0-alpha),p2);
    \n-
    110 return y;
    \n-
    111 }
    \n-
    112
    \n-
    113 void backup( ObjectStreamType& out ) const
    \n-
    114 {
    \n-
    115 // backup key to identify object
    \n-
    116 out.write( (const char *) &key(), sizeof( int ) );
    \n-
    117 // backup data
    \n-
    118 const int bytes = sizeof(double)*dimWorld;
    \n-
    119 out.write( (const char*) &p0[ 0 ], bytes );
    \n-
    120 out.write( (const char*) &p1[ 0 ], bytes );
    \n-
    121 out.write( (const char*) &p2[ 0 ], bytes );
    \n-
    122 }
    \n-
    123
    \n-
    124 protected:
    \n-
    125 void init()
    \n-
    126 {
    \n-
    127 GlobalVector d1 = p1;
    \n-
    128 d1 -= p0;
    \n-
    129 GlobalVector d2 = p2;
    \n-
    130 d2 -= p1;
    \n+
    9#include <cstdint>
    \n+
    10#include <iostream>
    \n+
    11#include <string>
    \n+
    12#include <iomanip>
    \n+
    13#include <cstdint>
    \n+
    14#include <cmath>
    \n+
    15
    \n+
    16#include <dune/common/exceptions.hh>
    \n+
    17#include <dune/common/indent.hh>
    \n+
    18
    \n+\n+\n+
    21
    \n+
    30namespace Dune
    \n+
    31{
    \n+
    34
    \n+
    35 namespace VTK {
    \n+
    36
    \n+
    38
    \n+
    \n+\n+
    56 {
    \n+
    57 public:
    \n+
    59
    \n+
    \n+\n+
    64 : prec(_prec)
    \n+
    65 {}
    \n+
    \n+
    66
    \n+
    68 template<class T>
    \n+
    \n+
    69 void write(T data)
    \n+
    70 {
    \n+
    71 switch(prec)
    \n+
    72 {
    \n+\n+
    74 writeFloat32(data); break;
    \n+\n+
    76 writeFloat64(data); break;
    \n+\n+
    78 writeUInt32(data); break;
    \n+\n+
    80 writeUInt8(data); break;
    \n+\n+
    82 writeInt32(data); break;
    \n+
    83 default:
    \n+
    84 DUNE_THROW(Dune::NotImplemented, "Unknown precision type");
    \n+
    85 }
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    89 virtual bool writeIsNoop() const { return false; }
    \n+
    91 virtual ~DataArrayWriter () {}
    \n+
    92
    \n+
    93 private:
    \n+
    95 virtual void writeFloat32 (float data) = 0;
    \n+
    97 virtual void writeFloat64 (double data) = 0;
    \n+
    99 virtual void writeInt32 (std::int32_t data) = 0;
    \n+
    101 virtual void writeUInt8 (std::uint8_t data) = 0;
    \n+
    103 virtual void writeUInt32 (std::uint32_t data) = 0;
    \n+
    104
    \n+
    105 Precision prec;
    \n+
    106 };
    \n+
    \n+
    107
    \n+
    \n+\n+
    110 {
    \n+
    111 public:
    \n+
    113
    \n+
    \n+
    121 AsciiDataArrayWriter(std::ostream& theStream, std::string name,
    \n+
    122 int ncomps, const Indent& indent_, Precision prec_)
    \n+
    123 : DataArrayWriter(prec_), s(theStream), counter(0), numPerLine(12), indent(indent_)
    \n+
    124 {
    \n+
    125 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n+
    126 << "Name=\\"" << name << "\\" ";
    \n+
    127 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n+
    128 s << "format=\\"ascii\\">\\n";
    \n+
    129 ++indent;
    \n+
    130 }
    \n+
    \n
    131
    \n-
    132 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());
    \n-
    133 if (alpha<1E-6 || alpha>1-1E-6)
    \n-
    134 DUNE_THROW(Dune::IOError, "ration in quadratic boundary segment bad");
    \n-
    135 }
    \n-
    136
    \n-
    137 static int& key() {
    \n-
    138 static int k = -1;
    \n-
    139 return k;
    \n-
    140 }
    \n-
    141
    \n-
    142 private:
    \n-
    143 GlobalVector p0,p1,p2;
    \n-
    144 double alpha;
    \n-
    145 };
    \n-
    146
    \n-
    147
    \n-
    148 // quadratic boundary segments in 2d
    \n-
    149 /* numbering of points corresponding to gmsh:
    \n-
    150
    \n-
    151 2
    \n-
    152
    \n-
    153 5 4
    \n-
    154
    \n-
    155 0 3 1
    \n-
    156
    \n-
    157 Note: The vertices 3, 4, 5 are not necessarily at the edge midpoints but can
    \n-
    158 be placed with parameters alpha, beta , gamma at the following positions
    \n-
    159 in local coordinates:
    \n-
    160
    \n-
    161
    \n-
    162 2 = (0,1)
    \n-
    163
    \n-
    164 5 = (0,beta) 4 = (1-gamma/sqrt(2),gamma/sqrt(2))
    \n-
    165
    \n-
    166 0 = (0,0) 3 = (alpha,0) 1 = (1,0)
    \n-
    167
    \n-
    168 The parameters alpha, beta, gamma are determined from the given vertices in
    \n-
    169 global coordinates.
    \n-
    170 */
    \n-
    171 template<>
    \n-
    172 class GmshReaderQuadraticBoundarySegment< 3, 3 >
    \n-
    173 : public Dune::BoundarySegment< 3 >
    \n-
    174 {
    \n-
    175 typedef GmshReaderQuadraticBoundarySegment< 3, 3 > ThisType;
    \n-
    176 typedef typename Dune::BoundarySegment< 3 > :: ObjectStreamType ObjectStreamType;
    \n-
    177 public:
    \n-
    178 GmshReaderQuadraticBoundarySegment (Dune::FieldVector<double,3> p0_, Dune::FieldVector<double,3> p1_,
    \n-
    179 Dune::FieldVector<double,3> p2_, Dune::FieldVector<double,3> p3_,
    \n-
    180 Dune::FieldVector<double,3> p4_, Dune::FieldVector<double,3> p5_)
    \n-
    181 : p0(p0_), p1(p1_), p2(p2_), p3(p3_), p4(p4_), p5(p5_)
    \n-
    182 {
    \n-
    183 init();
    \n-
    184 }
    \n-
    185
    \n-
    186 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )
    \n-
    187 {
    \n-
    188 const int bytes = sizeof(double)*3;
    \n-
    189 in.read( (char *) &p0[ 0 ], bytes );
    \n-
    190 in.read( (char *) &p1[ 0 ], bytes );
    \n-
    191 in.read( (char *) &p2[ 0 ], bytes );
    \n-
    192 in.read( (char *) &p3[ 0 ], bytes );
    \n-
    193 in.read( (char *) &p4[ 0 ], bytes );
    \n-
    194 in.read( (char *) &p5[ 0 ], bytes );
    \n-
    195 init();
    \n-
    196 }
    \n-
    197
    \n-
    198 static void registerFactory()
    \n-
    199 {
    \n-
    200 if( key() < 0 )
    \n-
    201 {
    \n-
    202 key() = Dune::BoundarySegment< 3 >::template registerFactory< ThisType >();
    \n-
    203 }
    \n-
    204 }
    \n-
    205
    \n-
    206 virtual Dune::FieldVector<double,3> operator() (const Dune::FieldVector<double,2>& local) const
    \n-
    207 {
    \n-
    208 Dune::FieldVector<double,3> y;
    \n-
    209 y = 0.0;
    \n-
    210 y.axpy(phi0(local),p0);
    \n-
    211 y.axpy(phi1(local),p1);
    \n-
    212 y.axpy(phi2(local),p2);
    \n-
    213 y.axpy(phi3(local),p3);
    \n-
    214 y.axpy(phi4(local),p4);
    \n-
    215 y.axpy(phi5(local),p5);
    \n-
    216 return y;
    \n-
    217 }
    \n+
    \n+\n+
    134 {
    \n+
    135 if (counter%numPerLine!=0) s << "\\n";
    \n+
    136 --indent;
    \n+
    137 s << indent << "</DataArray>\\n";
    \n+
    138 }
    \n+
    \n+
    139
    \n+
    140 private:
    \n+
    142 void writeFloat64 (double data) final
    \n+
    143 { write_float(data); }
    \n+
    145 void writeFloat32 (float data) final
    \n+
    146 { write_float(data); }
    \n+
    148 void writeInt32 (std::int32_t data) final
    \n+
    149 { write_(data); }
    \n+
    151 void writeUInt32 (std::uint32_t data) final
    \n+
    152 { write_(data); }
    \n+
    154 void writeUInt8 (std::uint8_t data) final
    \n+
    155 { write_(data); }
    \n+
    156
    \n+
    157 template<class T>
    \n+
    158 void write_(T data)
    \n+
    159 {
    \n+
    160 typedef typename PrintType<T>::Type PT;
    \n+
    161 if(counter%numPerLine==0) s << indent;
    \n+
    162 else s << " ";
    \n+
    163 const auto original_precision = std::cout.precision();
    \n+
    164 s << std::setprecision(std::numeric_limits<PT>::digits10) << (PT) data;
    \n+
    165 std::cout.precision(original_precision);
    \n+
    166 counter++;
    \n+
    167 if (counter%numPerLine==0) s << "\\n";
    \n+
    168 }
    \n+
    169
    \n+
    170 template<class T>
    \n+
    171 void write_float(T data)
    \n+
    172 {
    \n+
    173 typedef typename PrintType<T>::Type PT;
    \n+
    174 if(counter%numPerLine==0) s << indent;
    \n+
    175 else s << " ";
    \n+
    176 PT out_data = (PT) data;
    \n+
    177 if (std::fpclassify(out_data) == FP_SUBNORMAL)
    \n+
    178 {
    \n+
    179 // truncate denormalized data to 0 to avoid Paraview segfaults on macOS
    \n+
    180 out_data = 0;
    \n+
    181 }
    \n+
    182 const auto original_precision = std::cout.precision();
    \n+
    183 s << std::setprecision(std::numeric_limits<PT>::digits10) << out_data;
    \n+
    184 std::cout.precision(original_precision);
    \n+
    185 counter++;
    \n+
    186 if (counter%numPerLine==0) s << "\\n";
    \n+
    187 }
    \n+
    188
    \n+
    189 std::ostream& s;
    \n+
    190 int counter;
    \n+
    191 int numPerLine;
    \n+
    192 Indent indent;
    \n+
    193 };
    \n+
    \n+
    194
    \n+
    \n+\n+
    197 {
    \n+
    198 public:
    \n+
    200
    \n+
    \n+
    210 BinaryDataArrayWriter(std::ostream& theStream, std::string name,
    \n+
    211 int ncomps, int nitems, const Indent& indent_, Precision prec_)
    \n+
    212 : DataArrayWriter(prec_), s(theStream), b64(theStream), indent(indent_)
    \n+
    213 {
    \n+
    214 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n+
    215 << "Name=\\"" << name << "\\" ";
    \n+
    216 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n+
    217 s << "format=\\"binary\\">\\n";
    \n
    218
    \n-
    219 void backup( ObjectStreamType& out ) const
    \n-
    220 {
    \n-
    221 // backup key to identify object in factory
    \n-
    222 out.write( (const char*) &key(), sizeof( int ) );
    \n-
    223 // backup data
    \n-
    224 const int bytes = sizeof(double)*3;
    \n-
    225 out.write( (const char*) &p0[ 0 ], bytes );
    \n-
    226 out.write( (const char*) &p1[ 0 ], bytes );
    \n-
    227 out.write( (const char*) &p2[ 0 ], bytes );
    \n-
    228 out.write( (const char*) &p3[ 0 ], bytes );
    \n-
    229 out.write( (const char*) &p4[ 0 ], bytes );
    \n-
    230 out.write( (const char*) &p5[ 0 ], bytes );
    \n-
    231 }
    \n-
    232
    \n-
    233 protected:
    \n-
    234 void init()
    \n-
    235 {
    \n-
    236 using std::sqrt;
    \n-
    237 sqrt2 = sqrt(2.0);
    \n-
    238 Dune::FieldVector<double,3> d1,d2;
    \n-
    239
    \n-
    240 d1 = p3; d1 -= p0;
    \n-
    241 d2 = p1; d2 -= p3;
    \n-
    242 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());
    \n-
    243 if (alpha<1E-6 || alpha>1-1E-6)
    \n-
    244 DUNE_THROW(Dune::IOError, "alpha in quadratic boundary segment bad");
    \n-
    245
    \n-
    246 d1 = p5; d1 -= p0;
    \n-
    247 d2 = p2; d2 -= p5;
    \n-
    248 beta=d1.two_norm()/(d1.two_norm()+d2.two_norm());
    \n-
    249 if (beta<1E-6 || beta>1-1E-6)
    \n-
    250 DUNE_THROW(Dune::IOError, "beta in quadratic boundary segment bad");
    \n-
    251
    \n-
    252 d1 = p4; d1 -= p1;
    \n-
    253 d2 = p2; d2 -= p4;
    \n-
    254 gamma=sqrt2*(d1.two_norm()/(d1.two_norm()+d2.two_norm()));
    \n-
    255 if (gamma<1E-6 || gamma>1-1E-6)
    \n-
    256 DUNE_THROW(Dune::IOError, "gamma in quadratic boundary segment bad");
    \n-
    257 }
    \n-
    258
    \n-
    259 static int& key() {
    \n-
    260 static int k = -1;
    \n-
    261 return k;
    \n-
    262 }
    \n-
    263
    \n-
    264 private:
    \n-
    265 // The six Lagrange basis function on the reference element
    \n-
    266 // for the points given above
    \n-
    267
    \n-
    268 double phi0 (const Dune::FieldVector<double,2>& local) const
    \n-
    269 {
    \n-
    270 return (alpha*beta-beta*local[0]-alpha*local[1])*(1-local[0]-local[1])/(alpha*beta);
    \n-
    271 }
    \n-
    272 double phi3 (const Dune::FieldVector<double,2>& local) const
    \n-
    273 {
    \n-
    274 return local[0]*(1-local[0]-local[1])/(alpha*(1-alpha));
    \n-
    275 }
    \n-
    276 double phi1 (const Dune::FieldVector<double,2>& local) const
    \n-
    277 {
    \n-
    278 return local[0]*(gamma*local[0]-(sqrt2-gamma-sqrt2*alpha)*local[1]-alpha*gamma)/(gamma*(1-alpha));
    \n-
    279 }
    \n-
    280 double phi5 (const Dune::FieldVector<double,2>& local) const
    \n-
    281 {
    \n-
    282 return local[1]*(1-local[0]-local[1])/(beta*(1-beta));
    \n-
    283 }
    \n-
    284 double phi4 (const Dune::FieldVector<double,2>& local) const
    \n-
    285 {
    \n-
    286 return local[0]*local[1]/((1-gamma/sqrt2)*gamma/sqrt2);
    \n-
    287 }
    \n-
    288 double phi2 (const Dune::FieldVector<double,2>& local) const
    \n-
    289 {
    \n-
    290 return local[1]*(beta*(1-gamma/sqrt2)-local[0]*(beta-gamma/sqrt2)-local[1]*(1-gamma/sqrt2))/((1-gamma/sqrt2)*(beta-1));
    \n-
    291 }
    \n-
    292
    \n-
    293 Dune::FieldVector<double,3> p0,p1,p2,p3,p4,p5;
    \n-
    294 double alpha,beta,gamma,sqrt2;
    \n-
    295 };
    \n-
    296
    \n-
    297 } // end empty namespace
    \n+
    219 // write indentation for the data chunk
    \n+
    220 s << indent+1;
    \n+
    221 // store size, needs to be exactly 32 bit
    \n+
    222 std::uint32_t size = ncomps*nitems*typeSize(prec_);
    \n+
    223 b64.write(size);
    \n+
    224 b64.flush();
    \n+
    225 }
    \n+
    \n+
    226
    \n+
    \n+\n+
    229 {
    \n+
    230 b64.flush();
    \n+
    231 // append newline to written data
    \n+
    232 s << "\\n";
    \n+
    233 s << indent << "</DataArray>\\n";
    \n+
    234 s.flush();
    \n+
    235 }
    \n+
    \n+
    236
    \n+
    237 private:
    \n+
    239 void writeFloat64 (double data) final
    \n+
    240 { write_(data); }
    \n+
    242 void writeFloat32 (float data) final
    \n+
    243 { write_(data); }
    \n+
    245 void writeInt32 (std::int32_t data) final
    \n+
    246 { write_(data); }
    \n+
    248 void writeUInt32 (std::uint32_t data) final
    \n+
    249 { write_(data); }
    \n+
    251 void writeUInt8 (std::uint8_t data) final
    \n+
    252 { write_(data); }
    \n+
    253
    \n+
    255 template<class T>
    \n+
    256 void write_(T data)
    \n+
    257 {
    \n+
    258 b64.write(data);
    \n+
    259 }
    \n+
    260
    \n+
    261 std::ostream& s;
    \n+
    262 Base64Stream b64;
    \n+
    263 const Indent& indent;
    \n+
    264 };
    \n+
    \n+
    265
    \n+
    \n+\n+
    268 {
    \n+
    269 public:
    \n+
    271
    \n+
    \n+
    283 AppendedRawDataArrayWriter(std::ostream& s, std::string name,
    \n+
    284 int ncomps, unsigned nitems, unsigned& offset,
    \n+
    285 const Indent& indent, Precision prec_)
    \n+
    286 : DataArrayWriter(prec_)
    \n+
    287 {
    \n+
    288 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n+
    289 << "Name=\\"" << name << "\\" ";
    \n+
    290 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n+
    291 s << "format=\\"appended\\" offset=\\""<< offset << "\\" />\\n";
    \n+
    292 offset += 4; // header
    \n+
    293 offset += ncomps*nitems*typeSize(prec_);
    \n+
    294 }
    \n+
    \n+
    295
    \n+
    297 bool writeIsNoop() const { return true; }
    \n
    298
    \n-
    300 template<typename GridType>
    \n-
    \n-\n-
    302 {
    \n-
    303 protected:
    \n-
    304 // private data
    \n-\n-\n-\n-\n-\n-\n-
    311 // read buffer
    \n-
    312 char buf[512];
    \n-
    313 std::string fileName;
    \n-
    314 // exported data
    \n-\n-\n-
    317
    \n-
    318 // static data
    \n-
    319 static const int dim = GridType::dimension;
    \n-
    320 static const int dimWorld = GridType::dimensionworld;
    \n-
    321 static_assert( (dimWorld <= 3), "GmshReader requires dimWorld <= 3." );
    \n-
    322
    \n-
    323 // typedefs
    \n-
    324 typedef FieldVector< double, dimWorld > GlobalVector;
    \n-
    325
    \n-
    326 // don't use something like
    \n-
    327 // readfile(file, 1, "%s\\n", buf);
    \n-
    328 // to skip the rest of of the line -- that will only skip the next
    \n-
    329 // whitespace-separated word! Use skipline() instead.
    \n-
    \n-
    330 void readfile(FILE * file, int cnt, const char * format,
    \n-
    331 void* t1, void* t2 = 0, void* t3 = 0, void* t4 = 0,
    \n-
    332 void* t5 = 0, void* t6 = 0, void* t7 = 0, void* t8 = 0,
    \n-
    333 void* t9 = 0, void* t10 = 0)
    \n-
    334 {
    \n-
    335 off_t pos = ftello(file);
    \n-
    336 int c = fscanf(file, format, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
    \n-
    337 if (c != cnt)
    \n-
    338 DUNE_THROW(Dune::IOError, "Error parsing " << fileName << " "
    \n-
    339 "file pos " << pos
    \n-
    340 << ": Expected '" << format << "', only read " << c << " entries instead of " << cnt << ".");
    \n-
    341 }
    \n-
    \n-
    342
    \n-
    343 // skip over the rest of the line, including the terminating newline
    \n-
    \n-
    344 void skipline(FILE * file)
    \n-
    345 {
    \n-
    346 int c;
    \n-
    347 do {
    \n-
    348 c = std::fgetc(file);
    \n-
    349 } while(c != '\\n' && c != EOF);
    \n-
    350 }
    \n-
    \n-
    351
    \n-
    352 public:
    \n-
    353
    \n-
    \n-\n-
    355 factory(_factory), verbose(v), insert_boundary_segments(i) {}
    \n-
    \n-
    356
    \n-
    \n-
    357 std::vector<int> & boundaryIdMap()
    \n-
    358 {
    \n-\n-
    360 }
    \n-
    \n-
    361
    \n-
    \n-
    362 std::vector<int> & elementIndexMap()
    \n-
    363 {
    \n-\n-
    365 }
    \n-
    \n-
    366
    \n-
    \n-
    367 void read (const std::string& f)
    \n-
    368 {
    \n-
    369 if (verbose) std::cout << "Reading " << dim << "d Gmsh grid..." << std::endl;
    \n-
    370
    \n-
    371 // open file name, we use C I/O
    \n-
    372 fileName = f;
    \n-
    373 FILE* file = fopen(fileName.c_str(),"rb");
    \n-
    374 if (file==0)
    \n-
    375 DUNE_THROW(Dune::IOError, "Could not open " << fileName);
    \n-
    376
    \n-
    377 //=========================================
    \n-
    378 // Header: Read vertices into vector
    \n-
    379 // Check vertices that are needed
    \n-
    380 //=========================================
    \n-
    381
    \n-\n-\n-
    384 element_count = 0;
    \n-
    385
    \n-
    386 // process header
    \n-
    387 double version_number;
    \n-
    388 int file_type, data_size;
    \n-
    389
    \n-
    390 readfile(file,1,"%s\\n",buf);
    \n-
    391 if (strcmp(buf,"$MeshFormat")!=0)
    \n-
    392 DUNE_THROW(Dune::IOError, "expected $MeshFormat in first line");
    \n-
    393 readfile(file,3,"%lg %d %d\\n",&version_number,&file_type,&data_size);
    \n-
    394 // 2.2 is not representable as float and leads to problems on i386
    \n-
    395 // Hence we use >= 2.00001.
    \n-
    396 if( (version_number < 2.0) || (version_number >= 2.20001) ) // 2.2 is not representable as float and leads to problems on i386
    \n-
    397 DUNE_THROW(Dune::IOError, "can only read Gmsh version 2 files");
    \n-
    398 if (verbose) std::cout << "version " << version_number << " Gmsh file detected" << std::endl;
    \n-
    399 readfile(file,1,"%s\\n",buf);
    \n-
    400 if (strcmp(buf,"$EndMeshFormat")!=0)
    \n-
    401 DUNE_THROW(Dune::IOError, "expected $EndMeshFormat");
    \n+
    299 private:
    \n+
    301 void writeFloat64 (double) final {}
    \n+
    302 void writeFloat32 (float) final {}
    \n+
    303 void writeInt32 (std::int32_t) final {}
    \n+
    304 void writeUInt32 (std::uint32_t) final {}
    \n+
    305 void writeUInt8 (std::uint8_t) final {}
    \n+
    306 };
    \n+
    \n+
    307
    \n+
    \n+\n+
    310 {
    \n+
    311 public:
    \n+
    313
    \n+
    \n+
    325 AppendedBase64DataArrayWriter(std::ostream& s, std::string name,
    \n+
    326 int ncomps, unsigned nitems,
    \n+
    327 unsigned& offset, const Indent& indent, Precision prec_)
    \n+
    328 : DataArrayWriter(prec_)
    \n+
    329 {
    \n+
    330 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n+
    331 << "Name=\\"" << name << "\\" ";
    \n+
    332 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n+
    333 s << "format=\\"appended\\" offset=\\""<< offset << "\\" />\\n";
    \n+
    334 offset += 8; // header
    \n+
    335 std::size_t bytes = ncomps*nitems*typeSize(prec_);
    \n+
    336 offset += bytes/3*4;
    \n+
    337 if(bytes%3 != 0)
    \n+
    338 offset += 4;
    \n+
    339 }
    \n+
    \n+
    340
    \n+
    342 bool writeIsNoop() const { return true; }
    \n+
    343
    \n+
    344 private:
    \n+
    346 void writeFloat64 (double) final {}
    \n+
    347 void writeFloat32 (float) final {}
    \n+
    348 void writeInt32 (std::int32_t) final {}
    \n+
    349 void writeUInt32 (std::uint32_t) final {}
    \n+
    350 void writeUInt8 (std::uint8_t) final {}
    \n+
    351 };
    \n+
    \n+
    352
    \n+
    354 //
    \n+
    355 // Naked ArrayWriters for the appended section
    \n+
    356 //
    \n+
    357
    \n+
    \n+\n+
    360 {
    \n+
    361 public:
    \n+
    363
    \n+
    \n+
    369 NakedBase64DataArrayWriter(std::ostream& theStream, int ncomps,
    \n+
    370 int nitems, Precision prec_)
    \n+
    371 : DataArrayWriter(prec_), b64(theStream)
    \n+
    372 {
    \n+
    373 // store size
    \n+
    374 std::uint32_t size = ncomps*nitems*typeSize(prec_);
    \n+
    375 b64.write(size);
    \n+
    376 b64.flush();
    \n+
    377 }
    \n+
    \n+
    378
    \n+
    379 private:
    \n+
    381 void writeFloat64 (double data) final
    \n+
    382 { write_(data); }
    \n+
    384 void writeFloat32 (float data) final
    \n+
    385 { write_(data); }
    \n+
    387 void writeInt32 (std::int32_t data) final
    \n+
    388 { write_(data); }
    \n+
    390 void writeUInt32 (std::uint32_t data) final
    \n+
    391 { write_(data); }
    \n+
    393 void writeUInt8 (std::uint8_t data) final
    \n+
    394 { write_(data); }
    \n+
    395
    \n+
    397 template<class T>
    \n+
    398 void write_(T data)
    \n+
    399 {
    \n+
    400 b64.write(data);
    \n+
    401 }
    \n
    402
    \n-
    403 // node section
    \n-
    404 int number_of_nodes;
    \n+
    403 Base64Stream b64;
    \n+
    404 };
    \n+
    \n
    405
    \n-
    406 readfile(file,1,"%s\\n",buf);
    \n-
    407 if (strcmp(buf,"$Nodes")!=0)
    \n-
    408 DUNE_THROW(Dune::IOError, "expected $Nodes");
    \n-
    409 readfile(file,1,"%d\\n",&number_of_nodes);
    \n-
    410 if (verbose) std::cout << "file contains " << number_of_nodes << " nodes" << std::endl;
    \n-
    411
    \n-
    412 // read nodes
    \n-
    413 // The '+1' is due to the fact that gmsh numbers node starting from 1 rather than from 0
    \n-
    414 std::vector< GlobalVector > nodes( number_of_nodes+1 );
    \n-
    415 {
    \n-
    416 int id;
    \n-
    417 double x[ 3 ];
    \n-
    418 for( int i = 1; i <= number_of_nodes; ++i )
    \n-
    419 {
    \n-
    420 readfile(file,4, "%d %lg %lg %lg\\n", &id, &x[ 0 ], &x[ 1 ], &x[ 2 ] );
    \n-
    421
    \n-
    422 if (id > number_of_nodes) {
    \n-
    423 DUNE_THROW(Dune::IOError,
    \n-
    424 "Only dense sequences of node indices are currently supported (node index "
    \n-
    425 << id << " is invalid).");
    \n-
    426 }
    \n-
    427
    \n-
    428 // just store node position
    \n-
    429 for( int j = 0; j < dimWorld; ++j )
    \n-
    430 nodes[ id ][ j ] = x[ j ];
    \n-
    431 }
    \n-
    432 readfile(file,1,"%s\\n",buf);
    \n-
    433 if (strcmp(buf,"$EndNodes")!=0)
    \n-
    434 DUNE_THROW(Dune::IOError, "expected $EndNodes");
    \n-
    435 }
    \n-
    436
    \n-
    437 // element section
    \n-
    438 readfile(file,1,"%s\\n",buf);
    \n-
    439 if (strcmp(buf,"$Elements")!=0)
    \n-
    440 DUNE_THROW(Dune::IOError, "expected $Elements");
    \n-
    441 int number_of_elements;
    \n-
    442 readfile(file,1,"%d\\n",&number_of_elements);
    \n-
    443 if (verbose) std::cout << "file contains " << number_of_elements << " elements" << std::endl;
    \n-
    444
    \n-
    445 //=========================================
    \n-
    446 // Pass 1: Select and insert those vertices in the file that
    \n-
    447 // actually occur as corners of an element.
    \n-
    448 //=========================================
    \n-
    449
    \n-
    450 off_t section_element_offset = ftello(file);
    \n-
    451 std::map<int,unsigned int> renumber;
    \n-
    452 for (int i=1; i<=number_of_elements; i++)
    \n-
    453 {
    \n-
    454 int id, elm_type, number_of_tags;
    \n-
    455 readfile(file,3,"%d %d %d ",&id,&elm_type,&number_of_tags);
    \n-
    456 for (int k=1; k<=number_of_tags; k++)
    \n-
    457 {
    \n-
    458 int blub;
    \n-
    459 readfile(file,1,"%d ",&blub);
    \n-
    460 // k == 1: physical entity (not used here)
    \n-
    461 // k == 2: elementary entity (not used here either)
    \n-
    462 // if version_number < 2.2:
    \n-
    463 // k == 3: mesh partition 0
    \n-
    464 // else
    \n-
    465 // k == 3: number of mesh partitions
    \n-
    466 // k => 4: mesh partition k-4
    \n-
    467 }
    \n-
    468 pass1HandleElement(file, elm_type, renumber, nodes);
    \n-
    469 }
    \n-
    470 if (verbose) std::cout << "number of real vertices = " << number_of_real_vertices << std::endl;
    \n-
    471 if (verbose) std::cout << "number of boundary elements = " << boundary_element_count << std::endl;
    \n-
    472 if (verbose) std::cout << "number of elements = " << element_count << std::endl;
    \n-
    473 readfile(file,1,"%s\\n",buf);
    \n-
    474 if (strcmp(buf,"$EndElements")!=0)
    \n-
    475 DUNE_THROW(Dune::IOError, "expected $EndElements");
    \n-\n-\n-
    478
    \n-
    479 //==============================================
    \n-
    480 // Pass 2: Insert boundary segments and elements
    \n-
    481 //==============================================
    \n-
    482
    \n-
    483 fseeko(file, section_element_offset, SEEK_SET);
    \n-\n-
    485 element_count = 0;
    \n-
    486 for (int i=1; i<=number_of_elements; i++)
    \n-
    487 {
    \n-
    488 int id, elm_type, number_of_tags;
    \n-
    489 readfile(file,3,"%d %d %d ",&id,&elm_type,&number_of_tags);
    \n-
    490 int physical_entity = -1;
    \n-
    491
    \n-
    492 for (int k=1; k<=number_of_tags; k++)
    \n-
    493 {
    \n-
    494 int blub;
    \n-
    495 readfile(file,1,"%d ",&blub);
    \n-
    496 if (k==1) physical_entity = blub;
    \n-
    497 }
    \n-
    498 pass2HandleElement(file, elm_type, renumber, nodes, physical_entity);
    \n-
    499 }
    \n-
    500 readfile(file,1,"%s\\n",buf);
    \n-
    501 if (strcmp(buf,"$EndElements")!=0)
    \n-
    502 DUNE_THROW(Dune::IOError, "expected $EndElements");
    \n-
    503
    \n-
    504 fclose(file);
    \n-
    505 }
    \n-
    \n-
    506
    \n-
    \n-
    512 void pass1HandleElement(FILE* file, const int elm_type,
    \n-
    513 std::map<int,unsigned int> & renumber,
    \n-
    514 const std::vector< GlobalVector > & nodes)
    \n-
    515 {
    \n-
    516 // some data about gmsh elements
    \n-
    517 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1, 1};
    \n-
    518 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -1, 1};
    \n-
    519 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -1, 0};
    \n-
    520
    \n-
    521 // test whether we support the element type
    \n-
    522 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?
    \n-
    523 && (elementDim[elm_type] == dim || elementDim[elm_type] == (dim-1) ) ) ) // real element or boundary element?
    \n-
    524 {
    \n-
    525 skipline(file); // skip rest of line if element is unknown
    \n-
    526 return;
    \n-
    527 }
    \n-
    528
    \n-
    529 // The format string for parsing is n times '%d' in a row
    \n-
    530 std::string formatString = "%d";
    \n-
    531 for (int i=1; i<nDofs[elm_type]; i++)
    \n-
    532 formatString += " %d";
    \n-
    533 formatString += "\\n";
    \n-
    534
    \n-
    535 // '10' is the largest number of dofs we may encounter in a .msh file
    \n-
    536 std::vector<int> elementDofs(10);
    \n-
    537
    \n-
    538 readfile(file,nDofs[elm_type], formatString.c_str(),
    \n-
    539 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),
    \n-
    540 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),
    \n-
    541 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),
    \n-
    542 &(elementDofs[9]));
    \n-
    543
    \n-
    544 // insert each vertex if it hasn't been inserted already
    \n-
    545 for (int i=0; i<nVertices[elm_type]; i++)
    \n-
    546 if (renumber.find(elementDofs[i])==renumber.end())
    \n-
    547 {
    \n-
    548 renumber[elementDofs[i]] = number_of_real_vertices++;
    \n-
    549 factory.insertVertex(nodes[elementDofs[i]]);
    \n-
    550 }
    \n-
    551
    \n-
    552 // count elements and boundary elements
    \n-
    553 if (elementDim[elm_type] == dim)
    \n-\n-
    555 else
    \n-\n-
    557
    \n-
    558 }
    \n-
    \n-
    559
    \n-
    560
    \n-
    561
    \n-
    562 // generic-case: This is not supposed to be used at runtime.
    \n-
    563 template <class E, class V, class V2>
    \n-
    \n-\n-
    565 const V&,
    \n-
    566 const E&,
    \n-
    567 const V2&
    \n-
    568 )
    \n-
    569 {
    \n-
    570 DUNE_THROW(Dune::IOError, "tried to create a 3D boundary segment in a non-3D Grid");
    \n-
    571 }
    \n-
    \n-
    572
    \n-
    573 // 3d-case:
    \n-
    574 template <class E, class V>
    \n-
    \n-\n-
    576 const std::vector<FieldVector<double, 3> >& nodes,
    \n-
    577 const E& elementDofs,
    \n-
    578 const V& vertices
    \n-
    579 )
    \n-
    580 {
    \n-
    581 std::array<FieldVector<double,dimWorld>, 6> v;
    \n-
    582 for (int i=0; i<6; i++)
    \n-
    583 for (int j=0; j<dimWorld; j++)
    \n-
    584 v[i][j] = nodes[elementDofs[i]][j];
    \n-
    585
    \n-
    586 BoundarySegment<dim,dimWorld>* newBoundarySegment
    \n-
    587 = (BoundarySegment<dim,dimWorld>*) new GmshReaderQuadraticBoundarySegment< 3, 3 >( v[0], v[1], v[2],
    \n-
    588 v[3], v[4], v[5] );
    \n-
    589
    \n-
    590 factory.insertBoundarySegment( vertices,
    \n-
    591 std::shared_ptr<BoundarySegment<dim,dimWorld> >(newBoundarySegment) );
    \n-
    592 }
    \n-
    \n-
    593
    \n-
    594
    \n-
    595
    \n-
    \n-
    600 virtual void pass2HandleElement(FILE* file, const int elm_type,
    \n-
    601 std::map<int,unsigned int> & renumber,
    \n-
    602 const std::vector< GlobalVector > & nodes,
    \n-
    603 const int physical_entity)
    \n-
    604 {
    \n-
    605 // some data about gmsh elements
    \n-
    606 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1, 1};
    \n-
    607 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -1, 1};
    \n-
    608 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -1, 0};
    \n-
    609
    \n-
    610 // test whether we support the element type
    \n-
    611 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?
    \n-
    612 && (elementDim[elm_type] == dim || elementDim[elm_type] == (dim-1) ) ) ) // real element or boundary element?
    \n-
    613 {
    \n-
    614 skipline(file); // skip rest of line if element is unknown
    \n-
    615 return;
    \n-
    616 }
    \n-
    617
    \n-
    618 // The format string for parsing is n times '%d' in a row
    \n-
    619 std::string formatString = "%d";
    \n-
    620 for (int i=1; i<nDofs[elm_type]; i++)
    \n-
    621 formatString += " %d";
    \n-
    622 formatString += "\\n";
    \n-
    623
    \n-
    624 // '10' is the largest number of dofs we may encounter in a .msh file
    \n-
    625 std::vector<int> elementDofs(10);
    \n-
    626
    \n-
    627 readfile(file,nDofs[elm_type], formatString.c_str(),
    \n-
    628 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),
    \n-
    629 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),
    \n-
    630 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),
    \n-
    631 &(elementDofs[9]));
    \n-
    632
    \n-
    633 // correct differences between gmsh and Dune in the local vertex numbering
    \n-
    634 switch (elm_type)
    \n-
    635 {
    \n-
    636 case 3 : // 4-node quadrilateral
    \n-
    637 std::swap(elementDofs[2],elementDofs[3]);
    \n-
    638 break;
    \n-
    639 case 5 : // 8-node hexahedron
    \n-
    640 std::swap(elementDofs[2],elementDofs[3]);
    \n-
    641 std::swap(elementDofs[6],elementDofs[7]);
    \n-
    642 break;
    \n-
    643 case 7 : // 5-node pyramid
    \n-
    644 std::swap(elementDofs[2],elementDofs[3]);
    \n-
    645 break;
    \n-
    646 }
    \n-
    647
    \n-
    648 // renumber corners to account for the explicitly given vertex
    \n-
    649 // numbering in the file
    \n-
    650 std::vector<unsigned int> vertices(nVertices[elm_type]);
    \n-
    651
    \n-
    652 for (int i=0; i<nVertices[elm_type]; i++)
    \n-
    653 vertices[i] = renumber[elementDofs[i]];
    \n-
    654
    \n-
    655 // If it is an element, insert it as such
    \n-
    656 if (elementDim[elm_type] == dim) {
    \n-
    657
    \n-
    658 switch (elm_type)
    \n-
    659 {
    \n-
    660 case 1 : // 2-node line
    \n-
    661 factory.insertElement(Dune::GeometryTypes::line,vertices);
    \n-
    662 break;
    \n-
    663 case 2 : // 3-node triangle
    \n-
    664 factory.insertElement(Dune::GeometryTypes::triangle,vertices);
    \n-
    665 break;
    \n-
    666 case 3 : // 4-node quadrilateral
    \n-
    667 factory.insertElement(Dune::GeometryTypes::quadrilateral,vertices);
    \n-
    668 break;
    \n-
    669 case 4 : // 4-node tetrahedron
    \n-
    670 factory.insertElement(Dune::GeometryTypes::tetrahedron,vertices);
    \n-
    671 break;
    \n-
    672 case 5 : // 8-node hexahedron
    \n-
    673 factory.insertElement(Dune::GeometryTypes::hexahedron,vertices);
    \n-
    674 break;
    \n-
    675 case 6 : // 6-node prism
    \n-
    676 factory.insertElement(Dune::GeometryTypes::prism,vertices);
    \n-
    677 break;
    \n-
    678 case 7 : // 5-node pyramid
    \n-
    679 factory.insertElement(Dune::GeometryTypes::pyramid,vertices);
    \n-
    680 break;
    \n-
    681 case 9 : // 6-node triangle
    \n-
    682 factory.insertElement(Dune::GeometryTypes::triangle,vertices);
    \n-
    683 break;
    \n-
    684 case 11 : // 10-node tetrahedron
    \n-
    685 factory.insertElement(Dune::GeometryTypes::tetrahedron,vertices);
    \n-
    686 break;
    \n-
    687 }
    \n-
    688
    \n-
    689 } else {
    \n-
    690 // it must be a boundary segment then
    \n-\n-
    692
    \n-
    693 switch (elm_type)
    \n-
    694 {
    \n-
    695 case 1 : // 2-node line
    \n-
    696 factory.insertBoundarySegment(vertices);
    \n-
    697 break;
    \n-
    698
    \n-
    699 case 2 : // 3-node triangle
    \n-
    700 factory.insertBoundarySegment(vertices);
    \n-
    701 break;
    \n-
    702
    \n-
    703 case 3 : // 4-node quadrilateral
    \n-
    704 factory.insertBoundarySegment(vertices);
    \n-
    705 break;
    \n-
    706
    \n-
    707 case 15 : // 1-node point
    \n-
    708 factory.insertBoundarySegment(vertices);
    \n-
    709 break;
    \n-
    710
    \n-
    711 case 8 : { // 3-node line
    \n-
    712 std::array<FieldVector<double,dimWorld>, 3> v;
    \n-
    713 for (int i=0; i<dimWorld; i++) {
    \n-
    714 v[0][i] = nodes[elementDofs[0]][i];
    \n-
    715 v[1][i] = nodes[elementDofs[2]][i]; // yes, the renumbering is intended!
    \n-
    716 v[2][i] = nodes[elementDofs[1]][i];
    \n-
    717 }
    \n-
    718 BoundarySegment<dim,dimWorld>* newBoundarySegment
    \n-
    719 = (BoundarySegment<dim,dimWorld>*) new GmshReaderQuadraticBoundarySegment< 2, dimWorld >(v[0], v[1], v[2]);
    \n-
    720 factory.insertBoundarySegment(vertices,
    \n-
    721 std::shared_ptr<BoundarySegment<dim,dimWorld> >(newBoundarySegment));
    \n-
    722 break;
    \n-
    723 }
    \n-
    724 case 9 : { // 6-node triangle
    \n-
    725 boundarysegment_insert(nodes, elementDofs, vertices);
    \n-
    726 break;
    \n-
    727 }
    \n-
    728 default: {
    \n-
    729 DUNE_THROW(Dune::IOError, "GmshReader does not support using element-type " << elm_type << " for boundary segments");
    \n-
    730 break;
    \n-
    731 }
    \n-
    732
    \n-
    733 }
    \n-
    734
    \n-
    735 }
    \n-
    736 }
    \n-
    737
    \n-
    738 // count elements and boundary elements
    \n-
    739 if (elementDim[elm_type] == dim) {
    \n-\n-\n-
    742 } else {
    \n-\n-\n-
    745 }
    \n-
    746
    \n-
    747 }
    \n-
    \n-
    748
    \n-
    749 };
    \n-
    \n-
    750
    \n-
    \n-
    751 namespace Gmsh {
    \n-
    \n-
    757 enum class ReaderOptions
    \n-
    758 {
    \n-
    759 verbose = 1,
    \n-\n-
    761 readElementData = 4,
    \n-\n-
    763 };
    \n-
    \n-
    764
    \n-
    \n-\n-
    767 {
    \n-
    768 return static_cast<ReaderOptions>(
    \n-
    769 static_cast<int>(a) | static_cast<int>(b)
    \n-
    770 );
    \n-
    771 }
    \n-
    \n-
    772
    \n-
    \n-\n-
    775 {
    \n-
    776 return static_cast<int>(a) & static_cast<int>(b);
    \n-
    777 }
    \n-
    \n-
    778
    \n-
    779 } // end namespace Gmsh
    \n-
    \n-
    780
    \n-
    805 template<typename GridType>
    \n-
    \n-\n-
    807 {
    \n-
    809
    \n-
    828 static void doRead(Dune::GridFactory<GridType> &factory,
    \n-
    829 const std::string &fileName,
    \n-
    830 std::vector<int>& boundarySegmentToPhysicalEntity,
    \n-
    831 std::vector<int>& elementToPhysicalEntity,
    \n-
    832 bool verbose, bool insertBoundarySegments)
    \n-
    833 {
    \n-
    834 // register boundary segment to boundary segment factory for possible load balancing
    \n-
    835 // this needs to be done on all cores since the type might not be known otherwise
    \n-
    836 GmshReaderQuadraticBoundarySegment< Grid::dimension, Grid::dimensionworld >::registerFactory();
    \n-
    837
    \n-
    838#ifndef NDEBUG
    \n-
    839 // check that this method is called on all cores
    \n-
    840 factory.comm().barrier();
    \n-
    841#endif
    \n-
    842
    \n-
    843 // create parse object and read grid on process 0
    \n-
    844 if (factory.comm().rank() == 0)
    \n-
    845 {
    \n-
    846 GmshReaderParser<Grid> parser(factory,verbose,insertBoundarySegments);
    \n-
    847 parser.read(fileName);
    \n-
    848
    \n-
    849 boundarySegmentToPhysicalEntity = std::move(parser.boundaryIdMap());
    \n-
    850 elementToPhysicalEntity = std::move(parser.elementIndexMap());
    \n-
    851 }
    \n-
    852 else
    \n-
    853 {
    \n-
    854 boundarySegmentToPhysicalEntity = {};
    \n-
    855 elementToPhysicalEntity = {};
    \n-
    856 }
    \n-
    857 }
    \n-
    858
    \n-
    860
    \n-
    879 template<class T>
    \n-
    880 static T &discarded(T &&value) { return value; }
    \n-
    881
    \n-
    882 struct DataArg {
    \n-
    883 std::vector<int> *data_ = nullptr;
    \n-
    884 DataArg(std::vector<int> &data) : data_(&data) {}
    \n-
    885 DataArg(const decltype(std::ignore)&) {}
    \n-
    886 DataArg() = default;
    \n-
    887 };
    \n-
    888
    \n-
    889 struct DataFlagArg : DataArg {
    \n-
    890 bool flag_ = false;
    \n-
    891 using DataArg::DataArg;
    \n-
    892 DataFlagArg(bool flag) : flag_(flag) {}
    \n-
    893 };
    \n-
    894
    \n-
    895 public:
    \n-
    896 typedef GridType Grid;
    \n-
    897
    \n-
    \n-
    904 static std::unique_ptr<Grid> read (const std::string& fileName, bool verbose = true, bool insertBoundarySegments=true)
    \n-
    905 {
    \n-
    906 // make a grid factory
    \n-\n-
    908
    \n-
    909 read(factory, fileName, verbose, insertBoundarySegments);
    \n-
    910
    \n-
    911 return factory.createGrid();
    \n-
    912 }
    \n-
    \n-
    913
    \n-
    \n-
    933 static std::unique_ptr<Grid> read (const std::string& fileName,
    \n-
    934 std::vector<int>& boundarySegmentToPhysicalEntity,
    \n-
    935 std::vector<int>& elementToPhysicalEntity,
    \n-
    936 bool verbose = true, bool insertBoundarySegments=true)
    \n-
    937 {
    \n-
    938 // make a grid factory
    \n-\n-
    940
    \n-
    941 doRead(
    \n-
    942 factory, fileName, boundarySegmentToPhysicalEntity,
    \n-
    943 elementToPhysicalEntity, verbose, insertBoundarySegments
    \n-
    944 );
    \n-
    945
    \n-
    946 return factory.createGrid();
    \n-
    947 }
    \n-
    \n-
    948
    \n-
    \n-
    950 static void read (Dune::GridFactory<Grid>& factory, const std::string& fileName,
    \n-
    951 bool verbose = true, bool insertBoundarySegments=true)
    \n-
    952 {
    \n-
    953 doRead(
    \n-
    954 factory, fileName, discarded(std::vector<int>{}),
    \n-
    955 discarded(std::vector<int>{}), verbose, insertBoundarySegments
    \n-
    956 );
    \n-
    957 }
    \n-
    \n-
    958
    \n-
    960
    \n-
    \n-
    983 static void read (Dune::GridFactory<Grid> &factory,
    \n-
    984 const std::string &fileName,
    \n-
    985 DataFlagArg boundarySegmentData,
    \n-
    986 DataArg elementData,
    \n-
    987 bool verbose=true)
    \n-
    988 {
    \n-
    989 doRead(
    \n-
    990 factory, fileName,
    \n-
    991 boundarySegmentData.data_
    \n-
    992 ? *boundarySegmentData.data_ : discarded(std::vector<int>{}),
    \n-
    993 elementData.data_
    \n-
    994 ? *elementData.data_ : discarded(std::vector<int>{}),
    \n-
    995 verbose,
    \n-
    996 boundarySegmentData.flag_ || boundarySegmentData.data_
    \n-
    997 );
    \n-
    998 }
    \n-
    \n-
    999
    \n-
    \n-
    1020 static void read (Dune::GridFactory<Grid>& factory,
    \n-
    1021 const std::string& fileName,
    \n-
    1022 std::vector<int>& boundarySegmentToPhysicalEntity,
    \n-
    1023 std::vector<int>& elementToPhysicalEntity,
    \n-
    1024 bool verbose, bool insertBoundarySegments)
    \n-
    1025 {
    \n-
    1026 doRead(
    \n-
    1027 factory, fileName, boundarySegmentToPhysicalEntity,
    \n-
    1028 elementToPhysicalEntity, verbose, insertBoundarySegments
    \n-
    1029 );
    \n-
    1030 }
    \n-
    \n-
    1031
    \n-
    1033 //\\{
    \n-
    1034
    \n-
    1035 [[deprecated("Will be removed after 2.8. Either use other constructors or use static methods without constructing an object")]]
    \n-
    1036 GmshReader() = default;
    \n-
    1037
    \n-\n-
    1039
    \n-
    1040 static constexpr Opts defaultOpts =
    \n-
    1041 Opts::verbose | Opts::insertBoundarySegments | Opts::readElementData | Opts::readBoundaryData;
    \n-
    1042
    \n-
    1044
    \n-
    \n-
    1067 GmshReader(const std::string& fileName,
    \n-\n-
    1069 {
    \n-
    1070 gridFactory_ = std::make_unique<Dune::GridFactory<Grid>>();
    \n-
    1071 readGridFile(fileName, *gridFactory_, options);
    \n-
    1072 }
    \n-
    \n-
    1073
    \n-
    \n-
    1081 GmshReader(const std::string& fileName, GridFactory<Grid>& factory,
    \n-\n-
    1083 {
    \n-
    1084 readGridFile(fileName, factory, options);
    \n-
    1085 }
    \n-
    \n-
    1086
    \n-
    \n-
    1088 const std::vector<int>& elementData () const
    \n-
    1089 {
    \n-
    1090 checkElementData();
    \n-
    1091 return elementIndexToGmshPhysicalEntity_;
    \n-
    1092 }
    \n-
    \n-
    1093
    \n-
    \n-
    1095 const std::vector<int>& boundaryData () const
    \n-
    1096 {
    \n-
    1097 checkBoundaryData();
    \n-
    1098 return boundarySegmentIndexToGmshPhysicalEntity_;
    \n-
    1099 }
    \n-
    \n-
    1100
    \n-
    \n-
    1105 bool hasElementData () const
    \n-
    1106 { return hasElementData_ && !extractedElementData_; }
    \n-
    \n-
    1107
    \n-
    \n-
    1112 bool hasBoundaryData () const
    \n-
    1113 { return hasBoundaryData_ && !extractedBoundaryData_; }
    \n-
    \n-
    1114
    \n-
    \n-
    1116 std::vector<int> extractElementData ()
    \n-
    1117 {
    \n-
    1118 checkElementData();
    \n-
    1119 extractedElementData_ = true;
    \n-
    1120 return std::move(elementIndexToGmshPhysicalEntity_);
    \n-
    1121 }
    \n-
    \n-
    1122
    \n-
    \n-
    1124 std::vector<int> extractBoundaryData ()
    \n-
    1125 {
    \n-
    1126 checkBoundaryData();
    \n-
    1127 extractedBoundaryData_ = true;
    \n-
    1128 return std::move(boundarySegmentIndexToGmshPhysicalEntity_);
    \n-
    1129 }
    \n-
    \n-
    1130
    \n-
    \n-
    1132 std::unique_ptr<Grid> createGrid ()
    \n-
    1133 {
    \n-
    1134 if (!gridFactory_)
    \n-
    1135 DUNE_THROW(Dune::InvalidStateException,
    \n-
    1136 "This GmshReader has been constructed with a Dune::GridFactory. "
    \n-
    1137 << "This grid factory has been filled with all information to create a grid. "
    \n-
    1138 << "Please use this factory to create the grid by calling factory.createGrid(). "
    \n-
    1139 << "Alternatively use the constructor without passing the factory in combination with this member function."
    \n-
    1140 );
    \n-
    1141
    \n-
    1142 return gridFactory_->createGrid();
    \n-
    1143 }
    \n-
    \n-
    1144
    \n-
    1145 //\\}
    \n-
    1146
    \n-
    1147 private:
    \n-
    1148 void checkElementData () const
    \n-
    1149 {
    \n-
    1150 if (!hasElementData_)
    \n-
    1151 DUNE_THROW(Dune::InvalidStateException,
    \n-
    1152 "This GmshReader has been constructed without the option 'readElementData'. "
    \n-
    1153 << "Please enable reading element data by passing the option 'Gmsh::ReaderOpts::readElementData' "
    \n-
    1154 << "to the constructor of this class."
    \n-
    1155 );
    \n-
    1156
    \n-
    1157 if (extractedElementData_)
    \n-
    1158 DUNE_THROW(Dune::InvalidStateException,
    \n-
    1159 "The element data has already been extracted from this GmshReader "
    \n-
    1160 << "via a function call to reader.extractElementData(). Use the extraced data or "
    \n-
    1161 << "read the grid data from file again by constructing a new reader."
    \n-
    1162 );
    \n-
    1163 }
    \n-
    1164
    \n-
    1165 void checkBoundaryData () const
    \n-
    1166 {
    \n-
    1167 if (!hasBoundaryData_)
    \n-
    1168 DUNE_THROW(Dune::InvalidStateException,
    \n-
    1169 "This GmshReader has been constructed without the option 'readBoundaryData'. "
    \n-
    1170 << "Please enable reading boundary data by passing the option 'Gmsh::ReaderOpts::readBoundaryData' "
    \n-
    1171 << "to the constructor of this class."
    \n-
    1172 );
    \n-
    1173
    \n-
    1174 if (extractedBoundaryData_)
    \n-
    1175 DUNE_THROW(Dune::InvalidStateException,
    \n-
    1176 "The boundary data has already been extracted from this GmshReader "
    \n-
    1177 << "via a function call to reader.extractBoundaryData(). Use the extraced data or "
    \n-
    1178 << "read the grid data from file again by constructing a new reader."
    \n-
    1179 );
    \n-
    1180 }
    \n-
    1181
    \n-
    1182 void readGridFile (const std::string& fileName, GridFactory<Grid>& factory, Gmsh::ReaderOptions options)
    \n-
    1183 {
    \n-
    1184 const bool verbose = options & Opts::verbose;
    \n-
    1185 const bool insertBoundarySegments = options & Opts::insertBoundarySegments;
    \n-
    1186 const bool readBoundaryData = options & Opts::readBoundaryData;
    \n-
    1187 const bool readElementData = options & Opts::readElementData;
    \n-
    1188
    \n-
    1189 doRead(
    \n-
    1190 factory, fileName, boundarySegmentIndexToGmshPhysicalEntity_,
    \n-
    1191 elementIndexToGmshPhysicalEntity_, verbose,
    \n-
    1192 readBoundaryData || insertBoundarySegments
    \n-
    1193 );
    \n-
    1194
    \n-
    1195 // clear unwanted data
    \n-
    1196 if (!readBoundaryData)
    \n-
    1197 boundarySegmentIndexToGmshPhysicalEntity_ = std::vector<int>{};
    \n-
    1198 if (!readElementData)
    \n-
    1199 elementIndexToGmshPhysicalEntity_ = std::vector<int>{};
    \n-
    1200
    \n-
    1201 hasElementData_ = readElementData;
    \n-
    1202 hasBoundaryData_ = readBoundaryData;
    \n-
    1203 }
    \n-
    1204
    \n-
    1205 std::unique_ptr<Dune::GridFactory<Grid>> gridFactory_;
    \n-
    1206
    \n-
    1207 std::vector<int> elementIndexToGmshPhysicalEntity_;
    \n-
    1208 std::vector<int> boundarySegmentIndexToGmshPhysicalEntity_;
    \n-
    1209
    \n-
    1210 bool hasElementData_;
    \n-
    1211 bool hasBoundaryData_;
    \n-
    1212
    \n-
    1213 // for better error messages, we keep track of these separately
    \n-
    1214 bool extractedElementData_ = false;
    \n-
    1215 bool extractedBoundaryData_ = false;
    \n-
    1216 };
    \n-
    \n-
    1217
    \n-
    1220} // namespace Dune
    \n-
    1221
    \n-
    1222#endif
    \n-
    Base class for grid boundary segments of arbitrary geometry.
    \n-
    ReaderOptions
    Option for the Gmsh mesh file reader.
    Definition gmshreader.hh:758
    \n-\n-\n-\n-\n-
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n+
    \n+\n+
    408 {
    \n+
    409 RawStream s;
    \n+
    410
    \n+
    411 public:
    \n+
    413
    \n+
    \n+
    419 NakedRawDataArrayWriter(std::ostream& theStream, int ncomps,
    \n+
    420 int nitems, Precision prec_)
    \n+
    421 : DataArrayWriter(prec_), s(theStream)
    \n+
    422 {
    \n+
    423 s.write((unsigned int)(ncomps*nitems*typeSize(prec_)));
    \n+
    424 }
    \n+
    \n+
    425
    \n+
    426 private:
    \n+
    428 void writeFloat64 (double data) final
    \n+
    429 { write_(data); }
    \n+
    431 void writeFloat32 (float data) final
    \n+
    432 { write_(data); }
    \n+
    434 void writeInt32 (std::int32_t data) final
    \n+
    435 { write_(data); }
    \n+
    437 void writeUInt32 (std::uint32_t data) final
    \n+
    438 { write_(data); }
    \n+
    440 void writeUInt8 (std::uint8_t data) final
    \n+
    441 { write_(data); }
    \n+
    442
    \n+
    444 template<class T>
    \n+
    445 void write_(T data)
    \n+
    446 {
    \n+
    447 s.write(data);
    \n+
    448 }
    \n+
    449 };
    \n+
    \n+
    450
    \n+
    452 //
    \n+
    453 // Factory
    \n+
    454 //
    \n+
    455
    \n+
    457
    \n+
    \n+\n+
    463 enum Phase { main, appended };
    \n+
    464
    \n+
    465 OutputType type;
    \n+
    466 std::ostream& stream;
    \n+
    467 unsigned offset;
    \n+
    469 Phase phase;
    \n+
    470
    \n+
    471 public:
    \n+
    473
    \n+
    \n+
    482 inline DataArrayWriterFactory(OutputType type_, std::ostream& stream_)
    \n+
    483 : type(type_), stream(stream_), offset(0), phase(main)
    \n+
    484 { }
    \n+
    \n+
    485
    \n+
    487
    \n+
    \n+
    497 inline bool beginAppended() {
    \n+
    498 phase = appended;
    \n+
    499 switch(type) {
    \n+
    500 case ascii : return false;
    \n+
    501 case base64 : return false;
    \n+
    502 case appendedraw : return true;
    \n+
    503 case appendedbase64 : return true;
    \n+
    504 }
    \n+
    505 DUNE_THROW(IOError, "Dune::VTK::DataArrayWriter: unsupported "
    \n+
    506 "OutputType " << type);
    \n+
    507 }
    \n+
    \n+
    508
    \n+
    \n+
    510 const std::string& appendedEncoding() const {
    \n+
    511 static const std::string rawString = "raw";
    \n+
    512 static const std::string base64String = "base64";
    \n+
    513
    \n+
    514 switch(type) {
    \n+
    515 case ascii :
    \n+
    516 case base64 :
    \n+
    517 DUNE_THROW(IOError, "DataArrayWriterFactory::appendedEncoding(): No "
    \n+
    518 "appended encoding for OutputType " << type);
    \n+
    519 case appendedraw : return rawString;
    \n+
    520 case appendedbase64 : return base64String;
    \n+
    521 }
    \n+
    522 DUNE_THROW(IOError, "DataArrayWriterFactory::appendedEncoding(): "
    \n+
    523 "unsupported OutputType " << type);
    \n+
    524 }
    \n+
    \n+
    525
    \n+
    527
    \n+
    \n+
    541 DataArrayWriter* make(const std::string& name, unsigned ncomps,
    \n+
    542 unsigned nitems, const Indent& indent,
    \n+
    543 Precision prec)
    \n+
    544 {
    \n+
    545 switch(phase) {
    \n+
    546 case main :
    \n+
    547 switch(type) {
    \n+
    548 case ascii :
    \n+
    549 return new AsciiDataArrayWriter(stream, name, ncomps, indent, prec);
    \n+
    550 case base64 :
    \n+
    551 return new BinaryDataArrayWriter(stream, name, ncomps, nitems,
    \n+
    552 indent, prec);
    \n+
    553 case appendedraw :
    \n+
    554 return new AppendedRawDataArrayWriter(stream, name, ncomps,
    \n+
    555 nitems, offset, indent, prec);
    \n+
    556 case appendedbase64 :
    \n+
    557 return new AppendedBase64DataArrayWriter(stream, name, ncomps,
    \n+
    558 nitems, offset,
    \n+
    559 indent, prec);
    \n+
    560 }
    \n+
    561 break;
    \n+
    562 case appended :
    \n+
    563 switch(type) {
    \n+
    564 case ascii :
    \n+
    565 case base64 :
    \n+
    566 break; // invlid in appended mode
    \n+
    567 case appendedraw :
    \n+
    568 return new NakedRawDataArrayWriter(stream, ncomps, nitems, prec);
    \n+
    569 case appendedbase64 :
    \n+
    570 return new NakedBase64DataArrayWriter(stream, ncomps, nitems, prec);
    \n+
    571 }
    \n+
    572 break;
    \n+
    573 }
    \n+
    574 DUNE_THROW(IOError, "Dune::VTK::DataArrayWriter: unsupported "
    \n+
    575 "OutputType " << type << " in phase " << phase);
    \n+
    576 }
    \n+
    \n+
    577 };
    \n+
    \n+
    578
    \n+
    579 } // namespace VTK
    \n+
    580
    \n+
    582
    \n+
    583} // namespace Dune
    \n+
    584
    \n+
    585#endif // DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH
    \n+
    Common stuff for the VTKWriter.
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    constexpr bool operator&(ReaderOptions a, ReaderOptions b)
    query operator for reader options (is b set in a)
    Definition gmshreader.hh:774
    \n-
    constexpr ReaderOptions operator|(ReaderOptions a, ReaderOptions b)
    composition operator for reader options
    Definition gmshreader.hh:766
    \n-
    Base class for classes implementing geometries of boundary segments.
    Definition boundarysegment.hh:94
    \n-
    Communication comm() const
    Return the Communication used by the grid factory.
    Definition common/gridfactory.hh:297
    \n-
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n-
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n-
    Options for read operation.
    Definition gmshreader.hh:39
    \n-
    GeometryOrder
    Definition gmshreader.hh:40
    \n-
    @ firstOrder
    edges are straight lines.
    Definition gmshreader.hh:42
    \n-
    @ secondOrder
    quadratic boundary approximation.
    Definition gmshreader.hh:44
    \n-
    dimension independent parts for GmshReaderParser
    Definition gmshreader.hh:302
    \n-
    void pass1HandleElement(FILE *file, const int elm_type, std::map< int, unsigned int > &renumber, const std::vector< GlobalVector > &nodes)
    Process one element during the first pass through the list of all elements.
    Definition gmshreader.hh:512
    \n-
    static const int dimWorld
    Definition gmshreader.hh:320
    \n-
    Dune::GridFactory< GridType > & factory
    Definition gmshreader.hh:305
    \n-
    std::vector< int > & boundaryIdMap()
    Definition gmshreader.hh:357
    \n-
    std::vector< int > & elementIndexMap()
    Definition gmshreader.hh:362
    \n-
    unsigned int number_of_real_vertices
    Definition gmshreader.hh:308
    \n-
    void boundarysegment_insert(const std::vector< FieldVector< double, 3 > > &nodes, const E &elementDofs, const V &vertices)
    Definition gmshreader.hh:575
    \n-
    GmshReaderParser(Dune::GridFactory< GridType > &_factory, bool v, bool i)
    Definition gmshreader.hh:354
    \n-
    int element_count
    Definition gmshreader.hh:310
    \n-
    void read(const std::string &f)
    Definition gmshreader.hh:367
    \n-
    void skipline(FILE *file)
    Definition gmshreader.hh:344
    \n-
    void readfile(FILE *file, int cnt, const char *format, void *t1, void *t2=0, void *t3=0, void *t4=0, void *t5=0, void *t6=0, void *t7=0, void *t8=0, void *t9=0, void *t10=0)
    Definition gmshreader.hh:330
    \n-
    std::vector< int > element_index_to_physical_entity
    Definition gmshreader.hh:316
    \n-
    virtual void pass2HandleElement(FILE *file, const int elm_type, std::map< int, unsigned int > &renumber, const std::vector< GlobalVector > &nodes, const int physical_entity)
    Process one element during the second pass through the list of all elements.
    Definition gmshreader.hh:600
    \n-
    static const int dim
    Definition gmshreader.hh:319
    \n-
    FieldVector< double, dimWorld > GlobalVector
    Definition gmshreader.hh:324
    \n-
    std::string fileName
    Definition gmshreader.hh:313
    \n-
    int boundary_element_count
    Definition gmshreader.hh:309
    \n-
    void boundarysegment_insert(const V &, const E &, const V2 &)
    Definition gmshreader.hh:564
    \n-
    bool verbose
    Definition gmshreader.hh:306
    \n-
    std::vector< int > boundary_id_to_physical_entity
    Definition gmshreader.hh:315
    \n-
    char buf[512]
    Definition gmshreader.hh:312
    \n-
    bool insert_boundary_segments
    Definition gmshreader.hh:307
    \n-
    Read Gmsh mesh file.
    Definition gmshreader.hh:807
    \n-
    static std::unique_ptr< Grid > read(const std::string &fileName, std::vector< int > &boundarySegmentToPhysicalEntity, std::vector< int > &elementToPhysicalEntity, bool verbose=true, bool insertBoundarySegments=true)
    Read Gmsh file, possibly with data.
    Definition gmshreader.hh:933
    \n-
    const std::vector< int > & elementData() const
    Access element data (maps element index to Gmsh physical entity)
    Definition gmshreader.hh:1088
    \n-
    static void read(Dune::GridFactory< Grid > &factory, const std::string &fileName, DataFlagArg boundarySegmentData, DataArg elementData, bool verbose=true)
    read Gmsh file, possibly with data
    Definition gmshreader.hh:983
    \n-
    static std::unique_ptr< Grid > read(const std::string &fileName, bool verbose=true, bool insertBoundarySegments=true)
    Definition gmshreader.hh:904
    \n-
    static void read(Dune::GridFactory< Grid > &factory, const std::string &fileName, bool verbose=true, bool insertBoundarySegments=true)
    Definition gmshreader.hh:950
    \n-
    GridType Grid
    Definition gmshreader.hh:896
    \n-
    std::unique_ptr< Grid > createGrid()
    Create the grid.
    Definition gmshreader.hh:1132
    \n-
    std::vector< int > extractBoundaryData()
    Erase boundary data from reader and return the data.
    Definition gmshreader.hh:1124
    \n-
    static void read(Dune::GridFactory< Grid > &factory, const std::string &fileName, std::vector< int > &boundarySegmentToPhysicalEntity, std::vector< int > &elementToPhysicalEntity, bool verbose, bool insertBoundarySegments)
    Read Gmsh file, possibly with data.
    Definition gmshreader.hh:1020
    \n-
    bool hasElementData() const
    If element data is available.
    Definition gmshreader.hh:1105
    \n-
    bool hasBoundaryData() const
    If boundary data is available.
    Definition gmshreader.hh:1112
    \n-
    static constexpr Opts defaultOpts
    Definition gmshreader.hh:1040
    \n-
    GmshReader(const std::string &fileName, GridFactory< Grid > &factory, Gmsh::ReaderOptions options=defaultOpts)
    Construct a Gmsh reader object from a file name and a grid factory.
    Definition gmshreader.hh:1081
    \n-
    GmshReader(const std::string &fileName, Gmsh::ReaderOptions options=defaultOpts)
    Construct a Gmsh reader object (alternatively use one of the static member functions)
    Definition gmshreader.hh:1067
    \n-
    std::vector< int > extractElementData()
    Erase element data from reader and return the data.
    Definition gmshreader.hh:1116
    \n-
    const std::vector< int > & boundaryData() const
    Access boundary data (maps boundary segment index to Gmsh physical entity)
    Definition gmshreader.hh:1095
    \n-
    GmshReader()=default
    Dynamic Gmsh reader interface.
    \n-
    Provide a generic factory class for unstructured grids.
    \n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+\n+\n+\n+\n+\n+
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n+
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n+
    @ appendedraw
    Output is to the file is appended raw binary.
    Definition common.hh:49
    \n+
    @ appendedbase64
    Output is to the file is appended base64 binary.
    Definition common.hh:51
    \n+
    @ base64
    Output to the file is inline base64 binary.
    Definition common.hh:47
    \n+
    std::string toString(Precision p)
    map precision to VTK type name
    Definition common.hh:280
    \n+
    std::size_t typeSize(Precision p)
    map precision to byte size
    Definition common.hh:300
    \n+
    T Type
    type to convert T to before putting it into a stream with <<
    Definition common.hh:97
    \n+
    base class for data array writers
    Definition dataarraywriter.hh:56
    \n+
    void write(T data)
    write one element of data
    Definition dataarraywriter.hh:69
    \n+
    DataArrayWriter(Precision _prec)
    construct a data array writer
    Definition dataarraywriter.hh:63
    \n+
    virtual bool writeIsNoop() const
    whether calls to write may be skipped
    Definition dataarraywriter.hh:89
    \n+
    virtual ~DataArrayWriter()
    virtual destructor
    Definition dataarraywriter.hh:91
    \n+
    a streaming writer for data array tags, uses ASCII inline format
    Definition dataarraywriter.hh:110
    \n+
    ~AsciiDataArrayWriter()
    finish output; writes end tag
    Definition dataarraywriter.hh:133
    \n+
    AsciiDataArrayWriter(std::ostream &theStream, std::string name, int ncomps, const Indent &indent_, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:121
    \n+
    a streaming writer for data array tags, uses binary inline format
    Definition dataarraywriter.hh:197
    \n+
    ~BinaryDataArrayWriter()
    finish output; writes end tag
    Definition dataarraywriter.hh:228
    \n+
    BinaryDataArrayWriter(std::ostream &theStream, std::string name, int ncomps, int nitems, const Indent &indent_, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:210
    \n+
    a streaming writer for data array tags, uses appended raw format
    Definition dataarraywriter.hh:268
    \n+
    AppendedRawDataArrayWriter(std::ostream &s, std::string name, int ncomps, unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:283
    \n+
    bool writeIsNoop() const
    whether calls to write may be skipped
    Definition dataarraywriter.hh:297
    \n+
    a streaming writer for data array tags, uses appended base64 format
    Definition dataarraywriter.hh:310
    \n+
    AppendedBase64DataArrayWriter(std::ostream &s, std::string name, int ncomps, unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:325
    \n+
    bool writeIsNoop() const
    whether calls to write may be skipped
    Definition dataarraywriter.hh:342
    \n+
    a streaming writer for appended data array tags, uses base64 format
    Definition dataarraywriter.hh:360
    \n+
    NakedBase64DataArrayWriter(std::ostream &theStream, int ncomps, int nitems, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:369
    \n+
    a streaming writer for appended data arrays, uses raw format
    Definition dataarraywriter.hh:408
    \n+
    NakedRawDataArrayWriter(std::ostream &theStream, int ncomps, int nitems, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:419
    \n+
    a factory for DataArrayWriters
    Definition dataarraywriter.hh:462
    \n+
    bool beginAppended()
    signal start of the appended section
    Definition dataarraywriter.hh:497
    \n+
    DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned nitems, const Indent &indent, Precision prec)
    create a DataArrayWriter
    Definition dataarraywriter.hh:541
    \n+
    DataArrayWriterFactory(OutputType type_, std::ostream &stream_)
    create a DataArrayWriterFactory
    Definition dataarraywriter.hh:482
    \n+
    const std::string & appendedEncoding() const
    query encoding string for appended data
    Definition dataarraywriter.hh:510
    \n+
    void write(X &data)
    encode a data item
    Definition streams.hh:42
    \n+
    void flush()
    flush the current unwritten data to the stream.
    Definition streams.hh:64
    \n+
    write out data in binary
    Definition streams.hh:84
    \n+
    void write(T data)
    write data to stream
    Definition streams.hh:93
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,1302 +2,598 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-gmshreader.hh\n+ * _\bv_\bt_\bk\n+dataarraywriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_GMSHREADER_HH\n-7#define DUNE_GMSHREADER_HH\n+6#ifndef DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH\n 8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14#include \n-15#include \n-16#include \n-17#include \n-18#include \n-19#include \n-20\n-21#include \n-22#include \n-23\n-24#include \n-25\n-26#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-27#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-28\n-29namespace _\bD_\bu_\bn_\be\n-30{\n-31\n-_\b3_\b8 struct _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-39 {\n-_\b4_\b0 enum _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bO_\br_\bd_\be_\br {\n-_\b4_\b2 _\bf_\bi_\br_\bs_\bt_\bO_\br_\bd_\be_\br,\n-44 _\bs_\be_\bc_\bo_\bn_\bd_\bO_\br_\bd_\be_\br\n-_\b4_\b5 };\n-46 };\n-47\n-48 namespace {\n-49\n-50 // arbitrary dimension, implementation is in specialization\n-51 template< int dimension, int dimWorld = dimension >\n-52 class GmshReaderQuadraticBoundarySegment\n-53 {\n-54 public:\n-55 // empty function since this class does not implement anything\n-56 static void registerFactory() {}\n-57 };\n-58\n-59 // quadratic boundary segments in 1d\n-60 /*\n-61 Note the points\n-62\n-63 (0) (alpha) (1)\n-64\n-65 are mapped to the points in global coordinates\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14#include \n+15\n+16#include \n+17#include \n+18\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+21\n+30namespace _\bD_\bu_\bn_\be\n+31{\n+34\n+35 namespace VTK {\n+36\n+38\n+_\b5_\b5 class _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+56 {\n+57 public:\n+59\n+_\b6_\b3 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _prec)\n+64 : prec(_prec)\n+65 {}\n 66\n-67 p0 p2 p1\n-68\n-69 alpha is determined automatically from the given points.\n-70 */\n-71 template< int dimWorld >\n-72 struct GmshReaderQuadraticBoundarySegment< 2, dimWorld >\n-73 : public _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt< 2, dimWorld >\n-74 {\n-75 typedef GmshReaderQuadraticBoundarySegment< 2, dimWorld > ThisType;\n-76 typedef typename _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b2_\b,_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b> :: ObjectStreamType\n-ObjectStreamType;\n-77 typedef Dune::FieldVector< double, dimWorld > _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n-78\n-79 GmshReaderQuadraticBoundarySegment ( const GlobalVector &p0_, const\n-GlobalVector &p1_, const GlobalVector &p2_)\n-80 : p0(p0_), p1(p1_), p2(p2_)\n-81 {\n-82 init();\n-83 }\n-84\n-85 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )\n-86 {\n-87 // key is read before by the factory\n-88 const int bytes = sizeof(double)*dimWorld;\n-89 in.read( (char *) &p0[ 0 ], bytes );\n-90 in.read( (char *) &p1[ 0 ], bytes );\n-91 in.read( (char *) &p2[ 0 ], bytes );\n-92 init();\n-93 }\n-94\n-95 static void registerFactory()\n-96 {\n-97 if( key() < 0 )\n-98 {\n-99 key() = _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b2_\b,_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be registerFactory<\n-ThisType >();\n-100 }\n-101 }\n-102\n-103 virtual _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br operator() ( const Dune::FieldVector &local\n-) const\n-104 {\n-105 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br y;\n-106 y = 0.0;\n-107 y.axpy((local[0]-alpha)*(local[0]-1.0)/alpha,p0);\n-108 y.axpy(local[0]*(local[0]-1.0)/(alpha*(alpha-1.0)),p1);\n-109 y.axpy(local[0]*(local[0]-alpha)/(1.0-alpha),p2);\n-110 return y;\n-111 }\n-112\n-113 void backup( ObjectStreamType& out ) const\n-114 {\n-115 // backup key to identify object\n-116 out.write( (const char *) &key(), sizeof( int ) );\n-117 // backup data\n-118 const int bytes = sizeof(double)*dimWorld;\n-119 out.write( (const char*) &p0[ 0 ], bytes );\n-120 out.write( (const char*) &p1[ 0 ], bytes );\n-121 out.write( (const char*) &p2[ 0 ], bytes );\n-122 }\n-123\n-124 protected:\n-125 void init()\n-126 {\n-127 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br d1 = p1;\n-128 d1 -= p0;\n-129 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br d2 = p2;\n-130 d2 -= p1;\n+68 template\n+_\b6_\b9 void _\bw_\br_\bi_\bt_\be(T data)\n+70 {\n+71 switch(prec)\n+72 {\n+73 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2:\n+74 writeFloat32(data); break;\n+75 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4:\n+76 writeFloat64(data); break;\n+77 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2:\n+78 writeUInt32(data); break;\n+79 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8:\n+80 writeUInt8(data); break;\n+81 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2:\n+82 writeInt32(data); break;\n+83 default:\n+84 DUNE_THROW(Dune::NotImplemented, \"Unknown precision type\");\n+85 }\n+86 }\n+87\n+_\b8_\b9 virtual bool _\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp() const { return false; }\n+_\b9_\b1 virtual _\b~_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br () {}\n+92\n+93 private:\n+95 virtual void writeFloat32 (float data) = 0;\n+97 virtual void writeFloat64 (double data) = 0;\n+99 virtual void writeInt32 (std::int32_t data) = 0;\n+101 virtual void writeUInt8 (std::uint8_t data) = 0;\n+103 virtual void writeUInt32 (std::uint32_t data) = 0;\n+104\n+105 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec;\n+106 };\n+107\n+_\b1_\b0_\b9 class _\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+110 {\n+111 public:\n+113\n+_\b1_\b2_\b1 _\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, std::string name,\n+122 int ncomps, const Indent& indent_, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n+123 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), s(theStream), counter(0), numPerLine(12), indent\n+(indent_)\n+124 {\n+125 s << indent << \"\\n\";\n+129 ++indent;\n+130 }\n 131\n-132 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());\n-133 if (alpha<1E-6 || alpha>1-1E-6)\n-134 DUNE_THROW(Dune::IOError, \"ration in quadratic boundary segment bad\");\n-135 }\n-136\n-137 static int& key() {\n-138 static int k = -1;\n-139 return k;\n-140 }\n-141\n-142 private:\n-143 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br p0,p1,p2;\n-144 double alpha;\n-145 };\n-146\n-147\n-148 // quadratic boundary segments in 2d\n-149 /* numbering of points corresponding to gmsh:\n-150\n-151 2\n-152\n-153 5 4\n-154\n-155 0 3 1\n+_\b1_\b3_\b3 _\b~_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br ()\n+134 {\n+135 if (counter%numPerLine!=0) s << \"\\n\";\n+136 --indent;\n+137 s << indent << \"\\n\";\n+138 }\n+139\n+140 private:\n+142 void writeFloat64 (double data) final\n+143 { write_float(data); }\n+145 void writeFloat32 (float data) final\n+146 { write_float(data); }\n+148 void writeInt32 (std::int32_t data) final\n+149 { write_(data); }\n+151 void writeUInt32 (std::uint32_t data) final\n+152 { write_(data); }\n+154 void writeUInt8 (std::uint8_t data) final\n+155 { write_(data); }\n 156\n-157 Note: The vertices 3, 4, 5 are not necessarily at the edge midpoints but\n-can\n-158 be placed with parameters alpha, beta , gamma at the following positions\n-159 in local coordinates:\n-160\n-161\n-162 2 = (0,1)\n-163\n-164 5 = (0,beta) 4 = (1-gamma/sqrt(2),gamma/sqrt(2))\n-165\n-166 0 = (0,0) 3 = (alpha,0) 1 = (1,0)\n-167\n-168 The parameters alpha, beta, gamma are determined from the given vertices in\n-169 global coordinates.\n-170 */\n-171 template<>\n-172 class GmshReaderQuadraticBoundarySegment< 3, 3 >\n-173 : public _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt< 3 >\n-174 {\n-175 typedef GmshReaderQuadraticBoundarySegment< 3, 3 > ThisType;\n-176 typedef typename _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b3_\b _\b> :: ObjectStreamType\n-ObjectStreamType;\n-177 public:\n-178 GmshReaderQuadraticBoundarySegment (Dune::FieldVector p0_, Dune::\n-FieldVector p1_,\n-179 Dune::FieldVector p2_, Dune::FieldVector p3_,\n-180 Dune::FieldVector p4_, Dune::FieldVector p5_)\n-181 : p0(p0_), p1(p1_), p2(p2_), p3(p3_), p4(p4_), p5(p5_)\n-182 {\n-183 init();\n-184 }\n-185\n-186 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )\n-187 {\n-188 const int bytes = sizeof(double)*3;\n-189 in.read( (char *) &p0[ 0 ], bytes );\n-190 in.read( (char *) &p1[ 0 ], bytes );\n-191 in.read( (char *) &p2[ 0 ], bytes );\n-192 in.read( (char *) &p3[ 0 ], bytes );\n-193 in.read( (char *) &p4[ 0 ], bytes );\n-194 in.read( (char *) &p5[ 0 ], bytes );\n-195 init();\n-196 }\n-197\n-198 static void registerFactory()\n-199 {\n-200 if( key() < 0 )\n-201 {\n-202 key() = _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b3_\b _\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be registerFactory< ThisType >();\n-203 }\n-204 }\n-205\n-206 virtual Dune::FieldVector operator() (const Dune::\n-FieldVector& local) const\n-207 {\n-208 Dune::FieldVector y;\n-209 y = 0.0;\n-210 y.axpy(phi0(local),p0);\n-211 y.axpy(phi1(local),p1);\n-212 y.axpy(phi2(local),p2);\n-213 y.axpy(phi3(local),p3);\n-214 y.axpy(phi4(local),p4);\n-215 y.axpy(phi5(local),p5);\n-216 return y;\n-217 }\n+157 template\n+158 void write_(T data)\n+159 {\n+160 typedef typename _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\bT_\b>_\b:_\b:_\bT_\by_\bp_\be PT;\n+161 if(counter%numPerLine==0) s << indent;\n+162 else s << \" \";\n+163 const auto original_precision = std::cout.precision();\n+164 s << std::setprecision(std::numeric_limits::digits10) << (PT) data;\n+165 std::cout.precision(original_precision);\n+166 counter++;\n+167 if (counter%numPerLine==0) s << \"\\n\";\n+168 }\n+169\n+170 template\n+171 void write_float(T data)\n+172 {\n+173 typedef typename _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\bT_\b>_\b:_\b:_\bT_\by_\bp_\be PT;\n+174 if(counter%numPerLine==0) s << indent;\n+175 else s << \" \";\n+176 PT out_data = (PT) data;\n+177 if (std::fpclassify(out_data) == FP_SUBNORMAL)\n+178 {\n+179 // truncate denormalized data to 0 to avoid Paraview segfaults on macOS\n+180 out_data = 0;\n+181 }\n+182 const auto original_precision = std::cout.precision();\n+183 s << std::setprecision(std::numeric_limits::digits10) << out_data;\n+184 std::cout.precision(original_precision);\n+185 counter++;\n+186 if (counter%numPerLine==0) s << \"\\n\";\n+187 }\n+188\n+189 std::ostream& s;\n+190 int counter;\n+191 int numPerLine;\n+192 Indent indent;\n+193 };\n+194\n+_\b1_\b9_\b6 class _\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+197 {\n+198 public:\n+200\n+_\b2_\b1_\b0 _\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, std::string name,\n+211 int ncomps, int nitems, const Indent& indent_, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n+212 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), s(theStream), b64(theStream), indent(indent_)\n+213 {\n+214 s << indent << \"\\n\";\n 218\n-219 void backup( ObjectStreamType& out ) const\n-220 {\n-221 // backup key to identify object in factory\n-222 out.write( (const char*) &key(), sizeof( int ) );\n-223 // backup data\n-224 const int bytes = sizeof(double)*3;\n-225 out.write( (const char*) &p0[ 0 ], bytes );\n-226 out.write( (const char*) &p1[ 0 ], bytes );\n-227 out.write( (const char*) &p2[ 0 ], bytes );\n-228 out.write( (const char*) &p3[ 0 ], bytes );\n-229 out.write( (const char*) &p4[ 0 ], bytes );\n-230 out.write( (const char*) &p5[ 0 ], bytes );\n-231 }\n-232\n-233 protected:\n-234 void init()\n-235 {\n-236 using std::sqrt;\n-237 sqrt2 = sqrt(2.0);\n-238 Dune::FieldVector d1,d2;\n-239\n-240 d1 = p3; d1 -= p0;\n-241 d2 = p1; d2 -= p3;\n-242 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());\n-243 if (alpha<1E-6 || alpha>1-1E-6)\n-244 DUNE_THROW(Dune::IOError, \"alpha in quadratic boundary segment bad\");\n-245\n-246 d1 = p5; d1 -= p0;\n-247 d2 = p2; d2 -= p5;\n-248 beta=d1.two_norm()/(d1.two_norm()+d2.two_norm());\n-249 if (beta<1E-6 || beta>1-1E-6)\n-250 DUNE_THROW(Dune::IOError, \"beta in quadratic boundary segment bad\");\n-251\n-252 d1 = p4; d1 -= p1;\n-253 d2 = p2; d2 -= p4;\n-254 gamma=sqrt2*(d1.two_norm()/(d1.two_norm()+d2.two_norm()));\n-255 if (gamma<1E-6 || gamma>1-1E-6)\n-256 DUNE_THROW(Dune::IOError, \"gamma in quadratic boundary segment bad\");\n-257 }\n-258\n-259 static int& key() {\n-260 static int k = -1;\n-261 return k;\n-262 }\n-263\n-264 private:\n-265 // The six Lagrange basis function on the reference element\n-266 // for the points given above\n-267\n-268 double phi0 (const Dune::FieldVector& local) const\n-269 {\n-270 return (alpha*beta-beta*local[0]-alpha*local[1])*(1-local[0]-local[1])/\n-(alpha*beta);\n-271 }\n-272 double phi3 (const Dune::FieldVector& local) const\n-273 {\n-274 return local[0]*(1-local[0]-local[1])/(alpha*(1-alpha));\n-275 }\n-276 double phi1 (const Dune::FieldVector& local) const\n-277 {\n-278 return local[0]*(gamma*local[0]-(sqrt2-gamma-sqrt2*alpha)*local[1]-\n-alpha*gamma)/(gamma*(1-alpha));\n-279 }\n-280 double phi5 (const Dune::FieldVector& local) const\n-281 {\n-282 return local[1]*(1-local[0]-local[1])/(beta*(1-beta));\n-283 }\n-284 double phi4 (const Dune::FieldVector& local) const\n-285 {\n-286 return local[0]*local[1]/((1-gamma/sqrt2)*gamma/sqrt2);\n-287 }\n-288 double phi2 (const Dune::FieldVector& local) const\n-289 {\n-290 return local[1]*(beta*(1-gamma/sqrt2)-local[0]*(beta-gamma/sqrt2)-local[1]*\n-(1-gamma/sqrt2))/((1-gamma/sqrt2)*(beta-1));\n-291 }\n-292\n-293 Dune::FieldVector p0,p1,p2,p3,p4,p5;\n-294 double alpha,beta,gamma,sqrt2;\n-295 };\n-296\n-297 } // end empty namespace\n+219 // write indentation for the data chunk\n+220 s << indent+1;\n+221 // store size, needs to be exactly 32 bit\n+222 std::uint32_t size = ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n+223 b64._\bw_\br_\bi_\bt_\be(size);\n+224 b64._\bf_\bl_\bu_\bs_\bh();\n+225 }\n+226\n+_\b2_\b2_\b8 _\b~_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br ()\n+229 {\n+230 b64._\bf_\bl_\bu_\bs_\bh();\n+231 // append newline to written data\n+232 s << \"\\n\";\n+233 s << indent << \"\\n\";\n+234 s.flush();\n+235 }\n+236\n+237 private:\n+239 void writeFloat64 (double data) final\n+240 { write_(data); }\n+242 void writeFloat32 (float data) final\n+243 { write_(data); }\n+245 void writeInt32 (std::int32_t data) final\n+246 { write_(data); }\n+248 void writeUInt32 (std::uint32_t data) final\n+249 { write_(data); }\n+251 void writeUInt8 (std::uint8_t data) final\n+252 { write_(data); }\n+253\n+255 template\n+256 void write_(T data)\n+257 {\n+258 b64._\bw_\br_\bi_\bt_\be(data);\n+259 }\n+260\n+261 std::ostream& s;\n+262 Base64Stream b64;\n+263 const Indent& indent;\n+264 };\n+265\n+_\b2_\b6_\b7 class _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+268 {\n+269 public:\n+271\n+_\b2_\b8_\b3 _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& s, std::string name,\n+284 int ncomps, unsigned nitems, unsigned& offset,\n+285 const Indent& indent, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n+286 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_)\n+287 {\n+288 s << indent << \"\\n\";\n+292 offset += 4; // header\n+293 offset += ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n+294 }\n+295\n+_\b2_\b9_\b7 bool _\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp() const { return true; }\n 298\n-300 template\n-_\b3_\b0_\b1 class _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br\n-302 {\n-303 protected:\n-304 // private data\n-_\b3_\b0_\b5 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b>& _\bf_\ba_\bc_\bt_\bo_\br_\by;\n-_\b3_\b0_\b6 bool _\bv_\be_\br_\bb_\bo_\bs_\be;\n-_\b3_\b0_\b7 bool _\bi_\bn_\bs_\be_\br_\bt_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bs_\be_\bg_\bm_\be_\bn_\bt_\bs;\n-_\b3_\b0_\b8 unsigned int _\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs;\n-_\b3_\b0_\b9 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt;\n-_\b3_\b1_\b0 int _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt;\n-311 // read buffer\n-_\b3_\b1_\b2 char _\bb_\bu_\bf[512];\n-_\b3_\b1_\b3 std::string _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be;\n-314 // exported data\n-_\b3_\b1_\b5 std::vector _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n-_\b3_\b1_\b6 std::vector _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n-317\n-318 // static data\n-_\b3_\b1_\b9 static const int _\bd_\bi_\bm = GridType::dimension;\n-_\b3_\b2_\b0 static const int _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd = GridType::dimensionworld;\n-321 static_assert( (_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd <= 3), \"GmshReader requires dimWorld <= 3.\" );\n-322\n-323 // typedefs\n-_\b3_\b2_\b4 typedef FieldVector< double, dimWorld > _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n-325\n-326 // don't use something like\n-327 // readfile(file, 1, \"%s\\n\", buf);\n-328 // to skip the rest of of the line -- that will only skip the next\n-329 // whitespace-separated word! Use skipline() instead.\n-_\b3_\b3_\b0 void _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(FILE * file, int cnt, const char * format,\n-331 void* t1, void* t2 = 0, void* t3 = 0, void* t4 = 0,\n-332 void* t5 = 0, void* t6 = 0, void* t7 = 0, void* t8 = 0,\n-333 void* t9 = 0, void* t10 = 0)\n-334 {\n-335 off_t pos = ftello(file);\n-336 int c = fscanf(file, format, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);\n-337 if (c != cnt)\n-338 DUNE_THROW(Dune::IOError, \"Error parsing \" << _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be << \" \"\n-339 \"file pos \" << pos\n-340 << \": Expected '\" << format << \"', only read \" << c << \" entries instead of\n-\" << cnt << \".\");\n-341 }\n-342\n-343 // skip over the rest of the line, including the terminating newline\n-_\b3_\b4_\b4 void _\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be(FILE * file)\n-345 {\n-346 int c;\n-347 do {\n-348 c = std::fgetc(file);\n-349 } while(c != '\\n' && c != EOF);\n-350 }\n-351\n-352 public:\n-353\n-_\b3_\b5_\b4 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br(_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b>& _factory, bool v, bool i) :\n-355 _\bf_\ba_\bc_\bt_\bo_\br_\by(_factory), _\bv_\be_\br_\bb_\bo_\bs_\be(v), _\bi_\bn_\bs_\be_\br_\bt_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bs_\be_\bg_\bm_\be_\bn_\bt_\bs(i) {}\n-356\n-_\b3_\b5_\b7 std::vector & _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd_\bM_\ba_\bp()\n-358 {\n-359 return _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n-360 }\n-361\n-_\b3_\b6_\b2 std::vector & _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp()\n-363 {\n-364 return _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n-365 }\n-366\n-_\b3_\b6_\b7 void _\br_\be_\ba_\bd (const std::string& f)\n-368 {\n-369 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"Reading \" << _\bd_\bi_\bm << \"d Gmsh grid...\" << std::\n-endl;\n-370\n-371 // open file name, we use C I/O\n-372 _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be = f;\n-373 FILE* file = fopen(_\bf_\bi_\bl_\be_\bN_\ba_\bm_\be.c_str(),\"rb\");\n-374 if (file==0)\n-375 DUNE_THROW(Dune::IOError, \"Could not open \" << _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be);\n-376\n-377 //=========================================\n-378 // Header: Read vertices into vector\n-379 // Check vertices that are needed\n-380 //=========================================\n-381\n-382 _\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs = 0;\n-383 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n-384 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n-385\n-386 // process header\n-387 double version_number;\n-388 int file_type, data_size;\n-389\n-390 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-391 if (strcmp(_\bb_\bu_\bf,\"$MeshFormat\")!=0)\n-392 DUNE_THROW(Dune::IOError, \"expected $MeshFormat in first line\");\n-393 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,3,\"%lg %d %d\\n\",&version_number,&file_type,&data_size);\n-394 // 2.2 is not representable as float and leads to problems on i386\n-395 // Hence we use >= 2.00001.\n-396 if( (version_number < 2.0) || (version_number >= 2.20001) ) // 2.2 is not\n-representable as float and leads to problems on i386\n-397 DUNE_THROW(Dune::IOError, \"can only read Gmsh version 2 files\");\n-398 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"version \" << version_number << \" Gmsh file\n-detected\" << std::endl;\n-399 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-400 if (strcmp(_\bb_\bu_\bf,\"$EndMeshFormat\")!=0)\n-401 DUNE_THROW(Dune::IOError, \"expected $EndMeshFormat\");\n+299 private:\n+301 void writeFloat64 (double) final {}\n+302 void writeFloat32 (float) final {}\n+303 void writeInt32 (std::int32_t) final {}\n+304 void writeUInt32 (std::uint32_t) final {}\n+305 void writeUInt8 (std::uint8_t) final {}\n+306 };\n+307\n+_\b3_\b0_\b9 class _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+310 {\n+311 public:\n+313\n+_\b3_\b2_\b5 _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& s, std::string name,\n+326 int ncomps, unsigned nitems,\n+327 unsigned& offset, const Indent& indent, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n+328 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_)\n+329 {\n+330 s << indent << \"\\n\";\n+334 offset += 8; // header\n+335 std::size_t bytes = ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n+336 offset += bytes/3*4;\n+337 if(bytes%3 != 0)\n+338 offset += 4;\n+339 }\n+340\n+_\b3_\b4_\b2 bool _\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp() const { return true; }\n+343\n+344 private:\n+346 void writeFloat64 (double) final {}\n+347 void writeFloat32 (float) final {}\n+348 void writeInt32 (std::int32_t) final {}\n+349 void writeUInt32 (std::uint32_t) final {}\n+350 void writeUInt8 (std::uint8_t) final {}\n+351 };\n+352\n+354 //\n+355 // Naked ArrayWriters for the appended section\n+356 //\n+357\n+_\b3_\b5_\b9 class _\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+360 {\n+361 public:\n+363\n+_\b3_\b6_\b9 _\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, int ncomps,\n+370 int nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n+371 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), b64(theStream)\n+372 {\n+373 // store size\n+374 std::uint32_t size = ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n+375 b64._\bw_\br_\bi_\bt_\be(size);\n+376 b64._\bf_\bl_\bu_\bs_\bh();\n+377 }\n+378\n+379 private:\n+381 void writeFloat64 (double data) final\n+382 { write_(data); }\n+384 void writeFloat32 (float data) final\n+385 { write_(data); }\n+387 void writeInt32 (std::int32_t data) final\n+388 { write_(data); }\n+390 void writeUInt32 (std::uint32_t data) final\n+391 { write_(data); }\n+393 void writeUInt8 (std::uint8_t data) final\n+394 { write_(data); }\n+395\n+397 template\n+398 void write_(T data)\n+399 {\n+400 b64._\bw_\br_\bi_\bt_\be(data);\n+401 }\n 402\n-403 // node section\n-404 int number_of_nodes;\n+403 Base64Stream b64;\n+404 };\n 405\n-406 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-407 if (strcmp(_\bb_\bu_\bf,\"$Nodes\")!=0)\n-408 DUNE_THROW(Dune::IOError, \"expected $Nodes\");\n-409 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d\\n\",&number_of_nodes);\n-410 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"file contains \" << number_of_nodes << \" nodes\"\n-<< std::endl;\n-411\n-412 // read nodes\n-413 // The '+1' is due to the fact that gmsh numbers node starting from 1\n-rather than from 0\n-414 std::vector< GlobalVector > nodes( number_of_nodes+1 );\n-415 {\n-416 int id;\n-417 double x[ 3 ];\n-418 for( int i = 1; i <= number_of_nodes; ++i )\n-419 {\n-420 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,4, \"%d %lg %lg %lg\\n\", &id, &x[ 0 ], &x[ 1 ], &x[ 2 ] );\n-421\n-422 if (id > number_of_nodes) {\n-423 DUNE_THROW(Dune::IOError,\n-424 \"Only dense sequences of node indices are currently supported (node index \"\n-425 << id << \" is invalid).\");\n-426 }\n-427\n-428 // just store node position\n-429 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n-430 nodes[ id ][ j ] = x[ j ];\n-431 }\n-432 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-433 if (strcmp(_\bb_\bu_\bf,\"$EndNodes\")!=0)\n-434 DUNE_THROW(Dune::IOError, \"expected $EndNodes\");\n-435 }\n-436\n-437 // element section\n-438 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-439 if (strcmp(_\bb_\bu_\bf,\"$Elements\")!=0)\n-440 DUNE_THROW(Dune::IOError, \"expected $Elements\");\n-441 int number_of_elements;\n-442 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d\\n\",&number_of_elements);\n-443 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"file contains \" << number_of_elements << \"\n-elements\" << std::endl;\n-444\n-445 //=========================================\n-446 // Pass 1: Select and insert those vertices in the file that\n-447 // actually occur as corners of an element.\n-448 //=========================================\n-449\n-450 off_t section_element_offset = ftello(file);\n-451 std::map renumber;\n-452 for (int i=1; i<=number_of_elements; i++)\n-453 {\n-454 int id, elm_type, number_of_tags;\n-455 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,3,\"%d %d %d \",&id,&elm_type,&number_of_tags);\n-456 for (int k=1; k<=number_of_tags; k++)\n-457 {\n-458 int blub;\n-459 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d \",&blub);\n-460 // k == 1: physical entity (not used here)\n-461 // k == 2: elementary entity (not used here either)\n-462 // if version_number < 2.2:\n-463 // k == 3: mesh partition 0\n-464 // else\n-465 // k == 3: number of mesh partitions\n-466 // k => 4: mesh partition k-4\n-467 }\n-468 _\bp_\ba_\bs_\bs_\b1_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(file, elm_type, renumber, nodes);\n-469 }\n-470 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"number of real vertices = \" <<\n-_\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs << std::endl;\n-471 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"number of boundary elements = \" <<\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt << std::endl;\n-472 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"number of elements = \" << _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt << std::\n-endl;\n-473 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-474 if (strcmp(_\bb_\bu_\bf,\"$EndElements\")!=0)\n-475 DUNE_THROW(Dune::IOError, \"expected $EndElements\");\n-476 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by.resize(_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt);\n-477 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by.resize(_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt);\n-478\n-479 //==============================================\n-480 // Pass 2: Insert boundary segments and elements\n-481 //==============================================\n-482\n-483 fseeko(file, section_element_offset, SEEK_SET);\n-484 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n-485 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n-486 for (int i=1; i<=number_of_elements; i++)\n-487 {\n-488 int id, elm_type, number_of_tags;\n-489 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,3,\"%d %d %d \",&id,&elm_type,&number_of_tags);\n-490 int physical_entity = -1;\n-491\n-492 for (int k=1; k<=number_of_tags; k++)\n-493 {\n-494 int blub;\n-495 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d \",&blub);\n-496 if (k==1) physical_entity = blub;\n-497 }\n-498 _\bp_\ba_\bs_\bs_\b2_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(file, elm_type, renumber, nodes, physical_entity);\n-499 }\n-500 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n-501 if (strcmp(_\bb_\bu_\bf,\"$EndElements\")!=0)\n-502 DUNE_THROW(Dune::IOError, \"expected $EndElements\");\n-503\n-504 fclose(file);\n-505 }\n-506\n-_\b5_\b1_\b2 void _\bp_\ba_\bs_\bs_\b1_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(FILE* file, const int elm_type,\n-513 std::map & renumber,\n-514 const std::vector< GlobalVector > & nodes)\n-515 {\n-516 // some data about gmsh elements\n-517 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1,\n-1};\n-518 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -\n-1, 1};\n-519 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -\n-1, 0};\n-520\n-521 // test whether we support the element type\n-522 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?\n-523 && (elementDim[elm_type] == _\bd_\bi_\bm || elementDim[elm_type] == (_\bd_\bi_\bm-1) ) ) ) /\n-/ real element or boundary element?\n-524 {\n-525 _\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be(file); // skip rest of line if element is unknown\n-526 return;\n-527 }\n-528\n-529 // The format string for parsing is n times '%d' in a row\n-530 std::string formatString = \"%d\";\n-531 for (int i=1; i elementDofs(10);\n-537\n-538 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,nDofs[elm_type], formatString.c_str(),\n-539 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),\n-540 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),\n-541 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),\n-542 &(elementDofs[9]));\n-543\n-544 // insert each vertex if it hasn't been inserted already\n-545 for (int i=0; i\n-_\b5_\b6_\b4 void _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt(\n-565 const V&,\n-566 const E&,\n-567 const V2&\n-568 )\n-569 {\n-570 DUNE_THROW(Dune::IOError, \"tried to create a 3D boundary segment in a non-\n-3D Grid\");\n+_\b4_\b0_\b7 class _\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+408 {\n+409 _\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm s;\n+410\n+411 public:\n+413\n+_\b4_\b1_\b9 _\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, int ncomps,\n+420 int nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n+421 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), s(theStream)\n+422 {\n+423 s._\bw_\br_\bi_\bt_\be((unsigned int)(ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_)));\n+424 }\n+425\n+426 private:\n+428 void writeFloat64 (double data) final\n+429 { write_(data); }\n+431 void writeFloat32 (float data) final\n+432 { write_(data); }\n+434 void writeInt32 (std::int32_t data) final\n+435 { write_(data); }\n+437 void writeUInt32 (std::uint32_t data) final\n+438 { write_(data); }\n+440 void writeUInt8 (std::uint8_t data) final\n+441 { write_(data); }\n+442\n+444 template\n+445 void write_(T data)\n+446 {\n+447 s._\bw_\br_\bi_\bt_\be(data);\n+448 }\n+449 };\n+450\n+452 //\n+453 // Factory\n+454 //\n+455\n+457\n+_\b4_\b6_\b2 class _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+463 enum Phase { main, appended };\n+464\n+465 _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type;\n+466 std::ostream& stream;\n+467 unsigned offset;\n+469 Phase phase;\n+470\n+471 public:\n+473\n+_\b4_\b8_\b2 inline _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type_, std::ostream& stream_)\n+483 : type(type_), stream(stream_), offset(0), phase(main)\n+484 { }\n+485\n+487\n+_\b4_\b9_\b7 inline bool _\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd() {\n+498 phase = appended;\n+499 switch(type) {\n+500 case _\ba_\bs_\bc_\bi_\bi : return false;\n+501 case _\bb_\ba_\bs_\be_\b6_\b4 : return false;\n+502 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw : return true;\n+503 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 : return true;\n+504 }\n+505 DUNE_THROW(IOError, \"Dune::VTK::DataArrayWriter: unsupported \"\n+506 \"OutputType \" << type);\n+507 }\n+508\n+_\b5_\b1_\b0 const std::string& _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg() const {\n+511 static const std::string rawString = \"raw\";\n+512 static const std::string base64String = \"base64\";\n+513\n+514 switch(type) {\n+515 case _\ba_\bs_\bc_\bi_\bi :\n+516 case _\bb_\ba_\bs_\be_\b6_\b4 :\n+517 DUNE_THROW(IOError, \"DataArrayWriterFactory::appendedEncoding(): No \"\n+518 \"appended encoding for OutputType \" << type);\n+519 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw : return rawString;\n+520 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 : return base64String;\n+521 }\n+522 DUNE_THROW(IOError, \"DataArrayWriterFactory::appendedEncoding(): \"\n+523 \"unsupported OutputType \" << type);\n+524 }\n+525\n+527\n+_\b5_\b4_\b1 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br* _\bm_\ba_\bk_\be(const std::string& name, unsigned ncomps,\n+542 unsigned nitems, const Indent& indent,\n+543 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec)\n+544 {\n+545 switch(phase) {\n+546 case main :\n+547 switch(type) {\n+548 case _\ba_\bs_\bc_\bi_\bi :\n+549 return new _\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps, indent, prec);\n+550 case _\bb_\ba_\bs_\be_\b6_\b4 :\n+551 return new _\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps, nitems,\n+552 indent, prec);\n+553 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw :\n+554 return new _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps,\n+555 nitems, offset, indent, prec);\n+556 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 :\n+557 return new _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps,\n+558 nitems, offset,\n+559 indent, prec);\n+560 }\n+561 break;\n+562 case appended :\n+563 switch(type) {\n+564 case _\ba_\bs_\bc_\bi_\bi :\n+565 case _\bb_\ba_\bs_\be_\b6_\b4 :\n+566 break; // invlid in appended mode\n+567 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw :\n+568 return new _\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, ncomps, nitems, prec);\n+569 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 :\n+570 return new _\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, ncomps, nitems, prec);\n 571 }\n-572\n-573 // 3d-case:\n-574 template \n-_\b5_\b7_\b5 void _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt(\n-576 const std::vector >& nodes,\n-577 const E& elementDofs,\n-578 const V& vertices\n-579 )\n-580 {\n-581 std::array, 6> v;\n-582 for (int i=0; i<6; i++)\n-583 for (int j=0; j<_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; j++)\n-584 v[i][j] = nodes[elementDofs[i]][j];\n-585\n-586 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>* newBoundarySegment\n-587 = (_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>*) new GmshReaderQuadraticBoundarySegment<\n-3, 3 >( v[0], v[1], v[2],\n-588 v[3], v[4], v[5] );\n-589\n-590 _\bf_\ba_\bc_\bt_\bo_\br_\by.insertBoundarySegment( vertices,\n-591 std::shared_ptr<_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b> >(newBoundarySegment) );\n-592 }\n-593\n-594\n-595\n-_\b6_\b0_\b0 virtual void _\bp_\ba_\bs_\bs_\b2_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(FILE* file, const int elm_type,\n-601 std::map & renumber,\n-602 const std::vector< GlobalVector > & nodes,\n-603 const int physical_entity)\n-604 {\n-605 // some data about gmsh elements\n-606 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1,\n-1};\n-607 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -\n-1, 1};\n-608 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -\n-1, 0};\n-609\n-610 // test whether we support the element type\n-611 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?\n-612 && (elementDim[elm_type] == _\bd_\bi_\bm || elementDim[elm_type] == (_\bd_\bi_\bm-1) ) ) ) /\n-/ real element or boundary element?\n-613 {\n-614 _\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be(file); // skip rest of line if element is unknown\n-615 return;\n-616 }\n-617\n-618 // The format string for parsing is n times '%d' in a row\n-619 std::string formatString = \"%d\";\n-620 for (int i=1; i elementDofs(10);\n-626\n-627 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,nDofs[elm_type], formatString.c_str(),\n-628 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),\n-629 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),\n-630 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),\n-631 &(elementDofs[9]));\n-632\n-633 // correct differences between gmsh and Dune in the local vertex numbering\n-634 switch (elm_type)\n-635 {\n-636 case 3 : // 4-node quadrilateral\n-637 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[2],elementDofs[3]);\n-638 break;\n-639 case 5 : // 8-node hexahedron\n-640 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[2],elementDofs[3]);\n-641 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[6],elementDofs[7]);\n-642 break;\n-643 case 7 : // 5-node pyramid\n-644 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[2],elementDofs[3]);\n-645 break;\n-646 }\n-647\n-648 // renumber corners to account for the explicitly given vertex\n-649 // numbering in the file\n-650 std::vector vertices(nVertices[elm_type]);\n-651\n-652 for (int i=0; i, 3> v;\n-713 for (int i=0; i<_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; i++) {\n-714 v[0][i] = nodes[elementDofs[0]][i];\n-715 v[1][i] = nodes[elementDofs[2]][i]; // yes, the renumbering is intended!\n-716 v[2][i] = nodes[elementDofs[1]][i];\n-717 }\n-718 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>* newBoundarySegment\n-719 = (_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>*) new GmshReaderQuadraticBoundarySegment<\n-2, dimWorld >(v[0], v[1], v[2]);\n-720 _\bf_\ba_\bc_\bt_\bo_\br_\by.insertBoundarySegment(vertices,\n-721 std::shared_ptr<_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b> >(newBoundarySegment));\n-722 break;\n-723 }\n-724 case 9 : { // 6-node triangle\n-725 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt(nodes, elementDofs, vertices);\n-726 break;\n-727 }\n-728 default: {\n-729 DUNE_THROW(Dune::IOError, \"GmshReader does not support using element-type \"\n-<< elm_type << \" for boundary segments\");\n-730 break;\n-731 }\n-732\n-733 }\n-734\n-735 }\n-736 }\n-737\n-738 // count elements and boundary elements\n-739 if (elementDim[elm_type] == _\bd_\bi_\bm) {\n-740 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by[_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt] = physical_entity;\n-741 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt++;\n-742 } else {\n-743 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by[_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt] = physical_entity;\n-744 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt++;\n-745 }\n-746\n-747 }\n-748\n-749 };\n-750\n-_\b7_\b5_\b1 namespace Gmsh {\n-_\b7_\b5_\b7 enum class _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-758 {\n-759 _\bv_\be_\br_\bb_\bo_\bs_\be = 1,\n-760 _\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs = 2,\n-761 _\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba = 4,\n-762 _\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba = 8\n-763 };\n-764\n-_\b7_\b6_\b6 constexpr _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b|_\b (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs b)\n-767 {\n-768 return static_cast<_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs>(\n-769 static_cast(a) | static_cast(b)\n-770 );\n-771 }\n-772\n-_\b7_\b7_\b4 constexpr bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b&_\b (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs b)\n-775 {\n-776 return static_cast(a) & static_cast(b);\n-777 }\n-778\n-779 } // end namespace Gmsh\n-780\n-805 template\n-_\b8_\b0_\b6 class _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n-807 {\n-809\n-828 static void doRead(_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b> &factory,\n-829 const std::string &fileName,\n-830 std::vector& boundarySegmentToPhysicalEntity,\n-831 std::vector& elementToPhysicalEntity,\n-832 bool verbose, bool insertBoundarySegments)\n-833 {\n-834 // register boundary segment to boundary segment factory for possible load\n-balancing\n-835 // this needs to be done on all cores since the type might not be known\n-otherwise\n-836 GmshReaderQuadraticBoundarySegment< Grid::dimension, Grid::dimensionworld\n->::registerFactory();\n-837\n-838#ifndef NDEBUG\n-839 // check that this method is called on all cores\n-840 factory._\bc_\bo_\bm_\bm().barrier();\n-841#endif\n-842\n-843 // create parse object and read grid on process 0\n-844 if (factory._\bc_\bo_\bm_\bm().rank() == 0)\n-845 {\n-846 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b<_\bG_\br_\bi_\bd_\b> parser(factory,verbose,insertBoundarySegments);\n-847 parser._\br_\be_\ba_\bd(fileName);\n-848\n-849 boundarySegmentToPhysicalEntity = std::move(parser._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd_\bM_\ba_\bp());\n-850 elementToPhysicalEntity = std::move(parser._\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp());\n-851 }\n-852 else\n-853 {\n-854 boundarySegmentToPhysicalEntity = {};\n-855 elementToPhysicalEntity = {};\n-856 }\n-857 }\n-858\n-860\n-879 template\n-880 static T &discarded(T &&value) { return value; }\n-881\n-882 struct DataArg {\n-883 std::vector *data_ = nullptr;\n-884 DataArg(std::vector &data) : data_(&data) {}\n-885 DataArg(const decltype(std::ignore)&) {}\n-886 DataArg() = default;\n-887 };\n-888\n-889 struct DataFlagArg : DataArg {\n-890 bool flag_ = false;\n-891 using DataArg::DataArg;\n-892 DataFlagArg(bool flag) : flag_(flag) {}\n-893 };\n-894\n-895 public:\n-_\b8_\b9_\b6 typedef GridType _\bG_\br_\bi_\bd;\n-897\n-_\b9_\b0_\b4 static std::unique_ptr _\br_\be_\ba_\bd (const std::string& fileName, bool\n-verbose = true, bool insertBoundarySegments=true)\n-905 {\n-906 // make a grid factory\n-907 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> factory;\n-908\n-909 _\br_\be_\ba_\bd(factory, fileName, verbose, insertBoundarySegments);\n-910\n-911 return factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd();\n-912 }\n-913\n-_\b9_\b3_\b3 static std::unique_ptr _\br_\be_\ba_\bd (const std::string& fileName,\n-934 std::vector& boundarySegmentToPhysicalEntity,\n-935 std::vector& elementToPhysicalEntity,\n-936 bool verbose = true, bool insertBoundarySegments=true)\n-937 {\n-938 // make a grid factory\n-939 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> factory;\n-940\n-941 doRead(\n-942 factory, fileName, boundarySegmentToPhysicalEntity,\n-943 elementToPhysicalEntity, verbose, insertBoundarySegments\n-944 );\n-945\n-946 return factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd();\n-947 }\n-948\n-_\b9_\b5_\b0 static void _\br_\be_\ba_\bd (_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory, const std::string&\n-fileName,\n-951 bool verbose = true, bool insertBoundarySegments=true)\n-952 {\n-953 doRead(\n-954 factory, fileName, discarded(std::vector{}),\n-955 discarded(std::vector{}), verbose, insertBoundarySegments\n-956 );\n-957 }\n-958\n-960\n-_\b9_\b8_\b3 static void _\br_\be_\ba_\bd (_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> &factory,\n-984 const std::string &fileName,\n-985 DataFlagArg boundarySegmentData,\n-986 DataArg _\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba,\n-987 bool verbose=true)\n-988 {\n-989 doRead(\n-990 factory, fileName,\n-991 boundarySegmentData.data_\n-992 ? *boundarySegmentData.data_ : discarded(std::vector{}),\n-993 _\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba.data_\n-994 ? *_\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba.data_ : discarded(std::vector{}),\n-995 verbose,\n-996 boundarySegmentData.flag_ || boundarySegmentData.data_\n-997 );\n-998 }\n-999\n-_\b1_\b0_\b2_\b0 static void _\br_\be_\ba_\bd (_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory,\n-1021 const std::string& fileName,\n-1022 std::vector& boundarySegmentToPhysicalEntity,\n-1023 std::vector& elementToPhysicalEntity,\n-1024 bool verbose, bool insertBoundarySegments)\n-1025 {\n-1026 doRead(\n-1027 factory, fileName, boundarySegmentToPhysicalEntity,\n-1028 elementToPhysicalEntity, verbose, insertBoundarySegments\n-1029 );\n-1030 }\n-1031\n-1033 //\\{\n-1034\n-1035 [[deprecated(\"Will be removed after 2.8. Either use other constructors or\n-use static methods without constructing an object\")]]\n-_\b1_\b0_\b3_\b6 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br() = default;\n-1037\n-_\b1_\b0_\b3_\b8 using _\bO_\bp_\bt_\bs = _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs;\n-1039\n-_\b1_\b0_\b4_\b0 static constexpr _\bO_\bp_\bt_\bs _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs =\n-1041 Opts::verbose | Opts::insertBoundarySegments | Opts::readElementData |\n-Opts::readBoundaryData;\n-1042\n-1044\n-_\b1_\b0_\b6_\b7 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br(const std::string& fileName,\n-1068 _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs)\n-1069 {\n-1070 gridFactory_ = std::make_unique>();\n-1071 readGridFile(fileName, *gridFactory_, options);\n-1072 }\n-1073\n-_\b1_\b0_\b8_\b1 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br(const std::string& fileName, _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory,\n-1082 _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs)\n-1083 {\n-1084 readGridFile(fileName, factory, options);\n-1085 }\n-1086\n-_\b1_\b0_\b8_\b8 const std::vector& _\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba () const\n-1089 {\n-1090 checkElementData();\n-1091 return elementIndexToGmshPhysicalEntity_;\n-1092 }\n-1093\n-_\b1_\b0_\b9_\b5 const std::vector& _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba () const\n-1096 {\n-1097 checkBoundaryData();\n-1098 return boundarySegmentIndexToGmshPhysicalEntity_;\n-1099 }\n-1100\n-_\b1_\b1_\b0_\b5 bool _\bh_\ba_\bs_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba () const\n-1106 { return hasElementData_ && !extractedElementData_; }\n-1107\n-_\b1_\b1_\b1_\b2 bool _\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba () const\n-1113 { return hasBoundaryData_ && !extractedBoundaryData_; }\n-1114\n-_\b1_\b1_\b1_\b6 std::vector _\be_\bx_\bt_\br_\ba_\bc_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba ()\n-1117 {\n-1118 checkElementData();\n-1119 extractedElementData_ = true;\n-1120 return std::move(elementIndexToGmshPhysicalEntity_);\n-1121 }\n-1122\n-_\b1_\b1_\b2_\b4 std::vector _\be_\bx_\bt_\br_\ba_\bc_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba ()\n-1125 {\n-1126 checkBoundaryData();\n-1127 extractedBoundaryData_ = true;\n-1128 return std::move(boundarySegmentIndexToGmshPhysicalEntity_);\n-1129 }\n-1130\n-_\b1_\b1_\b3_\b2 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd ()\n-1133 {\n-1134 if (!gridFactory_)\n-1135 DUNE_THROW(Dune::InvalidStateException,\n-1136 \"This GmshReader has been constructed with a Dune::GridFactory. \"\n-1137 << \"This grid factory has been filled with all information to create a\n-grid. \"\n-1138 << \"Please use this factory to create the grid by calling\n-factory.createGrid(). \"\n-1139 << \"Alternatively use the constructor without passing the factory in\n-combination with this member function.\"\n-1140 );\n-1141\n-1142 return gridFactory_->createGrid();\n-1143 }\n-1144\n-1145 //\\}\n-1146\n-1147 private:\n-1148 void checkElementData () const\n-1149 {\n-1150 if (!hasElementData_)\n-1151 DUNE_THROW(Dune::InvalidStateException,\n-1152 \"This GmshReader has been constructed without the option\n-'readElementData'. \"\n-1153 << \"Please enable reading element data by passing the option 'Gmsh::\n-ReaderOpts::readElementData' \"\n-1154 << \"to the constructor of this class.\"\n-1155 );\n-1156\n-1157 if (extractedElementData_)\n-1158 DUNE_THROW(Dune::InvalidStateException,\n-1159 \"The element data has already been extracted from this GmshReader \"\n-1160 << \"via a function call to reader.extractElementData(). Use the extraced\n-data or \"\n-1161 << \"read the grid data from file again by constructing a new reader.\"\n-1162 );\n-1163 }\n-1164\n-1165 void checkBoundaryData () const\n-1166 {\n-1167 if (!hasBoundaryData_)\n-1168 DUNE_THROW(Dune::InvalidStateException,\n-1169 \"This GmshReader has been constructed without the option\n-'readBoundaryData'. \"\n-1170 << \"Please enable reading boundary data by passing the option 'Gmsh::\n-ReaderOpts::readBoundaryData' \"\n-1171 << \"to the constructor of this class.\"\n-1172 );\n-1173\n-1174 if (extractedBoundaryData_)\n-1175 DUNE_THROW(Dune::InvalidStateException,\n-1176 \"The boundary data has already been extracted from this GmshReader \"\n-1177 << \"via a function call to reader.extractBoundaryData(). Use the extraced\n-data or \"\n-1178 << \"read the grid data from file again by constructing a new reader.\"\n-1179 );\n-1180 }\n-1181\n-1182 void readGridFile (const std::string& fileName, GridFactory&\n-factory, _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs options)\n-1183 {\n-1184 const bool _\bv_\be_\br_\bb_\bo_\bs_\be = options & Opts::verbose;\n-1185 const bool _\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs = options & Opts::\n-insertBoundarySegments;\n-1186 const bool _\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba = options & Opts::readBoundaryData;\n-1187 const bool _\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba = options & Opts::readElementData;\n-1188\n-1189 doRead(\n-1190 factory, fileName, boundarySegmentIndexToGmshPhysicalEntity_,\n-1191 elementIndexToGmshPhysicalEntity_, verbose,\n-1192 readBoundaryData || insertBoundarySegments\n-1193 );\n-1194\n-1195 // clear unwanted data\n-1196 if (!readBoundaryData)\n-1197 boundarySegmentIndexToGmshPhysicalEntity_ = std::vector{};\n-1198 if (!readElementData)\n-1199 elementIndexToGmshPhysicalEntity_ = std::vector{};\n-1200\n-1201 hasElementData_ = _\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba;\n-1202 hasBoundaryData_ = _\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba;\n-1203 }\n-1204\n-1205 std::unique_ptr> gridFactory_;\n-1206\n-1207 std::vector elementIndexToGmshPhysicalEntity_;\n-1208 std::vector boundarySegmentIndexToGmshPhysicalEntity_;\n-1209\n-1210 bool hasElementData_;\n-1211 bool hasBoundaryData_;\n-1212\n-1213 // for better error messages, we keep track of these separately\n-1214 bool extractedElementData_ = false;\n-1215 bool extractedBoundaryData_ = false;\n-1216 };\n-1217\n-1220} // namespace Dune\n-1221\n-1222#endif\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh\n-Base class for grid boundary segments of arbitrary geometry.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-ReaderOptions\n-Option for the Gmsh mesh file reader.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:758\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bv_\be_\br_\bb_\bo_\bs_\be\n-@ verbose\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n-@ readBoundaryData\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n-@ readElementData\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs\n-@ insertBoundarySegments\n-_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n-> &b)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n+572 break;\n+573 }\n+574 DUNE_THROW(IOError, \"Dune::VTK::DataArrayWriter: unsupported \"\n+575 \"OutputType \" << type << \" in phase \" << phase);\n+576 }\n+577 };\n+578\n+579 } // namespace VTK\n+580\n+582\n+583} // namespace Dune\n+584\n+585#endif // DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n+_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b&\n-constexpr bool operator&(ReaderOptions a, ReaderOptions b)\n-query operator for reader options (is b set in a)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:774\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b|\n-constexpr ReaderOptions operator|(ReaderOptions a, ReaderOptions b)\n-composition operator for reader options\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:766\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n-Base class for classes implementing geometries of boundary segments.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bo_\bm_\bm\n-Communication comm() const\n-Return the Communication used by the grid factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:297\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Provide a generic factory class for unstructured grids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-virtual std::unique_ptr< GridType > createGrid()\n-Finalize grid creation and hand over the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options for read operation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bO_\br_\bd_\be_\br\n-GeometryOrder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bf_\bi_\br_\bs_\bt_\bO_\br_\bd_\be_\br\n-@ firstOrder\n-edges are straight lines.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bs_\be_\bc_\bo_\bn_\bd_\bO_\br_\bd_\be_\br\n-@ secondOrder\n-quadratic boundary approximation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br\n-dimension independent parts for GmshReaderParser\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:302\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bp_\ba_\bs_\bs_\b1_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-void pass1HandleElement(FILE *file, const int elm_type, std::map< int, unsigned\n-int > &renumber, const std::vector< GlobalVector > &nodes)\n-Process one element during the first pass through the list of all elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:512\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br_\by\n-Dune::GridFactory< GridType > & factory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:305\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd_\bM_\ba_\bp\n-std::vector< int > & boundaryIdMap()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:357\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp\n-std::vector< int > & elementIndexMap()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:362\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n-unsigned int number_of_real_vertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:308\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt\n-void boundarysegment_insert(const std::vector< FieldVector< double, 3 > >\n-&nodes, const E &elementDofs, const V &vertices)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:575\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br\n-GmshReaderParser(Dune::GridFactory< GridType > &_factory, bool v, bool i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:354\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt\n-int element_count\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-void read(const std::string &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:367\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be\n-void skipline(FILE *file)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:344\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bf_\bi_\bl_\be\n-void readfile(FILE *file, int cnt, const char *format, void *t1, void *t2=0,\n-void *t3=0, void *t4=0, void *t5=0, void *t6=0, void *t7=0, void *t8=0, void\n-*t9=0, void *t10=0)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:330\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by\n-std::vector< int > element_index_to_physical_entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:316\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bp_\ba_\bs_\bs_\b2_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-virtual void pass2HandleElement(FILE *file, const int elm_type, std::map< int,\n-unsigned int > &renumber, const std::vector< GlobalVector > &nodes, const int\n-physical_entity)\n-Process one element during the second pass through the list of all elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:600\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm\n-static const int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< double, dimWorld > GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:324\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\bi_\bl_\be_\bN_\ba_\bm_\be\n-std::string fileName\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:313\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt\n-int boundary_element_count\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:309\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt\n-void boundarysegment_insert(const V &, const E &, const V2 &)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:564\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\be_\br_\bb_\bo_\bs_\be\n-bool verbose\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:306\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by\n-std::vector< int > boundary_id_to_physical_entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:315\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bu_\bf\n-char buf[512]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bs_\be_\bg_\bm_\be_\bn_\bt_\bs\n-bool insert_boundary_segments\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:307\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n-Read Gmsh mesh file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:807\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static std::unique_ptr< Grid > read(const std::string &fileName, std::vector<\n-int > &boundarySegmentToPhysicalEntity, std::vector< int >\n-&elementToPhysicalEntity, bool verbose=true, bool insertBoundarySegments=true)\n-Read Gmsh file, possibly with data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:933\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n-const std::vector< int > & elementData() const\n-Access element data (maps element index to Gmsh physical entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1088\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static void read(Dune::GridFactory< Grid > &factory, const std::string\n-&fileName, DataFlagArg boundarySegmentData, DataArg elementData, bool\n-verbose=true)\n-read Gmsh file, possibly with data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:983\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static std::unique_ptr< Grid > read(const std::string &fileName, bool\n-verbose=true, bool insertBoundarySegments=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:904\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static void read(Dune::GridFactory< Grid > &factory, const std::string\n-&fileName, bool verbose=true, bool insertBoundarySegments=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:950\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n-GridType Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:896\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-std::unique_ptr< Grid > createGrid()\n-Create the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\be_\bx_\bt_\br_\ba_\bc_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n-std::vector< int > extractBoundaryData()\n-Erase boundary data from reader and return the data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static void read(Dune::GridFactory< Grid > &factory, const std::string\n-&fileName, std::vector< int > &boundarySegmentToPhysicalEntity, std::vector<\n-int > &elementToPhysicalEntity, bool verbose, bool insertBoundarySegments)\n-Read Gmsh file, possibly with data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1020\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n-bool hasElementData() const\n-If element data is available.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n-bool hasBoundaryData() const\n-If boundary data is available.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs\n-static constexpr Opts defaultOpts\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1040\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n-GmshReader(const std::string &fileName, GridFactory< Grid > &factory, Gmsh::\n-ReaderOptions options=defaultOpts)\n-Construct a Gmsh reader object from a file name and a grid factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1081\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n-GmshReader(const std::string &fileName, Gmsh::ReaderOptions\n-options=defaultOpts)\n-Construct a Gmsh reader object (alternatively use one of the static member\n-functions)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1067\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\be_\bx_\bt_\br_\ba_\bc_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n-std::vector< int > extractElementData()\n-Erase element data from reader and return the data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n-const std::vector< int > & boundaryData() const\n-Access boundary data (maps boundary segment index to Gmsh physical entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1095\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n-GmshReader()=default\n-Dynamic Gmsh reader interface.\n-_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-Provide a generic factory class for unstructured grids.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n+@ int32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2\n+@ uint32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n+@ uint8\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n+@ float32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4\n+@ float64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n+OutputType\n+How the bulk data should be stored in the file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n+@ ascii\n+Output to the file is in ascii.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw\n+@ appendedraw\n+Output is to the file is appended raw binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n+@ appendedbase64\n+Output is to the file is appended base64 binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4\n+@ base64\n+Output to the file is inline base64 binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg\n+std::string toString(Precision p)\n+map precision to VTK type name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:280\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\by_\bp_\be_\bS_\bi_\bz_\be\n+std::size_t typeSize(Precision p)\n+map precision to byte size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:300\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n+T Type\n+type to convert T to before putting it into a stream with <<\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+base class for data array writers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(T data)\n+write one element of data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+DataArrayWriter(Precision _prec)\n+construct a data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp\n+virtual bool writeIsNoop() const\n+whether calls to write may be skipped\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+virtual ~DataArrayWriter()\n+virtual destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+a streaming writer for data array tags, uses ASCII inline format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+~AsciiDataArrayWriter()\n+finish output; writes end tag\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+AsciiDataArrayWriter(std::ostream &theStream, std::string name, int ncomps,\n+const Indent &indent_, Precision prec_)\n+make a new data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+a streaming writer for data array tags, uses binary inline format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+~BinaryDataArrayWriter()\n+finish output; writes end tag\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:228\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+BinaryDataArrayWriter(std::ostream &theStream, std::string name, int ncomps,\n+int nitems, const Indent &indent_, Precision prec_)\n+make a new data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+a streaming writer for data array tags, uses appended raw format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+AppendedRawDataArrayWriter(std::ostream &s, std::string name, int ncomps,\n+unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)\n+make a new data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:283\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp\n+bool writeIsNoop() const\n+whether calls to write may be skipped\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:297\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+a streaming writer for data array tags, uses appended base64 format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+AppendedBase64DataArrayWriter(std::ostream &s, std::string name, int ncomps,\n+unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)\n+make a new data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:325\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp\n+bool writeIsNoop() const\n+whether calls to write may be skipped\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:342\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+a streaming writer for appended data array tags, uses base64 format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:360\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+NakedBase64DataArrayWriter(std::ostream &theStream, int ncomps, int nitems,\n+Precision prec_)\n+make a new data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:369\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+a streaming writer for appended data arrays, uses raw format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:408\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+NakedRawDataArrayWriter(std::ostream &theStream, int ncomps, int nitems,\n+Precision prec_)\n+make a new data array writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:419\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+a factory for DataArrayWriters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:462\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n+bool beginAppended()\n+signal start of the appended section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:497\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned\n+nitems, const Indent &indent, Precision prec)\n+create a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:541\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DataArrayWriterFactory(OutputType type_, std::ostream &stream_)\n+create a DataArrayWriterFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:482\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg\n+const std::string & appendedEncoding() const\n+query encoding string for appended data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:510\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(X &data)\n+encode a data item\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bf_\bl_\bu_\bs_\bh\n+void flush()\n+flush the current unwritten data to the stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n+write out data in binary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(T data)\n+write data to stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:93\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00764.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00764.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gnuplot.cc File Reference\n+dune-grid: volumeiterators.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-
    gnuplot.cc File Reference
    \n+
    volumeiterators.hh File Reference
    \n
    \n
    \n-\n-

    Implementation of gnuplot output for 1D and 2D grids. \n-More...

    \n-
    #include "../gnuplot.hh"
    \n+\n

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::VTK::ConformingVolumeIteratorFactory< GV >
     
    class  Dune::VTK::NonConformingVolumeIteratorFactory< GV >
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n-

    Detailed Description

    \n-

    Implementation of gnuplot output for 1D and 2D grids.

    \n-
    Author
    Christian Engwer
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,23 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bg_\bn_\bu_\bp_\bl_\bo_\bt\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-gnuplot.cc File Reference\n-Implementation of gnuplot output for 1D and 2D grids. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \"_\b._\b._\b/_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bh_\bh\"\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+volumeiterators.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bo_\bi_\bn_\bt_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\bV_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\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 Include standard header files.\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-Implementation of gnuplot output for 1D and 2D grids.\n- Author\n- Christian Engwer\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00764_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00764_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gnuplot.cc Source File\n+dune-grid: volumeiterators.hh Source File\n \n \n \n \n \n \n \n@@ -70,136 +70,240 @@\n \n \n \n \n \n \n \n
    \n-
    gnuplot.cc
    \n+
    volumeiterators.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    10#include "../gnuplot.hh"
    \n-
    11
    \n-
    12namespace Dune {
    \n-
    13
    \n-
    17 template<class GridView>
    \n-
    18 void
    \n-
    \n-
    19 GnuplotWriter<GridView>::write(const std::string& filename) const
    \n-
    20 {
    \n-
    21 // open file
    \n-
    22 std::ofstream file(filename.c_str());
    \n-
    23 // write all column names
    \n-
    24 file << "# coord\\t";
    \n-
    25 for (size_t i=0; i<_names.size(); i++)
    \n-
    26 file << _names[i] << "\\t";
    \n-
    27 file << "\\n";
    \n-
    28
    \n-
    29 if (dimworld==1) {
    \n-
    30#if !NDEBUG
    \n-
    31 int counter = 0;
    \n-
    32#endif
    \n-
    33 typedef typename GridView::template Codim<0>::Iterator CellIterator;
    \n-
    34 CellIterator it = _gv.template begin<0>();
    \n-
    35 CellIterator end = _gv.template end<0>();
    \n-
    36 for (; it != end; ++it)
    \n-
    37 {
    \n-
    38 int i = _is.index(*it);
    \n-
    39 // check that the elements are numbered consecutively
    \n-
    40 assert (i == counter++);
    \n-
    41 // calc positions
    \n-
    42 assert(it->geometry().corners() == 2);
    \n-
    43 const FieldVector<ctype,dimworld>& left = it->geometry().corner(0);
    \n-
    44 const FieldVector<ctype,dimworld>& right = it->geometry().corner(1);
    \n-
    45 assert(left[0] < right[0]);
    \n-
    46 // write gnuplot rows for left & right vertex
    \n-
    47 writeRow(file, left, _data[2*i]);
    \n-
    48 writeRow(file, right, _data[2*i+1]);
    \n-
    49 }
    \n-
    50
    \n-
    51 } else {
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_VOLUMEITERATORS_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_VOLUMEITERATORS_HH
    \n+
    8
    \n+\n+
    10
    \n+\n+\n+\n+\n+
    15
    \n+
    16namespace Dune {
    \n+
    19
    \n+
    20 namespace VTK {
    \n+
    21
    \n+
    22 template<typename GV>
    \n+
    \n+\n+
    24 const GV& gv;
    \n+
    25
    \n+
    26 typedef typename GV::IndexSet IndexSet;
    \n+
    27 const IndexSet& indexSet() const { return gv.indexSet(); }
    \n+\n+\n+
    30
    \n+
    31 public:
    \n+
    32 static const unsigned dimCell = GV::dimension;
    \n+
    33
    \n+
    34 typedef typename GV::template Codim<0>::Entity Cell;
    \n+
    35 typedef typename GV::template Codim<0>::
    \n+
    36 template Partition<InteriorBorder_Partition>::Iterator CellIterator;
    \n+
    37
    \n+\n+\n+
    40
    \n+\n+\n+
    43 typename GV::IndexSet> PointIterator;
    \n+
    44
    \n+\n+\n+
    47 typedef typename GV::Communication Communication;
    \n+
    48
    \n+
    \n+
    49 explicit ConformingVolumeIteratorFactory(const GV& gv_)
    \n+
    50 : gv(gv_)
    \n+
    51 { }
    \n+
    \n
    52
    \n-
    53 typedef typename GridView::template Codim<dimworld>::Iterator VertexIterator;
    \n-
    54 VertexIterator it = _gv.template begin<dimworld>();
    \n-
    55 VertexIterator end = _gv.template end<dimworld>();
    \n-
    56 for (; it != end; ++it) {
    \n-
    57
    \n-
    58 // write gnuplot rows for vertex
    \n-
    59 writeRow(file, it->geometry().corner(0), _data[_is.index(*it)]);
    \n-
    60
    \n-
    61 }
    \n-
    62
    \n-
    63 }
    \n-
    64
    \n-
    65 }
    \n+
    \n+\n+
    54 return gv.template begin<0, InteriorBorder_Partition>();
    \n+
    55 }
    \n+
    \n+
    \n+\n+
    57 return gv.template end<0, InteriorBorder_Partition>();
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+\n+\n+
    62 }
    \n+
    \n+
    \n+\n+
    64 return CornerIterator(endCells());
    \n+
    65 }
    \n
    \n
    66
    \n-
    67 template<class GridView>
    \n-
    68 void
    \n-
    \n-\n-
    70 const FieldVector<ctype,dimworld>& position,
    \n-
    71 const std::vector<float> & data) const
    \n-
    72 {
    \n-
    73 assert (data.size() == _names.size());
    \n-
    74 // write position
    \n-
    75 file << position << "\\t";
    \n-
    76 // write all data columns
    \n-
    77 for (size_t j=0; j<data.size(); j++)
    \n-
    78 file << data[j] << "\\t";
    \n-
    79 file << "\\n";
    \n-
    80 }
    \n+
    \n+\n+
    68 return PointIterator(beginCells(), endCells(), gv.indexSet());
    \n+
    69 }
    \n+
    \n+
    \n+\n+
    71 return PointIterator(endCells());
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+\n+
    75 return ConnectivityWriter(*this);
    \n+
    76 }
    \n+
    \n+
    \n+
    77 const Communication& comm() const {
    \n+
    78 return gv.comm();
    \n+
    79 }
    \n+
    \n+
    80 };
    \n+
    \n
    81
    \n-
    87 template<class GridView>
    \n-
    88 template<class DataContainer>
    \n-
    89 void
    \n-
    90 GnuplotWriter<GridView>::addData(DataType t, const DataContainer& data, const std::string & name)
    \n-
    91 {
    \n-
    92 assert((t == cellData && _is.size(0) == data.size())
    \n-
    93 || (t == vertexData && _is.size(GridView::dimension) == data.size()) );
    \n-
    94 _names.push_back(name);
    \n+
    82 template<typename GV>
    \n+
    \n+\n+
    84 const GV& gv;
    \n+
    85
    \n+
    86 public:
    \n+
    87 static const unsigned dimCell = GV::dimension;
    \n+
    88
    \n+
    89 typedef typename GV::template Codim<0>::Entity Cell;
    \n+
    90 typedef typename GV::template Codim<0>::
    \n+
    91 template Partition<InteriorBorder_Partition>::Iterator CellIterator;
    \n+
    92
    \n+\n+\n
    95
    \n-
    96 // copy data to new container
    \n-
    97
    \n-
    98 if (dimworld==1) {
    \n-
    99
    \n-
    100 // data is transformed to nonconforming vertex data
    \n-
    101 int c = 0;
    \n-
    102 int shift = (t==vertexData ? 1 : 0);
    \n-
    103 for (size_t i=0; i<_is.size(0); i++)
    \n-
    104 {
    \n-
    105 _data[c++].push_back(data[i]);
    \n-
    106 _data[c++].push_back(data[i+shift]);
    \n-
    107 };
    \n-
    108
    \n-
    109 } else {
    \n-
    110
    \n-
    111 // 2d: only vertex data is allowed
    \n-
    112 for (size_t i=0; i<_is.size(dimworld); i++)
    \n-
    113 _data[i].push_back(data[i]);
    \n-
    114
    \n-
    115 }
    \n-
    116
    \n-
    117 }
    \n-
    118
    \n-
    119}
    \n+
    96 typedef Corner Point;
    \n+\n+
    98
    \n+\n+
    100 typedef typename GV::Communication Communication;
    \n+
    101
    \n+
    \n+\n+
    103 : gv(gv_)
    \n+
    104 { }
    \n+
    \n+
    105
    \n+
    \n+\n+
    107 return gv.template begin<0, InteriorBorder_Partition>();
    \n+
    108 }
    \n+
    \n+
    \n+\n+
    110 return gv.template end<0, InteriorBorder_Partition>();
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    \n+\n+\n+
    115 }
    \n+
    \n+
    \n+\n+
    117 return CornerIterator(endCells());
    \n+
    118 }
    \n+
    \n+
    119
    \n+\n+
    121 PointIterator endPoints() const { return endCorners(); }
    \n+
    122
    \n+
    \n+\n+
    124 return ConnectivityWriter();
    \n+
    125 }
    \n+
    \n+
    \n+
    126 const Communication& comm() const {
    \n+
    127 return gv.comm();
    \n+
    128 }
    \n+
    \n+
    129 };
    \n
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n+
    130
    \n+
    131 } // namespace VTK
    \n+
    132
    \n+
    134
    \n+
    135} // namespace Dune
    \n+
    136
    \n+
    137#endif // DUNE_GRID_IO_FILE_VTK_VOLUMEITERATORS_HH
    \n+\n+\n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n-
    Writer for 1D grids in gnuplot format.
    Definition gnuplot.hh:30
    \n-
    void write(const std::string &filename) const
    Write Gnuplot file to disk.
    Definition gnuplot.cc:19
    \n+
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n+
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n+
    writer for the connectivity array in conforming mode
    Definition functionwriter.hh:195
    \n+
    writer for the connectivity array in nonconforming mode
    Definition functionwriter.hh:261
    \n+
    iterate over the points of some corner range
    Definition pointiterator.hh:58
    \n+
    Definition volumeiterators.hh:23
    \n+
    CornerIterator endCorners() const
    Definition volumeiterators.hh:63
    \n+
    VTK::CornerIterator< CellIterator > CornerIterator
    Definition volumeiterators.hh:39
    \n+
    VTK::Corner< Cell > Corner
    Definition volumeiterators.hh:38
    \n+
    CellIterator endCells() const
    Definition volumeiterators.hh:56
    \n+
    GV::Communication Communication
    Definition volumeiterators.hh:47
    \n+
    VTK::PointIterator< CellIterator, typename GV::IndexSet > PointIterator
    Definition volumeiterators.hh:43
    \n+
    ConformingConnectivityWriter< ConformingVolumeIteratorFactory< GV > > ConnectivityWriter
    Definition volumeiterators.hh:46
    \n+
    CornerIterator beginCorners() const
    Definition volumeiterators.hh:60
    \n+
    static const unsigned dimCell
    Definition volumeiterators.hh:32
    \n+
    PointIterator endPoints() const
    Definition volumeiterators.hh:70
    \n+
    const Communication & comm() const
    Definition volumeiterators.hh:77
    \n+
    ConformingVolumeIteratorFactory(const GV &gv_)
    Definition volumeiterators.hh:49
    \n+
    VTK::Corner< Cell > Point
    Definition volumeiterators.hh:41
    \n+
    ConnectivityWriter makeConnectivity() const
    Definition volumeiterators.hh:74
    \n+
    CellIterator beginCells() const
    Definition volumeiterators.hh:53
    \n+
    GV::template Codim< 0 >::Entity Cell
    Definition volumeiterators.hh:34
    \n+
    PointIterator beginPoints() const
    Definition volumeiterators.hh:67
    \n+
    GV::template Codim< 0 >::template Partition< InteriorBorder_Partition >::Iterator CellIterator
    Definition volumeiterators.hh:36
    \n+
    Definition volumeiterators.hh:83
    \n+
    const Communication & comm() const
    Definition volumeiterators.hh:126
    \n+
    PointIterator beginPoints() const
    Definition volumeiterators.hh:120
    \n+
    GV::Communication Communication
    Definition volumeiterators.hh:100
    \n+
    CellIterator beginCells() const
    Definition volumeiterators.hh:106
    \n+
    GV::template Codim< 0 >::Entity Cell
    Definition volumeiterators.hh:89
    \n+
    NonConformingVolumeIteratorFactory(const GV &gv_)
    Definition volumeiterators.hh:102
    \n+
    ConnectivityWriter makeConnectivity() const
    Definition volumeiterators.hh:123
    \n+
    NonConformingConnectivityWriter< Cell > ConnectivityWriter
    Definition volumeiterators.hh:99
    \n+
    static const unsigned dimCell
    Definition volumeiterators.hh:87
    \n+
    CellIterator endCells() const
    Definition volumeiterators.hh:109
    \n+
    CornerIterator endCorners() const
    Definition volumeiterators.hh:116
    \n+
    VTK::CornerIterator< CellIterator > CornerIterator
    Definition volumeiterators.hh:94
    \n+
    VTK::Corner< Cell > Corner
    Definition volumeiterators.hh:93
    \n+
    CornerIterator PointIterator
    Definition volumeiterators.hh:97
    \n+
    GV::template Codim< 0 >::template Partition< InteriorBorder_Partition >::Iterator CellIterator
    Definition volumeiterators.hh:91
    \n+
    PointIterator endPoints() const
    Definition volumeiterators.hh:121
    \n+
    Corner Point
    Definition volumeiterators.hh:96
    \n+
    CornerIterator beginCorners() const
    Definition volumeiterators.hh:113
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,139 +2,286 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bg_\bn_\bu_\bp_\bl_\bo_\bt\n-gnuplot.cc\n+ * _\bv_\bt_\bk\n+volumeiterators.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-10#include \"../gnuplot.hh\"\n-11\n-12namespace _\bD_\bu_\bn_\be {\n-13\n-17 template\n-18 void\n-_\b1_\b9 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be(const std::string& filename) const\n-20 {\n-21 // open file\n-22 std::ofstream file(filename.c_str());\n-23 // write all column names\n-24 file << \"# coord\\t\";\n-25 for (size_t i=0; i<_names.size(); i++)\n-26 file << _names[i] << \"\\t\";\n-27 file << \"\\n\";\n-28\n-29 if (dimworld==1) {\n-30#if !NDEBUG\n-31 int counter = 0;\n-32#endif\n-33 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<0>::Iterator CellIterator;\n-34 CellIterator it = _gv.template begin<0>();\n-35 CellIterator end = _gv.template end<0>();\n-36 for (; it != end; ++it)\n-37 {\n-38 int i = _is.index(*it);\n-39 // check that the elements are numbered consecutively\n-40 assert (i == counter++);\n-41 // calc positions\n-42 assert(it->geometry().corners() == 2);\n-43 const FieldVector& left = it->geometry().corner(0);\n-44 const FieldVector& right = it->geometry().corner(1);\n-45 assert(left[0] < right[0]);\n-46 // write gnuplot rows for left & right vertex\n-47 writeRow(file, left, _data[2*i]);\n-48 writeRow(file, right, _data[2*i+1]);\n-49 }\n-50\n-51 } else {\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_VOLUMEITERATORS_HH\n+7#define DUNE_GRID_IO_FILE_VTK_VOLUMEITERATORS_HH\n+8\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bo_\bi_\bn_\bt_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be {\n+19\n+20 namespace VTK {\n+21\n+22 template\n+_\b2_\b3 class _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+24 const GV& gv;\n+25\n+26 typedef typename GV::IndexSet IndexSet;\n+_\b2_\b7 const IndexSet& indexSet() const { return gv.indexSet(); }\n+28 friend class _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br<\n+29 _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by >;\n+30\n+31 public:\n+_\b3_\b2 static const unsigned _\bd_\bi_\bm_\bC_\be_\bl_\bl = GV::dimension;\n+33\n+_\b3_\b4 typedef typename GV::template Codim<0>::Entity _\bC_\be_\bl_\bl;\n+35 typedef typename GV::template Codim<0>::\n+_\b3_\b6 template Partition::Iterator _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+37\n+_\b3_\b8 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\br_\bn_\be_\br;\n+_\b3_\b9 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+40\n+_\b4_\b1 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bP_\bo_\bi_\bn_\bt;\n+42 typedef _\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br,\n+_\b4_\b3 typename GV::IndexSet> _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+44\n+45 typedef _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\bV_\b>\n+_\b4_\b6 > _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br;\n+_\b4_\b7 typedef typename GV::Communication _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn;\n+48\n+_\b4_\b9 explicit _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(const GV& gv_)\n+50 : gv(gv_)\n+51 { }\n 52\n-53 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim::Iterator\n-VertexIterator;\n-54 VertexIterator it = _gv.template begin();\n-55 VertexIterator end = _gv.template end();\n-56 for (; it != end; ++it) {\n-57\n-58 // write gnuplot rows for vertex\n-59 writeRow(file, it->geometry().corner(0), _data[_is.index(*it)]);\n-60\n-61 }\n-62\n-63 }\n-64\n+_\b5_\b3 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs() const {\n+54 return gv.template begin<0, InteriorBorder_Partition>();\n+55 }\n+_\b5_\b6 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs() const {\n+57 return gv.template end<0, InteriorBorder_Partition>();\n+58 }\n+59\n+_\b6_\b0 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n+61 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs(), _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n+62 }\n+_\b6_\b3 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n+64 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n 65 }\n 66\n-67 template\n-68 void\n-_\b6_\b9 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bR_\bo_\bw(std::ostream & file,\n-70 const FieldVector& position,\n-71 const std::vector & data) const\n-72 {\n-73 assert (data.size() == _names.size());\n-74 // write position\n-75 file << position << \"\\t\";\n-76 // write all data columns\n-77 for (size_t j=0; j\n-88 template\n-89 void\n-90 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\ba_\bd_\bd_\bD_\ba_\bt_\ba(DataType t, const DataContainer& data,\n-const std::string & name)\n-91 {\n-92 assert((t == cellData && _is.size(0) == data.size())\n-93 || (t == vertexData && _is.size(_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) == data.size()) );\n-94 _names.push_back(name);\n+82 template\n+_\b8_\b3 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+84 const GV& gv;\n+85\n+86 public:\n+_\b8_\b7 static const unsigned _\bd_\bi_\bm_\bC_\be_\bl_\bl = GV::dimension;\n+88\n+_\b8_\b9 typedef typename GV::template Codim<0>::Entity _\bC_\be_\bl_\bl;\n+90 typedef typename GV::template Codim<0>::\n+_\b9_\b1 template Partition::Iterator _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+92\n+_\b9_\b3 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\br_\bn_\be_\br;\n+_\b9_\b4 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n 95\n-96 // copy data to new container\n-97\n-98 if (dimworld==1) {\n-99\n-100 // data is transformed to nonconforming vertex data\n-101 int c = 0;\n-102 int shift = (t==vertexData ? 1 : 0);\n-103 for (size_t i=0; i<_is.size(0); i++)\n-104 {\n-105 _data[c++].push_back(data[i]);\n-106 _data[c++].push_back(data[i+shift]);\n-107 };\n-108\n-109 } else {\n-110\n-111 // 2d: only vertex data is allowed\n-112 for (size_t i=0; i<_is.size(dimworld); i++)\n-113 _data[i].push_back(data[i]);\n-114\n+_\b9_\b6 typedef _\bC_\bo_\br_\bn_\be_\br _\bP_\bo_\bi_\bn_\bt;\n+_\b9_\b7 typedef _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+98\n+_\b9_\b9 typedef _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br;\n+_\b1_\b0_\b0 typedef typename GV::Communication _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn;\n+101\n+_\b1_\b0_\b2 explicit _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(const GV& gv_)\n+103 : gv(gv_)\n+104 { }\n+105\n+_\b1_\b0_\b6 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs() const {\n+107 return gv.template begin<0, InteriorBorder_Partition>();\n+108 }\n+_\b1_\b0_\b9 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs() const {\n+110 return gv.template end<0, InteriorBorder_Partition>();\n+111 }\n+112\n+_\b1_\b1_\b3 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n+114 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs(), _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n 115 }\n-116\n-117 }\n-118\n-119}\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n+_\b1_\b1_\b6 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n+117 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n+118 }\n+119\n+_\b1_\b2_\b0 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() const { return _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs(); }\n+_\b1_\b2_\b1 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() const { return _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs(); }\n+122\n+_\b1_\b2_\b3 _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br _\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by() const {\n+124 return _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br();\n+125 }\n+_\b1_\b2_\b6 const _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn& _\bc_\bo_\bm_\bm() const {\n+127 return gv.comm();\n+128 }\n+129 };\n+130\n+131 } // namespace VTK\n+132\n+134\n+135} // namespace Dune\n+136\n+137#endif // DUNE_GRID_IO_FILE_VTK_VOLUMEITERATORS_HH\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n+_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bp_\bo_\bi_\bn_\bt_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A struct that collects all associated types of one implementation from the\n-Traits class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-Writer for 1D grids in gnuplot format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(const std::string &filename) const\n-Write Gnuplot file to disk.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.cc:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+simple class representing a corner of a cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the corners of some cell range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+writer for the connectivity array in conforming mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+writer for the connectivity array in nonconforming mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the points of some corner range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs\n+CornerIterator endCorners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+VTK::CornerIterator< CellIterator > CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+VTK::Corner< Cell > Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+CellIterator endCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n+GV::Communication Communication\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+VTK::PointIterator< CellIterator, typename GV::IndexSet > PointIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+ConformingConnectivityWriter< ConformingVolumeIteratorFactory< GV > >\n+ConnectivityWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs\n+CornerIterator beginCorners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\bC_\be_\bl_\bl\n+static const unsigned dimCell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+PointIterator endPoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bo_\bm_\bm\n+const Communication & comm() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+ConformingVolumeIteratorFactory(const GV &gv_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt\n+VTK::Corner< Cell > Point\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by\n+ConnectivityWriter makeConnectivity() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+CellIterator beginCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl\n+GV::template Codim< 0 >::Entity Cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+PointIterator beginPoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GV::template Codim< 0 >::template Partition< InteriorBorder_Partition >::\n+Iterator CellIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bo_\bm_\bm\n+const Communication & comm() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+PointIterator beginPoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n+GV::Communication Communication\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+CellIterator beginCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl\n+GV::template Codim< 0 >::Entity Cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+NonConformingVolumeIteratorFactory(const GV &gv_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by\n+ConnectivityWriter makeConnectivity() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+NonConformingConnectivityWriter< Cell > ConnectivityWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\bC_\be_\bl_\bl\n+static const unsigned dimCell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+CellIterator endCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs\n+CornerIterator endCorners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+VTK::CornerIterator< CellIterator > CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+VTK::Corner< Cell > Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+CornerIterator PointIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GV::template Codim< 0 >::template Partition< InteriorBorder_Partition >::\n+Iterator CellIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+PointIterator endPoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt\n+Corner Point\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs\n+CornerIterator beginCorners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.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-grid-doc/doxygen/a00767.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00767.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gmshwriter.hh File Reference\n+dune-grid: pvtuwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,45 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    gmshwriter.hh File Reference
    \n+
    pvtuwriter.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <iostream>
    \n-#include <iomanip>
    \n+
    #include <ostream>
    \n #include <string>
    \n-#include <vector>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n-#include <dune/grid/common/mcmgmapper.hh>
    \n+#include <dune/common/indent.hh>
    \n+#include <dune/grid/io/file/vtk/common.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::GmshWriter< GridView >
     Write Gmsh mesh file. More...
    class  Dune::VTK::PVTUWriter
     Dump a .vtu/.vtp files contents to a stream. More...
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,30 +2,28 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-gmshwriter.hh File Reference\n-#include \n-#include \n-#include \n+pvtuwriter.hh File Reference\n+#include \n #include \n-#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\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:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Write _\bG_\bm_\bs_\bh mesh file. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 Dump a .vtu/.vtp files contents to a stream. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00767_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00767_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gmshwriter.hh Source File\n+dune-grid: pvtuwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,240 +70,197 @@\n
    \n \n \n \n \n \n \n
    \n-
    gmshwriter.hh
    \n+
    pvtuwriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_IO_FILE_GMSHWRITER_HH
    \n-
    6#define DUNE_GRID_IO_FILE_GMSHWRITER_HH
    \n-
    7
    \n-
    8#include <fstream>
    \n-
    9#include <iostream>
    \n-
    10#include <iomanip>
    \n-
    11#include <string>
    \n-
    12#include <vector>
    \n-
    13
    \n-
    14#include <dune/common/exceptions.hh>
    \n-
    15#include <dune/geometry/type.hh>
    \n-
    16#include <dune/geometry/referenceelements.hh>
    \n-\n-\n-
    19
    \n-
    20namespace Dune {
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH
    \n+
    8
    \n+
    9#include <ostream>
    \n+
    10#include <string>
    \n+
    11
    \n+
    12#include <dune/common/exceptions.hh>
    \n+
    13#include <dune/common/indent.hh>
    \n+
    14
    \n+\n+
    16
    \n+
    17namespace Dune {
    \n+
    18
    \n
    21
    \n-
    35 template <class GridView>
    \n-
    \n-\n-
    37 {
    \n-
    38 private:
    \n-
    39 const GridView gv;
    \n-
    40 int precision;
    \n-
    41
    \n-
    42 static const unsigned int dim = GridView::dimension;
    \n-
    43 static const unsigned int dimWorld = GridView::dimensionworld;
    \n-
    44 static_assert( (dimWorld <= 3), "GmshWriter requires dimWorld <= 3." );
    \n-
    45
    \n-
    47 template<typename Entity>
    \n-
    48 std::size_t nodeIndexFromEntity(const Entity& entity, int i) const {
    \n-
    49 return gv.indexSet().subIndex(entity, i, dim)+1;
    \n-
    50 }
    \n-
    51
    \n-
    55 static std::size_t translateDuneToGmshType(const GeometryType& type) {
    \n-
    56 std::size_t element_type;
    \n-
    57
    \n-
    58 if (type.isLine())
    \n-
    59 element_type = 1;
    \n-
    60 else if (type.isTriangle())
    \n-
    61 element_type = 2;
    \n-
    62 else if (type.isQuadrilateral())
    \n-
    63 element_type = 3;
    \n-
    64 else if (type.isTetrahedron())
    \n-
    65 element_type = 4;
    \n-
    66 else if (type.isHexahedron())
    \n-
    67 element_type = 5;
    \n-
    68 else if (type.isPrism())
    \n-
    69 element_type = 6;
    \n-
    70 else if (type.isPyramid())
    \n-
    71 element_type = 7;
    \n-
    72 else if (type.isVertex())
    \n-
    73 element_type = 15;
    \n-
    74 else
    \n-
    75 DUNE_THROW(Dune::IOError, "GeometryType " << type << " is not supported by gmsh.");
    \n-
    76
    \n-
    77 return element_type;
    \n-
    78 }
    \n-
    79
    \n-
    94 void outputElements(std::ofstream& file, const std::vector<int>& physicalEntities, const std::vector<int>& physicalBoundaries) const {
    \n-\n-
    96 std::size_t counter(1);
    \n-
    97 for (const auto& entity : elements(gv)) {
    \n-
    98 // Check whether the type is compatible. If not, close file and rethrow exception.
    \n-
    99 try {
    \n-
    100 std::size_t element_type = translateDuneToGmshType(entity.type());
    \n-
    101
    \n-
    102 file << counter << " " << element_type;
    \n-
    103 // If present, set the first tag to the physical entity
    \n-
    104 if (!physicalEntities.empty())
    \n-
    105 file << " " << 1 << " " << physicalEntities[elementMapper.index(entity)];
    \n-
    106 else
    \n-
    107 file << " " << 0; // "0" for "I do not use any tags."
    \n-
    108
    \n-
    109 // Output list of nodes.
    \n-
    110 // 3, 5 and 7 got different vertex numbering compared to Dune
    \n-
    111 if (3 == element_type)
    \n-
    112 file << " "
    \n-
    113 << nodeIndexFromEntity(entity, 0) << " " << nodeIndexFromEntity(entity, 1) << " "
    \n-
    114 << nodeIndexFromEntity(entity, 3) << " " << nodeIndexFromEntity(entity, 2);
    \n-
    115 else if (5 == element_type)
    \n-
    116 file << " "
    \n-
    117 << nodeIndexFromEntity(entity, 0) << " " << nodeIndexFromEntity(entity, 1) << " "
    \n-
    118 << nodeIndexFromEntity(entity, 3) << " " << nodeIndexFromEntity(entity, 2) << " "
    \n-
    119 << nodeIndexFromEntity(entity, 4) << " " << nodeIndexFromEntity(entity, 5) << " "
    \n-
    120 << nodeIndexFromEntity(entity, 7) << " " << nodeIndexFromEntity(entity, 6);
    \n-
    121 else if (7 == element_type)
    \n-
    122 file << " "
    \n-
    123 << nodeIndexFromEntity(entity, 0) << " " << nodeIndexFromEntity(entity, 1) << " "
    \n-
    124 << nodeIndexFromEntity(entity, 3) << " " << nodeIndexFromEntity(entity, 2) << " "
    \n-
    125 << nodeIndexFromEntity(entity, 4);
    \n-
    126 else {
    \n-
    127 for (int k = 0; k < entity.geometry().corners(); ++k)
    \n-
    128 file << " " << nodeIndexFromEntity(entity, k);
    \n-
    129 }
    \n-
    130 ++counter;
    \n-
    131
    \n-
    132 file << std::endl;
    \n+
    22 namespace VTK {
    \n+
    23
    \n+
    25
    \n+
    \n+
    62 class PVTUWriter {
    \n+
    63 std::ostream& stream;
    \n+
    64
    \n+
    65 std::string fileType;
    \n+
    66
    \n+
    67 Indent indent;
    \n+
    68
    \n+
    69 public:
    \n+
    71
    \n+
    \n+
    78 inline PVTUWriter(std::ostream& stream_, FileType fileType_)
    \n+
    79 : stream(stream_)
    \n+
    80 {
    \n+
    81 switch(fileType_) {
    \n+
    82 case polyData :
    \n+
    83 fileType = "PPolyData";
    \n+
    84 break;
    \n+
    85 case unstructuredGrid :
    \n+
    86 fileType = "PUnstructuredGrid";
    \n+
    87 break;
    \n+
    88 default :
    \n+
    89 DUNE_THROW(IOError, "PVTUWriter: Unknown fileType: " << fileType_);
    \n+
    90 }
    \n+
    91 const std::string& byteOrder = getEndiannessString();
    \n+
    92
    \n+
    93 stream << indent << "<?xml version=\\"1.0\\"?>\\n";
    \n+
    94 stream << indent << "<VTKFile"
    \n+
    95 << " type=\\"" << fileType << "\\""
    \n+
    96 << " version=\\"0.1\\""
    \n+
    97 << " byte_order=\\"" << byteOrder << "\\">\\n";
    \n+
    98 ++indent;
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    \n+
    102 inline ~PVTUWriter() {
    \n+
    103 --indent;
    \n+
    104 stream << indent << "</VTKFile>\\n"
    \n+
    105 << std::flush;
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    109
    \n+
    \n+
    120 inline void beginPointData(const std::string& scalars = "",
    \n+
    121 const std::string& vectors = "") {
    \n+
    122 stream << indent << "<PPointData";
    \n+
    123 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n+
    124 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n+
    125 stream << ">\\n";
    \n+
    126 ++indent;
    \n+
    127 }
    \n+
    \n+
    \n+
    129 inline void endPointData() {
    \n+
    130 --indent;
    \n+
    131 stream << indent << "</PPointData>\\n";
    \n+
    132 }
    \n+
    \n
    133
    \n-
    134 // Write boundaries
    \n-
    135 if (!physicalBoundaries.empty()) {
    \n-
    136 auto refElement = referenceElement<typename GridView::ctype,dim>(entity.type());
    \n-
    137 for(const auto& intersection : intersections(gv, entity)) {
    \n-
    138 if(intersection.boundary()) {
    \n-
    139 const auto faceLocalIndex(intersection.indexInInside());
    \n-
    140 file << counter << " " << translateDuneToGmshType(intersection.type())
    \n-
    141 << " " << 1 << " " << physicalBoundaries[intersection.boundarySegmentIndex()];
    \n-
    142 for (int k = 0; k < intersection.geometry().corners(); ++k)
    \n-
    143 {
    \n-
    144 const auto vtxLocalIndex(refElement.subEntity(faceLocalIndex, 1, k, dim));
    \n-
    145 file << " " << nodeIndexFromEntity(entity, vtxLocalIndex);
    \n-
    146 }
    \n-
    147 ++counter;
    \n-
    148 file << std::endl;
    \n-
    149 }
    \n-
    150 }
    \n-
    151 }
    \n-
    152
    \n-
    153 } catch(Exception& e) {
    \n-
    154 file.close();
    \n-
    155 throw;
    \n-
    156 }
    \n-
    157 }
    \n-
    158 }
    \n+
    135
    \n+
    \n+
    146 inline void beginCellData(const std::string& scalars = "",
    \n+
    147 const std::string& vectors = "") {
    \n+
    148 stream << indent << "<PCellData";
    \n+
    149 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n+
    150 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n+
    151 stream << ">\\n";
    \n+
    152 ++indent;
    \n+
    153 }
    \n+
    \n+
    \n+
    155 inline void endCellData() {
    \n+
    156 --indent;
    \n+
    157 stream << indent << "</PCellData>\\n";
    \n+
    158 }
    \n+
    \n
    159
    \n-
    160
    \n-
    167 void outputNodes(std::ofstream& file) const {
    \n-
    168 for (const auto& vertex : vertices(gv)) {
    \n-
    169 const auto globalCoord = vertex.geometry().center();
    \n-
    170 const auto nodeIndex = gv.indexSet().index(vertex)+1; // Start counting indices by "1".
    \n-
    171
    \n-
    172 if (1 == dimWorld)
    \n-
    173 file << nodeIndex << " " << globalCoord[0] << " " << 0 << " " << 0 << std::endl;
    \n-
    174 else if (2 == dimWorld)
    \n-
    175 file << nodeIndex << " " << globalCoord[0] << " " << globalCoord[1] << " " << 0 << std::endl;
    \n-
    176 else // (3 == dimWorld)
    \n-
    177 file << nodeIndex << " " << globalCoord[0] << " " << globalCoord[1] << " " << globalCoord[2] << std::endl;
    \n-
    178 }
    \n-
    179 }
    \n-
    180
    \n-
    181 public:
    \n-
    187 GmshWriter(const GridView& gridView, int numDigits=6) : gv(gridView), precision(numDigits) {}
    \n-
    188
    \n-
    \n-
    193 void setPrecision(int numDigits) {
    \n-
    194 precision = numDigits;
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    \n-
    218 void write(const std::string& fileName,
    \n-
    219 const std::vector<int>& physicalEntities=std::vector<int>(),
    \n-
    220 const std::vector<int>& physicalBoundaries=std::vector<int>()) const {
    \n-
    221 // Open file
    \n-
    222 std::ofstream file(fileName.c_str());
    \n-
    223 if (!file.is_open())
    \n-
    224 DUNE_THROW(Dune::IOError, "Could not open " << fileName << " with write access.");
    \n-
    225
    \n-
    226 // Set precision
    \n-
    227 file << std::setprecision( precision );
    \n-
    228
    \n-
    229 // Output Header
    \n-
    230 file << "$MeshFormat" << std::endl
    \n-
    231 << "2.0 0 " << sizeof(double) << std::endl // "2.0" for "version 2.0", "0" for ASCII
    \n-
    232 << "$EndMeshFormat" << std::endl;
    \n-
    233
    \n-
    234 // Output Nodes
    \n-
    235 file << "$Nodes" << std::endl
    \n-
    236 << gv.size(dim) << std::endl;
    \n-
    237
    \n-
    238 outputNodes(file);
    \n-
    239
    \n-
    240 file << "$EndNodes" << std::endl;
    \n-
    241
    \n-
    242 // Output Elements;
    \n-
    243 int boundariesSize(0);
    \n-
    244 if(!physicalBoundaries.empty())
    \n-
    245 for(const auto& entity : elements(gv))
    \n-
    246 for(const auto& intersection : intersections(gv, entity))
    \n-
    247 if(intersection.boundary())
    \n-
    248 ++boundariesSize;
    \n-
    249
    \n-
    250 file << "$Elements" << std::endl
    \n-
    251 << gv.size(0) + boundariesSize<< std::endl;
    \n-
    252
    \n-
    253 outputElements(file, physicalEntities, physicalBoundaries);
    \n-
    254
    \n-
    255 file << "$EndElements" << std::endl;
    \n-
    256 }
    \n-
    \n-
    257
    \n-
    258 };
    \n-
    \n-
    259
    \n-
    260} // namespace Dune
    \n-
    261
    \n-
    262#endif // DUNE_GRID_IO_FILE_GMSHWRITER_HH
    \n-
    Mapper for multiple codim and multiple geometry types.
    \n-
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n-
    int size(int codim) const
    obtain number of entities in a given codimension
    Definition common/gridview.hh:197
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n-
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n+
    161
    \n+
    \n+
    166 inline void beginPoints() {
    \n+
    167 stream << indent << "<PPoints>\\n";
    \n+
    168 ++indent;
    \n+
    169 }
    \n+
    \n+
    \n+
    171 inline void endPoints() {
    \n+
    172 --indent;
    \n+
    173 stream << indent << "</PPoints>\\n";
    \n+
    174 }
    \n+
    \n+
    175
    \n+
    177
    \n+
    \n+
    189 inline void beginMain(unsigned ghostLevel = 0) {
    \n+
    190 stream << indent << "<" << fileType
    \n+
    191 << " GhostLevel=\\"" << ghostLevel << "\\">\\n";
    \n+
    192 ++indent;
    \n+
    193 }
    \n+
    \n+
    \n+
    195 inline void endMain() {
    \n+
    196 --indent;
    \n+
    197 stream << indent << "</" << fileType << ">\\n";
    \n+
    198 }
    \n+
    \n+
    199
    \n+
    201
    \n+
    \n+
    207 void addArray(const std::string& name, unsigned ncomps, Precision prec) {
    \n+
    208 stream << indent << "<PDataArray"
    \n+
    209 << " type=\\"" << toString(prec) << "\\""
    \n+
    210 << " Name=\\"" << name << "\\""
    \n+
    211 << " NumberOfComponents=\\"" << ncomps << "\\"/>\\n";
    \n+
    212 }
    \n+
    \n+
    213
    \n+
    \n+
    215 inline void addPiece(const std::string& filename) {
    \n+
    216 stream << indent << "<Piece "
    \n+
    217 << " Source=\\"" << filename << "\\"/>\\n";
    \n+
    218 }
    \n+
    \n+
    219 };
    \n+
    \n+
    220
    \n+
    221 } // namespace VTK
    \n+
    222
    \n+
    224
    \n+
    225} // namespace Dune
    \n+
    226
    \n+
    227#endif // DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH
    \n+
    Common stuff for the VTKWriter.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    Geometry geometry() const
    obtain geometric realization of the entity
    Definition common/entity.hh:141
    \n-
    GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition common/entity.hh:146
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n-
    Index index(const EntityType &e) const
    Map entity to starting index in array for dof block.
    Definition mcmgmapper.hh:171
    \n-
    Write Gmsh mesh file.
    Definition gmshwriter.hh:37
    \n-
    GmshWriter(const GridView &gridView, int numDigits=6)
    Constructor expecting GridView of Grid to be written.
    Definition gmshwriter.hh:187
    \n-
    void setPrecision(int numDigits)
    Set the number of digits to be used when writing the vertices. By default is 6.
    Definition gmshwriter.hh:193
    \n-
    void write(const std::string &fileName, const std::vector< int > &physicalEntities=std::vector< int >(), const std::vector< int > &physicalBoundaries=std::vector< int >()) const
    Write given grid in Gmsh 2.0 compatible ASCII file.
    Definition gmshwriter.hh:218
    \n-
    Different resources needed by all grid implementations.
    \n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n+
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n+
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n+
    std::string toString(Precision p)
    map precision to VTK type name
    Definition common.hh:280
    \n+
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n+
    ~PVTUWriter()
    write footer
    Definition pvtuwriter.hh:102
    \n+
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition pvtuwriter.hh:195
    \n+
    void endCellData()
    finish CellData section
    Definition pvtuwriter.hh:155
    \n+
    void addArray(const std::string &name, unsigned ncomps, Precision prec)
    Add an array to the output file.
    Definition pvtuwriter.hh:207
    \n+
    void beginMain(unsigned ghostLevel=0)
    start the main PPolyData/PUnstructuredGrid section
    Definition pvtuwriter.hh:189
    \n+
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition pvtuwriter.hh:146
    \n+
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition pvtuwriter.hh:120
    \n+
    void addPiece(const std::string &filename)
    Add a serial piece to the output file.
    Definition pvtuwriter.hh:215
    \n+
    PVTUWriter(std::ostream &stream_, FileType fileType_)
    create a PVTUWriter object
    Definition pvtuwriter.hh:78
    \n+
    void endPointData()
    finish PointData section
    Definition pvtuwriter.hh:129
    \n+
    void endPoints()
    finish section for the point coordinates
    Definition pvtuwriter.hh:171
    \n+
    void beginPoints()
    start section for the point coordinates
    Definition pvtuwriter.hh:166
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,292 +2,224 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-gmshwriter.hh\n+ * _\bv_\bt_\bk\n+pvtuwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_IO_FILE_GMSHWRITER_HH\n-6#define DUNE_GRID_IO_FILE_GMSHWRITER_HH\n-7\n-8#include \n-9#include \n-10#include \n-11#include \n-12#include \n-13\n-14#include \n-15#include \n-16#include \n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-19\n-20namespace _\bD_\bu_\bn_\be {\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_PVTUWRITER_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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be {\n+18\n 21\n-35 template \n-_\b3_\b6 class _\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br\n-37 {\n-38 private:\n-39 const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw gv;\n-40 int precision;\n-41\n-42 static const unsigned int dim = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-43 static const unsigned int dimWorld = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-44 static_assert( (dimWorld <= 3), \"GmshWriter requires dimWorld <= 3.\" );\n-45\n-47 template\n-48 std::size_t nodeIndexFromEntity(const _\bE_\bn_\bt_\bi_\bt_\by& entity, int i) const {\n-49 return gv._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().subIndex(entity, i, dim)+1;\n-50 }\n-51\n-55 static std::size_t translateDuneToGmshType(const GeometryType& type) {\n-56 std::size_t element_type;\n-57\n-58 if (type.isLine())\n-59 element_type = 1;\n-60 else if (type.isTriangle())\n-61 element_type = 2;\n-62 else if (type.isQuadrilateral())\n-63 element_type = 3;\n-64 else if (type.isTetrahedron())\n-65 element_type = 4;\n-66 else if (type.isHexahedron())\n-67 element_type = 5;\n-68 else if (type.isPrism())\n-69 element_type = 6;\n-70 else if (type.isPyramid())\n-71 element_type = 7;\n-72 else if (type.isVertex())\n-73 element_type = 15;\n-74 else\n-75 DUNE_THROW(Dune::IOError, \"GeometryType \" << type << \" is not supported by\n-gmsh.\");\n-76\n-77 return element_type;\n-78 }\n-79\n-94 void outputElements(std::ofstream& file, const std::vector&\n-physicalEntities, const std::vector& physicalBoundaries) const {\n-95 _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> elementMapper(gv,\n-_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt());\n-96 std::size_t counter(1);\n-97 for (const auto& entity : elements(gv)) {\n-98 // Check whether the type is compatible. If not, close file and rethrow\n-exception.\n-99 try {\n-100 std::size_t element_type = translateDuneToGmshType(entity._\bt_\by_\bp_\be());\n-101\n-102 file << counter << \" \" << element_type;\n-103 // If present, set the first tag to the physical entity\n-104 if (!physicalEntities.empty())\n-105 file << \" \" << 1 << \" \" << physicalEntities[elementMapper._\bi_\bn_\bd_\be_\bx(entity)];\n-106 else\n-107 file << \" \" << 0; // \"0\" for \"I do not use any tags.\"\n-108\n-109 // Output list of nodes.\n-110 // 3, 5 and 7 got different vertex numbering compared to Dune\n-111 if (3 == element_type)\n-112 file << \" \"\n-113 << nodeIndexFromEntity(entity, 0) << \" \" << nodeIndexFromEntity(entity, 1)\n-<< \" \"\n-114 << nodeIndexFromEntity(entity, 3) << \" \" << nodeIndexFromEntity(entity, 2);\n-115 else if (5 == element_type)\n-116 file << \" \"\n-117 << nodeIndexFromEntity(entity, 0) << \" \" << nodeIndexFromEntity(entity, 1)\n-<< \" \"\n-118 << nodeIndexFromEntity(entity, 3) << \" \" << nodeIndexFromEntity(entity, 2)\n-<< \" \"\n-119 << nodeIndexFromEntity(entity, 4) << \" \" << nodeIndexFromEntity(entity, 5)\n-<< \" \"\n-120 << nodeIndexFromEntity(entity, 7) << \" \" << nodeIndexFromEntity(entity, 6);\n-121 else if (7 == element_type)\n-122 file << \" \"\n-123 << nodeIndexFromEntity(entity, 0) << \" \" << nodeIndexFromEntity(entity, 1)\n-<< \" \"\n-124 << nodeIndexFromEntity(entity, 3) << \" \" << nodeIndexFromEntity(entity, 2)\n-<< \" \"\n-125 << nodeIndexFromEntity(entity, 4);\n-126 else {\n-127 for (int k = 0; k < entity._\bg_\be_\bo_\bm_\be_\bt_\br_\by().corners(); ++k)\n-128 file << \" \" << nodeIndexFromEntity(entity, k);\n-129 }\n-130 ++counter;\n-131\n-132 file << std::endl;\n+22 namespace VTK {\n+23\n+25\n+_\b6_\b2 class _\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br {\n+63 std::ostream& stream;\n+64\n+65 std::string fileType;\n+66\n+67 Indent indent;\n+68\n+69 public:\n+71\n+_\b7_\b8 inline _\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br(std::ostream& stream_, _\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType_)\n+79 : stream(stream_)\n+80 {\n+81 switch(fileType_) {\n+82 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba :\n+83 fileType = \"PPolyData\";\n+84 break;\n+85 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd :\n+86 fileType = \"PUnstructuredGrid\";\n+87 break;\n+88 default :\n+89 DUNE_THROW(IOError, \"PVTUWriter: Unknown fileType: \" << fileType_);\n+90 }\n+91 const std::string& byteOrder = _\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg();\n+92\n+93 stream << indent << \"\\n\";\n+94 stream << indent << \"\\n\";\n+98 ++indent;\n+99 }\n+100\n+_\b1_\b0_\b2 inline _\b~_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br() {\n+103 --indent;\n+104 stream << indent << \"\\n\"\n+105 << std::flush;\n+106 }\n+107\n+109\n+_\b1_\b2_\b0 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n+121 const std::string& vectors = \"\") {\n+122 stream << indent << \"\\n\";\n+126 ++indent;\n+127 }\n+_\b1_\b2_\b9 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba() {\n+130 --indent;\n+131 stream << indent << \"\\n\";\n+132 }\n 133\n-134 // Write boundaries\n-135 if (!physicalBoundaries.empty()) {\n-136 auto refElement = referenceElement\n-(entity._\bt_\by_\bp_\be());\n-137 for(const auto& intersection : intersections(gv, entity)) {\n-138 if(intersection.boundary()) {\n-139 const auto faceLocalIndex(intersection.indexInInside());\n-140 file << counter << \" \" << translateDuneToGmshType(intersection.type())\n-141 << \" \" << 1 << \" \" << physicalBoundaries[intersection.boundarySegmentIndex\n-()];\n-142 for (int k = 0; k < intersection.geometry().corners(); ++k)\n-143 {\n-144 const auto vtxLocalIndex(refElement.subEntity(faceLocalIndex, 1, k, dim));\n-145 file << \" \" << nodeIndexFromEntity(entity, vtxLocalIndex);\n-146 }\n-147 ++counter;\n-148 file << std::endl;\n-149 }\n-150 }\n-151 }\n-152\n-153 } catch(Exception& e) {\n-154 file.close();\n-155 throw;\n-156 }\n-157 }\n+135\n+_\b1_\b4_\b6 inline void _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n+147 const std::string& vectors = \"\") {\n+148 stream << indent << \"\\n\";\n+152 ++indent;\n+153 }\n+_\b1_\b5_\b5 inline void _\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba() {\n+156 --indent;\n+157 stream << indent << \"\\n\";\n 158 }\n 159\n-160\n-167 void outputNodes(std::ofstream& file) const {\n-168 for (const auto& vertex : vertices(gv)) {\n-169 const auto globalCoord = vertex.geometry().center();\n-170 const auto nodeIndex = gv._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index(vertex)+1; // Start counting\n-indices by \"1\".\n-171\n-172 if (1 == dimWorld)\n-173 file << nodeIndex << \" \" << globalCoord[0] << \" \" << 0 << \" \" << 0 << std::\n-endl;\n-174 else if (2 == dimWorld)\n-175 file << nodeIndex << \" \" << globalCoord[0] << \" \" << globalCoord[1] << \" \"\n-<< 0 << std::endl;\n-176 else // (3 == dimWorld)\n-177 file << nodeIndex << \" \" << globalCoord[0] << \" \" << globalCoord[1] << \" \"\n-<< globalCoord[2] << std::endl;\n-178 }\n-179 }\n-180\n-181 public:\n-_\b1_\b8_\b7 _\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br(const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw& gridView, int numDigits=6) : gv(gridView),\n-precision(numDigits) {}\n-188\n-_\b1_\b9_\b3 void _\bs_\be_\bt_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn(int numDigits) {\n-194 precision = numDigits;\n-195 }\n-196\n-_\b2_\b1_\b8 void _\bw_\br_\bi_\bt_\be(const std::string& fileName,\n-219 const std::vector& physicalEntities=std::vector(),\n-220 const std::vector& physicalBoundaries=std::vector()) const {\n-221 // Open file\n-222 std::ofstream file(fileName.c_str());\n-223 if (!file.is_open())\n-224 DUNE_THROW(Dune::IOError, \"Could not open \" << fileName << \" with write\n-access.\");\n-225\n-226 // Set precision\n-227 file << std::setprecision( precision );\n-228\n-229 // Output Header\n-230 file << \"$MeshFormat\" << std::endl\n-231 << \"2.0 0 \" << sizeof(double) << std::endl // \"2.0\" for \"version 2.0\", \"0\"\n-for ASCII\n-232 << \"$EndMeshFormat\" << std::endl;\n-233\n-234 // Output Nodes\n-235 file << \"$Nodes\" << std::endl\n-236 << gv._\bs_\bi_\bz_\be(dim) << std::endl;\n-237\n-238 outputNodes(file);\n-239\n-240 file << \"$EndNodes\" << std::endl;\n-241\n-242 // Output Elements;\n-243 int boundariesSize(0);\n-244 if(!physicalBoundaries.empty())\n-245 for(const auto& entity : elements(gv))\n-246 for(const auto& intersection : intersections(gv, entity))\n-247 if(intersection.boundary())\n-248 ++boundariesSize;\n-249\n-250 file << \"$Elements\" << std::endl\n-251 << gv._\bs_\bi_\bz_\be(0) + boundariesSize<< std::endl;\n-252\n-253 outputElements(file, physicalEntities, physicalBoundaries);\n-254\n-255 file << \"$EndElements\" << std::endl;\n-256 }\n-257\n-258 };\n-259\n-260} // namespace Dune\n-261\n-262#endif // DUNE_GRID_IO_FILE_GMSHWRITER_HH\n-_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n-Mapper for multiple codim and multiple geometry types.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const IndexSet & indexSet() const\n-obtain the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int codim) const\n-obtain number of entities in a given codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static constexpr int dimensionworld\n-The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgElementLayout()\n-layout for elements (codim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n+161\n+_\b1_\b6_\b6 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() {\n+167 stream << indent << \"\\n\";\n+168 ++indent;\n+169 }\n+_\b1_\b7_\b1 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() {\n+172 --indent;\n+173 stream << indent << \"\\n\";\n+174 }\n+175\n+177\n+_\b1_\b8_\b9 inline void _\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn(unsigned ghostLevel = 0) {\n+190 stream << indent << \"<\" << fileType\n+191 << \" GhostLevel=\\\"\" << ghostLevel << \"\\\">\\n\";\n+192 ++indent;\n+193 }\n+_\b1_\b9_\b5 inline void _\be_\bn_\bd_\bM_\ba_\bi_\bn() {\n+196 --indent;\n+197 stream << indent << \"\\n\";\n+198 }\n+199\n+201\n+_\b2_\b0_\b7 void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(const std::string& name, unsigned ncomps, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec) {\n+208 stream << indent << \"\\n\";\n+212 }\n+213\n+_\b2_\b1_\b5 inline void _\ba_\bd_\bd_\bP_\bi_\be_\bc_\be(const std::string& filename) {\n+216 stream << indent << \"\\n\";\n+218 }\n+219 };\n+220\n+221 } // namespace VTK\n+222\n+224\n+225} // namespace Dune\n+226\n+227#endif // DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-obtain geometric realization of the entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-Return the name of the reference element. The type can be used to access the\n-Dune::ReferenceElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-Implementation class for a multiple codim and multiple geometry type mapper.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-Index index(const EntityType &e) const\n-Map entity to starting index in array for dof block.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br\n-Write Gmsh mesh file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br\n-GmshWriter(const GridView &gridView, int numDigits=6)\n-Constructor expecting GridView of Grid to be written.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-void setPrecision(int numDigits)\n-Set the number of digits to be used when writing the vertices. By default is 6.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(const std::string &fileName, const std::vector< int >\n-&physicalEntities=std::vector< int >(), const std::vector< int >\n-&physicalBoundaries=std::vector< int >()) const\n-Write given grid in Gmsh 2.0 compatible ASCII file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:218\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n+FileType\n+which type of VTK file to write\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n+@ polyData\n+for .vtp files (PolyData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n+@ unstructuredGrid\n+for .vtu files (UnstructuredGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg\n+std::string toString(Precision p)\n+map precision to VTK type name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:280\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n+std::string getEndiannessString()\n+determine endianness of this C++ implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+~PVTUWriter()\n+write footer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n+void endMain()\n+finish the main PolyData/UnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void endCellData()\n+finish CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+void addArray(const std::string &name, unsigned ncomps, Precision prec)\n+Add an array to the output file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n+void beginMain(unsigned ghostLevel=0)\n+start the main PPolyData/PUnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void beginCellData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void beginPointData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bi_\be_\bc_\be\n+void addPiece(const std::string &filename)\n+Add a serial piece to the output file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:215\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+PVTUWriter(std::ostream &stream_, FileType fileType_)\n+create a PVTUWriter object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void endPointData()\n+finish PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+void endPoints()\n+finish section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+void beginPoints()\n+start section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:166\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00770.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00770.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gnuplot.hh File Reference\n+dune-grid: boundaryiterators.hh File Reference\n \n \n \n \n \n \n \n@@ -65,58 +65,57 @@\n \n \n \n \n \n \n \n
    \n \n-
    gnuplot.hh File Reference
    \n+
    boundaryiterators.hh File Reference
    \n
    \n
    \n \n-

    Provides gnuplot output for 1D Grids. \n+

    Functions for VTK output on the skeleton. \n More...

    \n-
    #include <vector>
    \n-#include <string>
    \n-#include <iostream>
    \n-#include <fstream>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n-#include "gnuplot/gnuplot.cc"
    \n+
    #include <iterator>
    \n+#include <memory>
    \n+#include <dune/common/iteratorfacades.hh>
    \n+#include <dune/grid/io/file/vtk/corner.hh>
    \n+#include <dune/grid/io/file/vtk/corneriterator.hh>
    \n+#include <dune/grid/io/file/vtk/functionwriter.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::GnuplotWriter< GridView >
     Writer for 1D grids in gnuplot format. More...
    class  Dune::VTK::BoundaryIterator< GV >
     iterate over the GridViews boundary intersections More...
     
    class  Dune::LeafGnuplotWriter< G >
     GnuplotWriter on the leaf grid. More...
    class  Dune::VTK::IntersectionIndexSet< ElementIndexSet >
     
    class  Dune::LevelGnuplotWriter< G >
     GnuplotWriter on a given level grid. More...
    class  Dune::VTK::NonConformingBoundaryIteratorFactory< GV >
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n

    Detailed Description

    \n-

    Provides gnuplot output for 1D Grids.

    \n-
    Author
    Christian Engwer
    \n+

    Functions for VTK output on the skeleton.

    \n+
    Author
    J\u00f6 Fahlke
    \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": "@@ -2,38 +2,39 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-gnuplot.hh File Reference\n-Provides gnuplot output for 1D Grids. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include \"_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b/_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bc_\bc\"\n+boundaryiterators.hh File Reference\n+_\bd_\bu_\bn_\be_\b-_\bg_\br_\bi_\bd \u00bb _\bI_\b/_\bO \u00bb _\bV_\bi_\bs_\bu_\ba_\bl_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b _\bT_\bo_\bo_\bl_\bK_\bi_\bt_\b _\b(_\bV_\bT_\bK_\b)\n+Functions for VTK output on the skeleton. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\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:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Writer for 1D grids in gnuplot format. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\bV_\b _\b>\n+\u00a0 iterate over the GridViews boundary intersections _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\b _\b>\n-\u00a0 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br on the leaf grid. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\b _\b>\n-\u00a0 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br on a given level grid. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\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 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\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-Provides gnuplot output for 1D Grids.\n+Functions for VTK output on the skeleton.\n Author\n- Christian Engwer\n+ J\u00c3\u00b6 Fahlke\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00770_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00770_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gnuplot.hh Source File\n+dune-grid: boundaryiterators.hh Source File\n \n \n \n \n \n \n \n@@ -70,141 +70,283 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    gnuplot.hh
    \n+
    boundaryiterators.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_IO_GNUPLOT_HH
    \n-
    6#define DUNE_IO_GNUPLOT_HH
    \n-
    7
    \n-
    13#include <vector>
    \n-
    14#include <string>
    \n-
    15#include <iostream>
    \n-
    16#include <fstream>
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
    \n+
    8
    \n+
    9#include <iterator>
    \n+
    10#include <memory>
    \n+
    11
    \n+
    12#include <dune/common/iteratorfacades.hh>
    \n+
    13
    \n+\n+\n+\n
    17
    \n-
    18#include <dune/common/fvector.hh>
    \n+
    18namespace Dune {
    \n
    19
    \n-\n-
    21
    \n-
    22namespace Dune {
    \n-
    23
    \n-
    29 template<class GridView>
    \n-
    \n-\n+
    22
    \n+
    28 namespace VTK {
    \n+
    29
    \n
    31
    \n-
    32 typedef typename GridView::Grid::ctype ctype;
    \n-
    33
    \n-
    34 constexpr static int dimworld = GridView::dimensionworld;
    \n-
    35
    \n-
    36 public:
    \n-
    \n-
    37 GnuplotWriter (const GridView & gv) : _is(gv.indexSet()), _gv(gv)
    \n-
    38 {
    \n-
    39 static_assert(dimworld==1 || dimworld==2, "GnuPlot export only works for worlddim==1 and worlddim==2");
    \n-
    40 // allocate _data buffer
    \n-
    41 _data.resize(_is.size(0)*2);
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    48 template <class DataContainer>
    \n-
    \n-
    49 void addCellData(const DataContainer& data, const std::string & name)
    \n-
    50 {
    \n-
    51 if (dimworld!=1)
    \n-
    52 DUNE_THROW(IOError, "Gnuplot cell data writing is only supported for grids in a 1d world!");
    \n-
    53 addData(cellData, data, name);
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    60 template <class DataContainer>
    \n-
    \n-
    61 void addVertexData(const DataContainer& data, const std::string & name)
    \n-
    62 {
    \n-
    63 addData(vertexData, data, name);
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    69 void write(const std::string& filename) const;
    \n+
    35 template<typename GV>
    \n+
    \n+\n+
    37 : public ForwardIteratorFacade
    \n+
    38 < BoundaryIterator<GV>,
    \n+
    39 const typename GV::Intersection,
    \n+
    40 const typename GV::Intersection&,
    \n+
    41 typename std::iterator_traits<typename GV::template Codim<0>::
    \n+
    42 Iterator>::difference_type>
    \n+
    43 {
    \n+
    44 public:
    \n+
    45 // reiterator the facades typedefs here
    \n+\n+
    47 typedef const typename GV::Intersection Value;
    \n+
    48 typedef Value& Reference;
    \n+
    49 typedef typename GV::template Codim<0>::Iterator ElementIterator;
    \n+
    50 typedef typename GV::IntersectionIterator IntersectionIterator;
    \n+
    51 typedef typename std::iterator_traits<ElementIterator>::difference_type
    \n+\n+
    53
    \n+
    54 private:
    \n+
    55 typedef ForwardIteratorFacade<DerivedType, Value, Reference,
    \n+
    56 DifferenceType> Facade;
    \n+
    57
    \n+
    58 const GV* gv;
    \n+\n+
    60 std::shared_ptr<IntersectionIterator> iit;
    \n+
    61
    \n+
    62 bool valid() const {
    \n+
    63 // we're valid if we're passed-the-end
    \n+
    64 if(eit == gv->template end<0>()) return true;
    \n+
    65 // or if we're on a boundary
    \n+
    66 if((*iit)->boundary() && !(*iit)->neighbor()) return true;
    \n+
    67 // otherwise we're invalid
    \n+
    68 return false;
    \n+
    69 }
    \n
    70
    \n-
    71 private:
    \n-
    72 enum DataType { vertexData, cellData };
    \n-
    73 const typename GridView::IndexSet & _is;
    \n-
    74 const GridView _gv;
    \n-
    75 std::vector< std::vector< float > > _data;
    \n-
    76 std::vector< std::string > _names;
    \n-
    77
    \n-
    78 template <class DataContainer>
    \n-
    79 void addData(DataType t, const DataContainer& data, const std::string & name);
    \n+
    71 void basic_increment() {
    \n+
    72 ++*iit;
    \n+
    73 if(*iit == gv->iend(*eit)) {
    \n+
    74 iit.reset();
    \n+
    75 ++eit;
    \n+
    76 if(eit != gv->template end<0>())
    \n+
    77 iit.reset(new IntersectionIterator(gv->ibegin(*eit)));
    \n+
    78 }
    \n+
    79 }
    \n
    80
    \n-
    81 void writeRow(std::ostream & file,
    \n-
    82 const FieldVector<ctype, dimworld>& position,
    \n-
    83 const std::vector<float> & data) const;
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    89 template<class G>
    \n-
    \n-
    90 class LeafGnuplotWriter : public GnuplotWriter<typename G::LeafGridView>
    \n-
    91 {
    \n-
    92 public:
    \n-
    \n-
    94 LeafGnuplotWriter (const G& grid)
    \n-
    95 : GnuplotWriter<typename G::LeafGridView>(grid.leafGridView())
    \n-
    96 {}
    \n-
    \n-
    97 };
    \n-
    \n+
    81 public:
    \n+
    \n+\n+
    83 return **iit;
    \n+
    84 }
    \n+
    \n+
    \n+
    85 bool equals(const DerivedType& other) const {
    \n+
    86 if(eit != other.eit) return false;
    \n+
    87
    \n+
    88 // this is a bit tricky, since we may not compare iit if we are
    \n+
    89 // passed-the-end
    \n+
    90 bool mePassedTheEnd = eit == gv->template end<0>();
    \n+
    91 bool otherPassedTheEnd = other.eit == other.gv->template end<0>();
    \n+
    92
    \n+
    93 // both passed-the-end => consider them equal
    \n+
    94 if(mePassedTheEnd && otherPassedTheEnd) return true;
    \n+
    95
    \n+
    96 // one passed the end => not equal
    \n+
    97 if(mePassedTheEnd || otherPassedTheEnd) return false;
    \n
    98
    \n-
    102 template<class G>
    \n-
    \n-
    103 class LevelGnuplotWriter : public GnuplotWriter<typename G::LevelGridView>
    \n-
    104 {
    \n-
    105 public:
    \n-
    \n-
    107 LevelGnuplotWriter (const G& grid, int level)
    \n-
    108 : GnuplotWriter<typename G::LevelGridView>(grid.levelGridView(level))
    \n-
    109 {}
    \n-
    \n-
    110 };
    \n-
    \n-
    111
    \n-
    112}
    \n-
    113
    \n-
    114#include "gnuplot/gnuplot.cc"
    \n-
    115
    \n-
    116#endif // DUNE_IO_GNUPLOT_HH
    \n-
    Implementation of gnuplot output for 1D and 2D grids.
    \n-
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n-
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n-
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n+
    99 // none passed-the-end => do their iit iterators match?
    \n+
    100 return *iit == *other.iit;
    \n+
    101 }
    \n+
    \n+
    102
    \n+
    \n+
    103 void increment() {
    \n+
    104 basic_increment();
    \n+
    105 while(!valid()) basic_increment();
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    109
    \n+
    \n+
    113 BoundaryIterator(const GV& gv_, const ElementIterator& eit_,
    \n+
    114 const IntersectionIterator& iit_)
    \n+
    115 : gv(&gv_), eit(eit_), iit(new IntersectionIterator(iit_))
    \n+
    116 {
    \n+
    117 while(!valid()) basic_increment();
    \n+
    118 }
    \n+
    \n+
    120
    \n+
    \n+
    125 BoundaryIterator(const GV& gv_, const ElementIterator& eit_)
    \n+
    126 : gv(&gv_), eit(eit_)
    \n+
    127 {
    \n+
    128 if(eit != gv->template end<0>())
    \n+
    129 iit.reset(new IntersectionIterator(gv->ibegin(*eit)));
    \n+
    130
    \n+
    131 while(!valid()) basic_increment();
    \n+
    132 }
    \n+
    \n+
    134
    \n+
    \n+
    138 BoundaryIterator(const GV& gv_, bool end = false)
    \n+
    139 : gv(&gv_), eit(end ? gv->template end<0>() : gv->template begin<0>())
    \n+
    140 {
    \n+
    141 if(eit != gv->template end<0>())
    \n+
    142 iit.reset(new IntersectionIterator(gv->ibegin(*eit)));
    \n+
    143
    \n+
    144 while(!valid()) basic_increment();
    \n+
    145 }
    \n+
    \n+
    146 };
    \n+
    \n+
    147
    \n+
    148 template<typename ElementIndexSet>
    \n+
    \n+\n+
    150 const ElementIndexSet& eis;
    \n+
    151
    \n+
    152 public:
    \n+
    \n+
    153 IntersectionIndexSet(const ElementIndexSet& eis_)
    \n+
    154 : eis(eis_)
    \n+
    155 { }
    \n+
    \n+
    156 };
    \n+
    \n+
    157
    \n+
    158 template<typename GV>
    \n+
    \n+\n+
    160 const GV& gv;
    \n+
    161
    \n+
    162 public:
    \n+
    163 static const unsigned dimCell = GV::dimension-1;
    \n+
    164
    \n+
    165 typedef typename GV::Intersection Cell;
    \n+\n+
    167
    \n+\n+\n+
    170
    \n+
    171 typedef Corner Point;
    \n+\n+
    173
    \n+\n+
    175 typedef typename GV::Communication Communication;
    \n+
    176
    \n+
    \n+\n+
    178 : gv(gv_)
    \n+
    179 { }
    \n+
    \n+
    180
    \n+
    \n+\n+
    182 return CellIterator(gv);
    \n+
    183 }
    \n+
    \n+
    \n+\n+
    185 return CellIterator(gv, true);
    \n+
    186 }
    \n+
    \n+
    187
    \n+
    \n+\n+\n+
    190 }
    \n+
    \n+
    \n+\n+
    192 return CornerIterator(endCells());
    \n+
    193 }
    \n+
    \n+
    194
    \n+\n+
    196 PointIterator endPoints() const { return endCorners(); }
    \n+
    197
    \n+
    \n+\n+
    199 return ConnectivityWriter();
    \n+
    200 }
    \n+
    \n+
    \n+
    201 const Communication& comm() const {
    \n+
    202 return gv.comm();
    \n+
    203 }
    \n+
    \n+
    204 };
    \n+
    \n+
    205
    \n+
    206 } // namespace VTK
    \n+
    207
    \n+
    209
    \n+
    210} // namespace Dune
    \n+
    211
    \n+
    212#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
    \n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    Writer for 1D grids in gnuplot format.
    Definition gnuplot.hh:30
    \n-
    void addVertexData(const DataContainer &data, const std::string &name)
    Add vertex data.
    Definition gnuplot.hh:61
    \n-
    void addCellData(const DataContainer &data, const std::string &name)
    Add cell data.
    Definition gnuplot.hh:49
    \n-
    void write(const std::string &filename) const
    Write Gnuplot file to disk.
    Definition gnuplot.cc:19
    \n-
    GnuplotWriter(const GridView &gv)
    Definition gnuplot.hh:37
    \n-
    GnuplotWriter on the leaf grid.
    Definition gnuplot.hh:91
    \n-
    LeafGnuplotWriter(const G &grid)
    Construct a Gnuplot writer for the leaf level of a given grid.
    Definition gnuplot.hh:94
    \n-
    GnuplotWriter on a given level grid.
    Definition gnuplot.hh:104
    \n-
    LevelGnuplotWriter(const G &grid, int level)
    Construct a Gnuplot writer for a certain level of a given grid.
    Definition gnuplot.hh:107
    \n-
    Different resources needed by all grid implementations.
    \n+
    iterate over the GridViews boundary intersections
    Definition boundaryiterators.hh:43
    \n+
    BoundaryIterator< GV > DerivedType
    Definition boundaryiterators.hh:46
    \n+
    BoundaryIterator(const GV &gv_, const ElementIterator &eit_)
    construct a BoundaryIterator
    Definition boundaryiterators.hh:125
    \n+
    Reference dereference() const
    Definition boundaryiterators.hh:82
    \n+
    const GV::Intersection Value
    Definition boundaryiterators.hh:47
    \n+
    BoundaryIterator(const GV &gv_, bool end=false)
    construct a BoundaryIterator
    Definition boundaryiterators.hh:138
    \n+
    BoundaryIterator(const GV &gv_, const ElementIterator &eit_, const IntersectionIterator &iit_)
    construct a BoundaryIterator
    Definition boundaryiterators.hh:113
    \n+
    GV::template Codim< 0 >::Iterator ElementIterator
    Definition boundaryiterators.hh:49
    \n+
    Value & Reference
    Definition boundaryiterators.hh:48
    \n+
    GV::IntersectionIterator IntersectionIterator
    Definition boundaryiterators.hh:50
    \n+
    bool equals(const DerivedType &other) const
    Definition boundaryiterators.hh:85
    \n+
    std::iterator_traits< ElementIterator >::difference_type DifferenceType
    Definition boundaryiterators.hh:52
    \n+
    void increment()
    Definition boundaryiterators.hh:103
    \n+
    Definition boundaryiterators.hh:149
    \n+
    IntersectionIndexSet(const ElementIndexSet &eis_)
    Definition boundaryiterators.hh:153
    \n+
    Definition boundaryiterators.hh:159
    \n+
    PointIterator beginPoints() const
    Definition boundaryiterators.hh:195
    \n+
    ConnectivityWriter makeConnectivity() const
    Definition boundaryiterators.hh:198
    \n+
    GV::Communication Communication
    Definition boundaryiterators.hh:175
    \n+
    static const unsigned dimCell
    Definition boundaryiterators.hh:163
    \n+
    VTK::CornerIterator< CellIterator > CornerIterator
    Definition boundaryiterators.hh:169
    \n+
    BoundaryIterator< GV > CellIterator
    Definition boundaryiterators.hh:166
    \n+
    Corner Point
    Definition boundaryiterators.hh:171
    \n+
    CornerIterator beginCorners() const
    Definition boundaryiterators.hh:188
    \n+
    CellIterator beginCells() const
    Definition boundaryiterators.hh:181
    \n+
    NonConformingConnectivityWriter< Cell > ConnectivityWriter
    Definition boundaryiterators.hh:174
    \n+
    CornerIterator endCorners() const
    Definition boundaryiterators.hh:191
    \n+
    VTK::Corner< Cell > Corner
    Definition boundaryiterators.hh:168
    \n+
    GV::Intersection Cell
    Definition boundaryiterators.hh:165
    \n+
    CornerIterator PointIterator
    Definition boundaryiterators.hh:172
    \n+
    NonConformingBoundaryIteratorFactory(const GV &gv_)
    Definition boundaryiterators.hh:177
    \n+
    CellIterator endCells() const
    Definition boundaryiterators.hh:184
    \n+
    const Communication & comm() const
    Definition boundaryiterators.hh:201
    \n+
    PointIterator endPoints() const
    Definition boundaryiterators.hh:196
    \n+
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n+
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n+
    writer for the connectivity array in nonconforming mode
    Definition functionwriter.hh:261
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,162 +2,320 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-gnuplot.hh\n+ * _\bv_\bt_\bk\n+boundaryiterators.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_IO_GNUPLOT_HH\n-6#define DUNE_IO_GNUPLOT_HH\n-7\n-13#include \n-14#include \n-15#include \n-16#include \n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH\n+7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH\n+8\n+9#include \n+10#include \n+11\n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n 17\n-18#include \n+18namespace _\bD_\bu_\bn_\be {\n 19\n-20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-21\n-22namespace _\bD_\bu_\bn_\be {\n-23\n-29 template\n-_\b3_\b0 class _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br {\n+22\n+28 namespace VTK {\n+29\n 31\n-32 typedef typename GridView::Grid::ctype ctype;\n-33\n-34 constexpr static int dimworld = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-35\n-36 public:\n-_\b3_\b7 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br (const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw & gv) : _is(gv.indexSet()), _gv(gv)\n-38 {\n-39 static_assert(dimworld==1 || dimworld==2, \"GnuPlot export only works for\n-worlddim==1 and worlddim==2\");\n-40 // allocate _data buffer\n-41 _data.resize(_is.size(0)*2);\n-42 }\n-43\n-48 template \n-_\b4_\b9 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const DataContainer& data, const std::string & name)\n-50 {\n-51 if (dimworld!=1)\n-52 DUNE_THROW(IOError, \"Gnuplot cell data writing is only supported for grids\n-in a 1d world!\");\n-53 addData(cellData, data, name);\n-54 }\n-55\n-60 template \n-_\b6_\b1 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(const DataContainer& data, const std::string & name)\n-62 {\n-63 addData(vertexData, data, name);\n-64 }\n-65\n-69 void _\bw_\br_\bi_\bt_\be(const std::string& filename) const;\n+35 template\n+_\b3_\b6 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+37 : public ForwardIteratorFacade\n+38 < BoundaryIterator,\n+39 const typename GV::Intersection,\n+40 const typename GV::Intersection&,\n+41 typename std::iterator_traits::\n+42 Iterator>::difference_type>\n+43 {\n+44 public:\n+45 // reiterator the facades typedefs here\n+_\b4_\b6 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\bV_\b> _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be;\n+_\b4_\b7 typedef const typename GV::Intersection _\bV_\ba_\bl_\bu_\be;\n+_\b4_\b8 typedef _\bV_\ba_\bl_\bu_\be& _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+_\b4_\b9 typedef typename GV::template Codim<0>::Iterator _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b5_\b0 typedef typename GV::IntersectionIterator _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+51 typedef typename std::iterator_traits::difference_type\n+_\b5_\b2 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be;\n+53\n+54 private:\n+55 typedef ForwardIteratorFacade<_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be, _\bV_\ba_\bl_\bu_\be, _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be,\n+56 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be> Facade;\n+57\n+58 const GV* gv;\n+59 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br eit;\n+60 std::shared_ptr iit;\n+61\n+62 bool valid() const {\n+63 // we're valid if we're passed-the-end\n+64 if(eit == gv->template end<0>()) return true;\n+65 // or if we're on a boundary\n+66 if((*iit)->boundary() && !(*iit)->neighbor()) return true;\n+67 // otherwise we're invalid\n+68 return false;\n+69 }\n 70\n-71 private:\n-72 enum DataType { vertexData, cellData };\n-73 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt & _is;\n-74 const GridView _gv;\n-75 std::vector< std::vector< float > > _data;\n-76 std::vector< std::string > _names;\n-77\n-78 template \n-79 void addData(DataType t, const DataContainer& data, const std::string &\n-name);\n+71 void basic_increment() {\n+72 ++*iit;\n+73 if(*iit == gv->iend(*eit)) {\n+74 iit.reset();\n+75 ++eit;\n+76 if(eit != gv->template end<0>())\n+77 iit.reset(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv->ibegin(*eit)));\n+78 }\n+79 }\n 80\n-81 void writeRow(std::ostream & file,\n-82 const FieldVector& position,\n-83 const std::vector & data) const;\n-84 };\n-85\n-89 template\n-_\b9_\b0 class _\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br : public _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-91 {\n-92 public:\n-_\b9_\b4 _\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br (const G& grid)\n-95 : _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br(grid._\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw())\n-96 {}\n-97 };\n+81 public:\n+_\b8_\b2 _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n+83 return **iit;\n+84 }\n+_\b8_\b5 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be& other) const {\n+86 if(eit != other.eit) return false;\n+87\n+88 // this is a bit tricky, since we may not compare iit if we are\n+89 // passed-the-end\n+90 bool mePassedTheEnd = eit == gv->template end<0>();\n+91 bool otherPassedTheEnd = other.eit == other.gv->template end<0>();\n+92\n+93 // both passed-the-end => consider them equal\n+94 if(mePassedTheEnd && otherPassedTheEnd) return true;\n+95\n+96 // one passed the end => not equal\n+97 if(mePassedTheEnd || otherPassedTheEnd) return false;\n 98\n-102 template\n-_\b1_\b0_\b3 class _\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br : public _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-104 {\n-105 public:\n-_\b1_\b0_\b7 _\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br (const G& grid, int level)\n-108 : _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br(grid._\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level))\n-109 {}\n-110 };\n-111\n-112}\n-113\n-114#include \"_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b/_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bc_\bc\"\n-115\n-116#endif // DUNE_IO_GNUPLOT_HH\n-_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bc_\bc\n-Implementation of gnuplot output for 1D and 2D grids.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Traits::IndexSet IndexSet\n-type of the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n-dim, dimworld, ct, GridFamily > &grid)\n-leaf grid view for the given grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:819\n-_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid<\n-dim, dimworld, ct, GridFamily > &grid, int level)\n-level grid view for the given grid and level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:802\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static constexpr int dimensionworld\n-The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n+99 // none passed-the-end => do their iit iterators match?\n+100 return *iit == *other.iit;\n+101 }\n+102\n+_\b1_\b0_\b3 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n+104 basic_increment();\n+105 while(!valid()) basic_increment();\n+106 }\n+107\n+109\n+_\b1_\b1_\b3 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GV& gv_, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& eit_,\n+114 const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& iit_)\n+115 : gv(&gv_), eit(eit_), iit(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(iit_))\n+116 {\n+117 while(!valid()) basic_increment();\n+118 }\n+120\n+_\b1_\b2_\b5 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GV& gv_, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& eit_)\n+126 : gv(&gv_), eit(eit_)\n+127 {\n+128 if(eit != gv->template end<0>())\n+129 iit.reset(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv->ibegin(*eit)));\n+130\n+131 while(!valid()) basic_increment();\n+132 }\n+134\n+_\b1_\b3_\b8 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GV& gv_, bool end = false)\n+139 : gv(&gv_), eit(end ? gv->template end<0>() : gv->template begin<0>())\n+140 {\n+141 if(eit != gv->template end<0>())\n+142 iit.reset(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv->ibegin(*eit)));\n+143\n+144 while(!valid()) basic_increment();\n+145 }\n+146 };\n+147\n+148 template\n+_\b1_\b4_\b9 class _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt {\n+150 const ElementIndexSet& eis;\n+151\n+152 public:\n+_\b1_\b5_\b3 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(const ElementIndexSet& eis_)\n+154 : eis(eis_)\n+155 { }\n+156 };\n+157\n+158 template\n+_\b1_\b5_\b9 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+160 const GV& gv;\n+161\n+162 public:\n+_\b1_\b6_\b3 static const unsigned _\bd_\bi_\bm_\bC_\be_\bl_\bl = GV::dimension-1;\n+164\n+_\b1_\b6_\b5 typedef typename GV::Intersection _\bC_\be_\bl_\bl;\n+_\b1_\b6_\b6 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\bV_\b> _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+167\n+_\b1_\b6_\b8 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\br_\bn_\be_\br;\n+_\b1_\b6_\b9 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+170\n+_\b1_\b7_\b1 typedef _\bC_\bo_\br_\bn_\be_\br _\bP_\bo_\bi_\bn_\bt;\n+_\b1_\b7_\b2 typedef _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+173\n+_\b1_\b7_\b4 typedef _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br;\n+_\b1_\b7_\b5 typedef typename GV::Communication _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn;\n+176\n+_\b1_\b7_\b7 explicit _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(const GV& gv_)\n+178 : gv(gv_)\n+179 { }\n+180\n+_\b1_\b8_\b1 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs() const {\n+182 return _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv);\n+183 }\n+_\b1_\b8_\b4 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs() const {\n+185 return _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv, true);\n+186 }\n+187\n+_\b1_\b8_\b8 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n+189 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs(), _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n+190 }\n+_\b1_\b9_\b1 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n+192 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n+193 }\n+194\n+_\b1_\b9_\b5 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() const { return _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs(); }\n+_\b1_\b9_\b6 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() const { return _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs(); }\n+197\n+_\b1_\b9_\b8 _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br _\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by() const {\n+199 return _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br();\n+200 }\n+_\b2_\b0_\b1 const _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn& _\bc_\bo_\bm_\bm() const {\n+202 return gv.comm();\n+203 }\n+204 };\n+205\n+206 } // namespace VTK\n+207\n+209\n+210} // namespace Dune\n+211\n+212#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH\n+_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n+_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-Writer for 1D grids in gnuplot format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const DataContainer &data, const std::string &name)\n-Add vertex data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const DataContainer &data, const std::string &name)\n-Add cell data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(const std::string &filename) const\n-Write Gnuplot file to disk.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.cc:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-GnuplotWriter(const GridView &gv)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-GnuplotWriter on the leaf grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-LeafGnuplotWriter(const G &grid)\n-Construct a Gnuplot writer for the leaf level of a given grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-GnuplotWriter on a given level grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n-LevelGnuplotWriter(const G &grid, int level)\n-Construct a Gnuplot writer for a certain level of a given grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:107\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the GridViews boundary intersections\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be\n+BoundaryIterator< GV > DerivedType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+BoundaryIterator(const GV &gv_, const ElementIterator &eit_)\n+construct a BoundaryIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Reference dereference() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+const GV::Intersection Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+BoundaryIterator(const GV &gv_, bool end=false)\n+construct a BoundaryIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+BoundaryIterator(const GV &gv_, const ElementIterator &eit_, const\n+IntersectionIterator &iit_)\n+construct a BoundaryIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GV::template Codim< 0 >::Iterator ElementIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Value & Reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GV::IntersectionIterator IntersectionIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const DerivedType &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be\n+std::iterator_traits< ElementIterator >::difference_type DifferenceType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+IntersectionIndexSet(const ElementIndexSet &eis_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+PointIterator beginPoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by\n+ConnectivityWriter makeConnectivity() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n+GV::Communication Communication\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\bC_\be_\bl_\bl\n+static const unsigned dimCell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+VTK::CornerIterator< CellIterator > CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:169\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+BoundaryIterator< GV > CellIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt\n+Corner Point\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs\n+CornerIterator beginCorners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+CellIterator beginCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+NonConformingConnectivityWriter< Cell > ConnectivityWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs\n+CornerIterator endCorners() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+VTK::Corner< Cell > Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:168\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl\n+GV::Intersection Cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+CornerIterator PointIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:172\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+NonConformingBoundaryIteratorFactory(const GV &gv_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+CellIterator endCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:184\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bo_\bm_\bm\n+const Communication & comm() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:201\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+PointIterator endPoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+simple class representing a corner of a cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the corners of some cell range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+writer for the connectivity array in nonconforming mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.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-grid-doc/doxygen/a00773.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00773.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfgeogrid.hh File Reference\n+dune-grid: vtksequencewriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfgeogrid.hh File Reference
    \n+
    vtksequencewriter.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/typetraits.hh>
    \n-#include <dune/grid/geometrygrid.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfparser.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/projection.hh>
    \n-#include <dune/grid/utility/hostgridaccess.hh>
    \n-#include <dune/grid/common/intersection.hh>
    \n-#include <dune/grid/io/file/dgfparser/parser.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::DGFCoordFunction< dimD, dimR >
     
    struct  Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, false >
     
    struct  Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, true >
     
    struct  Dune::DGFCoordFunctionFactory< HostGrid, DGFCoordFunction< dimD, dimR >, false >
     
    struct  Dune::DGFGridFactory< GeometryGrid< HostGrid, CoordFunction, Allocator > >
     
    struct  Dune::DGFGridInfo< GeometryGrid< HostGrid, CoordFunction, Allocator > >
    class  Dune::VTKSequenceWriter< GridView >
     Writer for the ouput of grid functions in the vtk format. More...
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,40 +2,25 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfgeogrid.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+vtksequencewriter.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\bb_\ba_\bs_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\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:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR\n- _\b>_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br\n- _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>\n- _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Writer for the ouput of grid functions in the vtk format. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00773_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00773_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfgeogrid.hh Source File\n+dune-grid: vtksequencewriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,348 +70,102 @@\n \n \n \n \n \n \n \n
    \n-
    dgfgeogrid.hh
    \n+
    vtksequencewriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGFGEOGRID_HH
    \n-
    6#define DUNE_DGFGEOGRID_HH
    \n-
    7
    \n-
    8#include <dune/common/typetraits.hh>
    \n-
    9
    \n-\n-\n-\n-\n-\n+
    5
    \n+
    6#ifndef DUNE_VTKSEQUENCE_HH
    \n+
    7#define DUNE_VTKSEQUENCE_HH
    \n+
    8
    \n+
    9#include <memory>
    \n+
    10
    \n+\n+
    12
    \n+\n+\n
    15
    \n-\n+
    16namespace Dune {
    \n
    17
    \n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21
    \n-
    22 /************************************************************************
    \n-
    23 * Warning:
    \n-
    24 * Reading DGF files directly into a GeometryGrid is a dirty hack for
    \n-
    25 * two reasons:
    \n-
    26 * 1) The host grid and coordinate function are never deleted (dangling
    \n-
    27 * pointers).
    \n-
    28 * 2) The coordinate function has to provide a default constructor
    \n-
    29 ************************************************************************/
    \n-
    30
    \n-
    31 // External Forward Declarations
    \n-
    32 // -----------------------------
    \n-
    33
    \n-
    34 template< class GridImp, class IntersectionImp >
    \n-
    35 class Intersection;
    \n-
    36
    \n-
    37
    \n-
    38
    \n-
    39 // DGFCoordFunction
    \n-
    40 // ----------------
    \n-
    41
    \n-
    42 template< int dimD, int dimR >
    \n-
    \n-\n-
    44 : public AnalyticalCoordFunction< double, dimD, dimR, DGFCoordFunction< dimD, dimR > >
    \n-
    45 {
    \n-\n-\n-
    48
    \n-
    49 public:
    \n-\n-\n-
    52
    \n-\n-
    54
    \n-
    \n-
    55 DGFCoordFunction ( const Expression *expression )
    \n-
    56 : expression_( expression )
    \n-
    57 {}
    \n-
    \n-
    58
    \n-
    \n-
    59 void evaluate ( const DomainVector &x, RangeVector &y ) const
    \n-
    60 {
    \n-
    61 std::vector< double > vx( dimD );
    \n-
    62 std::vector< double > vy;
    \n-
    63 for( int i = 0; i < dimD; ++i )
    \n-
    64 vx[ i ] = x[ i ];
    \n-
    65 expression_->evaluate( vx, vy );
    \n-
    66 assert( vy.size() == size_t( dimR ) );
    \n-
    67 for( int i = 0; i < dimR; ++i )
    \n-
    68 y[ i ] = vy[ i ];
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    71 private:
    \n-
    72 const Expression *expression_;
    \n-
    73 };
    \n-
    \n-
    74
    \n-
    75
    \n-
    76
    \n-
    77 // DGFCoordFunctionFactory
    \n-
    78 // -----------------------
    \n-
    79
    \n-
    80 template< class HostGrid, class CoordFunction,
    \n-
    81 bool discrete = GeoGrid::isDiscreteCoordFunctionInterface< typename CoordFunction::Interface >::value >
    \n-\n-
    83
    \n-
    84
    \n-
    85 template< class HostGrid, class CoordFunction >
    \n-
    \n-
    86 struct DGFCoordFunctionFactory< HostGrid, CoordFunction, false >
    \n-
    87 {
    \n-
    \n-
    88 static CoordFunction *create ( std::istream &, const HostGrid & )
    \n-
    89 {
    \n-
    90 return new CoordFunction;
    \n-
    91 }
    \n-
    \n-
    92 };
    \n-
    \n-
    93
    \n-
    94
    \n-
    95 template< class HostGrid, class CoordFunction >
    \n-
    \n-
    96 struct DGFCoordFunctionFactory< HostGrid, CoordFunction, true >
    \n-
    97 {
    \n-
    \n-
    98 static CoordFunction *create ( std::istream &, const HostGrid &hostGrid )
    \n-
    99 {
    \n-
    100 return new CoordFunction( hostGrid );
    \n-
    101 }
    \n-
    \n-
    102 };
    \n-
    \n-
    103
    \n-
    104
    \n-
    105 template< class HostGrid, int dimD, int dimR >
    \n-
    \n-
    106 struct DGFCoordFunctionFactory< HostGrid, DGFCoordFunction< dimD, dimR >, false >
    \n-
    107 {
    \n-\n-
    109
    \n-
    \n-
    110 static CoordFunction *create ( std::istream &input, const HostGrid &hostGrid )
    \n-
    111 {
    \n-
    112 dgf::ProjectionBlock projectionBlock( input, dimR );
    \n-
    113 const typename CoordFunction::Expression *expression = projectionBlock.function( "coordfunction" );
    \n-
    114 if( expression == 0 )
    \n-
    115 DUNE_THROW( DGFException, "no coordfunction specified in DGF file." );
    \n-
    116 return new CoordFunction( expression );
    \n-
    117 }
    \n-
    \n-
    118 };
    \n-
    \n-
    119
    \n-
    120
    \n-
    121
    \n-
    122 // DGFGridFactory for GeometryGrid
    \n-
    123 // -------------------------------
    \n-
    124
    \n-
    125 template< class HostGrid, class CoordFunction, class Allocator >
    \n-
    \n-
    126 struct DGFGridFactory< GeometryGrid< HostGrid, CoordFunction, Allocator > >
    \n-
    127 {
    \n-\n-
    129
    \n-
    130 const static int dimension = Grid::dimension;
    \n-
    131 typedef MPIHelper::MPICommunicator MPICommunicator;
    \n-
    132 typedef typename Grid::template Codim<0>::Entity Element;
    \n-
    133 typedef typename Grid::template Codim<dimension>::Entity Vertex;
    \n-
    134
    \n-\n-
    136
    \n-
    \n-
    137 explicit DGFGridFactory ( std::istream &input,
    \n-
    138 MPICommunicator comm = MPIHelper::getCommunicator() )
    \n-
    139 : dgfHostFactory_( input, comm ),
    \n-
    140 grid_( 0 )
    \n-
    141 {
    \n-
    142 auto hostGrid = std::shared_ptr<HostGrid>(dgfHostFactory_.grid());
    \n-
    143 assert( hostGrid != 0 );
    \n-
    144 auto coordFunction = std::shared_ptr<CoordFunction>(CoordFunctionFactory::create( input, *hostGrid ));
    \n-
    145 grid_ = new Grid( hostGrid, coordFunction );
    \n-
    146 }
    \n-
    \n-
    147
    \n-
    \n-
    148 explicit DGFGridFactory ( const std::string &filename,
    \n-
    149 MPICommunicator comm = MPIHelper::getCommunicator() )
    \n-
    150 : dgfHostFactory_( filename, comm ),
    \n-
    151 grid_( 0 )
    \n-
    152 {
    \n-
    153 auto hostGrid = std::shared_ptr<HostGrid>(dgfHostFactory_.grid());
    \n-
    154 assert( hostGrid != 0 );
    \n-
    155 std::ifstream input( filename.c_str() );
    \n-
    156 auto coordFunction = std::shared_ptr<CoordFunction>(CoordFunctionFactory::create( input, *hostGrid ));
    \n-
    157 grid_ = new Grid( hostGrid, coordFunction );
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    \n-
    160 Grid *grid () const
    \n-
    161 {
    \n-
    162 return grid_;
    \n-
    163 }
    \n-
    \n-
    164
    \n-
    165 template< class Intersection >
    \n-
    \n-
    166 bool wasInserted ( const Intersection &intersection ) const
    \n-
    167 {
    \n-
    168 return dgfHostFactory_.wasInserted( HostGridAccess< Grid >::hostIntersection( intersection ) );
    \n-
    169 }
    \n-
    \n-
    170
    \n-
    171 template< class Intersection >
    \n-
    \n-
    172 int boundaryId ( const Intersection &intersection ) const
    \n-
    173 {
    \n-
    174 return dgfHostFactory_.boundaryId( HostGridAccess< Grid >::hostIntersection( intersection ) );
    \n-
    175 }
    \n-
    \n-
    176
    \n-
    177 template< int codim >
    \n-
    \n-
    178 int numParameters () const
    \n-
    179 {
    \n-
    180 return dgfHostFactory_.template numParameters< codim >();
    \n-
    181 }
    \n-
    \n-
    182
    \n-
    183 // return true if boundary parameters found
    \n-
    \n-\n-
    185 {
    \n-
    186 return dgfHostFactory_.haveBoundaryParameters();
    \n-
    187 }
    \n-
    \n-
    188
    \n-
    189 template< class GG, class II >
    \n-
    190 const typename DGFBoundaryParameter::type &
    \n-
    \n-
    191 boundaryParameter ( const Dune::Intersection< GG, II > & intersection ) const
    \n-
    192 {
    \n-
    193 return dgfHostFactory_.boundaryParameter( HostGridAccess< Grid >::hostIntersection( intersection ) );
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    196 template< class Entity >
    \n-
    \n-
    197 std::vector< double > &parameter ( const Entity &entity )
    \n-
    198 {
    \n-
    199 return dgfHostFactory_.parameter( HostGridAccess< Grid >::hostEntity( entity ) );
    \n-
    200 }
    \n-
    \n-
    201
    \n-
    202 private:
    \n-
    203 DGFGridFactory< HostGrid > dgfHostFactory_;
    \n-
    204 Grid *grid_;
    \n-
    205 };
    \n-
    \n-
    206
    \n-
    207
    \n-
    208
    \n-
    209 // DGFGridInfo for GeometryGrid
    \n-
    210 // ----------------------------
    \n-
    211
    \n-
    212 template< class HostGrid, class CoordFunction, class Allocator >
    \n-
    \n-
    213 struct DGFGridInfo< GeometryGrid< HostGrid, CoordFunction, Allocator > >
    \n-
    214 {
    \n-
    \n-
    215 static int refineStepsForHalf ()
    \n-
    216 {
    \n-\n-
    218 }
    \n-
    \n-
    219
    \n-
    \n-
    220 static double refineWeight ()
    \n-
    221 {
    \n-
    222 return -1.0;
    \n-
    223 }
    \n-
    \n-
    224 };
    \n-
    \n-
    225
    \n-
    226}
    \n-
    227
    \n-
    228#endif // #ifndef DUNE_DGFGEOGRID_HH
    \n-\n-\n-\n+
    26 template< class GridView >
    \n+
    \n+\n+
    28 public VTKSequenceWriterBase<GridView>
    \n+
    29 {
    \n+
    30 public:
    \n+
    \n+\n+
    43 const std::string& name )
    \n+\n+
    45 name,
    \n+
    46 "",
    \n+
    47 "",
    \n+
    48 vtkWriter->gridView_.comm().rank(),
    \n+
    49 vtkWriter->gridView_.comm().size())
    \n+
    50 {}
    \n+
    \n+
    51
    \n+
    \n+\n+
    70 const std::string& name,
    \n+
    71 const std::string& path,
    \n+
    72 const std::string& extendpath )
    \n+\n+
    74 name,
    \n+
    75 path,
    \n+
    76 extendpath,
    \n+
    77 vtkWriter->gridView_.comm().rank(),
    \n+
    78 vtkWriter->gridView_.comm().size())
    \n+
    79 {}
    \n+
    \n+
    80
    \n+
    \n+
    87 explicit VTKSequenceWriter ( const GridView &gridView,
    \n+
    88 const std::string& name,
    \n+
    89 const std::string& path,
    \n+
    90 const std::string& extendpath,
    \n+\n+
    92 : VTKSequenceWriterBase<GridView>(std::make_shared<VTKWriter<GridView> >(gridView,dm),
    \n+
    93 name,path,extendpath,
    \n+
    94 gridView.comm().rank(), gridView.comm().size())
    \n+
    95 {}
    \n+
    \n+
    96 };
    \n+
    \n+
    97
    \n+
    98} // end namespace Dune
    \n+
    99
    \n+
    100#endif
    \n+\n+
    Provides subsampled file i/o for the visualization toolkit.
    \n+
    Provides file i/o for the visualization toolkit.
    \n+
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    G Grid
    Definition dgfgridfactory.hh:39
    \n-
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    Derive an implementation of an analytical coordinate function from this class.
    Definition coordfunction.hh:134
    \n-
    Base::DomainVector DomainVector
    Definition coordfunction.hh:139
    \n-
    Base::RangeVector RangeVector
    Definition coordfunction.hh:140
    \n-
    grid wrapper replacing the geometries
    Definition geometrygrid/grid.hh:86
    \n-
    traits structure containing types for a codimension
    Definition geometrygrid/grid.hh:611
    \n-
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n-
    Definition io/file/dgfparser/blocks/projection.hh:24
    \n-
    ExpressionPointer function(const std::string &name) const
    Definition io/file/dgfparser/blocks/projection.hh:100
    \n-
    Definition io/file/dgfparser/blocks/projection.hh:160
    \n-
    virtual void evaluate(const Vector &argument, Vector &result) const =0
    \n-
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n-
    Definition dgfgeogrid.hh:45
    \n-
    Base::DomainVector DomainVector
    Definition dgfgeogrid.hh:50
    \n-
    void evaluate(const DomainVector &x, RangeVector &y) const
    Definition dgfgeogrid.hh:59
    \n-
    dgf::ProjectionBlock::Expression Expression
    Definition dgfgeogrid.hh:53
    \n-
    DGFCoordFunction(const Expression *expression)
    Definition dgfgeogrid.hh:55
    \n-
    Base::RangeVector RangeVector
    Definition dgfgeogrid.hh:51
    \n-
    Definition dgfgeogrid.hh:82
    \n-
    static CoordFunction * create(std::istream &, const HostGrid &)
    Definition dgfgeogrid.hh:88
    \n-
    static CoordFunction * create(std::istream &, const HostGrid &hostGrid)
    Definition dgfgeogrid.hh:98
    \n-
    static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
    Definition dgfgeogrid.hh:110
    \n-
    DGFCoordFunction< dimD, dimR > CoordFunction
    Definition dgfgeogrid.hh:108
    \n-
    Grid::template Codim< dimension >::Entity Vertex
    Definition dgfgeogrid.hh:133
    \n-
    int boundaryId(const Intersection &intersection) const
    Definition dgfgeogrid.hh:172
    \n-
    MPIHelper::MPICommunicator MPICommunicator
    Definition dgfgeogrid.hh:131
    \n-
    const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
    Definition dgfgeogrid.hh:191
    \n-
    DGFGridFactory(std::istream &input, MPICommunicator comm=MPIHelper::getCommunicator())
    Definition dgfgeogrid.hh:137
    \n-
    Grid::template Codim< 0 >::Entity Element
    Definition dgfgeogrid.hh:132
    \n-\n-
    DGFCoordFunctionFactory< HostGrid, CoordFunction > CoordFunctionFactory
    Definition dgfgeogrid.hh:135
    \n-
    GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
    Definition dgfgeogrid.hh:128
    \n-\n-
    std::vector< double > & parameter(const Entity &entity)
    Definition dgfgeogrid.hh:197
    \n-
    DGFGridFactory(const std::string &filename, MPICommunicator comm=MPIHelper::getCommunicator())
    Definition dgfgeogrid.hh:148
    \n-
    bool wasInserted(const Intersection &intersection) const
    Definition dgfgeogrid.hh:166
    \n-\n-\n-\n-
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n-
    static int refineStepsForHalf()
    number of globalRefine steps needed to refuce h by 0.5
    \n-
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n-\n-\n-\n+
    DataMode
    Whether to produce conforming or non-conforming output.
    Definition common.hh:67
    \n+
    @ conforming
    Output conforming data.
    Definition common.hh:73
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    Writer for the ouput of grid functions in the vtk format.
    Definition vtksequencewriter.hh:29
    \n+
    VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const std::string &name, const std::string &path, const std::string &extendpath)
    Constructor with a given VTKWriter or SubsamplingVTKWriter.
    Definition vtksequencewriter.hh:69
    \n+
    VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const std::string &name)
    Constructor with a given VTKWriter or SubsamplingVTKWriter.
    Definition vtksequencewriter.hh:42
    \n+
    VTKSequenceWriter(const GridView &gridView, const std::string &name, const std::string &path, const std::string &extendpath, VTK::DataMode dm=VTK::conforming)
    Constructor creating its own VTKWriter object.
    Definition vtksequencewriter.hh:87
    \n+
    Base class to write pvd-files which contains a list of all collected vtk-files.
    Definition vtksequencewriterbase.hh:34
    \n+
    const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const
    Definition vtksequencewriterbase.hh:63
    \n+
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,425 +2,121 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-dgfgeogrid.hh\n+ * _\bv_\bt_\bk\n+vtksequencewriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGFGEOGRID_HH\n-6#define DUNE_DGFGEOGRID_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+5\n+6#ifndef DUNE_VTKSEQUENCE_HH\n+7#define DUNE_VTKSEQUENCE_HH\n+8\n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\bb_\ba_\bs_\be_\b._\bh_\bh>\n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n 15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+16namespace _\bD_\bu_\bn_\be {\n 17\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21\n-22 /************************************************************************\n-23 * Warning:\n-24 * Reading DGF files directly into a GeometryGrid is a dirty hack for\n-25 * two reasons:\n-26 * 1) The host grid and coordinate function are never deleted (dangling\n-27 * pointers).\n-28 * 2) The coordinate function has to provide a default constructor\n-29 ************************************************************************/\n-30\n-31 // External Forward Declarations\n-32 // -----------------------------\n-33\n-34 template< class GridImp, class IntersectionImp >\n-35 class Intersection;\n-36\n-37\n-38\n-39 // DGFCoordFunction\n-40 // ----------------\n-41\n-42 template< int dimD, int dimR >\n-_\b4_\b3 class _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-44 : public _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< double, dimD, dimR, DGFCoordFunction<\n-dimD, dimR > >\n-45 {\n-46 typedef _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b> _\bT_\bh_\bi_\bs;\n-47 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bo_\bu_\bb_\bl_\be_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bT_\bh_\bi_\bs_\b _\b> _\bB_\ba_\bs_\be;\n-48\n-49 public:\n-_\b5_\b0 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-_\b5_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-52\n-_\b5_\b3 typedef _\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn;\n-54\n-_\b5_\b5 _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn *expression )\n-56 : expression_( expression )\n-57 {}\n-58\n-_\b5_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n-60 {\n-61 std::vector< double > vx( dimD );\n-62 std::vector< double > vy;\n-63 for( int i = 0; i < dimD; ++i )\n-64 vx[ i ] = x[ i ];\n-65 expression_->_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( vx, vy );\n-66 assert( vy.size() == size_t( dimR ) );\n-67 for( int i = 0; i < dimR; ++i )\n-68 y[ i ] = vy[ i ];\n-69 }\n-70\n-71 private:\n-72 const _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn *expression_;\n-73 };\n-74\n-75\n-76\n-77 // DGFCoordFunctionFactory\n-78 // -----------------------\n-79\n-80 template< class HostGrid, class CoordFunction,\n-81 bool discrete = GeoGrid::isDiscreteCoordFunctionInterface< typename\n-CoordFunction::Interface >::value >\n-_\b8_\b2 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-83\n-84\n-85 template< class HostGrid, class CoordFunction >\n-_\b8_\b6 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by< HostGrid, CoordFunction, false >\n-87 {\n-_\b8_\b8 static CoordFunction *_\bc_\br_\be_\ba_\bt_\be ( std::istream &, const HostGrid & )\n-89 {\n-90 return new CoordFunction;\n-91 }\n-92 };\n-93\n-94\n-95 template< class HostGrid, class CoordFunction >\n-_\b9_\b6 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by< HostGrid, CoordFunction, true >\n-97 {\n-_\b9_\b8 static CoordFunction *_\bc_\br_\be_\ba_\bt_\be ( std::istream &, const HostGrid &hostGrid )\n-99 {\n-100 return new CoordFunction( hostGrid );\n-101 }\n-102 };\n-103\n-104\n-105 template< class HostGrid, int dimD, int dimR >\n-_\b1_\b0_\b6 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by< HostGrid, _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< dimD, dimR >,\n-false >\n-107 {\n-_\b1_\b0_\b8 typedef _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b> _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn;\n-109\n-_\b1_\b1_\b0 static _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn *_\bc_\br_\be_\ba_\bt_\be ( std::istream &input, const HostGrid\n-&hostGrid )\n-111 {\n-112 _\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk projectionBlock( input, dimR );\n-113 const typename _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn *expression =\n-projectionBlock._\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn( \"coordfunction\" );\n-114 if( expression == 0 )\n-115 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"no coordfunction specified in DGF file.\" );\n-116 return new _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn( expression );\n-117 }\n-118 };\n-119\n-120\n-121\n-122 // DGFGridFactory for GeometryGrid\n-123 // -------------------------------\n-124\n-125 template< class HostGrid, class CoordFunction, class Allocator >\n-_\b1_\b2_\b6 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd< HostGrid, CoordFunction, Allocator > >\n-127 {\n-_\b1_\b2_\b8 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b> _\bG_\br_\bi_\bd;\n-129\n-_\b1_\b3_\b0 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b1_\b3_\b1 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br;\n-_\b1_\b3_\b2 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<0>::Entity _\bE_\bl_\be_\bm_\be_\bn_\bt;\n-_\b1_\b3_\b3 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim::Entity _\bV_\be_\br_\bt_\be_\bx;\n-134\n-_\b1_\b3_\b5 typedef _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>\n-_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-136\n-_\b1_\b3_\b7 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n-138 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br comm = MPIHelper::getCommunicator() )\n-139 : dgfHostFactory_( input, comm ),\n-140 grid_( 0 )\n-141 {\n-142 auto hostGrid = std::shared_ptr(dgfHostFactory_.grid());\n-143 assert( hostGrid != 0 );\n-144 auto coordFunction = std::shared_ptr(CoordFunctionFactory::\n-create( input, *hostGrid ));\n-145 grid_ = new _\bG_\br_\bi_\bd( hostGrid, coordFunction );\n-146 }\n-147\n-_\b1_\b4_\b8 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n-149 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br comm = MPIHelper::getCommunicator() )\n-150 : dgfHostFactory_( filename, comm ),\n-151 grid_( 0 )\n-152 {\n-153 auto hostGrid = std::shared_ptr(dgfHostFactory_.grid());\n-154 assert( hostGrid != 0 );\n-155 std::ifstream input( filename.c_str() );\n-156 auto coordFunction = std::shared_ptr(CoordFunctionFactory::\n-create( input, *hostGrid ));\n-157 grid_ = new _\bG_\br_\bi_\bd( hostGrid, coordFunction );\n-158 }\n-159\n-_\b1_\b6_\b0 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd () const\n-161 {\n-162 return grid_;\n-163 }\n-164\n-165 template< class Intersection >\n-_\b1_\b6_\b6 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection ) const\n-167 {\n-168 return dgfHostFactory_.wasInserted( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n-_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn( intersection ) );\n-169 }\n-170\n-171 template< class Intersection >\n-_\b1_\b7_\b2 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection ) const\n-173 {\n-174 return dgfHostFactory_.boundaryId( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-( intersection ) );\n-175 }\n-176\n-177 template< int codim >\n-_\b1_\b7_\b8 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-179 {\n-180 return dgfHostFactory_.template numParameters< codim >();\n-181 }\n-182\n-183 // return true if boundary parameters found\n-_\b1_\b8_\b4 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-185 {\n-186 return dgfHostFactory_.haveBoundaryParameters();\n-187 }\n-188\n-189 template< class GG, class II >\n-190 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n-_\b1_\b9_\b1 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection )\n-const\n-192 {\n-193 return dgfHostFactory_.boundaryParameter( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n-_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn( intersection ) );\n-194 }\n-195\n-196 template< class Entity >\n-_\b1_\b9_\b7 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-198 {\n-199 return dgfHostFactory_.parameter( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-( entity ) );\n-200 }\n-201\n-202 private:\n-203 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b> dgfHostFactory_;\n-204 _\bG_\br_\bi_\bd *grid_;\n-205 };\n-206\n-207\n-208\n-209 // DGFGridInfo for GeometryGrid\n-210 // ----------------------------\n-211\n-212 template< class HostGrid, class CoordFunction, class Allocator >\n-_\b2_\b1_\b3 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd< HostGrid, CoordFunction, Allocator > >\n-214 {\n-_\b2_\b1_\b5 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf ()\n-216 {\n-217 return _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf();\n-218 }\n-219\n-_\b2_\b2_\b0 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt ()\n-221 {\n-222 return -1.0;\n-223 }\n-224 };\n-225\n-226}\n-227\n-228#endif // #ifndef DUNE_DGFGEOGRID_HH\n-_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b._\bh_\bh\n-_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh\n+26 template< class GridView >\n+_\b2_\b7 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br :\n+28 public _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+29 {\n+30 public:\n+_\b4_\b2 _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br ( std::shared_ptr<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> > _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n+43 const std::string& name )\n+44 : _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>(_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n+45 name,\n+46 \"\",\n+47 \"\",\n+48 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().rank(),\n+49 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().size())\n+50 {}\n+51\n+_\b6_\b9 _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br ( std::shared_ptr<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> > _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n+70 const std::string& name,\n+71 const std::string& path,\n+72 const std::string& extendpath )\n+73 : _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>(_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n+74 name,\n+75 path,\n+76 extendpath,\n+77 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().rank(),\n+78 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().size())\n+79 {}\n+80\n+_\b8_\b7 explicit _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br ( const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView,\n+88 const std::string& name,\n+89 const std::string& path,\n+90 const std::string& extendpath,\n+91 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be dm = _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg )\n+92 : _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>(_\bs_\bt_\bd::make_shared<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw> >\n+(gridView,dm),\n+93 name,path,extendpath,\n+94 gridView.comm().rank(), gridView.comm().size())\n+95 {}\n+96 };\n+97\n+98} // end namespace Dune\n+99\n+100#endif\n+_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\bb_\ba_\bs_\be_\b._\bh_\bh\n+_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Provides subsampled file i/o for the visualization toolkit.\n+_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Provides file i/o for the visualization toolkit.\n+_\bs_\bt_\bd\n+STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Derive an implementation of an analytical coordinate function from this class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 coordfunction.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n-grid wrapper replacing the geometries\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-traits structure containing types for a codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:611\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n-provides access to host grid objects from GeometryGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/blocks/projection.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-ExpressionPointer function(const std::string &name) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/blocks/projection.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/blocks/projection.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-virtual void evaluate(const Vector &argument, Vector &result) const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-exception class for IO errors in the DGF parser\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 dgfgeogrid.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, RangeVector &y) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-dgf::ProjectionBlock::Expression Expression\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-DGFCoordFunction(const Expression *expression)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Base::RangeVector RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static CoordFunction * create(std::istream &, const HostGrid &)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static CoordFunction * create(std::istream &, const HostGrid &hostGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b,_\b _\bf_\ba_\bl_\bs_\be\n-_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b,_\b _\bf_\ba_\bl_\bs_\be\n-_\b>_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-DGFCoordFunction< dimD, dimR > CoordFunction\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bV_\be_\br_\bt_\be_\bx\n-Grid::template Codim< dimension >::Entity Vertex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:172\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br\n-MPIHelper::MPICommunicator MPICommunicator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection<\n-GG, II > &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(std::istream &input, MPICommunicator comm=MPIHelper::\n-getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Grid::template Codim< 0 >::Entity Element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bg_\br_\bi_\bd\n-Grid * grid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFCoordFunctionFactory< HostGrid, CoordFunction > CoordFunctionFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bG_\br_\bi_\bd\n-GeometryGrid< HostGrid, CoordFunction, Allocator > Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Entity &entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(const std::string &filename, MPICommunicator comm=MPIHelper::\n-getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n-bool wasInserted(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:184\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n-static double refineWeight()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n-static int refineStepsForHalf()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:215\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n-Some simple static information for a given GridType.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n-static int refineStepsForHalf()\n-number of globalRefine steps needed to refuce h by 0.5\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-std::string type\n-type of additional boundary parameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n-_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be\n+DataMode\n+Whether to produce conforming or non-conforming output.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+@ conforming\n+Output conforming data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid view abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n+Writer for the ouput of grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n+VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const\n+std::string &name, const std::string &path, const std::string &extendpath)\n+Constructor with a given VTKWriter or SubsamplingVTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n+VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const\n+std::string &name)\n+Constructor with a given VTKWriter or SubsamplingVTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n+VTKSequenceWriter(const GridView &gridView, const std::string &name, const\n+std::string &path, const std::string &extendpath, VTK::DataMode dm=VTK::\n+conforming)\n+Constructor creating its own VTKWriter object.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+Base class to write pvd-files which contains a list of all collected vtk-files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br\n+const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+Writer for the ouput of grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00776.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00776.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfwriter.hh File Reference\n+dune-grid: corneriterator.hh File Reference\n \n \n \n \n \n \n \n@@ -65,59 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfwriter.hh File Reference
    \n+
    corneriterator.hh File Reference
    \n
    \n
    \n-\n-

    write a GridView to a DGF file \n-More...

    \n-
    #include <cassert>
    \n-#include <cstddef>
    \n-#include <algorithm>
    \n-#include <fstream>
    \n-#include <string>
    \n-#include <type_traits>
    \n-#include <utility>
    \n-#include <vector>
    \n-#include <dune/common/rangeutilities.hh>
    \n-#include <dune/common/typeutilities.hh>
    \n+
    #include <iterator>
    \n+#include <dune/common/iteratorfacades.hh>
    \n+#include <dune/common/typetraits.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n-#include <dune/grid/common/rangegenerators.hh>
    \n+#include <dune/grid/io/file/vtk/corner.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::DGFWriter< GV >
     write a GridView to a DGF file More...
    class  Dune::VTK::CornerIterator< CellIterator >
     iterate over the corners of some cell range More...
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n-

    Detailed Description

    \n-

    write a GridView to a DGF file

    \n-
    Author
    Martin Nolte
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,40 +2,28 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfwriter.hh File Reference\n-write a GridView to a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n+corneriterator.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\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:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>\n-\u00a0 write a _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw to a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+\u00a0 iterate over the corners of some cell 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 Include standard header files.\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-write a GridView to a DGF file\n- Author\n- Martin Nolte\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00776_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00776_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfwriter.hh Source File\n+dune-grid: corneriterator.hh Source File\n \n \n \n \n \n \n \n@@ -70,466 +70,170 @@\n \n \n \n \n \n \n \n
    \n-
    dgfwriter.hh
    \n+
    corneriterator.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH
    \n-
    6#define DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH
    \n-
    7
    \n-
    13#include <cassert>
    \n-
    14#include <cstddef>
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH
    \n+
    8
    \n+
    9#include <iterator>
    \n+
    10
    \n+
    11#include <dune/common/iteratorfacades.hh>
    \n+
    12#include <dune/common/typetraits.hh>
    \n+
    13
    \n+
    14#include <dune/geometry/referenceelements.hh>
    \n
    15
    \n-
    16#include <algorithm>
    \n-
    17#include <fstream>
    \n-
    18#include <string>
    \n-
    19#include <type_traits>
    \n-
    20#include <utility>
    \n-
    21#include <vector>
    \n+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n
    22
    \n-
    23#include <dune/common/rangeutilities.hh>
    \n-
    24#include <dune/common/typeutilities.hh>
    \n-
    25
    \n-
    26#include <dune/geometry/referenceelements.hh>
    \n-
    27#include <dune/geometry/type.hh>
    \n-
    28
    \n-\n-\n-
    31
    \n-
    32namespace Dune
    \n-
    33{
    \n-
    34
    \n-
    44 template< class GV >
    \n-
    \n-\n-
    46 {
    \n-
    47 typedef DGFWriter< GV > This;
    \n-
    48
    \n-
    49 public:
    \n-
    51 typedef GV GridView;
    \n-
    53 typedef typename GridView::Grid Grid;
    \n-
    54
    \n-
    56 static const int dimGrid = GridView::dimension;
    \n-
    57
    \n-
    58 private:
    \n-
    59 typedef typename GridView::IndexSet IndexSet;
    \n-
    60 typedef typename GridView::template Codim< 0 >::Entity Element;
    \n-
    61 typedef typename GridView::Intersection Intersection;
    \n-
    62
    \n-
    63 typedef typename Element::EntitySeed ElementSeed;
    \n-
    64
    \n-
    65 typedef typename IndexSet::IndexType Index;
    \n-
    66
    \n-
    67 public:
    \n-
    \n-
    72 DGFWriter ( const GridView &gridView )
    \n-
    73 : gridView_( gridView )
    \n-
    74 {}
    \n-
    \n-
    75
    \n-
    85 template< class BoundaryData >
    \n-
    86 void write ( std::ostream &gridout, const std::vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams = std::stringstream() ) const;
    \n-
    87
    \n-
    96 template< class BoundaryData >
    \n-
    97 void write ( std::ostream &gridout, BoundaryData &&boundaryData, const std::stringstream &addParams = std::stringstream() ) const;
    \n+
    23 namespace VTK {
    \n+
    24
    \n+
    26
    \n+
    30 template<typename CellIterator>
    \n+
    \n+\n+
    32 : public ForwardIteratorFacade
    \n+
    33 < CornerIterator<CellIterator>,
    \n+
    34 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n+
    35 CellIterator>::value_type>::type>,
    \n+
    36 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n+
    37 CellIterator>::value_type>::type>&,
    \n+
    38 typename std::iterator_traits<CellIterator>::difference_type>
    \n+
    39 {
    \n+
    40 public:
    \n+
    41 // reiterate the facades typedefs here
    \n+\n+
    43 typedef VTK::Corner<typename std::remove_const<typename std::iterator_traits<
    \n+
    44 CellIterator>::value_type>::type> Corner;
    \n+
    45 typedef const Corner Value;
    \n+
    46 typedef Value& Reference;
    \n+
    47 typedef typename std::iterator_traits<CellIterator>::difference_type
    \n+\n+
    49
    \n+
    50 typedef typename std::iterator_traits<CellIterator>::value_type::Geometry::ctype
    \n+\n+
    52 static const unsigned dim = std::iterator_traits<CellIterator>::
    \n+
    53 value_type::mydimension;
    \n+
    54 typedef ReferenceElements<ctype, dim> Refelems;
    \n+
    55
    \n+
    56 private:
    \n+
    57 typedef ForwardIteratorFacade<DerivedType, Value, Reference,
    \n+
    58 DifferenceType> Facade;
    \n+
    59
    \n+
    60 CellIterator cellit;
    \n+
    61 CellIterator cellend;
    \n+
    62 Corner corner;
    \n+
    63
    \n+
    64 public:
    \n+
    \n+\n+
    66 return corner;
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    \n+
    69 bool isDereferencable() const {
    \n+
    70 return cellit != cellend;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    73 bool equals(const DerivedType& other) const {
    \n+
    74 bool mePassedTheEnd = !isDereferencable();
    \n+
    75 bool otherPassedTheEnd = !other.isDereferencable();
    \n+
    76 // both are passed the end => return true
    \n+
    77 if(mePassedTheEnd && otherPassedTheEnd) return true;
    \n+
    78 // one is passed the end => return false
    \n+
    79 if(mePassedTheEnd || otherPassedTheEnd) return false;
    \n+
    80 // none is passed the end, do their iterators and indices match?
    \n+
    81 return cellit == other.cellit &&
    \n+
    82 corner.duneIndex() == other.corner.duneIndex();
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    85 void increment() {
    \n+
    86 int index = corner.vtkIndex();
    \n+
    87 ++index;
    \n+
    88 if(index == Refelems::general(cellit->type()).size(dim)) {
    \n+
    89 ++cellit;
    \n+
    90 if(cellit != cellend) {
    \n+
    91 corner.cell(*cellit);
    \n+
    92 corner.vtkIndex(0);
    \n+
    93 }
    \n+
    94 }
    \n+
    95 else
    \n+
    96 corner.vtkIndex(index);
    \n+
    97 }
    \n+
    \n
    98
    \n-
    \n-
    107 void write ( std::ostream &gridout, const std::vector< Index > &newElemOrder, const std::stringstream &addParams = std::stringstream() ) const
    \n-
    108 {
    \n-
    109 write( gridout, newElemOrder, [] ( const Intersection &i ) -> int { return boundaryId( i ); }, addParams );
    \n-
    110 }
    \n-
    \n-
    111
    \n-
    \n-
    119 void write ( std::ostream &gridout, const std::stringstream &addParams = std::stringstream() ) const
    \n-
    120 {
    \n-
    121 write( gridout, [] ( const Intersection &i ) -> int { return boundaryId( i ); }, addParams );
    \n-
    122 }
    \n-
    \n-
    123
    \n-
    130 template< class... Args >
    \n-
    \n-
    131 auto write ( const std::string &fileName, Args &&... args ) const
    \n-
    132 -> std::void_t< decltype( this->write( std::declval< std::ostream & >(), std::declval< Args >()... ) ) >
    \n-
    133 {
    \n-
    134 std::ofstream gridout( fileName );
    \n-
    135 if( gridout )
    \n-
    136 write( gridout, std::forward< Args >( args )... );
    \n-
    137 else
    \n-
    138 std::cerr << "Couldn't open file `"<< fileName << "'!"<< std::endl;
    \n-
    139 }
    \n-
    \n-
    140
    \n-
    141 protected:
    \n-
    142 auto elementsSeeds ( const std::vector< Index > &newElemOrder ) const
    \n-
    143 -> std::vector< ElementSeed >;
    \n-
    144
    \n-
    145 void writeHeader ( std::ostream &gridout ) const;
    \n-
    146 void writeFooter ( std::ostream &gridout ) const;
    \n-
    147
    \n-
    148 auto writeVertices ( std::ostream &gridout ) const
    \n-
    149 -> std::vector< Index >;
    \n-
    150
    \n-
    151 void writeElement ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Element &element, const GeometryType &elementType ) const;
    \n-
    152
    \n-
    153 void writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const;
    \n-
    154 void writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;
    \n-
    155
    \n-
    156 void writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const;
    \n-
    157 void writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;
    \n-
    158
    \n-
    159 template< class... Args >
    \n-
    160 void writeElements ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Args &... args ) const;
    \n-
    161
    \n-
    162 private:
    \n-
    163 template< class I >
    \n-
    164 static auto boundaryId ( const I &i, PriorityTag< 1 > )
    \n-
    165 -> std::enable_if_t< std::is_convertible< std::decay_t< decltype( i.impl().boundaryId() ) >, int >::value, int >
    \n-
    166 {
    \n-
    167 return i.impl().boundaryId();
    \n-
    168 }
    \n-
    169
    \n-
    170 template< class I >
    \n-
    171 static int boundaryId ( const I &i, PriorityTag< 0 > )
    \n-
    172 {
    \n-
    173 return 1;
    \n-
    174 }
    \n-
    175
    \n-
    176 protected:
    \n-
    177 static int boundaryId ( const Intersection &i ) { return boundaryId( i, PriorityTag< 42 >() ); }
    \n-
    178
    \n-
    179 private:
    \n-
    180 static int boundaryId ( const Intersection &, int bndId ) { return bndId; }
    \n-
    181 static int boundaryId ( const Intersection &i, const std::string & ) { return boundaryId( i ); }
    \n-
    182 static int boundaryId ( const Intersection &i, const std::pair< int, std::string > &data ) { return boundrayId( i, data.first ); }
    \n-
    183
    \n-
    184 static void appendBoundaryData ( std::ostream &gridout, int ) { gridout << std::endl; }
    \n-
    185 static void appendBoundaryData ( std::ostream &gridout, std::pair< int, std::string > &data ) { appendBoundaryData( gridout, data.second ); }
    \n-
    186 static void appendBoundaryData ( std::ostream &gridout, const std::string &s ) { gridout << " : " << s << std::endl; }
    \n-
    187
    \n-
    188 protected:
    \n-
    189 template< class BoundaryData >
    \n-
    190 void writeBoundaries ( std::ostream &gridout, const std::vector< Index > &dgfIndices, BoundaryData &&boundaryData ) const;
    \n-
    191
    \n-
    \n-
    192 void writeBoundaries ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const
    \n-
    193 {
    \n-
    194 writeBoundaries( gridout, dgfIndices, [] ( const Intersection &i ) -> int { return boundaryId( i ); } );
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    197 protected:
    \n-\n-
    199 };
    \n-
    \n-
    200
    \n-
    201
    \n-
    202 template< class GV >
    \n-
    \n-
    203 inline auto DGFWriter< GV >::elementsSeeds ( const std::vector< Index > &newElemOrder ) const
    \n-
    204 -> std::vector< ElementSeed >
    \n-
    205 {
    \n-
    206 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    207
    \n-
    208 const std::size_t orderSize = newElemOrder.size() ;
    \n-
    209 std::vector< ElementSeed > elementSeeds( orderSize );
    \n-
    210
    \n-
    211 for( const Element &element : elements( gridView_ ) )
    \n-
    212 {
    \n-
    213 assert( newElemOrder[ indexSet.index( element ) ] < orderSize );
    \n-
    214 elementSeeds[ newElemOrder[ indexSet.index( element ) ] ] = element.seed();
    \n-
    215 }
    \n-
    216
    \n-
    217 return elementSeeds;
    \n-
    218 }
    \n-
    \n-
    219
    \n-
    220
    \n-
    221 template< class GV >
    \n-
    \n-
    222 inline void DGFWriter< GV >::writeHeader ( std::ostream &gridout ) const
    \n-
    223 {
    \n-
    224 // set the stream to full double precision
    \n-
    225 gridout.setf( std::ios_base::scientific, std::ios_base::floatfield );
    \n-
    226 gridout.precision( 16 );
    \n-
    227
    \n-
    228 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    229
    \n-
    230 // write DGF header
    \n-
    231 gridout << "DGF" << std::endl;
    \n-
    232 gridout << "%" << " Elements = " << indexSet.size( 0 ) << " | Vertices = " << indexSet.size( dimGrid ) << std::endl;
    \n-
    233 }
    \n-
    \n-
    234
    \n-
    235
    \n-
    236 template< class GV >
    \n-
    \n-
    237 inline void DGFWriter< GV >::writeFooter ( std::ostream &gridout ) const
    \n-
    238 {
    \n-
    239 gridout << std::endl << "#" << std::endl;
    \n-
    240 }
    \n-
    \n-
    241
    \n-
    242
    \n-
    243 template< class GV >
    \n-
    \n-
    244 inline auto DGFWriter< GV >::writeVertices ( std::ostream &gridout ) const
    \n-
    245 -> std::vector< Index >
    \n-
    246 {
    \n-
    247 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    248
    \n-
    249 const Index vxSize = indexSet.size( dimGrid );
    \n-
    250 std::vector< Index > dgfIndices( vxSize, vxSize );
    \n-
    251
    \n-
    252 // write all vertices into the "vertex" block
    \n-
    253 gridout << std::endl << "VERTEX" << std::endl;
    \n-
    254 Index vertexCount = 0;
    \n-
    255 for( const Element &element : elements( gridView_ ) )
    \n-
    256 {
    \n-
    257 for( auto i : range( element.subEntities( dimGrid ) ) )
    \n-
    258 {
    \n-
    259 const Index vxIndex = indexSet.subIndex( element, i, dimGrid );
    \n-
    260 assert( vxIndex < vxSize );
    \n-
    261 if( dgfIndices[ vxIndex ] == vxSize )
    \n-
    262 {
    \n-
    263 dgfIndices[ vxIndex ] = vertexCount++;
    \n-
    264 gridout << element.geometry().corner( i ) << std::endl;
    \n-
    265 }
    \n-
    266 }
    \n-
    267 }
    \n-
    268 gridout << "#" << std::endl;
    \n-
    269
    \n-
    270 if( vertexCount != vxSize )
    \n-
    271 DUNE_THROW( GridError, "IndexSet reports wrong number of vertices." );
    \n-
    272 return dgfIndices;
    \n-
    273 }
    \n-
    \n-
    274
    \n-
    275
    \n-
    276 template< class GV >
    \n-
    \n-
    277 inline void DGFWriter< GV >::writeElement ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Element &element, const GeometryType &elementType ) const
    \n-
    278 {
    \n-
    279 // if element's type is not the same as the type to write the return
    \n-
    280 if( element.type() != elementType )
    \n-
    281 return;
    \n-
    282
    \n-
    283 // write vertex numbers of the element
    \n-
    284 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    285 for( auto i : range( element.subEntities( Element::dimension ) ) )
    \n-
    286 gridout << (i > 0 ? " " : "") << dgfIndices[ indexSet.subIndex( element, i, dimGrid ) ];
    \n-
    287 gridout << std::endl;
    \n-
    288 }
    \n-
    \n-
    289
    \n-
    290
    \n-
    291 template< class GV >
    \n-
    \n-
    292 inline void DGFWriter< GV >::writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const
    \n-
    293 {
    \n-
    294 // write all simplices to the "simplex" block
    \n-
    295 gridout << std::endl << "SIMPLEX" << std::endl;
    \n-
    296
    \n-
    297 // write all simplex elements
    \n-
    298 for( const Element &element : elements( gridView_ ) )
    \n-
    299 writeElement( gridout, dgfIndices, element, GeometryTypes::simplex( dimGrid ) );
    \n-
    300
    \n-
    301 // write end marker for block
    \n-
    302 gridout << "#" << std::endl;
    \n-
    303 }
    \n-
    \n-
    304
    \n-
    305
    \n-
    306 template< class GV >
    \n-
    \n-
    307 inline void DGFWriter< GV >::writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const
    \n-
    308 {
    \n-
    309 // write all simplices to the "simplex" block
    \n-
    310 gridout << std::endl << "SIMPLEX" << std::endl;
    \n-
    311
    \n-
    312 // write all simplex elements
    \n-
    313 for( const ElementSeed &seed : elementSeeds )
    \n-
    314 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ), GeometryTypes::simplex( dimGrid ) );
    \n-
    315
    \n-
    316 // write end marker for block
    \n-
    317 gridout << "#" << std::endl;
    \n-
    318 }
    \n-
    \n-
    319
    \n-
    320
    \n-
    321 template< class GV >
    \n-
    \n-
    322 inline void DGFWriter< GV >::writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const
    \n-
    323 {
    \n-
    324 // write all cubes to the "cube" block
    \n-
    325 gridout << std::endl << "CUBE" << std::endl;
    \n-
    326
    \n-
    327 // write all cube elements
    \n-
    328 for( const Element &element : elements( gridView_ ) )
    \n-
    329 writeElement( gridout, dgfIndices, element, GeometryTypes::cube( dimGrid ) );
    \n-
    330
    \n-
    331 // write end marker for block
    \n-
    332 gridout << "#" << std::endl;
    \n-
    333 }
    \n-
    \n-
    334
    \n-
    335
    \n-
    336 template< class GV >
    \n-
    \n-
    337 inline void DGFWriter< GV >::writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const
    \n-
    338 {
    \n-
    339 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    340
    \n-
    341 // write all cubes to the "cube" block
    \n-
    342 gridout << std::endl << "CUBE" << std::endl;
    \n-
    343
    \n-
    344 // write all cube elements
    \n-
    345 for( const ElementSeed &seed : elementSeeds )
    \n-
    346 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ), GeometryTypes::cube( dimGrid ) );
    \n-
    347
    \n-
    348 // write end marker for block
    \n-
    349 gridout << "#" << std::endl;
    \n-
    350 }
    \n-
    \n-
    351
    \n-
    352
    \n-
    353 template< class GV >
    \n-
    354 template< class... Args >
    \n-
    \n-
    355 inline void DGFWriter< GV >::writeElements ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Args &... args ) const
    \n-
    356 {
    \n-
    357 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    358
    \n-
    359 if( (dimGrid > 1) && (indexSet.size( GeometryTypes::simplex( dimGrid ) ) > 0) )
    \n-
    360 writeSimplices( gridout, dgfIndices, args... );
    \n-
    361
    \n-
    362 if( indexSet.size( GeometryTypes::cube( dimGrid ) ) > 0 )
    \n-
    363 writeCubes( gridout, dgfIndices, args... );
    \n-
    364 }
    \n-
    \n-
    365
    \n-
    366
    \n-
    367 template< class GV >
    \n-
    368 template< class BoundaryData >
    \n-
    \n-
    369 inline void DGFWriter< GV >::writeBoundaries ( std::ostream &gridout, const std::vector< Index > &dgfIndices, BoundaryData &&boundaryData ) const
    \n-
    370 {
    \n-
    371 using std::max;
    \n-
    372
    \n-
    373 const IndexSet &indexSet = gridView_.indexSet();
    \n-
    374
    \n-
    375 // write all boundaries to the "boundarysegments" block
    \n-
    376 gridout << std::endl << "BOUNDARYSEGMENTS" << std::endl;
    \n-
    377
    \n-
    378 for( const Element &element : elements( gridView_ ) )
    \n-
    379 {
    \n-
    380 if( !element.hasBoundaryIntersections() )
    \n-
    381 continue;
    \n-
    382
    \n-
    383 const auto &refElement = ReferenceElements< typename Grid::ctype, dimGrid >::general( element.type() );
    \n-
    384 for( const Intersection &intersection : intersections( gridView_, element ) )
    \n-
    385 {
    \n-
    386 if( !intersection.boundary() )
    \n-
    387 continue;
    \n-
    388
    \n-
    389 const auto data = boundaryData( intersection );
    \n-
    390 const int bndId = max( boundaryId( intersection, data ), 1 );
    \n-
    391
    \n-
    392 const int faceNumber = intersection.indexInInside();
    \n-
    393 const unsigned int faceSize = refElement.size( faceNumber, 1, dimGrid );
    \n-
    394 gridout << bndId << " ";
    \n-
    395 for( auto i : range( faceSize ) )
    \n-
    396 {
    \n-
    397 const int j = refElement.subEntity( faceNumber, 1, i, dimGrid );
    \n-
    398 gridout << " " << dgfIndices[ indexSet.subIndex( element, j, dimGrid ) ];
    \n-
    399 }
    \n-
    400 appendBoundaryData( gridout, data );
    \n-
    401 }
    \n-
    402 }
    \n-
    403 gridout << "#" << std::endl;
    \n-
    404 }
    \n-
    \n-
    405
    \n-
    406
    \n-
    407 template< class GV >
    \n-
    408 template< class BoundaryData >
    \n-
    \n-
    409 inline void DGFWriter< GV >::write ( std::ostream &gridout, const std::vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams ) const
    \n-
    410 {
    \n-
    411 writeHeader( gridout );
    \n-
    412 auto dgfIndices = writeVertices( gridout );
    \n-
    413 writeElements( gridout, dgfIndices, elementSeeds( newElemOrder ) );
    \n-
    414 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >( boundaryData ) );
    \n-
    415 gridout << addParams.str();
    \n-
    416 writeFooter( gridout );
    \n-
    417 }
    \n-
    \n-
    418
    \n-
    419
    \n-
    420 template< class GV >
    \n-
    421 template< class BoundaryData >
    \n-
    \n-
    422 inline void DGFWriter< GV >::write ( std::ostream &gridout, BoundaryData &&boundaryData, const std::stringstream &addParams ) const
    \n-
    423 {
    \n-
    424 writeHeader( gridout );
    \n-
    425 auto dgfIndices = writeVertices( gridout );
    \n-
    426 writeElements( gridout, dgfIndices );
    \n-
    427 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >( boundaryData ) );
    \n-
    428 gridout << addParams.str();
    \n-
    429 writeFooter( gridout );
    \n-
    430 }
    \n-
    \n-
    431
    \n-
    432} // namespace Dune
    \n-
    433
    \n-
    434#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH
    \n-\n-
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n-
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n-
    Traits::Intersection Intersection
    type of the intersection
    Definition common/gridview.hh:89
    \n+
    100
    \n+
    \n+
    105 CornerIterator(const CellIterator& cellit_, const CellIterator& cellend_,
    \n+
    106 unsigned vtkIndex = 0)
    \n+
    107 : cellit(cellit_), cellend(cellend_)
    \n+
    108 {
    \n+
    109 if(cellit != cellend) {
    \n+
    110 corner.cell(*cellit);
    \n+
    111 corner.vtkIndex(vtkIndex);
    \n+
    112 }
    \n+
    113 }
    \n+
    \n+
    115
    \n+
    \n+
    118 CornerIterator(const CellIterator& cellend_)
    \n+
    119 : cellit(cellend_), cellend(cellend_)
    \n+
    120 { }
    \n+
    \n+
    121 };
    \n+
    \n+
    122
    \n+
    123 } // namespace VTK
    \n+
    124
    \n+
    126
    \n+
    127} // namespace Dune
    \n+
    128
    \n+
    129#endif // DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    IndexTypeImp IndexType
    The type used for the indices.
    Definition indexidset.hh:92
    \n-
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n-
    write a GridView to a DGF file
    Definition dgfwriter.hh:46
    \n-
    static const int dimGrid
    dimension of the grid
    Definition dgfwriter.hh:56
    \n-
    DGFWriter(const GridView &gridView)
    constructor
    Definition dgfwriter.hh:72
    \n-
    void write(std::ostream &gridout, const std::stringstream &addParams=std::stringstream()) const
    write the GridView into a std::ostream
    Definition dgfwriter.hh:119
    \n-
    auto write(const std::string &fileName, Args &&... args) const -> std::void_t< decltype(this->write(std::declval< std::ostream & >(), std::declval< Args >()...)) >
    write the GridView to a file
    Definition dgfwriter.hh:131
    \n-
    void writeBoundaries(std::ostream &gridout, const std::vector< Index > &dgfIndices, BoundaryData &&boundaryData) const
    Definition dgfwriter.hh:369
    \n-
    static int boundaryId(const Intersection &i)
    Definition dgfwriter.hh:177
    \n-
    void write(std::ostream &gridout, const std::vector< Index > &newElemOrder, const std::stringstream &addParams=std::stringstream()) const
    write the GridView into a std::ostream
    Definition dgfwriter.hh:107
    \n-
    void write(std::ostream &gridout, const std::vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams=std::stringstream()) const
    write the GridView into a std::ostream
    Definition dgfwriter.hh:409
    \n-
    GridView gridView_
    Definition dgfwriter.hh:198
    \n-
    void writeElement(std::ostream &gridout, const std::vector< Index > &dgfIndices, const Element &element, const GeometryType &elementType) const
    Definition dgfwriter.hh:277
    \n-
    GV GridView
    type of grid view
    Definition dgfwriter.hh:51
    \n-
    void writeFooter(std::ostream &gridout) const
    Definition dgfwriter.hh:237
    \n-
    GridView::Grid Grid
    type of underlying hierarchical grid
    Definition dgfwriter.hh:53
    \n-
    auto writeVertices(std::ostream &gridout) const -> std::vector< Index >
    Definition dgfwriter.hh:244
    \n-
    void writeElements(std::ostream &gridout, const std::vector< Index > &dgfIndices, const Args &... args) const
    Definition dgfwriter.hh:355
    \n-
    void writeBoundaries(std::ostream &gridout, const std::vector< Index > &dgfIndices) const
    Definition dgfwriter.hh:192
    \n-
    void writeCubes(std::ostream &gridout, const std::vector< Index > &dgfIndices) const
    Definition dgfwriter.hh:322
    \n-
    void writeSimplices(std::ostream &gridout, const std::vector< Index > &dgfIndices) const
    Definition dgfwriter.hh:292
    \n-
    void writeHeader(std::ostream &gridout) const
    Definition dgfwriter.hh:222
    \n-
    auto elementsSeeds(const std::vector< Index > &newElemOrder) const -> std::vector< ElementSeed >
    Definition dgfwriter.hh:203
    \n-
    Different resources needed by all grid implementations.
    \n+
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n+
    unsigned vtkIndex() const
    get the index of the corner within the cell in VTK-numbering
    Definition corner.hh:63
    \n+
    unsigned duneIndex() const
    get the index of the corner within the cell in Dune-numbering
    Definition corner.hh:55
    \n+
    const Cell & cell() const
    get reference to the cell
    Definition corner.hh:46
    \n+
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n+
    Value & Reference
    Definition corneriterator.hh:46
    \n+
    VTK::Corner< typename std::remove_const< typename std::iterator_traits< CellIterator >::value_type >::type > Corner
    Definition corneriterator.hh:44
    \n+
    void increment()
    Definition corneriterator.hh:85
    \n+
    Reference dereference() const
    Definition corneriterator.hh:65
    \n+
    std::iterator_traits< CellIterator >::difference_type DifferenceType
    Definition corneriterator.hh:48
    \n+
    static const unsigned dim
    Definition corneriterator.hh:52
    \n+
    ReferenceElements< ctype, dim > Refelems
    Definition corneriterator.hh:54
    \n+
    const Corner Value
    Definition corneriterator.hh:45
    \n+
    CornerIterator(const CellIterator &cellit_, const CellIterator &cellend_, unsigned vtkIndex=0)
    construct a CornerIterator
    Definition corneriterator.hh:105
    \n+
    CornerIterator(const CellIterator &cellend_)
    construct a CornerIterator
    Definition corneriterator.hh:118
    \n+
    bool equals(const DerivedType &other) const
    Definition corneriterator.hh:73
    \n+
    CornerIterator< CellIterator > DerivedType
    Definition corneriterator.hh:42
    \n+
    std::iterator_traits< CellIterator >::value_type::Geometry::ctype ctype
    Definition corneriterator.hh:51
    \n+
    bool isDereferencable() const
    Definition corneriterator.hh:69
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,558 +2,197 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-dgfwriter.hh\n+ * _\bv_\bt_\bk\n+corneriterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH\n-6#define DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH\n-7\n-13#include \n-14#include \n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH\n+7#define DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH\n+8\n+9#include \n+10\n+11#include \n+12#include \n+13\n+14#include \n 15\n-16#include \n-17#include \n-18#include \n-19#include \n-20#include \n-21#include \n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n 22\n-23#include \n-24#include \n-25\n-26#include \n-27#include \n-28\n-29#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-31\n-32namespace _\bD_\bu_\bn_\be\n-33{\n-34\n-44 template< class GV >\n-_\b4_\b5 class _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br\n-46 {\n-47 typedef _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b> _\bT_\bh_\bi_\bs;\n-48\n-49 public:\n-_\b5_\b1 typedef GV _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n-_\b5_\b3 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n-54\n-_\b5_\b6 static const int _\bd_\bi_\bm_\bG_\br_\bi_\bd = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-57\n-58 private:\n-59 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt IndexSet;\n-60 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Element;\n-61 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn Intersection;\n-62\n-63 typedef typename Element::EntitySeed ElementSeed;\n-64\n-65 typedef typename _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be Index;\n-66\n-67 public:\n-_\b7_\b2 _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br ( const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView )\n-73 : _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_( gridView )\n-74 {}\n-75\n-85 template< class BoundaryData >\n-86 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::vector< Index >\n-&newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams\n-= std::stringstream() ) const;\n-87\n-96 template< class BoundaryData >\n-97 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, BoundaryData &&boundaryData, const std::\n-stringstream &addParams = std::stringstream() ) const;\n+23 namespace VTK {\n+24\n+26\n+30 template\n+_\b3_\b1 class _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+32 : public ForwardIteratorFacade\n+33 < CornerIterator,\n+34 const Corner::value_type>::type>,\n+36 const Corner::value_type>::type>&,\n+38 typename std::iterator_traits::difference_type>\n+39 {\n+40 public:\n+41 // reiterate the facades typedefs here\n+_\b4_\b2 typedef _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be;\n+43 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br::value_type>::type> _\bC_\bo_\br_\bn_\be_\br;\n+_\b4_\b5 typedef const _\bC_\bo_\br_\bn_\be_\br _\bV_\ba_\bl_\bu_\be;\n+_\b4_\b6 typedef _\bV_\ba_\bl_\bu_\be& _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+47 typedef typename std::iterator_traits::difference_type\n+_\b4_\b8 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be;\n+49\n+50 typedef typename std::iterator_traits::value_type::Geometry::\n+ctype\n+_\b5_\b1 _\bc_\bt_\by_\bp_\be;\n+_\b5_\b2 static const unsigned _\bd_\bi_\bm = std::iterator_traits::\n+53 value_type::mydimension;\n+_\b5_\b4 typedef ReferenceElements _\bR_\be_\bf_\be_\bl_\be_\bm_\bs;\n+55\n+56 private:\n+57 typedef ForwardIteratorFacade<_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be, _\bV_\ba_\bl_\bu_\be, _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be,\n+58 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be> Facade;\n+59\n+60 CellIterator cellit;\n+61 CellIterator cellend;\n+62 _\bC_\bo_\br_\bn_\be_\br corner;\n+63\n+64 public:\n+_\b6_\b5 _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n+66 return corner;\n+67 }\n+68\n+_\b6_\b9 bool _\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be() const {\n+70 return cellit != cellend;\n+71 }\n+72\n+_\b7_\b3 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be& other) const {\n+74 bool mePassedTheEnd = !_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be();\n+75 bool otherPassedTheEnd = !other._\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be();\n+76 // both are passed the end => return true\n+77 if(mePassedTheEnd && otherPassedTheEnd) return true;\n+78 // one is passed the end => return false\n+79 if(mePassedTheEnd || otherPassedTheEnd) return false;\n+80 // none is passed the end, do their iterators and indices match?\n+81 return cellit == other.cellit &&\n+82 corner._\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx() == other.corner._\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx();\n+83 }\n+84\n+_\b8_\b5 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n+86 int index = corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx();\n+87 ++index;\n+88 if(index == Refelems::general(cellit->type()).size(_\bd_\bi_\bm)) {\n+89 ++cellit;\n+90 if(cellit != cellend) {\n+91 corner._\bc_\be_\bl_\bl(*cellit);\n+92 corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(0);\n+93 }\n+94 }\n+95 else\n+96 corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(index);\n+97 }\n 98\n-_\b1_\b0_\b7 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::vector< Index >\n-&newElemOrder, const std::stringstream &addParams = std::stringstream() ) const\n+100\n+_\b1_\b0_\b5 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellit_, const CellIterator& cellend_,\n+106 unsigned vtkIndex = 0)\n+107 : cellit(cellit_), cellend(cellend_)\n 108 {\n-109 _\bw_\br_\bi_\bt_\be( gridout, newElemOrder, [] ( const Intersection &i ) -> int { return\n-boundaryId( i ); }, addParams );\n-110 }\n-111\n-_\b1_\b1_\b9 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::stringstream &addParams =\n-std::stringstream() ) const\n-120 {\n-121 _\bw_\br_\bi_\bt_\be( gridout, [] ( const Intersection &i ) -> int { return boundaryId( i\n-); }, addParams );\n-122 }\n-123\n-130 template< class... Args >\n-_\b1_\b3_\b1 auto _\bw_\br_\bi_\bt_\be ( const std::string &fileName, Args &&... args ) const\n-132 -> std::void_t< decltype( this->_\bw_\br_\bi_\bt_\be( std::declval< std::ostream & >(),\n-std::declval< Args >()... ) ) >\n-133 {\n-134 std::ofstream gridout( fileName );\n-135 if( gridout )\n-136 _\bw_\br_\bi_\bt_\be( gridout, std::forward< Args >( args )... );\n-137 else\n-138 std::cerr << \"Couldn't open file `\"<< fileName << \"'!\"<< std::endl;\n-139 }\n-140\n-141 protected:\n-142 auto _\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\bS_\be_\be_\bd_\bs ( const std::vector< Index > &newElemOrder ) const\n-143 -> std::vector< ElementSeed >;\n-144\n-145 void _\bw_\br_\bi_\bt_\be_\bH_\be_\ba_\bd_\be_\br ( std::ostream &gridout ) const;\n-146 void _\bw_\br_\bi_\bt_\be_\bF_\bo_\bo_\bt_\be_\br ( std::ostream &gridout ) const;\n-147\n-148 auto _\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs ( std::ostream &gridout ) const\n-149 -> std::vector< Index >;\n-150\n-151 void _\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, const Element &element, const GeometryType &elementType ) const;\n-152\n-153 void _\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices ) const;\n-154 void _\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;\n-155\n-156 void _\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices ) const;\n-157 void _\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;\n-158\n-159 template< class... Args >\n-160 void _\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, const Args &... args ) const;\n-161\n-162 private:\n-163 template< class I >\n-164 static auto boundaryId ( const I &i, PriorityTag< 1 > )\n-165 -> std::enable_if_t< std::is_convertible< std::decay_t< decltype( i.impl\n-().boundaryId() ) >, int >::value, int >\n-166 {\n-167 return i.impl().boundaryId();\n-168 }\n-169\n-170 template< class I >\n-171 static int boundaryId ( const I &i, PriorityTag< 0 > )\n-172 {\n-173 return 1;\n-174 }\n-175\n-176 protected:\n-_\b1_\b7_\b7 static int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const Intersection &i ) { return _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd( i,\n-PriorityTag< 42 >() ); }\n-178\n-179 private:\n-180 static int boundaryId ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &, int bndId ) { return bndId; }\n-181 static int boundaryId ( const Intersection &i, const std::string & )\n-{ return boundaryId( i ); }\n-182 static int boundaryId ( const Intersection &i, const std::pair< int, std::\n-string > &data ) { return boundrayId( i, data.first ); }\n-183\n-184 static void appendBoundaryData ( std::ostream &gridout, int ) { gridout <<\n-std::endl; }\n-185 static void appendBoundaryData ( std::ostream &gridout, std::pair< int,\n-std::string > &data ) { appendBoundaryData( gridout, data.second ); }\n-186 static void appendBoundaryData ( std::ostream &gridout, const std::string\n-&s ) { gridout << \" : \" << s << std::endl; }\n-187\n-188 protected:\n-189 template< class BoundaryData >\n-190 void _\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, BoundaryData &&boundaryData ) const;\n-191\n-_\b1_\b9_\b2 void _\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n-&dgfIndices ) const\n-193 {\n-194 _\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs( gridout, dgfIndices, [] ( const Intersection &i ) -> int\n-{ return boundaryId( i ); } );\n-195 }\n-196\n-197 protected:\n-_\b1_\b9_\b8 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_;\n-199 };\n-200\n-201\n-202 template< class GV >\n-_\b2_\b0_\b3 inline auto _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\bS_\be_\be_\bd_\bs ( const std::vector< Index >\n-&newElemOrder ) const\n-204 -> std::vector< ElementSeed >\n-205 {\n-206 const IndexSet &indexSet = gridView_.indexSet();\n-207\n-208 const std::size_t orderSize = newElemOrder.size() ;\n-209 std::vector< ElementSeed > elementSeeds( orderSize );\n-210\n-211 for( const Element &element : elements( gridView_ ) )\n-212 {\n-213 assert( newElemOrder[ indexSet.index( element ) ] < orderSize );\n-214 elementSeeds[ newElemOrder[ indexSet.index( element ) ] ] = element.seed();\n-215 }\n-216\n-217 return elementSeeds;\n-218 }\n-219\n-220\n-221 template< class GV >\n-_\b2_\b2_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bH_\be_\ba_\bd_\be_\br ( std::ostream &gridout ) const\n-223 {\n-224 // set the stream to full double precision\n-225 gridout.setf( std::ios_base::scientific, std::ios_base::floatfield );\n-226 gridout.precision( 16 );\n-227\n-228 const IndexSet &indexSet = gridView_.indexSet();\n-229\n-230 // write DGF header\n-231 gridout << \"DGF\" << std::endl;\n-232 gridout << \"%\" << \" Elements = \" << indexSet.size( 0 ) << \" | Vertices = \"\n-<< indexSet.size( dimGrid ) << std::endl;\n-233 }\n-234\n-235\n-236 template< class GV >\n-_\b2_\b3_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bF_\bo_\bo_\bt_\be_\br ( std::ostream &gridout ) const\n-238 {\n-239 gridout << std::endl << \"#\" << std::endl;\n-240 }\n-241\n-242\n-243 template< class GV >\n-_\b2_\b4_\b4 inline auto _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs ( std::ostream &gridout ) const\n-245 -> std::vector< Index >\n-246 {\n-247 const IndexSet &indexSet = gridView_.indexSet();\n-248\n-249 const Index vxSize = indexSet.size( dimGrid );\n-250 std::vector< Index > dgfIndices( vxSize, vxSize );\n-251\n-252 // write all vertices into the \"vertex\" block\n-253 gridout << std::endl << \"VERTEX\" << std::endl;\n-254 Index vertexCount = 0;\n-255 for( const Element &element : elements( gridView_ ) )\n-256 {\n-257 for( auto i : range( element.subEntities( dimGrid ) ) )\n-258 {\n-259 const Index vxIndex = indexSet.subIndex( element, i, dimGrid );\n-260 assert( vxIndex < vxSize );\n-261 if( dgfIndices[ vxIndex ] == vxSize )\n-262 {\n-263 dgfIndices[ vxIndex ] = vertexCount++;\n-264 gridout << element.geometry().corner( i ) << std::endl;\n-265 }\n-266 }\n-267 }\n-268 gridout << \"#\" << std::endl;\n-269\n-270 if( vertexCount != vxSize )\n-271 DUNE_THROW( _\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"IndexSet reports wrong number of vertices.\" );\n-272 return dgfIndices;\n-273 }\n-274\n-275\n-276 template< class GV >\n-_\b2_\b7_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices, const Element &element, const GeometryType\n-&elementType ) const\n-278 {\n-279 // if element's type is not the same as the type to write the return\n-280 if( element.type() != elementType )\n-281 return;\n-282\n-283 // write vertex numbers of the element\n-284 const IndexSet &indexSet = gridView_.indexSet();\n-285 for( auto i : range( element.subEntities( Element::dimension ) ) )\n-286 gridout << (i > 0 ? \" \" : \"\") << dgfIndices[ indexSet.subIndex( element, i,\n-dimGrid ) ];\n-287 gridout << std::endl;\n-288 }\n-289\n-290\n-291 template< class GV >\n-_\b2_\b9_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices ) const\n-293 {\n-294 // write all simplices to the \"simplex\" block\n-295 gridout << std::endl << \"SIMPLEX\" << std::endl;\n-296\n-297 // write all simplex elements\n-298 for( const Element &element : elements( gridView_ ) )\n-299 writeElement( gridout, dgfIndices, element, GeometryTypes::simplex( dimGrid\n-) );\n-300\n-301 // write end marker for block\n-302 gridout << \"#\" << std::endl;\n-303 }\n-304\n-305\n-306 template< class GV >\n-_\b3_\b0_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices, const std::vector< ElementSeed >\n-&elementSeeds ) const\n-308 {\n-309 // write all simplices to the \"simplex\" block\n-310 gridout << std::endl << \"SIMPLEX\" << std::endl;\n-311\n-312 // write all simplex elements\n-313 for( const ElementSeed &seed : elementSeeds )\n-314 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ),\n-GeometryTypes::simplex( dimGrid ) );\n-315\n-316 // write end marker for block\n-317 gridout << \"#\" << std::endl;\n-318 }\n-319\n-320\n-321 template< class GV >\n-_\b3_\b2_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices ) const\n-323 {\n-324 // write all cubes to the \"cube\" block\n-325 gridout << std::endl << \"CUBE\" << std::endl;\n-326\n-327 // write all cube elements\n-328 for( const Element &element : elements( gridView_ ) )\n-329 writeElement( gridout, dgfIndices, element, GeometryTypes::cube( dimGrid )\n-);\n-330\n-331 // write end marker for block\n-332 gridout << \"#\" << std::endl;\n-333 }\n-334\n-335\n-336 template< class GV >\n-_\b3_\b3_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices, const std::vector< ElementSeed >\n-&elementSeeds ) const\n-338 {\n-339 const IndexSet &indexSet = gridView_.indexSet();\n-340\n-341 // write all cubes to the \"cube\" block\n-342 gridout << std::endl << \"CUBE\" << std::endl;\n-343\n-344 // write all cube elements\n-345 for( const ElementSeed &seed : elementSeeds )\n-346 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ),\n-GeometryTypes::cube( dimGrid ) );\n-347\n-348 // write end marker for block\n-349 gridout << \"#\" << std::endl;\n-350 }\n-351\n-352\n-353 template< class GV >\n-354 template< class... Args >\n-_\b3_\b5_\b5 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices, const Args &... args ) const\n-356 {\n-357 const IndexSet &indexSet = gridView_.indexSet();\n-358\n-359 if( (dimGrid > 1) && (indexSet.size( GeometryTypes::simplex( dimGrid ) ) >\n-0) )\n-360 writeSimplices( gridout, dgfIndices, args... );\n-361\n-362 if( indexSet.size( GeometryTypes::cube( dimGrid ) ) > 0 )\n-363 writeCubes( gridout, dgfIndices, args... );\n-364 }\n-365\n-366\n-367 template< class GV >\n-368 template< class BoundaryData >\n-_\b3_\b6_\b9 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::ostream &gridout, const\n-std::vector< Index > &dgfIndices, BoundaryData &&boundaryData ) const\n-370 {\n-371 using std::max;\n-372\n-373 const IndexSet &indexSet = gridView_.indexSet();\n-374\n-375 // write all boundaries to the \"boundarysegments\" block\n-376 gridout << std::endl << \"BOUNDARYSEGMENTS\" << std::endl;\n-377\n-378 for( const Element &element : elements( gridView_ ) )\n-379 {\n-380 if( !element.hasBoundaryIntersections() )\n-381 continue;\n-382\n-383 const auto &refElement = ReferenceElements< typename Grid::ctype, dimGrid\n->::general( element.type() );\n-384 for( const Intersection &intersection : intersections( gridView_, element )\n-)\n-385 {\n-386 if( !intersection.boundary() )\n-387 continue;\n-388\n-389 const auto data = boundaryData( intersection );\n-390 const int bndId = max( boundaryId( intersection, data ), 1 );\n-391\n-392 const int faceNumber = intersection.indexInInside();\n-393 const unsigned int faceSize = refElement.size( faceNumber, 1, dimGrid );\n-394 gridout << bndId << \" \";\n-395 for( auto i : range( faceSize ) )\n-396 {\n-397 const int j = refElement.subEntity( faceNumber, 1, i, dimGrid );\n-398 gridout << \" \" << dgfIndices[ indexSet.subIndex( element, j, dimGrid ) ];\n-399 }\n-400 appendBoundaryData( gridout, data );\n-401 }\n-402 }\n-403 gridout << \"#\" << std::endl;\n-404 }\n-405\n-406\n-407 template< class GV >\n-408 template< class BoundaryData >\n-_\b4_\b0_\b9 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::\n-vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::\n-stringstream &addParams ) const\n-410 {\n-411 writeHeader( gridout );\n-412 auto dgfIndices = writeVertices( gridout );\n-413 writeElements( gridout, dgfIndices, elementSeeds( newElemOrder ) );\n-414 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >\n-( boundaryData ) );\n-415 gridout << addParams.str();\n-416 writeFooter( gridout );\n-417 }\n-418\n-419\n-420 template< class GV >\n-421 template< class BoundaryData >\n-_\b4_\b2_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be ( std::ostream &gridout, BoundaryData\n-&&boundaryData, const std::stringstream &addParams ) const\n-423 {\n-424 writeHeader( gridout );\n-425 auto dgfIndices = writeVertices( gridout );\n-426 writeElements( gridout, dgfIndices );\n-427 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >\n-( boundaryData ) );\n-428 gridout << addParams.str();\n-429 writeFooter( gridout );\n-430 }\n-431\n-432} // namespace Dune\n-433\n-434#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH\n-_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd\n-Traits::Grid Grid\n-type of the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Traits::IndexSet IndexSet\n-type of the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Traits::Intersection Intersection\n-type of the intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:89\n+109 if(cellit != cellend) {\n+110 corner._\bc_\be_\bl_\bl(*cellit);\n+111 corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(vtkIndex);\n+112 }\n+113 }\n+115\n+_\b1_\b1_\b8 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellend_)\n+119 : cellit(cellend_), cellend(cellend_)\n+120 { }\n+121 };\n+122\n+123 } // namespace VTK\n+124\n+126\n+127} // namespace Dune\n+128\n+129#endif // DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH\n+_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-Base class for exceptions in Dune grid modules.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-IndexTypeImp IndexType\n-The type used for the indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A struct that collects all associated types of one implementation from the\n-Traits class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br\n-write a GridView to a DGF file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bd_\bi_\bm_\bG_\br_\bi_\bd\n-static const int dimGrid\n-dimension of the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br\n-DGFWriter(const GridView &gridView)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(std::ostream &gridout, const std::stringstream &addParams=std::\n-stringstream()) const\n-write the GridView into a std::ostream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-auto write(const std::string &fileName, Args &&... args) const -> std::void_t<\n-decltype(this->write(std::declval< std::ostream & >(), std::declval< Args >\n-()...)) >\n-write the GridView to a file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs\n-void writeBoundaries(std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, BoundaryData &&boundaryData) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:369\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-static int boundaryId(const Intersection &i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(std::ostream &gridout, const std::vector< Index > &newElemOrder,\n-const std::stringstream &addParams=std::stringstream()) const\n-write the GridView into a std::ostream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(std::ostream &gridout, const std::vector< Index > &newElemOrder,\n-BoundaryData &&boundaryData, const std::stringstream &addParams=std::\n-stringstream()) const\n-write the GridView into a std::ostream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:409\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_\n-GridView gridView_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-void writeElement(std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, const Element &element, const GeometryType &elementType) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:277\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-GV GridView\n-type of grid view\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bF_\bo_\bo_\bt_\be_\br\n-void writeFooter(std::ostream &gridout) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:237\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n-GridView::Grid Grid\n-type of underlying hierarchical grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-auto writeVertices(std::ostream &gridout) const -> std::vector< Index >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:244\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-void writeElements(std::ostream &gridout, const std::vector< Index >\n-&dgfIndices, const Args &... args) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:355\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs\n-void writeBoundaries(std::ostream &gridout, const std::vector< Index >\n-&dgfIndices) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:192\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs\n-void writeCubes(std::ostream &gridout, const std::vector< Index > &dgfIndices)\n-const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:322\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs\n-void writeSimplices(std::ostream &gridout, const std::vector< Index >\n-&dgfIndices) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bH_\be_\ba_\bd_\be_\br\n-void writeHeader(std::ostream &gridout) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:222\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\bS_\be_\be_\bd_\bs\n-auto elementsSeeds(const std::vector< Index > &newElemOrder) const -> std::\n-vector< ElementSeed >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:203\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+simple class representing a corner of a cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx\n+unsigned vtkIndex() const\n+get the index of the corner within the cell in VTK-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx\n+unsigned duneIndex() const\n+get the index of the corner within the cell in Dune-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bc_\be_\bl_\bl\n+const Cell & cell() const\n+get reference to the cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the corners of some cell range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Value & Reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+VTK::Corner< typename std::remove_const< typename std::iterator_traits<\n+CellIterator >::value_type >::type > Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Reference dereference() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be\n+std::iterator_traits< CellIterator >::difference_type DifferenceType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm\n+static const unsigned dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\bl_\be_\bm_\bs\n+ReferenceElements< ctype, dim > Refelems\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+const Corner Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+CornerIterator(const CellIterator &cellit_, const CellIterator &cellend_,\n+unsigned vtkIndex=0)\n+construct a CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+CornerIterator(const CellIterator &cellend_)\n+construct a CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const DerivedType &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be\n+CornerIterator< CellIterator > DerivedType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+std::iterator_traits< CellIterator >::value_type::Geometry::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be\n+bool isDereferencable() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:69\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00779.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00779.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: parser.hh File Reference\n+dune-grid: vtksequencewriterbase.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    parser.hh File Reference
    \n+
    vtksequencewriterbase.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <string>
    \n-#include <vector>
    \n-#include <map>
    \n-#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n+
    #include <vector>
    \n+#include <iostream>
    \n+#include <sstream>
    \n+#include <fstream>
    \n+#include <iomanip>
    \n+#include <memory>
    \n+#include <dune/grid/io/file/vtk/common.hh>
    \n+#include <dune/common/path.hh>
    \n+#include <dune/grid/io/file/vtk/vtkwriter.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::DGFBoundaryParameter
     Contains types for additional features. More...
     
    class  Dune::DuneGridFormatParser
     The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures used by the MacroGrid class. More...
    class  Dune::VTKSequenceWriterBase< GridView >
     Base class to write pvd-files which contains a list of all collected vtk-files. More...
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,30 +2,31 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-parser.hh File Reference\n-#include \n-#include \n+vtksequencewriterbase.hh File Reference\n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\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:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-\u00a0 Contains types for additional features. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n-\u00a0 The DuneGridFormatParser class: reads a DGF file and stores build\n- information in vector structures used by the _\bM_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd class. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Base class to write pvd-files which contains a list of all collected\n+ vtk-files. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00779_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00779_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: parser.hh Source File\n+dune-grid: vtksequencewriterbase.hh Source File\n \n \n \n \n \n \n \n@@ -70,230 +70,209 @@\n \n \n \n \n \n \n \n
    \n-
    parser.hh
    \n+
    vtksequencewriterbase.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_DUNEGRIDFORMATPARSER_HH
    \n-
    6#define DUNE_DGF_DUNEGRIDFORMATPARSER_HH
    \n-
    7
    \n-
    8#include <iostream>
    \n-
    9#include <string>
    \n-
    10#include <vector>
    \n-
    11#include <map>
    \n-
    12
    \n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    18 class DGFPrintInfo;
    \n-
    19
    \n-
    \n-\n-
    23 {
    \n-
    25 typedef std::string type;
    \n-
    26
    \n-
    \n-
    28 static const type &defaultValue ()
    \n-
    29 {
    \n-
    30 static type value;
    \n-
    31 return value;
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-
    35 static type convert ( const std::string & parameter )
    \n-
    36 {
    \n-
    37 return parameter;
    \n-
    38 }
    \n-
    \n-
    39
    \n-
    41 static const char delimiter = ':';
    \n-
    42 };
    \n-
    \n-
    43
    \n-
    \n-\n-
    47 {
    \n-
    48 public:
    \n-
    49 typedef enum {Simplex,Cube,General} element_t;
    \n-
    50
    \n-\n-
    52
    \n-
    54 DuneGridFormatParser ( int rank, int size );
    \n-
    55
    \n-
    66 static bool isDuneGridFormat ( std::istream &input );
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH
    \n+
    8
    \n+
    9#include <vector>
    \n+
    10#include <iostream>
    \n+
    11#include <sstream>
    \n+
    12#include <fstream>
    \n+
    13#include <iomanip>
    \n+
    14#include <memory>
    \n+
    15
    \n+\n+
    17#include <dune/common/path.hh>
    \n+
    18
    \n+\n+
    20
    \n+
    21namespace Dune {
    \n+
    22
    \n+
    32 template<class GridView>
    \n+
    \n+\n+
    34 {
    \n+
    35 std::shared_ptr<VTKWriter<GridView> > vtkWriter_;
    \n+
    36 std::vector<double> timesteps_;
    \n+
    37 std::string name_,path_,extendpath_;
    \n+
    38 int rank_;
    \n+
    39 int size_;
    \n+
    40 public:
    \n+
    \n+\n+
    48 const std::string& name,
    \n+
    49 const std::string& path,
    \n+
    50 const std::string& extendpath,
    \n+
    51 int rank,
    \n+
    52 int size)
    \n+
    53 : vtkWriter_(vtkWriter),
    \n+
    54 name_(name), path_(path),
    \n+
    55 extendpath_(extendpath),
    \n+
    56 rank_(rank),
    \n+
    57 size_(size)
    \n+
    58 {}
    \n+
    \n+
    59
    \n+
    \n+
    63 const std::shared_ptr< VTKWriter<GridView> >& vtkWriter() const
    \n+
    64 {
    \n+
    65 return vtkWriter_;
    \n+
    66 }
    \n+
    \n
    67
    \n-
    77 static bool isDuneGridFormat ( const std::string &filename );
    \n-
    78
    \n-
    91 bool readDuneGrid( std::istream &input, int dimG, int dimW );
    \n-
    92
    \n-
    94 void writeTetgenPoly ( const std::string &, std::string &, std::string & );
    \n-
    95
    \n-
    96 void writeTetgenPoly ( std::ostream & out, const bool writeSegments = true );
    \n-
    97
    \n-
    98 protected:
    \n-
    99 void generateBoundaries ( std::istream &, bool );
    \n-
    100
    \n-
    101 // call to tetgen/triangle
    \n-
    102 void generateSimplexGrid ( std::istream & );
    \n-
    103 void readTetgenTriangle ( const std::string & );
    \n-
    104
    \n-
    105 // helper methods
    \n-
    106 void removeCopies ();
    \n-
    107
    \n-
    108 void setOrientation ( int use1, int use2,
    \n-
    109 orientation_t orientation=counterclockwise );
    \n-
    110
    \n-
    111 void setRefinement ( int use1, int use2, int is1=-1, int is2=-1 );
    \n-
    112
    \n-
    113 double testTriang ( int snr );
    \n-
    114
    \n-
    115 std::vector< double > & getElParam ( int i, std::vector< double > & coord );
    \n-
    116
    \n-
    117 std::vector< double > & getVtxParam ( int i, std::vector< double > & coord );
    \n-
    118
    \n-
    119 static std::string temporaryFileName ();
    \n-
    120
    \n-
    121 // dimension of world and problem: set through the readDuneGrid() method
    \n-\n-
    123
    \n-
    124 // vector of vertex coordinates
    \n-
    125 std::vector < std::vector < double > > vtx;
    \n-
    126
    \n-\n-
    128
    \n-\n-
    130
    \n-
    131 double minVertexDistance; // min. L^1 distance of distinct points
    \n-
    132
    \n-
    133 // vector of elements
    \n-
    134 std :: vector< std :: vector< unsigned int > > elements;
    \n-
    135
    \n-\n-
    137
    \n-
    138 // vector of boundary segments + identifier
    \n-
    139 std::vector < std::vector < int > > bound;
    \n-
    140
    \n-\n-
    142
    \n-
    143 // map to generate and find boundary segments
    \n-\n-
    145 typedef std::pair < int, BoundaryParameter > BndParam;
    \n-
    146 typedef std::map< DGFEntityKey< unsigned int >, BndParam > facemap_t;
    \n-\n-
    148
    \n-
    149 // true if parameters on a boundary found
    \n-\n-
    151
    \n-
    152 // set by generator depending on element type wanted
    \n-\n-
    154
    \n-
    155 // set by the readDuneGrid method depending
    \n-
    156 // on what type the elements were generated
    \n-\n-
    158
    \n-
    159 // true if grid is generated using the intervall Block
    \n-\n-
    161
    \n-
    162 // parameters on elements
    \n-\n-
    164
    \n-
    165 std::vector< std::vector< double > > vtxParams,elParams;
    \n-
    166
    \n-
    167 // write information about generation process
    \n-\n-
    169
    \n-
    170 std::vector < double > emptyParam_;
    \n-
    171
    \n-
    172
    \n-
    173 private:
    \n-
    174 int rank_;
    \n-
    175 int size_;
    \n-
    176
    \n-
    177 template< class GridType >
    \n-
    178 friend struct DGFGridFactory;
    \n-
    179
    \n-
    180 template< class GridType >
    \n-
    181 friend struct DGFBaseFactory;
    \n-
    182
    \n-
    183 };
    \n-
    \n-
    184
    \n-
    185} // end namespace Dune
    \n-
    186
    \n-
    187#endif
    \n-\n+
    \n+
    69 void addCellData (const std::shared_ptr<const typename VTKWriter<GridView>::VTKFunction> &p)
    \n+
    70 {
    \n+
    71 vtkWriter_->addCellData(p);
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    79 template<class V >
    \n+
    \n+
    80 void addCellData (const V &v, const std::string &name, int ncomps=1)
    \n+
    81 {
    \n+
    82 vtkWriter_->addCellData(v, name, ncomps);
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    86 void addVertexData (const std::shared_ptr<const typename VTKWriter<GridView>::VTKFunction> &p)
    \n+
    87 {
    \n+
    88 vtkWriter_->addVertexData(p);
    \n+
    89 }
    \n+
    \n+
    90
    \n+
    96 template<class V >
    \n+
    \n+
    97 void addVertexData (const V &v, const std::string &name, int ncomps=1)
    \n+
    98 {
    \n+
    99 vtkWriter_->addVertexData(v, name, ncomps);
    \n+
    100 }
    \n+
    \n+
    101
    \n+
    102
    \n+
    \n+
    108 void write (double time, VTK::OutputType type = VTK::ascii)
    \n+
    109 {
    \n+
    110 /* remember current time step */
    \n+
    111 unsigned int count = timesteps_.size();
    \n+
    112 timesteps_.push_back(time);
    \n+
    113
    \n+
    114 /* write VTK file */
    \n+
    115 if(size_==1)
    \n+
    116 vtkWriter_->write(concatPaths(path_,seqName(count)),type);
    \n+
    117 else
    \n+
    118 vtkWriter_->pwrite(seqName(count), path_,extendpath_,type);
    \n+
    119
    \n+
    120 /* write pvd file ... only on rank 0 */
    \n+
    121 if (rank_==0) {
    \n+
    122 std::ofstream pvdFile;
    \n+
    123 pvdFile.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n+
    124 std::ios_base::eofbit);
    \n+
    125 std::string pvdname = name_ + ".pvd";
    \n+
    126 pvdFile.open(pvdname.c_str());
    \n+
    127 pvdFile << "<?xml version=\\"1.0\\"?> \\n"
    \n+
    128 << "<VTKFile type=\\"Collection\\" version=\\"0.1\\" byte_order=\\"" << VTK::getEndiannessString() << "\\"> \\n"
    \n+
    129 << "<Collection> \\n";
    \n+
    130 for (unsigned int i=0; i<=count; i++)
    \n+
    131 {
    \n+
    132 // filename
    \n+
    133 std::string piecepath;
    \n+
    134 std::string fullname;
    \n+
    135 if(size_==1) {
    \n+
    136 piecepath = path_;
    \n+
    137 fullname = vtkWriter_->getSerialPieceName(seqName(i), piecepath);
    \n+
    138 }
    \n+
    139 else {
    \n+
    140 piecepath = concatPaths(path_, extendpath_);
    \n+
    141 fullname = vtkWriter_->getParallelHeaderName(seqName(i), piecepath, size_);
    \n+
    142 }
    \n+
    143 pvdFile << "<DataSet timestep=\\"" << timesteps_[i]
    \n+
    144 << "\\" group=\\"\\" part=\\"0\\" name=\\"\\" file=\\""
    \n+
    145 << fullname << "\\"/> \\n";
    \n+
    146 }
    \n+
    147 pvdFile << "</Collection> \\n"
    \n+
    148 << "</VTKFile> \\n" << std::flush;
    \n+
    149 pvdFile.close();
    \n+
    150 }
    \n+
    151 }
    \n+
    \n+
    152
    \n+
    \n+
    156 void clear()
    \n+
    157 {
    \n+
    158 vtkWriter_->clear();
    \n+
    159 }
    \n+
    \n+
    160
    \n+
    \n+
    164 const std::vector<double>& getTimeSteps() const
    \n+
    165 {
    \n+
    166 return timesteps_;
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    \n+
    174 void setTimeSteps(const std::vector<double>& timesteps)
    \n+
    175 {
    \n+
    176 timesteps_ = timesteps;
    \n+
    177 }
    \n+
    \n+
    178
    \n+
    179 private:
    \n+
    180
    \n+
    181 // create sequence name
    \n+
    182 std::string seqName(unsigned int count) const
    \n+
    183 {
    \n+
    184 std::stringstream n;
    \n+
    185 n.fill('0');
    \n+
    186 n << name_ << "-" << std::setw(5) << count;
    \n+
    187 return n.str();
    \n+
    188 }
    \n+
    189 };
    \n+
    \n+
    190
    \n+
    191} // end namespace Dune
    \n+
    192
    \n+
    193#endif
    \n+
    Common stuff for the VTKWriter.
    \n+
    Provides file i/o for the visualization toolkit.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    Definition io/file/dgfparser/dgfparser.cc:26
    \n-
    Contains types for additional features.
    Definition parser.hh:23
    \n-
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n-
    static const char delimiter
    delimiter
    Definition parser.hh:41
    \n-
    static type convert(const std::string &parameter)
    copy from string
    Definition parser.hh:35
    \n-
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n-
    The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures us...
    Definition parser.hh:47
    \n-
    int nofvtxparams
    Definition parser.hh:163
    \n-
    int nofbound
    Definition parser.hh:141
    \n-
    std::pair< int, BoundaryParameter > BndParam
    Definition parser.hh:145
    \n-
    void readTetgenTriangle(const std::string &)
    Definition io/file/dgfparser/dgfparser.cc:795
    \n-
    static bool isDuneGridFormat(std::istream &input)
    check whether a stream is in DUNE grid format
    Definition io/file/dgfparser/dgfparser.cc:271
    \n-
    void setOrientation(int use1, int use2, orientation_t orientation=counterclockwise)
    Definition io/file/dgfparser/dgfparser.cc:910
    \n-
    std::vector< std::vector< double > > vtxParams
    Definition parser.hh:165
    \n-
    void setRefinement(int use1, int use2, int is1=-1, int is2=-1)
    Definition io/file/dgfparser/dgfparser.cc:989
    \n-
    friend struct DGFBaseFactory
    Definition parser.hh:181
    \n-
    static std::string temporaryFileName()
    Definition io/file/dgfparser/dgfparser.cc:1096
    \n-
    void removeCopies()
    Definition io/file/dgfparser/dgfparser.cc:464
    \n-
    int dimw
    Definition parser.hh:122
    \n-
    int dimgrid
    Definition parser.hh:122
    \n-
    element_t element
    Definition parser.hh:153
    \n-
    DGFBoundaryParameter::type BoundaryParameter
    Definition parser.hh:144
    \n-
    int nofelements
    Definition parser.hh:136
    \n-
    orientation_t
    Definition parser.hh:51
    \n-
    @ clockwise
    Definition parser.hh:51
    \n-
    @ counterclockwise
    Definition parser.hh:51
    \n-
    double testTriang(int snr)
    Definition io/file/dgfparser/dgfparser.cc:1050
    \n-
    double minVertexDistance
    Definition parser.hh:131
    \n-
    bool simplexgrid
    Definition parser.hh:157
    \n-
    std::map< DGFEntityKey< unsigned int >, BndParam > facemap_t
    Definition parser.hh:146
    \n-
    std::vector< std::vector< int > > bound
    Definition parser.hh:139
    \n-
    void generateSimplexGrid(std::istream &)
    Definition io/file/dgfparser/dgfparser.cc:624
    \n-
    std::vector< double > emptyParam_
    Definition parser.hh:170
    \n-
    int nofelparams
    Definition parser.hh:163
    \n-
    std::vector< std::vector< double > > elParams
    Definition parser.hh:165
    \n-
    facemap_t facemap
    Definition parser.hh:147
    \n-
    element_t
    Definition parser.hh:49
    \n-
    @ General
    Definition parser.hh:49
    \n-
    @ Cube
    Definition parser.hh:49
    \n-
    @ Simplex
    Definition parser.hh:49
    \n-
    bool cube2simplex
    Definition parser.hh:160
    \n-
    int nofvtx
    Definition parser.hh:127
    \n-
    void writeTetgenPoly(const std::string &, std::string &, std::string &)
    method to write in Tetgen/Triangle Poly Format
    Definition io/file/dgfparser/dgfparser.cc:123
    \n-
    std::vector< std::vector< double > > vtx
    Definition parser.hh:125
    \n-
    int vtxoffset
    Definition parser.hh:129
    \n-
    bool readDuneGrid(std::istream &input, int dimG, int dimW)
    parse dune grid format from stream
    Definition io/file/dgfparser/dgfparser.cc:298
    \n-
    std ::vector< std ::vector< unsigned int > > elements
    Definition parser.hh:134
    \n-
    bool haveBndParameters
    Definition parser.hh:150
    \n-
    DGFPrintInfo * info
    Definition parser.hh:168
    \n-
    void generateBoundaries(std::istream &, bool)
    Definition io/file/dgfparser/dgfparser.cc:502
    \n-
    std::vector< double > & getVtxParam(int i, std::vector< double > &coord)
    Definition io/file/dgfparser/dgfparser.cc:1086
    \n-
    std::vector< double > & getElParam(int i, std::vector< double > &coord)
    Definition io/file/dgfparser/dgfparser.cc:1070
    \n+
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n+
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n+
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n+
    A base class for grid functions with any return type and dimension.
    Definition function.hh:42
    \n+
    Base class to write pvd-files which contains a list of all collected vtk-files.
    Definition vtksequencewriterbase.hh:34
    \n+
    void addVertexData(const V &v, const std::string &name, int ncomps=1)
    Adds a field of vertex data to the VTK file.
    Definition vtksequencewriterbase.hh:97
    \n+
    const std::vector< double > & getTimeSteps() const
    Retrieve the current list of time steps.
    Definition vtksequencewriterbase.hh:164
    \n+
    const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const
    Definition vtksequencewriterbase.hh:63
    \n+
    void write(double time, VTK::OutputType type=VTK::ascii)
    Writes VTK data for the given time,.
    Definition vtksequencewriterbase.hh:108
    \n+
    void addVertexData(const std::shared_ptr< const typename VTKWriter< GridView >::VTKFunction > &p)
    Adds a field of vertex data to the VTK file.
    Definition vtksequencewriterbase.hh:86
    \n+
    void addCellData(const V &v, const std::string &name, int ncomps=1)
    Adds a field of cell data to the VTK file.
    Definition vtksequencewriterbase.hh:80
    \n+
    VTKSequenceWriterBase(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const std::string &name, const std::string &path, const std::string &extendpath, int rank, int size)
    Set up the VTKSequenceWriterBase class.
    Definition vtksequencewriterbase.hh:47
    \n+
    void addCellData(const std::shared_ptr< const typename VTKWriter< GridView >::VTKFunction > &p)
    Adds a field of cell data to the VTK file.
    Definition vtksequencewriterbase.hh:69
    \n+
    void setTimeSteps(const std::vector< double > &timesteps)
    Set the current list of time steps.
    Definition vtksequencewriterbase.hh:174
    \n+
    void clear()
    Clears all VTK data added to the VTK writer.
    Definition vtksequencewriterbase.hh:156
    \n+
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,332 +2,235 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-parser.hh\n+ * _\bv_\bt_\bk\n+vtksequencewriterbase.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_DUNEGRIDFORMATPARSER_HH\n-6#define DUNE_DGF_DUNEGRIDFORMATPARSER_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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-18 class DGFPrintInfo;\n-19\n-_\b2_\b2 struct _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-23 {\n-_\b2_\b5 typedef std::string _\bt_\by_\bp_\be;\n-26\n-_\b2_\b8 static const _\bt_\by_\bp_\be &_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be ()\n-29 {\n-30 static _\bt_\by_\bp_\be value;\n-31 return value;\n-32 }\n-33\n-_\b3_\b5 static _\bt_\by_\bp_\be _\bc_\bo_\bn_\bv_\be_\br_\bt ( const std::string & parameter )\n-36 {\n-37 return parameter;\n-38 }\n-39\n-_\b4_\b1 static const char _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br = ':';\n-42 };\n-43\n-_\b4_\b6 class _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n-47 {\n-48 public:\n-_\b4_\b9 typedef enum {_\bS_\bi_\bm_\bp_\bl_\be_\bx,_\bC_\bu_\bb_\be,_\bG_\be_\bn_\be_\br_\ba_\bl} _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bt;\n-50\n-_\b5_\b1 typedef enum {_\bc_\bo_\bu_\bn_\bt_\be_\br_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be=1,_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be=-1} _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt;\n-52\n-54 _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br ( int rank, int size );\n-55\n-66 static bool _\bi_\bs_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt ( std::istream &input );\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH\n+7#define DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+17#include \n+18\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be {\n+22\n+32 template\n+_\b3_\b3 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+34 {\n+35 std::shared_ptr > vtkWriter_;\n+36 std::vector timesteps_;\n+37 std::string name_,path_,extendpath_;\n+38 int rank_;\n+39 int size_;\n+40 public:\n+_\b4_\b7 explicit _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be( std::shared_ptr<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> >\n+_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n+48 const std::string& name,\n+49 const std::string& path,\n+50 const std::string& extendpath,\n+51 int rank,\n+52 int size)\n+53 : vtkWriter_(_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br),\n+54 name_(name), path_(path),\n+55 extendpath_(extendpath),\n+56 rank_(rank),\n+57 size_(size)\n+58 {}\n+59\n+_\b6_\b3 const std::shared_ptr< VTKWriter >& _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br() const\n+64 {\n+65 return vtkWriter_;\n+66 }\n 67\n-77 static bool _\bi_\bs_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt ( const std::string &filename );\n-78\n-91 bool _\br_\be_\ba_\bd_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd( std::istream &input, int dimG, int dimW );\n-92\n-94 void _\bw_\br_\bi_\bt_\be_\bT_\be_\bt_\bg_\be_\bn_\bP_\bo_\bl_\by ( const std::string &, std::string &, std::string & );\n-95\n-96 void _\bw_\br_\bi_\bt_\be_\bT_\be_\bt_\bg_\be_\bn_\bP_\bo_\bl_\by ( std::ostream & out, const bool writeSegments = true\n-);\n-97\n-98 protected:\n-99 void _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::istream &, bool );\n-100\n-101 // call to tetgen/triangle\n-102 void _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd ( std::istream & );\n-103 void _\br_\be_\ba_\bd_\bT_\be_\bt_\bg_\be_\bn_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be ( const std::string & );\n-104\n-105 // helper methods\n-106 void _\br_\be_\bm_\bo_\bv_\be_\bC_\bo_\bp_\bi_\be_\bs ();\n-107\n-108 void _\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( int use1, int use2,\n-109 _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt orientation=_\bc_\bo_\bu_\bn_\bt_\be_\br_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be );\n-110\n-111 void _\bs_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt ( int use1, int use2, int is1=-1, int is2=-1 );\n-112\n-113 double _\bt_\be_\bs_\bt_\bT_\br_\bi_\ba_\bn_\bg ( int snr );\n-114\n-115 std::vector< double > & _\bg_\be_\bt_\bE_\bl_\bP_\ba_\br_\ba_\bm ( int i, std::vector< double > & coord\n-);\n-116\n-117 std::vector< double > & _\bg_\be_\bt_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm ( int i, std::vector< double > & coord\n-);\n-118\n-119 static std::string _\bt_\be_\bm_\bp_\bo_\br_\ba_\br_\by_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be ();\n-120\n-121 // dimension of world and problem: set through the readDuneGrid() method\n-_\b1_\b2_\b2 int _\bd_\bi_\bm_\bw, _\bd_\bi_\bm_\bg_\br_\bi_\bd;\n-123\n-124 // vector of vertex coordinates\n-_\b1_\b2_\b5 std::vector < std::vector < double > > _\bv_\bt_\bx;\n-126\n-_\b1_\b2_\b7 int _\bn_\bo_\bf_\bv_\bt_\bx;\n-128\n-_\b1_\b2_\b9 int _\bv_\bt_\bx_\bo_\bf_\bf_\bs_\be_\bt;\n-130\n-_\b1_\b3_\b1 double _\bm_\bi_\bn_\bV_\be_\br_\bt_\be_\bx_\bD_\bi_\bs_\bt_\ba_\bn_\bc_\be; // min. L^1 distance of distinct points\n-132\n-133 // vector of elements\n-_\b1_\b3_\b4 std :: vector< std :: vector< unsigned int > > _\be_\bl_\be_\bm_\be_\bn_\bt_\bs;\n-135\n-_\b1_\b3_\b6 int _\bn_\bo_\bf_\be_\bl_\be_\bm_\be_\bn_\bt_\bs;\n-137\n-138 // vector of boundary segments + identifier\n-_\b1_\b3_\b9 std::vector < std::vector < int > > _\bb_\bo_\bu_\bn_\bd;\n-140\n-_\b1_\b4_\b1 int _\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd;\n-142\n-143 // map to generate and find boundary segments\n-_\b1_\b4_\b4 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n-_\b1_\b4_\b5 typedef std::pair < int, BoundaryParameter > _\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm;\n-_\b1_\b4_\b6 typedef std::map< DGFEntityKey< unsigned int >, _\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm > _\bf_\ba_\bc_\be_\bm_\ba_\bp_\b__\bt;\n-_\b1_\b4_\b7 _\bf_\ba_\bc_\be_\bm_\ba_\bp_\b__\bt _\bf_\ba_\bc_\be_\bm_\ba_\bp;\n-148\n-149 // true if parameters on a boundary found\n-_\b1_\b5_\b0 bool _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs;\n-151\n-152 // set by generator depending on element type wanted\n-_\b1_\b5_\b3 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bt _\be_\bl_\be_\bm_\be_\bn_\bt;\n-154\n-155 // set by the readDuneGrid method depending\n-156 // on what type the elements were generated\n-_\b1_\b5_\b7 bool _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\br_\bi_\bd;\n-158\n-159 // true if grid is generated using the intervall Block\n-_\b1_\b6_\b0 bool _\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx;\n-161\n-162 // parameters on elements\n-_\b1_\b6_\b3 int _\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs,_\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs;\n-164\n-_\b1_\b6_\b5 std::vector< std::vector< double > > _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs,_\be_\bl_\bP_\ba_\br_\ba_\bm_\bs;\n-166\n-167 // write information about generation process\n-_\b1_\b6_\b8 _\bD_\bG_\bF_\bP_\br_\bi_\bn_\bt_\bI_\bn_\bf_\bo * _\bi_\bn_\bf_\bo;\n-169\n-_\b1_\b7_\b0 std::vector < double > _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n-171\n-172\n-173 private:\n-174 int rank_;\n-175 int size_;\n-176\n-177 template< class GridType >\n-_\b1_\b7_\b8 friend struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-179\n-180 template< class GridType >\n-_\b1_\b8_\b1 friend struct _\bD_\bG_\bF_\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-182\n-183 };\n-184\n-185} // end namespace Dune\n-186\n-187#endif\n-_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n+_\b6_\b9 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const std::shared_ptr_\b:_\b:\n+_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn> &p)\n+70 {\n+71 vtkWriter_->addCellData(p);\n+72 }\n+73\n+79 template\n+_\b8_\b0 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const V &v, const std::string &name, int ncomps=1)\n+81 {\n+82 vtkWriter_->addCellData(v, name, ncomps);\n+83 }\n+84\n+_\b8_\b6 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const std::shared_ptr_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn> &p)\n+87 {\n+88 vtkWriter_->addVertexData(p);\n+89 }\n+90\n+96 template\n+_\b9_\b7 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const V &v, const std::string &name, int ncomps=1)\n+98 {\n+99 vtkWriter_->addVertexData(v, name, ncomps);\n+100 }\n+101\n+102\n+_\b1_\b0_\b8 void _\bw_\br_\bi_\bt_\be (double time, _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type = _\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi)\n+109 {\n+110 /* remember current time step */\n+111 unsigned int count = timesteps_.size();\n+112 timesteps_.push_back(time);\n+113\n+114 /* write VTK file */\n+115 if(size_==1)\n+116 vtkWriter_->write(concatPaths(path_,seqName(count)),type);\n+117 else\n+118 vtkWriter_->pwrite(seqName(count), path_,extendpath_,type);\n+119\n+120 /* write pvd file ... only on rank 0 */\n+121 if (rank_==0) {\n+122 std::ofstream pvdFile;\n+123 pvdFile.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n+124 std::ios_base::eofbit);\n+125 std::string pvdname = name_ + \".pvd\";\n+126 pvdFile.open(pvdname.c_str());\n+127 pvdFile << \" \\n\"\n+128 << \" \\n\"\n+129 << \" \\n\";\n+130 for (unsigned int i=0; i<=count; i++)\n+131 {\n+132 // filename\n+133 std::string piecepath;\n+134 std::string fullname;\n+135 if(size_==1) {\n+136 piecepath = path_;\n+137 fullname = vtkWriter_->getSerialPieceName(seqName(i), piecepath);\n+138 }\n+139 else {\n+140 piecepath = concatPaths(path_, extendpath_);\n+141 fullname = vtkWriter_->getParallelHeaderName(seqName(i), piecepath, size_);\n+142 }\n+143 pvdFile << \" \\n\";\n+146 }\n+147 pvdFile << \" \\n\"\n+148 << \" \\n\" << std::flush;\n+149 pvdFile.close();\n+150 }\n+151 }\n+152\n+_\b1_\b5_\b6 void _\bc_\bl_\be_\ba_\br()\n+157 {\n+158 vtkWriter_->clear();\n+159 }\n+160\n+_\b1_\b6_\b4 const std::vector& _\bg_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs() const\n+165 {\n+166 return timesteps_;\n+167 }\n+168\n+_\b1_\b7_\b4 void _\bs_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs(const std::vector& timesteps)\n+175 {\n+176 timesteps_ = timesteps;\n+177 }\n+178\n+179 private:\n+180\n+181 // create sequence name\n+182 std::string seqName(unsigned int count) const\n+183 {\n+184 std::stringstream n;\n+185 n.fill('0');\n+186 n << name_ << \"-\" << std::setw(5) << count;\n+187 return n.str();\n+188 }\n+189 };\n+190\n+191} // end namespace Dune\n+192\n+193#endif\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n+_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Provides file i/o for the visualization toolkit.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bP_\br_\bi_\bn_\bt_\bI_\bn_\bf_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-Contains types for additional features.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n-static const type & defaultValue()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br\n-static const char delimiter\n-delimiter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt\n-static type convert(const std::string ¶meter)\n-copy from string\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-std::string type\n-type of additional boundary parameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n-The DuneGridFormatParser class: reads a DGF file and stores build information\n-in vector structures us...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs\n-int nofvtxparams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd\n-int nofbound\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm\n-std::pair< int, BoundaryParameter > BndParam\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bT_\be_\bt_\bg_\be_\bn_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be\n-void readTetgenTriangle(const std::string &)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:795\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bi_\bs_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt\n-static bool isDuneGridFormat(std::istream &input)\n-check whether a stream is in DUNE grid format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-void setOrientation(int use1, int use2, orientation_t\n-orientation=counterclockwise)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:910\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs\n-std::vector< std::vector< double > > vtxParams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt\n-void setRefinement(int use1, int use2, int is1=-1, int is2=-1)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:989\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bD_\bG_\bF_\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-friend struct DGFBaseFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bt_\be_\bm_\bp_\bo_\br_\ba_\br_\by_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n-static std::string temporaryFileName()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1096\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\bm_\bo_\bv_\be_\bC_\bo_\bp_\bi_\be_\bs\n-void removeCopies()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:464\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm_\bw\n-int dimw\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm_\bg_\br_\bi_\bd\n-int dimgrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n-element_t element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-DGFBoundaryParameter::type BoundaryParameter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int nofelements\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt\n-orientation_t\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be\n-@ clockwise\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\be_\br_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be\n-@ counterclockwise\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bT_\br_\bi_\ba_\bn_\bg\n-double testTriang(int snr)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1050\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bm_\bi_\bn_\bV_\be_\br_\bt_\be_\bx_\bD_\bi_\bs_\bt_\ba_\bn_\bc_\be\n-double minVertexDistance\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\br_\bi_\bd\n-bool simplexgrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bm_\ba_\bp_\b__\bt\n-std::map< DGFEntityKey< unsigned int >, BndParam > facemap_t\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd\n-std::vector< std::vector< int > > bound\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd\n-void generateSimplexGrid(std::istream &)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:624\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_\n-std::vector< double > emptyParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs\n-int nofelparams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\bP_\ba_\br_\ba_\bm_\bs\n-std::vector< std::vector< double > > elParams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bm_\ba_\bp\n-facemap_t facemap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bt\n-element_t\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl\n-@ General\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bC_\bu_\bb_\be\n-@ Cube\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx\n-@ Simplex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-bool cube2simplex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bv_\bt_\bx\n-int nofvtx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bT_\be_\bt_\bg_\be_\bn_\bP_\bo_\bl_\by\n-void writeTetgenPoly(const std::string &, std::string &, std::string &)\n-method to write in Tetgen/Triangle Poly Format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx\n-std::vector< std::vector< double > > vtx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx_\bo_\bf_\bf_\bs_\be_\bt\n-int vtxoffset\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd\n-bool readDuneGrid(std::istream &input, int dimG, int dimW)\n-parse dune grid format from stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:298\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n-std ::vector< std ::vector< unsigned int > > elements\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBndParameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bi_\bn_\bf_\bo\n-DGFPrintInfo * info\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:168\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs\n-void generateBoundaries(std::istream &, bool)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:502\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bt_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm\n-std::vector< double > & getVtxParam(int i, std::vector< double > &coord)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1086\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bP_\ba_\br_\ba_\bm\n-std::vector< double > & getElParam(int i, std::vector< double > &coord)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1070\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n+OutputType\n+How the bulk data should be stored in the file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n+@ ascii\n+Output to the file is in ascii.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n+std::string getEndiannessString()\n+determine endianness of this C++ implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+A base class for grid functions with any return type and dimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+Base class to write pvd-files which contains a list of all collected vtk-files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const V &v, const std::string &name, int ncomps=1)\n+Adds a field of vertex data to the VTK file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bg_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs\n+const std::vector< double > & getTimeSteps() const\n+Retrieve the current list of time steps.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br\n+const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(double time, VTK::OutputType type=VTK::ascii)\n+Writes VTK data for the given time,.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const std::shared_ptr< const typename VTKWriter< GridView\n+>::VTKFunction > &p)\n+Adds a field of vertex data to the VTK file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const V &v, const std::string &name, int ncomps=1)\n+Adds a field of cell data to the VTK file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+VTKSequenceWriterBase(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const\n+std::string &name, const std::string &path, const std::string &extendpath, int\n+rank, int size)\n+Set up the VTKSequenceWriterBase class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< const typename VTKWriter< GridView >::\n+VTKFunction > &p)\n+Adds a field of cell data to the VTK file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bs_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs\n+void setTimeSteps(const std::vector< double > ×teps)\n+Set the current list of time steps.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bc_\bl_\be_\ba_\br\n+void clear()\n+Clears all VTK data added to the VTK writer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+Writer for the ouput of grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00782.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00782.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridptr.hh File Reference\n+dune-grid: vtuwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,62 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    gridptr.hh File Reference
    \n+
    vtuwriter.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <cctype>
    \n-#include <array>
    \n-#include <iostream>
    \n-#include <map>
    \n-#include <memory>
    \n+
    #include <ostream>
    \n #include <string>
    \n-#include <type_traits>
    \n-#include <vector>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/common/shared_ptr.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n-#include <dune/grid/common/intersection.hh>
    \n-#include <dune/grid/common/partitionset.hh>
    \n-#include <dune/grid/common/rangegenerators.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n-#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n-#include <dune/grid/io/file/dgfparser/parser.hh>
    \n-#include <dune/grid/io/file/gmshreader.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/indent.hh>
    \n+#include <dune/grid/io/file/vtk/common.hh>
    \n+#include <dune/grid/io/file/vtk/dataarraywriter.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::GridPtr< GridType >
     Class for constructing grids from DGF files. More...
     
    class  Dune::GridPtr< GridType >::mygrid_ptr
     
    struct  Dune::GridPtr< GridType >::DataHandle
    class  Dune::VTK::VTUWriter
     Dump a .vtu/.vtp files contents to a stream. More...
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,45 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-gridptr.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n+vtuwriter.hh File Reference\n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\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:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 Class for constructing grids from DGF files. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+\u00a0 Dump a .vtu/.vtp files contents to a stream. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00782_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00782_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridptr.hh Source File\n+dune-grid: vtuwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,964 +70,308 @@\n
    \n \n \n \n \n \n \n
    \n-
    gridptr.hh
    \n+
    vtuwriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_GRIDPTR_HH
    \n-
    6#define DUNE_DGF_GRIDPTR_HH
    \n-
    7
    \n-
    8#include <cassert>
    \n-
    9#include <cctype>
    \n-
    10
    \n-
    11#include <array>
    \n-
    12#include <iostream>
    \n-
    13#include <map>
    \n-
    14#include <memory>
    \n-
    15#include <string>
    \n-
    16#include <type_traits>
    \n-
    17#include <vector>
    \n-
    18
    \n-
    19//- Dune includes
    \n-
    20#include <dune/common/parallel/mpihelper.hh>
    \n-
    21#include <dune/common/shared_ptr.hh>
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH
    \n+
    8
    \n+
    9#include <ostream>
    \n+
    10#include <string>
    \n+
    11
    \n+
    12#include <dune/common/exceptions.hh>
    \n+
    13#include <dune/common/indent.hh>
    \n+
    14
    \n+\n+\n+
    17
    \n+
    18namespace Dune {
    \n+
    19
    \n
    22
    \n-\n-\n-\n-\n-\n-
    28
    \n-\n-\n-\n-
    32
    \n-\n-
    34
    \n-
    35namespace Dune
    \n-
    36{
    \n-
    37
    \n-
    38 // External Forward Declarations
    \n-
    39 // -----------------------------
    \n-
    40
    \n-
    41 template < class G >
    \n-
    42 struct DGFGridFactory;
    \n-
    43
    \n-
    44 template< class GridImp, class IntersectionImp >
    \n-
    45 class Intersection;
    \n-
    46
    \n-
    47
    \n-
    48
    \n-
    49 // GridPtr
    \n-
    50 // -------
    \n-
    51
    \n-
    64 template< class GridType >
    \n-
    \n-
    65 struct GridPtr
    \n-
    66 {
    \n-
    \n-
    67 class mygrid_ptr : public std::shared_ptr< GridType >
    \n-
    68 {
    \n-
    69 typedef std::shared_ptr< GridType > base_t ;
    \n-
    70 // empty deleter to avoid deletion on release
    \n-
    71 typedef null_deleter< GridType > emptydeleter_t ;
    \n-
    72
    \n-
    73 void removeObj()
    \n-
    74 {
    \n-
    75 // if use count is only 1 delete object
    \n-
    76 if( use_count() == 1 )
    \n-
    77 {
    \n-
    78 // delete point here, since we use the empty deleter
    \n-
    79 GridType* grd = release();
    \n-
    80 if( grd ) delete grd ;
    \n-
    81 }
    \n-
    82 }
    \n-
    83
    \n-
    84 void assignObj( const mygrid_ptr& other )
    \n-
    85 {
    \n-
    86 removeObj();
    \n-
    87 base_t :: operator = ( other );
    \n-
    88 }
    \n-
    89 public:
    \n-
    90 using base_t :: get ;
    \n-
    91 using base_t :: swap ;
    \n-
    92 using base_t :: use_count ;
    \n-
    93
    \n-
    94 // default constructor
    \n-
    95 mygrid_ptr() : base_t( ( GridType * ) 0, emptydeleter_t() ) {}
    \n-
    96 // copy constructor
    \n-
    97 mygrid_ptr( const mygrid_ptr& other ) : base_t(nullptr) { assignObj( other ); }
    \n-
    98 // constructor taking pointer
    \n-
    99 explicit mygrid_ptr( GridType* grd ) : base_t( grd, emptydeleter_t() ) {}
    \n-
    100
    \n-
    101 // destructor
    \n-
    102 ~mygrid_ptr() { removeObj(); }
    \n-
    103
    \n-
    104 // assigment operator
    \n-
    \n-\n-
    106 {
    \n-
    107 assignObj( other );
    \n-
    108 return *this;
    \n-
    109 }
    \n-
    \n-
    110
    \n-
    111 // release pointer
    \n-
    \n-
    112 GridType* release()
    \n-
    113 {
    \n-
    114 GridType* grd = this->get();
    \n-
    115 base_t ptr(( GridType * ) 0, emptydeleter_t() );
    \n-
    116 this->swap( ptr );
    \n-
    117 return grd ;
    \n-
    118 }
    \n-
    \n-
    119 };
    \n-
    \n-
    120
    \n-
    121 protected:
    \n+
    23 namespace VTK {
    \n+
    24
    \n+
    26
    \n+
    \n+
    98 class VTUWriter {
    \n+
    99 public:
    \n+
    100 std::ostream& stream;
    \n+\n+
    102
    \n+
    103 private:
    \n+\n+
    105 Indent indent;
    \n+
    106
    \n+
    107 std::string fileType;
    \n+
    108 std::string cellName;
    \n+
    109
    \n+
    110 bool doAppended;
    \n+
    111
    \n+
    112 public:
    \n+
    114
    \n
    \n-
    122 std::string getFileExtension( const std::string& filename ) const
    \n-
    123 {
    \n-
    124 // extract file extension
    \n-
    125 auto extpos = filename.find_last_of(".");
    \n-
    126 std::string ext;
    \n-
    127 if( extpos != std::string::npos)
    \n-
    128 ext = filename.substr( extpos + 1 );
    \n-
    129
    \n-
    130 // convert all letters to lower case
    \n-
    131 for( auto& item : ext )
    \n-
    132 item = std::tolower( item );
    \n-
    133 return ext;
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    136 // read gmsh file if dimension world <= 3
    \n-
    \n-
    137 void readGmsh( const std::string& filename, std::integral_constant< bool, true > )
    \n-
    138 {
    \n-
    139 GridFactory<GridType> gridFactory;
    \n-
    140 std::vector<int> boundaryIDs;
    \n-
    141 std::vector<int> elementsIDs;
    \n-
    142 GmshReader<GridType>::read(gridFactory,filename,boundaryIDs,elementsIDs);
    \n-
    143 initialize( gridFactory, boundaryIDs,elementsIDs);
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    146 // if dimension world > 3 throw GridError
    \n-
    \n-
    147 void readGmsh( const std::string& filename, std::integral_constant< bool, false > )
    \n-
    148 {
    \n-
    149 DUNE_THROW(GridError, "GmshReader requires dimWorld <= 3." );
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    152 public:
    \n-
    153
    \n-
    154 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n-
    155 static const int dimension = GridType::dimension;
    \n+
    122 inline VTUWriter(std::ostream& stream_, OutputType outputType,
    \n+
    123 FileType fileType_)
    \n+
    124 : stream(stream_), factory(outputType, stream)
    \n+
    125 {
    \n+
    126 switch(fileType_) {
    \n+
    127 case polyData :
    \n+
    128 fileType = "PolyData";
    \n+
    129 cellName = "Lines";
    \n+
    130 break;
    \n+
    131 case unstructuredGrid :
    \n+
    132 fileType = "UnstructuredGrid";
    \n+
    133 cellName = "Cells";
    \n+
    134 break;
    \n+
    135 default :
    \n+
    136 DUNE_THROW(IOError, "VTUWriter: Unknown fileType: " << fileType_);
    \n+
    137 }
    \n+
    138 const std::string& byteOrder = getEndiannessString();
    \n+
    139
    \n+
    140 stream << indent << "<?xml version=\\"1.0\\"?>\\n";
    \n+
    141 stream << indent << "<VTKFile"
    \n+
    142 << " type=\\"" << fileType << "\\""
    \n+
    143 << " version=\\"0.1\\""
    \n+
    144 << " byte_order=\\"" << byteOrder << "\\">\\n";
    \n+
    145 ++indent;
    \n+
    146 }
    \n+
    \n+
    147
    \n+
    \n+
    149 inline ~VTUWriter() {
    \n+
    150 --indent;
    \n+
    151 stream << indent << "</VTKFile>\\n"
    \n+
    152 << std::flush;
    \n+
    153 }
    \n+
    \n+
    154
    \n
    156
    \n-
    \n-
    158 explicit GridPtr ( const std::string &filename,
    \n-
    159 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    160 : gridPtr_(),
    \n-
    161 elParam_(),
    \n-
    162 vtxParam_(),
    \n-
    163 bndParam_(),
    \n-
    164 bndId_(),
    \n-
    165 emptyParam_(),
    \n-
    166 nofElParam_( 0 ),
    \n-
    167 nofVtxParam_( 0 ),
    \n-
    168 haveBndParam_( false )
    \n-
    169 {
    \n-
    170 std::string fileExt = getFileExtension( filename );
    \n-
    171
    \n-
    172 if( fileExt == "dgf" )
    \n-
    173 {
    \n-
    174 DGFGridFactory< GridType > dgfFactory( filename, comm );
    \n-
    175 initialize( dgfFactory );
    \n-
    176 }
    \n-
    177 else if( fileExt == "msh" )
    \n-
    178 {
    \n-
    179 // Gmsh reader only compiles for dimworld <= 3
    \n-
    180 readGmsh( filename, std::integral_constant< bool, GridType::dimensionworld <= 3 > () );
    \n-
    181 }
    \n-
    182 else if( fileExt == "amc" || fileExt == "2d" || fileExt == "3d" )
    \n-
    183 {
    \n-
    184 // TODO: AlbertaReader
    \n-
    185 DUNE_THROW( NotImplemented, "GridPtr: file format '" << fileExt << "' not supported yet!" );
    \n-
    186 }
    \n-
    187 else if( fileExt == "vtu" )
    \n-
    188 {
    \n-
    189 // TODO: vtu/vtk reader
    \n-
    190 DUNE_THROW( NotImplemented, "GridPtr: file format '" << fileExt << "' not supported yet!" );
    \n+
    \n+
    167 inline void beginPointData(const std::string& scalars = "",
    \n+
    168 const std::string& vectors = "") {
    \n+
    169 switch(phase) {
    \n+
    170 case main :
    \n+
    171 stream << indent << "<PointData";
    \n+
    172 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n+
    173 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n+
    174 stream << ">\\n";
    \n+
    175 ++indent;
    \n+
    176 break;
    \n+
    177 case appended :
    \n+
    178 break;
    \n+
    179 }
    \n+
    180 }
    \n+
    \n+
    \n+
    182 inline void endPointData() {
    \n+
    183 switch(phase) {
    \n+
    184 case main :
    \n+
    185 --indent;
    \n+
    186 stream << indent << "</PointData>\\n";
    \n+
    187 break;
    \n+
    188 case appended :
    \n+
    189 break;
    \n+
    190 }
    \n
    191 }
    \n-
    192 else
    \n-
    193 {
    \n-
    194 DUNE_THROW( NotImplemented, "GridPtr: file format '" << fileExt << "' not supported yet!" );
    \n-
    195 }
    \n-
    196 }
    \n-
    \n-
    197
    \n-
    \n-
    199 explicit GridPtr ( std::istream &input,
    \n-
    200 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    201 : gridPtr_(),
    \n-
    202 elParam_(),
    \n-
    203 vtxParam_(),
    \n-
    204 bndParam_(),
    \n-
    205 bndId_(),
    \n-
    206 emptyParam_(),
    \n-
    207 nofElParam_( 0 ),
    \n-
    208 nofVtxParam_( 0 ),
    \n-
    209 haveBndParam_( false )
    \n-
    210 {
    \n-
    211 // input stream only works for DGF format right now
    \n-
    212 DGFGridFactory< GridType > dgfFactory( input, comm );
    \n-
    213 initialize( dgfFactory );
    \n-
    214 }
    \n-
    \n-
    215
    \n-
    \n-\n-
    218 : gridPtr_(),
    \n-
    219 elParam_(),
    \n-
    220 vtxParam_(),
    \n-
    221 bndParam_(),
    \n-
    222 bndId_(),
    \n-
    223 emptyParam_(),
    \n-
    224 nofElParam_(0),
    \n-
    225 nofVtxParam_(0),
    \n-
    226 haveBndParam_( false )
    \n-
    227 {}
    \n-
    \n-
    228
    \n-
    \n-
    230 explicit GridPtr( GridType *grd )
    \n-
    231 : gridPtr_(grd),
    \n-
    232 elParam_(),
    \n-
    233 vtxParam_(),
    \n-
    234 bndParam_(),
    \n-
    235 bndId_(),
    \n-
    236 emptyParam_(),
    \n-
    237 nofElParam_(0),
    \n-
    238 nofVtxParam_(0),
    \n-
    239 haveBndParam_( false )
    \n-
    240 {}
    \n-
    \n-
    241
    \n-
    243 GridPtr( const GridPtr &org ) = default;
    \n-
    244
    \n-
    \n-\n-
    247 {
    \n-
    248 gridPtr_ = org.gridPtr_;
    \n-
    249 elParam_ = org.elParam_;
    \n-
    250 vtxParam_ = org.vtxParam_;
    \n-
    251 bndParam_ = org.bndParam_;
    \n-
    252 bndId_ = org.bndId_;
    \n-\n-
    254
    \n-\n-\n-\n-
    258 return *this;
    \n-
    259 }
    \n-
    \n-
    260
    \n-
    \n-
    262 GridPtr& operator = (GridType * grd)
    \n-
    263 {
    \n-
    264 gridPtr_ = mygrid_ptr( grd );
    \n-
    265 elParam_.resize(0);
    \n-
    266 vtxParam_.resize(0);
    \n-
    267 bndParam_.resize(0);
    \n-
    268 bndId_.resize(0);
    \n-
    269 emptyParam_.resize(0);
    \n-
    270
    \n-
    271 nofVtxParam_ = 0;
    \n-
    272 nofElParam_ = 0;
    \n-
    273 haveBndParam_ = false;
    \n-
    274 return *this;
    \n-
    275 }
    \n-
    \n-
    276
    \n-
    \n-
    278 GridType& operator*() {
    \n-
    279 return *gridPtr_;
    \n-
    280 }
    \n-
    \n-
    281
    \n-
    \n-
    283 GridType* operator->() {
    \n-
    284 return gridPtr_.operator -> ();
    \n-
    285 }
    \n-
    \n-
    286
    \n-
    \n-
    288 const GridType& operator*() const {
    \n-
    289 return *gridPtr_;
    \n-
    290 }
    \n-
    \n-
    291
    \n-
    \n-
    293 const GridType* operator->() const {
    \n-
    294 return gridPtr_.operator -> ();
    \n-
    295 }
    \n-
    \n-
    296
    \n-
    298 GridType* release () { return gridPtr_.release(); }
    \n-
    299
    \n-
    \n-
    301 int nofParameters(int cdim) const {
    \n-
    302 switch (cdim) {
    \n-
    303 case 0 : return nofElParam_; break;
    \n-
    304 case GridType::dimension : return nofVtxParam_; break;
    \n-
    305 }
    \n-
    306 return 0;
    \n-
    307 }
    \n-
    \n-
    308
    \n-
    310 template <class Entity>
    \n-
    \n-
    311 int nofParameters ( const Entity & ) const
    \n-
    312 {
    \n-
    313 return nofParameters( (int) Entity::codimension );
    \n-
    314 }
    \n-
    \n-
    315
    \n-
    317 template< class GridImp, class IntersectionImp >
    \n-
    \n-\n-
    319 {
    \n-
    320 return parameters( intersection ).size();
    \n-
    321 }
    \n-
    \n-
    322
    \n-
    324 template <class Entity>
    \n-
    \n-
    325 const std::vector< double > &parameters ( const Entity &entity ) const
    \n-
    326 {
    \n-
    327 typedef typename GridType::LevelGridView GridView;
    \n-
    328 GridView gridView = gridPtr_->levelGridView( 0 );
    \n-
    329 switch( (int)Entity::codimension )
    \n-
    330 {
    \n-
    331 case 0 :
    \n-
    332 if( nofElParam_ > 0 )
    \n-
    333 {
    \n-
    334 assert( (unsigned int)gridView.indexSet().index( entity ) < elParam_.size() );
    \n-
    335 return elParam_[ gridView.indexSet().index( entity ) ];
    \n-
    336 }
    \n-
    337 break;
    \n-
    338 case GridType::dimension :
    \n-
    339 if( nofVtxParam_ > 0 )
    \n-
    340 {
    \n-
    341 assert( (unsigned int)gridView.indexSet().index( entity ) < vtxParam_.size() );
    \n-
    342 return vtxParam_[ gridView.indexSet().index( entity ) ];
    \n-
    343 }
    \n-
    344 break;
    \n-
    345 }
    \n-
    346 return emptyParam_;
    \n-
    347 }
    \n-
    \n-
    348
    \n-
    350 template< class GridImp, class IntersectionImp >
    \n-
    \n-\n-
    352 {
    \n-
    353 // if no parameters given return empty vector
    \n-
    354 if ( !haveBndParam_ )
    \n-\n-
    356
    \n-
    357 return bndParam_[ intersection.boundarySegmentIndex() ];
    \n-
    358 }
    \n-
    \n-
    359
    \n-
    \n-\n-
    361 {
    \n-
    362 if( gridPtr_->comm().size() > 1 )
    \n-
    363 {
    \n-
    364 DataHandle dh(*this);
    \n-
    365 gridPtr_->levelGridView( 0 ).communicate( dh.interface(), InteriorBorder_All_Interface,ForwardCommunication );
    \n-
    366 }
    \n-
    367 }
    \n
    \n+
    192
    \n+
    194
    \n+
    \n+
    205 inline void beginCellData(const std::string& scalars = "",
    \n+
    206 const std::string& vectors = "") {
    \n+
    207 switch(phase) {
    \n+
    208 case main :
    \n+
    209 stream << indent << "<CellData";
    \n+
    210 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n+
    211 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n+
    212 stream << ">\\n";
    \n+
    213 ++indent;
    \n+
    214 break;
    \n+
    215 case appended :
    \n+
    216 break;
    \n+
    217 }
    \n+
    218 }
    \n+
    \n+
    \n+
    220 inline void endCellData() {
    \n+
    221 switch(phase) {
    \n+
    222 case main :
    \n+
    223 --indent;
    \n+
    224 stream << indent << "</CellData>\\n";
    \n+
    225 break;
    \n+
    226 case appended :
    \n+
    227 break;
    \n+
    228 }
    \n+
    229 }
    \n+
    \n+
    230
    \n+
    232
    \n+
    \n+
    238 inline void beginPoints() {
    \n+
    239 switch(phase) {
    \n+
    240 case main :
    \n+
    241 stream << indent << "<Points>\\n";
    \n+
    242 ++indent;
    \n+
    243 break;
    \n+
    244 case appended :
    \n+
    245 break;
    \n+
    246 }
    \n+
    247 }
    \n+
    \n+
    \n+
    249 inline void endPoints() {
    \n+
    250 switch(phase) {
    \n+
    251 case main :
    \n+
    252 --indent;
    \n+
    253 stream << indent << "</Points>\\n";
    \n+
    254 break;
    \n+
    255 case appended :
    \n+
    256 break;
    \n+
    257 }
    \n+
    258 }
    \n+
    \n+
    259
    \n+
    261
    \n+
    \n+
    274 inline void beginCells() {
    \n+
    275 switch(phase) {
    \n+
    276 case main :
    \n+
    277 stream << indent << "<" << cellName << ">\\n";
    \n+
    278 ++indent;
    \n+
    279 break;
    \n+
    280 case appended :
    \n+
    281 break;
    \n+
    282 }
    \n+
    283 }
    \n+
    \n+
    \n+
    285 inline void endCells() {
    \n+
    286 switch(phase) {
    \n+
    287 case main :
    \n+
    288 --indent;
    \n+
    289 stream << indent << "</" << cellName << ">\\n";
    \n+
    290 break;
    \n+
    291 case appended :
    \n+
    292 break;
    \n+
    293 }
    \n+
    294 }
    \n+
    \n+
    295
    \n+
    297
    \n+
    \n+
    310 inline void beginMain(unsigned ncells, unsigned npoints) {
    \n+
    311 stream << indent << "<" << fileType << ">\\n";
    \n+
    312 ++indent;
    \n+
    313 stream << indent << "<Piece"
    \n+
    314 << " NumberOf" << cellName << "=\\"" << ncells << "\\""
    \n+
    315 << " NumberOfPoints=\\"" << npoints << "\\">\\n";
    \n+
    316 ++indent;
    \n+
    317 phase = main;
    \n+
    318 }
    \n+
    \n+
    \n+
    320 inline void endMain() {
    \n+
    321 --indent;
    \n+
    322 stream << indent << "</Piece>\\n";
    \n+
    323 --indent;
    \n+
    324 stream << indent << "</" << fileType << ">\\n";
    \n+
    325 }
    \n+
    \n+
    326
    \n+
    328
    \n+
    \n+
    345 inline bool beginAppended() {
    \n+
    346 doAppended = factory.beginAppended();
    \n+
    347 if(doAppended) {
    \n+
    348 const std::string& encoding = factory.appendedEncoding();
    \n+
    349 stream << indent << "<AppendedData"
    \n+
    350 << " encoding=\\"" << encoding << "\\">\\n";
    \n+
    351 ++indent;
    \n+
    352 // mark begin of data
    \n+
    353 stream << indent << "_";
    \n+
    354 }
    \n+
    355 phase = appended;
    \n+
    356 return doAppended;
    \n+
    357 }
    \n+
    \n+
    \n+
    359 inline void endAppended() {
    \n+
    360 if(doAppended) {
    \n+
    361 stream << "\\n";
    \n+
    362 --indent;
    \n+
    363 stream << indent << "</AppendedData>\\n";
    \n+
    364 }
    \n+
    365 }
    \n+
    \n+
    366
    \n
    368
    \n-
    \n-\n-
    370 {
    \n-
    371 if( gridPtr_->comm().size() > 1 )
    \n-
    372 {
    \n-
    373 DataHandle dh(*this);
    \n-
    374 gridPtr_->loadBalance( dh.interface() );
    \n-
    375 gridPtr_->levelGridView( 0 ).communicate( dh.interface(), InteriorBorder_All_Interface,ForwardCommunication );
    \n-
    376 }
    \n-
    377 }
    \n-
    \n-
    378
    \n-
    379 protected:
    \n-
    380 template< class Range >
    \n-
    \n-
    381 static bool isEmpty ( Range &&range )
    \n-
    382 {
    \n-
    383 return range.begin() == range.end();
    \n-
    384 }
    \n-
    \n-
    385
    \n-
    \n-\n-
    387 {
    \n-
    388 gridPtr_ = mygrid_ptr( dgfFactory.grid() );
    \n-
    389
    \n-
    390 const auto gridView = gridPtr_->levelGridView( 0 );
    \n-
    391 const auto &indexSet = gridView.indexSet();
    \n+
    \n+
    380 DataArrayWriter* makeArrayWriter(const std::string& name,
    \n+
    381 unsigned ncomps, unsigned nitems,
    \n+
    382 Precision prec) {
    \n+
    383 return factory.make(name, ncomps, nitems, indent, prec);
    \n+
    384 }
    \n+
    \n+
    385 };
    \n+
    \n+
    386
    \n+
    387 } // namespace VTK
    \n+
    388
    \n+
    390
    \n+
    391} // namespace Dune
    \n
    392
    \n-
    393 nofElParam_ = dgfFactory.template numParameters< 0 >();
    \n-
    394 nofVtxParam_ = dgfFactory.template numParameters< dimension >();
    \n-\n-
    396
    \n-
    397 std::array< int, 3 > nofParams = {{ nofElParam_, nofVtxParam_, static_cast< int >( haveBndParam_ ) }};
    \n-
    398 gridView.comm().max( nofParams.data(), nofParams.size() );
    \n-
    399
    \n-
    400 // empty grids have no parameters associated
    \n-
    401 if( isEmpty( elements( gridView, Partitions::interiorBorder ) ) )
    \n-
    402 {
    \n-
    403 nofElParam_ = nofParams[ 0 ];
    \n-
    404 nofVtxParam_ = nofParams[ 1 ];
    \n-
    405 }
    \n-
    406
    \n-
    407 // boundary parameters may be empty
    \n-
    408 haveBndParam_ = static_cast< bool >( nofParams[ 2 ] );
    \n-
    409
    \n-
    410 if( (nofElParam_ != nofParams[ 0 ]) || (nofVtxParam_ != nofParams[ 1 ]) )
    \n-
    411 DUNE_THROW( DGFException, "Number of parameters differs between processes" );
    \n-
    412
    \n-
    413 elParam_.resize( nofElParam_ > 0 ? indexSet.size( 0 ) : 0 );
    \n-
    414 vtxParam_.resize( nofVtxParam_ > 0 ? indexSet.size( dimension ) : 0 );
    \n-
    415
    \n-
    416 bndId_.resize( indexSet.size( 1 ) );
    \n-
    417 if( haveBndParam_ )
    \n-
    418 bndParam_.resize( gridPtr_->numBoundarySegments() );
    \n-
    419
    \n-
    420 for( const auto &element : elements( gridView, Partitions::interiorBorder ) )
    \n-
    421 {
    \n-
    422 if( nofElParam_ > 0 )
    \n-
    423 {
    \n-
    424 std::swap( elParam_[ indexSet.index( element ) ], dgfFactory.parameter( element ) );
    \n-
    425 assert( elParam_[ indexSet.index( element ) ].size() == static_cast< std::size_t >( nofElParam_ ) );
    \n-
    426 }
    \n-
    427
    \n-
    428 if( nofVtxParam_ > 0 )
    \n-
    429 {
    \n-
    430 for( unsigned int v = 0, n = element.subEntities( dimension ); v < n; ++v )
    \n-
    431 {
    \n-
    432 const auto index = indexSet.subIndex( element, v, dimension );
    \n-
    433 if( vtxParam_[ index ].empty() )
    \n-
    434 std::swap( vtxParam_[ index ], dgfFactory.parameter( element.template subEntity< dimension >( v ) ) );
    \n-
    435 assert( vtxParam_[ index ].size() == static_cast< std::size_t >( nofVtxParam_ ) );
    \n-
    436 }
    \n-
    437 }
    \n-
    438
    \n-
    439 if( element.hasBoundaryIntersections() )
    \n-
    440 {
    \n-
    441 for( const auto &intersection : intersections( gridView, element ) )
    \n-
    442 {
    \n-
    443 // dirty hack: check for "none" to make corner point grid work
    \n-
    444 if( !intersection.boundary() || intersection.type().isNone() )
    \n-
    445 continue;
    \n-
    446
    \n-
    447 const auto k = indexSet.subIndex( element, intersection.indexInInside(), 1 );
    \n-
    448 bndId_[ k ] = dgfFactory.boundaryId( intersection );
    \n-
    449 if( haveBndParam_ )
    \n-
    450 bndParam_[ intersection.boundarySegmentIndex() ] = dgfFactory.boundaryParameter( intersection );
    \n-
    451 }
    \n-
    452 }
    \n-
    453 }
    \n-
    454 }
    \n-
    \n-
    455
    \n-
    \n-\n-
    457 std::vector<int>& boundaryIds,
    \n-
    458 std::vector<int>& elementIds )
    \n-
    459 {
    \n-
    460 gridPtr_ = mygrid_ptr( factory.createGrid().release() );
    \n-
    461
    \n-
    462 const auto& gridView = gridPtr_->leafGridView();
    \n-
    463 const auto& indexSet = gridView.indexSet();
    \n-
    464
    \n-
    465 nofElParam_ = elementIds.empty() ? 0 : 1 ;
    \n-
    466 nofVtxParam_ = 0;
    \n-
    467 haveBndParam_ = boundaryIds.empty() ? 0 : 1 ;
    \n-
    468
    \n-
    469 std::array< int, 3 > nofParams = {{ nofElParam_, nofVtxParam_, static_cast< int >( haveBndParam_ ) }};
    \n-
    470 gridView.comm().max( nofParams.data(), nofParams.size() );
    \n-
    471
    \n-
    472 // empty grids have no parameters associated
    \n-
    473 if( isEmpty( elements( gridView, Partitions::interiorBorder ) ) )
    \n-
    474 {
    \n-
    475 nofElParam_ = nofParams[ 0 ];
    \n-
    476 }
    \n-
    477
    \n-
    478 // boundary parameters may be empty
    \n-
    479 haveBndParam_ = static_cast< bool >( nofParams[ 2 ] );
    \n-
    480
    \n-
    481 // Reorder boundary IDs according to the insertion index
    \n-
    482 if(!boundaryIds.empty() || !elementIds.empty() )
    \n-
    483 {
    \n-
    484 bndParam_.resize( boundaryIds.size() );
    \n-
    485 elParam_.resize( elementIds.size(), std::vector<double>(1) );
    \n-
    486 for(const auto& entity : elements( gridView ))
    \n-
    487 {
    \n-
    488 elParam_[ indexSet.index( entity ) ][ 0 ] = elementIds[ factory.insertionIndex( entity ) ];
    \n-
    489 if( haveBndParam_ )
    \n-
    490 {
    \n-
    491 for(const auto& intersection : intersections( gridView,entity) )
    \n-
    492 {
    \n-
    493 if(intersection.boundary())
    \n-
    494 {
    \n-
    495 // DGFBoundaryParameter::type is of type string.
    \n-
    496 bndParam_[intersection.boundarySegmentIndex()] = std::to_string(boundaryIds[factory.insertionIndex(intersection)]);
    \n-
    497 }
    \n-
    498 }
    \n-
    499 }
    \n-
    500 }
    \n-
    501 }
    \n-
    502 }
    \n-
    \n-
    503
    \n-
    504 template <class Entity>
    \n-
    \n-
    505 std::vector< double > &params ( const Entity &entity )
    \n-
    506 {
    \n-
    507 const auto gridView = gridPtr_->levelGridView( 0 );
    \n-
    508 switch( (int)Entity::codimension )
    \n-
    509 {
    \n-
    510 case 0 :
    \n-
    511 if( nofElParam_ > 0 ) {
    \n-
    512 if ( gridView.indexSet().index( entity ) >= elParam_.size() )
    \n-
    513 elParam_.resize( gridView.indexSet().index( entity ) );
    \n-
    514 return elParam_[ gridView.indexSet().index( entity ) ];
    \n-
    515 }
    \n-
    516 break;
    \n-
    517 case GridType::dimension :
    \n-
    518 if( nofVtxParam_ > 0 ) {
    \n-
    519 if ( gridView.indexSet().index( entity ) >= vtxParam_.size() )
    \n-
    520 vtxParam_.resize( gridView.indexSet().index( entity ) );
    \n-
    521 return vtxParam_[ gridView.indexSet().index( entity ) ];
    \n-
    522 }
    \n-
    523 break;
    \n-
    524 }
    \n-
    525 return emptyParam_;
    \n-
    526 }
    \n-
    \n-
    527
    \n-
    \n-
    528 void setNofParams( int cdim, int nofP )
    \n-
    529 {
    \n-
    530 switch (cdim) {
    \n-
    531 case 0 : nofElParam_ = nofP; break;
    \n-
    532 case GridType::dimension : nofVtxParam_ = nofP; break;
    \n-
    533 }
    \n-
    534 }
    \n-
    \n-
    535
    \n-
    \n-\n-
    537 : public CommDataHandleIF< DataHandle, char >
    \n-
    538 {
    \n-
    \n-
    539 explicit DataHandle ( GridPtr &gridPtr )
    \n-
    540 : gridPtr_( gridPtr ), idSet_( gridPtr->localIdSet() )
    \n-
    541 {
    \n-
    542 const auto gridView = gridPtr_->levelGridView( 0 );
    \n-
    543 const auto &indexSet = gridView.indexSet();
    \n-
    544
    \n-
    545 for( const auto &element : elements( gridView, Partitions::interiorBorder ) )
    \n-
    546 {
    \n-
    547 if( gridPtr_.nofElParam_ > 0 )
    \n-
    548 std::swap( gridPtr_.elParam_[ indexSet.index( element ) ], elData_[ idSet_.id( element ) ] );
    \n-
    549
    \n-
    550 if( gridPtr_.nofVtxParam_ > 0 )
    \n-
    551 {
    \n-
    552 for( unsigned int v = 0, n = element.subEntities( dimension ); v < n; ++v )
    \n-
    553 {
    \n-
    554 const auto index = indexSet.subIndex( element, v, dimension );
    \n-
    555 if ( !gridPtr_.vtxParam_[ index ].empty() )
    \n-
    556 std::swap( gridPtr_.vtxParam_[ index ], vtxData_[ idSet_.subId( element, v, dimension ) ] );
    \n-
    557 }
    \n-
    558 }
    \n-
    559
    \n-
    560 if( element.hasBoundaryIntersections() )
    \n-
    561 {
    \n-
    562 for( const auto &intersection : intersections( gridView, element ) )
    \n-
    563 {
    \n-
    564 // dirty hack: check for "none" to make corner point grid work
    \n-
    565 if( !intersection.boundary() || intersection.type().isNone() )
    \n-
    566 continue;
    \n-
    567
    \n-
    568 const int i = intersection.indexInInside();
    \n-
    569 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];
    \n-
    570 bndData.first = gridPtr_.bndId_[ indexSet.subIndex( element, i, 1 ) ];
    \n-
    571 if( gridPtr_.haveBndParam_ )
    \n-
    572 std::swap( bndData.second, gridPtr_.bndParam_[ intersection.boundarySegmentIndex() ] );
    \n-
    573 }
    \n-
    574 }
    \n-
    575 }
    \n-
    576 }
    \n-
    \n-
    577
    \n-
    578 DataHandle ( const DataHandle & ) = delete;
    \n-
    579 DataHandle ( DataHandle && ) = delete;
    \n-
    580
    \n-
    \n-\n-
    582 {
    \n-
    583 const auto gridView = gridPtr_->levelGridView( 0 );
    \n-
    584 const auto &indexSet = gridView.indexSet();
    \n-
    585
    \n-
    586 if( gridPtr_.nofElParam_ > 0 )
    \n-
    587 gridPtr_.elParam_.resize( indexSet.size( 0 ) );
    \n-
    588 if( gridPtr_.nofVtxParam_ > 0 )
    \n-
    589 gridPtr_.vtxParam_.resize( indexSet.size( dimension ) );
    \n-
    590 gridPtr_.bndId_.resize( indexSet.size( 1 ) );
    \n-
    591 if( gridPtr_.haveBndParam_ )
    \n-
    592 gridPtr_.bndParam_.resize( gridPtr_->numBoundarySegments() );
    \n-
    593
    \n-
    594 for( const auto &element : elements( gridView, Partitions::all ) )
    \n-
    595 {
    \n-
    596 if( gridPtr_.nofElParam_ > 0 )
    \n-
    597 {
    \n-
    598 std::swap( gridPtr_.elParam_[ indexSet.index( element ) ], elData_[ idSet_.id( element ) ] );
    \n-
    599 assert( gridPtr_.elParam_[ indexSet.index( element ) ].size() == static_cast< std::size_t >( gridPtr_.nofElParam_ ) );
    \n-
    600 }
    \n-
    601
    \n-
    602 if( gridPtr_.nofVtxParam_ > 0 )
    \n-
    603 {
    \n-
    604 for( unsigned int v = 0; v < element.subEntities( dimension ); ++v )
    \n-
    605 {
    \n-
    606 const auto index = indexSet.subIndex( element, v, dimension );
    \n-
    607 if( gridPtr_.vtxParam_[ index ].empty() )
    \n-
    608 std::swap( gridPtr_.vtxParam_[ index ], vtxData_[ idSet_.subId( element, v, dimension ) ] );
    \n-
    609 assert( gridPtr_.vtxParam_[ index ].size() == static_cast< std::size_t >( gridPtr_.nofVtxParam_ ) );
    \n-
    610 }
    \n-
    611 }
    \n-
    612
    \n-
    613 if( element.hasBoundaryIntersections() )
    \n-
    614 {
    \n-
    615 for( const auto &intersection : intersections( gridView, element ) )
    \n-
    616 {
    \n-
    617 // dirty hack: check for "none" to make corner point grid work
    \n-
    618 if( !intersection.boundary() || intersection.type().isNone() )
    \n-
    619 continue;
    \n-
    620
    \n-
    621 const int i = intersection.indexInInside();
    \n-
    622 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];
    \n-
    623 gridPtr_.bndId_[ indexSet.subIndex( element, i, 1 ) ] = bndData.first;
    \n-
    624 if( gridPtr_.haveBndParam_ )
    \n-
    625 std::swap( bndData.second, gridPtr_.bndParam_[ intersection.boundarySegmentIndex() ] );
    \n-
    626 }
    \n-
    627 }
    \n-
    628 }
    \n-
    629 }
    \n-
    630
    \n-\n-
    \n-
    632
    \n-
    \n-
    633 bool contains ( int dim, int codim ) const
    \n-
    634 {
    \n-
    635 assert( dim == dimension );
    \n-
    636 // do not use a switch statement, because dimension == 1 is possible
    \n-
    637 return (codim == 1) || ((codim == dimension) && (gridPtr_.nofVtxParam_ > 0)) || ((codim == 0) && (gridPtr_.nofElParam_ > 0));
    \n-
    638 }
    \n-
    \n-
    639
    \n-
    640 bool fixedSize (int /* dim */, int /* codim */) const { return false; }
    \n-
    641
    \n-
    642 template< class Entity >
    \n-
    \n-
    643 std::size_t size ( const Entity &entity ) const
    \n-
    644 {
    \n-
    645 std::size_t totalSize = 0;
    \n-
    646
    \n-
    647 // do not use a switch statement, because dimension == 1 is possible
    \n-
    648 if( (Entity::codimension == 0) && (gridPtr_.nofElParam_ > 0) )
    \n-
    649 {
    \n-
    650 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofElParam_ ) );
    \n-
    651 for( double &v : elData_[ idSet_.id( entity ) ] )
    \n-
    652 totalSize += dataSize( v );
    \n-
    653 }
    \n-
    654
    \n-
    655 if( (Entity::codimension == dimension) && (gridPtr_.nofVtxParam_ > 0) )
    \n-
    656 {
    \n-
    657 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofVtxParam_ ) );
    \n-
    658 for( double &v : vtxData_[ idSet_.id( entity ) ] )
    \n-
    659 totalSize += dataSize( v );
    \n-
    660 }
    \n-
    661
    \n-
    662 if( Entity::codimension == 1 )
    \n-
    663 {
    \n-
    664 const auto bndData = bndData_.find( idSet_.id( entity ) );
    \n-
    665 if( bndData != bndData_.end() )
    \n-
    666 totalSize += dataSize( bndData->second.first ) + dataSize( bndData->second.second );
    \n-
    667 }
    \n-
    668
    \n-
    669 return totalSize;
    \n-
    670 }
    \n-
    \n-
    671
    \n-
    672 template< class Buffer, class Entity >
    \n-
    \n-
    673 void gather ( Buffer &buffer, const Entity &entity ) const
    \n-
    674 {
    \n-
    675 // do not use a switch statement, because dimension == 1 is possible
    \n-
    676 if( (Entity::codimension == 0) && (gridPtr_.nofElParam_ > 0) )
    \n-
    677 {
    \n-
    678 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofElParam_ ) );
    \n-
    679 for( double &v : elData_[ idSet_.id( entity ) ] )
    \n-
    680 write( buffer, v );
    \n-
    681 }
    \n-
    682
    \n-
    683 if( (Entity::codimension == dimension) && (gridPtr_.nofVtxParam_ > 0) )
    \n-
    684 {
    \n-
    685 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofVtxParam_ ) );
    \n-
    686 for( double &v : vtxData_[ idSet_.id( entity ) ] )
    \n-
    687 write( buffer, v );
    \n-
    688 }
    \n-
    689
    \n-
    690 if( Entity::codimension == 1 )
    \n-
    691 {
    \n-
    692 const auto bndData = bndData_.find( idSet_.id( entity ) );
    \n-
    693 if( bndData != bndData_.end() )
    \n-
    694 {
    \n-
    695 write( buffer, bndData->second.first );
    \n-
    696 write( buffer, bndData->second.second );
    \n-
    697 }
    \n-
    698 }
    \n-
    699 }
    \n-
    \n-
    700
    \n-
    701 template< class Buffer, class Entity >
    \n-
    \n-
    702 void scatter ( Buffer &buffer, const Entity &entity, std::size_t n )
    \n-
    703 {
    \n-
    704 // do not use a switch statement, because dimension == 1 is possible
    \n-
    705 if( (Entity::codimension == 0) && (gridPtr_.nofElParam_ > 0) )
    \n-
    706 {
    \n-
    707 auto &p = elData_[ idSet_.id( entity ) ];
    \n-
    708 p.resize( gridPtr_.nofElParam_ );
    \n-
    709 for( double &v : p )
    \n-
    710 read( buffer, v, n );
    \n-
    711 }
    \n-
    712
    \n-
    713 if( (Entity::codimension == dimension) && (gridPtr_.nofVtxParam_ > 0) )
    \n-
    714 {
    \n-
    715 auto &p = vtxData_[ idSet_.id( entity ) ];
    \n-
    716 p.resize( gridPtr_.nofVtxParam_ );
    \n-
    717 for( double &v : p )
    \n-
    718 read( buffer, v, n );
    \n-
    719 }
    \n-
    720
    \n-
    721 if( (Entity::codimension == 1) && (n > 0) )
    \n-
    722 {
    \n-
    723 auto &bndData = bndData_[ idSet_.id( entity ) ];
    \n-
    724 read( buffer, bndData.first, n );
    \n-
    725 read( buffer, bndData.second, n );
    \n-
    726 }
    \n-
    727
    \n-
    728 assert( n == 0 );
    \n-
    729 }
    \n-
    \n-
    730
    \n-
    731 private:
    \n-
    732 template< class T >
    \n-
    733 static std::enable_if_t< std::is_trivially_copyable< T >::value, std::size_t > dataSize ( const T & /* value */ )
    \n-
    734 {
    \n-
    735 return sizeof( T );
    \n-
    736 }
    \n-
    737
    \n-
    738 static std::size_t dataSize ( const std::string &s )
    \n-
    739 {
    \n-
    740 return dataSize( s.size() ) + s.size();
    \n-
    741 }
    \n-
    742
    \n-
    743 template< class Buffer, class T >
    \n-
    744 static std::enable_if_t< std::is_trivially_copyable< T >::value > write ( Buffer &buffer, const T &value )
    \n-
    745 {
    \n-
    746 std::array< char, sizeof( T ) > bytes;
    \n-
    747 std::memcpy( bytes.data(), &value, sizeof( T ) );
    \n-
    748 for( char &b : bytes )
    \n-
    749 buffer.write( b );
    \n-
    750 }
    \n-
    751
    \n-
    752 template< class Buffer >
    \n-
    753 static void write ( Buffer &buffer, const std::string &s )
    \n-
    754 {
    \n-
    755 write( buffer, s.size() );
    \n-
    756 for( const char &c : s )
    \n-
    757 buffer.write( c );
    \n-
    758 }
    \n-
    759
    \n-
    760 template< class Buffer, class T >
    \n-
    761 static std::enable_if_t< std::is_trivially_copyable< T >::value > read ( Buffer &buffer, T &value, std::size_t &n )
    \n-
    762 {
    \n-
    763 assert( n >= sizeof( T ) );
    \n-
    764 n -= sizeof( T );
    \n-
    765
    \n-
    766 std::array< char, sizeof( T ) > bytes;
    \n-
    767 for( char &b : bytes )
    \n-
    768 buffer.read( b );
    \n-
    769 std::memcpy( &value, bytes.data(), sizeof( T ) );
    \n-
    770 }
    \n-
    771
    \n-
    772 template< class Buffer >
    \n-
    773 static void read ( Buffer &buffer, std::string &s, std::size_t &n )
    \n-
    774 {
    \n-
    775 std::size_t size;
    \n-
    776 read( buffer, size, n );
    \n-
    777 s.resize( size );
    \n-
    778
    \n-
    779 assert( n >= size );
    \n-
    780 n -= size;
    \n-
    781
    \n-
    782 for( char &c : s )
    \n-
    783 buffer.read( c );
    \n-
    784 }
    \n-
    785
    \n-
    786 GridPtr &gridPtr_;
    \n-
    787 const typename GridType::LocalIdSet &idSet_;
    \n-
    788 mutable std::map< typename GridType::LocalIdSet::IdType, std::vector< double > > elData_, vtxData_;
    \n-
    789 mutable std::map< typename GridType::LocalIdSet::IdType, std::pair< int, DGFBoundaryParameter::type > > bndData_;
    \n-
    790 };
    \n-
    \n-
    791
    \n-
    792 // grid auto pointer
    \n-\n-
    794 // element and vertex parameters
    \n-
    795 std::vector< std::vector< double > > elParam_;
    \n-
    796 std::vector< std::vector< double > > vtxParam_;
    \n-
    797 std::vector< DGFBoundaryParameter::type > bndParam_;
    \n-
    798 std::vector< int > bndId_;
    \n-
    799 std::vector< double > emptyParam_;
    \n-
    800
    \n-\n-\n-\n-
    804 }; // end of class GridPtr
    \n-
    \n-
    805
    \n-
    806} // end namespace Dune
    \n-
    807
    \n-
    808#endif
    \n-\n-\n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n-\n-\n-\n-\n-\n-
    @ ForwardCommunication
    communicate as given in InterfaceType
    Definition gridenums.hh:171
    \n-
    @ InteriorBorder_All_Interface
    send interior and border, receive all entities
    Definition gridenums.hh:88
    \n-
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n-
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n+
    393#endif // DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH
    \n+
    Data array writers for the VTKWriter.
    \n+
    Common stuff for the VTKWriter.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    constexpr All all
    PartitionSet for all partitions.
    Definition partitionset.hh:296
    \n-
    constexpr InteriorBorder interiorBorder
    PartitionSet for the interior and border partitions.
    Definition partitionset.hh:287
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    int boundaryId(const Intersection &intersection) const
    Definition dgfgridfactory.hh:102
    \n-
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfgridfactory.hh:158
    \n-
    Grid * grid()
    Definition dgfgridfactory.hh:90
    \n-
    std::vector< double > & parameter(const Element &element)
    Definition dgfgridfactory.hh:124
    \n-
    bool haveBoundaryParameters() const
    Definition dgfgridfactory.hh:151
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    size_t boundarySegmentIndex() const
    index of the boundary segment within the macro grid
    Definition common/intersection.hh:236
    \n-
    CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
    Definition datahandleif.hh:78
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n-
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    virtual unsigned int insertionIndex(const typename Codim< 0 >::Entity &entity) const
    obtain an element's insertion index
    Definition common/gridfactory.hh:220
    \n-
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n-
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n-
    Class for constructing grids from DGF files.
    Definition gridptr.hh:66
    \n-
    GridPtr(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor given a std::istream
    Definition gridptr.hh:199
    \n-
    const std::vector< double > & parameters(const Entity &entity) const
    get parameters defined for each codim 0 und dim entity on the grid through the grid file
    Definition gridptr.hh:325
    \n-
    GridPtr()
    Default constructor, creating empty GridPtr.
    Definition gridptr.hh:217
    \n-
    const GridType & operator*() const
    return const reference to GridType instance
    Definition gridptr.hh:288
    \n-
    bool haveBndParam_
    Definition gridptr.hh:803
    \n-
    static const int dimension
    Definition gridptr.hh:155
    \n-
    std::vector< int > bndId_
    Definition gridptr.hh:798
    \n-
    void setNofParams(int cdim, int nofP)
    Definition gridptr.hh:528
    \n-
    void loadBalance()
    Definition gridptr.hh:369
    \n-
    std::vector< DGFBoundaryParameter::type > bndParam_
    Definition gridptr.hh:797
    \n-
    void initialize(GridFactory< GridType > &factory, std::vector< int > &boundaryIds, std::vector< int > &elementIds)
    Definition gridptr.hh:456
    \n-
    GridPtr(GridType *grd)
    Constructor storing given pointer to internal auto pointer.
    Definition gridptr.hh:230
    \n-
    int nofElParam_
    Definition gridptr.hh:801
    \n-
    const DGFBoundaryParameter::type & parameters(const Intersection< GridImp, IntersectionImp > &intersection) const
    get parameters for intersection
    Definition gridptr.hh:351
    \n-
    GridType & operator*()
    return reference to GridType instance
    Definition gridptr.hh:278
    \n-
    static bool isEmpty(Range &&range)
    Definition gridptr.hh:381
    \n-
    int nofParameters(const Entity &) const
    get parameters defined for given entity
    Definition gridptr.hh:311
    \n-
    GridPtr(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor given the name of a DGF file
    Definition gridptr.hh:158
    \n-
    std::vector< std::vector< double > > elParam_
    Definition gridptr.hh:795
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition gridptr.hh:154
    \n-
    GridPtr & operator=(const GridPtr &org)
    assignment of grid pointer
    Definition gridptr.hh:246
    \n-
    int nofParameters(int cdim) const
    get number of parameters defined for a given codimension
    Definition gridptr.hh:301
    \n-
    int nofParameters(const Intersection< GridImp, IntersectionImp > &intersection) const
    get number of parameters defined for a given intersection
    Definition gridptr.hh:318
    \n-
    std::vector< double > emptyParam_
    Definition gridptr.hh:799
    \n-
    mygrid_ptr gridPtr_
    Definition gridptr.hh:793
    \n-
    void readGmsh(const std::string &filename, std::integral_constant< bool, false >)
    Definition gridptr.hh:147
    \n-
    void readGmsh(const std::string &filename, std::integral_constant< bool, true >)
    Definition gridptr.hh:137
    \n-
    std::vector< double > & params(const Entity &entity)
    Definition gridptr.hh:505
    \n-
    void initialize(DGFGridFactory< GridType > &dgfFactory)
    Definition gridptr.hh:386
    \n-
    GridPtr(const GridPtr &org)=default
    Copy constructor, copies internal auto pointer.
    \n-
    std::string getFileExtension(const std::string &filename) const
    Definition gridptr.hh:122
    \n-
    const GridType * operator->() const
    return const pointer to GridType instance
    Definition gridptr.hh:293
    \n-
    GridType * release()
    release pointer from internal ownership
    Definition gridptr.hh:298
    \n-
    void communicate()
    Definition gridptr.hh:360
    \n-
    std::vector< std::vector< double > > vtxParam_
    Definition gridptr.hh:796
    \n-
    GridType * operator->()
    return pointer to GridType instance
    Definition gridptr.hh:283
    \n-
    int nofVtxParam_
    Definition gridptr.hh:802
    \n-
    Definition gridptr.hh:68
    \n-
    mygrid_ptr(GridType *grd)
    Definition gridptr.hh:99
    \n-
    ~mygrid_ptr()
    Definition gridptr.hh:102
    \n-
    GridType * release()
    Definition gridptr.hh:112
    \n-
    mygrid_ptr(const mygrid_ptr &other)
    Definition gridptr.hh:97
    \n-
    mygrid_ptr & operator=(const mygrid_ptr &other)
    Definition gridptr.hh:105
    \n-
    mygrid_ptr()
    Definition gridptr.hh:95
    \n-
    Definition gridptr.hh:538
    \n-
    CommDataHandleIF< DataHandle, char > & interface()
    Definition gridptr.hh:631
    \n-
    DataHandle(const DataHandle &)=delete
    \n-
    ~DataHandle()
    Definition gridptr.hh:581
    \n-
    DataHandle(GridPtr &gridPtr)
    Definition gridptr.hh:539
    \n-
    void gather(Buffer &buffer, const Entity &entity) const
    Definition gridptr.hh:673
    \n-
    bool fixedSize(int, int) const
    Definition gridptr.hh:640
    \n-
    std::size_t size(const Entity &entity) const
    Definition gridptr.hh:643
    \n-
    DataHandle(DataHandle &&)=delete
    \n-
    void scatter(Buffer &buffer, const Entity &entity, std::size_t n)
    Definition gridptr.hh:702
    \n-
    bool contains(int dim, int codim) const
    Definition gridptr.hh:633
    \n-
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n-
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n-
    static std::unique_ptr< Grid > read(const std::string &fileName, bool verbose=true, bool insertBoundarySegments=true)
    Definition gmshreader.hh:904
    \n-\n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n+
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n+
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n+
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n+
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n+
    base class for data array writers
    Definition dataarraywriter.hh:56
    \n+
    a factory for DataArrayWriters
    Definition dataarraywriter.hh:462
    \n+
    bool beginAppended()
    signal start of the appended section
    Definition dataarraywriter.hh:497
    \n+
    DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned nitems, const Indent &indent, Precision prec)
    create a DataArrayWriter
    Definition dataarraywriter.hh:541
    \n+
    const std::string & appendedEncoding() const
    query encoding string for appended data
    Definition dataarraywriter.hh:510
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n+
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n+
    bool beginAppended()
    start the appended data section
    Definition vtuwriter.hh:345
    \n+
    void endAppended()
    finish the appended data section
    Definition vtuwriter.hh:359
    \n+
    VTUWriter(std::ostream &stream_, OutputType outputType, FileType fileType_)
    create a VTUWriter object
    Definition vtuwriter.hh:122
    \n+
    std::ostream & stream
    Definition vtuwriter.hh:100
    \n+
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n+
    void beginMain(unsigned ncells, unsigned npoints)
    start the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:310
    \n+
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n+
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n+
    Phase
    Definition vtuwriter.hh:101
    \n+
    @ appended
    Definition vtuwriter.hh:101
    \n+
    @ main
    Definition vtuwriter.hh:101
    \n+
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n+
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n+
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n+
    ~VTUWriter()
    write footer
    Definition vtuwriter.hh:149
    \n+
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n+
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n+
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:320
    \n+
    enum Dune::VTK::VTUWriter::Phase phase
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,1132 +2,363 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-gridptr.hh\n+ * _\bv_\bt_\bk\n+vtuwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_GRIDPTR_HH\n-6#define DUNE_DGF_GRIDPTR_HH\n-7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13#include \n-14#include \n-15#include \n-16#include \n-17#include \n-18\n-19//- Dune includes\n-20#include \n-21#include \n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_VTUWRITER_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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+17\n+18namespace _\bD_\bu_\bn_\be {\n+19\n 22\n-23#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n-25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-26#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n-27#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-28\n-29#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n-31#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-32\n-33#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n-34\n-35namespace _\bD_\bu_\bn_\be\n-36{\n-37\n-38 // External Forward Declarations\n-39 // -----------------------------\n-40\n-41 template < class G >\n-42 struct DGFGridFactory;\n-43\n-44 template< class GridImp, class IntersectionImp >\n-45 class Intersection;\n-46\n-47\n-48\n-49 // GridPtr\n-50 // -------\n-51\n-64 template< class GridType >\n-_\b6_\b5 struct _\bG_\br_\bi_\bd_\bP_\bt_\br\n-66 {\n-_\b6_\b7 class _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br : public std::shared_ptr< GridType >\n-68 {\n-69 typedef std::shared_ptr< GridType > base_t ;\n-70 // empty deleter to avoid deletion on release\n-71 typedef null_deleter< GridType > emptydeleter_t ;\n-72\n-73 void removeObj()\n-74 {\n-75 // if use count is only 1 delete object\n-76 if( use_count() == 1 )\n-77 {\n-78 // delete point here, since we use the empty deleter\n-79 GridType* grd = _\br_\be_\bl_\be_\ba_\bs_\be();\n-80 if( grd ) delete grd ;\n-81 }\n-82 }\n-83\n-84 void assignObj( const _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& other )\n-85 {\n-86 removeObj();\n-87 base_t :: operator = ( other );\n-88 }\n-89 public:\n-90 using base_t :: get ;\n-91 using base_t :: swap ;\n-92 using base_t :: use_count ;\n-93\n-94 // default constructor\n-_\b9_\b5 _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br() : base_t( ( GridType * ) 0, emptydeleter_t() ) {}\n-96 // copy constructor\n-_\b9_\b7 _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( const _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& other ) : base_t(nullptr) { assignObj( other\n-); }\n-98 // constructor taking pointer\n-_\b9_\b9 explicit _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( GridType* grd ) : base_t( grd, emptydeleter_t() ) {}\n-100\n-101 // destructor\n-_\b1_\b0_\b2 _\b~_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br() { removeObj(); }\n-103\n-104 // assigment operator\n-_\b1_\b0_\b5 _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b ( const _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& other )\n-106 {\n-107 assignObj( other );\n-108 return *this;\n-109 }\n-110\n-111 // release pointer\n-_\b1_\b1_\b2 GridType* _\br_\be_\bl_\be_\ba_\bs_\be()\n-113 {\n-114 GridType* grd = this->get();\n-115 base_t ptr(( GridType * ) 0, emptydeleter_t() );\n-116 this->swap( ptr );\n-117 return grd ;\n-118 }\n-119 };\n-120\n-121 protected:\n-_\b1_\b2_\b2 std::string _\bg_\be_\bt_\bF_\bi_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn( const std::string& filename ) const\n-123 {\n-124 // extract file extension\n-125 auto extpos = filename.find_last_of(\".\");\n-126 std::string ext;\n-127 if( extpos != std::string::npos)\n-128 ext = filename.substr( extpos + 1 );\n-129\n-130 // convert all letters to lower case\n-131 for( auto& item : ext )\n-132 item = std::tolower( item );\n-133 return ext;\n-134 }\n-135\n-136 // read gmsh file if dimension world <= 3\n-_\b1_\b3_\b7 void _\br_\be_\ba_\bd_\bG_\bm_\bs_\bh( const std::string& filename, std::integral_constant< bool,\n-true > )\n-138 {\n-139 _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b> gridFactory;\n-140 std::vector boundaryIDs;\n-141 std::vector elementsIDs;\n-142 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b>_\b:_\b:_\br_\be_\ba_\bd(gridFactory,filename,boundaryIDs,elementsIDs);\n-143 _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be( gridFactory, boundaryIDs,elementsIDs);\n-144 }\n-145\n-146 // if dimension world > 3 throw GridError\n-_\b1_\b4_\b7 void _\br_\be_\ba_\bd_\bG_\bm_\bs_\bh( const std::string& filename, std::integral_constant< bool,\n-false > )\n-148 {\n-149 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"GmshReader requires dimWorld <= 3.\" );\n-150 }\n-151\n-152 public:\n-153\n-_\b1_\b5_\b4 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n-_\b1_\b5_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = GridType::dimension;\n+23 namespace VTK {\n+24\n+26\n+_\b9_\b8 class _\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br {\n+99 public:\n+_\b1_\b0_\b0 std::ostream& _\bs_\bt_\br_\be_\ba_\bm;\n+_\b1_\b0_\b1 enum _\bP_\bh_\ba_\bs_\be { _\bm_\ba_\bi_\bn, _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd } _\bp_\bh_\ba_\bs_\be;\n+102\n+103 private:\n+104 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by factory;\n+105 Indent indent;\n+106\n+107 std::string fileType;\n+108 std::string cellName;\n+109\n+110 bool doAppended;\n+111\n+112 public:\n+114\n+_\b1_\b2_\b2 inline _\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br(std::ostream& stream_, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType,\n+123 _\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType_)\n+124 : _\bs_\bt_\br_\be_\ba_\bm(stream_), factory(outputType, _\bs_\bt_\br_\be_\ba_\bm)\n+125 {\n+126 switch(fileType_) {\n+127 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba :\n+128 fileType = \"PolyData\";\n+129 cellName = \"Lines\";\n+130 break;\n+131 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd :\n+132 fileType = \"UnstructuredGrid\";\n+133 cellName = \"Cells\";\n+134 break;\n+135 default :\n+136 DUNE_THROW(IOError, \"VTUWriter: Unknown fileType: \" << fileType_);\n+137 }\n+138 const std::string& byteOrder = _\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg();\n+139\n+140 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+141 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+145 ++indent;\n+146 }\n+147\n+_\b1_\b4_\b9 inline _\b~_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br() {\n+150 --indent;\n+151 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\"\n+152 << std::flush;\n+153 }\n+154\n 156\n-_\b1_\b5_\b8 explicit _\bG_\br_\bi_\bd_\bP_\bt_\br ( const std::string &filename,\n-159 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-160 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(),\n-161 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n-162 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n-163 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n-164 _\bb_\bn_\bd_\bI_\bd_\b_(),\n-165 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n-166 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n-167 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n-168 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n-169 {\n-170 std::string fileExt = _\bg_\be_\bt_\bF_\bi_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn( filename );\n-171\n-172 if( fileExt == \"dgf\" )\n-173 {\n-174 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> dgfFactory( filename, comm );\n-175 _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be( dgfFactory );\n-176 }\n-177 else if( fileExt == \"msh\" )\n-178 {\n-179 // Gmsh reader only compiles for dimworld <= 3\n-180 _\br_\be_\ba_\bd_\bG_\bm_\bs_\bh( filename, std::integral_constant< bool, GridType::dimensionworld\n-<= 3 > () );\n-181 }\n-182 else if( fileExt == \"amc\" || fileExt == \"2d\" || fileExt == \"3d\" )\n-183 {\n-184 // TODO: AlbertaReader\n-185 DUNE_THROW( NotImplemented, \"GridPtr: file format '\" << fileExt << \"' not\n-supported yet!\" );\n-186 }\n-187 else if( fileExt == \"vtu\" )\n-188 {\n-189 // TODO: vtu/vtk reader\n-190 DUNE_THROW( NotImplemented, \"GridPtr: file format '\" << fileExt << \"' not\n-supported yet!\" );\n+_\b1_\b6_\b7 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n+168 const std::string& vectors = \"\") {\n+169 switch(_\bp_\bh_\ba_\bs_\be) {\n+170 case _\bm_\ba_\bi_\bn :\n+171 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+175 ++indent;\n+176 break;\n+177 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+178 break;\n+179 }\n+180 }\n+_\b1_\b8_\b2 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba() {\n+183 switch(_\bp_\bh_\ba_\bs_\be) {\n+184 case _\bm_\ba_\bi_\bn :\n+185 --indent;\n+186 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+187 break;\n+188 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+189 break;\n+190 }\n 191 }\n-192 else\n-193 {\n-194 DUNE_THROW( NotImplemented, \"GridPtr: file format '\" << fileExt << \"' not\n-supported yet!\" );\n-195 }\n-196 }\n-197\n-_\b1_\b9_\b9 explicit _\bG_\br_\bi_\bd_\bP_\bt_\br ( std::istream &input,\n-200 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-201 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(),\n-202 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n-203 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n-204 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n-205 _\bb_\bn_\bd_\bI_\bd_\b_(),\n-206 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n-207 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n-208 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n-209 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n-210 {\n-211 // input stream only works for DGF format right now\n-212 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> dgfFactory( input, comm );\n-213 _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be( dgfFactory );\n-214 }\n-215\n-_\b2_\b1_\b7 _\bG_\br_\bi_\bd_\bP_\bt_\br()\n-218 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(),\n-219 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n-220 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n-221 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n-222 _\bb_\bn_\bd_\bI_\bd_\b_(),\n-223 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n-224 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_(0),\n-225 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(0),\n-226 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n-227 {}\n-228\n-_\b2_\b3_\b0 explicit _\bG_\br_\bi_\bd_\bP_\bt_\br( GridType *grd )\n-231 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(grd),\n-232 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n-233 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n-234 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n-235 _\bb_\bn_\bd_\bI_\bd_\b_(),\n-236 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n-237 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_(0),\n-238 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(0),\n-239 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n-240 {}\n-241\n-_\b2_\b4_\b3 _\bG_\br_\bi_\bd_\bP_\bt_\br( const _\bG_\br_\bi_\bd_\bP_\bt_\br &org ) = default;\n-244\n-_\b2_\b4_\b6 _\bG_\br_\bi_\bd_\bP_\bt_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bG_\br_\bi_\bd_\bP_\bt_\br &org )\n-247 {\n-248 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = org._\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n-249 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_ = org._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n-250 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = org._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n-251 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = org._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n-252 _\bb_\bn_\bd_\bI_\bd_\b_ = org._\bb_\bn_\bd_\bI_\bd_\b_;\n-253 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_ = org._\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n-254\n-255 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = org._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n-256 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = org._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n-257 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = org._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n-258 return *this;\n-259 }\n-260\n-_\b2_\b6_\b2 _\bG_\br_\bi_\bd_\bP_\bt_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b (GridType * grd)\n-263 {\n-264 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( grd );\n-265 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n-266 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n-267 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n-268 _\bb_\bn_\bd_\bI_\bd_\b_.resize(0);\n-269 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n-270\n-271 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = 0;\n-272 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = 0;\n-273 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = false;\n-274 return *this;\n-275 }\n-276\n-_\b2_\b7_\b8 GridType& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() {\n-279 return *_\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n-280 }\n-281\n-_\b2_\b8_\b3 GridType* _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() {\n-284 return _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_.operator -> ();\n-285 }\n-286\n-_\b2_\b8_\b8 const GridType& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() const {\n-289 return *_\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n-290 }\n-291\n-_\b2_\b9_\b3 const GridType* _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() const {\n-294 return _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_.operator -> ();\n-295 }\n-296\n-_\b2_\b9_\b8 GridType* _\br_\be_\bl_\be_\ba_\bs_\be () { return _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_._\br_\be_\bl_\be_\ba_\bs_\be(); }\n-299\n-_\b3_\b0_\b1 int _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs(int cdim) const {\n-302 switch (cdim) {\n-303 case 0 : return _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_; break;\n-304 case GridType::dimension : return _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_; break;\n-305 }\n-306 return 0;\n-307 }\n-308\n-310 template \n-_\b3_\b1_\b1 int _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n-312 {\n-313 return _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs( (int) _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-314 }\n-315\n-317 template< class GridImp, class IntersectionImp >\n-_\b3_\b1_\b8 int _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b _\b> &\n-intersection ) const\n-319 {\n-320 return _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs( intersection ).size();\n-321 }\n-322\n-324 template \n-_\b3_\b2_\b5 const std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-326 {\n-327 typedef typename GridType::LevelGridView _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n-328 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 );\n-329 switch( (int)_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n-330 {\n-331 case 0 :\n-332 if( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-333 {\n-334 assert( (unsigned int)gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) < _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.size()\n-);\n-335 return _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) ];\n-336 }\n-337 break;\n-338 case GridType::dimension :\n-339 if( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-340 {\n-341 assert( (unsigned int)gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) < _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.size\n-() );\n-342 return _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) ];\n-343 }\n-344 break;\n-345 }\n-346 return _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n-347 }\n-348\n-350 template< class GridImp, class IntersectionImp >\n-_\b3_\b5_\b1 const _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be & _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<\n-_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b _\b> & intersection ) const\n-352 {\n-353 // if no parameters given return empty vector\n-354 if ( !_\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-355 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-356\n-357 return _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_[ intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() ];\n-358 }\n-359\n-_\b3_\b6_\b0 void _\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be ()\n-361 {\n-362 if( _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->comm().size() > 1 )\n-363 {\n-364 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be dh(*this);\n-365 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 ).communicate( dh._\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(),\n-_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn );\n-366 }\n-367 }\n+192\n+194\n+_\b2_\b0_\b5 inline void _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n+206 const std::string& vectors = \"\") {\n+207 switch(_\bp_\bh_\ba_\bs_\be) {\n+208 case _\bm_\ba_\bi_\bn :\n+209 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+213 ++indent;\n+214 break;\n+215 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+216 break;\n+217 }\n+218 }\n+_\b2_\b2_\b0 inline void _\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba() {\n+221 switch(_\bp_\bh_\ba_\bs_\be) {\n+222 case _\bm_\ba_\bi_\bn :\n+223 --indent;\n+224 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+225 break;\n+226 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+227 break;\n+228 }\n+229 }\n+230\n+232\n+_\b2_\b3_\b8 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() {\n+239 switch(_\bp_\bh_\ba_\bs_\be) {\n+240 case _\bm_\ba_\bi_\bn :\n+241 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+242 ++indent;\n+243 break;\n+244 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+245 break;\n+246 }\n+247 }\n+_\b2_\b4_\b9 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() {\n+250 switch(_\bp_\bh_\ba_\bs_\be) {\n+251 case _\bm_\ba_\bi_\bn :\n+252 --indent;\n+253 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+254 break;\n+255 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+256 break;\n+257 }\n+258 }\n+259\n+261\n+_\b2_\b7_\b4 inline void _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs() {\n+275 switch(_\bp_\bh_\ba_\bs_\be) {\n+276 case _\bm_\ba_\bi_\bn :\n+277 _\bs_\bt_\br_\be_\ba_\bm << indent << \"<\" << cellName << \">\\n\";\n+278 ++indent;\n+279 break;\n+280 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+281 break;\n+282 }\n+283 }\n+_\b2_\b8_\b5 inline void _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs() {\n+286 switch(_\bp_\bh_\ba_\bs_\be) {\n+287 case _\bm_\ba_\bi_\bn :\n+288 --indent;\n+289 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+290 break;\n+291 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n+292 break;\n+293 }\n+294 }\n+295\n+297\n+_\b3_\b1_\b0 inline void _\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn(unsigned ncells, unsigned npoints) {\n+311 _\bs_\bt_\br_\be_\ba_\bm << indent << \"<\" << fileType << \">\\n\";\n+312 ++indent;\n+313 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+316 ++indent;\n+317 _\bp_\bh_\ba_\bs_\be = _\bm_\ba_\bi_\bn;\n+318 }\n+_\b3_\b2_\b0 inline void _\be_\bn_\bd_\bM_\ba_\bi_\bn() {\n+321 --indent;\n+322 _\bs_\bt_\br_\be_\ba_\bm << indent << \"
    \\n\";\n+323 --indent;\n+324 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+325 }\n+326\n+328\n+_\b3_\b4_\b5 inline bool _\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd() {\n+346 doAppended = factory._\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd();\n+347 if(doAppended) {\n+348 const std::string& encoding = factory._\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg();\n+349 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+351 ++indent;\n+352 // mark begin of data\n+353 _\bs_\bt_\br_\be_\ba_\bm << indent << \"_\";\n+354 }\n+355 _\bp_\bh_\ba_\bs_\be = _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd;\n+356 return doAppended;\n+357 }\n+_\b3_\b5_\b9 inline void _\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd() {\n+360 if(doAppended) {\n+361 _\bs_\bt_\br_\be_\ba_\bm << \"\\n\";\n+362 --indent;\n+363 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n+364 }\n+365 }\n+366\n 368\n-_\b3_\b6_\b9 void _\bl_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be ()\n-370 {\n-371 if( _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->comm().size() > 1 )\n-372 {\n-373 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be dh(*this);\n-374 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->loadBalance( dh._\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() );\n-375 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 ).communicate( dh._\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(),\n-_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn );\n-376 }\n-377 }\n-378\n-379 protected:\n-380 template< class Range >\n-_\b3_\b8_\b1 static bool _\bi_\bs_\bE_\bm_\bp_\bt_\by ( Range &&range )\n-382 {\n-383 return range.begin() == range.end();\n+_\b3_\b8_\b0 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br* _\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(const std::string& name,\n+381 unsigned ncomps, unsigned nitems,\n+382 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec) {\n+383 return factory._\bm_\ba_\bk_\be(name, ncomps, nitems, indent, prec);\n 384 }\n-385\n-_\b3_\b8_\b6 void _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be ( _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> &dgfFactory )\n-387 {\n-388 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( dgfFactory._\bg_\br_\bi_\bd() );\n-389\n-390 const auto gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 );\n-391 const auto &indexSet = gridView.indexSet();\n+385 };\n+386\n+387 } // namespace VTK\n+388\n+390\n+391} // namespace Dune\n 392\n-393 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = dgfFactory.template numParameters< 0 >();\n-394 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = dgfFactory.template numParameters< dimension >();\n-395 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = dgfFactory._\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs();\n-396\n-397 std::array< int, 3 > nofParams = {{ _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_, _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_, static_cast<\n-int >( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ ) }};\n-398 gridView.comm().max( nofParams.data(), nofParams.size() );\n-399\n-400 // empty grids have no parameters associated\n-401 if( _\bi_\bs_\bE_\bm_\bp_\bt_\by( elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br ) ) )\n-402 {\n-403 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = nofParams[ 0 ];\n-404 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = nofParams[ 1 ];\n-405 }\n-406\n-407 // boundary parameters may be empty\n-408 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = static_cast< bool >( nofParams[ 2 ] );\n-409\n-410 if( (_\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ != nofParams[ 0 ]) || (_\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ != nofParams[ 1 ]) )\n-411 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Number of parameters differs between processes\"\n-);\n-412\n-413 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 ? indexSet.size( 0 ) : 0 );\n-414 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 ? indexSet.size( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) : 0 );\n-415\n-416 _\bb_\bn_\bd_\bI_\bd_\b_.resize( indexSet.size( 1 ) );\n-417 if( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-418 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize( _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->numBoundarySegments() );\n-419\n-420 for( const auto &element : elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br )\n-)\n-421 {\n-422 if( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-423 {\n-424 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ], dgfFactory._\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-( element ) );\n-425 assert( _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ].size() == static_cast< std::\n-size_t >( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-426 }\n-427\n-428 if( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-429 {\n-430 for( unsigned int v = 0, n = element.subEntities( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ); v < n; ++v )\n-431 {\n-432 const auto index = indexSet.subIndex( element, v, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-433 if( _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].empty() )\n-434 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ], dgfFactory._\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br( element.template\n-subEntity< dimension >( v ) ) );\n-435 assert( _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].size() == static_cast< std::size_t >\n-( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-436 }\n-437 }\n-438\n-439 if( element.hasBoundaryIntersections() )\n-440 {\n-441 for( const auto &intersection : intersections( gridView, element ) )\n-442 {\n-443 // dirty hack: check for \"none\" to make corner point grid work\n-444 if( !intersection.boundary() || intersection.type().isNone() )\n-445 continue;\n-446\n-447 const auto k = indexSet.subIndex( element, intersection.indexInInside(), 1\n-);\n-448 _\bb_\bn_\bd_\bI_\bd_\b_[ k ] = dgfFactory._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd( intersection );\n-449 if( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-450 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_[ intersection.boundarySegmentIndex() ] =\n-dgfFactory._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br( intersection );\n-451 }\n-452 }\n-453 }\n-454 }\n-455\n-_\b4_\b5_\b6 void _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be ( _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> &factory,\n-457 std::vector& boundaryIds,\n-458 std::vector& elementIds )\n-459 {\n-460 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd().release() );\n-461\n-462 const auto& gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->leafGridView();\n-463 const auto& indexSet = gridView.indexSet();\n-464\n-465 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = elementIds.empty() ? 0 : 1 ;\n-466 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = 0;\n-467 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = boundaryIds.empty() ? 0 : 1 ;\n-468\n-469 std::array< int, 3 > nofParams = {{ _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_, _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_, static_cast<\n-int >( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ ) }};\n-470 gridView.comm().max( nofParams.data(), nofParams.size() );\n-471\n-472 // empty grids have no parameters associated\n-473 if( _\bi_\bs_\bE_\bm_\bp_\bt_\by( elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br ) ) )\n-474 {\n-475 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = nofParams[ 0 ];\n-476 }\n-477\n-478 // boundary parameters may be empty\n-479 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = static_cast< bool >( nofParams[ 2 ] );\n-480\n-481 // Reorder boundary IDs according to the insertion index\n-482 if(!boundaryIds.empty() || !elementIds.empty() )\n-483 {\n-484 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize( boundaryIds.size() );\n-485 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( elementIds.size(), std::vector(1) );\n-486 for(const auto& entity : elements( gridView ))\n-487 {\n-488 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( entity ) ][ 0 ] = elementIds\n-[ factory._\bi_\bn_\bs_\be_\br_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx( entity ) ];\n-489 if( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-490 {\n-491 for(const auto& intersection : intersections( gridView,entity) )\n-492 {\n-493 if(intersection.boundary())\n-494 {\n-495 // DGFBoundaryParameter::type is of type string.\n-496 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_[intersection.boundarySegmentIndex()] = std::to_string(boundaryIds\n-[factory._\bi_\bn_\bs_\be_\br_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx(intersection)]);\n-497 }\n-498 }\n-499 }\n-500 }\n-501 }\n-502 }\n-503\n-504 template \n-_\b5_\b0_\b5 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-506 {\n-507 const auto gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 );\n-508 switch( (int)_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n-509 {\n-510 case 0 :\n-511 if( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 ) {\n-512 if ( gridView.indexSet().index( entity ) >= _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.size() )\n-513 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( gridView.indexSet().index( entity ) );\n-514 return _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ gridView.indexSet().index( entity ) ];\n-515 }\n-516 break;\n-517 case GridType::dimension :\n-518 if( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 ) {\n-519 if ( gridView.indexSet().index( entity ) >= _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.size() )\n-520 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize( gridView.indexSet().index( entity ) );\n-521 return _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ gridView.indexSet().index( entity ) ];\n-522 }\n-523 break;\n-524 }\n-525 return _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n-526 }\n-527\n-_\b5_\b2_\b8 void _\bs_\be_\bt_\bN_\bo_\bf_\bP_\ba_\br_\ba_\bm_\bs( int cdim, int nofP )\n-529 {\n-530 switch (cdim) {\n-531 case 0 : _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = nofP; break;\n-532 case GridType::dimension : _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = nofP; break;\n-533 }\n-534 }\n-535\n-_\b5_\b3_\b6 struct _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n-537 : public _\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF< DataHandle, char >\n-538 {\n-_\b5_\b3_\b9 explicit _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ( _\bG_\br_\bi_\bd_\bP_\bt_\br &gridPtr )\n-540 : gridPtr_( gridPtr ), idSet_( gridPtr->localIdSet() )\n-541 {\n-542 const auto gridView = gridPtr_->levelGridView( 0 );\n-543 const auto &indexSet = gridView.indexSet();\n-544\n-545 for( const auto &element : elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br )\n-)\n-546 {\n-547 if( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-548 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ], elData_\n-[ idSet_.id( element ) ] );\n-549\n-550 if( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-551 {\n-552 for( unsigned int v = 0, n = element.subEntities( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ); v < n; ++v )\n-553 {\n-554 const auto index = indexSet.subIndex( element, v, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-555 if ( !gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].empty() )\n-556 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ], vtxData_[ idSet_.subId( element, v,\n-_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) ] );\n-557 }\n-558 }\n-559\n-560 if( element.hasBoundaryIntersections() )\n-561 {\n-562 for( const auto &intersection : intersections( gridView, element ) )\n-563 {\n-564 // dirty hack: check for \"none\" to make corner point grid work\n-565 if( !intersection.boundary() || intersection.type().isNone() )\n-566 continue;\n-567\n-568 const int i = intersection.indexInInside();\n-569 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];\n-570 bndData.first = gridPtr_._\bb_\bn_\bd_\bI_\bd_\b_[ indexSet.subIndex( element, i, 1 ) ];\n-571 if( gridPtr_._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-572 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( bndData.second, gridPtr_._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n-[ intersection.boundarySegmentIndex() ] );\n-573 }\n-574 }\n-575 }\n-576 }\n-577\n-_\b5_\b7_\b8 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ( const _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be & ) = delete;\n-_\b5_\b7_\b9 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ( _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be && ) = delete;\n-580\n-_\b5_\b8_\b1 _\b~_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ()\n-582 {\n-583 const auto gridView = gridPtr_->levelGridView( 0 );\n-584 const auto &indexSet = gridView.indexSet();\n-585\n-586 if( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-587 gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( indexSet.size( 0 ) );\n-588 if( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-589 gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize( indexSet.size( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) );\n-590 gridPtr_._\bb_\bn_\bd_\bI_\bd_\b_.resize( indexSet.size( 1 ) );\n-591 if( gridPtr_._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-592 gridPtr_._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize( gridPtr_->numBoundarySegments() );\n-593\n-594 for( const auto &element : elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\ba_\bl_\bl ) )\n-595 {\n-596 if( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-597 {\n-598 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ], elData_\n-[ idSet_.id( element ) ] );\n-599 assert( gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ].size() ==\n-static_cast< std::size_t >( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-600 }\n-601\n-602 if( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n-603 {\n-604 for( unsigned int v = 0; v < element.subEntities( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ); ++v )\n-605 {\n-606 const auto index = indexSet.subIndex( element, v, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-607 if( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].empty() )\n-608 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ], vtxData_[ idSet_.subId( element, v,\n-_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) ] );\n-609 assert( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].size() == static_cast< std::size_t >\n-( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-610 }\n-611 }\n-612\n-613 if( element.hasBoundaryIntersections() )\n-614 {\n-615 for( const auto &intersection : intersections( gridView, element ) )\n-616 {\n-617 // dirty hack: check for \"none\" to make corner point grid work\n-618 if( !intersection.boundary() || intersection.type().isNone() )\n-619 continue;\n-620\n-621 const int i = intersection.indexInInside();\n-622 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];\n-623 gridPtr_._\bb_\bn_\bd_\bI_\bd_\b_[ indexSet.subIndex( element, i, 1 ) ] = bndData.first;\n-624 if( gridPtr_._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n-625 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( bndData.second, gridPtr_._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n-[ intersection.boundarySegmentIndex() ] );\n-626 }\n-627 }\n-628 }\n-629 }\n-630\n-631 _\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b,_\b _\bc_\bh_\ba_\br_\b _\b> &_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () { return *this; }\n-632\n-_\b6_\b3_\b3 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs ( int dim, int codim ) const\n-634 {\n-635 assert( dim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-636 // do not use a switch statement, because dimension == 1 is possible\n-637 return (codim == 1) || ((codim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ >\n-0)) || ((codim == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0));\n-638 }\n-639\n-_\b6_\b4_\b0 bool _\bf_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be (int /* dim */, int /* codim */) const { return false; }\n-641\n-642 template< class Entity >\n-_\b6_\b4_\b3 std::size_t _\bs_\bi_\bz_\be ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-644 {\n-645 std::size_t totalSize = 0;\n-646\n-647 // do not use a switch statement, because dimension == 1 is possible\n-648 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n-649 {\n-650 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >\n-( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-651 for( double &v : elData_[ idSet_.id( entity ) ] )\n-652 totalSize += dataSize( v );\n-653 }\n-654\n-655 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n-656 {\n-657 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t\n->( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-658 for( double &v : vtxData_[ idSet_.id( entity ) ] )\n-659 totalSize += dataSize( v );\n-660 }\n-661\n-662 if( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1 )\n-663 {\n-664 const auto bndData = bndData_.find( idSet_.id( entity ) );\n-665 if( bndData != bndData_.end() )\n-666 totalSize += dataSize( bndData->second.first ) + dataSize( bndData-\n->second.second );\n-667 }\n-668\n-669 return totalSize;\n-670 }\n-671\n-672 template< class Buffer, class Entity >\n-_\b6_\b7_\b3 void _\bg_\ba_\bt_\bh_\be_\br ( Buffer &buffer, const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-674 {\n-675 // do not use a switch statement, because dimension == 1 is possible\n-676 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n-677 {\n-678 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >\n-( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-679 for( double &v : elData_[ idSet_.id( entity ) ] )\n-680 write( buffer, v );\n-681 }\n-682\n-683 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n-684 {\n-685 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t\n->( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n-686 for( double &v : vtxData_[ idSet_.id( entity ) ] )\n-687 write( buffer, v );\n-688 }\n-689\n-690 if( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1 )\n-691 {\n-692 const auto bndData = bndData_.find( idSet_.id( entity ) );\n-693 if( bndData != bndData_.end() )\n-694 {\n-695 write( buffer, bndData->second.first );\n-696 write( buffer, bndData->second.second );\n-697 }\n-698 }\n-699 }\n-700\n-701 template< class Buffer, class Entity >\n-_\b7_\b0_\b2 void _\bs_\bc_\ba_\bt_\bt_\be_\br ( Buffer &buffer, const _\bE_\bn_\bt_\bi_\bt_\by &entity, std::size_t n )\n-703 {\n-704 // do not use a switch statement, because dimension == 1 is possible\n-705 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n-706 {\n-707 auto &p = elData_[ idSet_.id( entity ) ];\n-708 p.resize( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ );\n-709 for( double &v : p )\n-710 read( buffer, v, n );\n-711 }\n-712\n-713 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n-714 {\n-715 auto &p = vtxData_[ idSet_.id( entity ) ];\n-716 p.resize( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ );\n-717 for( double &v : p )\n-718 read( buffer, v, n );\n-719 }\n-720\n-721 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1) && (n > 0) )\n-722 {\n-723 auto &bndData = bndData_[ idSet_.id( entity ) ];\n-724 read( buffer, bndData.first, n );\n-725 read( buffer, bndData.second, n );\n-726 }\n-727\n-728 assert( n == 0 );\n-729 }\n-730\n-731 private:\n-732 template< class T >\n-733 static std::enable_if_t< std::is_trivially_copyable< T >::value, std::\n-size_t > dataSize ( const T & /* value */ )\n-734 {\n-735 return sizeof( T );\n-736 }\n-737\n-738 static std::size_t dataSize ( const std::string &s )\n-739 {\n-740 return dataSize( s.size() ) + s.size();\n-741 }\n-742\n-743 template< class Buffer, class T >\n-744 static std::enable_if_t< std::is_trivially_copyable< T >::value > write\n-( Buffer &buffer, const T &value )\n-745 {\n-746 std::array< char, sizeof( T ) > bytes;\n-747 std::memcpy( bytes.data(), &value, sizeof( T ) );\n-748 for( char &b : bytes )\n-749 buffer.write( b );\n-750 }\n-751\n-752 template< class Buffer >\n-753 static void write ( Buffer &buffer, const std::string &s )\n-754 {\n-755 write( buffer, s.size() );\n-756 for( const char &c : s )\n-757 buffer.write( c );\n-758 }\n-759\n-760 template< class Buffer, class T >\n-761 static std::enable_if_t< std::is_trivially_copyable< T >::value > read\n-( Buffer &buffer, T &value, std::size_t &n )\n-762 {\n-763 assert( n >= sizeof( T ) );\n-764 n -= sizeof( T );\n-765\n-766 std::array< char, sizeof( T ) > bytes;\n-767 for( char &b : bytes )\n-768 buffer.read( b );\n-769 std::memcpy( &value, bytes.data(), sizeof( T ) );\n-770 }\n-771\n-772 template< class Buffer >\n-773 static void read ( Buffer &buffer, std::string &s, std::size_t &n )\n-774 {\n-775 std::size_t _\bs_\bi_\bz_\be;\n-776 read( buffer, _\bs_\bi_\bz_\be, n );\n-777 s.resize( _\bs_\bi_\bz_\be );\n-778\n-779 assert( n >= _\bs_\bi_\bz_\be );\n-780 n -= _\bs_\bi_\bz_\be;\n-781\n-782 for( char &c : s )\n-783 buffer.read( c );\n-784 }\n-785\n-786 _\bG_\br_\bi_\bd_\bP_\bt_\br &gridPtr_;\n-787 const typename GridType::LocalIdSet &idSet_;\n-788 mutable std::map< typename GridType::LocalIdSet::IdType, std::vector<\n-double > > elData_, vtxData_;\n-789 mutable std::map< typename GridType::LocalIdSet::IdType, std::pair< int,\n-DGFBoundaryParameter::type > > bndData_;\n-790 };\n-791\n-792 // grid auto pointer\n-_\b7_\b9_\b3 mutable _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n-794 // element and vertex parameters\n-_\b7_\b9_\b5 std::vector< std::vector< double > > _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n-_\b7_\b9_\b6 std::vector< std::vector< double > > _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n-_\b7_\b9_\b7 std::vector< DGFBoundaryParameter::type > _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n-_\b7_\b9_\b8 std::vector< int > _\bb_\bn_\bd_\bI_\bd_\b_;\n-_\b7_\b9_\b9 std::vector< double > _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n-800\n-_\b8_\b0_\b1 int _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n-_\b8_\b0_\b2 int _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n-_\b8_\b0_\b3 bool _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n-804 }; // end of class GridPtr\n-805\n-806} // end namespace Dune\n-807\n-808#endif\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh\n-_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n-Describes the parallel communication interface class for MessageBuffers and\n-DataHandles.\n-_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n-_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-@ ForwardCommunication\n-communicate as given in InterfaceType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ InteriorBorder_All_Interface\n-send interior and border, receive all entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const IndexSet & indexSet() const\n-obtain the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n-_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n-> &b)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n+393#endif // DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH\n+_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Data array writers for the VTKWriter.\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\ba_\bl_\bl\n-constexpr All all\n-PartitionSet for all partitions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:296\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br\n-constexpr InteriorBorder interiorBorder\n-PartitionSet for the interior and border partitions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n-> &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\br_\bi_\bd\n-Grid * grid()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Element &element)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-size_t boundarySegmentIndex() const\n-index of the boundary segment within the macro grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF\n-CommDataHandleIF describes the features of a data handle for communication in\n-parallel runs using the...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-Know your own codimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-Base class for exceptions in Dune grid modules.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx\n-virtual unsigned int insertionIndex(const typename Codim< 0 >::Entity &entity)\n-const\n-obtain an element's insertion index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Provide a generic factory class for unstructured grids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-virtual std::unique_ptr< GridType > createGrid()\n-Finalize grid creation and hand over the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-exception class for IO errors in the DGF parser\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n-Class for constructing grids from DGF files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n-GridPtr(std::istream &input, MPICommunicatorType comm=MPIHelper::\n-getCommunicator())\n-constructor given a std::istream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-const std::vector< double > & parameters(const Entity &entity) const\n-get parameters defined for each codim 0 und dim entity on the grid through the\n-grid file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:325\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n-GridPtr()\n-Default constructor, creating empty GridPtr.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-const GridType & operator*() const\n-return const reference to GridType instance\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:288\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n-bool haveBndParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:803\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\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 gridptr.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bb_\bn_\bd_\bI_\bd_\b_\n-std::vector< int > bndId_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:798\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bs_\be_\bt_\bN_\bo_\bf_\bP_\ba_\br_\ba_\bm_\bs\n-void setNofParams(int cdim, int nofP)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:528\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bl_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n-void loadBalance()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:369\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n-std::vector< DGFBoundaryParameter::type > bndParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:797\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n-void initialize(GridFactory< GridType > &factory, std::vector< int >\n-&boundaryIds, std::vector< int > &elementIds)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:456\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n-GridPtr(GridType *grd)\n-Constructor storing given pointer to internal auto pointer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_\n-int nofElParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:801\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-const DGFBoundaryParameter::type & parameters(const Intersection< GridImp,\n-IntersectionImp > &intersection) const\n-get parameters for intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:351\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-GridType & operator*()\n-return reference to GridType instance\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:278\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bi_\bs_\bE_\bm_\bp_\bt_\by\n-static bool isEmpty(Range &&range)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:381\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int nofParameters(const Entity &) const\n-get parameters defined for given entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:311\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n-GridPtr(const std::string &filename, MPICommunicatorType comm=MPIHelper::\n-getCommunicator())\n-constructor given the name of a DGF file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\be_\bl_\bP_\ba_\br_\ba_\bm_\b_\n-std::vector< std::vector< double > > elParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:795\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-GridPtr & operator=(const GridPtr &org)\n-assignment of grid pointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int nofParameters(int cdim) const\n-get number of parameters defined for a given codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:301\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int nofParameters(const Intersection< GridImp, IntersectionImp > &intersection)\n-const\n-get number of parameters defined for a given intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:318\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_\n-std::vector< double > emptyParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:799\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bg_\br_\bi_\bd_\bP_\bt_\br_\b_\n-mygrid_ptr gridPtr_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:793\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\br_\be_\ba_\bd_\bG_\bm_\bs_\bh\n-void readGmsh(const std::string &filename, std::integral_constant< bool, false\n->)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\br_\be_\ba_\bd_\bG_\bm_\bs_\bh\n-void readGmsh(const std::string &filename, std::integral_constant< bool, true\n->)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bp_\ba_\br_\ba_\bm_\bs\n-std::vector< double > & params(const Entity &entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:505\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n-void initialize(DGFGridFactory< GridType > &dgfFactory)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:386\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n-GridPtr(const GridPtr &org)=default\n-Copy constructor, copies internal auto pointer.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bg_\be_\bt_\bF_\bi_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn\n-std::string getFileExtension(const std::string &filename) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n-const GridType * operator->() const\n-return const pointer to GridType instance\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:293\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-GridType * release()\n-release pointer from internal ownership\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:298\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be\n-void communicate()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:360\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_\n-std::vector< std::vector< double > > vtxParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:796\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n-GridType * operator->()\n-return pointer to GridType instance\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:283\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_\n-int nofVtxParam_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:802\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n-mygrid_ptr(GridType *grd)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\b~_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n-~mygrid_ptr()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-GridType * release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n-mygrid_ptr(const mygrid_ptr &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-mygrid_ptr & operator=(const mygrid_ptr &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n-mygrid_ptr()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:538\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-CommDataHandleIF< DataHandle, char > & interface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:631\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n-DataHandle(const DataHandle &)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\b~_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n-~DataHandle()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:581\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n-DataHandle(GridPtr &gridPtr)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:539\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bg_\ba_\bt_\bh_\be_\br\n-void gather(Buffer &buffer, const Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:673\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bf_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be\n-bool fixedSize(int, int) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:640\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(const Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:643\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n-DataHandle(DataHandle &&)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bs_\bc_\ba_\bt_\bt_\be_\br\n-void scatter(Buffer &buffer, const Entity &entity, std::size_t n)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:702\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(int dim, int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:633\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n-static const type & defaultValue()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-std::string type\n-type of additional boundary parameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n-static std::unique_ptr< Grid > read(const std::string &fileName, bool\n-verbose=true, bool insertBoundarySegments=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:904\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n+OutputType\n+How the bulk data should be stored in the file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n+FileType\n+which type of VTK file to write\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n+@ polyData\n+for .vtp files (PolyData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n+@ unstructuredGrid\n+for .vtu files (UnstructuredGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n+std::string getEndiannessString()\n+determine endianness of this C++ implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+base class for data array writers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+a factory for DataArrayWriters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:462\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n+bool beginAppended()\n+signal start of the appended section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:497\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned\n+nitems, const Indent &indent, Precision prec)\n+create a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:541\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg\n+const std::string & appendedEncoding() const\n+query encoding string for appended data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:510\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n+unsigned nitems, Precision prec)\n+acquire a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n+bool beginAppended()\n+start the appended data section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:345\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n+void endAppended()\n+finish the appended data section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:359\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+VTUWriter(std::ostream &stream_, OutputType outputType, FileType fileType_)\n+create a VTUWriter object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm\n+std::ostream & stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void endCellData()\n+finish CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n+void beginMain(unsigned ncells, unsigned npoints)\n+start the main PolyData/UnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+void beginCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void endPointData()\n+finish PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bP_\bh_\ba_\bs_\be\n+Phase\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd\n+@ appended\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bi_\bn\n+@ main\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void beginCellData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void beginPointData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+void endPoints()\n+finish section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+~VTUWriter()\n+write footer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+void endCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+void beginPoints()\n+start section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n+void endMain()\n+finish the main PolyData/UnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bh_\ba_\bs_\be\n+enum Dune::VTK::VTUWriter::Phase phase\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00785.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00785.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfug.cc File Reference\n+dune-grid: basicwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,52 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfug.cc File Reference
    \n+
    basicwriter.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/geometry/utility/typefromvertexcount.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfug.hh>
    \n-
    \n+
    #include <fstream>
    \n+#include <iomanip>
    \n+#include <iterator>
    \n+#include <list>
    \n+#include <memory>
    \n+#include <sstream>
    \n+#include <string>
    \n+#include <dune/common/parallel/mpiguard.hh>
    \n+#include <dune/common/path.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/grid/io/file/vtk/common.hh>
    \n+#include <dune/grid/io/file/vtk/functionwriter.hh>
    \n+#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n+#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::VTK::BasicWriter< IteratorFactory >
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,36 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfug.cc File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bu_\bg_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+basicwriter.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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b _\b>\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00788.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00788.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfgridfactory.hh File Reference\n+dune-grid: b64enc.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-
    dgfgridfactory.hh File Reference
    \n+
    b64enc.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <string>
    \n-#include <vector>
    \n-#include <map>
    \n-#include <assert.h>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n-#include <dune/grid/io/file/dgfparser/macrogrid.hh>
    \n-#include <dune/grid/io/file/dgfparser/parser.hh>
    \n-#include <dune/grid/common/intersection.hh>
    \n+\n+

    Simple base64 encode. \n+More...

    \n+
    #include <assert.h>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::DGFGridFactory< G >
    struct  Dune::b64chunk
     struct representing the three byte text as well as the four 6 bit chunks More...
     
    \n \n \n \n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n+\n+\n+\n+\n+\n

    \n+Variables

    const char Dune::base64table []
     endoing table
     
    \n-
    \n+

    Detailed Description

    \n+

    Simple base64 encode.

    \n+
    Author
    Christian Engwer
    \n+

    We implement the base64 encoding (c.f. RFC 4648 https://tools.ietf.org/html/rfc4648).

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,30 +2,34 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfgridfactory.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+b64enc.hh File Reference\n+Simple base64 encode. _\bM_\bo_\br_\be_\b._\b._\b.\n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n+\u00a0 struct representing the three byte text as well as the four 6 bit\n+ chunks _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n+const char\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be []\n+\u00a0 endoing table\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+Simple base64 encode.\n+ Author\n+ Christian Engwer\n+We implement the base64 encoding (c.f. RFC 4648 _\bh_\bt_\bt_\bp_\bs_\b:_\b/_\b/_\bt_\bo_\bo_\bl_\bs_\b._\bi_\be_\bt_\bf_\b._\bo_\br_\bg_\b/_\bh_\bt_\bm_\bl_\b/\n+_\br_\bf_\bc_\b4_\b6_\b4_\b8).\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00788_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00788_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfgridfactory.hh Source File\n+dune-grid: b64enc.hh Source File\n \n \n \n \n \n \n \n@@ -70,271 +70,108 @@\n \n \n \n \n \n \n \n
    \n-
    dgfgridfactory.hh
    \n+
    b64enc.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_GRIDFACTORY_HH
    \n-
    6#define DUNE_DGF_GRIDFACTORY_HH
    \n-
    7
    \n-
    8#include <iostream>
    \n-
    9#include <string>
    \n-
    10#include <vector>
    \n-
    11#include <map>
    \n-
    12#include <assert.h>
    \n-
    13
    \n-
    14#include <dune/common/parallel/mpihelper.hh>
    \n-\n-\n-
    17
    \n-\n-\n-
    20
    \n-
    21
    \n-
    22namespace Dune
    \n-
    23{
    \n-
    24
    \n-
    25 // External Forward Declarations
    \n-
    26 // -----------------------------
    \n-
    27
    \n-
    28 template < class GridImp, class IntersectionImp >
    \n-
    29 class Intersection;
    \n-
    30
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_B64ENC_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_B64ENC_HH
    \n+
    8
    \n+
    9#include <assert.h>
    \n+
    10
    \n+
    11namespace Dune {
    \n+
    12
    \n+
    \n+
    23 const char base64table[] =
    \n+
    24 {
    \n+
    25 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
    \n+
    26 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
    \n+
    27 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
    \n+
    28 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    \n+
    29 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
    \n+
    30 };
    \n+
    \n
    31
    \n-
    32
    \n-
    33 // DGFGridFactory
    \n-
    34 // --------------
    \n-
    35
    \n-
    36 template < class G >
    \n-
    \n-\n-
    38 {
    \n-
    39 typedef G Grid;
    \n-
    40 const static int dimension = Grid::dimension;
    \n-
    41 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n-
    42
    \n-
    43 private:
    \n-
    44 typedef typename Grid::template Codim< 0 >::Entity Element;
    \n-
    45
    \n-
    46 typedef typename Grid::template Codim< dimension >::Entity Vertex;
    \n-
    47
    \n-
    48 public:
    \n-
    49
    \n-
    \n-
    50 explicit DGFGridFactory ( const std::string &filename,
    \n-
    51 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    52 : macroGrid_( filename.c_str(), comm )
    \n-
    53 {
    \n-
    54 grid_ = macroGrid_.template createGrid< Grid >();
    \n-
    55
    \n-
    56 if( macroGrid_.nofelparams > 0 )
    \n-
    57 {
    \n-
    58 const size_t nofElements = macroGrid_.elements.size();
    \n-
    59 for( size_t i = 0; i < nofElements; ++i )
    \n-
    60 {
    \n-
    61 std::vector< double > coord;
    \n-
    62
    \n-
    63 DomainType p(0);
    \n-
    64 const size_t nofCorners = macroGrid_.elements[i].size();
    \n-
    65 for (size_t k=0; k<nofCorners; ++k)
    \n-
    66 for (int j=0; j<DomainType::dimension; ++j)
    \n-
    67 p[j]+=macroGrid_.vtx[macroGrid_.elements[i][k]][j];
    \n-
    68 p/=double(nofCorners);
    \n-
    69
    \n-
    70 elInsertOrder_.insert( std::make_pair( p, i ) );
    \n-
    71 }
    \n-
    72 }
    \n+
    \n+
    33 struct b64chunk
    \n+
    34 {
    \n+
    35 using size_type = unsigned char;
    \n+\n+
    37 char txt[3];
    \n+
    38
    \n+
    \n+
    39 void reset()
    \n+
    40 {
    \n+
    41 size = 0;
    \n+
    42 txt[0] = txt[1] = txt[2] = 0;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    45 int read(const char* t, size_type s)
    \n+
    46 {
    \n+
    47 size = s>=3 ? 3 : s;
    \n+
    48 txt[0] = s>0 ? t[0] : 0;
    \n+
    49 txt[1] = s>1 ? t[1] : 0;
    \n+
    50 txt[2] = s>2 ? t[2] : 0;
    \n+
    51 return size;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    54 void put(const char c)
    \n+
    55 {
    \n+
    56 assert (size < 3);
    \n+
    57 txt[size++] = c;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    60 void write(char* t)
    \n+
    61 {
    \n+
    62 const unsigned A = (txt[0] & 0b1111'1100) >> 2;
    \n+
    63 const unsigned B = (txt[0] & 0b0000'0011) << 4 | (txt[1] & 0b1111'0000) >> 4;
    \n+
    64 const unsigned C = (txt[1] & 0b0000'1111) << 2 | (txt[2] & 0b1100'0000) >> 6;
    \n+
    65 const unsigned D = txt[2] & 0b0011'1111;
    \n+
    66 t[0] = size>0 ? base64table[A] : '=';
    \n+
    67 t[1] = size>0 ? base64table[B] : '=';
    \n+
    68 t[2] = size>1 ? base64table[C] : '=';
    \n+
    69 t[3] = size>2 ? base64table[D] : '=';
    \n+
    70 size = 0;
    \n+
    71 }
    \n+
    \n+
    72 };
    \n+
    \n
    73
    \n-
    74 if( macroGrid_.nofvtxparams > 0 )
    \n-
    75 {
    \n-
    76 const size_t nofVertices = macroGrid_.vtx.size();
    \n-
    77 for( size_t i = 0; i < nofVertices; ++i )
    \n-
    78 {
    \n-
    79 std::vector< double > coord;
    \n-
    80
    \n-
    81 DomainType p;
    \n-
    82 for( int k = 0; k < DomainType::dimension; ++k )
    \n-
    83 p[ k ] = macroGrid_.vtx[i][k];
    \n-
    84
    \n-
    85 vtxInsertOrder_.insert( std::make_pair( p, i ) );
    \n-
    86 }
    \n-
    87 }
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    \n-\n-
    91 {
    \n-
    92 return grid_;
    \n-
    93 }
    \n-
    \n-
    94
    \n-
    95 template <class Intersection>
    \n-
    \n-
    96 bool wasInserted(const Intersection &intersection) const
    \n-
    97 {
    \n-
    98 return intersection.boundary();
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    101 template <class Intersection>
    \n-
    \n-
    102 int boundaryId(const Intersection &intersection) const
    \n-
    103 {
    \n-
    104 return (intersection.boundary()) ? int(intersection.indexInInside()+1) : int(0);
    \n-
    105 }
    \n-
    \n-
    106
    \n-
    107 template< int codim >
    \n-
    \n-
    108 int numParameters () const
    \n-
    109 {
    \n-
    110 if( codim == 0 )
    \n-
    111 return macroGrid_.nofelparams;
    \n-
    112 else if( codim == dimension )
    \n-
    113 return macroGrid_.nofvtxparams;
    \n-
    114 else
    \n-
    115 return 0;
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    118 template < class Entity >
    \n-
    \n-
    119 int numParameters ( const Entity & ) const
    \n-
    120 {
    \n-
    121 return numParameters< Entity::codimension >();
    \n-
    122 }
    \n-
    \n-
    123
    \n-
    \n-
    124 std::vector<double>& parameter(const Element &element)
    \n-
    125 {
    \n-
    126 const typename Element::Geometry &geo = element.geometry();
    \n-
    127 DomainType coord( geo.corner( 0 ) );
    \n-
    128 for( int i = 1; i < geo.corners(); ++i )
    \n-
    129 coord += geo.corner( i );
    \n-
    130 coord /= double( geo.corners() );
    \n-
    131
    \n-
    132 InsertOrderIterator it = elInsertOrder_.find( coord );
    \n-
    133 if( it != elInsertOrder_.end() )
    \n-
    134 return macroGrid_.elParams[ it->second ];
    \n-
    135 assert(0);
    \n-
    136 return emptyParam;
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    \n-
    139 std::vector<double>& parameter(const Vertex &vertex)
    \n-
    140 {
    \n-
    141 const typename Vertex::Geometry &geo = vertex.geometry();
    \n-
    142 DomainType coord( geo.corner( 0 ) );
    \n-
    143
    \n-
    144 InsertOrderIterator it = vtxInsertOrder_.find( coord );
    \n-
    145 if( it != vtxInsertOrder_.end() )
    \n-
    146 return macroGrid_.vtxParams[ it->second ];
    \n-
    147 return emptyParam;
    \n-
    148 }
    \n-
    \n-
    149
    \n-
    150 // return true if boundary parameters found
    \n-
    \n-\n-
    152 {
    \n-
    153 return false;
    \n-
    154 }
    \n-
    \n-
    155
    \n-
    156 template< class GG, class II >
    \n-
    157 const typename DGFBoundaryParameter::type &
    \n-
    \n-
    158 boundaryParameter ( const Intersection< GG, II > & intersection ) const
    \n-
    159 {
    \n-\n-
    161 }
    \n-
    \n-
    162
    \n-
    163 private:
    \n-
    164 typedef FieldVector<typename Grid::ctype,Grid::dimensionworld> DomainType;
    \n-
    165 struct Compare
    \n-
    166 {
    \n-
    167 bool operator() ( const DomainType &a, const DomainType &b ) const
    \n-
    168 {
    \n-
    169 // returns true, if a < b; c[i] < -eps;
    \n-
    170 const DomainType c = a - b;
    \n-
    171 const double eps = 1e-8;
    \n-
    172
    \n-
    173 for( int i = 0; i < DomainType::dimension; ++i )
    \n-
    174 {
    \n-
    175 if( c[ i ] <= -eps )
    \n-
    176 return true;
    \n-
    177 if( c[ i ] >= eps )
    \n-
    178 return false;
    \n-
    179 }
    \n-
    180 return false;
    \n-
    181 }
    \n-
    182 };
    \n-
    183 typedef std::map< DomainType, size_t, Compare > InsertOrderMap;
    \n-
    184 typedef typename InsertOrderMap::const_iterator InsertOrderIterator;
    \n-
    185
    \n-
    186 MacroGrid macroGrid_;
    \n-
    187 Grid *grid_;
    \n-
    188 InsertOrderMap elInsertOrder_;
    \n-
    189 InsertOrderMap vtxInsertOrder_;
    \n-
    190 std::vector<double> emptyParam;
    \n-
    191 };
    \n-
    \n-
    192
    \n-
    193} // end namespace Dune
    \n-
    194
    \n-
    195#endif
    \n-\n-\n-\n+
    76} // namespace Dune
    \n+
    77
    \n+
    78#endif // DUNE_GRID_IO_FILE_VTK_B64ENC_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    int numParameters() const
    Definition dgfgridfactory.hh:108
    \n-
    int boundaryId(const Intersection &intersection) const
    Definition dgfgridfactory.hh:102
    \n-
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfgridfactory.hh:158
    \n-
    std::vector< double > & parameter(const Vertex &vertex)
    Definition dgfgridfactory.hh:139
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n-
    int numParameters(const Entity &) const
    Definition dgfgridfactory.hh:119
    \n-
    bool wasInserted(const Intersection &intersection) const
    Definition dgfgridfactory.hh:96
    \n-
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfgridfactory.hh:50
    \n-
    G Grid
    Definition dgfgridfactory.hh:39
    \n-
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n-
    Grid * grid()
    Definition dgfgridfactory.hh:90
    \n-
    std::vector< double > & parameter(const Element &element)
    Definition dgfgridfactory.hh:124
    \n-
    bool haveBoundaryParameters() const
    Definition dgfgridfactory.hh:151
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    bool boundary() const
    Return true if intersection is with interior or exterior boundary (see the cases above)
    Definition common/intersection.hh:216
    \n-
    int indexInInside() const
    Local index of codim 1 entity in the inside() entity where intersection is contained in.
    Definition common/intersection.hh:346
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n-
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n-
    int nofvtxparams
    Definition parser.hh:163
    \n-
    std::vector< std::vector< double > > vtxParams
    Definition parser.hh:165
    \n-
    int nofelparams
    Definition parser.hh:163
    \n-
    std::vector< std::vector< double > > elParams
    Definition parser.hh:165
    \n-
    std::vector< std::vector< double > > vtx
    Definition parser.hh:125
    \n-
    std ::vector< std ::vector< unsigned int > > elements
    Definition parser.hh:134
    \n-\n+
    const char base64table[]
    endoing table
    Definition b64enc.hh:23
    \n+
    struct representing the three byte text as well as the four 6 bit chunks
    Definition b64enc.hh:34
    \n+
    char txt[3]
    Definition b64enc.hh:37
    \n+
    unsigned char size_type
    Definition b64enc.hh:35
    \n+
    void write(char *t)
    Definition b64enc.hh:60
    \n+
    size_type size
    Definition b64enc.hh:36
    \n+
    int read(const char *t, size_type s)
    Definition b64enc.hh:45
    \n+
    void put(const char c)
    Definition b64enc.hh:54
    \n+
    void reset()
    Definition b64enc.hh:39
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,309 +2,111 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-dgfgridfactory.hh\n+ * _\bv_\bt_\bk\n+b64enc.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_GRIDFACTORY_HH\n-6#define DUNE_DGF_GRIDFACTORY_HH\n-7\n-8#include \n-9#include \n-10#include \n-11#include \n-12#include \n-13\n-14#include \n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-17\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-20\n-21\n-22namespace _\bD_\bu_\bn_\be\n-23{\n-24\n-25 // External Forward Declarations\n-26 // -----------------------------\n-27\n-28 template < class GridImp, class IntersectionImp >\n-29 class Intersection;\n-30\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_B64ENC_HH\n+7#define DUNE_GRID_IO_FILE_VTK_B64ENC_HH\n+8\n+9#include \n+10\n+11namespace _\bD_\bu_\bn_\be {\n+12\n+_\b2_\b3 const char _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[] =\n+24 {\n+25 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n+26 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n+27 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',\n+28 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n+29 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'\n+30 };\n 31\n-32\n-33 // DGFGridFactory\n-34 // --------------\n-35\n-36 template < class G >\n-_\b3_\b7 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-38 {\n-_\b3_\b9 typedef G _\bG_\br_\bi_\bd;\n-_\b4_\b0 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b4_\b1 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n-42\n-43 private:\n-44 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Element;\n-45\n-46 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< dimension >::Entity Vertex;\n-47\n-48 public:\n-49\n-_\b5_\b0 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n-51 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-52 : macroGrid_( filename.c_str(), comm )\n-53 {\n-54 grid_ = macroGrid_.template createGrid< Grid >();\n-55\n-56 if( macroGrid_._\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs > 0 )\n-57 {\n-58 const size_t nofElements = macroGrid_._\be_\bl_\be_\bm_\be_\bn_\bt_\bs.size();\n-59 for( size_t i = 0; i < nofElements; ++i )\n-60 {\n-61 std::vector< double > coord;\n-62\n-63 DomainType p(0);\n-64 const size_t nofCorners = macroGrid_._\be_\bl_\be_\bm_\be_\bn_\bt_\bs[i].size();\n-65 for (size_t k=0; k=3 ? 3 : s;\n+48 _\bt_\bx_\bt[0] = s>0 ? t[0] : 0;\n+49 _\bt_\bx_\bt[1] = s>1 ? t[1] : 0;\n+50 _\bt_\bx_\bt[2] = s>2 ? t[2] : 0;\n+51 return _\bs_\bi_\bz_\be;\n+52 }\n+53\n+_\b5_\b4 void _\bp_\bu_\bt(const char c)\n+55 {\n+56 assert (_\bs_\bi_\bz_\be < 3);\n+57 _\bt_\bx_\bt[_\bs_\bi_\bz_\be++] = c;\n+58 }\n+59\n+_\b6_\b0 void _\bw_\br_\bi_\bt_\be(char* t)\n+61 {\n+62 const unsigned A = (_\bt_\bx_\bt[0] & 0b1111'1100) >> 2;\n+63 const unsigned B = (_\bt_\bx_\bt[0] & 0b0000'0011) << 4 | (_\bt_\bx_\bt[1] & 0b1111'0000) >>\n+4;\n+64 const unsigned C = (_\bt_\bx_\bt[1] & 0b0000'1111) << 2 | (_\bt_\bx_\bt[2] & 0b1100'0000) >>\n+6;\n+65 const unsigned D = _\bt_\bx_\bt[2] & 0b0011'1111;\n+66 t[0] = _\bs_\bi_\bz_\be>0 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[A] : '=';\n+67 t[1] = _\bs_\bi_\bz_\be>0 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[B] : '=';\n+68 t[2] = _\bs_\bi_\bz_\be>1 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[C] : '=';\n+69 t[3] = _\bs_\bi_\bz_\be>2 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[D] : '=';\n+70 _\bs_\bi_\bz_\be = 0;\n 71 }\n-72 }\n+72 };\n 73\n-74 if( macroGrid_._\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs > 0 )\n-75 {\n-76 const size_t nofVertices = macroGrid_._\bv_\bt_\bx.size();\n-77 for( size_t i = 0; i < nofVertices; ++i )\n-78 {\n-79 std::vector< double > coord;\n-80\n-81 DomainType p;\n-82 for( int k = 0; k < DomainType::dimension; ++k )\n-83 p[ k ] = macroGrid_._\bv_\bt_\bx[i][k];\n-84\n-85 vtxInsertOrder_.insert( std::make_pair( p, i ) );\n-86 }\n-87 }\n-88 }\n-89\n-_\b9_\b0 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd()\n-91 {\n-92 return grid_;\n-93 }\n-94\n-95 template \n-_\b9_\b6 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n-97 {\n-98 return intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by();\n-99 }\n-100\n-101 template \n-_\b1_\b0_\b2 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n-103 {\n-104 return (intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by()) ? int(intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be()+1) :\n-int(0);\n-105 }\n-106\n-107 template< int codim >\n-_\b1_\b0_\b8 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-109 {\n-110 if( codim == 0 )\n-111 return macroGrid_._\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs;\n-112 else if( codim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n-113 return macroGrid_._\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs;\n-114 else\n-115 return 0;\n-116 }\n-117\n-118 template < class Entity >\n-_\b1_\b1_\b9 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n-120 {\n-121 return numParameters< Entity::codimension >();\n-122 }\n-123\n-_\b1_\b2_\b4 std::vector& _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br(const Element &element)\n-125 {\n-126 const typename Element::Geometry &geo = element.geometry();\n-127 DomainType coord( geo.corner( 0 ) );\n-128 for( int i = 1; i < geo.corners(); ++i )\n-129 coord += geo.corner( i );\n-130 coord /= double( geo.corners() );\n-131\n-132 InsertOrderIterator it = elInsertOrder_.find( coord );\n-133 if( it != elInsertOrder_.end() )\n-134 return macroGrid_._\be_\bl_\bP_\ba_\br_\ba_\bm_\bs[ it->second ];\n-135 assert(0);\n-136 return emptyParam;\n-137 }\n-138\n-_\b1_\b3_\b9 std::vector& _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br(const Vertex &vertex)\n-140 {\n-141 const typename Vertex::Geometry &geo = vertex.geometry();\n-142 DomainType coord( geo.corner( 0 ) );\n-143\n-144 InsertOrderIterator it = vtxInsertOrder_.find( coord );\n-145 if( it != vtxInsertOrder_.end() )\n-146 return macroGrid_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs[ it->second ];\n-147 return emptyParam;\n-148 }\n-149\n-150 // return true if boundary parameters found\n-_\b1_\b5_\b1 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-152 {\n-153 return false;\n-154 }\n-155\n-156 template< class GG, class II >\n-157 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n-_\b1_\b5_\b8 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection ) const\n-159 {\n-160 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-161 }\n-162\n-163 private:\n-164 typedef FieldVector DomainType;\n-165 struct Compare\n-166 {\n-167 bool operator() ( const DomainType &a, const DomainType &b ) const\n-168 {\n-169 // returns true, if a < b; c[i] < -eps;\n-170 const DomainType c = a - b;\n-171 const double eps = 1e-8;\n-172\n-173 for( int i = 0; i < DomainType::dimension; ++i )\n-174 {\n-175 if( c[ i ] <= -eps )\n-176 return true;\n-177 if( c[ i ] >= eps )\n-178 return false;\n-179 }\n-180 return false;\n-181 }\n-182 };\n-183 typedef std::map< DomainType, size_t, Compare > InsertOrderMap;\n-184 typedef typename InsertOrderMap::const_iterator InsertOrderIterator;\n-185\n-186 MacroGrid macroGrid_;\n-187 _\bG_\br_\bi_\bd *grid_;\n-188 InsertOrderMap elInsertOrder_;\n-189 InsertOrderMap vtxInsertOrder_;\n-190 std::vector emptyParam;\n-191 };\n-192\n-193} // end namespace Dune\n-194\n-195#endif\n-_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\n+76} // namespace Dune\n+77\n+78#endif // DUNE_GRID_IO_FILE_VTK_B64ENC_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n-> &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Vertex &vertex)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters(const Entity &) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n-bool wasInserted(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(const std::string &filename, MPICommunicatorType\n-comm=MPIHelper::getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\br_\bi_\bd\n-Grid * grid()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Element &element)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool boundary() const\n-Return true if intersection is with interior or exterior boundary (see the\n-cases above)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-int indexInInside() const\n-Local index of codim 1 entity in the inside() entity where intersection is\n-contained in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n-static const type & defaultValue()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-std::string type\n-type of additional boundary parameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs\n-int nofvtxparams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs\n-std::vector< std::vector< double > > vtxParams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs\n-int nofelparams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\bP_\ba_\br_\ba_\bm_\bs\n-std::vector< std::vector< double > > elParams\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx\n-std::vector< std::vector< double > > vtx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n-std ::vector< std ::vector< unsigned int > > elements\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:134\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be\n+const char base64table[]\n+endoing table\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n+struct representing the three byte text as well as the four 6 bit chunks\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bt_\bx_\bt\n+char txt[3]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n+unsigned char size_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(char *t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\br_\be_\ba_\bd\n+int read(const char *t, size_type s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bp_\bu_\bt\n+void put(const char c)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:39\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00791.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00791.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfoned.hh File Reference\n+dune-grid: subsamplingvtkwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,49 +65,52 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfoned.hh File Reference
    \n+
    subsamplingvtkwriter.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <fstream>
    \n-#include <iostream>
    \n-#include <istream>
    \n-#include <vector>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/grid/common/intersection.hh>
    \n-#include <dune/grid/onedgrid.hh>
    \n-#include "dgfparser.hh"
    \n+\n+

    Provides subsampled file i/o for the visualization toolkit. \n+More...

    \n+
    #include <ostream>
    \n+#include <memory>
    \n+#include <dune/common/indent.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/virtualrefinement.hh>
    \n+#include <dune/grid/io/file/vtk/vtkwriter.hh>
    \n+#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::DGFGridInfo< OneDGrid >
     
    struct  Dune::DGFGridFactory< OneDGrid >
    class  Dune::SubsamplingVTKWriter< GridView >
     Writer for the output of subsampled grid functions in the vtk format. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    Provides subsampled file i/o for the visualization toolkit.

    \n+
    Author
    J\u00f6 Fahlke
    \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": "@@ -2,31 +2,34 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfoned.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bo_\bn_\be_\bd_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n+subsamplingvtkwriter.hh File Reference\n+Provides subsampled file i/o for the visualization toolkit. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Writer for the output of subsampled grid functions in the vtk format.\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 Include standard header files.\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+Provides subsampled file i/o for the visualization toolkit.\n+ Author\n+ J\u00c3\u00b6 Fahlke\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00791_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00791_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfoned.hh Source File\n+dune-grid: subsamplingvtkwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,295 +70,408 @@\n \n \n \n \n \n \n \n
    \n-
    dgfoned.hh
    \n+
    subsamplingvtkwriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH
    \n-
    6#define DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH
    \n-
    7
    \n-
    8//- C++ includes
    \n-
    9#include <algorithm>
    \n-
    10#include <fstream>
    \n-
    11#include <iostream>
    \n-
    12#include <istream>
    \n-
    13#include <vector>
    \n-
    14
    \n-
    15//- dune-common includes
    \n-
    16#include <dune/common/exceptions.hh>
    \n+
    5
    \n+
    6#ifndef DUNE_SUBSAMPLINGVTKWRITER_HH
    \n+
    7#define DUNE_SUBSAMPLINGVTKWRITER_HH
    \n+
    8
    \n+
    9#include <ostream>
    \n+
    10#include <memory>
    \n+
    11
    \n+
    12#include <dune/common/indent.hh>
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14#include <dune/geometry/virtualrefinement.hh>
    \n+\n+\n
    17
    \n-
    18//- dune-grid includes
    \n-\n-
    20#include <dune/grid/onedgrid.hh>
    \n-
    21
    \n-
    22//- local includes
    \n-
    23#include "dgfparser.hh"
    \n-
    24
    \n-
    25
    \n-
    26namespace
    \n-
    27{
    \n-
    28 // helper method used below
    \n-
    29 double getfirst ( std::vector< double > v )
    \n-
    30 {
    \n-
    31 return v[ 0 ];
    \n-
    32 }
    \n-
    33} // end anonymous namespace
    \n-
    34
    \n-
    35
    \n-
    36
    \n-
    37namespace Dune
    \n-
    38{
    \n-
    39
    \n-
    40 // DGFGridInfo
    \n-
    41 // -----------
    \n-
    42
    \n-
    43 template< >
    \n-
    \n-\n-
    45 {
    \n-
    \n-
    46 static int refineStepsForHalf ()
    \n-
    47 {
    \n-
    48 return 1;
    \n-
    49 }
    \n-
    \n+
    24namespace Dune
    \n+
    25{
    \n+
    37 template< class GridView >
    \n+
    \n+\n+
    39 : public VTKWriter<GridView>
    \n+
    40 {
    \n+\n+
    42 constexpr static int dim = GridView::dimension;
    \n+
    43 constexpr static int dimw = GridView::dimensionworld;
    \n+
    44 typedef typename GridView::Grid::ctype ctype;
    \n+
    45 typedef typename GridView::template Codim< 0 >::Entity Entity;
    \n+
    46 typedef VirtualRefinement<dim, ctype> Refinement;
    \n+
    47 typedef typename Refinement::IndexVector IndexVector;
    \n+
    48 typedef typename Refinement::ElementIterator SubElementIterator;
    \n+
    49 typedef typename Refinement::VertexIterator SubVertexIterator;
    \n
    50
    \n-
    \n-
    51 static double refineWeight ()
    \n-
    52 {
    \n-
    53 return 0.5;
    \n-
    54 }
    \n-
    \n-
    55 };
    \n-
    \n-
    56
    \n-
    57
    \n-
    58
    \n-
    59 // DGFGridFactory< OneDGrid >
    \n-
    60 // --------------------------
    \n-
    61
    \n-
    62 template< >
    \n-
    \n-\n-
    64 {
    \n-
    66 typedef OneDGrid Grid;
    \n-
    68 const static int dimension = Grid::dimension;
    \n-
    70 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n-
    71
    \n-
    \n-
    73 explicit DGFGridFactory ( std::istream &input,
    \n-
    74 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    75 : grid_( 0 ),
    \n-
    76 emptyParameters_( 0 )
    \n-
    77 {
    \n-
    78 generate( input, comm );
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    \n-
    82 explicit DGFGridFactory ( const std::string &filename,
    \n-
    83 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    84 : grid_( 0 ),
    \n-
    85 emptyParameters_( 0 )
    \n-
    86 {
    \n-
    87 std::ifstream input( filename.c_str() );
    \n-
    88 generate( input, comm );
    \n+
    51 typedef typename Base::CellIterator CellIterator;
    \n+
    52 typedef typename Base::FunctionIterator FunctionIterator;
    \n+
    53 using Base::cellBegin;
    \n+
    54 using Base::cellEnd;
    \n+
    55 using Base::celldata;
    \n+
    56 using Base::ncells;
    \n+
    57 using Base::ncorners;
    \n+
    58 using Base::nvertices;
    \n+
    59 using Base::outputtype;
    \n+\n+
    61 using Base::vertexEnd;
    \n+
    62 using Base::vertexdata;
    \n+
    63
    \n+
    64 public:
    \n+
    \n+
    80 explicit SubsamplingVTKWriter (const GridView &gridView,
    \n+
    81 Dune::RefinementIntervals intervals_, bool coerceToSimplex_ = false,
    \n+\n+
    83 : Base(gridView, VTK::nonconforming, coordPrecision)
    \n+
    84 , intervals(intervals_), coerceToSimplex(coerceToSimplex_)
    \n+
    85 {
    \n+
    86 if(intervals_.intervals() < 1) {
    \n+
    87 DUNE_THROW(Dune::IOError,"SubsamplingVTKWriter: Refinement intervals must be larger than zero! (One interval means no subsampling)");
    \n+
    88 }
    \n
    89 }
    \n
    \n
    90
    \n-
    \n-
    92 Grid *grid () const
    \n-
    93 {
    \n-
    94 return grid_;
    \n+
    91 private:
    \n+
    92 GeometryType subsampledGeometryType(GeometryType geometryType)
    \n+
    93 {
    \n+
    94 return (geometryType.isCube() && !coerceToSimplex ? geometryType : GeometryTypes::simplex(dim));
    \n
    95 }
    \n-
    \n
    96
    \n-
    98 template< class GG, class II >
    \n-
    \n-
    99 bool wasInserted ( const Dune::Intersection< GG, II > &intersection ) const
    \n-
    100 {
    \n-
    101 return false;
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    104 template< class GG, class II >
    \n-
    \n-
    105 int boundaryId ( const Dune::Intersection< GG, II > &intersection ) const
    \n-
    106 {
    \n-
    107 // OneDGrid returns boundary segment index;
    \n-
    108 // we return the index as the method boundaryId is deprecated
    \n-
    109 return intersection.boundarySegmentIndex();
    \n-
    110 }
    \n-
    \n-
    111
    \n-
    113 template< class Entity >
    \n-
    \n-
    114 int numParameters ( const Entity & ) const
    \n-
    115 {
    \n-
    116 return 0;
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    120 template< int codim >
    \n-
    \n-
    121 int numParameters () const
    \n-
    122 {
    \n-
    123 return 0;
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    126 template< class Entity >
    \n-
    \n-
    127 std::vector< double >& parameter ( const Entity &entity )
    \n-
    128 {
    \n-
    129 return parameter< Entity::codimension >( entity );
    \n-
    130 }
    \n-
    \n-
    131
    \n-
    133 template< int codim >
    \n-
    \n-
    134 std::vector< double > &parameter ( [[maybe_unused]] const typename Grid::Codim< codim >::Entity &element )
    \n-
    135 {
    \n-
    136 return emptyParameters_;
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    \n-\n-
    141 {
    \n-
    142 return false;
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    146 template< class GG, class II >
    \n-
    \n-
    147 const DGFBoundaryParameter::type &boundaryParameter ( [[maybe_unused]] const Dune::Intersection< GG, II > &intersection ) const
    \n-
    148 {
    \n-\n-
    150 }
    \n-
    \n-
    151
    \n-
    152 private:
    \n-
    153 // generate grid
    \n-
    154 void generate ( std::istream &input, MPICommunicatorType comm );
    \n-
    155
    \n-
    156 Grid *grid_;
    \n-
    157 std::vector< double > emptyParameters_;
    \n-
    158 };
    \n-
    \n-
    159
    \n-
    160
    \n-
    161
    \n-
    162 // Implementation of DGFGridFactory< OneDGrid >
    \n-
    163 // --------------------------------------------
    \n-
    164
    \n-
    165 inline void DGFGridFactory< OneDGrid >::generate ( std::istream &input, [[maybe_unused]] MPICommunicatorType comm )
    \n-
    166 {
    \n-
    167 // try to open interval block
    \n-
    168 dgf::IntervalBlock intervalBlock( input );
    \n-
    169
    \n-
    170 // try to open vertex block
    \n-
    171 int dimensionworld = Grid::dimensionworld;
    \n-
    172 dgf::VertexBlock vertexBlock( input, dimensionworld );
    \n-
    173
    \n-
    174 // check at least one block is active
    \n-
    175 if( !( vertexBlock.isactive() || intervalBlock.isactive() ))
    \n-
    176 DUNE_THROW( DGFException, "No readable block found" );
    \n-
    177
    \n-
    178 std::vector< std::vector< double > > vertices;
    \n-
    179
    \n-
    180 // read vertices first
    \n-
    181 if( vertexBlock.isactive() )
    \n-
    182 {
    \n-
    183 int nparameter = 0;
    \n-
    184 std::vector< std::vector< double > > parameter;
    \n-
    185 vertexBlock.get( vertices, parameter, nparameter );
    \n-
    186
    \n-
    187 if( nparameter > 0 )
    \n-
    188 std::cerr << "Warning: vertex parameters will be ignored" << std::endl;
    \n-
    189 }
    \n-
    190
    \n-
    191 // get vertices from interval block
    \n-
    192 if ( intervalBlock.isactive() )
    \n-
    193 {
    \n-
    194 if( intervalBlock.dimw() != dimensionworld )
    \n-
    195 {
    \n-
    196 DUNE_THROW( DGFException, "Error: wrong coordinate dimension in interval block \\
    \n-
    197 (got " << intervalBlock.dimw() << ", expected " << dimensionworld << ")" );
    \n-
    198 }
    \n-
    199
    \n-
    200 int nintervals = intervalBlock.numIntervals();
    \n-
    201 for( int i = 0; i < nintervals; ++i )
    \n-
    202 intervalBlock.getVtx( i, vertices );
    \n-
    203 }
    \n+
    97 template<typename SubIterator>
    \n+
    98 struct IteratorSelector
    \n+
    99 {};
    \n+
    100
    \n+
    101 SubElementIterator refinementBegin(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubElementIterator>)
    \n+
    102 {
    \n+
    103 return refinement.eBegin(intervals);
    \n+
    104 }
    \n+
    105
    \n+
    106 SubVertexIterator refinementBegin(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubVertexIterator>)
    \n+
    107 {
    \n+
    108 return refinement.vBegin(intervals);
    \n+
    109 }
    \n+
    110
    \n+
    111 SubElementIterator refinementEnd(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubElementIterator>)
    \n+
    112 {
    \n+
    113 return refinement.eEnd(intervals);
    \n+
    114 }
    \n+
    115
    \n+
    116 SubVertexIterator refinementEnd(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubVertexIterator>)
    \n+
    117 {
    \n+
    118 return refinement.vEnd(intervals);
    \n+
    119 }
    \n+
    120
    \n+
    121 template<typename Data, typename Iterator, typename SubIterator>
    \n+
    122 void writeData(VTK::VTUWriter& writer, const Data& data, const Iterator begin, const Iterator end, int nentries, IteratorSelector<SubIterator> sis)
    \n+
    123 {
    \n+
    124 for (auto it = data.begin(),
    \n+
    125 iend = data.end();
    \n+
    126 it != iend;
    \n+
    127 ++it)
    \n+
    128 {
    \n+
    129 const auto& f = *it;
    \n+
    130 VTK::FieldInfo fieldInfo = f.fieldInfo();
    \n+
    131 std::size_t writecomps = fieldInfo.size();
    \n+
    132 switch (fieldInfo.type())
    \n+
    133 {
    \n+\n+
    135 break;
    \n+\n+
    137 // vtk file format: a vector data always should have 3 comps (with
    \n+
    138 // 3rd comp = 0 in 2D case)
    \n+
    139 if (writecomps > 3)
    \n+
    140 DUNE_THROW(IOError,"Cannot write VTK vectors with more than 3 components (components was " << writecomps << ")");
    \n+
    141 writecomps = 3;
    \n+
    142 break;
    \n+\n+
    144 DUNE_THROW(NotImplemented,"VTK output for tensors not implemented yet");
    \n+
    145 }
    \n+
    146 std::shared_ptr<VTK::DataArrayWriter> p
    \n+
    147 (writer.makeArrayWriter(f.name(), writecomps, nentries, fieldInfo.precision()));
    \n+
    148 if(!p->writeIsNoop())
    \n+
    149 for (Iterator eit = begin; eit!=end; ++eit)
    \n+
    150 {
    \n+
    151 const Entity & e = *eit;
    \n+
    152 f.bind(e);
    \n+
    153 Refinement &refinement =
    \n+
    154 buildRefinement<dim, ctype>(eit->type(),
    \n+
    155 subsampledGeometryType(eit->type()));
    \n+
    156 for(SubIterator sit = refinementBegin(refinement,intervals,sis),
    \n+
    157 send = refinementEnd(refinement,intervals,sis);
    \n+
    158 sit != send;
    \n+
    159 ++sit)
    \n+
    160 {
    \n+
    161 f.write(sit.coords(),*p);
    \n+
    162 // expand 2D-Vectors to 3D for VTK format
    \n+
    163 for(unsigned j = f.fieldInfo().size(); j < writecomps; j++)
    \n+
    164 p->write(0.0);
    \n+
    165 }
    \n+
    166 f.unbind();
    \n+
    167 }
    \n+
    168 }
    \n+
    169 }
    \n+
    170
    \n+
    171
    \n+
    172 protected:
    \n+
    174 virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_);
    \n+
    175
    \n+
    177 virtual void writeCellData(VTK::VTUWriter& writer);
    \n+
    178
    \n+
    180 virtual void writeVertexData(VTK::VTUWriter& writer);
    \n+
    181
    \n+
    183 virtual void writeGridPoints(VTK::VTUWriter& writer);
    \n+
    184
    \n+
    186 virtual void writeGridCells(VTK::VTUWriter& writer);
    \n+
    187
    \n+
    188 public:
    \n+\n+
    190 using Base::addCellData;
    \n+
    191
    \n+
    192 private:
    \n+
    193 // hide addVertexData -- adding raw data directly without a VTKFunction
    \n+
    194 // currently does not make sense for subsampled meshes, as the higher order
    \n+
    195 // information is missing. See FS#676.
    \n+
    196 template<class V>
    \n+
    197 void addVertexData (const V& v, const std::string &name, int ncomps=1);
    \n+
    198 template<class V>
    \n+
    199 void addCellData (const V& v, const std::string &name, int ncomps=1);
    \n+
    200
    \n+
    201 Dune::RefinementIntervals intervals;
    \n+
    202 bool coerceToSimplex;
    \n+
    203 };
    \n+
    \n
    204
    \n-
    205 // copy to vector of doubles
    \n-
    206 std::vector< double > vtx( vertices.size() );
    \n-
    207 transform( vertices.begin(), vertices.end(), vtx.begin(), getfirst );
    \n-
    208
    \n-
    209 // remove duplicates
    \n-
    210 std::sort( vtx.begin(), vtx.end() );
    \n-
    211 std::vector< double >::iterator it = std::unique( vtx.begin(), vtx.end() );
    \n-
    212 vtx.erase( it, vtx.end() );
    \n-
    213 if( vertices.size() != vtx.size() )
    \n-
    214 std::cerr << "Warning: removed duplicate vertices" << std::endl;
    \n+
    206 template <class GridView>
    \n+
    \n+
    207 void SubsamplingVTKWriter<GridView>::countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    \n+
    208 {
    \n+
    209 nvertices_ = 0;
    \n+
    210 ncells_ = 0;
    \n+
    211 ncorners_ = 0;
    \n+
    212 for (CellIterator it=this->cellBegin(); it!=cellEnd(); ++it)
    \n+
    213 {
    \n+
    214 Refinement &refinement = buildRefinement<dim, ctype>(it->type(), subsampledGeometryType(it->type()));
    \n
    215
    \n-
    216 // create grid
    \n-
    217 grid_ = new OneDGrid( vtx );
    \n-
    218 }
    \n-
    219
    \n-
    220} // end namespace Dune
    \n+
    216 ncells_ += refinement.nElements(intervals);
    \n+
    217 nvertices_ += refinement.nVertices(intervals);
    \n+
    218 ncorners_ += refinement.nElements(intervals) * refinement.eBegin(intervals).vertexIndices().size();
    \n+
    219 }
    \n+
    220 }
    \n+
    \n
    221
    \n-
    222#endif // #ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH
    \n-
    The OneDGrid class.
    \n+
    222
    \n+
    224 template <class GridView>
    \n+
    \n+\n+
    226 {
    \n+
    227 if(celldata.size() == 0)
    \n+
    228 return;
    \n+
    229
    \n+
    230 // Find the names of the first scalar and vector data fields.
    \n+
    231 // These will be marked as the default fields (the ones that ParaView shows
    \n+
    232 // when the file has just been opened).
    \n+
    233 std::string defaultScalarField, defaultVectorField;
    \n+
    234 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames(celldata);
    \n+
    235
    \n+
    236 writer.beginCellData(defaultScalarField, defaultVectorField);
    \n+
    237 writeData(writer,celldata,cellBegin(),cellEnd(),ncells,IteratorSelector<SubElementIterator>());
    \n+
    238 writer.endCellData();
    \n+
    239 }
    \n+
    \n+
    240
    \n+
    242 template <class GridView>
    \n+
    \n+\n+
    244 {
    \n+
    245 if(vertexdata.size() == 0)
    \n+
    246 return;
    \n+
    247
    \n+
    248 // Find the names of the first scalar and vector data fields.
    \n+
    249 // These will be marked as the default fields (the ones that ParaView shows
    \n+
    250 // when the file has just been opened).
    \n+
    251 std::string defaultScalarField, defaultVectorField;
    \n+
    252 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames(vertexdata);
    \n+
    253
    \n+
    254 writer.beginPointData(defaultScalarField, defaultVectorField);
    \n+
    255 writeData(writer,vertexdata,cellBegin(),cellEnd(),nvertices,IteratorSelector<SubVertexIterator>());
    \n+
    256 writer.endPointData();
    \n+
    257 }
    \n+
    \n+
    258
    \n+
    260 template <class GridView>
    \n+
    \n+\n+
    262 {
    \n+
    263 writer.beginPoints();
    \n+
    264
    \n+
    265 std::shared_ptr<VTK::DataArrayWriter> p
    \n+
    266 (writer.makeArrayWriter("Coordinates", 3, nvertices, this->coordPrecision()));
    \n+
    267 if(!p->writeIsNoop())
    \n+
    268 for (CellIterator i=cellBegin(); i!=cellEnd(); ++i)
    \n+
    269 {
    \n+
    270 Refinement &refinement =
    \n+
    271 buildRefinement<dim, ctype>(i->type(),
    \n+
    272 subsampledGeometryType(i->type()));
    \n+
    273 for(SubVertexIterator sit = refinement.vBegin(intervals),
    \n+
    274 send = refinement.vEnd(intervals);
    \n+
    275 sit != send; ++sit)
    \n+
    276 {
    \n+
    277 FieldVector<ctype, dimw> coords = i->geometry().global(sit.coords());
    \n+
    278 for (int j=0; j<std::min(int(dimw),3); j++)
    \n+
    279 p->write(coords[j]);
    \n+
    280 for (int j=std::min(int(dimw),3); j<3; j++)
    \n+
    281 p->write(0.0);
    \n+
    282 }
    \n+
    283 }
    \n+
    284 // free the VTK::DataArrayWriter before touching the stream
    \n+
    285 p.reset();
    \n+
    286
    \n+
    287 writer.endPoints();
    \n+
    288 }
    \n+
    \n+
    289
    \n+
    291 template <class GridView>
    \n+
    \n+\n+
    293 {
    \n+
    294 writer.beginCells();
    \n+
    295
    \n+
    296 // connectivity
    \n+
    297 {
    \n+
    298 std::shared_ptr<VTK::DataArrayWriter> p1
    \n+
    299 (writer.makeArrayWriter("connectivity", 1, ncorners, VTK::Precision::int32));
    \n+
    300 // The offset within the index numbering
    \n+
    301 if(!p1->writeIsNoop()) {
    \n+
    302 int offset = 0;
    \n+
    303 for (CellIterator i=cellBegin(); i!=cellEnd(); ++i)
    \n+
    304 {
    \n+
    305 GeometryType coercedToType = subsampledGeometryType(i->type());
    \n+
    306 Refinement &refinement =
    \n+
    307 buildRefinement<dim, ctype>(i->type(), coercedToType);
    \n+
    308 for(SubElementIterator sit = refinement.eBegin(intervals),
    \n+
    309 send = refinement.eEnd(intervals);
    \n+
    310 sit != send; ++sit)
    \n+
    311 {
    \n+
    312 IndexVector indices = sit.vertexIndices();
    \n+
    313 for(unsigned int ii = 0; ii < indices.size(); ++ii)
    \n+
    314 p1->write(offset+indices[VTK::renumber(coercedToType, ii)]);
    \n+
    315 }
    \n+
    316 offset += refinement.nVertices(intervals);
    \n+
    317 }
    \n+
    318 }
    \n+
    319 }
    \n+
    320
    \n+
    321 // offsets
    \n+
    322 {
    \n+
    323 std::shared_ptr<VTK::DataArrayWriter> p2
    \n+
    324 (writer.makeArrayWriter("offsets", 1, ncells, VTK::Precision::int32));
    \n+
    325 if(!p2->writeIsNoop()) {
    \n+
    326 // The offset into the connectivity array
    \n+
    327 int offset = 0;
    \n+
    328 for (CellIterator i=cellBegin(); i!=cellEnd(); ++i)
    \n+
    329 {
    \n+
    330 Refinement &refinement =
    \n+
    331 buildRefinement<dim, ctype>(i->type(),
    \n+
    332 subsampledGeometryType(i->type()));
    \n+
    333 unsigned int verticesPerCell =
    \n+
    334 refinement.eBegin(intervals).vertexIndices().size();
    \n+
    335 for(int element = 0; element < refinement.nElements(intervals);
    \n+
    336 ++element)
    \n+
    337 {
    \n+
    338 offset += verticesPerCell;
    \n+
    339 p2->write(offset);
    \n+
    340 }
    \n+
    341 }
    \n+
    342 }
    \n+
    343 }
    \n+
    344
    \n+
    345 // types
    \n+
    346 if (dim>1)
    \n+
    347 {
    \n+
    348 std::shared_ptr<VTK::DataArrayWriter> p3
    \n+
    349 (writer.makeArrayWriter("types", 1, ncells, VTK::Precision::uint8));
    \n+
    350 if(!p3->writeIsNoop())
    \n+
    351 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n+
    352 {
    \n+
    353 GeometryType coerceTo = subsampledGeometryType(it->type());
    \n+
    354 Refinement &refinement =
    \n+
    355 buildRefinement<dim, ctype>(it->type(), coerceTo);
    \n+
    356 int vtktype = VTK::geometryType(coerceTo);
    \n+
    357 for(int i = 0; i < refinement.nElements(intervals); ++i)
    \n+
    358 p3->write(vtktype);
    \n+
    359 }
    \n+
    360 }
    \n+
    361
    \n+
    362 writer.endCells();
    \n+
    363 }
    \n+
    \n+
    364}
    \n+
    365
    \n+
    366#endif // DUNE_SUBSAMPLINGVTKWRITER_HH
    \n+\n+
    Provides file i/o for the visualization toolkit.
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n-
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n-
    std::vector< double > & parameter(const Element &element)
    Definition dgfgridfactory.hh:124
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    size_t boundarySegmentIndex() const
    index of the boundary segment within the macro grid
    Definition common/intersection.hh:236
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n-
    GridFamily::Traits::template Codim< cd >::Entity Entity
    A type that is a model of a Dune::Entity<cd,dim,...>.
    Definition common/grid.hh:419
    \n-
    static double refineWeight()
    Definition dgfoned.hh:51
    \n-
    static int refineStepsForHalf()
    Definition dgfoned.hh:46
    \n-
    OneDGrid Grid
    grid type
    Definition dgfoned.hh:66
    \n-
    std::vector< double > & parameter(const typename Grid::Codim< codim >::Entity &element)
    return empty vector
    Definition dgfoned.hh:134
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    MPI communicator type.
    Definition dgfoned.hh:70
    \n-
    const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
    return invalid default value
    Definition dgfoned.hh:147
    \n-
    std::vector< double > & parameter(const Entity &entity)
    Definition dgfoned.hh:127
    \n-
    int boundaryId(const Dune::Intersection< GG, II > &intersection) const
    Definition dgfoned.hh:105
    \n-
    Grid * grid() const
    get grid
    Definition dgfoned.hh:92
    \n-
    bool haveBoundaryParameters() const
    OneDGrid does not support boundary parameters.
    Definition dgfoned.hh:140
    \n-
    int numParameters(const Entity &) const
    OneDGrid does not support parameters, returns 0.
    Definition dgfoned.hh:114
    \n-
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor taking filename
    Definition dgfoned.hh:82
    \n-
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor taking istream
    Definition dgfoned.hh:73
    \n-
    int numParameters() const
    OneDGrid does not support parameters, returns 0.
    Definition dgfoned.hh:121
    \n-
    bool wasInserted(const Dune::Intersection< GG, II > &intersection) const
    always returns false
    Definition dgfoned.hh:99
    \n-
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n-
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n-
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n-
    One-dimensional adaptive grid.
    Definition onedgrid.hh:94
    \n-\n-\n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+\n+\n+\n+
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n+
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n+
    @ tensor
    tensor field (always 3x3)
    \n+
    @ vector
    vector-valued field (always 3D, will be padded if necessary)
    \n+\n+
    Writer for the output of subsampled grid functions in the vtk format.
    Definition subsamplingvtkwriter.hh:40
    \n+
    virtual void writeGridPoints(VTK::VTUWriter &writer)
    write the positions of vertices
    Definition subsamplingvtkwriter.hh:261
    \n+
    virtual void writeVertexData(VTK::VTUWriter &writer)
    write vertex data
    Definition subsamplingvtkwriter.hh:243
    \n+
    SubsamplingVTKWriter(const GridView &gridView, Dune::RefinementIntervals intervals_, bool coerceToSimplex_=false, VTK::Precision coordPrecision=VTK::Precision::float32)
    Construct a SubsamplingVTKWriter working on a specific GridView.
    Definition subsamplingvtkwriter.hh:80
    \n+
    virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    count the vertices, cells and corners
    Definition subsamplingvtkwriter.hh:207
    \n+
    virtual void writeCellData(VTK::VTUWriter &writer)
    write cell data
    Definition subsamplingvtkwriter.hh:225
    \n+
    virtual void writeGridCells(VTK::VTUWriter &writer)
    write the connectivity array
    Definition subsamplingvtkwriter.hh:292
    \n+
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n+
    VertexIterator vertexBegin() const
    Definition vtkwriter.hh:508
    \n+
    void addVertexData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the vertices of the grid to the visualization.
    Definition vtkwriter.hh:713
    \n+
    CellIterator cellEnd() const
    Definition vtkwriter.hh:402
    \n+
    std::list< VTKLocalFunction > vertexdata
    Definition vtkwriter.hh:1585
    \n+
    void addCellData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the cells of the grid to the visualization.
    Definition vtkwriter.hh:649
    \n+
    CellIterator cellBegin() const
    Definition vtkwriter.hh:397
    \n+
    VTK::OutputType outputtype
    Definition vtkwriter.hh:1609
    \n+
    std::list< VTKLocalFunction > celldata
    Definition vtkwriter.hh:1584
    \n+
    VTK::Precision coordPrecision() const
    get the precision with which coordinates are written out
    Definition vtkwriter.hh:782
    \n+
    std::list< VTKLocalFunction >::const_iterator FunctionIterator
    Definition vtkwriter.hh:376
    \n+
    int nvertices
    Definition vtkwriter.hh:1592
    \n+
    int ncells
    Definition vtkwriter.hh:1591
    \n+
    VertexIterator vertexEnd() const
    Definition vtkwriter.hh:515
    \n+
    int ncorners
    Definition vtkwriter.hh:1593
    \n+
    Iterator over the grids elements.
    Definition vtkwriter.hh:385
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n+
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n+
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n+
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n+
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n+
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n+
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n+
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n+
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n+
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,345 +2,527 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-dgfoned.hh\n+ * _\bv_\bt_\bk\n+subsamplingvtkwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH\n-6#define DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH\n-7\n-8//- C++ includes\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14\n-15//- dune-common includes\n-16#include \n+5\n+6#ifndef DUNE_SUBSAMPLINGVTKWRITER_HH\n+7#define DUNE_SUBSAMPLINGVTKWRITER_HH\n+8\n+9#include \n+10#include \n+11\n+12#include \n+13#include \n+14#include \n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n 17\n-18//- dune-grid includes\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bo_\bn_\be_\bd_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-21\n-22//- local includes\n-23#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n-24\n-25\n-26namespace\n-27{\n-28 // helper method used below\n-29 double getfirst ( std::vector< double > v )\n-30 {\n-31 return v[ 0 ];\n-32 }\n-33} // end anonymous namespace\n-34\n-35\n-36\n-37namespace _\bD_\bu_\bn_\be\n-38{\n-39\n-40 // DGFGridInfo\n-41 // -----------\n-42\n-43 template< >\n-_\b4_\b4 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd >\n-45 {\n-_\b4_\b6 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf ()\n-47 {\n-48 return 1;\n-49 }\n+24namespace _\bD_\bu_\bn_\be\n+25{\n+37 template< class GridView >\n+_\b3_\b8 class _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+39 : public _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+40 {\n+41 typedef _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> _\bB_\ba_\bs_\be;\n+42 constexpr static int dim = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+43 constexpr static int dimw = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+44 typedef typename GridView::Grid::ctype ctype;\n+45 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Entity;\n+46 typedef VirtualRefinement Refinement;\n+47 typedef typename Refinement::IndexVector IndexVector;\n+48 typedef typename Refinement::ElementIterator SubElementIterator;\n+49 typedef typename Refinement::VertexIterator SubVertexIterator;\n 50\n-_\b5_\b1 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt ()\n-52 {\n-53 return 0.5;\n-54 }\n-55 };\n-56\n-57\n-58\n-59 // DGFGridFactory< OneDGrid >\n-60 // --------------------------\n-61\n-62 template< >\n-_\b6_\b3 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd >\n-64 {\n-_\b6_\b6 typedef _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n-_\b6_\b8 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b7_\b0 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n-71\n-_\b7_\b3 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n-74 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-75 : grid_( 0 ),\n-76 emptyParameters_( 0 )\n-77 {\n-78 generate( input, comm );\n-79 }\n-80\n-_\b8_\b2 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n-83 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-84 : grid_( 0 ),\n-85 emptyParameters_( 0 )\n-86 {\n-87 std::ifstream input( filename.c_str() );\n-88 generate( input, comm );\n+51 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+52 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br FunctionIterator;\n+53 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn;\n+54 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bl_\bl_\bE_\bn_\bd;\n+55 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba;\n+56 using _\bB_\ba_\bs_\be_\b:_\b:_\bn_\bc_\be_\bl_\bl_\bs;\n+57 using _\bB_\ba_\bs_\be_\b:_\b:_\bn_\bc_\bo_\br_\bn_\be_\br_\bs;\n+58 using _\bB_\ba_\bs_\be_\b:_\b:_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs;\n+59 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be;\n+60 using _\bB_\ba_\bs_\be_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn;\n+61 using _\bB_\ba_\bs_\be_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd;\n+62 using _\bB_\ba_\bs_\be_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba;\n+63\n+64 public:\n+_\b8_\b0 explicit _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br (const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView,\n+81 Dune::RefinementIntervals intervals_, bool coerceToSimplex_ = false,\n+82 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+83 : _\bB_\ba_\bs_\be(gridView, VTK::nonconforming, _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn)\n+84 , intervals(intervals_), coerceToSimplex(coerceToSimplex_)\n+85 {\n+86 if(intervals_.intervals() < 1) {\n+87 DUNE_THROW(Dune::IOError,\"SubsamplingVTKWriter: Refinement intervals must be\n+larger than zero! (One interval means no subsampling)\");\n+88 }\n 89 }\n 90\n-_\b9_\b2 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd () const\n+91 private:\n+92 GeometryType subsampledGeometryType(GeometryType geometryType)\n 93 {\n-94 return grid_;\n+94 return (geometryType.isCube() && !coerceToSimplex ? geometryType :\n+GeometryTypes::simplex(dim));\n 95 }\n 96\n-98 template< class GG, class II >\n-_\b9_\b9 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n-100 {\n-101 return false;\n-102 }\n-103\n-104 template< class GG, class II >\n-_\b1_\b0_\b5 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n-106 {\n-107 // OneDGrid returns boundary segment index;\n-108 // we return the index as the method boundaryId is deprecated\n-109 return intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx();\n-110 }\n-111\n-113 template< class Entity >\n-_\b1_\b1_\b4 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n-115 {\n-116 return 0;\n-117 }\n-118\n-120 template< int codim >\n-_\b1_\b2_\b1 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-122 {\n-123 return 0;\n-124 }\n-125\n-126 template< class Entity >\n-_\b1_\b2_\b7 std::vector< double >& _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+97 template\n+98 struct IteratorSelector\n+99 {};\n+100\n+101 SubElementIterator refinementBegin(const Refinement& refinement, Dune::\n+RefinementIntervals intervals, IteratorSelector)\n+102 {\n+103 return refinement.eBegin(intervals);\n+104 }\n+105\n+106 SubVertexIterator refinementBegin(const Refinement& refinement, Dune::\n+RefinementIntervals intervals, IteratorSelector)\n+107 {\n+108 return refinement.vBegin(intervals);\n+109 }\n+110\n+111 SubElementIterator refinementEnd(const Refinement& refinement, Dune::\n+RefinementIntervals intervals, IteratorSelector)\n+112 {\n+113 return refinement.eEnd(intervals);\n+114 }\n+115\n+116 SubVertexIterator refinementEnd(const Refinement& refinement, Dune::\n+RefinementIntervals intervals, IteratorSelector)\n+117 {\n+118 return refinement.vEnd(intervals);\n+119 }\n+120\n+121 template\n+122 void writeData(VTK::VTUWriter& writer, const Data& data, const Iterator\n+begin, const Iterator end, int nentries, IteratorSelector sis)\n+123 {\n+124 for (auto it = data.begin(),\n+125 iend = data.end();\n+126 it != iend;\n+127 ++it)\n 128 {\n-129 return parameter< Entity::codimension >( entity );\n-130 }\n-131\n-133 template< int codim >\n-_\b1_\b3_\b4 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( [[maybe_unused]] const typename _\bG_\br_\bi_\bd_\b:_\b:\n-_\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &element )\n-135 {\n-136 return emptyParameters_;\n-137 }\n-138\n-_\b1_\b4_\b0 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-141 {\n-142 return false;\n-143 }\n-144\n-146 template< class GG, class II >\n-_\b1_\b4_\b7 const _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( [[maybe_unused]]\n-const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n-148 {\n-149 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-150 }\n-151\n-152 private:\n-153 // generate grid\n-154 void generate ( std::istream &input, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm );\n-155\n-156 _\bG_\br_\bi_\bd *grid_;\n-157 std::vector< double > emptyParameters_;\n-158 };\n-159\n-160\n-161\n-162 // Implementation of DGFGridFactory< OneDGrid >\n-163 // --------------------------------------------\n-164\n-165 inline void DGFGridFactory< OneDGrid >::generate ( std::istream &input, [\n-[maybe_unused]] MPICommunicatorType comm )\n-166 {\n-167 // try to open interval block\n-168 dgf::IntervalBlock intervalBlock( input );\n-169\n-170 // try to open vertex block\n-171 int dimensionworld = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-172 dgf::VertexBlock vertexBlock( input, dimensionworld );\n-173\n-174 // check at least one block is active\n-175 if( !( vertexBlock.isactive() || intervalBlock.isactive() ))\n-176 DUNE_THROW( DGFException, \"No readable block found\" );\n-177\n-178 std::vector< std::vector< double > > vertices;\n-179\n-180 // read vertices first\n-181 if( vertexBlock.isactive() )\n-182 {\n-183 int nparameter = 0;\n-184 std::vector< std::vector< double > > _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n-185 vertexBlock.get( vertices, _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, nparameter );\n-186\n-187 if( nparameter > 0 )\n-188 std::cerr << \"Warning: vertex parameters will be ignored\" << std::endl;\n-189 }\n-190\n-191 // get vertices from interval block\n-192 if ( intervalBlock.isactive() )\n-193 {\n-194 if( intervalBlock.dimw() != dimensionworld )\n-195 {\n-196 DUNE_THROW( DGFException, \"Error: wrong coordinate dimension in interval\n-block \\\n-197 (got \" << intervalBlock.dimw() << \", expected \" << dimensionworld << \")\" );\n-198 }\n-199\n-200 int nintervals = intervalBlock.numIntervals();\n-201 for( int i = 0; i < nintervals; ++i )\n-202 intervalBlock.getVtx( i, vertices );\n-203 }\n+129 const auto& f = *it;\n+130 VTK::FieldInfo fieldInfo = f.fieldInfo();\n+131 std::size_t writecomps = fieldInfo.size();\n+132 switch (fieldInfo.type())\n+133 {\n+134 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br:\n+135 break;\n+136 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br:\n+137 // vtk file format: a vector data always should have 3 comps (with\n+138 // 3rd comp = 0 in 2D case)\n+139 if (writecomps > 3)\n+140 DUNE_THROW(IOError,\"Cannot write VTK vectors with more than 3 components\n+(components was \" << writecomps << \")\");\n+141 writecomps = 3;\n+142 break;\n+143 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br:\n+144 DUNE_THROW(NotImplemented,\"VTK output for tensors not implemented yet\");\n+145 }\n+146 std::shared_ptr p\n+147 (writer.makeArrayWriter(f.name(), writecomps, nentries, fieldInfo.precision\n+()));\n+148 if(!p->writeIsNoop())\n+149 for (Iterator eit = begin; eit!=end; ++eit)\n+150 {\n+151 const Entity & e = *eit;\n+152 f.bind(e);\n+153 Refinement &refinement =\n+154 buildRefinement(eit->type(),\n+155 subsampledGeometryType(eit->type()));\n+156 for(SubIterator sit = refinementBegin(refinement,intervals,sis),\n+157 send = refinementEnd(refinement,intervals,sis);\n+158 sit != send;\n+159 ++sit)\n+160 {\n+161 f.write(sit.coords(),*p);\n+162 // expand 2D-Vectors to 3D for VTK format\n+163 for(unsigned j = f.fieldInfo().size(); j < writecomps; j++)\n+164 p->write(0.0);\n+165 }\n+166 f.unbind();\n+167 }\n+168 }\n+169 }\n+170\n+171\n+172 protected:\n+174 virtual void _\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs(int &nvertices_, int &ncells_, int &ncorners_);\n+175\n+177 virtual void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(VTK::VTUWriter& writer);\n+178\n+180 virtual void _\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(VTK::VTUWriter& writer);\n+181\n+183 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs(VTK::VTUWriter& writer);\n+184\n+186 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs(VTK::VTUWriter& writer);\n+187\n+188 public:\n+189 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba;\n+190 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba;\n+191\n+192 private:\n+193 // hide addVertexData -- adding raw data directly without a VTKFunction\n+194 // currently does not make sense for subsampled meshes, as the higher order\n+195 // information is missing. See FS#676.\n+196 template\n+197 void addVertexData (const V& v, const std::string &name, int ncomps=1);\n+198 template\n+199 void addCellData (const V& v, const std::string &name, int ncomps=1);\n+200\n+201 Dune::RefinementIntervals intervals;\n+202 bool coerceToSimplex;\n+203 };\n 204\n-205 // copy to vector of doubles\n-206 std::vector< double > vtx( vertices.size() );\n-207 transform( vertices.begin(), vertices.end(), vtx.begin(), getfirst );\n-208\n-209 // remove duplicates\n-210 std::sort( vtx.begin(), vtx.end() );\n-211 std::vector< double >::iterator it = std::unique( vtx.begin(), vtx.end() );\n-212 vtx.erase( it, vtx.end() );\n-213 if( vertices.size() != vtx.size() )\n-214 std::cerr << \"Warning: removed duplicate vertices\" << std::endl;\n+206 template \n+_\b2_\b0_\b7 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs(int &nvertices_, int\n+&ncells_, int &ncorners_)\n+208 {\n+209 nvertices_ = 0;\n+210 ncells_ = 0;\n+211 ncorners_ = 0;\n+212 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=this->cellBegin(); it!=cellEnd(); ++it)\n+213 {\n+214 Refinement &refinement = buildRefinement(it->type(),\n+subsampledGeometryType(it->type()));\n 215\n-216 // create grid\n-217 grid_ = new OneDGrid( vtx );\n-218 }\n-219\n-220} // end namespace Dune\n+216 ncells_ += refinement.nElements(intervals);\n+217 nvertices_ += refinement.nVertices(intervals);\n+218 ncorners_ += refinement.nElements(intervals) * refinement.eBegin\n+(intervals).vertexIndices().size();\n+219 }\n+220 }\n 221\n-222#endif // #ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH\n-_\bo_\bn_\be_\bd_\bg_\br_\bi_\bd_\b._\bh_\bh\n-The OneDGrid class.\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Element &element)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-size_t boundarySegmentIndex() const\n-index of the boundary segment within the macro grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+222\n+224 template \n+_\b2_\b2_\b5 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+226 {\n+227 if(celldata.size() == 0)\n+228 return;\n+229\n+230 // Find the names of the first scalar and vector data fields.\n+231 // These will be marked as the default fields (the ones that ParaView shows\n+232 // when the file has just been opened).\n+233 std::string defaultScalarField, defaultVectorField;\n+234 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames\n+(celldata);\n+235\n+236 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(defaultScalarField, defaultVectorField);\n+237 writeData(writer,celldata,cellBegin(),cellEnd\n+(),ncells,IteratorSelector());\n+238 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n+239 }\n+240\n+242 template \n+_\b2_\b4_\b3 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br&\n+writer)\n+244 {\n+245 if(vertexdata.size() == 0)\n+246 return;\n+247\n+248 // Find the names of the first scalar and vector data fields.\n+249 // These will be marked as the default fields (the ones that ParaView shows\n+250 // when the file has just been opened).\n+251 std::string defaultScalarField, defaultVectorField;\n+252 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames\n+(vertexdata);\n+253\n+254 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(defaultScalarField, defaultVectorField);\n+255 writeData(writer,vertexdata,cellBegin(),cellEnd\n+(),nvertices,IteratorSelector());\n+256 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n+257 }\n+258\n+260 template \n+_\b2_\b6_\b1 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br&\n+writer)\n+262 {\n+263 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n+264\n+265 std::shared_ptr p\n+266 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"Coordinates\", 3, nvertices, this->coordPrecision\n+()));\n+267 if(!p->writeIsNoop())\n+268 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br i=cellBegin(); i!=cellEnd(); ++i)\n+269 {\n+270 Refinement &refinement =\n+271 buildRefinement(i->type(),\n+272 subsampledGeometryType(i->type()));\n+273 for(SubVertexIterator sit = refinement.vBegin(intervals),\n+274 send = refinement.vEnd(intervals);\n+275 sit != send; ++sit)\n+276 {\n+277 FieldVector coords = i->geometry().global(sit.coords());\n+278 for (int j=0; jwrite(coords[j]);\n+280 for (int j=std::min(int(dimw),3); j<3; j++)\n+281 p->write(0.0);\n+282 }\n+283 }\n+284 // free the VTK::DataArrayWriter before touching the stream\n+285 p.reset();\n+286\n+287 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n+288 }\n+289\n+291 template \n+_\b2_\b9_\b2 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+293 {\n+294 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs();\n+295\n+296 // connectivity\n+297 {\n+298 std::shared_ptr p1\n+299 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"connectivity\", 1, ncorners, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:\n+_\bi_\bn_\bt_\b3_\b2));\n+300 // The offset within the index numbering\n+301 if(!p1->writeIsNoop()) {\n+302 int offset = 0;\n+303 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br i=cellBegin(); i!=cellEnd(); ++i)\n+304 {\n+305 GeometryType coercedToType = subsampledGeometryType(i->type());\n+306 Refinement &refinement =\n+307 buildRefinement(i->type(), coercedToType);\n+308 for(SubElementIterator sit = refinement.eBegin(intervals),\n+309 send = refinement.eEnd(intervals);\n+310 sit != send; ++sit)\n+311 {\n+312 IndexVector indices = sit.vertexIndices();\n+313 for(unsigned int ii = 0; ii < indices.size(); ++ii)\n+314 p1->write(offset+indices[_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br(coercedToType, ii)]);\n+315 }\n+316 offset += refinement.nVertices(intervals);\n+317 }\n+318 }\n+319 }\n+320\n+321 // offsets\n+322 {\n+323 std::shared_ptr p2\n+324 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"offsets\", 1, ncells, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+325 if(!p2->writeIsNoop()) {\n+326 // The offset into the connectivity array\n+327 int offset = 0;\n+328 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br i=cellBegin(); i!=cellEnd(); ++i)\n+329 {\n+330 Refinement &refinement =\n+331 buildRefinement(i->type(),\n+332 subsampledGeometryType(i->type()));\n+333 unsigned int verticesPerCell =\n+334 refinement.eBegin(intervals).vertexIndices().size();\n+335 for(int element = 0; element < refinement.nElements(intervals);\n+336 ++element)\n+337 {\n+338 offset += verticesPerCell;\n+339 p2->write(offset);\n+340 }\n+341 }\n+342 }\n+343 }\n+344\n+345 // types\n+346 if (dim>1)\n+347 {\n+348 std::shared_ptr p3\n+349 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"types\", 1, ncells, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8));\n+350 if(!p3->writeIsNoop())\n+351 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=cellBegin(); it!=cellEnd(); ++it)\n+352 {\n+353 GeometryType coerceTo = subsampledGeometryType(it->type());\n+354 Refinement &refinement =\n+355 buildRefinement(it->type(), coerceTo);\n+356 int vtktype = _\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(coerceTo);\n+357 for(int i = 0; i < refinement.nElements(intervals); ++i)\n+358 p3->write(vtktype);\n+359 }\n+360 }\n+361\n+362 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bs();\n+363 }\n+364}\n+365\n+366#endif // DUNE_SUBSAMPLINGVTKWRITER_HH\n+_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Provides file i/o for the visualization toolkit.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n static constexpr int dimension\n The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n static constexpr int dimensionworld\n The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridFamily::Traits::template Codim< cd >::Entity Entity\n-A type that is a model of a Dune::Entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:419\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n-static double refineWeight()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n-static int refineStepsForHalf()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n-OneDGrid Grid\n-grid type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const typename Grid::Codim< codim >::Entity\n-&element)\n-return empty vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-MPI communicator type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection<\n-GG, II > &intersection) const\n-return invalid default value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Entity &entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const Dune::Intersection< GG, II > &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n-Grid * grid() const\n-get grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-OneDGrid does not support boundary parameters.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters(const Entity &) const\n-OneDGrid does not support parameters, returns 0.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(const std::string &filename, MPICommunicatorType\n-comm=MPIHelper::getCommunicator())\n-constructor taking filename\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n-getCommunicator())\n-constructor taking istream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters() const\n-OneDGrid does not support parameters, returns 0.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n-bool wasInserted(const Dune::Intersection< GG, II > &intersection) const\n-always returns false\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n-Some simple static information for a given GridType.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n-static const type & defaultValue()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-std::string type\n-type of additional boundary parameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bn_\be_\bD_\bG_\br_\bi_\bd\n-One-dimensional adaptive grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn onedgrid.hh:94\n-_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n+_\bD_\bu_\bn_\be\n+Include standard header files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n+@ int32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n+@ uint8\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n+@ float32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n+int renumber(const Dune::GeometryType &t, int i)\n+renumber VTK <-> Dune\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n+GeometryType geometryType(const Dune::GeometryType &t)\n+mapping from GeometryType to VTKGeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid view abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A struct that collects all associated types of one implementation from the\n+Traits class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+@ tensor\n+tensor field (always 3x3)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br\n+@ vector\n+vector-valued field (always 3D, will be padded if necessary)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br\n+@ scalar\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+Writer for the output of subsampled grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+virtual void writeGridPoints(VTK::VTUWriter &writer)\n+write the positions of vertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+virtual void writeVertexData(VTK::VTUWriter &writer)\n+write vertex data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+SubsamplingVTKWriter(const GridView &gridView, Dune::RefinementIntervals\n+intervals_, bool coerceToSimplex_=false, VTK::Precision coordPrecision=VTK::\n+Precision::float32)\n+Construct a SubsamplingVTKWriter working on a specific GridView.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)\n+count the vertices, cells and corners\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+virtual void writeCellData(VTK::VTUWriter &writer)\n+write cell data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs\n+virtual void writeGridCells(VTK::VTUWriter &writer)\n+write the connectivity array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+Writer for the ouput of grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn\n+VertexIterator vertexBegin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:508\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const std::shared_ptr< const VTKFunction > &p)\n+Add a grid function that lives on the vertices of the grid to the\n+visualization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:713\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bE_\bn_\bd\n+CellIterator cellEnd() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:402\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba\n+std::list< VTKLocalFunction > vertexdata\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1585\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< const VTKFunction > &p)\n+Add a grid function that lives on the cells of the grid to the visualization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:649\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn\n+CellIterator cellBegin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:397\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be\n+VTK::OutputType outputtype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1609\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba\n+std::list< VTKLocalFunction > celldata\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1584\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+VTK::Precision coordPrecision() const\n+get the precision with which coordinates are written out\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:782\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+std::list< VTKLocalFunction >::const_iterator FunctionIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:376\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n+int nvertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1592\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\be_\bl_\bl_\bs\n+int ncells\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1591\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd\n+VertexIterator vertexEnd() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:515\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\br_\bn_\be_\br_\bs\n+int ncorners\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1593\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over the grids elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:385\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n+unsigned nitems, Precision prec)\n+acquire a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void endCellData()\n+finish CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+void beginCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void endPointData()\n+finish PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void beginCellData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void beginPointData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+void endPoints()\n+finish section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+void endCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+void beginPoints()\n+start section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00794.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00794.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfexception.hh File Reference\n+dune-grid: common.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,136 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    dgfexception.hh File Reference
    \n+Namespaces |\n+Enumerations |\n+Functions
    \n+
    common.hh File Reference
    \n \n
    \n-
    #include <dune/common/exceptions.hh>
    \n+\n+

    Common stuff for the VTKWriter. \n+More...

    \n+
    #include <limits>
    \n+#include <sstream>
    \n+#include <string>
    \n+#include <cstdint>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/geometry/type.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 Classes

    class  Dune::DGFException
     exception class for IO errors in the DGF parser More...
    struct  Dune::VTK::PrintType< T >
     determine a type to safely put another type into a stream More...
     
    struct  Dune::VTK::PrintType< unsigned char >
     
    struct  Dune::VTK::PrintType< signed char >
     
    struct  Dune::VTK::PrintType< char >
     
    class  Dune::VTK::FieldInfo
     Descriptor struct for VTK fields. More...
     
    \n \n \n \n \n+\n+\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Enumerations

    enum  Dune::VTK::OutputType { Dune::VTK::ascii\n+, Dune::VTK::base64\n+, Dune::VTK::appendedraw\n+, Dune::VTK::appendedbase64\n+ }
     How the bulk data should be stored in the file. More...
     
    enum  Dune::VTK::DataMode { Dune::VTK::conforming\n+, Dune::VTK::nonconforming\n+ }
     Whether to produce conforming or non-conforming output. More...
     
    enum  Dune::VTK::GeometryType {
    \n+  Dune::VTK::vertex = 1\n+, Dune::VTK::line = 3\n+, Dune::VTK::triangle = 5\n+, Dune::VTK::polygon = 7\n+,
    \n+  Dune::VTK::quadrilateral = 9\n+, Dune::VTK::tetrahedron = 10\n+, Dune::VTK::hexahedron = 12\n+, Dune::VTK::prism = 13\n+,
    \n+  Dune::VTK::pyramid = 14\n+, Dune::VTK::polyhedron = 42\n+
    \n+ }
     Type representing VTK's entity geometry types. More...
     
    enum  Dune::VTK::FileType { Dune::VTK::polyData\n+, Dune::VTK::unstructuredGrid\n+ }
     which type of VTK file to write More...
     
    enum class  Dune::VTK::Precision {
    \n+  Dune::VTK::int32\n+, Dune::VTK::uint8\n+, Dune::VTK::uint32\n+, Dune::VTK::float32\n+,
    \n+  Dune::VTK::float64\n+
    \n+ }
     which precision to use when writing out data to vtk files More...
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    GeometryType Dune::VTK::geometryType (const Dune::GeometryType &t)
     mapping from GeometryType to VTKGeometryType
     
    int Dune::VTK::renumber (const Dune::GeometryType &t, int i)
     renumber VTK <-> Dune
     
    template<typename T >
    int Dune::VTK::renumber (const T &t, int i)
     renumber VTK <-> Dune
     
    std::string Dune::VTK::getEndiannessString ()
     determine endianness of this C++ implementation
     
    std::string Dune::VTK::toString (Precision p)
     map precision to VTK type name
     
    std::size_t Dune::VTK::typeSize (Precision p)
     map precision to byte size
     
    \n-
    \n+

    Detailed Description

    \n+

    Common stuff for the VTKWriter.

    \n+
    Author
    Peter Bastian, Christian Engwer
    \n+

    This file contains common stuff for all instances of VTKWriter.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,22 +2,94 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfexception.hh File Reference\n+ * _\bv_\bt_\bk\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+common.hh File Reference\n+Common stuff for the VTKWriter. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n #include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-\u00a0 exception class for IO errors in the DGF parser _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bT_\b _\b>\n+\u00a0 determine a type to safely put another type into a stream _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bc_\bh_\ba_\br_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+\u00a0 Descriptor struct for _\bV_\bT_\bK fields. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\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:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4 ,\n+ _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 }\n+\u00a0 How the bulk data should be stored in the file. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:\n+ _\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg }\n+\u00a0 Whether to produce conforming or non-conforming output. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be {\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bv_\be_\br_\bt_\be_\bx = 1 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bl_\bi_\bn_\be = 3 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:\n+ _\bt_\br_\bi_\ba_\bn_\bg_\bl_\be = 5 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bg_\bo_\bn = 7 ,\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl = 9 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn = 10 ,\n+ _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn = 12 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\br_\bi_\bs_\bm = 13 ,\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\by_\br_\ba_\bm_\bi_\bd = 14 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn = 42\n+ }\n+\u00a0 Type representing VTK's entity geometry types. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:\n+ _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd }\n+\u00a0 which type of VTK file to write _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+enum class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn {\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bi_\bn_\bt_\b3_\b2 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bi_\bn_\bt_\b8 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2 , _\bD_\bu_\bn_\be_\b:_\b:\n+ _\bV_\bT_\bK_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2 ,\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4\n+ }\n+\u00a0 which precision to use when writing out data to vtk files _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be (const Dune::GeometryType &t)\n+\u00a0 mapping from GeometryType to VTKGeometryType\n+\u00a0\n+ int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br (const Dune::GeometryType &t, int i)\n+\u00a0 renumber _\bV_\bT_\bK <-> _\bD_\bu_\bn_\be\n+\u00a0\n+template\n+ int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br (const T &t, int i)\n+\u00a0 renumber _\bV_\bT_\bK <-> _\bD_\bu_\bn_\be\n+\u00a0\n+ std::string\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg ()\n+\u00a0 determine endianness of this C++ implementation\n+\u00a0\n+ std::string\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg (_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n+\u00a0 map precision to _\bV_\bT_\bK type name\n+\u00a0\n+ std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\by_\bp_\be_\bS_\bi_\bz_\be (_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n+\u00a0 map precision to byte size\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+Common stuff for the VTKWriter.\n+ Author\n+ Peter Bastian, Christian Engwer\n+This file contains common stuff for all instances of VTKWriter.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00794_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00794_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfexception.hh Source File\n+dune-grid: common.hh Source File\n \n \n \n \n \n \n \n@@ -70,44 +70,384 @@\n \n \n \n \n \n \n \n
    \n-
    dgfexception.hh
    \n+
    common.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_DGFEXCEPTION_HH
    \n-
    6#define DUNE_GRID_DGFEXCEPTION_HH
    \n-
    7
    \n-
    8#include <dune/common/exceptions.hh>
    \n-
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    12
    \n-
    \n-\n-
    15 : public IOError
    \n-
    16 {};
    \n-
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_COMMON_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_COMMON_HH
    \n+
    8
    \n+
    9#include <limits>
    \n+
    10#include <sstream>
    \n+
    11#include <string>
    \n+
    12#include <cstdint>
    \n+
    13
    \n+
    14#include <dune/common/exceptions.hh>
    \n+
    15#include <dune/geometry/type.hh>
    \n+
    16#include <dune/common/typetraits.hh>
    \n
    17
    \n-
    18}
    \n-
    19
    \n-
    20#endif
    \n+
    25namespace Dune
    \n+
    26{
    \n+
    29
    \n+
    30 namespace VTK {
    \n+
    31
    \n+
    33 //
    \n+
    34 // VTKOptions
    \n+
    35 //
    \n+
    36
    \n+
    38
    \n+
    \n+\n+\n+\n+\n+\n+
    52 // //! Output to the file is compressed inline binary.
    \n+
    53 // binarycompressed,
    \n+
    54 // //! Output is compressed and appended to the file.
    \n+
    55 // compressedappended
    \n+
    56 };
    \n+
    \n+
    58
    \n+
    \n+
    67 enum DataMode {
    \n+
    69
    \n+\n+
    75
    \n+\n+
    82 };
    \n+
    \n+
    83
    \n+
    85 //
    \n+
    86 // PrintType
    \n+
    87 //
    \n+
    88
    \n+
    90
    \n+
    94 template<typename T>
    \n+
    \n+
    95 struct PrintType {
    \n+
    97 typedef T Type;
    \n+
    98 };
    \n+
    \n+
    99
    \n+
    100 template<>
    \n+
    \n+
    101 struct PrintType<unsigned char> {
    \n+
    102 typedef unsigned Type;
    \n+
    103 };
    \n+
    \n+
    104
    \n+
    105 template<>
    \n+
    \n+
    106 struct PrintType<signed char> {
    \n+
    107 typedef int Type;
    \n+
    108 };
    \n+
    \n+
    109
    \n+
    110 template<>
    \n+
    \n+
    111 struct PrintType<char> {
    \n+
    112 typedef std::conditional<std::numeric_limits<char>::is_signed,
    \n+
    113 int, unsigned>::type
    \n+\n+
    115 };
    \n+
    \n+
    116
    \n+
    118 //
    \n+
    119 // VTK::GeometryType related stuff
    \n+
    120 //
    \n+
    121
    \n+
    123
    \n+
    \n+\n+\n+
    134 line = 3,
    \n+\n+\n+\n+\n+\n+
    140 prism = 13,
    \n+\n+
    142 polyhedron = 42
    \n+
    143 };
    \n+
    \n+
    144
    \n+
    146
    \n+
    \n+
    151 inline GeometryType geometryType(const Dune::GeometryType& t)
    \n+
    152 {
    \n+
    153 if (t.isVertex()) return vertex;
    \n+
    154 if (t.isLine()) return line;
    \n+
    155 if (t.isTriangle()) return triangle;
    \n+
    156 if (t.isQuadrilateral()) return quadrilateral;
    \n+
    157 if (t.isTetrahedron()) return tetrahedron;
    \n+
    158 if (t.isPyramid()) return pyramid;
    \n+
    159 if (t.isPrism()) return prism;
    \n+
    160 if (t.isHexahedron()) return hexahedron;
    \n+
    161
    \n+
    162 if (t.isNone() )
    \n+
    163 {
    \n+
    164 if( t.dim() == 2 ) return polygon;
    \n+
    165 if( t.dim() == 3 ) return polyhedron;
    \n+
    166 }
    \n+
    167
    \n+
    168 DUNE_THROW(IOError,"VTKWriter: unsupported GeometryType " << t);
    \n+
    169 }
    \n+
    \n+
    170
    \n+
    172 //
    \n+
    173 // Functions for transforming the index of a corner inside an entity
    \n+
    174 // between Dune and VTK
    \n+
    175 //
    \n+
    176
    \n+
    178
    \n+
    \n+
    186 inline int renumber(const Dune::GeometryType &t, int i)
    \n+
    187 {
    \n+
    188 static const int quadRenumbering[4] = {0,1,3,2};
    \n+
    189 static const int cubeRenumbering[8] = {0,1,3,2,4,5,7,6};
    \n+
    190 static const int prismRenumbering[6] = {0,2,1,3,5,4};
    \n+
    191 static const int pyramidRenumbering[5] = {0,1,3,2,4};
    \n+
    192
    \n+
    193 if (t.isQuadrilateral()) return quadRenumbering[i];
    \n+
    194 if (t.isPyramid()) return pyramidRenumbering[i];
    \n+
    195 if (t.isPrism()) return prismRenumbering[i];
    \n+
    196 if (t.isHexahedron()) return cubeRenumbering[i];
    \n+
    197
    \n+
    198 return i;
    \n+
    199 }
    \n+
    \n+
    200
    \n+
    202
    \n+
    216 template<typename T>
    \n+
    \n+
    217 int renumber(const T& t, int i)
    \n+
    218 {
    \n+
    219 return renumber(t.type(), i);
    \n+
    220 }
    \n+
    \n+
    221
    \n+
    223 //
    \n+
    224 // Determine Endianness
    \n+
    225 //
    \n+
    226
    \n+
    228
    \n+
    \n+
    232 inline std::string getEndiannessString()
    \n+
    233 {
    \n+
    234 short i = 1;
    \n+
    235 if (reinterpret_cast<char*>(&i)[1] == 1)
    \n+
    236 return "BigEndian";
    \n+
    237 else
    \n+
    238 return "LittleEndian";
    \n+
    239 }
    \n+
    \n+
    240
    \n+
    242 //
    \n+
    243 // which type of vtkfile to write
    \n+
    244 //
    \n+
    245
    \n+
    247
    \n+
    \n+
    252 enum FileType {
    \n+\n+\n+
    257 };
    \n+
    \n+
    258
    \n+
    259
    \n+
    261 //
    \n+
    262 // which precision to use when writing out data
    \n+
    263 //
    \n+
    264
    \n+
    266
    \n+
    \n+
    271 enum class Precision {
    \n+
    272 int32,
    \n+
    273 uint8,
    \n+
    274 uint32,
    \n+
    275 float32,
    \n+
    276 float64
    \n+
    277 };
    \n+
    \n+
    278
    \n+
    \n+
    280 inline std::string toString(Precision p)
    \n+
    281 {
    \n+
    282 switch(p)
    \n+
    283 {
    \n+\n+
    285 return "Float32";
    \n+\n+
    287 return "Float64";
    \n+\n+
    289 return "UInt32";
    \n+
    290 case Precision::uint8:
    \n+
    291 return "UInt8";
    \n+
    292 case Precision::int32:
    \n+
    293 return "Int32";
    \n+
    294 default:
    \n+
    295 DUNE_THROW(Dune::NotImplemented, "Unknown precision type");
    \n+
    296 }
    \n+
    297 }
    \n+
    \n+
    298
    \n+
    \n+
    300 inline std::size_t typeSize(Precision p)
    \n+
    301 {
    \n+
    302 switch(p)
    \n+
    303 {
    \n+\n+
    305 return sizeof(float);
    \n+\n+
    307 return sizeof(double);
    \n+\n+
    309 return sizeof(std::uint32_t);
    \n+
    310 case Precision::uint8:
    \n+
    311 return sizeof(std::uint8_t);
    \n+
    312 case Precision::int32:
    \n+
    313 return sizeof(std::int32_t);
    \n+
    314 default:
    \n+
    315 DUNE_THROW(Dune::NotImplemented, "Unknown precision type");
    \n+
    316 }
    \n+
    317 }
    \n+
    \n+
    318
    \n+
    320
    \n+
    \n+\n+
    328 {
    \n+
    329
    \n+
    330 public:
    \n+
    331
    \n+
    \n+
    333 enum class Type {
    \n+
    336 scalar,
    \n+
    338 vector,
    \n+
    340 tensor
    \n+
    341 };
    \n+
    \n+
    342
    \n+
    \n+
    344 FieldInfo(std::string name, Type type, std::size_t size, Precision prec = Precision::float32)
    \n+
    345 : _name(name)
    \n+
    346 , _type(type)
    \n+
    347 , _size(size)
    \n+
    348 , _prec(prec)
    \n+
    349 {}
    \n+
    \n+
    350
    \n+
    \n+
    352 std::string name() const
    \n+
    353 {
    \n+
    354 return _name;
    \n+
    355 }
    \n+
    \n+
    356
    \n+
    \n+
    358 Type type() const
    \n+
    359 {
    \n+
    360 return _type;
    \n+
    361 }
    \n+
    \n+
    362
    \n+
    \n+
    364 std::size_t size() const
    \n+
    365 {
    \n+
    366 return _size;
    \n+
    367 }
    \n+
    \n+
    368
    \n+
    \n+\n+
    371 {
    \n+
    372 return _prec;
    \n+
    373 }
    \n+
    \n+
    374
    \n+
    375 private:
    \n+
    376
    \n+
    377 std::string _name;
    \n+
    378 Type _type;
    \n+
    379 std::size_t _size;
    \n+
    380 Precision _prec;
    \n+
    381
    \n+
    382 };
    \n+
    \n+
    383
    \n+
    384
    \n+
    385 } // namespace VTK
    \n+
    386
    \n+
    388
    \n+
    389} // namespace Dune
    \n+
    390
    \n+
    391#endif // DUNE_GRID_IO_FILE_VTK_COMMON_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+\n+\n+\n+\n+\n+
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n+
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n+
    @ appendedraw
    Output is to the file is appended raw binary.
    Definition common.hh:49
    \n+
    @ appendedbase64
    Output is to the file is appended base64 binary.
    Definition common.hh:51
    \n+
    @ base64
    Output to the file is inline base64 binary.
    Definition common.hh:47
    \n+
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n+
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n+
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n+
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n+
    std::string toString(Precision p)
    map precision to VTK type name
    Definition common.hh:280
    \n+
    DataMode
    Whether to produce conforming or non-conforming output.
    Definition common.hh:67
    \n+
    @ conforming
    Output conforming data.
    Definition common.hh:73
    \n+
    @ nonconforming
    Output non-conforming data.
    Definition common.hh:81
    \n+
    std::size_t typeSize(Precision p)
    map precision to byte size
    Definition common.hh:300
    \n+
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n+
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n+
    GeometryType
    Type representing VTK's entity geometry types.
    Definition common.hh:132
    \n+
    @ line
    Definition common.hh:134
    \n+
    @ pyramid
    Definition common.hh:141
    \n+
    @ polyhedron
    Definition common.hh:142
    \n+
    @ quadrilateral
    Definition common.hh:137
    \n+
    @ vertex
    Definition common.hh:133
    \n+
    @ tetrahedron
    Definition common.hh:138
    \n+
    @ prism
    Definition common.hh:140
    \n+
    @ hexahedron
    Definition common.hh:139
    \n+
    @ triangle
    Definition common.hh:135
    \n+
    @ polygon
    Definition common.hh:136
    \n+
    determine a type to safely put another type into a stream
    Definition common.hh:95
    \n+
    T Type
    type to convert T to before putting it into a stream with <<
    Definition common.hh:97
    \n+
    unsigned Type
    Definition common.hh:102
    \n+
    int Type
    Definition common.hh:107
    \n+
    std::conditional< std::numeric_limits< char >::is_signed, int, unsigned >::type Type
    Definition common.hh:114
    \n+
    Descriptor struct for VTK fields.
    Definition common.hh:328
    \n+
    std::size_t size() const
    The number of components in the data field.
    Definition common.hh:364
    \n+
    Precision precision() const
    The precision used for the output of the data field.
    Definition common.hh:370
    \n+
    Type
    VTK data type.
    Definition common.hh:333
    \n+
    @ tensor
    tensor field (always 3x3)
    \n+
    @ vector
    vector-valued field (always 3D, will be padded if necessary)
    \n+\n+
    FieldInfo(std::string name, Type type, std::size_t size, Precision prec=Precision::float32)
    Create a FieldInfo instance with the given name, type and size.
    Definition common.hh:344
    \n+
    Type type() const
    The type of the data field.
    Definition common.hh:358
    \n+
    std::string name() const
    The name of the data field.
    Definition common.hh:352
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,38 +2,452 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-dgfexception.hh\n+ * _\bv_\bt_\bk\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// SPDX-FileCopyrightText: 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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_DGFEXCEPTION_HH\n-6#define DUNE_GRID_DGFEXCEPTION_HH\n-7\n-8#include \n-9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-12\n-_\b1_\b4 class _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-15 : public IOError\n-16 {};\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_COMMON_HH\n+7#define DUNE_GRID_IO_FILE_VTK_COMMON_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \n+13\n+14#include \n+15#include \n+16#include \n 17\n-18}\n-19\n-20#endif\n+25namespace _\bD_\bu_\bn_\be\n+26{\n+29\n+30 namespace VTK {\n+31\n+33 //\n+34 // VTKOptions\n+35 //\n+36\n+38\n+_\b4_\b3 enum _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be {\n+_\b4_\b5 _\ba_\bs_\bc_\bi_\bi,\n+_\b4_\b7 _\bb_\ba_\bs_\be_\b6_\b4,\n+_\b4_\b9 _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw,\n+51 _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n+52 // //! Output to the file is compressed inline binary.\n+53 // binarycompressed,\n+54 // //! Output is compressed and appended to the file.\n+55 // compressedappended\n+_\b5_\b6 };\n+58\n+_\b6_\b7 enum _\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be {\n+69\n+_\b7_\b3 _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg,\n+75\n+81 _\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+_\b8_\b2 };\n+83\n+85 //\n+86 // PrintType\n+87 //\n+88\n+90\n+94 template\n+_\b9_\b5 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n+_\b9_\b7 typedef T _\bT_\by_\bp_\be;\n+98 };\n+99\n+100 template<>\n+_\b1_\b0_\b1 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n+_\b1_\b0_\b2 typedef unsigned _\bT_\by_\bp_\be;\n+103 };\n+104\n+105 template<>\n+_\b1_\b0_\b6 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n+_\b1_\b0_\b7 typedef int _\bT_\by_\bp_\be;\n+108 };\n+109\n+110 template<>\n+_\b1_\b1_\b1 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n+112 typedef std::conditional::is_signed,\n+113 int, unsigned>::type\n+_\b1_\b1_\b4 _\bT_\by_\bp_\be;\n+115 };\n+116\n+118 //\n+119 // VTK::GeometryType related stuff\n+120 //\n+121\n+123\n+_\b1_\b3_\b2 enum _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be {\n+_\b1_\b3_\b3 _\bv_\be_\br_\bt_\be_\bx = 1,\n+_\b1_\b3_\b4 _\bl_\bi_\bn_\be = 3,\n+_\b1_\b3_\b5 _\bt_\br_\bi_\ba_\bn_\bg_\bl_\be = 5,\n+_\b1_\b3_\b6 _\bp_\bo_\bl_\by_\bg_\bo_\bn = 7,\n+_\b1_\b3_\b7 _\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl = 9,\n+_\b1_\b3_\b8 _\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn = 10,\n+_\b1_\b3_\b9 _\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn = 12,\n+_\b1_\b4_\b0 _\bp_\br_\bi_\bs_\bm = 13,\n+_\b1_\b4_\b1 _\bp_\by_\br_\ba_\bm_\bi_\bd = 14,\n+142 _\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn = 42\n+_\b1_\b4_\b3 };\n+144\n+146\n+_\b1_\b5_\b1 inline _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(const Dune::GeometryType& t)\n+152 {\n+153 if (t.isVertex()) return _\bv_\be_\br_\bt_\be_\bx;\n+154 if (t.isLine()) return _\bl_\bi_\bn_\be;\n+155 if (t.isTriangle()) return _\bt_\br_\bi_\ba_\bn_\bg_\bl_\be;\n+156 if (t.isQuadrilateral()) return _\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl;\n+157 if (t.isTetrahedron()) return _\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn;\n+158 if (t.isPyramid()) return _\bp_\by_\br_\ba_\bm_\bi_\bd;\n+159 if (t.isPrism()) return _\bp_\br_\bi_\bs_\bm;\n+160 if (t.isHexahedron()) return _\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn;\n+161\n+162 if (t.isNone() )\n+163 {\n+164 if( t.dim() == 2 ) return _\bp_\bo_\bl_\by_\bg_\bo_\bn;\n+165 if( t.dim() == 3 ) return _\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn;\n+166 }\n+167\n+168 DUNE_THROW(IOError,\"VTKWriter: unsupported GeometryType \" << t);\n+169 }\n+170\n+172 //\n+173 // Functions for transforming the index of a corner inside an entity\n+174 // between Dune and VTK\n+175 //\n+176\n+178\n+_\b1_\b8_\b6 inline int _\br_\be_\bn_\bu_\bm_\bb_\be_\br(const Dune::GeometryType &t, int i)\n+187 {\n+188 static const int quadRenumbering[4] = {0,1,3,2};\n+189 static const int cubeRenumbering[8] = {0,1,3,2,4,5,7,6};\n+190 static const int prismRenumbering[6] = {0,2,1,3,5,4};\n+191 static const int pyramidRenumbering[5] = {0,1,3,2,4};\n+192\n+193 if (t.isQuadrilateral()) return quadRenumbering[i];\n+194 if (t.isPyramid()) return pyramidRenumbering[i];\n+195 if (t.isPrism()) return prismRenumbering[i];\n+196 if (t.isHexahedron()) return cubeRenumbering[i];\n+197\n+198 return i;\n+199 }\n+200\n+202\n+216 template\n+_\b2_\b1_\b7 int _\br_\be_\bn_\bu_\bm_\bb_\be_\br(const T& t, int i)\n+218 {\n+219 return _\br_\be_\bn_\bu_\bm_\bb_\be_\br(t.type(), i);\n+220 }\n+221\n+223 //\n+224 // Determine Endianness\n+225 //\n+226\n+228\n+_\b2_\b3_\b2 inline std::string _\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg()\n+233 {\n+234 short i = 1;\n+235 if (reinterpret_cast(&i)[1] == 1)\n+236 return \"BigEndian\";\n+237 else\n+238 return \"LittleEndian\";\n+239 }\n+240\n+242 //\n+243 // which type of vtkfile to write\n+244 //\n+245\n+247\n+_\b2_\b5_\b2 enum _\bF_\bi_\bl_\be_\bT_\by_\bp_\be {\n+_\b2_\b5_\b4 _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba,\n+256 _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n+_\b2_\b5_\b7 };\n+258\n+259\n+261 //\n+262 // which precision to use when writing out data\n+263 //\n+264\n+266\n+_\b2_\b7_\b1 enum class _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn {\n+272 _\bi_\bn_\bt_\b3_\b2,\n+273 _\bu_\bi_\bn_\bt_\b8,\n+274 _\bu_\bi_\bn_\bt_\b3_\b2,\n+275 _\bf_\bl_\bo_\ba_\bt_\b3_\b2,\n+276 _\bf_\bl_\bo_\ba_\bt_\b6_\b4\n+277 };\n+278\n+_\b2_\b8_\b0 inline std::string _\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg(_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n+281 {\n+282 switch(p)\n+283 {\n+284 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2:\n+285 return \"Float32\";\n+286 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4:\n+287 return \"Float64\";\n+288 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2:\n+289 return \"UInt32\";\n+290 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8:\n+291 return \"UInt8\";\n+292 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2:\n+293 return \"Int32\";\n+294 default:\n+295 DUNE_THROW(Dune::NotImplemented, \"Unknown precision type\");\n+296 }\n+297 }\n+298\n+_\b3_\b0_\b0 inline std::size_t _\bt_\by_\bp_\be_\bS_\bi_\bz_\be(_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n+301 {\n+302 switch(p)\n+303 {\n+304 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2:\n+305 return sizeof(float);\n+306 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4:\n+307 return sizeof(double);\n+308 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2:\n+309 return sizeof(std::uint32_t);\n+310 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8:\n+311 return sizeof(std::uint8_t);\n+312 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2:\n+313 return sizeof(std::int32_t);\n+314 default:\n+315 DUNE_THROW(Dune::NotImplemented, \"Unknown precision type\");\n+316 }\n+317 }\n+318\n+320\n+_\b3_\b2_\b7 class _\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+328 {\n+329\n+330 public:\n+331\n+_\b3_\b3_\b3 enum class _\bT_\by_\bp_\be {\n+336 _\bs_\bc_\ba_\bl_\ba_\br,\n+338 _\bv_\be_\bc_\bt_\bo_\br,\n+340 _\bt_\be_\bn_\bs_\bo_\br\n+341 };\n+342\n+_\b3_\b4_\b4 _\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(std::string _\bn_\ba_\bm_\be, _\bT_\by_\bp_\be _\bt_\by_\bp_\be, std::size_t _\bs_\bi_\bz_\be, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec =\n+_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+345 : _name(_\bn_\ba_\bm_\be)\n+346 , _type(_\bt_\by_\bp_\be)\n+347 , _size(_\bs_\bi_\bz_\be)\n+348 , _prec(prec)\n+349 {}\n+350\n+_\b3_\b5_\b2 std::string _\bn_\ba_\bm_\be() const\n+353 {\n+354 return _name;\n+355 }\n+356\n+_\b3_\b5_\b8 _\bT_\by_\bp_\be _\bt_\by_\bp_\be() const\n+359 {\n+360 return _type;\n+361 }\n+362\n+_\b3_\b6_\b4 std::size_t _\bs_\bi_\bz_\be() const\n+365 {\n+366 return _size;\n+367 }\n+368\n+_\b3_\b7_\b0 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const\n+371 {\n+372 return _prec;\n+373 }\n+374\n+375 private:\n+376\n+377 std::string _name;\n+378 _\bT_\by_\bp_\be _type;\n+379 std::size_t _size;\n+380 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _prec;\n+381\n+382 };\n+383\n+384\n+385 } // namespace VTK\n+386\n+388\n+389} // namespace Dune\n+390\n+391#endif // DUNE_GRID_IO_FILE_VTK_COMMON_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-exception class for IO errors in the DGF parser\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n+@ int32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2\n+@ uint32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n+@ uint8\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n+@ float32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4\n+@ float64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n+OutputType\n+How the bulk data should be stored in the file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n+@ ascii\n+Output to the file is in ascii.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw\n+@ appendedraw\n+Output is to the file is appended raw binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n+@ appendedbase64\n+Output is to the file is appended base64 binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4\n+@ base64\n+Output to the file is inline base64 binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n+int renumber(const Dune::GeometryType &t, int i)\n+renumber VTK <-> Dune\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n+FileType\n+which type of VTK file to write\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n+@ polyData\n+for .vtp files (PolyData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n+@ unstructuredGrid\n+for .vtu files (UnstructuredGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg\n+std::string toString(Precision p)\n+map precision to VTK type name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:280\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be\n+DataMode\n+Whether to produce conforming or non-conforming output.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+@ conforming\n+Output conforming data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+@ nonconforming\n+Output non-conforming data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\by_\bp_\be_\bS_\bi_\bz_\be\n+std::size_t typeSize(Precision p)\n+map precision to byte size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:300\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n+GeometryType geometryType(const Dune::GeometryType &t)\n+mapping from GeometryType to VTKGeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n+std::string getEndiannessString()\n+determine endianness of this C++ implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n+GeometryType\n+Type representing VTK's entity geometry types.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bl_\bi_\bn_\be\n+@ line\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\by_\br_\ba_\bm_\bi_\bd\n+@ pyramid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn\n+@ polyhedron\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl\n+@ quadrilateral\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bv_\be_\br_\bt_\be_\bx\n+@ vertex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn\n+@ tetrahedron\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\br_\bi_\bs_\bm\n+@ prism\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn\n+@ hexahedron\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\br_\bi_\ba_\bn_\bg_\bl_\be\n+@ triangle\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bg_\bo_\bn\n+@ polygon\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be\n+determine a type to safely put another type into a stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n+T Type\n+type to convert T to before putting it into a stream with <<\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n+unsigned Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n+int Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n+std::conditional< std::numeric_limits< char >::is_signed, int, unsigned >::type\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+Descriptor struct for VTK fields.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:328\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+The number of components in the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:364\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision precision() const\n+The precision used for the output of the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+VTK data type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:333\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+@ tensor\n+tensor field (always 3x3)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br\n+@ vector\n+vector-valued field (always 3D, will be padded if necessary)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br\n+@ scalar\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+FieldInfo(std::string name, Type type, std::size_t size, Precision\n+prec=Precision::float32)\n+Create a FieldInfo instance with the given name, type and size.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:344\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n+Type type() const\n+The type of the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:358\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\ba_\bm_\be\n+std::string name() const\n+The name of the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:352\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00797.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00797.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: periodicfacetrans.hh File Reference\n+dune-grid: boundarywriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,52 +65,44 @@\n \n \n \n \n \n \n \n
    \n \n-
    periodicfacetrans.hh File Reference
    \n+Namespaces
    \n+
    boundarywriter.hh File Reference
    \n \n
    \n-
    #include <iostream>
    \n-#include <vector>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+
    #include <memory>
    \n+#include <string>
    \n+#include <dune/grid/io/file/vtk/basicwriter.hh>
    \n+#include <dune/grid/io/file/vtk/boundaryiterators.hh>
    \n+#include <dune/grid/io/file/vtk/skeletonfunction.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::dgf::PeriodicFaceTransformationBlock
     
    class  Dune::dgf::PeriodicFaceTransformationBlock::Matrix< T >
     
    struct  Dune::dgf::PeriodicFaceTransformationBlock::AffineTransformation
    class  Dune::VTK::NonConformingBoundaryWriter< GV >
     
    \n \n \n \n \n-\n+\n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    namespace  Dune::VTK
     
    \n-\n-\n-\n

    \n-Functions

    std::ostream & Dune::dgf::operator<< (std::ostream &out, const PeriodicFaceTransformationBlock::AffineTransformation &trafo)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,34 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\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-periodicfacetrans.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+boundarywriter.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bk_\be_\bl_\be_\bt_\bo_\bn_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bT_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const\n- _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn &trafo)\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00797_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00797_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: periodicfacetrans.hh Source File\n+dune-grid: boundarywriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,191 +70,116 @@\n
    \n \n \n \n \n \n \n
    \n-
    periodicfacetrans.hh
    \n+
    boundarywriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_PERIODICFACETRANSBLOCK_HH
    \n-
    6#define DUNE_DGF_PERIODICFACETRANSBLOCK_HH
    \n-
    7
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n-
    12
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17 namespace dgf
    \n-
    18 {
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH
    \n+
    8
    \n+
    9#include <memory>
    \n+
    10#include <string>
    \n+
    11
    \n+\n+\n+\n+
    15
    \n+
    16namespace Dune {
    \n
    19
    \n-
    20 // PeriodicFaceTransformationBlock
    \n-
    21 // -------------------------------
    \n-
    22
    \n+
    20 namespace VTK {
    \n+
    21
    \n+
    22 template<typename GV>
    \n
    \n-\n-
    24 : public BasicBlock
    \n-
    25 {
    \n-
    26 template< class T >
    \n-
    27 class Matrix;
    \n-
    28
    \n-\n-
    30
    \n-
    31 private:
    \n-
    32 std::vector< AffineTransformation > transformations_;
    \n-
    33
    \n-
    34 // copy not implemented
    \n-\n+\n+\n+
    25 public BasicWriter<NonConformingBoundaryIteratorFactory<GV> >
    \n+
    26 {
    \n+\n+\n+
    29
    \n+
    30 const GV& gv;
    \n+
    31
    \n+
    32 public:
    \n+
    \n+\n+
    34 : Factory(gv_), Base(static_cast<const Factory&>(*this)), gv(gv_)
    \n+
    35 { }
    \n+
    \n
    36
    \n-
    37 public:
    \n-
    38 // initialize block and get dimension of world
    \n-
    39 PeriodicFaceTransformationBlock ( std::istream &in, int dimworld );
    \n-
    40
    \n-
    \n-
    41 const AffineTransformation &transformation ( int i ) const
    \n-
    42 {
    \n-
    43 assert( i < numTransformations() );
    \n-
    44 return transformations_[ i ];
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    \n-
    47 int numTransformations () const
    \n-
    48 {
    \n-
    49 return transformations_.size();
    \n-
    50 }
    \n+\n+
    38
    \n+
    39 template<typename Func>
    \n+
    \n+
    40 void addCellData(const std::shared_ptr<Func>& p, const std::string& name) {
    \n+
    41 addCellData(std::shared_ptr<typename Base::FunctionWriter>
    \n+
    42 (new SkeletonFunctionWriter<Func>(p, name)));
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    45 template<typename Func>
    \n+
    \n+
    46 void addCellData(Func* p, const std::string& name) {
    \n+
    47 addCellData(std::shared_ptr<Func>(p), name);
    \n+
    48 }
    \n
    \n+
    49
    \n+\n
    51
    \n-
    52 private:
    \n-
    53 void match ( char what );
    \n-
    54 };
    \n-
    \n-
    55
    \n-
    56
    \n-
    57 // PeriodicFaceTransformationBlock::Matrix
    \n-
    58 // ---------------------------------------
    \n-
    59
    \n-
    60 template< class T >
    \n-
    \n-\n-
    62 {
    \n-
    63 int rows_;
    \n-
    64 int cols_;
    \n-
    65 std::vector< T > fields_;
    \n+
    52 template<typename Func>
    \n+
    \n+
    53 void addPointData(const std::shared_ptr<Func>& p, const std::string& name) {
    \n+
    54 addPointData(std::shared_ptr<typename Base::FunctionWriter>
    \n+
    55 (new SkeletonFunctionWriter<Func>(p, name)));
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    58 template<typename Func>
    \n+
    \n+
    59 void addPointData(Func* p, const std::string& name) {
    \n+
    60 addPointData(std::shared_ptr<Func>(p), name);
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    63 };
    \n+
    \n+
    64
    \n+
    65 } // namespace VTK
    \n
    66
    \n-
    67 public:
    \n-
    \n-
    68 Matrix ( int rows, int cols )
    \n-
    69 : rows_( rows ),
    \n-
    70 cols_( cols ),
    \n-
    71 fields_( rows * cols )
    \n-
    72 {}
    \n-
    \n-
    73
    \n-
    \n-
    74 const T &operator() ( int i, int j ) const
    \n-
    75 {
    \n-
    76 return fields_[ i * cols_ + j ];
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    79 T &operator() ( int i, int j )
    \n-
    80 {
    \n-
    81 return fields_[ i * cols_ + j ];
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    \n-
    84 int rows () const
    \n-
    85 {
    \n-
    86 return rows_;
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    \n-
    89 int cols () const
    \n-
    90 {
    \n-
    91 return cols_;
    \n-
    92 }
    \n-
    \n-
    93 };
    \n-
    \n-
    94
    \n-
    95
    \n-
    96 // PeriodicFaceTransformationBlock::AffineTransformation
    \n-
    97 // -----------------------------------------------------
    \n-
    98
    \n-
    \n-\n-
    100 {
    \n-\n-
    102 std::vector< double > shift;
    \n-
    103
    \n-
    \n-
    104 explicit AffineTransformation ( int dimworld )
    \n-
    105 : matrix( dimworld, dimworld ),
    \n-
    106 shift( dimworld )
    \n-
    107 {}
    \n-
    \n-
    108 };
    \n-
    \n-
    109
    \n-
    110
    \n-
    \n-
    111 inline std::ostream &
    \n-\n-
    113 {
    \n-
    114 for( int i = 0; i < trafo.matrix.rows(); ++i )
    \n-
    115 {
    \n-
    116 out << (i > 0 ? ", " : "");
    \n-
    117 for( int j = 0; j < trafo.matrix.cols(); ++j )
    \n-
    118 out << (j > 0 ? " " : "") << trafo.matrix( i, j );
    \n-
    119 }
    \n-
    120 out << " +";
    \n-
    121 for( unsigned int i = 0; i < trafo.shift.size(); ++i )
    \n-
    122 out << " " << trafo.shift[ i ];
    \n-
    123 return out;
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    126 } // end namespace dgf
    \n-
    127
    \n-
    128} // end namespace Dune
    \n-
    129
    \n-
    130#endif
    \n-\n+
    68
    \n+
    69} // namespace Dune
    \n+
    70
    \n+
    71#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH
    \n+
    Functions for VTK output on the skeleton.
    \n+\n+
    Functions for VTK output on the skeleton.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    std::ostream & operator<<(std::ostream &out, const IntervalBlock::Interval &interval)
    Definition interval.hh:123
    \n-
    Definition basic.hh:31
    \n-
    Definition periodicfacetrans.hh:25
    \n-
    int numTransformations() const
    Definition periodicfacetrans.hh:47
    \n-
    const AffineTransformation & transformation(int i) const
    Definition periodicfacetrans.hh:41
    \n-
    Definition periodicfacetrans.hh:62
    \n-
    int rows() const
    Definition periodicfacetrans.hh:84
    \n-
    const T & operator()(int i, int j) const
    Definition periodicfacetrans.hh:74
    \n-
    int cols() const
    Definition periodicfacetrans.hh:89
    \n-
    Matrix(int rows, int cols)
    Definition periodicfacetrans.hh:68
    \n-\n-
    Matrix< double > matrix
    Definition periodicfacetrans.hh:101
    \n-
    std::vector< double > shift
    Definition periodicfacetrans.hh:102
    \n-
    AffineTransformation(int dimworld)
    Definition periodicfacetrans.hh:104
    \n+
    Definition basicwriter.hh:35
    \n+
    void addCellData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:76
    \n+
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n+
    Definition boundaryiterators.hh:159
    \n+
    Definition boundarywriter.hh:26
    \n+
    void addPointData(const std::shared_ptr< Func > &p, const std::string &name)
    Definition boundarywriter.hh:53
    \n+
    void addCellData(Func *p, const std::string &name)
    Definition boundarywriter.hh:46
    \n+
    void addPointData(Func *p, const std::string &name)
    Definition boundarywriter.hh:59
    \n+
    NonConformingBoundaryWriter(const GV &gv_)
    Definition boundarywriter.hh:33
    \n+
    void addCellData(const std::shared_ptr< Func > &p, const std::string &name)
    Definition boundarywriter.hh:40
    \n+
    function writer for skeleton functions
    Definition skeletonfunction.hh:83
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,189 +2,119 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-periodicfacetrans.hh\n+ * _\bv_\bt_\bk\n+boundarywriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_PERIODICFACETRANSBLOCK_HH\n-6#define DUNE_DGF_PERIODICFACETRANSBLOCK_HH\n-7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-12\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17 namespace dgf\n-18 {\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH\n+8\n+9#include \n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bk_\be_\bl_\be_\bt_\bo_\bn_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be {\n 19\n-20 // PeriodicFaceTransformationBlock\n-21 // -------------------------------\n-22\n-_\b2_\b3 struct _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-25 {\n-26 template< class T >\n-27 class _\bM_\ba_\bt_\br_\bi_\bx;\n-28\n-29 struct _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn;\n-30\n-31 private:\n-32 std::vector< AffineTransformation > transformations_;\n-33\n-34 // copy not implemented\n-35 _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( const _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk & );\n+20 namespace VTK {\n+21\n+22 template\n+_\b2_\b3 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br\n+24 : public _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by,\n+25 public _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br >\n+26 {\n+27 typedef _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\bV_\b> _\bF_\ba_\bc_\bt_\bo_\br_\by;\n+28 typedef _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\ba_\bc_\bt_\bo_\br_\by_\b> _\bB_\ba_\bs_\be;\n+29\n+30 const GV& gv;\n+31\n+32 public:\n+_\b3_\b3 _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br(const GV& gv_)\n+34 : _\bF_\ba_\bc_\bt_\bo_\br_\by(gv_), _\bB_\ba_\bs_\be(static_cast(*this)), gv(gv_)\n+35 { }\n 36\n-37 public:\n-38 // initialize block and get dimension of world\n-39 _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std::istream &in, int dimworld );\n-40\n-_\b4_\b1 const _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn &_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int i ) const\n-42 {\n-43 assert( i < _\bn_\bu_\bm_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bs() );\n-44 return transformations_[ i ];\n-45 }\n-46\n-_\b4_\b7 int _\bn_\bu_\bm_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bs () const\n-48 {\n-49 return transformations_.size();\n-50 }\n+37 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba;\n+38\n+39 template\n+_\b4_\b0 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::shared_ptr& p, const std::string& name) {\n+41 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr\n+42 (new _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\bu_\bn_\bc_\b>(p, name)));\n+43 }\n+44\n+45 template\n+_\b4_\b6 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(Func* p, const std::string& name) {\n+47 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr(p), name);\n+48 }\n+49\n+50 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba;\n 51\n-52 private:\n-53 void match ( char what );\n-54 };\n-55\n-56\n-57 // PeriodicFaceTransformationBlock::Matrix\n-58 // ---------------------------------------\n-59\n-60 template< class T >\n-_\b6_\b1 class _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-62 {\n-63 int rows_;\n-64 int cols_;\n-65 std::vector< T > fields_;\n+52 template\n+_\b5_\b3 void _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::shared_ptr& p, const std::string& name) {\n+54 _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(std::shared_ptr\n+55 (new _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\bu_\bn_\bc_\b>(p, name)));\n+56 }\n+57\n+58 template\n+_\b5_\b9 void _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(Func* p, const std::string& name) {\n+60 _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(std::shared_ptr(p), name);\n+61 }\n+62\n+63 };\n+64\n+65 } // namespace VTK\n 66\n-67 public:\n-_\b6_\b8 _\bM_\ba_\bt_\br_\bi_\bx ( int _\br_\bo_\bw_\bs, int _\bc_\bo_\bl_\bs )\n-69 : rows_( _\br_\bo_\bw_\bs ),\n-70 cols_( _\bc_\bo_\bl_\bs ),\n-71 fields_( _\br_\bo_\bw_\bs * _\bc_\bo_\bl_\bs )\n-72 {}\n-73\n-_\b7_\b4 const T &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( int i, int j ) const\n-75 {\n-76 return fields_[ i * cols_ + j ];\n-77 }\n-78\n-_\b7_\b9 T &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( int i, int j )\n-80 {\n-81 return fields_[ i * cols_ + j ];\n-82 }\n-83\n-_\b8_\b4 int _\br_\bo_\bw_\bs () const\n-85 {\n-86 return rows_;\n-87 }\n-88\n-_\b8_\b9 int _\bc_\bo_\bl_\bs () const\n-90 {\n-91 return cols_;\n-92 }\n-93 };\n-94\n-95\n-96 // PeriodicFaceTransformationBlock::AffineTransformation\n-97 // -----------------------------------------------------\n-98\n-_\b9_\b9 struct _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-100 {\n-_\b1_\b0_\b1 _\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b> _\bm_\ba_\bt_\br_\bi_\bx;\n-_\b1_\b0_\b2 std::vector< double > _\bs_\bh_\bi_\bf_\bt;\n-103\n-_\b1_\b0_\b4 explicit _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int dimworld )\n-105 : _\bm_\ba_\bt_\br_\bi_\bx( dimworld, dimworld ),\n-106 _\bs_\bh_\bi_\bf_\bt( dimworld )\n-107 {}\n-108 };\n-109\n-110\n-_\b1_\b1_\b1 inline std::ostream &\n-112 _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:\n-_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn &trafo )\n-113 {\n-114 for( int i = 0; i < trafo._\bm_\ba_\bt_\br_\bi_\bx._\br_\bo_\bw_\bs(); ++i )\n-115 {\n-116 out << (i > 0 ? \", \" : \"\");\n-117 for( int j = 0; j < trafo._\bm_\ba_\bt_\br_\bi_\bx._\bc_\bo_\bl_\bs(); ++j )\n-118 out << (j > 0 ? \" \" : \"\") << trafo._\bm_\ba_\bt_\br_\bi_\bx( i, j );\n-119 }\n-120 out << \" +\";\n-121 for( unsigned int i = 0; i < trafo._\bs_\bh_\bi_\bf_\bt.size(); ++i )\n-122 out << \" \" << trafo._\bs_\bh_\bi_\bf_\bt[ i ];\n-123 return out;\n-124 }\n-125\n-126 } // end namespace dgf\n-127\n-128} // end namespace Dune\n-129\n-130#endif\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+68\n+69} // namespace Dune\n+70\n+71#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n+Functions for VTK output on the skeleton.\n+_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bs_\bk_\be_\bl_\be_\bt_\bo_\bn_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+Functions for VTK output on the skeleton.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-std::ostream & operator<<(std::ostream &out, const IntervalBlock::Interval\n-&interval)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interval.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bu_\bm_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bs\n-int numTransformations() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-const AffineTransformation & transformation(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n-int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const T & operator()(int i, int j) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n-int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-Matrix(int rows, int cols)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bm_\ba_\bt_\br_\bi_\bx\n-Matrix< double > matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-std::vector< double > shift\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-AffineTransformation(int dimworld)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void addPointData(const std::shared_ptr< Func > &p, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(Func *p, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void addPointData(Func *p, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br\n+NonConformingBoundaryWriter(const GV &gv_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< Func > &p, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+function writer for skeleton functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:83\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00800.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00800.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vertex.hh File Reference\n+dune-grid: functionwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,69 @@\n \n \n \n \n \n \n \n
    \n \n-
    vertex.hh File Reference
    \n+
    functionwriter.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n+
    #include <cstddef>
    \n+#include <memory>
    \n+#include <string>
    \n+#include <typeinfo>
    \n #include <vector>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/grid/io/file/vtk/common.hh>
    \n+#include <dune/grid/io/file/vtk/dataarraywriter.hh>
    \n+#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n+#include <dune/grid/io/file/vtk/vtuwriter.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::dgf::VertexBlock
    class  Dune::VTK::FunctionWriterBase< Cell_ >
     Base class for function writers. More...
     
    class  Dune::VTK::VTKFunctionWriter< Func >
     Base class for function writers. More...
     
    class  Dune::VTK::CoordinatesWriter< Cell >
     writer for the Coordinates array More...
     
    class  Dune::VTK::ConformingConnectivityWriter< IteratorFactory >
     writer for the connectivity array in conforming mode More...
     
    class  Dune::VTK::NonConformingConnectivityWriter< Cell >
     writer for the connectivity array in nonconforming mode More...
     
    class  Dune::VTK::OffsetsWriter< Cell >
     writer for the offsets array More...
     
    class  Dune::VTK::TypesWriter< Cell >
     writer for the types array More...
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,53 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n+ * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vertex.hh File Reference\n-#include \n+functionwriter.hh File Reference\n+#include \n+#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\b _\bC_\be_\bl_\bl_\b__\b _\b>\n+\u00a0 Base class for function writers. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b _\b>\n+\u00a0 Base class for function writers. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n+\u00a0 writer for the Coordinates array _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b _\b>\n+\u00a0 writer for the connectivity array in conforming mode _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n+\u00a0 writer for the connectivity array in nonconforming mode _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n+\u00a0 writer for the offsets array _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n+\u00a0 writer for the types array _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00800_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00800_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vertex.hh Source File\n+dune-grid: functionwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,93 +70,479 @@\n
    \n \n \n \n \n \n \n
    \n-
    vertex.hh
    \n+
    functionwriter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_VERTEXBLOCK_HH
    \n-
    6#define DUNE_DGF_VERTEXBLOCK_HH
    \n-
    7
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 namespace dgf
    \n-
    17 {
    \n-
    18
    \n-
    \n-\n-
    20 : public BasicBlock
    \n-
    21 {
    \n-
    22 int dimvertex; // the dimension of the vertices (determined from DGF file)
    \n-
    23 int dimworld; // the dimension of the world (either dimvertex or given by user)
    \n-
    24 bool goodline; // active line describes a vertex
    \n-
    25 int vtxoffset;
    \n-
    26 int nofParam;
    \n-
    27
    \n-
    28 public:
    \n-
    29 // initialize vertex block
    \n-
    30 VertexBlock ( std :: istream &in, int &pdimworld );
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH
    \n+
    8
    \n+
    9#include <cstddef>
    \n+
    10#include <memory>
    \n+
    11#include <string>
    \n+
    12#include <typeinfo>
    \n+
    13#include <vector>
    \n+
    14
    \n+
    15#include <dune/common/exceptions.hh>
    \n+
    16#include <dune/common/fvector.hh>
    \n+
    17
    \n+
    18#include <dune/geometry/referenceelements.hh>
    \n+
    19
    \n+\n+\n+\n+\n+
    24
    \n+
    25namespace Dune
    \n+
    26{
    \n+
    29
    \n+
    30 namespace VTK {
    \n
    31
    \n-
    32 int get ( std :: vector< std :: vector< double > > &vtx,
    \n-
    33 std :: vector< std :: vector< double > > &param,
    \n-
    34 int &nofp );
    \n-
    35
    \n-
    36 // some information
    \n-
    \n-
    37 bool ok () const
    \n-
    38 {
    \n-
    39 return goodline;
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    42 int offset () const
    \n-
    43 {
    \n-
    44 return vtxoffset;
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    47 private:
    \n-
    48 // get dimworld
    \n-
    49 int getDimWorld ();
    \n-
    50
    \n-
    51 // get next vertex
    \n-
    52 bool next ( std :: vector< double > &point, std :: vector< double > &param );
    \n-
    53 };
    \n-
    \n+
    33 template<typename Cell_>
    \n+
    \n+\n+
    35 typedef typename Cell_::Geometry::ctype DF;
    \n+
    36 static const unsigned mydim = Cell_::mydimension;
    \n+
    37 typedef ReferenceElements<DF, mydim> Refelems;
    \n+
    38
    \n+
    39 public:
    \n+
    40 typedef FieldVector<DF, mydim> Domain;
    \n+
    41 typedef Cell_ Cell;
    \n+
    42
    \n+
    44 virtual std::string name() const = 0;
    \n+
    45
    \n+
    47 virtual unsigned ncomps() const = 0;
    \n+
    48
    \n+
    50 virtual void addArray(PVTUWriter& writer) = 0;
    \n+
    52 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) = 0;
    \n
    54
    \n-
    55 } // end namespace dgf
    \n-
    56
    \n-
    57} // end namespace Dune
    \n-
    58
    \n-
    59#endif
    \n-\n+
    \n+
    59 virtual void write(const Cell& /* cell */, const Domain& /* xl */) {
    \n+
    60 DUNE_THROW(NotImplemented, "FunctionWriterBase::write(const Cell&, "
    \n+
    61 "const Domain&): Either the derived class " <<
    \n+
    62 typeid(*this).name() << " failed to implement this method "
    \n+
    63 "or this method is not meant to be called on the derived "
    \n+
    64 "class and was called in error.");
    \n+
    65 }
    \n+
    \n+
    67
    \n+
    \n+
    71 virtual void write(const Cell& cell, unsigned cornerIndex) {
    \n+
    72 write(cell,
    \n+
    73 Refelems::general(cell.type()).position(cornerIndex, mydim));
    \n+
    74 }
    \n+
    \n+
    76 virtual void endWrite() = 0;
    \n+\n+
    79 };
    \n+
    \n+
    80
    \n+
    82 //
    \n+
    83 // A Generic Function writer for VTKFunctions
    \n+
    84 //
    \n+
    85
    \n+
    87 template<typename Func>
    \n+
    \n+\n+
    89 : public FunctionWriterBase<typename Func::Entity>
    \n+
    90 {
    \n+\n+
    92 std::shared_ptr<const Func> func;
    \n+
    93 VTK::Precision precision_;
    \n+
    94 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    95
    \n+
    96 public:
    \n+
    \n+
    97 VTKFunctionWriter(const std::shared_ptr<const Func>& func_,
    \n+\n+
    99 : func(func_), precision_(prec)
    \n+
    100 { }
    \n+
    \n+
    101
    \n+
    103 virtual std::string name() const { return func->name(); }
    \n+
    104
    \n+
    \n+
    106 virtual unsigned ncomps() const {
    \n+
    107 if(func->ncomps() == 2) return 3;
    \n+
    108 else return func->ncomps();
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    \n+
    112 virtual void addArray(PVTUWriter& writer) {
    \n+
    113 writer.addArray(name(), ncomps(), precision_);
    \n+
    114 }
    \n+
    \n+
    115
    \n+
    \n+
    117 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    118 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n+
    119 nitems, precision_));
    \n+
    120 return !arraywriter->writeIsNoop();
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    \n+
    124 virtual void write(const typename Base::Cell& cell,
    \n+
    125 const typename Base::Domain& xl) {
    \n+
    126 for(int d = 0; d < func->ncomps(); ++d)
    \n+
    127 arraywriter->write(func->evaluate(d, cell, xl));
    \n+
    128 for(unsigned d = func->ncomps(); d < ncomps(); ++d)
    \n+
    129 arraywriter->write(0);
    \n+
    130 }
    \n+
    \n+
    131
    \n+
    \n+
    133 virtual void endWrite() {
    \n+
    134 arraywriter.reset();
    \n+
    135 }
    \n+
    \n+
    136 };
    \n+
    \n+
    137
    \n+
    139 //
    \n+
    140 // Writers for the grid information
    \n+
    141 //
    \n+
    142
    \n+
    144 template<typename Cell>
    \n+
    \n+\n+
    146 : public FunctionWriterBase<Cell>
    \n+
    147 {
    \n+\n+
    149
    \n+
    150 VTK::Precision precision_;
    \n+
    151 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    152
    \n+
    153 public:
    \n+
    \n+\n+
    155 : precision_(prec)
    \n+
    156 {}
    \n+
    \n+
    157
    \n+
    159 virtual std::string name() const { return "Coordinates"; }
    \n+
    160
    \n+
    162 virtual unsigned ncomps() const { return 3; }
    \n+
    163
    \n+
    \n+
    165 virtual void addArray(PVTUWriter& writer) {
    \n+
    166 writer.addArray(name(), ncomps(), precision_);
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    \n+
    170 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    171 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n+
    172 nitems, precision_));
    \n+
    173 return !arraywriter->writeIsNoop();
    \n+
    174 }
    \n+
    \n+
    \n+
    176 virtual void write(const typename Base::Cell& cell,
    \n+
    177 const typename Base::Domain& xl) {
    \n+
    178 FieldVector<typename Base::Cell::Geometry::ctype, Base::Cell::Geometry::coorddimension> xg
    \n+
    179 = cell.geometry().global(xl);
    \n+
    180 for(unsigned d = 0; d < 3 && d < Base::Cell::Geometry::coorddimension; ++d)
    \n+
    181 arraywriter->write(xg[d]);
    \n+
    182 for(unsigned d = Base::Cell::Geometry::coorddimension; d < 3; ++d)
    \n+
    183 arraywriter->write(0);
    \n+
    184 }
    \n+
    \n+
    \n+
    186 virtual void endWrite() {
    \n+
    187 arraywriter.reset();
    \n+
    188 }
    \n+
    \n+
    189 };
    \n+
    \n+
    190
    \n+
    192 template<typename IteratorFactory>
    \n+
    \n+\n+
    194 : public FunctionWriterBase<typename IteratorFactory::Cell>
    \n+
    195 {
    \n+\n+
    197 static const unsigned mydim = Base::Cell::mydimension;
    \n+
    198
    \n+
    199 const IteratorFactory& factory;
    \n+
    200 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    201 std::vector<unsigned> pointIndices;
    \n+
    202
    \n+
    203 public:
    \n+
    \n+
    205 ConformingConnectivityWriter(const IteratorFactory& factory_)
    \n+
    206 : factory(factory_)
    \n+
    207 { }
    \n+
    \n+
    208
    \n+
    210 virtual std::string name() const { return "connectivity"; }
    \n+
    211
    \n+
    213 virtual unsigned ncomps() const { return 1; }
    \n+
    214
    \n+
    \n+
    216 virtual void addArray(PVTUWriter& writer) {
    \n+
    217 writer.addArray(name(), ncomps(), Precision::int32);
    \n+
    218 }
    \n+
    \n+
    219
    \n+
    \n+
    221 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    222 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n+
    223 nitems, Precision::int32));
    \n+
    224 if(arraywriter->writeIsNoop())
    \n+
    225 return false;
    \n+
    226
    \n+
    228 pointIndices.resize(factory.indexSet().size(mydim));
    \n+
    229 const typename IteratorFactory::PointIterator& pend =
    \n+
    230 factory.endPoints();
    \n+
    231 typename IteratorFactory::PointIterator pit = factory.beginPoints();
    \n+
    232 unsigned counter = 0;
    \n+
    233 while(pit != pend) {
    \n+
    234 pointIndices[factory.indexSet().subIndex
    \n+
    235 (pit->cell(), pit->duneIndex(), mydim)] = counter;
    \n+
    236 ++counter;
    \n+
    237 ++pit;
    \n+
    238 }
    \n+
    239 return true;
    \n+
    240 }
    \n+
    \n+
    \n+
    242 virtual void write(const typename Base::Cell& cell, unsigned cornerIndex)
    \n+
    243 {
    \n+
    244 // if pointIndices is empty, we're in writeIsNoop mode
    \n+
    245 if(pointIndices.size() == 0)
    \n+
    246 return;
    \n+
    247 arraywriter->write(pointIndices[factory.indexSet().subIndex
    \n+
    248 (cell, cornerIndex, mydim)]);
    \n+
    249 }
    \n+
    \n+
    \n+
    251 virtual void endWrite() {
    \n+
    252 arraywriter.reset();
    \n+
    253 pointIndices.clear();
    \n+
    254 }
    \n+
    \n+
    255 };
    \n+
    \n+
    256
    \n+
    258 template<typename Cell>
    \n+
    \n+\n+
    260 : public FunctionWriterBase<Cell>
    \n+
    261 {
    \n+
    262 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    263 unsigned counter;
    \n+
    264
    \n+
    265 public:
    \n+
    267 virtual std::string name() const { return "connectivity"; }
    \n+
    268
    \n+
    270 virtual unsigned ncomps() const { return 1; }
    \n+
    271
    \n+
    \n+
    273 virtual void addArray(PVTUWriter& writer) {
    \n+
    274 writer.addArray(name(), ncomps(), Precision::int32);
    \n+
    275 }
    \n+
    \n+
    276
    \n+
    \n+
    278 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    279 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n+
    280 nitems, Precision::int32));
    \n+
    281 counter = 0;
    \n+
    282 return !arraywriter->writeIsNoop();
    \n+
    283 }
    \n+
    \n+
    \n+
    285 virtual void write(const Cell& /* cell */, unsigned /* cornerIndex */)
    \n+
    286 {
    \n+
    287 arraywriter->write(counter);
    \n+
    288 ++counter;
    \n+
    289 }
    \n+
    \n+
    \n+
    291 virtual void endWrite() {
    \n+
    292 arraywriter.reset();
    \n+
    293 }
    \n+
    \n+
    294 };
    \n+
    \n+
    295
    \n+
    297 template<typename Cell>
    \n+
    \n+\n+
    299 : public FunctionWriterBase<Cell>
    \n+
    300 {
    \n+\n+
    302
    \n+
    303 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    304 unsigned offset;
    \n+
    305
    \n+
    306 public:
    \n+
    308 virtual std::string name() const { return "offsets"; }
    \n+
    309
    \n+
    311 virtual unsigned ncomps() const { return 1; }
    \n+
    312
    \n+
    \n+
    314 virtual void addArray(PVTUWriter& writer) {
    \n+
    315 writer.addArray(name(), ncomps(), Precision::int32);
    \n+
    316 }
    \n+
    \n+
    317
    \n+
    \n+
    319 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    320 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n+
    321 nitems, Precision::int32));
    \n+
    322 offset = 0;
    \n+
    323 return !arraywriter->writeIsNoop();
    \n+
    324 }
    \n+
    \n+
    \n+
    326 virtual void write(const Cell& cell, const typename Base::Domain&) {
    \n+
    327 offset += cell.geometry().corners();
    \n+
    328 arraywriter->write(offset);
    \n+
    329 }
    \n+
    \n+
    \n+
    331 virtual void endWrite() {
    \n+
    332 arraywriter.reset();
    \n+
    333 }
    \n+
    \n+
    334 };
    \n+
    \n+
    335
    \n+
    337 template<typename Cell>
    \n+
    \n+\n+
    339 : public FunctionWriterBase<Cell>
    \n+
    340 {
    \n+\n+
    342
    \n+
    343 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    344
    \n+
    345 public:
    \n+
    347 virtual std::string name() const { return "types"; }
    \n+
    348
    \n+
    350 virtual unsigned ncomps() const { return 1; }
    \n+
    351
    \n+
    \n+
    353 virtual void addArray(PVTUWriter& writer) {
    \n+
    354 writer.addArray(name(), ncomps(), Precision::uint8);
    \n+
    355 }
    \n+
    \n+
    356
    \n+
    \n+
    358 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    359 arraywriter.reset(writer.makeArrayWriter
    \n+
    360 ( name(), ncomps(), nitems, Precision::uint8));
    \n+
    361 return !arraywriter->writeIsNoop();
    \n+
    362 }
    \n+
    \n+
    \n+
    364 virtual void write(const Cell& cell, const typename Base::Domain&) {
    \n+
    365 arraywriter->write(geometryType(cell.type()));
    \n+
    366 }
    \n+
    \n+
    \n+
    368 virtual void endWrite() {
    \n+
    369 arraywriter.reset();
    \n+
    370 }
    \n+
    \n+
    371 };
    \n+
    \n+
    372
    \n+
    373 } // namespace VTK
    \n+
    374
    \n+
    376
    \n+
    377} // namespace Dune
    \n+
    378
    \n+
    379#endif // DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH
    \n+
    Data array writers for the VTKWriter.
    \n+\n+\n+
    Common stuff for the VTKWriter.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    Definition vertex.hh:21
    \n-
    int get(std ::vector< std ::vector< double > > &vtx, std ::vector< std ::vector< double > > &param, int &nofp)
    Definition vertex.cc:63
    \n-
    int offset() const
    Definition vertex.hh:42
    \n-
    bool ok() const
    Definition vertex.hh:37
    \n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+\n+\n+\n+
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n+
    Base class for function writers.
    Definition functionwriter.hh:34
    \n+
    virtual std::string name() const =0
    return name
    \n+
    virtual unsigned ncomps() const =0
    return number of components of the vector
    \n+
    virtual void write(const Cell &, const Domain &)
    write at the given position
    Definition functionwriter.hh:59
    \n+
    Cell_ Cell
    Definition functionwriter.hh:41
    \n+
    virtual void addArray(PVTUWriter &writer)=0
    add this field to the given parallel writer
    \n+
    virtual void endWrite()=0
    signal end of writing
    \n+
    FieldVector< DF, mydim > Domain
    Definition functionwriter.hh:40
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0
    start writing with the given writer
    \n+
    virtual ~FunctionWriterBase()
    destructor
    Definition functionwriter.hh:78
    \n+
    virtual void write(const Cell &cell, unsigned cornerIndex)
    write at the given corner
    Definition functionwriter.hh:71
    \n+
    Base class for function writers.
    Definition functionwriter.hh:90
    \n+
    VTKFunctionWriter(const std::shared_ptr< const Func > &func_, VTK::Precision prec=VTK::Precision::float32)
    Definition functionwriter.hh:97
    \n+
    virtual std::string name() const
    return name
    Definition functionwriter.hh:103
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:106
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:117
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:112
    \n+
    virtual void write(const typename Base::Cell &cell, const typename Base::Domain &xl)
    write at the given position
    Definition functionwriter.hh:124
    \n+
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:133
    \n+
    writer for the Coordinates array
    Definition functionwriter.hh:147
    \n+
    virtual void write(const typename Base::Cell &cell, const typename Base::Domain &xl)
    write at the given position
    Definition functionwriter.hh:176
    \n+
    virtual std::string name() const
    return name
    Definition functionwriter.hh:159
    \n+
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:186
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:162
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:165
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:170
    \n+
    CoordinatesWriter(VTK::Precision prec=VTK::Precision::float32)
    Definition functionwriter.hh:154
    \n+
    writer for the connectivity array in conforming mode
    Definition functionwriter.hh:195
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:216
    \n+
    virtual std::string name() const
    return name
    Definition functionwriter.hh:210
    \n+
    virtual void write(const typename Base::Cell &cell, unsigned cornerIndex)
    write at the given corner
    Definition functionwriter.hh:242
    \n+
    ConformingConnectivityWriter(const IteratorFactory &factory_)
    create a writer with the given iteratorfactory
    Definition functionwriter.hh:205
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:213
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:221
    \n+
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:251
    \n+
    writer for the connectivity array in nonconforming mode
    Definition functionwriter.hh:261
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:270
    \n+
    virtual std::string name() const
    return name
    Definition functionwriter.hh:267
    \n+
    virtual void write(const Cell &, unsigned)
    write at the given corner
    Definition functionwriter.hh:285
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:273
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:278
    \n+
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:291
    \n+
    writer for the offsets array
    Definition functionwriter.hh:300
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:314
    \n+
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:331
    \n+
    virtual std::string name() const
    return name
    Definition functionwriter.hh:308
    \n+
    virtual void write(const Cell &cell, const typename Base::Domain &)
    write at the given position
    Definition functionwriter.hh:326
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:319
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:311
    \n+
    writer for the types array
    Definition functionwriter.hh:340
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:350
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:358
    \n+
    virtual std::string name() const
    return name
    Definition functionwriter.hh:347
    \n+
    virtual void write(const Cell &cell, const typename Base::Domain &)
    write at the given position
    Definition functionwriter.hh:364
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:353
    \n+
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:368
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n+
    void addArray(const std::string &name, unsigned ncomps, Precision prec)
    Add an array to the output file.
    Definition pvtuwriter.hh:207
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n+
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,93 +2,577 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-vertex.hh\n+ * _\bv_\bt_\bk\n+functionwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_VERTEXBLOCK_HH\n-6#define DUNE_DGF_VERTEXBLOCK_HH\n-7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 namespace dgf\n-17 {\n-18\n-_\b1_\b9 class _\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk\n-20 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-21 {\n-22 int dimvertex; // the dimension of the vertices (determined from DGF file)\n-23 int dimworld; // the dimension of the world (either dimvertex or given by\n-user)\n-24 bool goodline; // active line describes a vertex\n-25 int vtxoffset;\n-26 int nofParam;\n-27\n-28 public:\n-29 // initialize vertex block\n-30 _\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int &pdimworld );\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_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#include \n+17\n+18#include \n+19\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+22#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+23#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+24\n+25namespace _\bD_\bu_\bn_\be\n+26{\n+29\n+30 namespace VTK {\n 31\n-32 int _\bg_\be_\bt ( std :: vector< std :: vector< double > > &vtx,\n-33 std :: vector< std :: vector< double > > ¶m,\n-34 int &nofp );\n-35\n-36 // some information\n-_\b3_\b7 bool _\bo_\bk () const\n-38 {\n-39 return goodline;\n-40 }\n-41\n-_\b4_\b2 int _\bo_\bf_\bf_\bs_\be_\bt () const\n-43 {\n-44 return vtxoffset;\n-45 }\n-46\n-47 private:\n-48 // get dimworld\n-49 int getDimWorld ();\n-50\n-51 // get next vertex\n-52 bool next ( std :: vector< double > &point, std :: vector< double > ¶m\n-);\n-53 };\n+33 template\n+_\b3_\b4 class _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be {\n+35 typedef typename Cell_::Geometry::ctype DF;\n+36 static const unsigned mydim = Cell_::mydimension;\n+37 typedef ReferenceElements Refelems;\n+38\n+39 public:\n+_\b4_\b0 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn;\n+_\b4_\b1 typedef Cell_ _\bC_\be_\bl_\bl;\n+42\n+_\b4_\b4 virtual std::string _\bn_\ba_\bm_\be() const = 0;\n+45\n+_\b4_\b7 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const = 0;\n+48\n+_\b5_\b0 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) = 0;\n+_\b5_\b2 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) = 0;\n 54\n-55 } // end namespace dgf\n-56\n-57} // end namespace Dune\n-58\n-59#endif\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+_\b5_\b9 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& /* cell */, const _\bD_\bo_\bm_\ba_\bi_\bn& /* xl */) {\n+60 DUNE_THROW(NotImplemented, \"FunctionWriterBase::write(const Cell&, \"\n+61 \"const Domain&): Either the derived class \" <<\n+62 typeid(*this).name() << \" failed to implement this method \"\n+63 \"or this method is not meant to be called on the derived \"\n+64 \"class and was called in error.\");\n+65 }\n+67\n+_\b7_\b1 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& cell, unsigned cornerIndex) {\n+72 _\bw_\br_\bi_\bt_\be(cell,\n+73 Refelems::general(cell.type()).position(cornerIndex, mydim));\n+74 }\n+_\b7_\b6 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() = 0;\n+_\b7_\b8 virtual _\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be() {}\n+79 };\n+80\n+82 //\n+83 // A Generic Function writer for VTKFunctions\n+84 //\n+85\n+87 template\n+_\b8_\b8 class _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+89 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+90 {\n+91 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bF_\bu_\bn_\bc_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b> _\bB_\ba_\bs_\be;\n+92 std::shared_ptr func;\n+93 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn precision_;\n+94 std::shared_ptr arraywriter;\n+95\n+96 public:\n+_\b9_\b7 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br(const std::shared_ptr& func_,\n+98 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+99 : func(func_), precision_(prec)\n+100 { }\n+101\n+_\b1_\b0_\b3 virtual std::string _\bn_\ba_\bm_\be() const { return func->name(); }\n+104\n+_\b1_\b0_\b6 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const {\n+107 if(func->ncomps() == 2) return 3;\n+108 else return func->ncomps();\n+109 }\n+110\n+_\b1_\b1_\b2 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+113 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), precision_);\n+114 }\n+115\n+_\b1_\b1_\b7 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+118 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n+119 nitems, precision_));\n+120 return !arraywriter->writeIsNoop();\n+121 }\n+122\n+_\b1_\b2_\b4 virtual void _\bw_\br_\bi_\bt_\be(const typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl& cell,\n+125 const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn& xl) {\n+126 for(int d = 0; d < func->ncomps(); ++d)\n+127 arraywriter->write(func->evaluate(d, cell, xl));\n+128 for(unsigned d = func->ncomps(); d < _\bn_\bc_\bo_\bm_\bp_\bs(); ++d)\n+129 arraywriter->write(0);\n+130 }\n+131\n+_\b1_\b3_\b3 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+134 arraywriter.reset();\n+135 }\n+136 };\n+137\n+139 //\n+140 // Writers for the grid information\n+141 //\n+142\n+144 template\n+_\b1_\b4_\b5 class _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+146 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+147 {\n+148 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n+149\n+150 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn precision_;\n+151 std::shared_ptr arraywriter;\n+152\n+153 public:\n+_\b1_\b5_\b4 explicit _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br(_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+155 : precision_(prec)\n+156 {}\n+157\n+_\b1_\b5_\b9 virtual std::string _\bn_\ba_\bm_\be() const { return \"Coordinates\"; }\n+160\n+_\b1_\b6_\b2 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 3; }\n+163\n+_\b1_\b6_\b5 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+166 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), precision_);\n+167 }\n+168\n+_\b1_\b7_\b0 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+171 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n+172 nitems, precision_));\n+173 return !arraywriter->writeIsNoop();\n+174 }\n+_\b1_\b7_\b6 virtual void _\bw_\br_\bi_\bt_\be(const typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl& cell,\n+177 const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn& xl) {\n+178 FieldVector xg\n+179 = cell.geometry().global(xl);\n+180 for(unsigned d = 0; d < 3 && d < Base::Cell::Geometry::coorddimension; ++d)\n+181 arraywriter->write(xg[d]);\n+182 for(unsigned d = Base::Cell::Geometry::coorddimension; d < 3; ++d)\n+183 arraywriter->write(0);\n+184 }\n+_\b1_\b8_\b6 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+187 arraywriter.reset();\n+188 }\n+189 };\n+190\n+192 template\n+_\b1_\b9_\b3 class _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+194 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+195 {\n+196 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n+197 static const unsigned mydim = Base::Cell::mydimension;\n+198\n+199 const IteratorFactory& factory;\n+200 std::shared_ptr arraywriter;\n+201 std::vector pointIndices;\n+202\n+203 public:\n+_\b2_\b0_\b5 _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br(const IteratorFactory& factory_)\n+206 : factory(factory_)\n+207 { }\n+208\n+_\b2_\b1_\b0 virtual std::string _\bn_\ba_\bm_\be() const { return \"connectivity\"; }\n+211\n+_\b2_\b1_\b3 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n+214\n+_\b2_\b1_\b6 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+217 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2);\n+218 }\n+219\n+_\b2_\b2_\b1 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+222 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n+223 nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+224 if(arraywriter->writeIsNoop())\n+225 return false;\n+226\n+228 pointIndices.resize(factory.indexSet().size(mydim));\n+229 const typename IteratorFactory::PointIterator& pend =\n+230 factory.endPoints();\n+231 typename IteratorFactory::PointIterator pit = factory.beginPoints();\n+232 unsigned counter = 0;\n+233 while(pit != pend) {\n+234 pointIndices[factory.indexSet().subIndex\n+235 (pit->cell(), pit->duneIndex(), mydim)] = counter;\n+236 ++counter;\n+237 ++pit;\n+238 }\n+239 return true;\n+240 }\n+_\b2_\b4_\b2 virtual void _\bw_\br_\bi_\bt_\be(const typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl& cell, unsigned cornerIndex)\n+243 {\n+244 // if pointIndices is empty, we're in writeIsNoop mode\n+245 if(pointIndices.size() == 0)\n+246 return;\n+247 arraywriter->write(pointIndices[factory.indexSet().subIndex\n+248 (cell, cornerIndex, mydim)]);\n+249 }\n+_\b2_\b5_\b1 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+252 arraywriter.reset();\n+253 pointIndices.clear();\n+254 }\n+255 };\n+256\n+258 template\n+_\b2_\b5_\b9 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+260 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+261 {\n+262 std::shared_ptr arraywriter;\n+263 unsigned counter;\n+264\n+265 public:\n+_\b2_\b6_\b7 virtual std::string _\bn_\ba_\bm_\be() const { return \"connectivity\"; }\n+268\n+_\b2_\b7_\b0 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n+271\n+_\b2_\b7_\b3 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+274 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2);\n+275 }\n+276\n+_\b2_\b7_\b8 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+279 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n+280 nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+281 counter = 0;\n+282 return !arraywriter->writeIsNoop();\n+283 }\n+_\b2_\b8_\b5 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& /* cell */, unsigned /* cornerIndex */)\n+286 {\n+287 arraywriter->write(counter);\n+288 ++counter;\n+289 }\n+_\b2_\b9_\b1 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+292 arraywriter.reset();\n+293 }\n+294 };\n+295\n+297 template\n+_\b2_\b9_\b8 class _\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br\n+299 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+300 {\n+301 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n+302\n+303 std::shared_ptr arraywriter;\n+304 unsigned offset;\n+305\n+306 public:\n+_\b3_\b0_\b8 virtual std::string _\bn_\ba_\bm_\be() const { return \"offsets\"; }\n+309\n+_\b3_\b1_\b1 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n+312\n+_\b3_\b1_\b4 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+315 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2);\n+316 }\n+317\n+_\b3_\b1_\b9 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+320 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n+321 nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+322 offset = 0;\n+323 return !arraywriter->writeIsNoop();\n+324 }\n+_\b3_\b2_\b6 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& cell, const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn&) {\n+327 offset += cell.geometry().corners();\n+328 arraywriter->write(offset);\n+329 }\n+_\b3_\b3_\b1 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+332 arraywriter.reset();\n+333 }\n+334 };\n+335\n+337 template\n+_\b3_\b3_\b8 class _\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+339 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+340 {\n+341 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n+342\n+343 std::shared_ptr arraywriter;\n+344\n+345 public:\n+_\b3_\b4_\b7 virtual std::string _\bn_\ba_\bm_\be() const { return \"types\"; }\n+348\n+_\b3_\b5_\b0 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n+351\n+_\b3_\b5_\b3 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+354 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8);\n+355 }\n+356\n+_\b3_\b5_\b8 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+359 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+360 ( _\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8));\n+361 return !arraywriter->writeIsNoop();\n+362 }\n+_\b3_\b6_\b4 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& cell, const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn&) {\n+365 arraywriter->write(_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(cell.type()));\n+366 }\n+_\b3_\b6_\b8 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+369 arraywriter.reset();\n+370 }\n+371 };\n+372\n+373 } // namespace VTK\n+374\n+376\n+377} // namespace Dune\n+378\n+379#endif // DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH\n+_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Data array writers for the VTKWriter.\n+_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n-int get(std ::vector< std ::vector< double > > &vtx, std ::vector< std ::\n-vector< double > > ¶m, int &nofp)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.cc:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n-int offset() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n+@ int32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n+@ uint8\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n+@ float32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n+GeometryType geometryType(const Dune::GeometryType &t)\n+mapping from GeometryType to VTKGeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+Base class for function writers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const =0\n+return name\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const =0\n+return number of components of the vector\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Cell &, const Domain &)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl\n+Cell_ Cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)=0\n+add this field to the given parallel writer\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()=0\n+signal end of writing\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+FieldVector< DF, mydim > Domain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0\n+start writing with the given writer\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+virtual ~FunctionWriterBase()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Cell &cell, unsigned cornerIndex)\n+write at the given corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+Base class for function writers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+VTKFunctionWriter(const std::shared_ptr< const Func > &func_, VTK::Precision\n+prec=VTK::Precision::float32)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const typename Base::Cell &cell, const typename Base::Domain\n+&xl)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+writer for the Coordinates array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const typename Base::Cell &cell, const typename Base::Domain\n+&xl)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+CoordinatesWriter(VTK::Precision prec=VTK::Precision::float32)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+writer for the connectivity array in conforming mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const typename Base::Cell &cell, unsigned cornerIndex)\n+write at the given corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+ConformingConnectivityWriter(const IteratorFactory &factory_)\n+create a writer with the given iteratorfactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:221\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:251\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n+writer for the connectivity array in nonconforming mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:270\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:267\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Cell &, unsigned)\n+write at the given corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:273\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:278\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:291\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br\n+writer for the offsets array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:300\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:331\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:308\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Cell &cell, const typename Base::Domain &)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:311\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+writer for the types array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:340\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:350\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:358\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:347\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Cell &cell, const typename Base::Domain &)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:364\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:353\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:368\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+void addArray(const std::string &name, unsigned ncomps, Precision prec)\n+Add an array to the output file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n+unsigned nitems, Precision prec)\n+acquire a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00803.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00803.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vertex.cc File Reference\n+dune-grid: streams.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    vertex.cc File Reference
    \n+
    streams.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/vertex.hh>
    \n-
    \n+
    #include <ostream>
    \n+#include <dune/grid/io/file/vtk/b64enc.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::Base64Stream
     class to base64 encode a stream of data More...
     
    class  Dune::RawStream
     write out data in binary More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vertex.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bv_\be_\br_\bt_\be_\bx_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+streams.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\b6_\b4_\be_\bn_\bc_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n+\u00a0 class to base64 encode a stream of data _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n+\u00a0 write out data in binary _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00806.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00806.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: simplex.cc File Reference\n+dune-grid: skeletonfunction.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,59 @@\n \n \n \n \n \n \n \n
    \n \n-
    simplex.cc File Reference
    \n+
    skeletonfunction.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/simplex.hh>
    \n-
    \n+\n+

    Functions for VTK output on the skeleton. \n+More...

    \n+
    #include <memory>
    \n+#include <string>
    \n+#include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/grid/io/file/vtk/functionwriter.hh>
    \n+#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n+#include <dune/grid/io/file/vtk/vtuwriter.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::VTK::SkeletonFunctionTraits< GV, RF >
     
    class  Dune::VTK::SkeletonFunctionInterface< GV, RF >
     A prototype for VTKFunctions on the skeleton. More...
     
    class  Dune::VTK::SkeletonFunctionWriter< Func >
     function writer for skeleton functions More...
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    namespace  Dune::VTK
     
    \n-
    \n+

    Detailed Description

    \n+

    Functions for VTK output on the skeleton.

    \n+
    Author
    J\u00f6 Fahlke
    \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": "@@ -2,21 +2,41 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-simplex.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+skeletonfunction.hh File Reference\n+_\bd_\bu_\bn_\be_\b-_\bg_\br_\bi_\bd \u00bb _\bI_\b/_\bO \u00bb _\bV_\bi_\bs_\bu_\ba_\bl_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b _\bT_\bo_\bo_\bl_\bK_\bi_\bt_\b _\b(_\bV_\bT_\bK_\b)\n+Functions for VTK output on the skeleton. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bG_\bV_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\bV_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0 A prototype for VTKFunctions on the skeleton. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b _\b>\n+\u00a0 function writer for skeleton 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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\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+Functions for VTK output on the skeleton.\n+ Author\n+ J\u00c3\u00b6 Fahlke\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00809.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00809.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryseg.cc File Reference\n+dune-grid: vtkwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,95 @@\n \n \n \n \n \n \n \n
    \n \n-
    boundaryseg.cc File Reference
    \n+
    vtkwriter.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/boundaryseg.hh>
    \n-
    \n+\n+

    Provides file i/o for the visualization toolkit. \n+More...

    \n+
    #include <cstring>
    \n+#include <iostream>
    \n+#include <string>
    \n+#include <fstream>
    \n+#include <sstream>
    \n+#include <iomanip>
    \n+#include <memory>
    \n+#include <type_traits>
    \n+#include <vector>
    \n+#include <list>
    \n+#include <map>
    \n+#include <dune/common/visibility.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/indent.hh>
    \n+#include <dune/common/iteratorfacades.hh>
    \n+#include <dune/common/path.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/grid/common/mcmgmapper.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/io/file/vtk/common.hh>
    \n+#include <dune/grid/io/file/vtk/dataarraywriter.hh>
    \n+#include <dune/grid/io/file/vtk/function.hh>
    \n+#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n+#include <dune/grid/io/file/vtk/streams.hh>
    \n+#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::VTKWriter< GridView >
     Writer for the ouput of grid functions in the vtk format. More...
     
    class  Dune::VTKWriter< GridView >::VTKLocalFunction
     Type erasure wrapper for VTK data sets. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase
     Base class for polymorphic container of underlying data set. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapper< F >
     Type erasure implementation for functions conforming to the dune-functions LocalFunction interface. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::GlobalFunctionWrapper< F >
     Type erasure implementation for C++ functions, i.e., functions that can be evaluated in global coordinates. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::VTKFunctionWrapper
     Type erasure implementation for legacy VTKFunctions. More...
     
    class  Dune::VTKWriter< GridView >::CellIterator
     Iterator over the grids elements. More...
     
    class  Dune::VTKWriter< GridView >::VertexIterator
     Iterate over the grid's vertices. More...
     
    class  Dune::VTKWriter< GridView >::CornerIterator
     Iterate over the elements' corners. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-
    \n+

    Detailed Description

    \n+

    Provides file i/o for the visualization toolkit.

    \n+
    Author
    Peter Bastian, Christian Engwer
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,79 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-boundaryseg.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+vtkwriter.hh File Reference\n+Provides file i/o for the visualization toolkit. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Writer for the ouput of grid functions in the vtk format. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+\u00a0 Type erasure wrapper for _\bV_\bT_\bK data sets. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n+\u00a0 Base class for polymorphic container of underlying data set. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bF_\b _\b>\n+\u00a0 Type erasure implementation for functions conforming to the dune-\n+ functions LocalFunction interface. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b<\n+ _\bF_\b _\b>\n+\u00a0 Type erasure implementation for C++ functions, i.e., functions that\n+ can be evaluated in global coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+\u00a0 Type erasure implementation for legacy VTKFunctions. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+\u00a0 Iterator over the grids elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+\u00a0 Iterate over the grid's vertices. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+\u00a0 Iterate over the elements' corners. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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+Provides file i/o for the visualization toolkit.\n+ Author\n+ Peter Bastian, Christian Engwer\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00812.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00812.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: simplexgeneration.cc File Reference\n+dune-grid: pointiterator.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    simplexgeneration.cc File Reference
    \n+
    pointiterator.hh File Reference
    \n
    \n
    \n-\n+
    #include <iterator>
    \n+#include <vector>
    \n+#include <dune/common/iteratorfacades.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/grid/io/file/vtk/corner.hh>
    \n+#include <dune/grid/io/file/vtk/corneriterator.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::VTK::PointIterator< CellIterator, IS >
     iterate over the points of some corner range More...
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-simplexgeneration.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+pointiterator.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b,_\b _\bI_\bS_\b _\b>\n+\u00a0 iterate over the points of some corner 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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00815.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00815.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarydom.cc File Reference\n+dune-grid: function.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,59 @@\n \n \n \n \n \n \n \n
    \n \n-
    boundarydom.cc File Reference
    \n+
    function.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>
    \n-
    \n+\n+

    Functions for VTK output. \n+More...

    \n+
    #include <string>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/multilineargeometry.hh>
    \n+#include <dune/grid/common/mcmgmapper.hh>
    \n+#include <dune/grid/io/file/vtk/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+Classes

    class  Dune::VTKFunction< GridView >
     A base class for grid functions with any return type and dimension. More...
     
    class  Dune::P0VTKFunction< GV, V >
     Take a vector and interpret it as cell data for the VTKWriter. More...
     
    class  Dune::P1VTKFunction< GV, V >
     Take a vector and interpret it as point data for the VTKWriter. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-
    \n+

    Detailed Description

    \n+

    Functions for VTK output.

    \n+
    Author
    Peter Bastian, Christian Engwer
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,41 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-boundarydom.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bd_\bo_\bm_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+function.hh File Reference\n+Functions for VTK output. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\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:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 A base class for grid functions with any return type and dimension.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b,_\b _\bV_\b _\b>\n+\u00a0 Take a vector and interpret it as cell data for the _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b,_\b _\bV_\b _\b>\n+\u00a0 Take a vector and interpret it as point data for the _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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+Functions for VTK output.\n+ Author\n+ Peter Bastian, Christian Engwer\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00818.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00818.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: interval.cc File Reference\n+dune-grid: volumewriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    interval.cc File Reference
    \n+
    volumewriter.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/interval.hh>
    \n-
    \n+\n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::VTK::ConformingVolumeWriter< GV >
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interval.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bi_\bn_\bt_\be_\br_\bv_\ba_\bl_\b._\bh_\bh>\n+ * _\bv_\bt_\bk\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+volumewriter.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\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:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00821.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00821.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryseg.hh File Reference\n+dune-grid: dgfgridfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,47 @@\n \n \n \n \n \n \n \n
    \n \n-
    boundaryseg.hh File Reference
    \n+
    dgfgridfactory.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <iostream>
    \n+
    #include <iostream>
    \n #include <string>
    \n #include <vector>
    \n #include <map>
    \n-#include <dune/grid/io/file/dgfparser/parser.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+#include <assert.h>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n+#include <dune/grid/io/file/dgfparser/macrogrid.hh>
    \n+#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+#include <dune/grid/common/intersection.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::dgf::BoundarySegBlock
    struct  Dune::DGFGridFactory< G >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,29 +3,29 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-boundaryseg.hh File Reference\n-#include \n+dgfgridfactory.hh File Reference\n #include \n #include \n #include \n #include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00821_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00821_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryseg.hh Source File\n+dune-grid: dgfgridfactory.hh Source File\n \n \n \n \n \n \n \n@@ -70,122 +70,271 @@\n
    \n \n \n \n \n \n \n
    \n-
    boundaryseg.hh
    \n+
    dgfgridfactory.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_BOUNDARYSEGBLOCK_HH
    \n-
    6#define DUNE_DGF_BOUNDARYSEGBLOCK_HH
    \n+
    5#ifndef DUNE_DGF_GRIDFACTORY_HH
    \n+
    6#define DUNE_DGF_GRIDFACTORY_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <iostream>
    \n-
    10#include <string>
    \n-
    11#include <vector>
    \n-
    12#include <map>
    \n+
    8#include <iostream>
    \n+
    9#include <string>
    \n+
    10#include <vector>
    \n+
    11#include <map>
    \n+
    12#include <assert.h>
    \n
    13
    \n-\n-\n-
    16
    \n+
    14#include <dune/common/parallel/mpihelper.hh>
    \n+\n+\n
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n+\n+\n
    20
    \n-
    21 namespace dgf
    \n-
    22 {
    \n-
    \n-\n-
    24 : public BasicBlock
    \n-
    25 {
    \n-
    26 int dimworld; // the dimension of the vertices (is given from user)
    \n-
    27 bool goodline; // active line describes a vertex
    \n-
    28 std :: vector< unsigned int > p; // active vertex
    \n-
    29 int bndid;
    \n-
    30 typedef DGFBoundaryParameter::type BoundaryParameter;
    \n-
    31 BoundaryParameter parameter;
    \n-
    32 bool simplexgrid;
    \n-
    33
    \n-
    34 public:
    \n-\n-
    36 typedef std::pair < int, BoundaryParameter > BndParam;
    \n-
    37
    \n-
    38 // initialize vertex block and get first vertex
    \n-
    39 BoundarySegBlock ( std :: istream &in, int pnofvtx,
    \n-
    40 int pdimworld, bool psimplexgrid );
    \n-
    41
    \n-
    42 // some information
    \n-
    43 int get( std :: map< EntityKey, BndParam > & facemap,
    \n-
    44 bool fixedsize,
    \n-
    45 int vtxoffset
    \n-
    46 );
    \n+
    21
    \n+
    22namespace Dune
    \n+
    23{
    \n+
    24
    \n+
    25 // External Forward Declarations
    \n+
    26 // -----------------------------
    \n+
    27
    \n+
    28 template < class GridImp, class IntersectionImp >
    \n+
    29 class Intersection;
    \n+
    30
    \n+
    31
    \n+
    32
    \n+
    33 // DGFGridFactory
    \n+
    34 // --------------
    \n+
    35
    \n+
    36 template < class G >
    \n+
    \n+\n+
    38 {
    \n+
    39 typedef G Grid;
    \n+
    40 const static int dimension = Grid::dimension;
    \n+
    41 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n+
    42
    \n+
    43 private:
    \n+
    44 typedef typename Grid::template Codim< 0 >::Entity Element;
    \n+
    45
    \n+
    46 typedef typename Grid::template Codim< dimension >::Entity Vertex;
    \n
    47
    \n-
    \n-
    48 bool ok()
    \n-
    49 {
    \n-
    50 return goodline;
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    \n-\n-
    54 {
    \n-
    55 return noflines();
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    58 private:
    \n-
    59 bool next();
    \n-
    60
    \n-
    61 // get coordinates of active vertex
    \n-
    62 int operator[] (int i)
    \n-
    63 {
    \n-
    64 assert(ok());
    \n-
    65 assert(linenumber()>=0);
    \n-
    66 assert(0<=i && i<dimworld+1);
    \n-
    67 return p[i];
    \n-
    68 }
    \n+
    48 public:
    \n+
    49
    \n+
    \n+
    50 explicit DGFGridFactory ( const std::string &filename,
    \n+
    51 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    52 : macroGrid_( filename.c_str(), comm )
    \n+
    53 {
    \n+
    54 grid_ = macroGrid_.template createGrid< Grid >();
    \n+
    55
    \n+
    56 if( macroGrid_.nofelparams > 0 )
    \n+
    57 {
    \n+
    58 const size_t nofElements = macroGrid_.elements.size();
    \n+
    59 for( size_t i = 0; i < nofElements; ++i )
    \n+
    60 {
    \n+
    61 std::vector< double > coord;
    \n+
    62
    \n+
    63 DomainType p(0);
    \n+
    64 const size_t nofCorners = macroGrid_.elements[i].size();
    \n+
    65 for (size_t k=0; k<nofCorners; ++k)
    \n+
    66 for (int j=0; j<DomainType::dimension; ++j)
    \n+
    67 p[j]+=macroGrid_.vtx[macroGrid_.elements[i][k]][j];
    \n+
    68 p/=double(nofCorners);
    \n
    69
    \n-
    70 int size()
    \n-
    71 {
    \n-
    72 return p.size();
    \n-
    73 }
    \n-
    74
    \n-
    75 };
    \n-
    \n-
    76
    \n-
    77 } // end namespace dgf
    \n-
    78
    \n-
    79} // end namespace Dune
    \n+
    70 elInsertOrder_.insert( std::make_pair( p, i ) );
    \n+
    71 }
    \n+
    72 }
    \n+
    73
    \n+
    74 if( macroGrid_.nofvtxparams > 0 )
    \n+
    75 {
    \n+
    76 const size_t nofVertices = macroGrid_.vtx.size();
    \n+
    77 for( size_t i = 0; i < nofVertices; ++i )
    \n+
    78 {
    \n+
    79 std::vector< double > coord;
    \n
    80
    \n-
    81#endif
    \n-\n-\n+
    81 DomainType p;
    \n+
    82 for( int k = 0; k < DomainType::dimension; ++k )
    \n+
    83 p[ k ] = macroGrid_.vtx[i][k];
    \n+
    84
    \n+
    85 vtxInsertOrder_.insert( std::make_pair( p, i ) );
    \n+
    86 }
    \n+
    87 }
    \n+
    88 }
    \n+
    \n+
    89
    \n+
    \n+\n+
    91 {
    \n+
    92 return grid_;
    \n+
    93 }
    \n+
    \n+
    94
    \n+
    95 template <class Intersection>
    \n+
    \n+
    96 bool wasInserted(const Intersection &intersection) const
    \n+
    97 {
    \n+
    98 return intersection.boundary();
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    101 template <class Intersection>
    \n+
    \n+
    102 int boundaryId(const Intersection &intersection) const
    \n+
    103 {
    \n+
    104 return (intersection.boundary()) ? int(intersection.indexInInside()+1) : int(0);
    \n+
    105 }
    \n+
    \n+
    106
    \n+
    107 template< int codim >
    \n+
    \n+
    108 int numParameters () const
    \n+
    109 {
    \n+
    110 if( codim == 0 )
    \n+
    111 return macroGrid_.nofelparams;
    \n+
    112 else if( codim == dimension )
    \n+
    113 return macroGrid_.nofvtxparams;
    \n+
    114 else
    \n+
    115 return 0;
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    118 template < class Entity >
    \n+
    \n+
    119 int numParameters ( const Entity & ) const
    \n+
    120 {
    \n+
    121 return numParameters< Entity::codimension >();
    \n+
    122 }
    \n+
    \n+
    123
    \n+
    \n+
    124 std::vector<double>& parameter(const Element &element)
    \n+
    125 {
    \n+
    126 const typename Element::Geometry &geo = element.geometry();
    \n+
    127 DomainType coord( geo.corner( 0 ) );
    \n+
    128 for( int i = 1; i < geo.corners(); ++i )
    \n+
    129 coord += geo.corner( i );
    \n+
    130 coord /= double( geo.corners() );
    \n+
    131
    \n+
    132 InsertOrderIterator it = elInsertOrder_.find( coord );
    \n+
    133 if( it != elInsertOrder_.end() )
    \n+
    134 return macroGrid_.elParams[ it->second ];
    \n+
    135 assert(0);
    \n+
    136 return emptyParam;
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    \n+
    139 std::vector<double>& parameter(const Vertex &vertex)
    \n+
    140 {
    \n+
    141 const typename Vertex::Geometry &geo = vertex.geometry();
    \n+
    142 DomainType coord( geo.corner( 0 ) );
    \n+
    143
    \n+
    144 InsertOrderIterator it = vtxInsertOrder_.find( coord );
    \n+
    145 if( it != vtxInsertOrder_.end() )
    \n+
    146 return macroGrid_.vtxParams[ it->second ];
    \n+
    147 return emptyParam;
    \n+
    148 }
    \n+
    \n+
    149
    \n+
    150 // return true if boundary parameters found
    \n+
    \n+\n+
    152 {
    \n+
    153 return false;
    \n+
    154 }
    \n+
    \n+
    155
    \n+
    156 template< class GG, class II >
    \n+
    157 const typename DGFBoundaryParameter::type &
    \n+
    \n+
    158 boundaryParameter ( const Intersection< GG, II > & intersection ) const
    \n+
    159 {
    \n+\n+
    161 }
    \n+
    \n+
    162
    \n+
    163 private:
    \n+
    164 typedef FieldVector<typename Grid::ctype,Grid::dimensionworld> DomainType;
    \n+
    165 struct Compare
    \n+
    166 {
    \n+
    167 bool operator() ( const DomainType &a, const DomainType &b ) const
    \n+
    168 {
    \n+
    169 // returns true, if a < b; c[i] < -eps;
    \n+
    170 const DomainType c = a - b;
    \n+
    171 const double eps = 1e-8;
    \n+
    172
    \n+
    173 for( int i = 0; i < DomainType::dimension; ++i )
    \n+
    174 {
    \n+
    175 if( c[ i ] <= -eps )
    \n+
    176 return true;
    \n+
    177 if( c[ i ] >= eps )
    \n+
    178 return false;
    \n+
    179 }
    \n+
    180 return false;
    \n+
    181 }
    \n+
    182 };
    \n+
    183 typedef std::map< DomainType, size_t, Compare > InsertOrderMap;
    \n+
    184 typedef typename InsertOrderMap::const_iterator InsertOrderIterator;
    \n+
    185
    \n+
    186 MacroGrid macroGrid_;
    \n+
    187 Grid *grid_;
    \n+
    188 InsertOrderMap elInsertOrder_;
    \n+
    189 InsertOrderMap vtxInsertOrder_;
    \n+
    190 std::vector<double> emptyParam;
    \n+
    191 };
    \n+
    \n+
    192
    \n+
    193} // end namespace Dune
    \n+
    194
    \n+
    195#endif
    \n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    int & noflines()
    Definition basic.hh:87
    \n-
    int linenumber()
    Definition basic.hh:92
    \n-
    Definition boundaryseg.hh:25
    \n-
    bool ok()
    Definition boundaryseg.hh:48
    \n-
    int get(std ::map< EntityKey, BndParam > &facemap, bool fixedsize, int vtxoffset)
    Definition boundaryseg.cc:35
    \n-
    std::pair< int, BoundaryParameter > BndParam
    Definition boundaryseg.hh:36
    \n-
    DGFEntityKey< unsigned int > EntityKey
    Definition boundaryseg.hh:35
    \n-
    int nofbound()
    Definition boundaryseg.hh:53
    \n-
    Definition entitykey.hh:21
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    int numParameters() const
    Definition dgfgridfactory.hh:108
    \n+
    int boundaryId(const Intersection &intersection) const
    Definition dgfgridfactory.hh:102
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfgridfactory.hh:158
    \n+
    std::vector< double > & parameter(const Vertex &vertex)
    Definition dgfgridfactory.hh:139
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n+
    int numParameters(const Entity &) const
    Definition dgfgridfactory.hh:119
    \n+
    bool wasInserted(const Intersection &intersection) const
    Definition dgfgridfactory.hh:96
    \n+
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfgridfactory.hh:50
    \n+
    G Grid
    Definition dgfgridfactory.hh:39
    \n+
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n+
    Grid * grid()
    Definition dgfgridfactory.hh:90
    \n+
    std::vector< double > & parameter(const Element &element)
    Definition dgfgridfactory.hh:124
    \n+
    bool haveBoundaryParameters() const
    Definition dgfgridfactory.hh:151
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    bool boundary() const
    Return true if intersection is with interior or exterior boundary (see the cases above)
    Definition common/intersection.hh:216
    \n+
    int indexInInside() const
    Local index of codim 1 entity in the inside() entity where intersection is contained in.
    Definition common/intersection.hh:346
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n+
    int nofvtxparams
    Definition parser.hh:163
    \n+
    std::vector< std::vector< double > > vtxParams
    Definition parser.hh:165
    \n+
    int nofelparams
    Definition parser.hh:163
    \n+
    std::vector< std::vector< double > > elParams
    Definition parser.hh:165
    \n+
    std::vector< std::vector< double > > vtx
    Definition parser.hh:125
    \n+
    std ::vector< std ::vector< unsigned int > > elements
    Definition parser.hh:134
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,131 +3,308 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-boundaryseg.hh\n+dgfgridfactory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_BOUNDARYSEGBLOCK_HH\n-6#define DUNE_DGF_BOUNDARYSEGBLOCK_HH\n+5#ifndef DUNE_DGF_GRIDFACTORY_HH\n+6#define DUNE_DGF_GRIDFACTORY_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12#include \n+8#include \n+9#include \n+10#include \n+11#include \n+12#include \n 13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-16\n+14#include \n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh>\n 17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 20\n-21 namespace dgf\n-22 {\n-_\b2_\b3 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk\n-24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-25 {\n-26 int dimworld; // the dimension of the vertices (is given from user)\n-27 bool goodline; // active line describes a vertex\n-28 std :: vector< unsigned int > p; // active vertex\n-29 int bndid;\n-30 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be BoundaryParameter;\n-31 BoundaryParameter parameter;\n-32 bool simplexgrid;\n-33\n-34 public:\n-_\b3_\b5 typedef _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b> _\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by;\n-_\b3_\b6 typedef std::pair < int, BoundaryParameter > _\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm;\n-37\n-38 // initialize vertex block and get first vertex\n-39 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx,\n-40 int pdimworld, bool psimplexgrid );\n-41\n-42 // some information\n-43 int _\bg_\be_\bt( std :: map< EntityKey, BndParam > & facemap,\n-44 bool fixedsize,\n-45 int vtxoffset\n-46 );\n+21\n+22namespace _\bD_\bu_\bn_\be\n+23{\n+24\n+25 // External Forward Declarations\n+26 // -----------------------------\n+27\n+28 template < class GridImp, class IntersectionImp >\n+29 class Intersection;\n+30\n+31\n+32\n+33 // DGFGridFactory\n+34 // --------------\n+35\n+36 template < class G >\n+_\b3_\b7 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+38 {\n+_\b3_\b9 typedef G _\bG_\br_\bi_\bd;\n+_\b4_\b0 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b4_\b1 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n+42\n+43 private:\n+44 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Element;\n+45\n+46 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< dimension >::Entity Vertex;\n 47\n-_\b4_\b8 bool _\bo_\bk()\n-49 {\n-50 return goodline;\n-51 }\n-52\n-_\b5_\b3 int _\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd()\n-54 {\n-55 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n-56 }\n-57\n-58 private:\n-59 bool next();\n-60\n-61 // get coordinates of active vertex\n-62 int operator[] (int i)\n-63 {\n-64 assert(_\bo_\bk());\n-65 assert(_\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br()>=0);\n-66 assert(0<=i && i();\n+55\n+56 if( macroGrid_._\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs > 0 )\n+57 {\n+58 const size_t nofElements = macroGrid_._\be_\bl_\be_\bm_\be_\bn_\bt_\bs.size();\n+59 for( size_t i = 0; i < nofElements; ++i )\n+60 {\n+61 std::vector< double > coord;\n+62\n+63 DomainType p(0);\n+64 const size_t nofCorners = macroGrid_._\be_\bl_\be_\bm_\be_\bn_\bt_\bs[i].size();\n+65 for (size_t k=0; k 0 )\n+75 {\n+76 const size_t nofVertices = macroGrid_._\bv_\bt_\bx.size();\n+77 for( size_t i = 0; i < nofVertices; ++i )\n+78 {\n+79 std::vector< double > coord;\n 80\n-81#endif\n+81 DomainType p;\n+82 for( int k = 0; k < DomainType::dimension; ++k )\n+83 p[ k ] = macroGrid_._\bv_\bt_\bx[i][k];\n+84\n+85 vtxInsertOrder_.insert( std::make_pair( p, i ) );\n+86 }\n+87 }\n+88 }\n+89\n+_\b9_\b0 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd()\n+91 {\n+92 return grid_;\n+93 }\n+94\n+95 template \n+_\b9_\b6 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n+97 {\n+98 return intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by();\n+99 }\n+100\n+101 template \n+_\b1_\b0_\b2 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n+103 {\n+104 return (intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by()) ? int(intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be()+1) :\n+int(0);\n+105 }\n+106\n+107 template< int codim >\n+_\b1_\b0_\b8 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+109 {\n+110 if( codim == 0 )\n+111 return macroGrid_._\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs;\n+112 else if( codim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n+113 return macroGrid_._\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs;\n+114 else\n+115 return 0;\n+116 }\n+117\n+118 template < class Entity >\n+_\b1_\b1_\b9 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n+120 {\n+121 return numParameters< Entity::codimension >();\n+122 }\n+123\n+_\b1_\b2_\b4 std::vector& _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br(const Element &element)\n+125 {\n+126 const typename Element::Geometry &geo = element.geometry();\n+127 DomainType coord( geo.corner( 0 ) );\n+128 for( int i = 1; i < geo.corners(); ++i )\n+129 coord += geo.corner( i );\n+130 coord /= double( geo.corners() );\n+131\n+132 InsertOrderIterator it = elInsertOrder_.find( coord );\n+133 if( it != elInsertOrder_.end() )\n+134 return macroGrid_._\be_\bl_\bP_\ba_\br_\ba_\bm_\bs[ it->second ];\n+135 assert(0);\n+136 return emptyParam;\n+137 }\n+138\n+_\b1_\b3_\b9 std::vector& _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br(const Vertex &vertex)\n+140 {\n+141 const typename Vertex::Geometry &geo = vertex.geometry();\n+142 DomainType coord( geo.corner( 0 ) );\n+143\n+144 InsertOrderIterator it = vtxInsertOrder_.find( coord );\n+145 if( it != vtxInsertOrder_.end() )\n+146 return macroGrid_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs[ it->second ];\n+147 return emptyParam;\n+148 }\n+149\n+150 // return true if boundary parameters found\n+_\b1_\b5_\b1 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+152 {\n+153 return false;\n+154 }\n+155\n+156 template< class GG, class II >\n+157 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n+_\b1_\b5_\b8 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection ) const\n+159 {\n+160 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+161 }\n+162\n+163 private:\n+164 typedef FieldVector DomainType;\n+165 struct Compare\n+166 {\n+167 bool operator() ( const DomainType &a, const DomainType &b ) const\n+168 {\n+169 // returns true, if a < b; c[i] < -eps;\n+170 const DomainType c = a - b;\n+171 const double eps = 1e-8;\n+172\n+173 for( int i = 0; i < DomainType::dimension; ++i )\n+174 {\n+175 if( c[ i ] <= -eps )\n+176 return true;\n+177 if( c[ i ] >= eps )\n+178 return false;\n+179 }\n+180 return false;\n+181 }\n+182 };\n+183 typedef std::map< DomainType, size_t, Compare > InsertOrderMap;\n+184 typedef typename InsertOrderMap::const_iterator InsertOrderIterator;\n+185\n+186 MacroGrid macroGrid_;\n+187 _\bG_\br_\bi_\bd *grid_;\n+188 InsertOrderMap elInsertOrder_;\n+189 InsertOrderMap vtxInsertOrder_;\n+190 std::vector emptyParam;\n+191 };\n+192\n+193} // end namespace Dune\n+194\n+195#endif\n _\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\n+_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n-int & noflines()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br\n-int linenumber()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n-int get(std ::map< EntityKey, BndParam > &facemap, bool fixedsize, int\n-vtxoffset)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.cc:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm\n-std::pair< int, BoundaryParameter > BndParam\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n-DGFEntityKey< unsigned int > EntityKey\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd\n-int nofbound()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n+> &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Vertex &vertex)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters(const Entity &) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n+bool wasInserted(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const std::string &filename, MPICommunicatorType\n+comm=MPIHelper::getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\br_\bi_\bd\n+Grid * grid()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Element &element)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool boundary() const\n+Return true if intersection is with interior or exterior boundary (see the\n+cases above)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+Local index of codim 1 entity in the inside() entity where intersection is\n+contained in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n+static const type & defaultValue()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n std::string type\n type of additional boundary parameters\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs\n+int nofvtxparams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs\n+std::vector< std::vector< double > > vtxParams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs\n+int nofelparams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\bP_\ba_\br_\ba_\bm_\bs\n+std::vector< std::vector< double > > elParams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx\n+std::vector< std::vector< double > > vtx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n+std ::vector< std ::vector< unsigned int > > elements\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:134\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00824.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00824.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: basic.cc File Reference\n+dune-grid: parser.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    basic.cc File Reference
    \n+
    parser.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n-
    \n+
    #include <iostream>
    \n+#include <string>
    \n+#include <vector>
    \n+#include <map>
    \n+#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    struct  Dune::DGFBoundaryParameter
     Contains types for additional features. More...
     
    class  Dune::DuneGridFormatParser
     The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures used by the MacroGrid class. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,20 +3,29 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-basic.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+parser.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\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:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+\u00a0 Contains types for additional features. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n+\u00a0 The DuneGridFormatParser class: reads a DGF file and stores build\n+ information in vector structures used by the _\bM_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd class. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00827.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00827.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarydom.hh File Reference\n+dune-grid: dgfoned.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,48 @@\n \n \n \n \n \n \n \n
    \n \n-
    boundarydom.hh File Reference
    \n+
    dgfoned.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <string>
    \n+
    #include <algorithm>
    \n+#include <fstream>
    \n+#include <iostream>
    \n+#include <istream>
    \n #include <vector>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n-#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/grid/common/intersection.hh>
    \n+#include <dune/grid/onedgrid.hh>
    \n+#include "dgfparser.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::dgf::DomainData
    struct  Dune::DGFGridInfo< OneDGrid >
     
    struct  Dune::dgf::Domain
     
    class  Dune::dgf::BoundaryDomBlock
    struct  Dune::DGFGridFactory< OneDGrid >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,31 +3,30 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-boundarydom.hh File Reference\n+dgfoned.hh File Reference\n+#include \n+#include \n #include \n-#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bo_\bn_\be_\bd_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\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:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00827_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00827_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarydom.hh Source File\n+dune-grid: dgfoned.hh Source File\n \n \n \n \n \n \n \n@@ -70,419 +70,295 @@\n
    \n \n \n \n \n \n \n
    \n-
    boundarydom.hh
    \n+
    dgfoned.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_BOUNDARYDOMBLOCK_HH
    \n-
    6#define DUNE_DGF_BOUNDARYDOMBLOCK_HH
    \n+
    5#ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH
    \n+
    6#define DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH
    \n
    7
    \n-
    8#include <iostream>
    \n-
    9#include <string>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n-\n+
    8//- C++ includes
    \n+
    9#include <algorithm>
    \n+
    10#include <fstream>
    \n+
    11#include <iostream>
    \n+
    12#include <istream>
    \n+
    13#include <vector>
    \n
    14
    \n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    19 namespace dgf
    \n-
    20 {
    \n+
    15//- dune-common includes
    \n+
    16#include <dune/common/exceptions.hh>
    \n+
    17
    \n+
    18//- dune-grid includes
    \n+\n+
    20#include <dune/grid/onedgrid.hh>
    \n
    21
    \n-
    \n-\n-
    23 {
    \n-\n+
    22//- local includes
    \n+
    23#include "dgfparser.hh"
    \n+
    24
    \n
    25
    \n-
    \n-\n-
    27 : id_( 0 ),
    \n-
    28 parameter_( DGFBoundaryParameter::defaultValue() ),
    \n-
    29 defaultData_( false )
    \n-
    30 { }
    \n-
    \n-
    31
    \n-\n-
    33
    \n-
    34 // constructor
    \n-
    \n-
    35 DomainData ( int id, BoundaryParameter parameter, bool defaultData = false )
    \n-
    36 : id_( id ),
    \n-
    37 parameter_( parameter ),
    \n-
    38 defaultData_( defaultData )
    \n-
    39 { }
    \n-
    \n-
    40
    \n-
    41 // return id
    \n-
    \n-
    42 int id () const
    \n-
    43 {
    \n-
    44 return id_;
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    47 // return true, if additional parameters given
    \n-
    \n-
    48 bool hasParameter () const
    \n-
    49 {
    \n-
    50 return (!parameter_.empty());
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    53 // return additional parameters
    \n-
    \n-\n-
    55 {
    \n-
    56 return parameter_;
    \n-
    57 }
    \n+
    26namespace
    \n+
    27{
    \n+
    28 // helper method used below
    \n+
    29 double getfirst ( std::vector< double > v )
    \n+
    30 {
    \n+
    31 return v[ 0 ];
    \n+
    32 }
    \n+
    33} // end anonymous namespace
    \n+
    34
    \n+
    35
    \n+
    36
    \n+
    37namespace Dune
    \n+
    38{
    \n+
    39
    \n+
    40 // DGFGridInfo
    \n+
    41 // -----------
    \n+
    42
    \n+
    43 template< >
    \n+
    \n+\n+
    45 {
    \n+
    \n+
    46 static int refineStepsForHalf ()
    \n+
    47 {
    \n+
    48 return 1;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    51 static double refineWeight ()
    \n+
    52 {
    \n+
    53 return 0.5;
    \n+
    54 }
    \n
    \n+
    55 };
    \n+
    \n+
    56
    \n+
    57
    \n
    58
    \n-
    59 // reset data
    \n-
    \n-
    60 void reset ( int id, BoundaryParameter parameter, bool defaultData = false )
    \n-
    61 {
    \n-
    62 id_ = id;
    \n-
    63 parameter_ = parameter;
    \n-
    64 defaultData_ = defaultData;
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67 // returns true if data origins from default boundary domain
    \n-
    \n-
    68 bool isDefault () const
    \n-
    69 {
    \n-
    70 return defaultData_;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    73 friend std::ostream & operator<< ( std :: ostream & os, const DomainData & ddata )
    \n-
    74 {
    \n-
    75 os << "domain data: id = " << ddata.id();
    \n-
    76 if( ddata.hasParameter() )
    \n-
    77 os << ", parameter = " << ddata.parameter();
    \n-
    78 return os;
    \n-
    79 }
    \n+
    59 // DGFGridFactory< OneDGrid >
    \n+
    60 // --------------------------
    \n+
    61
    \n+
    62 template< >
    \n+
    \n+\n+
    64 {
    \n+
    66 typedef OneDGrid Grid;
    \n+
    68 const static int dimension = Grid::dimension;
    \n+
    70 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n+
    71
    \n+
    \n+
    73 explicit DGFGridFactory ( std::istream &input,
    \n+
    74 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    75 : grid_( 0 ),
    \n+
    76 emptyParameters_( 0 )
    \n+
    77 {
    \n+
    78 generate( input, comm );
    \n+
    79 }
    \n
    \n
    80
    \n-
    81 private:
    \n-
    82 int id_;
    \n-
    83 BoundaryParameter parameter_;
    \n-
    84 bool defaultData_;
    \n-
    85
    \n-
    86 }; // end struct DomainData
    \n-
    \n-
    87
    \n-
    88
    \n-
    \n-
    89 struct Domain
    \n-
    90 {
    \n-
    91 // dimension of world coordinates
    \n-
    92 const int dimensionworld;
    \n-
    93
    \n-\n-
    95
    \n-
    96 // constructor
    \n-
    \n-
    97 Domain( std::vector< double > p1, std::vector< double > p2, int id, BoundaryParameter & parameter )
    \n-
    98 : dimensionworld( p1.size() ),
    \n-
    99 left_( p1 ),
    \n-
    100 right_( p2 ),
    \n-
    101 data_( id, parameter )
    \n-
    102 {
    \n-
    103 if( int( p2.size() ) != dimensionworld )
    \n-
    104 {
    \n-
    105 DUNE_THROW(DGFException,
    \n-
    106 "ERROR in " << *this << "!");
    \n-
    107 }
    \n-
    108 }
    \n-
    \n-
    109
    \n-
    110 // constructor
    \n-
    \n-
    111 Domain( std::vector< double > p1, std::vector< double > p2, DomainData & data )
    \n-
    112 : dimensionworld( p1.size() ),
    \n-
    113 left_( p1 ),
    \n-
    114 right_( p2 ),
    \n-
    115 data_( data )
    \n-
    116 {
    \n-
    117 if( int( p2.size() ) != dimensionworld )
    \n-
    118 {
    \n-
    119 DUNE_THROW(DGFException,
    \n-
    120 "ERROR in " << *this << "!");
    \n-
    121 }
    \n-
    122 }
    \n-
    \n-
    123
    \n-
    124 // copy constructor
    \n-
    \n-
    125 Domain ( const Domain & other )
    \n-\n-
    127 left_( other.left_ ),
    \n-
    128 right_( other.right_ ),
    \n-
    129 data_( other.data_ )
    \n-
    130 {
    \n-
    131 if( dimensionworld != other.dimensionworld )
    \n-
    132 {
    \n-
    133 DUNE_THROW(DGFException,
    \n-
    134 "ERROR in " << *this << "!");
    \n-
    135 }
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    138 // assignment
    \n-
    \n-
    139 Domain & operator = ( const Domain & other )
    \n-
    140 {
    \n-
    141 if( dimensionworld != other.dimensionworld )
    \n-
    142 {
    \n-
    143 DUNE_THROW(DGFException,
    \n-
    144 "ERROR in " << *this << "!");
    \n-
    145 }
    \n-
    146
    \n-
    147 left_ = other.left_;
    \n-
    148 right_= other.right_;
    \n-
    149 data_= other.data_;
    \n-
    150 return *this;
    \n-
    151 }
    \n-
    \n-
    152
    \n-
    153 // return true if point is contained in boundary domain
    \n-
    154 template< class Vector >
    \n-
    \n-
    155 bool contains ( const Vector & x ) const
    \n-
    156 {
    \n-
    157 bool ret = true;
    \n-
    158 for( int i = 0; i < dimensionworld; ++i )
    \n-
    159 {
    \n-
    160 if( x[ i ] < left_[ i ] || x[ i ] > right_[ i ] )
    \n-
    161 ret = false;
    \n-
    162 }
    \n-
    163 return ret;
    \n-
    164 }
    \n-
    \n-
    165
    \n-
    \n-
    166 const DomainData & data () const
    \n-
    167 {
    \n-
    168 return data_;
    \n-
    169 }
    \n-
    \n-
    170
    \n-
    171 // for error messages
    \n-
    \n-
    172 friend std::ostream & operator<< ( std :: ostream &os, const Domain & domain )
    \n-
    173 {
    \n-
    174 os << "domain: " << std::endl;
    \n-
    175 os << "left = ";
    \n-
    176 for( int i = 0; i < domain.dimensionworld; ++i )
    \n-
    177 os << domain.left_[ i ] << " ";
    \n-
    178 os << std::endl;
    \n-
    179 os << "right = ";
    \n-
    180 for( int i = 0; i < domain.dimensionworld; ++i )
    \n-
    181 os << domain.right_[ i ] << " ";
    \n-
    182 os << std::endl;
    \n-
    183 os << domain.data();
    \n-
    184 return os;
    \n-
    185 }
    \n-
    \n+
    \n+
    82 explicit DGFGridFactory ( const std::string &filename,
    \n+
    83 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    84 : grid_( 0 ),
    \n+
    85 emptyParameters_( 0 )
    \n+
    86 {
    \n+
    87 std::ifstream input( filename.c_str() );
    \n+
    88 generate( input, comm );
    \n+
    89 }
    \n+
    \n+
    90
    \n+
    \n+
    92 Grid *grid () const
    \n+
    93 {
    \n+
    94 return grid_;
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    98 template< class GG, class II >
    \n+
    \n+
    99 bool wasInserted ( const Dune::Intersection< GG, II > &intersection ) const
    \n+
    100 {
    \n+
    101 return false;
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    104 template< class GG, class II >
    \n+
    \n+
    105 int boundaryId ( const Dune::Intersection< GG, II > &intersection ) const
    \n+
    106 {
    \n+
    107 // OneDGrid returns boundary segment index;
    \n+
    108 // we return the index as the method boundaryId is deprecated
    \n+
    109 return intersection.boundarySegmentIndex();
    \n+
    110 }
    \n+
    \n+
    111
    \n+
    113 template< class Entity >
    \n+
    \n+
    114 int numParameters ( const Entity & ) const
    \n+
    115 {
    \n+
    116 return 0;
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    120 template< int codim >
    \n+
    \n+
    121 int numParameters () const
    \n+
    122 {
    \n+
    123 return 0;
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    126 template< class Entity >
    \n+
    \n+
    127 std::vector< double >& parameter ( const Entity &entity )
    \n+
    128 {
    \n+
    129 return parameter< Entity::codimension >( entity );
    \n+
    130 }
    \n+
    \n+
    131
    \n+
    133 template< int codim >
    \n+
    \n+
    134 std::vector< double > &parameter ( [[maybe_unused]] const typename Grid::Codim< codim >::Entity &element )
    \n+
    135 {
    \n+
    136 return emptyParameters_;
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    \n+\n+
    141 {
    \n+
    142 return false;
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    146 template< class GG, class II >
    \n+
    \n+
    147 const DGFBoundaryParameter::type &boundaryParameter ( [[maybe_unused]] const Dune::Intersection< GG, II > &intersection ) const
    \n+
    148 {
    \n+\n+
    150 }
    \n+
    \n+
    151
    \n+
    152 private:
    \n+
    153 // generate grid
    \n+
    154 void generate ( std::istream &input, MPICommunicatorType comm );
    \n+
    155
    \n+
    156 Grid *grid_;
    \n+
    157 std::vector< double > emptyParameters_;
    \n+
    158 };
    \n+
    \n+
    159
    \n+
    160
    \n+
    161
    \n+
    162 // Implementation of DGFGridFactory< OneDGrid >
    \n+
    163 // --------------------------------------------
    \n+
    164
    \n+
    165 inline void DGFGridFactory< OneDGrid >::generate ( std::istream &input, [[maybe_unused]] MPICommunicatorType comm )
    \n+
    166 {
    \n+
    167 // try to open interval block
    \n+
    168 dgf::IntervalBlock intervalBlock( input );
    \n+
    169
    \n+
    170 // try to open vertex block
    \n+
    171 int dimensionworld = Grid::dimensionworld;
    \n+
    172 dgf::VertexBlock vertexBlock( input, dimensionworld );
    \n+
    173
    \n+
    174 // check at least one block is active
    \n+
    175 if( !( vertexBlock.isactive() || intervalBlock.isactive() ))
    \n+
    176 DUNE_THROW( DGFException, "No readable block found" );
    \n+
    177
    \n+
    178 std::vector< std::vector< double > > vertices;
    \n+
    179
    \n+
    180 // read vertices first
    \n+
    181 if( vertexBlock.isactive() )
    \n+
    182 {
    \n+
    183 int nparameter = 0;
    \n+
    184 std::vector< std::vector< double > > parameter;
    \n+
    185 vertexBlock.get( vertices, parameter, nparameter );
    \n
    186
    \n-
    187 private:
    \n-
    188 std::vector< double > left_, right_;
    \n-
    189 DomainData data_;
    \n+
    187 if( nparameter > 0 )
    \n+
    188 std::cerr << "Warning: vertex parameters will be ignored" << std::endl;
    \n+
    189 }
    \n
    190
    \n-
    191 };
    \n-
    \n-
    192
    \n-
    \n-\n-
    194 : public BasicBlock
    \n-
    195 {
    \n-
    196 typedef DGFBoundaryParameter::type BoundaryParameter;
    \n-
    197
    \n-
    198 // the dimension of the vertices (is given from user)
    \n-
    199 int dimworld_;
    \n-
    200
    \n-
    201 // internal counter
    \n-
    202 int counter_;
    \n-
    203
    \n-
    204 // default values if given
    \n-
    205 DomainData * default_;
    \n-
    206
    \n-
    207 // storage for all domains;
    \n-
    208 int ndomains_;
    \n-
    209 std::vector< Domain > domains_;
    \n-
    210
    \n-
    211 public:
    \n-
    212 // initialize vertex block and get first vertex
    \n-
    213 BoundaryDomBlock ( std::istream & in, int cdimworld );
    \n-
    214
    \n-
    215 // destructor
    \n-
    \n-\n-
    217 {
    \n-
    218 if( default_ )
    \n-
    219 delete default_;
    \n-
    220 }
    \n-
    \n+
    191 // get vertices from interval block
    \n+
    192 if ( intervalBlock.isactive() )
    \n+
    193 {
    \n+
    194 if( intervalBlock.dimw() != dimensionworld )
    \n+
    195 {
    \n+
    196 DUNE_THROW( DGFException, "Error: wrong coordinate dimension in interval block \\
    \n+
    197 (got " << intervalBlock.dimw() << ", expected " << dimensionworld << ")" );
    \n+
    198 }
    \n+
    199
    \n+
    200 int nintervals = intervalBlock.numIntervals();
    \n+
    201 for( int i = 0; i < nintervals; ++i )
    \n+
    202 intervalBlock.getVtx( i, vertices );
    \n+
    203 }
    \n+
    204
    \n+
    205 // copy to vector of doubles
    \n+
    206 std::vector< double > vtx( vertices.size() );
    \n+
    207 transform( vertices.begin(), vertices.end(), vtx.begin(), getfirst );
    \n+
    208
    \n+
    209 // remove duplicates
    \n+
    210 std::sort( vtx.begin(), vtx.end() );
    \n+
    211 std::vector< double >::iterator it = std::unique( vtx.begin(), vtx.end() );
    \n+
    212 vtx.erase( it, vtx.end() );
    \n+
    213 if( vertices.size() != vtx.size() )
    \n+
    214 std::cerr << "Warning: removed duplicate vertices" << std::endl;
    \n+
    215
    \n+
    216 // create grid
    \n+
    217 grid_ = new OneDGrid( vtx );
    \n+
    218 }
    \n+
    219
    \n+
    220} // end namespace Dune
    \n
    221
    \n-
    222 // go to next domain in block
    \n-
    \n-
    223 bool next ()
    \n-
    224 {
    \n-
    225 counter_++;
    \n-
    226 return ( counter_ < ndomains_ );
    \n-
    227 }
    \n-
    \n-
    228
    \n-
    229 // return domain
    \n-
    \n-
    230 const Domain & domain () const
    \n-
    231 {
    \n-
    232 return domains_.at( counter_ );
    \n-
    233 }
    \n-
    \n-
    234
    \n-
    235 // return true if default is given
    \n-
    \n-
    236 bool hasDefaultData () const
    \n-
    237 {
    \n-
    238 return bool( default_ );
    \n-
    239 }
    \n-
    \n-
    240
    \n-
    241 // return default data
    \n-
    \n-
    242 const DomainData * defaultData () const
    \n-
    243 {
    \n-
    244 return default_;
    \n-
    245 }
    \n-
    \n-
    246
    \n-
    247 // return true if any boundary domain block has
    \n-
    248 // additional parameters
    \n-
    249 bool hasParameter () const;
    \n-
    250
    \n-
    \n-
    251 void reset ()
    \n-
    252 {
    \n-\n-
    254 counter_ = -1;
    \n-
    255 }
    \n-
    \n-
    256
    \n-
    257 // return true while block is active
    \n-
    \n-
    258 bool ok ()
    \n-
    259 {
    \n-
    260 return ( counter_ <= ndomains_ );
    \n-
    261 }
    \n-
    \n-
    262
    \n-
    263 // return data if all vectors in array are contained within
    \n-
    264 // a single domain
    \n-
    265 template< class Vector >
    \n-
    \n-
    266 const DomainData * contains ( const std::vector< Vector > & v ) const
    \n-
    267 {
    \n-
    268 std::vector< int > index( ndomains_ );
    \n-
    269 for( int i = 0; i < ndomains_; ++i)
    \n-
    270 index[ i ] = i;
    \n-
    271
    \n-
    272 size_t N = v.size();
    \n-
    273 for( size_t i = 0; i < N; ++i )
    \n-
    274 {
    \n-
    275 if( index.empty() )
    \n-
    276 break;
    \n-
    277
    \n-
    278 const int n = index.size();
    \n-
    279 assert( n > 0 );
    \n-
    280 for( int j = n-1; j >= 0; --j )
    \n-
    281 {
    \n-
    282 bool inside = domains_[ index[ j ] ].contains( v[ i ] );
    \n-
    283 if( !inside )
    \n-
    284 index.erase( index.begin() + j );
    \n-
    285 }
    \n-
    286 }
    \n-
    287
    \n-
    288 // check wheter no boundary domain found
    \n-
    289 if( index.empty() )
    \n-
    290 return default_;
    \n-
    291
    \n-
    292 // check for ambiguity
    \n-
    293 if( index.size() > 1 )
    \n-
    294 dwarn << "WARNING: ambiguous boundary domain assignment, use first boundary domain in list" << std::endl;
    \n-
    295
    \n-
    296 return &domains_[ index[ 0 ] ].data();
    \n-
    297 }
    \n-
    \n-
    298
    \n-
    299 private:
    \n-
    300 void readBlock ();
    \n-
    301 };
    \n-
    \n-
    302
    \n-
    303 } // end namespace dgf
    \n-
    304
    \n-
    305} // end namespace Dune
    \n-
    306
    \n-
    307#endif
    \n-\n-\n+
    222#endif // #ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH
    \n+
    The OneDGrid class.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    void reset()
    Definition basic.hh:51
    \n-
    Definition boundarydom.hh:23
    \n-
    void reset(int id, BoundaryParameter parameter, bool defaultData=false)
    Definition boundarydom.hh:60
    \n-
    ~DomainData()
    Definition boundarydom.hh:32
    \n-
    DGFBoundaryParameter::type BoundaryParameter
    Definition boundarydom.hh:24
    \n-
    DomainData()
    Definition boundarydom.hh:26
    \n-
    int id() const
    Definition boundarydom.hh:42
    \n-
    const BoundaryParameter & parameter() const
    Definition boundarydom.hh:54
    \n-
    friend std::ostream & operator<<(std ::ostream &os, const DomainData &ddata)
    Definition boundarydom.hh:73
    \n-
    bool hasParameter() const
    Definition boundarydom.hh:48
    \n-
    DomainData(int id, BoundaryParameter parameter, bool defaultData=false)
    Definition boundarydom.hh:35
    \n-
    bool isDefault() const
    Definition boundarydom.hh:68
    \n-
    Definition boundarydom.hh:90
    \n-
    Domain(std::vector< double > p1, std::vector< double > p2, int id, BoundaryParameter &parameter)
    Definition boundarydom.hh:97
    \n-
    Domain(const Domain &other)
    Definition boundarydom.hh:125
    \n-
    const int dimensionworld
    Definition boundarydom.hh:92
    \n-
    bool contains(const Vector &x) const
    Definition boundarydom.hh:155
    \n-
    DGFBoundaryParameter::type BoundaryParameter
    Definition boundarydom.hh:94
    \n-
    friend std::ostream & operator<<(std ::ostream &os, const Domain &domain)
    Definition boundarydom.hh:172
    \n-
    Domain & operator=(const Domain &other)
    Definition boundarydom.hh:139
    \n-
    const DomainData & data() const
    Definition boundarydom.hh:166
    \n-
    Domain(std::vector< double > p1, std::vector< double > p2, DomainData &data)
    Definition boundarydom.hh:111
    \n-
    Definition boundarydom.hh:195
    \n-
    ~BoundaryDomBlock()
    Definition boundarydom.hh:216
    \n-
    bool hasParameter() const
    Definition boundarydom.cc:138
    \n-
    const Domain & domain() const
    Definition boundarydom.hh:230
    \n-
    const DomainData * contains(const std::vector< Vector > &v) const
    Definition boundarydom.hh:266
    \n-
    bool next()
    Definition boundarydom.hh:223
    \n-
    void reset()
    Definition boundarydom.hh:251
    \n-
    bool ok()
    Definition boundarydom.hh:258
    \n-
    bool hasDefaultData() const
    Definition boundarydom.hh:236
    \n-
    const DomainData * defaultData() const
    Definition boundarydom.hh:242
    \n-
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n-
    Contains types for additional features.
    Definition parser.hh:23
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n+
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n+
    std::vector< double > & parameter(const Element &element)
    Definition dgfgridfactory.hh:124
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    size_t boundarySegmentIndex() const
    index of the boundary segment within the macro grid
    Definition common/intersection.hh:236
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n+
    GridFamily::Traits::template Codim< cd >::Entity Entity
    A type that is a model of a Dune::Entity<cd,dim,...>.
    Definition common/grid.hh:419
    \n+
    static double refineWeight()
    Definition dgfoned.hh:51
    \n+
    static int refineStepsForHalf()
    Definition dgfoned.hh:46
    \n+
    OneDGrid Grid
    grid type
    Definition dgfoned.hh:66
    \n+
    std::vector< double > & parameter(const typename Grid::Codim< codim >::Entity &element)
    return empty vector
    Definition dgfoned.hh:134
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    MPI communicator type.
    Definition dgfoned.hh:70
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
    return invalid default value
    Definition dgfoned.hh:147
    \n+
    std::vector< double > & parameter(const Entity &entity)
    Definition dgfoned.hh:127
    \n+
    int boundaryId(const Dune::Intersection< GG, II > &intersection) const
    Definition dgfoned.hh:105
    \n+
    Grid * grid() const
    get grid
    Definition dgfoned.hh:92
    \n+
    bool haveBoundaryParameters() const
    OneDGrid does not support boundary parameters.
    Definition dgfoned.hh:140
    \n+
    int numParameters(const Entity &) const
    OneDGrid does not support parameters, returns 0.
    Definition dgfoned.hh:114
    \n+
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor taking filename
    Definition dgfoned.hh:82
    \n+
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor taking istream
    Definition dgfoned.hh:73
    \n+
    int numParameters() const
    OneDGrid does not support parameters, returns 0.
    Definition dgfoned.hh:121
    \n+
    bool wasInserted(const Dune::Intersection< GG, II > &intersection) const
    always returns false
    Definition dgfoned.hh:99
    \n+
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n+
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n+
    One-dimensional adaptive grid.
    Definition onedgrid.hh:94
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,436 +3,344 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-boundarydom.hh\n+dgfoned.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_BOUNDARYDOMBLOCK_HH\n-6#define DUNE_DGF_BOUNDARYDOMBLOCK_HH\n+5#ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH\n+6#define DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+8//- C++ includes\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n 14\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-19 namespace dgf\n-20 {\n+15//- dune-common includes\n+16#include \n+17\n+18//- dune-grid includes\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bo_\bn_\be_\bd_\bg_\br_\bi_\bd_\b._\bh_\bh>\n 21\n-_\b2_\b2 struct _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n-23 {\n-_\b2_\b4 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n+22//- local includes\n+23#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n+24\n 25\n-_\b2_\b6 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba ()\n-27 : id_( 0 ),\n-28 parameter_( _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br::defaultValue() ),\n-29 defaultData_( false )\n-30 { }\n-31\n-_\b3_\b2 _\b~_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba () { }\n-33\n-34 // constructor\n-_\b3_\b5 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba ( int id, _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, bool defaultData = false )\n-36 : id_( _\bi_\bd ),\n-37 parameter_( _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ),\n-38 defaultData_( defaultData )\n-39 { }\n-40\n-41 // return id\n-_\b4_\b2 int _\bi_\bd () const\n-43 {\n-44 return id_;\n-45 }\n-46\n-47 // return true, if additional parameters given\n-_\b4_\b8 bool _\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br () const\n-49 {\n-50 return (!parameter_.empty());\n-51 }\n-52\n-53 // return additional parameters\n-_\b5_\b4 const _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br & _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br () const\n-55 {\n-56 return parameter_;\n-57 }\n+26namespace\n+27{\n+28 // helper method used below\n+29 double getfirst ( std::vector< double > v )\n+30 {\n+31 return v[ 0 ];\n+32 }\n+33} // end anonymous namespace\n+34\n+35\n+36\n+37namespace _\bD_\bu_\bn_\be\n+38{\n+39\n+40 // DGFGridInfo\n+41 // -----------\n+42\n+43 template< >\n+_\b4_\b4 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd >\n+45 {\n+_\b4_\b6 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf ()\n+47 {\n+48 return 1;\n+49 }\n+50\n+_\b5_\b1 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt ()\n+52 {\n+53 return 0.5;\n+54 }\n+55 };\n+56\n+57\n 58\n-59 // reset data\n-_\b6_\b0 void _\br_\be_\bs_\be_\bt ( int id, _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, bool defaultData = false )\n-61 {\n-62 id_ = _\bi_\bd;\n-63 parameter_ = _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n-64 defaultData_ = defaultData;\n-65 }\n-66\n-67 // returns true if data origins from default boundary domain\n-_\b6_\b8 bool _\bi_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt () const\n-69 {\n-70 return defaultData_;\n-71 }\n-72\n-_\b7_\b3 friend std::ostream & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std :: ostream & os, const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba &\n-ddata )\n-74 {\n-75 os << \"domain data: id = \" << ddata._\bi_\bd();\n-76 if( ddata._\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br() )\n-77 os << \", parameter = \" << ddata._\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br();\n-78 return os;\n+59 // DGFGridFactory< OneDGrid >\n+60 // --------------------------\n+61\n+62 template< >\n+_\b6_\b3 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd >\n+64 {\n+_\b6_\b6 typedef _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n+_\b6_\b8 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b7_\b0 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n+71\n+_\b7_\b3 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n+74 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+75 : grid_( 0 ),\n+76 emptyParameters_( 0 )\n+77 {\n+78 generate( input, comm );\n 79 }\n 80\n-81 private:\n-82 int id_;\n-83 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br parameter_;\n-84 bool defaultData_;\n-85\n-86 }; // end struct DomainData\n-87\n-88\n-_\b8_\b9 struct _\bD_\bo_\bm_\ba_\bi_\bn\n-90 {\n-91 // dimension of world coordinates\n-_\b9_\b2 const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-93\n-_\b9_\b4 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n-95\n-96 // constructor\n-_\b9_\b7 _\bD_\bo_\bm_\ba_\bi_\bn( std::vector< double > p1, std::vector< double > p2, int id,\n-_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br & parameter )\n-98 : _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd( p1.size() ),\n-99 left_( p1 ),\n-100 right_( p2 ),\n-101 data_( id, parameter )\n-102 {\n-103 if( int( p2.size() ) != _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n-104 {\n-105 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n-106 \"ERROR in \" << *this << \"!\");\n-107 }\n-108 }\n-109\n-110 // constructor\n-_\b1_\b1_\b1 _\bD_\bo_\bm_\ba_\bi_\bn( std::vector< double > p1, std::vector< double > p2, _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba &\n-_\bd_\ba_\bt_\ba )\n-112 : _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd( p1.size() ),\n-113 left_( p1 ),\n-114 right_( p2 ),\n-115 data_( _\bd_\ba_\bt_\ba )\n-116 {\n-117 if( int( p2.size() ) != _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n-118 {\n-119 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n-120 \"ERROR in \" << *this << \"!\");\n-121 }\n-122 }\n-123\n-124 // copy constructor\n-_\b1_\b2_\b5 _\bD_\bo_\bm_\ba_\bi_\bn ( const _\bD_\bo_\bm_\ba_\bi_\bn & other )\n-126 : _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd( other._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd ),\n-127 left_( other.left_ ),\n-128 right_( other.right_ ),\n-129 data_( other.data_ )\n-130 {\n-131 if( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd != other._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n-132 {\n-133 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n-134 \"ERROR in \" << *this << \"!\");\n-135 }\n-136 }\n-137\n-138 // assignment\n-_\b1_\b3_\b9 _\bD_\bo_\bm_\ba_\bi_\bn & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b ( const _\bD_\bo_\bm_\ba_\bi_\bn & other )\n-140 {\n-141 if( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd != other._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n-142 {\n-143 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n-144 \"ERROR in \" << *this << \"!\");\n-145 }\n-146\n-147 left_ = other.left_;\n-148 right_= other.right_;\n-149 data_= other.data_;\n-150 return *this;\n-151 }\n-152\n-153 // return true if point is contained in boundary domain\n-154 template< class Vector >\n-_\b1_\b5_\b5 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs ( const Vector & x ) const\n-156 {\n-157 bool ret = true;\n-158 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++i )\n-159 {\n-160 if( x[ i ] < left_[ i ] || x[ i ] > right_[ i ] )\n-161 ret = false;\n-162 }\n-163 return ret;\n-164 }\n-165\n-_\b1_\b6_\b6 const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba & _\bd_\ba_\bt_\ba () const\n-167 {\n-168 return data_;\n-169 }\n-170\n-171 // for error messages\n-_\b1_\b7_\b2 friend std::ostream & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std :: ostream &os, const _\bD_\bo_\bm_\ba_\bi_\bn &\n-domain )\n-173 {\n-174 os << \"domain: \" << std::endl;\n-175 os << \"left = \";\n-176 for( int i = 0; i < domain._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++i )\n-177 os << domain.left_[ i ] << \" \";\n-178 os << std::endl;\n-179 os << \"right = \";\n-180 for( int i = 0; i < domain._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++i )\n-181 os << domain.right_[ i ] << \" \";\n-182 os << std::endl;\n-183 os << domain._\bd_\ba_\bt_\ba();\n-184 return os;\n-185 }\n+_\b8_\b2 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n+83 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+84 : grid_( 0 ),\n+85 emptyParameters_( 0 )\n+86 {\n+87 std::ifstream input( filename.c_str() );\n+88 generate( input, comm );\n+89 }\n+90\n+_\b9_\b2 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd () const\n+93 {\n+94 return grid_;\n+95 }\n+96\n+98 template< class GG, class II >\n+_\b9_\b9 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n+100 {\n+101 return false;\n+102 }\n+103\n+104 template< class GG, class II >\n+_\b1_\b0_\b5 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n+106 {\n+107 // OneDGrid returns boundary segment index;\n+108 // we return the index as the method boundaryId is deprecated\n+109 return intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx();\n+110 }\n+111\n+113 template< class Entity >\n+_\b1_\b1_\b4 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n+115 {\n+116 return 0;\n+117 }\n+118\n+120 template< int codim >\n+_\b1_\b2_\b1 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+122 {\n+123 return 0;\n+124 }\n+125\n+126 template< class Entity >\n+_\b1_\b2_\b7 std::vector< double >& _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+128 {\n+129 return parameter< Entity::codimension >( entity );\n+130 }\n+131\n+133 template< int codim >\n+_\b1_\b3_\b4 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( [[maybe_unused]] const typename _\bG_\br_\bi_\bd_\b:_\b:\n+_\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &element )\n+135 {\n+136 return emptyParameters_;\n+137 }\n+138\n+_\b1_\b4_\b0 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+141 {\n+142 return false;\n+143 }\n+144\n+146 template< class GG, class II >\n+_\b1_\b4_\b7 const _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( [[maybe_unused]]\n+const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n+148 {\n+149 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+150 }\n+151\n+152 private:\n+153 // generate grid\n+154 void generate ( std::istream &input, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm );\n+155\n+156 _\bG_\br_\bi_\bd *grid_;\n+157 std::vector< double > emptyParameters_;\n+158 };\n+159\n+160\n+161\n+162 // Implementation of DGFGridFactory< OneDGrid >\n+163 // --------------------------------------------\n+164\n+165 inline void DGFGridFactory< OneDGrid >::generate ( std::istream &input, [\n+[maybe_unused]] MPICommunicatorType comm )\n+166 {\n+167 // try to open interval block\n+168 dgf::IntervalBlock intervalBlock( input );\n+169\n+170 // try to open vertex block\n+171 int dimensionworld = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+172 dgf::VertexBlock vertexBlock( input, dimensionworld );\n+173\n+174 // check at least one block is active\n+175 if( !( vertexBlock.isactive() || intervalBlock.isactive() ))\n+176 DUNE_THROW( DGFException, \"No readable block found\" );\n+177\n+178 std::vector< std::vector< double > > vertices;\n+179\n+180 // read vertices first\n+181 if( vertexBlock.isactive() )\n+182 {\n+183 int nparameter = 0;\n+184 std::vector< std::vector< double > > _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n+185 vertexBlock.get( vertices, _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, nparameter );\n 186\n-187 private:\n-188 std::vector< double > left_, right_;\n-189 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba data_;\n+187 if( nparameter > 0 )\n+188 std::cerr << \"Warning: vertex parameters will be ignored\" << std::endl;\n+189 }\n 190\n-191 };\n-192\n-_\b1_\b9_\b3 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n-194 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+191 // get vertices from interval block\n+192 if ( intervalBlock.isactive() )\n+193 {\n+194 if( intervalBlock.dimw() != dimensionworld )\n 195 {\n-196 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be BoundaryParameter;\n-197\n-198 // the dimension of the vertices (is given from user)\n-199 int dimworld_;\n-200\n-201 // internal counter\n-202 int counter_;\n-203\n-204 // default values if given\n-205 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba * default_;\n-206\n-207 // storage for all domains;\n-208 int ndomains_;\n-209 std::vector< Domain > domains_;\n-210\n-211 public:\n-212 // initialize vertex block and get first vertex\n-213 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk ( std::istream & in, int cdimworld );\n-214\n-215 // destructor\n-_\b2_\b1_\b6 _\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk ()\n-217 {\n-218 if( default_ )\n-219 delete default_;\n-220 }\n+196 DUNE_THROW( DGFException, \"Error: wrong coordinate dimension in interval\n+block \\\n+197 (got \" << intervalBlock.dimw() << \", expected \" << dimensionworld << \")\" );\n+198 }\n+199\n+200 int nintervals = intervalBlock.numIntervals();\n+201 for( int i = 0; i < nintervals; ++i )\n+202 intervalBlock.getVtx( i, vertices );\n+203 }\n+204\n+205 // copy to vector of doubles\n+206 std::vector< double > vtx( vertices.size() );\n+207 transform( vertices.begin(), vertices.end(), vtx.begin(), getfirst );\n+208\n+209 // remove duplicates\n+210 std::sort( vtx.begin(), vtx.end() );\n+211 std::vector< double >::iterator it = std::unique( vtx.begin(), vtx.end() );\n+212 vtx.erase( it, vtx.end() );\n+213 if( vertices.size() != vtx.size() )\n+214 std::cerr << \"Warning: removed duplicate vertices\" << std::endl;\n+215\n+216 // create grid\n+217 grid_ = new OneDGrid( vtx );\n+218 }\n+219\n+220} // end namespace Dune\n 221\n-222 // go to next domain in block\n-_\b2_\b2_\b3 bool _\bn_\be_\bx_\bt ()\n-224 {\n-225 counter_++;\n-226 return ( counter_ < ndomains_ );\n-227 }\n-228\n-229 // return domain\n-_\b2_\b3_\b0 const _\bD_\bo_\bm_\ba_\bi_\bn & _\bd_\bo_\bm_\ba_\bi_\bn () const\n-231 {\n-232 return domains_.at( counter_ );\n-233 }\n-234\n-235 // return true if default is given\n-_\b2_\b3_\b6 bool _\bh_\ba_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba () const\n-237 {\n-238 return bool( default_ );\n-239 }\n-240\n-241 // return default data\n-_\b2_\b4_\b2 const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba * _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba () const\n-243 {\n-244 return default_;\n-245 }\n-246\n-247 // return true if any boundary domain block has\n-248 // additional parameters\n-249 bool _\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br () const;\n-250\n-_\b2_\b5_\b1 void _\br_\be_\bs_\be_\bt ()\n-252 {\n-253 _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt();\n-254 counter_ = -1;\n-255 }\n-256\n-257 // return true while block is active\n-_\b2_\b5_\b8 bool _\bo_\bk ()\n-259 {\n-260 return ( counter_ <= ndomains_ );\n-261 }\n-262\n-263 // return data if all vectors in array are contained within\n-264 // a single domain\n-265 template< class Vector >\n-_\b2_\b6_\b6 const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba * _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs ( const std::vector< Vector > & v ) const\n-267 {\n-268 std::vector< int > index( ndomains_ );\n-269 for( int i = 0; i < ndomains_; ++i)\n-270 index[ i ] = i;\n-271\n-272 size_t N = v.size();\n-273 for( size_t i = 0; i < N; ++i )\n-274 {\n-275 if( index.empty() )\n-276 break;\n-277\n-278 const int n = index.size();\n-279 assert( n > 0 );\n-280 for( int j = n-1; j >= 0; --j )\n-281 {\n-282 bool inside = domains_[ index[ j ] ].contains( v[ i ] );\n-283 if( !inside )\n-284 index.erase( index.begin() + j );\n-285 }\n-286 }\n-287\n-288 // check wheter no boundary domain found\n-289 if( index.empty() )\n-290 return default_;\n-291\n-292 // check for ambiguity\n-293 if( index.size() > 1 )\n-294 dwarn << \"WARNING: ambiguous boundary domain assignment, use first boundary\n-domain in list\" << std::endl;\n-295\n-296 return &domains_[ index[ 0 ] ].data();\n-297 }\n-298\n-299 private:\n-300 void readBlock ();\n-301 };\n-302\n-303 } // end namespace dgf\n-304\n-305} // end namespace Dune\n-306\n-307#endif\n-_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+222#endif // #ifndef DUNE_GRID_FILE_IO_DGFPARSER_DGFONED_HH\n+_\bo_\bn_\be_\bd_\bg_\br_\bi_\bd_\b._\bh_\bh\n+The OneDGrid class.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset(int id, BoundaryParameter parameter, bool defaultData=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\b~_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n-~DomainData()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-DGFBoundaryParameter::type BoundaryParameter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n-DomainData()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bd\n-int id() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const BoundaryParameter & parameter() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-friend std::ostream & operator<<(std ::ostream &os, const DomainData &ddata)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-bool hasParameter() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n-DomainData(int id, BoundaryParameter parameter, bool defaultData=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt\n-bool isDefault() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-Domain(std::vector< double > p1, std::vector< double > p2, int id,\n-BoundaryParameter ¶meter)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-Domain(const Domain &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-const int dimensionworld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const Vector &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-DGFBoundaryParameter::type BoundaryParameter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-friend std::ostream & operator<<(std ::ostream &os, const Domain &domain)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:172\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-Domain & operator=(const Domain &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bd_\ba_\bt_\ba\n-const DomainData & data() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-Domain(std::vector< double > p1, std::vector< double > p2, DomainData &data)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n-~BoundaryDomBlock()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-bool hasParameter() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.cc:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bo_\bm_\ba_\bi_\bn\n-const Domain & domain() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-const DomainData * contains(const std::vector< Vector > &v) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:266\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\be_\bx_\bt\n-bool next()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:251\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:258\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba\n-bool hasDefaultData() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba\n-const DomainData * defaultData() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-exception class for IO errors in the DGF parser\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-Contains types for additional features.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Element &element)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+size_t boundarySegmentIndex() const\n+index of the boundary segment within the macro grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static constexpr int dimensionworld\n+The dimension of the world the grid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridFamily::Traits::template Codim< cd >::Entity Entity\n+A type that is a model of a Dune::Entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:419\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n+static double refineWeight()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n+static int refineStepsForHalf()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n+OneDGrid Grid\n+grid type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const typename Grid::Codim< codim >::Entity\n+&element)\n+return empty vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+MPI communicator type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection<\n+GG, II > &intersection) const\n+return invalid default value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Entity &entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Dune::Intersection< GG, II > &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n+Grid * grid() const\n+get grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+OneDGrid does not support boundary parameters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters(const Entity &) const\n+OneDGrid does not support parameters, returns 0.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const std::string &filename, MPICommunicatorType\n+comm=MPIHelper::getCommunicator())\n+constructor taking filename\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n+getCommunicator())\n+constructor taking istream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters() const\n+OneDGrid does not support parameters, returns 0.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\bn_\be_\bD_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n+bool wasInserted(const Dune::Intersection< GG, II > &intersection) const\n+always returns false\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfoned.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n+Some simple static information for a given GridType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n+static const type & defaultValue()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n std::string type\n type of additional boundary parameters\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bn_\be_\bD_\bG_\br_\bi_\bd\n+One-dimensional adaptive grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn onedgrid.hh:94\n+_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00830.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00830.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: general.cc File Reference\n+dune-grid: dgfidentitygrid.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,43 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    general.cc File Reference
    \n+
    dgfidentitygrid.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/general.hh>
    \n-
    \n+
    #include <dune/common/typetraits.hh>
    \n+#include <dune/grid/identitygrid.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfparser.hh>
    \n+#include <dune/grid/utility/hostgridaccess.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    struct  Dune::DGFGridFactory< IdentityGrid< HostGrid > >
     
    struct  Dune::DGFGridInfo< IdentityGrid< HostGrid > >
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,20 +3,25 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-general.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\be_\bn_\be_\br_\ba_\bl_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dgfidentitygrid.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\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_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00833.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00833.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: periodicfacetrans.cc File Reference\n+dune-grid: dgfgeogrid.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    periodicfacetrans.cc File Reference
    \n+
    dgfgeogrid.hh File Reference
    \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,20 +3,39 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-periodicfacetrans.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\be_\br_\bi_\bo_\bd_\bi_\bc_\bf_\ba_\bc_\be_\bt_\br_\ba_\bn_\bs_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dgfgeogrid.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\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:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR\n+ _\b>_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br\n+ _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00836.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00836.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: polyhedron.hh File Reference\n+dune-grid: dgfug.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    polyhedron.hh File Reference
    \n+
    dgfug.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <dune/grid/io/file/dgfparser/blocks/polygon.hh>
    \n+
    #include <fstream>
    \n+#include <istream>
    \n+#include <string>
    \n+#include <vector>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/grid/common/intersection.hh>
    \n+#include <dune/grid/uggrid.hh>
    \n+#include "dgfparser.hh"
    \n+#include "blocks/gridparameter.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::dgf::PolyhedronBlock
    struct  Dune::dgf::UGGridParameterBlock
     
    struct  Dune::DGFGridInfo< UGGrid< dim > >
     
    struct  Dune::DGFGridFactory< UGGrid< dim > >
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,22 +3,34 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-polyhedron.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bh_\bh>\n+dgfug.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bg_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n+#include \"_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\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:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\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 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00836_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00836_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: polyhedron.hh Source File\n+dune-grid: dgfug.hh Source File\n \n \n \n \n \n \n \n@@ -70,109 +70,316 @@\n \n \n \n \n \n \n \n
    \n-
    polyhedron.hh
    \n+
    dgfug.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// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=2 sw=2 sts=2:
    \n-
    5#ifndef DUNE_POLYHEDRON_HH
    \n-
    6#define DUNE_POLYHEDRON_HH
    \n+
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=4 sw=2 sts=2:
    \n+
    5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH
    \n+
    6#define DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH
    \n
    7
    \n-
    8#include <algorithm>
    \n-
    9
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    15 namespace dgf
    \n-
    16 {
    \n-
    17
    \n-
    18 // PolyhedronBlock
    \n-
    19 // ---------------
    \n-
    20
    \n-
    \n-\n-
    22 : public BasicBlock
    \n-
    23 {
    \n-
    \n-
    24 explicit PolyhedronBlock ( std::istream &in, int numPolys )
    \n-
    25 : BasicBlock( in, "Polyhedron" ), numPolys_( numPolys )
    \n-
    26 {}
    \n-
    \n+
    8//- C++ includes
    \n+
    9#include <fstream>
    \n+
    10#include <istream>
    \n+
    11#include <string>
    \n+
    12#include <vector>
    \n+
    13
    \n+
    14//- dune-common includes
    \n+
    15#include <dune/common/exceptions.hh>
    \n+
    16#include <dune/common/fvector.hh>
    \n+
    17#include <dune/common/parallel/mpihelper.hh>
    \n+
    18
    \n+
    19//- dune-grid includes
    \n+\n+
    21#include <dune/grid/uggrid.hh>
    \n+
    22
    \n+
    23//- local includes
    \n+
    24#include "dgfparser.hh"
    \n+\n+
    26
    \n
    27
    \n-
    \n-
    28 int get ( std::vector< std::vector< int > > &polyhedra )
    \n-
    29 {
    \n-
    30 reset();
    \n-
    31 std::vector< int > polyhedron;
    \n-
    32 int minPolyId = 1;
    \n-
    33 while( getnextline() )
    \n-
    34 {
    \n-
    35 polyhedron.clear();
    \n-
    36 for( int polyIdx; getnextentry( polyIdx ); )
    \n-
    37 {
    \n-
    38 if( (polyIdx < 0) || (polyIdx > numPolys_) )
    \n-
    39 DUNE_THROW( DGFException, "Error in " << *this << ": Invalid polygon index (" << polyIdx << " not int [0, " << numPolys_ << "])" );
    \n-
    40
    \n-
    41 minPolyId = std::min( minPolyId, polyIdx );
    \n-
    42 polyhedron.push_back( polyIdx );
    \n-
    43 }
    \n-
    44
    \n-
    45 polyhedra.push_back( polyhedron );
    \n-
    46 }
    \n-
    47
    \n-
    48 // subtract minimal number to have 0 starting numbering
    \n-
    49 if( minPolyId > 0 )
    \n-
    50 {
    \n-
    51 const size_t polySize = polyhedra.size();
    \n-
    52 for( size_t i=0; i<polySize; ++i )
    \n-
    53 {
    \n-
    54 const size_t pSize = polyhedra[ i ].size();
    \n-
    55 for( size_t j=0; j<pSize; ++j )
    \n-
    56 {
    \n-
    57 polyhedra[ i ][ j ] -= minPolyId;
    \n-
    58 }
    \n-
    59 }
    \n-
    60 }
    \n-
    61 return polyhedra.size();
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    64 protected:
    \n-
    65 const int numPolys_;
    \n-
    66 };
    \n-
    \n-
    67
    \n-
    68 } // namespace dgf
    \n-
    69} // end namespace Dune
    \n-
    70
    \n-
    71#endif // #ifndef DUNE_POLYHEDRON_HH
    \n-\n+
    28namespace Dune
    \n+
    29{
    \n+
    30
    \n+
    31 namespace dgf
    \n+
    32 {
    \n+
    33
    \n+
    34 // UGGridParameterBlock
    \n+
    35 // --------------------
    \n+
    36
    \n+
    \n+\n+
    38 : public GridParameterBlock
    \n+
    39 {
    \n+
    41 explicit UGGridParameterBlock ( std::istream &input );
    \n+
    42
    \n+
    44 bool noClosure () const { return noClosure_; }
    \n+
    46 bool noCopy () const { return noCopy_; }
    \n+
    48 size_t heapSize () const { return heapSize_; }
    \n+
    49
    \n+
    50 protected:
    \n+
    51 bool noClosure_; // no closure for UGGrid
    \n+
    52 bool noCopy_; // no copies for UGGrid
    \n+
    53 size_t heapSize_; // heap size for UGGrid
    \n+
    54 };
    \n+
    \n+
    55
    \n+
    56 } // namespace dgf
    \n+
    57
    \n+
    58
    \n+
    59
    \n+
    60#if HAVE_DUNE_UGGRID
    \n+
    61 template< int dim >
    \n+
    \n+
    62 struct DGFGridInfo< UGGrid< dim > >
    \n+
    63 {
    \n+
    \n+
    64 static int refineStepsForHalf ()
    \n+
    65 {
    \n+
    66 return 1;
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    \n+
    69 static double refineWeight ()
    \n+
    70 {
    \n+
    71 return -1.;
    \n+
    72 }
    \n+
    \n+
    73 };
    \n+
    \n+
    74
    \n+
    75
    \n+
    76
    \n+
    77 // DGFGridFactory< UGGrid< dim > >
    \n+
    78 // -------------------------------
    \n+
    79
    \n+
    80 template< int dim >
    \n+
    \n+
    81 struct DGFGridFactory< UGGrid< dim > >
    \n+
    82 {
    \n+\n+
    86 static const int dimension = dim;
    \n+
    88 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n+
    89
    \n+
    \n+
    91 explicit DGFGridFactory ( std::istream &input,
    \n+
    92 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    93 : grid_( 0 ),
    \n+
    94 factory_(),
    \n+
    95 dgf_( rank( comm ), size( comm ) )
    \n+
    96 {
    \n+
    97 generate( input );
    \n+
    98 }
    \n+
    \n+
    99
    \n+
    \n+
    101 explicit DGFGridFactory ( const std::string &filename,
    \n+
    102 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    103 : grid_( 0 ),
    \n+
    104 factory_(),
    \n+
    105 dgf_( rank( comm ), size( comm ) )
    \n+
    106 {
    \n+
    107 std::ifstream input( filename.c_str() );
    \n+
    108 if ( !input )
    \n+
    109 DUNE_THROW( DGFException, "Error: Macrofile " << filename << " not found" );
    \n+
    110 generate( input );
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    \n+\n+
    115 {
    \n+
    116 return grid_;
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    120 template< class GG, class II >
    \n+
    \n+
    121 bool wasInserted ( const Dune::Intersection< GG, II > &intersection ) const
    \n+
    122 {
    \n+
    123 return factory_.wasInserted( intersection );
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    127 template< class GG, class II >
    \n+
    \n+
    128 int boundaryId ( const Dune::Intersection< GG, II > &intersection ) const
    \n+
    129 {
    \n+
    130 return intersection.boundarySegmentIndex();
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    134 template< int codim >
    \n+
    \n+
    135 int numParameters () const
    \n+
    136 {
    \n+
    137 if( codim == 0 )
    \n+
    138 return dgf_.nofelparams;
    \n+
    139 else if( codim == dimension )
    \n+
    140 return dgf_.nofvtxparams;
    \n+
    141 else
    \n+
    142 return 0;
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    146 template< class Entity >
    \n+
    \n+
    147 int numParameters ( const Entity & ) const
    \n+
    148 {
    \n+
    149 return numParameters< Entity::codimension >();
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    \n+
    153 std::vector< double > &parameter ( const typename Grid::template Codim< 0 >::Entity &element )
    \n+
    154 {
    \n+
    155 if( numParameters< 0 >() <= 0 )
    \n+
    156 {
    \n+
    157 DUNE_THROW( InvalidStateException,
    \n+
    158 "Calling DGFGridFactory::parameter is only allowed if there are parameters." );
    \n+
    159 }
    \n+
    160 return dgf_.elParams[ factory_.insertionIndex( element ) ];
    \n+
    161 }
    \n+
    \n+
    162
    \n+
    \n+
    164 std::vector< double > &parameter ( const typename Grid::template Codim< dimension >::Entity &vertex )
    \n+
    165 {
    \n+
    166 if( numParameters< dimension >() <= 0 )
    \n+
    167 {
    \n+
    168 DUNE_THROW( InvalidStateException,
    \n+
    169 "Calling DGFGridFactory::parameter is only allowed if there are parameters." );
    \n+
    170 }
    \n+
    171 return dgf_.vtxParams[ factory_.insertionIndex( vertex ) ];
    \n+
    172 }
    \n+
    \n+
    173
    \n+
    \n+\n+
    176 {
    \n+
    177 return dgf_.haveBndParameters;
    \n+
    178 }
    \n+
    \n+
    179
    \n+
    181 template< class GG, class II >
    \n+
    \n+\n+
    183 {
    \n+\n+
    185 typename Intersection::Entity entity = intersection.inside();
    \n+
    186 const int face = intersection.indexInInside();
    \n+
    187
    \n+
    188 auto refElem = referenceElement< double, dimension >( entity.type() );
    \n+
    189 int corners = refElem.size( face, 1, dimension );
    \n+
    190 std::vector< unsigned int > bound( corners );
    \n+
    191 for( int i = 0; i < corners; ++i )
    \n+
    192 {
    \n+
    193 const int k = refElem.subEntity( face, 1, i, dimension );
    \n+
    194 bound[ i ] = factory_.insertionIndex( entity.template subEntity< dimension >( k ) );
    \n+
    195 }
    \n+
    196
    \n+
    197 DuneGridFormatParser::facemap_t::key_type key( bound, false );
    \n+
    198 const DuneGridFormatParser::facemap_t::const_iterator pos = dgf_.facemap.find( key );
    \n+
    199 if( pos != dgf_.facemap.end() )
    \n+
    200 return dgf_.facemap.find( key )->second.second;
    \n+
    201 else
    \n+\n+
    203 }
    \n+
    \n+
    204
    \n+
    205 private:
    \n+
    206 // create grid
    \n+
    207 void generate ( std::istream &input );
    \n+
    208
    \n+
    209 // return rank
    \n+
    210 static int rank( MPICommunicatorType MPICOMM )
    \n+
    211 {
    \n+
    212 int rank = 0;
    \n+
    213#if HAVE_MPI
    \n+
    214 MPI_Comm_rank( MPICOMM, &rank );
    \n+
    215#endif
    \n+
    216 return rank;
    \n+
    217 }
    \n+
    218
    \n+
    219 // return size
    \n+
    220 static int size( MPICommunicatorType MPICOMM )
    \n+
    221 {
    \n+
    222 int size = 1;
    \n+
    223#if HAVE_MPI
    \n+
    224 MPI_Comm_size( MPICOMM, &size );
    \n+
    225#endif
    \n+
    226 return size;
    \n+
    227 }
    \n+
    228
    \n+
    229 Grid *grid_;
    \n+
    230 GridFactory< UGGrid< dim > > factory_;
    \n+
    231 DuneGridFormatParser dgf_;
    \n+
    232 };
    \n+
    \n+
    233#endif // #if HAVE_DUNE_UGGRID
    \n+
    234
    \n+
    235} // namespace Dune
    \n+
    236
    \n+
    237#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH
    \n+\n+
    The UGGrid class.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    void reset()
    Definition basic.hh:51
    \n-
    bool getnextline()
    Definition basic.cc:94
    \n-
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n-
    Definition polyhedron.hh:23
    \n-
    const int numPolys_
    Definition polyhedron.hh:65
    \n-
    PolyhedronBlock(std::istream &in, int numPolys)
    Definition polyhedron.hh:24
    \n-
    int get(std::vector< std::vector< int > > &polyhedra)
    Definition polyhedron.hh:28
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n+
    G Grid
    Definition dgfgridfactory.hh:39
    \n+
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    int indexInInside() const
    Local index of codim 1 entity in the inside() entity where intersection is contained in.
    Definition common/intersection.hh:346
    \n+
    size_t boundarySegmentIndex() const
    index of the boundary segment within the macro grid
    Definition common/intersection.hh:236
    \n+
    Entity inside() const
    return Entity on the inside of this intersection. That is the Entity where we started this.
    Definition common/intersection.hh:250
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Type of entity that this Intersection belongs to.
    Definition common/intersection.hh:192
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    Common Grid parameters.
    Definition gridparameter.hh:35
    \n
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n+
    Definition dgfug.hh:39
    \n+
    size_t heapSize() const
    returns heap size used on construction of the grid
    Definition dgfug.hh:48
    \n+
    bool noCopy_
    Definition dgfug.hh:52
    \n+
    size_t heapSize_
    Definition dgfug.hh:53
    \n+
    bool noClosure_
    Definition dgfug.hh:51
    \n+
    bool noCopy() const
    returns true if no copies are made for UGGrid elements
    Definition dgfug.hh:46
    \n+
    bool noClosure() const
    returns true if no closure should be used for UGGrid
    Definition dgfug.hh:44
    \n+
    static double refineWeight()
    Definition dgfug.hh:69
    \n+
    static int refineStepsForHalf()
    Definition dgfug.hh:64
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
    return invalid value
    Definition dgfug.hh:182
    \n+
    std::vector< double > & parameter(const typename Grid::template Codim< dimension >::Entity &vertex)
    return parameter for vertex
    Definition dgfug.hh:164
    \n+
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor taking filename
    Definition dgfug.hh:101
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    MPI communicator type.
    Definition dgfug.hh:88
    \n+
    int numParameters(const Entity &) const
    return number of parameters
    Definition dgfug.hh:147
    \n+
    int boundaryId(const Dune::Intersection< GG, II > &intersection) const
    will return boundary segment index
    Definition dgfug.hh:128
    \n+
    UGGrid< dim > Grid
    grid type
    Definition dgfug.hh:84
    \n+
    bool wasInserted(const Dune::Intersection< GG, II > &intersection) const
    please doc me
    Definition dgfug.hh:121
    \n+
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor taking istream
    Definition dgfug.hh:91
    \n+
    int numParameters() const
    return number of parameters
    Definition dgfug.hh:135
    \n+
    bool haveBoundaryParameters() const
    UGGrid does not support boundary parameters.
    Definition dgfug.hh:175
    \n+
    std::vector< double > & parameter(const typename Grid::template Codim< 0 >::Entity &element)
    return parameter for codim 0 entity
    Definition dgfug.hh:153
    \n+
    Grid * grid()
    return grid
    Definition dgfug.hh:114
    \n+
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n+
    Front-end for the grid manager of the finite element toolbox UG3.
    Definition uggrid.hh:207
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,114 +3,392 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-polyhedron.hh\n+dgfug.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=2 sw=2 sts=2:\n-5#ifndef DUNE_POLYHEDRON_HH\n-6#define DUNE_POLYHEDRON_HH\n+3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+4// vi: set et ts=4 sw=2 sts=2:\n+5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH\n+6#define DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-15 namespace dgf\n-16 {\n-17\n-18 // PolyhedronBlock\n-19 // ---------------\n-20\n-_\b2_\b1 struct _\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-22 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-23 {\n-_\b2_\b4 explicit _\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std::istream &in, int numPolys )\n-25 : _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk( in, \"Polyhedron\" ), _\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_( numPolys )\n-26 {}\n+8//- C++ includes\n+9#include \n+10#include \n+11#include \n+12#include \n+13\n+14//- dune-common includes\n+15#include \n+16#include \n+17#include \n+18\n+19//- dune-grid includes\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bg_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+22\n+23//- local includes\n+24#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n+25#include \"_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b._\bh_\bh\"\n+26\n 27\n-_\b2_\b8 int _\bg_\be_\bt ( std::vector< std::vector< int > > &polyhedra )\n-29 {\n-30 _\br_\be_\bs_\be_\bt();\n-31 std::vector< int > polyhedron;\n-32 int minPolyId = 1;\n-33 while( _\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be() )\n-34 {\n-35 polyhedron.clear();\n-36 for( int polyIdx; _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by( polyIdx ); )\n-37 {\n-38 if( (polyIdx < 0) || (polyIdx > _\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_) )\n-39 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error in \" << *this << \": Invalid polygon index\n-(\" << polyIdx << \" not int [0, \" << _\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_ << \"])\" );\n-40\n-41 minPolyId = std::min( minPolyId, polyIdx );\n-42 polyhedron.push_back( polyIdx );\n-43 }\n-44\n-45 polyhedra.push_back( polyhedron );\n-46 }\n-47\n-48 // subtract minimal number to have 0 starting numbering\n-49 if( minPolyId > 0 )\n-50 {\n-51 const size_t polySize = polyhedra.size();\n-52 for( size_t i=0; i\n+_\b6_\b2 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bU_\bG_\bG_\br_\bi_\bd< dim > >\n+63 {\n+_\b6_\b4 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf ()\n+65 {\n+66 return 1;\n+67 }\n+68\n+_\b6_\b9 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt ()\n+70 {\n+71 return -1.;\n+72 }\n+73 };\n+74\n+75\n+76\n+77 // DGFGridFactory< UGGrid< dim > >\n+78 // -------------------------------\n+79\n+80 template< int dim >\n+_\b8_\b1 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bU_\bG_\bG_\br_\bi_\bd< dim > >\n+82 {\n+_\b8_\b4 typedef _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b> _\bG_\br_\bi_\bd;\n+_\b8_\b6 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b8_\b8 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n+89\n+_\b9_\b1 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n+92 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+93 : grid_( 0 ),\n+94 factory_(),\n+95 dgf_( rank( comm ), size( comm ) )\n+96 {\n+97 generate( input );\n+98 }\n+99\n+_\b1_\b0_\b1 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n+102 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+103 : grid_( 0 ),\n+104 factory_(),\n+105 dgf_( rank( comm ), size( comm ) )\n+106 {\n+107 std::ifstream input( filename.c_str() );\n+108 if ( !input )\n+109 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error: Macrofile \" << filename << \" not found\"\n+);\n+110 generate( input );\n+111 }\n+112\n+_\b1_\b1_\b4 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd ()\n+115 {\n+116 return grid_;\n+117 }\n+118\n+120 template< class GG, class II >\n+_\b1_\b2_\b1 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n+122 {\n+123 return factory_.wasInserted( intersection );\n+124 }\n+125\n+127 template< class GG, class II >\n+_\b1_\b2_\b8 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n+129 {\n+130 return intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx();\n+131 }\n+132\n+134 template< int codim >\n+_\b1_\b3_\b5 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+136 {\n+137 if( codim == 0 )\n+138 return dgf_.nofelparams;\n+139 else if( codim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n+140 return dgf_.nofvtxparams;\n+141 else\n+142 return 0;\n+143 }\n+144\n+146 template< class Entity >\n+_\b1_\b4_\b7 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n+148 {\n+149 return numParameters< Entity::codimension >();\n+150 }\n+151\n+_\b1_\b5_\b3 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0\n+>::Entity &element )\n+154 {\n+155 if( numParameters< 0 >() <= 0 )\n+156 {\n+157 DUNE_THROW( InvalidStateException,\n+158 \"Calling DGFGridFactory::parameter is only allowed if there are\n+parameters.\" );\n+159 }\n+160 return dgf_.elParams[ factory_.insertionIndex( element ) ];\n+161 }\n+162\n+_\b1_\b6_\b4 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<\n+dimension >::Entity &vertex )\n+165 {\n+166 if( numParameters< dimension >() <= 0 )\n+167 {\n+168 DUNE_THROW( InvalidStateException,\n+169 \"Calling DGFGridFactory::parameter is only allowed if there are\n+parameters.\" );\n+170 }\n+171 return dgf_.vtxParams[ factory_.insertionIndex( vertex ) ];\n+172 }\n+173\n+_\b1_\b7_\b5 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+176 {\n+177 return dgf_.haveBndParameters;\n+178 }\n+179\n+181 template< class GG, class II >\n+_\b1_\b8_\b2 const _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bD_\bu_\bn_\be_\b:_\b:\n+_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> &intersection ) const\n+183 {\n+184 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+185 typename _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by entity = intersection._\bi_\bn_\bs_\bi_\bd_\be();\n+186 const int face = intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n+187\n+188 auto refElem = referenceElement< double, dimension >( entity.type() );\n+189 int corners = refElem.size( face, 1, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+190 std::vector< unsigned int > bound( corners );\n+191 for( int i = 0; i < corners; ++i )\n+192 {\n+193 const int k = refElem.subEntity( face, 1, i, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+194 bound[ i ] = factory_.insertionIndex( entity.template subEntity< dimension\n+>( k ) );\n+195 }\n+196\n+197 DuneGridFormatParser::facemap_t::key_type key( bound, false );\n+198 const DuneGridFormatParser::facemap_t::const_iterator pos =\n+dgf_.facemap.find( key );\n+199 if( pos != dgf_.facemap.end() )\n+200 return dgf_.facemap.find( key )->second.second;\n+201 else\n+202 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+203 }\n+204\n+205 private:\n+206 // create grid\n+207 void generate ( std::istream &input );\n+208\n+209 // return rank\n+210 static int rank( _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM )\n+211 {\n+212 int rank = 0;\n+213#if HAVE_MPI\n+214 MPI_Comm_rank( MPICOMM, &rank );\n+215#endif\n+216 return rank;\n+217 }\n+218\n+219 // return size\n+220 static int size( _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM )\n+221 {\n+222 int size = 1;\n+223#if HAVE_MPI\n+224 MPI_Comm_size( MPICOMM, &size );\n+225#endif\n+226 return size;\n+227 }\n+228\n+229 _\bG_\br_\bi_\bd *grid_;\n+230 GridFactory< UGGrid< dim > > factory_;\n+231 DuneGridFormatParser dgf_;\n+232 };\n+233#endif // #if HAVE_DUNE_UGGRID\n+234\n+235} // namespace Dune\n+236\n+237#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH\n+_\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b._\bh_\bh\n+_\bu_\bg_\bg_\br_\bi_\bd_\b._\bh_\bh\n+The UGGrid class.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be\n-bool getnextline()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by\n-bool getnextentry(ENTRY &entry)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polyhedron.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_\n-const int numPolys_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polyhedron.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-PolyhedronBlock(std::istream &in, int numPolys)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polyhedron.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n-int get(std::vector< std::vector< int > > &polyhedra)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polyhedron.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+Local index of codim 1 entity in the inside() entity where intersection is\n+contained in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+size_t boundarySegmentIndex() const\n+index of the boundary segment within the macro grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n+Entity inside() const\n+return Entity on the inside of this intersection. That is the Entity where we\n+started this.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+Type of entity that this Intersection belongs to.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:192\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+Common Grid parameters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n exception class for IO errors in the DGF parser\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n+Some simple static information for a given GridType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\be_\ba_\bp_\bS_\bi_\bz_\be\n+size_t heapSize() const\n+returns heap size used on construction of the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bC_\bo_\bp_\by_\b_\n+bool noCopy_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\be_\ba_\bp_\bS_\bi_\bz_\be_\b_\n+size_t heapSize_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bC_\bl_\bo_\bs_\bu_\br_\be_\b_\n+bool noClosure_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bC_\bo_\bp_\by\n+bool noCopy() const\n+returns true if no copies are made for UGGrid elements\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bC_\bl_\bo_\bs_\bu_\br_\be\n+bool noClosure() const\n+returns true if no closure should be used for UGGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n+static double refineWeight()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n+static int refineStepsForHalf()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection<\n+GG, II > &intersection) const\n+return invalid value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const typename Grid::template Codim<\n+dimension >::Entity &vertex)\n+return parameter for vertex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const std::string &filename, MPICommunicatorType\n+comm=MPIHelper::getCommunicator())\n+constructor taking filename\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+MPI communicator type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters(const Entity &) const\n+return number of parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Dune::Intersection< GG, II > &intersection) const\n+will return boundary segment index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n+UGGrid< dim > Grid\n+grid type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n+bool wasInserted(const Dune::Intersection< GG, II > &intersection) const\n+please doc me\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n+getCommunicator())\n+constructor taking istream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters() const\n+return number of parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+UGGrid does not support boundary parameters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const typename Grid::template Codim< 0 >::\n+Entity &element)\n+return parameter for codim 0 entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n+Grid * grid()\n+return grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfug.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n+static const type & defaultValue()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd\n+Front-end for the grid manager of the finite element toolbox UG3.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn uggrid.hh:207\n+_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00839.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00839.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dim.cc File Reference\n+dune-grid: dgf2dgf.cc File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,75 @@\n \n \n \n \n \n \n \n
    \n \n-
    dim.cc File Reference
    \n+Functions
    \n+
    dgf2dgf.cc File Reference
    \n \n
    \n+\n+

    a small program converting a DGF file into a DGF file \n+More...

    \n
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/dim.hh>
    \n+#include <iostream>
    \n+#include <dune/grid/io/file/dgfparser/dgfwriter.hh>
    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n-\n-\n-\n+\n+\n+\n

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     

    \n+Functions

    int main (int argc, char *argv[])
     
    \n+

    Detailed Description

    \n+

    a small program converting a DGF file into a DGF file

    \n+
    Author
    Matrin Nolte
    \n+

    dgf2dgf is a small example program for the DGFWriter. It reads a DGF file into any grid, optionally refining the grid globally. The leaf grid is then written back as a DGF file.

    \n+

    The program's usage is as follows:

    ./dgf2dgf <dgffile> [refinement level]
    \n+

    While the program may seem completely useless, it has the following usages:

      \n+
    • Convert an interval block into a simplex or cube grid (depending on the grid implementation used).
    • \n+
    • Resolve the simplex generator block into a vertex and a simplex block, so that it can be used without triangle or tetgen.
    • \n+
    • Construct a refined macro grid, which is very useful when setting up parallel computations with dune-ALUGrid.
    • \n+
    \n+

    The source code of this program also demonstrates the easy use of the DGF parser and the DGFWriter.

    \n+

    Function Documentation

    \n+\n+

    ◆ main()

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+
    int main (int argc,
    char * argv[] 
    )
    \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": "@@ -3,20 +3,42 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dim.cc File Reference\n+ * _\bu_\bt_\bi_\bl_\bs\n+_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+dgf2dgf.cc File Reference\n+a small program converting a DGF file into a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bd_\bi_\bm_\b._\bh_\bh>\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0 Include standard header files.\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+int\u00a0 _\bm_\ba_\bi_\bn (int argc, char *argv[])\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+a small program converting a DGF file into a DGF file\n+ Author\n+ Matrin Nolte\n+dgf2dgf is a small example program for the DGFWriter. It reads a DGF file into\n+any grid, optionally refining the grid globally. The leaf grid is then written\n+back as a DGF file.\n+The program's usage is as follows:\n+./dgf2dgf [refinement level]\n+While the program may seem completely useless, it has the following usages:\n+ * Convert an interval block into a simplex or cube grid (depending on the\n+ grid implementation used).\n+ * Resolve the simplex generator block into a vertex and a simplex block, so\n+ that it can be used without triangle or tetgen.\n+ * Construct a refined macro grid, which is very useful when setting up\n+ parallel computations with dune-ALUGrid.\n+The source code of this program also demonstrates the easy use of the DGF\n+parser and the DGFWriter.\n+*\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bai\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n+int main ( int\u00a0 a\bar\brg\bgc\bc,\n+ char *\u00a0 a\bar\brg\bgv\bv[]\u00a0\n+ )\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00842.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00842.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: interval.hh File Reference\n+dune-grid: gmsh2dgf.cc File Reference\n \n \n \n \n \n \n \n@@ -65,52 +65,71 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    interval.hh File Reference
    \n+
    gmsh2dgf.cc File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <vector>
    \n-#include <array>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    struct  Dune::dgf::IntervalBlock
     
    struct  Dune::dgf::IntervalBlock::Interval
     
    \n-\n-\n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n+\n+

    a small program converting a gmsh file into a DGF file \n+More...

    \n+
    #include <config.h>
    \n+#include <iostream>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/grid/io/file/gmshreader.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfwriter.hh>
    \n+
    \n \n-\n-\n+\n+\n

    \n Functions

    std::ostream & Dune::dgf::operator<< (std::ostream &out, const IntervalBlock::Interval &interval)
     
    int main (int argc, char *argv[])
     
    \n+

    Detailed Description

    \n+

    a small program converting a gmsh file into a DGF file

    \n+
    Author
    Matrin Nolte
    \n+

    gmsh2dgf is a small example program for the DGFWriter. It reads a gmsh file into any grid (selected by gridtype.hh) and writes it back as a DGF file.

    \n+

    The program's usage is as follows:

    ./gmsh2dgf <gmshfile>
    \n+

    Function Documentation

    \n+\n+

    ◆ main()

    \n+\n+
    \n+
    \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+
    int main (int argc,
    char * argv[] 
    )
    \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": "@@ -3,32 +3,34 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\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-interval.hh File Reference\n+ * _\bu_\bt_\bi_\bl_\bs\n+_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+gmsh2dgf.cc File Reference\n+a small program converting a gmsh file into a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\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_\bg_\bf_\b:_\b:_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0 Include standard header files.\n-\u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:\n- _\bI_\bn_\bt_\be_\br_\bv_\ba_\bl &interval)\n+int\u00a0 _\bm_\ba_\bi_\bn (int argc, char *argv[])\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+a small program converting a gmsh file into a DGF file\n+ Author\n+ Matrin Nolte\n+gmsh2dgf is a small example program for the DGFWriter. It reads a gmsh file\n+into any grid (selected by _\bg_\br_\bi_\bd_\bt_\by_\bp_\be_\b._\bh_\bh) and writes it back as a DGF file.\n+The program's usage is as follows:\n+./gmsh2dgf \n+*\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bai\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n+int main ( int\u00a0 a\bar\brg\bgc\bc,\n+ char *\u00a0 a\bar\brg\bgv\bv[]\u00a0\n+ )\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00845.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00845.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: polygon.hh File Reference\n+dune-grid: dgfwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,59 @@\n \n \n \n \n \n \n \n
    \n \n-
    polygon.hh File Reference
    \n+
    dgfwriter.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n+\n+

    write a GridView to a DGF file \n+More...

    \n+
    #include <cassert>
    \n+#include <cstddef>
    \n+#include <algorithm>
    \n+#include <fstream>
    \n+#include <string>
    \n+#include <type_traits>
    \n+#include <utility>
    \n #include <vector>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+#include <dune/common/rangeutilities.hh>
    \n+#include <dune/common/typeutilities.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include <dune/grid/common/rangegenerators.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::dgf::PolygonBlock
    class  Dune::DGFWriter< GV >
     write a GridView to a DGF file More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-
    \n+

    Detailed Description

    \n+

    write a GridView to a DGF file

    \n+
    Author
    Martin Nolte
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,26 +3,39 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-polygon.hh File Reference\n-#include \n+dgfwriter.hh File Reference\n+write a GridView to a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\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_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>\n+\u00a0 write a _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw to a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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+write a GridView to a DGF file\n+ Author\n+ Martin Nolte\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00845_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00845_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: polygon.hh Source File\n+dune-grid: dgfwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,95 +70,466 @@\n \n \n \n \n \n \n \n
    \n-
    polygon.hh
    \n+
    dgfwriter.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// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=2 sw=2 sts=2:
    \n-
    5#ifndef DUNE_POLYGON_HH
    \n-
    6#define DUNE_POLYGON_HH
    \n+
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=4 sw=2 sts=2:
    \n+
    5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH
    \n+
    6#define DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH
    \n
    7
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/typetraits.hh>
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17 namespace dgf
    \n-
    18 {
    \n-
    19
    \n-
    20 // PolygonBlock
    \n-
    21 // ------------
    \n+
    13#include <cassert>
    \n+
    14#include <cstddef>
    \n+
    15
    \n+
    16#include <algorithm>
    \n+
    17#include <fstream>
    \n+
    18#include <string>
    \n+
    19#include <type_traits>
    \n+
    20#include <utility>
    \n+
    21#include <vector>
    \n
    22
    \n-
    \n-\n-
    24 : public BasicBlock
    \n-
    25 {
    \n-
    \n-
    26 PolygonBlock ( std::istream &in, int numVtx, int vtxOfs )
    \n-
    27 : BasicBlock( in, "Polygon" ), vtxBegin_( vtxOfs ), vtxEnd_( vtxOfs + numVtx )
    \n-
    28 {}
    \n-
    \n-
    29
    \n-
    \n-
    30 int get ( std::vector< std::vector< int > > &polygons )
    \n-
    31 {
    \n-
    32 reset();
    \n-
    33 std::vector< int > polygon;
    \n-
    34 while( getnextline() )
    \n-
    35 {
    \n-
    36 polygon.clear();
    \n-
    37 for( int vtxIdx; getnextentry( vtxIdx ); )
    \n-
    38 {
    \n-
    39 if( (vtxBegin_ > vtxIdx) || (vtxIdx >= vtxEnd_) )
    \n-
    40 DUNE_THROW( DGFException, "Error in " << *this << ": Invalid vertex index (" << vtxIdx << " not int [" << vtxBegin_ << ", " << vtxEnd_ << "[)" );
    \n-
    41 polygon.push_back( vtxIdx - vtxBegin_ );
    \n-
    42 }
    \n-
    43
    \n-
    44 polygons.push_back( polygon );
    \n-
    45 }
    \n-
    46 return polygons.size();
    \n-
    47 }
    \n-
    \n+
    23#include <dune/common/rangeutilities.hh>
    \n+
    24#include <dune/common/typeutilities.hh>
    \n+
    25
    \n+
    26#include <dune/geometry/referenceelements.hh>
    \n+
    27#include <dune/geometry/type.hh>
    \n+
    28
    \n+\n+\n+
    31
    \n+
    32namespace Dune
    \n+
    33{
    \n+
    34
    \n+
    44 template< class GV >
    \n+
    \n+\n+
    46 {
    \n+
    47 typedef DGFWriter< GV > This;
    \n
    48
    \n-
    49 protected:
    \n-\n-
    51 };
    \n-
    \n-
    52
    \n-
    53 } // namespace dgf
    \n-
    54} // end namespace Dune
    \n-
    55
    \n-
    56#endif // #ifndef DUNE_POLYGON_HH
    \n-\n+
    49 public:
    \n+
    51 typedef GV GridView;
    \n+
    53 typedef typename GridView::Grid Grid;
    \n+
    54
    \n+
    56 static const int dimGrid = GridView::dimension;
    \n+
    57
    \n+
    58 private:
    \n+
    59 typedef typename GridView::IndexSet IndexSet;
    \n+
    60 typedef typename GridView::template Codim< 0 >::Entity Element;
    \n+
    61 typedef typename GridView::Intersection Intersection;
    \n+
    62
    \n+
    63 typedef typename Element::EntitySeed ElementSeed;
    \n+
    64
    \n+
    65 typedef typename IndexSet::IndexType Index;
    \n+
    66
    \n+
    67 public:
    \n+
    \n+
    72 DGFWriter ( const GridView &gridView )
    \n+
    73 : gridView_( gridView )
    \n+
    74 {}
    \n+
    \n+
    75
    \n+
    85 template< class BoundaryData >
    \n+
    86 void write ( std::ostream &gridout, const std::vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams = std::stringstream() ) const;
    \n+
    87
    \n+
    96 template< class BoundaryData >
    \n+
    97 void write ( std::ostream &gridout, BoundaryData &&boundaryData, const std::stringstream &addParams = std::stringstream() ) const;
    \n+
    98
    \n+
    \n+
    107 void write ( std::ostream &gridout, const std::vector< Index > &newElemOrder, const std::stringstream &addParams = std::stringstream() ) const
    \n+
    108 {
    \n+
    109 write( gridout, newElemOrder, [] ( const Intersection &i ) -> int { return boundaryId( i ); }, addParams );
    \n+
    110 }
    \n+
    \n+
    111
    \n+
    \n+
    119 void write ( std::ostream &gridout, const std::stringstream &addParams = std::stringstream() ) const
    \n+
    120 {
    \n+
    121 write( gridout, [] ( const Intersection &i ) -> int { return boundaryId( i ); }, addParams );
    \n+
    122 }
    \n+
    \n+
    123
    \n+
    130 template< class... Args >
    \n+
    \n+
    131 auto write ( const std::string &fileName, Args &&... args ) const
    \n+
    132 -> std::void_t< decltype( this->write( std::declval< std::ostream & >(), std::declval< Args >()... ) ) >
    \n+
    133 {
    \n+
    134 std::ofstream gridout( fileName );
    \n+
    135 if( gridout )
    \n+
    136 write( gridout, std::forward< Args >( args )... );
    \n+
    137 else
    \n+
    138 std::cerr << "Couldn't open file `"<< fileName << "'!"<< std::endl;
    \n+
    139 }
    \n+
    \n+
    140
    \n+
    141 protected:
    \n+
    142 auto elementsSeeds ( const std::vector< Index > &newElemOrder ) const
    \n+
    143 -> std::vector< ElementSeed >;
    \n+
    144
    \n+
    145 void writeHeader ( std::ostream &gridout ) const;
    \n+
    146 void writeFooter ( std::ostream &gridout ) const;
    \n+
    147
    \n+
    148 auto writeVertices ( std::ostream &gridout ) const
    \n+
    149 -> std::vector< Index >;
    \n+
    150
    \n+
    151 void writeElement ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Element &element, const GeometryType &elementType ) const;
    \n+
    152
    \n+
    153 void writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const;
    \n+
    154 void writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;
    \n+
    155
    \n+
    156 void writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const;
    \n+
    157 void writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;
    \n+
    158
    \n+
    159 template< class... Args >
    \n+
    160 void writeElements ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Args &... args ) const;
    \n+
    161
    \n+
    162 private:
    \n+
    163 template< class I >
    \n+
    164 static auto boundaryId ( const I &i, PriorityTag< 1 > )
    \n+
    165 -> std::enable_if_t< std::is_convertible< std::decay_t< decltype( i.impl().boundaryId() ) >, int >::value, int >
    \n+
    166 {
    \n+
    167 return i.impl().boundaryId();
    \n+
    168 }
    \n+
    169
    \n+
    170 template< class I >
    \n+
    171 static int boundaryId ( const I &i, PriorityTag< 0 > )
    \n+
    172 {
    \n+
    173 return 1;
    \n+
    174 }
    \n+
    175
    \n+
    176 protected:
    \n+
    177 static int boundaryId ( const Intersection &i ) { return boundaryId( i, PriorityTag< 42 >() ); }
    \n+
    178
    \n+
    179 private:
    \n+
    180 static int boundaryId ( const Intersection &, int bndId ) { return bndId; }
    \n+
    181 static int boundaryId ( const Intersection &i, const std::string & ) { return boundaryId( i ); }
    \n+
    182 static int boundaryId ( const Intersection &i, const std::pair< int, std::string > &data ) { return boundrayId( i, data.first ); }
    \n+
    183
    \n+
    184 static void appendBoundaryData ( std::ostream &gridout, int ) { gridout << std::endl; }
    \n+
    185 static void appendBoundaryData ( std::ostream &gridout, std::pair< int, std::string > &data ) { appendBoundaryData( gridout, data.second ); }
    \n+
    186 static void appendBoundaryData ( std::ostream &gridout, const std::string &s ) { gridout << " : " << s << std::endl; }
    \n+
    187
    \n+
    188 protected:
    \n+
    189 template< class BoundaryData >
    \n+
    190 void writeBoundaries ( std::ostream &gridout, const std::vector< Index > &dgfIndices, BoundaryData &&boundaryData ) const;
    \n+
    191
    \n+
    \n+
    192 void writeBoundaries ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const
    \n+
    193 {
    \n+
    194 writeBoundaries( gridout, dgfIndices, [] ( const Intersection &i ) -> int { return boundaryId( i ); } );
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    197 protected:
    \n+\n+
    199 };
    \n+
    \n+
    200
    \n+
    201
    \n+
    202 template< class GV >
    \n+
    \n+
    203 inline auto DGFWriter< GV >::elementsSeeds ( const std::vector< Index > &newElemOrder ) const
    \n+
    204 -> std::vector< ElementSeed >
    \n+
    205 {
    \n+
    206 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    207
    \n+
    208 const std::size_t orderSize = newElemOrder.size() ;
    \n+
    209 std::vector< ElementSeed > elementSeeds( orderSize );
    \n+
    210
    \n+
    211 for( const Element &element : elements( gridView_ ) )
    \n+
    212 {
    \n+
    213 assert( newElemOrder[ indexSet.index( element ) ] < orderSize );
    \n+
    214 elementSeeds[ newElemOrder[ indexSet.index( element ) ] ] = element.seed();
    \n+
    215 }
    \n+
    216
    \n+
    217 return elementSeeds;
    \n+
    218 }
    \n+
    \n+
    219
    \n+
    220
    \n+
    221 template< class GV >
    \n+
    \n+
    222 inline void DGFWriter< GV >::writeHeader ( std::ostream &gridout ) const
    \n+
    223 {
    \n+
    224 // set the stream to full double precision
    \n+
    225 gridout.setf( std::ios_base::scientific, std::ios_base::floatfield );
    \n+
    226 gridout.precision( 16 );
    \n+
    227
    \n+
    228 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    229
    \n+
    230 // write DGF header
    \n+
    231 gridout << "DGF" << std::endl;
    \n+
    232 gridout << "%" << " Elements = " << indexSet.size( 0 ) << " | Vertices = " << indexSet.size( dimGrid ) << std::endl;
    \n+
    233 }
    \n+
    \n+
    234
    \n+
    235
    \n+
    236 template< class GV >
    \n+
    \n+
    237 inline void DGFWriter< GV >::writeFooter ( std::ostream &gridout ) const
    \n+
    238 {
    \n+
    239 gridout << std::endl << "#" << std::endl;
    \n+
    240 }
    \n+
    \n+
    241
    \n+
    242
    \n+
    243 template< class GV >
    \n+
    \n+
    244 inline auto DGFWriter< GV >::writeVertices ( std::ostream &gridout ) const
    \n+
    245 -> std::vector< Index >
    \n+
    246 {
    \n+
    247 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    248
    \n+
    249 const Index vxSize = indexSet.size( dimGrid );
    \n+
    250 std::vector< Index > dgfIndices( vxSize, vxSize );
    \n+
    251
    \n+
    252 // write all vertices into the "vertex" block
    \n+
    253 gridout << std::endl << "VERTEX" << std::endl;
    \n+
    254 Index vertexCount = 0;
    \n+
    255 for( const Element &element : elements( gridView_ ) )
    \n+
    256 {
    \n+
    257 for( auto i : range( element.subEntities( dimGrid ) ) )
    \n+
    258 {
    \n+
    259 const Index vxIndex = indexSet.subIndex( element, i, dimGrid );
    \n+
    260 assert( vxIndex < vxSize );
    \n+
    261 if( dgfIndices[ vxIndex ] == vxSize )
    \n+
    262 {
    \n+
    263 dgfIndices[ vxIndex ] = vertexCount++;
    \n+
    264 gridout << element.geometry().corner( i ) << std::endl;
    \n+
    265 }
    \n+
    266 }
    \n+
    267 }
    \n+
    268 gridout << "#" << std::endl;
    \n+
    269
    \n+
    270 if( vertexCount != vxSize )
    \n+
    271 DUNE_THROW( GridError, "IndexSet reports wrong number of vertices." );
    \n+
    272 return dgfIndices;
    \n+
    273 }
    \n+
    \n+
    274
    \n+
    275
    \n+
    276 template< class GV >
    \n+
    \n+
    277 inline void DGFWriter< GV >::writeElement ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Element &element, const GeometryType &elementType ) const
    \n+
    278 {
    \n+
    279 // if element's type is not the same as the type to write the return
    \n+
    280 if( element.type() != elementType )
    \n+
    281 return;
    \n+
    282
    \n+
    283 // write vertex numbers of the element
    \n+
    284 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    285 for( auto i : range( element.subEntities( Element::dimension ) ) )
    \n+
    286 gridout << (i > 0 ? " " : "") << dgfIndices[ indexSet.subIndex( element, i, dimGrid ) ];
    \n+
    287 gridout << std::endl;
    \n+
    288 }
    \n+
    \n+
    289
    \n+
    290
    \n+
    291 template< class GV >
    \n+
    \n+
    292 inline void DGFWriter< GV >::writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const
    \n+
    293 {
    \n+
    294 // write all simplices to the "simplex" block
    \n+
    295 gridout << std::endl << "SIMPLEX" << std::endl;
    \n+
    296
    \n+
    297 // write all simplex elements
    \n+
    298 for( const Element &element : elements( gridView_ ) )
    \n+
    299 writeElement( gridout, dgfIndices, element, GeometryTypes::simplex( dimGrid ) );
    \n+
    300
    \n+
    301 // write end marker for block
    \n+
    302 gridout << "#" << std::endl;
    \n+
    303 }
    \n+
    \n+
    304
    \n+
    305
    \n+
    306 template< class GV >
    \n+
    \n+
    307 inline void DGFWriter< GV >::writeSimplices ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const
    \n+
    308 {
    \n+
    309 // write all simplices to the "simplex" block
    \n+
    310 gridout << std::endl << "SIMPLEX" << std::endl;
    \n+
    311
    \n+
    312 // write all simplex elements
    \n+
    313 for( const ElementSeed &seed : elementSeeds )
    \n+
    314 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ), GeometryTypes::simplex( dimGrid ) );
    \n+
    315
    \n+
    316 // write end marker for block
    \n+
    317 gridout << "#" << std::endl;
    \n+
    318 }
    \n+
    \n+
    319
    \n+
    320
    \n+
    321 template< class GV >
    \n+
    \n+
    322 inline void DGFWriter< GV >::writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices ) const
    \n+
    323 {
    \n+
    324 // write all cubes to the "cube" block
    \n+
    325 gridout << std::endl << "CUBE" << std::endl;
    \n+
    326
    \n+
    327 // write all cube elements
    \n+
    328 for( const Element &element : elements( gridView_ ) )
    \n+
    329 writeElement( gridout, dgfIndices, element, GeometryTypes::cube( dimGrid ) );
    \n+
    330
    \n+
    331 // write end marker for block
    \n+
    332 gridout << "#" << std::endl;
    \n+
    333 }
    \n+
    \n+
    334
    \n+
    335
    \n+
    336 template< class GV >
    \n+
    \n+
    337 inline void DGFWriter< GV >::writeCubes ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const
    \n+
    338 {
    \n+
    339 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    340
    \n+
    341 // write all cubes to the "cube" block
    \n+
    342 gridout << std::endl << "CUBE" << std::endl;
    \n+
    343
    \n+
    344 // write all cube elements
    \n+
    345 for( const ElementSeed &seed : elementSeeds )
    \n+
    346 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ), GeometryTypes::cube( dimGrid ) );
    \n+
    347
    \n+
    348 // write end marker for block
    \n+
    349 gridout << "#" << std::endl;
    \n+
    350 }
    \n+
    \n+
    351
    \n+
    352
    \n+
    353 template< class GV >
    \n+
    354 template< class... Args >
    \n+
    \n+
    355 inline void DGFWriter< GV >::writeElements ( std::ostream &gridout, const std::vector< Index > &dgfIndices, const Args &... args ) const
    \n+
    356 {
    \n+
    357 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    358
    \n+
    359 if( (dimGrid > 1) && (indexSet.size( GeometryTypes::simplex( dimGrid ) ) > 0) )
    \n+
    360 writeSimplices( gridout, dgfIndices, args... );
    \n+
    361
    \n+
    362 if( indexSet.size( GeometryTypes::cube( dimGrid ) ) > 0 )
    \n+
    363 writeCubes( gridout, dgfIndices, args... );
    \n+
    364 }
    \n+
    \n+
    365
    \n+
    366
    \n+
    367 template< class GV >
    \n+
    368 template< class BoundaryData >
    \n+
    \n+
    369 inline void DGFWriter< GV >::writeBoundaries ( std::ostream &gridout, const std::vector< Index > &dgfIndices, BoundaryData &&boundaryData ) const
    \n+
    370 {
    \n+
    371 using std::max;
    \n+
    372
    \n+
    373 const IndexSet &indexSet = gridView_.indexSet();
    \n+
    374
    \n+
    375 // write all boundaries to the "boundarysegments" block
    \n+
    376 gridout << std::endl << "BOUNDARYSEGMENTS" << std::endl;
    \n+
    377
    \n+
    378 for( const Element &element : elements( gridView_ ) )
    \n+
    379 {
    \n+
    380 if( !element.hasBoundaryIntersections() )
    \n+
    381 continue;
    \n+
    382
    \n+
    383 const auto &refElement = ReferenceElements< typename Grid::ctype, dimGrid >::general( element.type() );
    \n+
    384 for( const Intersection &intersection : intersections( gridView_, element ) )
    \n+
    385 {
    \n+
    386 if( !intersection.boundary() )
    \n+
    387 continue;
    \n+
    388
    \n+
    389 const auto data = boundaryData( intersection );
    \n+
    390 const int bndId = max( boundaryId( intersection, data ), 1 );
    \n+
    391
    \n+
    392 const int faceNumber = intersection.indexInInside();
    \n+
    393 const unsigned int faceSize = refElement.size( faceNumber, 1, dimGrid );
    \n+
    394 gridout << bndId << " ";
    \n+
    395 for( auto i : range( faceSize ) )
    \n+
    396 {
    \n+
    397 const int j = refElement.subEntity( faceNumber, 1, i, dimGrid );
    \n+
    398 gridout << " " << dgfIndices[ indexSet.subIndex( element, j, dimGrid ) ];
    \n+
    399 }
    \n+
    400 appendBoundaryData( gridout, data );
    \n+
    401 }
    \n+
    402 }
    \n+
    403 gridout << "#" << std::endl;
    \n+
    404 }
    \n+
    \n+
    405
    \n+
    406
    \n+
    407 template< class GV >
    \n+
    408 template< class BoundaryData >
    \n+
    \n+
    409 inline void DGFWriter< GV >::write ( std::ostream &gridout, const std::vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams ) const
    \n+
    410 {
    \n+
    411 writeHeader( gridout );
    \n+
    412 auto dgfIndices = writeVertices( gridout );
    \n+
    413 writeElements( gridout, dgfIndices, elementSeeds( newElemOrder ) );
    \n+
    414 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >( boundaryData ) );
    \n+
    415 gridout << addParams.str();
    \n+
    416 writeFooter( gridout );
    \n+
    417 }
    \n+
    \n+
    418
    \n+
    419
    \n+
    420 template< class GV >
    \n+
    421 template< class BoundaryData >
    \n+
    \n+
    422 inline void DGFWriter< GV >::write ( std::ostream &gridout, BoundaryData &&boundaryData, const std::stringstream &addParams ) const
    \n+
    423 {
    \n+
    424 writeHeader( gridout );
    \n+
    425 auto dgfIndices = writeVertices( gridout );
    \n+
    426 writeElements( gridout, dgfIndices );
    \n+
    427 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >( boundaryData ) );
    \n+
    428 gridout << addParams.str();
    \n+
    429 writeFooter( gridout );
    \n+
    430 }
    \n+
    \n+
    431
    \n+
    432} // namespace Dune
    \n+
    433
    \n+
    434#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH
    \n+\n+
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n+
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n+
    Traits::Intersection Intersection
    type of the intersection
    Definition common/gridview.hh:89
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    void reset()
    Definition basic.hh:51
    \n-
    bool getnextline()
    Definition basic.cc:94
    \n-
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n-
    Definition polygon.hh:25
    \n-
    PolygonBlock(std::istream &in, int numVtx, int vtxOfs)
    Definition polygon.hh:26
    \n-
    int get(std::vector< std::vector< int > > &polygons)
    Definition polygon.hh:30
    \n-
    int vtxEnd_
    Definition polygon.hh:50
    \n-
    int vtxBegin_
    Definition polygon.hh:50
    \n-
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n+
    IndexTypeImp IndexType
    The type used for the indices.
    Definition indexidset.hh:92
    \n+
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n+
    write a GridView to a DGF file
    Definition dgfwriter.hh:46
    \n+
    static const int dimGrid
    dimension of the grid
    Definition dgfwriter.hh:56
    \n+
    DGFWriter(const GridView &gridView)
    constructor
    Definition dgfwriter.hh:72
    \n+
    void write(std::ostream &gridout, const std::stringstream &addParams=std::stringstream()) const
    write the GridView into a std::ostream
    Definition dgfwriter.hh:119
    \n+
    auto write(const std::string &fileName, Args &&... args) const -> std::void_t< decltype(this->write(std::declval< std::ostream & >(), std::declval< Args >()...)) >
    write the GridView to a file
    Definition dgfwriter.hh:131
    \n+
    void writeBoundaries(std::ostream &gridout, const std::vector< Index > &dgfIndices, BoundaryData &&boundaryData) const
    Definition dgfwriter.hh:369
    \n+
    static int boundaryId(const Intersection &i)
    Definition dgfwriter.hh:177
    \n+
    void write(std::ostream &gridout, const std::vector< Index > &newElemOrder, const std::stringstream &addParams=std::stringstream()) const
    write the GridView into a std::ostream
    Definition dgfwriter.hh:107
    \n+
    void write(std::ostream &gridout, const std::vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams=std::stringstream()) const
    write the GridView into a std::ostream
    Definition dgfwriter.hh:409
    \n+
    GridView gridView_
    Definition dgfwriter.hh:198
    \n+
    void writeElement(std::ostream &gridout, const std::vector< Index > &dgfIndices, const Element &element, const GeometryType &elementType) const
    Definition dgfwriter.hh:277
    \n+
    GV GridView
    type of grid view
    Definition dgfwriter.hh:51
    \n+
    void writeFooter(std::ostream &gridout) const
    Definition dgfwriter.hh:237
    \n+
    GridView::Grid Grid
    type of underlying hierarchical grid
    Definition dgfwriter.hh:53
    \n+
    auto writeVertices(std::ostream &gridout) const -> std::vector< Index >
    Definition dgfwriter.hh:244
    \n+
    void writeElements(std::ostream &gridout, const std::vector< Index > &dgfIndices, const Args &... args) const
    Definition dgfwriter.hh:355
    \n+
    void writeBoundaries(std::ostream &gridout, const std::vector< Index > &dgfIndices) const
    Definition dgfwriter.hh:192
    \n+
    void writeCubes(std::ostream &gridout, const std::vector< Index > &dgfIndices) const
    Definition dgfwriter.hh:322
    \n+
    void writeSimplices(std::ostream &gridout, const std::vector< Index > &dgfIndices) const
    Definition dgfwriter.hh:292
    \n+
    void writeHeader(std::ostream &gridout) const
    Definition dgfwriter.hh:222
    \n+
    auto elementsSeeds(const std::vector< Index > &newElemOrder) const -> std::vector< ElementSeed >
    Definition dgfwriter.hh:203
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,103 +3,557 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-polygon.hh\n+dgfwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=2 sw=2 sts=2:\n-5#ifndef DUNE_POLYGON_HH\n-6#define DUNE_POLYGON_HH\n+3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+4// vi: set et ts=4 sw=2 sts=2:\n+5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH\n+6#define DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17 namespace dgf\n-18 {\n-19\n-20 // PolygonBlock\n-21 // ------------\n+13#include \n+14#include \n+15\n+16#include \n+17#include \n+18#include \n+19#include \n+20#include \n+21#include \n 22\n-_\b2_\b3 struct _\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-25 {\n-_\b2_\b6 _\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std::istream &in, int numVtx, int vtxOfs )\n-27 : _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk( in, \"Polygon\" ), _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_( vtxOfs ), _\bv_\bt_\bx_\bE_\bn_\bd_\b_( vtxOfs + numVtx\n-)\n-28 {}\n-29\n-_\b3_\b0 int _\bg_\be_\bt ( std::vector< std::vector< int > > &polygons )\n-31 {\n-32 _\br_\be_\bs_\be_\bt();\n-33 std::vector< int > polygon;\n-34 while( _\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be() )\n-35 {\n-36 polygon.clear();\n-37 for( int vtxIdx; _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by( vtxIdx ); )\n-38 {\n-39 if( (_\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_ > vtxIdx) || (vtxIdx >= _\bv_\bt_\bx_\bE_\bn_\bd_\b_) )\n-40 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error in \" << *this << \": Invalid vertex index (\"\n-<< vtxIdx << \" not int [\" << _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_ << \", \" << _\bv_\bt_\bx_\bE_\bn_\bd_\b_ << \"[)\" );\n-41 polygon.push_back( vtxIdx - _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_ );\n-42 }\n-43\n-44 polygons.push_back( polygon );\n-45 }\n-46 return polygons.size();\n-47 }\n+23#include \n+24#include \n+25\n+26#include \n+27#include \n+28\n+29#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+31\n+32namespace _\bD_\bu_\bn_\be\n+33{\n+34\n+44 template< class GV >\n+_\b4_\b5 class _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br\n+46 {\n+47 typedef _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b> _\bT_\bh_\bi_\bs;\n 48\n-49 protected:\n-_\b5_\b0 int _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_, _\bv_\bt_\bx_\bE_\bn_\bd_\b_;\n-51 };\n-52\n-53 } // namespace dgf\n-54} // end namespace Dune\n-55\n-56#endif // #ifndef DUNE_POLYGON_HH\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+49 public:\n+_\b5_\b1 typedef GV _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n+_\b5_\b3 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n+54\n+_\b5_\b6 static const int _\bd_\bi_\bm_\bG_\br_\bi_\bd = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+57\n+58 private:\n+59 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt IndexSet;\n+60 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Element;\n+61 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn Intersection;\n+62\n+63 typedef typename Element::EntitySeed ElementSeed;\n+64\n+65 typedef typename _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be Index;\n+66\n+67 public:\n+_\b7_\b2 _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br ( const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView )\n+73 : _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_( gridView )\n+74 {}\n+75\n+85 template< class BoundaryData >\n+86 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::vector< Index >\n+&newElemOrder, BoundaryData &&boundaryData, const std::stringstream &addParams\n+= std::stringstream() ) const;\n+87\n+96 template< class BoundaryData >\n+97 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, BoundaryData &&boundaryData, const std::\n+stringstream &addParams = std::stringstream() ) const;\n+98\n+_\b1_\b0_\b7 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::vector< Index >\n+&newElemOrder, const std::stringstream &addParams = std::stringstream() ) const\n+108 {\n+109 _\bw_\br_\bi_\bt_\be( gridout, newElemOrder, [] ( const Intersection &i ) -> int { return\n+boundaryId( i ); }, addParams );\n+110 }\n+111\n+_\b1_\b1_\b9 void _\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::stringstream &addParams =\n+std::stringstream() ) const\n+120 {\n+121 _\bw_\br_\bi_\bt_\be( gridout, [] ( const Intersection &i ) -> int { return boundaryId( i\n+); }, addParams );\n+122 }\n+123\n+130 template< class... Args >\n+_\b1_\b3_\b1 auto _\bw_\br_\bi_\bt_\be ( const std::string &fileName, Args &&... args ) const\n+132 -> std::void_t< decltype( this->_\bw_\br_\bi_\bt_\be( std::declval< std::ostream & >(),\n+std::declval< Args >()... ) ) >\n+133 {\n+134 std::ofstream gridout( fileName );\n+135 if( gridout )\n+136 _\bw_\br_\bi_\bt_\be( gridout, std::forward< Args >( args )... );\n+137 else\n+138 std::cerr << \"Couldn't open file `\"<< fileName << \"'!\"<< std::endl;\n+139 }\n+140\n+141 protected:\n+142 auto _\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\bS_\be_\be_\bd_\bs ( const std::vector< Index > &newElemOrder ) const\n+143 -> std::vector< ElementSeed >;\n+144\n+145 void _\bw_\br_\bi_\bt_\be_\bH_\be_\ba_\bd_\be_\br ( std::ostream &gridout ) const;\n+146 void _\bw_\br_\bi_\bt_\be_\bF_\bo_\bo_\bt_\be_\br ( std::ostream &gridout ) const;\n+147\n+148 auto _\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs ( std::ostream &gridout ) const\n+149 -> std::vector< Index >;\n+150\n+151 void _\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, const Element &element, const GeometryType &elementType ) const;\n+152\n+153 void _\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices ) const;\n+154 void _\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;\n+155\n+156 void _\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices ) const;\n+157 void _\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, const std::vector< ElementSeed > &elementSeeds ) const;\n+158\n+159 template< class... Args >\n+160 void _\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, const Args &... args ) const;\n+161\n+162 private:\n+163 template< class I >\n+164 static auto boundaryId ( const I &i, PriorityTag< 1 > )\n+165 -> std::enable_if_t< std::is_convertible< std::decay_t< decltype( i.impl\n+().boundaryId() ) >, int >::value, int >\n+166 {\n+167 return i.impl().boundaryId();\n+168 }\n+169\n+170 template< class I >\n+171 static int boundaryId ( const I &i, PriorityTag< 0 > )\n+172 {\n+173 return 1;\n+174 }\n+175\n+176 protected:\n+_\b1_\b7_\b7 static int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const Intersection &i ) { return _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd( i,\n+PriorityTag< 42 >() ); }\n+178\n+179 private:\n+180 static int boundaryId ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &, int bndId ) { return bndId; }\n+181 static int boundaryId ( const Intersection &i, const std::string & )\n+{ return boundaryId( i ); }\n+182 static int boundaryId ( const Intersection &i, const std::pair< int, std::\n+string > &data ) { return boundrayId( i, data.first ); }\n+183\n+184 static void appendBoundaryData ( std::ostream &gridout, int ) { gridout <<\n+std::endl; }\n+185 static void appendBoundaryData ( std::ostream &gridout, std::pair< int,\n+std::string > &data ) { appendBoundaryData( gridout, data.second ); }\n+186 static void appendBoundaryData ( std::ostream &gridout, const std::string\n+&s ) { gridout << \" : \" << s << std::endl; }\n+187\n+188 protected:\n+189 template< class BoundaryData >\n+190 void _\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, BoundaryData &&boundaryData ) const;\n+191\n+_\b1_\b9_\b2 void _\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::ostream &gridout, const std::vector< Index >\n+&dgfIndices ) const\n+193 {\n+194 _\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs( gridout, dgfIndices, [] ( const Intersection &i ) -> int\n+{ return boundaryId( i ); } );\n+195 }\n+196\n+197 protected:\n+_\b1_\b9_\b8 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_;\n+199 };\n+200\n+201\n+202 template< class GV >\n+_\b2_\b0_\b3 inline auto _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\bS_\be_\be_\bd_\bs ( const std::vector< Index >\n+&newElemOrder ) const\n+204 -> std::vector< ElementSeed >\n+205 {\n+206 const IndexSet &indexSet = gridView_.indexSet();\n+207\n+208 const std::size_t orderSize = newElemOrder.size() ;\n+209 std::vector< ElementSeed > elementSeeds( orderSize );\n+210\n+211 for( const Element &element : elements( gridView_ ) )\n+212 {\n+213 assert( newElemOrder[ indexSet.index( element ) ] < orderSize );\n+214 elementSeeds[ newElemOrder[ indexSet.index( element ) ] ] = element.seed();\n+215 }\n+216\n+217 return elementSeeds;\n+218 }\n+219\n+220\n+221 template< class GV >\n+_\b2_\b2_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bH_\be_\ba_\bd_\be_\br ( std::ostream &gridout ) const\n+223 {\n+224 // set the stream to full double precision\n+225 gridout.setf( std::ios_base::scientific, std::ios_base::floatfield );\n+226 gridout.precision( 16 );\n+227\n+228 const IndexSet &indexSet = gridView_.indexSet();\n+229\n+230 // write DGF header\n+231 gridout << \"DGF\" << std::endl;\n+232 gridout << \"%\" << \" Elements = \" << indexSet.size( 0 ) << \" | Vertices = \"\n+<< indexSet.size( dimGrid ) << std::endl;\n+233 }\n+234\n+235\n+236 template< class GV >\n+_\b2_\b3_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bF_\bo_\bo_\bt_\be_\br ( std::ostream &gridout ) const\n+238 {\n+239 gridout << std::endl << \"#\" << std::endl;\n+240 }\n+241\n+242\n+243 template< class GV >\n+_\b2_\b4_\b4 inline auto _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs ( std::ostream &gridout ) const\n+245 -> std::vector< Index >\n+246 {\n+247 const IndexSet &indexSet = gridView_.indexSet();\n+248\n+249 const Index vxSize = indexSet.size( dimGrid );\n+250 std::vector< Index > dgfIndices( vxSize, vxSize );\n+251\n+252 // write all vertices into the \"vertex\" block\n+253 gridout << std::endl << \"VERTEX\" << std::endl;\n+254 Index vertexCount = 0;\n+255 for( const Element &element : elements( gridView_ ) )\n+256 {\n+257 for( auto i : range( element.subEntities( dimGrid ) ) )\n+258 {\n+259 const Index vxIndex = indexSet.subIndex( element, i, dimGrid );\n+260 assert( vxIndex < vxSize );\n+261 if( dgfIndices[ vxIndex ] == vxSize )\n+262 {\n+263 dgfIndices[ vxIndex ] = vertexCount++;\n+264 gridout << element.geometry().corner( i ) << std::endl;\n+265 }\n+266 }\n+267 }\n+268 gridout << \"#\" << std::endl;\n+269\n+270 if( vertexCount != vxSize )\n+271 DUNE_THROW( _\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"IndexSet reports wrong number of vertices.\" );\n+272 return dgfIndices;\n+273 }\n+274\n+275\n+276 template< class GV >\n+_\b2_\b7_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices, const Element &element, const GeometryType\n+&elementType ) const\n+278 {\n+279 // if element's type is not the same as the type to write the return\n+280 if( element.type() != elementType )\n+281 return;\n+282\n+283 // write vertex numbers of the element\n+284 const IndexSet &indexSet = gridView_.indexSet();\n+285 for( auto i : range( element.subEntities( Element::dimension ) ) )\n+286 gridout << (i > 0 ? \" \" : \"\") << dgfIndices[ indexSet.subIndex( element, i,\n+dimGrid ) ];\n+287 gridout << std::endl;\n+288 }\n+289\n+290\n+291 template< class GV >\n+_\b2_\b9_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices ) const\n+293 {\n+294 // write all simplices to the \"simplex\" block\n+295 gridout << std::endl << \"SIMPLEX\" << std::endl;\n+296\n+297 // write all simplex elements\n+298 for( const Element &element : elements( gridView_ ) )\n+299 writeElement( gridout, dgfIndices, element, GeometryTypes::simplex( dimGrid\n+) );\n+300\n+301 // write end marker for block\n+302 gridout << \"#\" << std::endl;\n+303 }\n+304\n+305\n+306 template< class GV >\n+_\b3_\b0_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices, const std::vector< ElementSeed >\n+&elementSeeds ) const\n+308 {\n+309 // write all simplices to the \"simplex\" block\n+310 gridout << std::endl << \"SIMPLEX\" << std::endl;\n+311\n+312 // write all simplex elements\n+313 for( const ElementSeed &seed : elementSeeds )\n+314 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ),\n+GeometryTypes::simplex( dimGrid ) );\n+315\n+316 // write end marker for block\n+317 gridout << \"#\" << std::endl;\n+318 }\n+319\n+320\n+321 template< class GV >\n+_\b3_\b2_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices ) const\n+323 {\n+324 // write all cubes to the \"cube\" block\n+325 gridout << std::endl << \"CUBE\" << std::endl;\n+326\n+327 // write all cube elements\n+328 for( const Element &element : elements( gridView_ ) )\n+329 writeElement( gridout, dgfIndices, element, GeometryTypes::cube( dimGrid )\n+);\n+330\n+331 // write end marker for block\n+332 gridout << \"#\" << std::endl;\n+333 }\n+334\n+335\n+336 template< class GV >\n+_\b3_\b3_\b7 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices, const std::vector< ElementSeed >\n+&elementSeeds ) const\n+338 {\n+339 const IndexSet &indexSet = gridView_.indexSet();\n+340\n+341 // write all cubes to the \"cube\" block\n+342 gridout << std::endl << \"CUBE\" << std::endl;\n+343\n+344 // write all cube elements\n+345 for( const ElementSeed &seed : elementSeeds )\n+346 writeElement( gridout, dgfIndices, gridView_.grid().entity( seed ),\n+GeometryTypes::cube( dimGrid ) );\n+347\n+348 // write end marker for block\n+349 gridout << \"#\" << std::endl;\n+350 }\n+351\n+352\n+353 template< class GV >\n+354 template< class... Args >\n+_\b3_\b5_\b5 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices, const Args &... args ) const\n+356 {\n+357 const IndexSet &indexSet = gridView_.indexSet();\n+358\n+359 if( (dimGrid > 1) && (indexSet.size( GeometryTypes::simplex( dimGrid ) ) >\n+0) )\n+360 writeSimplices( gridout, dgfIndices, args... );\n+361\n+362 if( indexSet.size( GeometryTypes::cube( dimGrid ) ) > 0 )\n+363 writeCubes( gridout, dgfIndices, args... );\n+364 }\n+365\n+366\n+367 template< class GV >\n+368 template< class BoundaryData >\n+_\b3_\b6_\b9 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::ostream &gridout, const\n+std::vector< Index > &dgfIndices, BoundaryData &&boundaryData ) const\n+370 {\n+371 using std::max;\n+372\n+373 const IndexSet &indexSet = gridView_.indexSet();\n+374\n+375 // write all boundaries to the \"boundarysegments\" block\n+376 gridout << std::endl << \"BOUNDARYSEGMENTS\" << std::endl;\n+377\n+378 for( const Element &element : elements( gridView_ ) )\n+379 {\n+380 if( !element.hasBoundaryIntersections() )\n+381 continue;\n+382\n+383 const auto &refElement = ReferenceElements< typename Grid::ctype, dimGrid\n+>::general( element.type() );\n+384 for( const Intersection &intersection : intersections( gridView_, element )\n+)\n+385 {\n+386 if( !intersection.boundary() )\n+387 continue;\n+388\n+389 const auto data = boundaryData( intersection );\n+390 const int bndId = max( boundaryId( intersection, data ), 1 );\n+391\n+392 const int faceNumber = intersection.indexInInside();\n+393 const unsigned int faceSize = refElement.size( faceNumber, 1, dimGrid );\n+394 gridout << bndId << \" \";\n+395 for( auto i : range( faceSize ) )\n+396 {\n+397 const int j = refElement.subEntity( faceNumber, 1, i, dimGrid );\n+398 gridout << \" \" << dgfIndices[ indexSet.subIndex( element, j, dimGrid ) ];\n+399 }\n+400 appendBoundaryData( gridout, data );\n+401 }\n+402 }\n+403 gridout << \"#\" << std::endl;\n+404 }\n+405\n+406\n+407 template< class GV >\n+408 template< class BoundaryData >\n+_\b4_\b0_\b9 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be ( std::ostream &gridout, const std::\n+vector< Index > &newElemOrder, BoundaryData &&boundaryData, const std::\n+stringstream &addParams ) const\n+410 {\n+411 writeHeader( gridout );\n+412 auto dgfIndices = writeVertices( gridout );\n+413 writeElements( gridout, dgfIndices, elementSeeds( newElemOrder ) );\n+414 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >\n+( boundaryData ) );\n+415 gridout << addParams.str();\n+416 writeFooter( gridout );\n+417 }\n+418\n+419\n+420 template< class GV >\n+421 template< class BoundaryData >\n+_\b4_\b2_\b2 inline void _\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be ( std::ostream &gridout, BoundaryData\n+&&boundaryData, const std::stringstream &addParams ) const\n+423 {\n+424 writeHeader( gridout );\n+425 auto dgfIndices = writeVertices( gridout );\n+426 writeElements( gridout, dgfIndices );\n+427 writeBoundaries( gridout, dgfIndices, std::forward< BoundaryData >\n+( boundaryData ) );\n+428 gridout << addParams.str();\n+429 writeFooter( gridout );\n+430 }\n+431\n+432} // namespace Dune\n+433\n+434#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFWRITER_HH\n+_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd\n+Traits::Grid Grid\n+type of the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Traits::IndexSet IndexSet\n+type of the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Traits::Intersection Intersection\n+type of the intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:89\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be\n-bool getnextline()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by\n-bool getnextentry(ENTRY &entry)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-PolygonBlock(std::istream &in, int numVtx, int vtxOfs)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n-int get(std::vector< std::vector< int > > &polygons)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bv_\bt_\bx_\bE_\bn_\bd_\b_\n-int vtxEnd_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_\n-int vtxBegin_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n-exception class for IO errors in the DGF parser\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+Base class for exceptions in Dune grid modules.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+IndexTypeImp IndexType\n+The type used for the indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A struct that collects all associated types of one implementation from the\n+Traits class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br\n+write a GridView to a DGF file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bd_\bi_\bm_\bG_\br_\bi_\bd\n+static const int dimGrid\n+dimension of the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br\n+DGFWriter(const GridView &gridView)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(std::ostream &gridout, const std::stringstream &addParams=std::\n+stringstream()) const\n+write the GridView into a std::ostream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+auto write(const std::string &fileName, Args &&... args) const -> std::void_t<\n+decltype(this->write(std::declval< std::ostream & >(), std::declval< Args >\n+()...)) >\n+write the GridView to a file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs\n+void writeBoundaries(std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, BoundaryData &&boundaryData) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:369\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+static int boundaryId(const Intersection &i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(std::ostream &gridout, const std::vector< Index > &newElemOrder,\n+const std::stringstream &addParams=std::stringstream()) const\n+write the GridView into a std::ostream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(std::ostream &gridout, const std::vector< Index > &newElemOrder,\n+BoundaryData &&boundaryData, const std::stringstream &addParams=std::\n+stringstream()) const\n+write the GridView into a std::ostream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:409\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_\n+GridView gridView_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+void writeElement(std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, const Element &element, const GeometryType &elementType) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:277\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+GV GridView\n+type of grid view\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bF_\bo_\bo_\bt_\be_\br\n+void writeFooter(std::ostream &gridout) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:237\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n+GridView::Grid Grid\n+type of underlying hierarchical grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+auto writeVertices(std::ostream &gridout) const -> std::vector< Index >\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:244\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+void writeElements(std::ostream &gridout, const std::vector< Index >\n+&dgfIndices, const Args &... args) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:355\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs\n+void writeBoundaries(std::ostream &gridout, const std::vector< Index >\n+&dgfIndices) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:192\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bu_\bb_\be_\bs\n+void writeCubes(std::ostream &gridout, const std::vector< Index > &dgfIndices)\n+const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:322\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bS_\bi_\bm_\bp_\bl_\bi_\bc_\be_\bs\n+void writeSimplices(std::ostream &gridout, const std::vector< Index >\n+&dgfIndices) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bH_\be_\ba_\bd_\be_\br\n+void writeHeader(std::ostream &gridout) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:222\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\bS_\be_\be_\bd_\bs\n+auto elementsSeeds(const std::vector< Index > &newElemOrder) const -> std::\n+vector< ElementSeed >\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfwriter.hh:203\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00848.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00848.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dim.hh File Reference\n+dune-grid: entitykey.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    dim.hh File Reference
    \n+
    entitykey.hh File Reference
    \n
    \n
    \n
    #include <iostream>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+#include <vector>
    \n+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n+#include "entitykey_inline.hh"
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::dgf::DimBlock
    struct  Dune::DGFEntityKey< A >
     
    struct  Dune::ElementFaceUtil
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,24 +3,25 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dim.hh File Reference\n+entitykey.hh File Reference\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include \"_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b__\bi_\bn_\bl_\bi_\bn_\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:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00848_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00848_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dim.hh Source File\n+dune-grid: entitykey.hh Source File\n \n \n \n \n \n \n \n@@ -70,79 +70,221 @@\n \n \n \n \n \n \n \n
    \n-
    dim.hh
    \n+
    entitykey.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_DIMBLOCK_HH
    \n-
    6#define DUNE_DGF_DIMBLOCK_HH
    \n+
    5#ifndef DUNE_DGFEnTITYKEY_HH
    \n+
    6#define DUNE_DGFEnTITYKEY_HH
    \n
    7
    \n
    8#include <iostream>
    \n-
    9
    \n-\n-
    11
    \n+
    9#include <vector>
    \n+
    10
    \n+\n
    12
    \n
    13namespace Dune
    \n
    14{
    \n
    15
    \n-
    16 namespace dgf
    \n-
    17 {
    \n-
    \n-
    18 class DimBlock : public BasicBlock {
    \n-
    19 int _dimworld; // dimension of world
    \n-
    20 int _dim; // dimension of grid
    \n-
    21 public:
    \n-
    22 const static char* ID;
    \n-
    23 // initialize block and get dimension of world
    \n-
    24 DimBlock ( std :: istream &in );
    \n-
    25 // get dimension of world found in block
    \n-
    \n-
    26 int dim() {
    \n-
    27 return _dim;
    \n-
    28 }
    \n-
    \n+
    16 // DGFEntityKey
    \n+
    17 // ------------
    \n+
    18
    \n+
    19 template< class A >
    \n+
    \n+\n+
    21 {
    \n+
    22 DGFEntityKey ( const std :: vector< A > &key, bool setOrigKey = true );
    \n+
    23 DGFEntityKey ( const std::vector< A > &key,
    \n+
    24 int N, int offset, bool setOrigKey = true );
    \n+\n+
    26
    \n+\n+
    28
    \n
    \n-
    29 int dimworld() {
    \n-
    30 return _dimworld;
    \n-
    31 }
    \n-
    \n-
    32 // some information
    \n-
    \n-
    33 bool ok() {
    \n-
    34 return true;
    \n-
    35 }
    \n-
    \n-
    36 };
    \n-
    \n-
    37
    \n-
    38 } // end namespace dgf
    \n-
    39
    \n-
    40} // end namespace Dune
    \n-
    41
    \n-
    42#endif
    \n-\n+
    29 inline const A &operator[] ( int i ) const;
    \n+
    \n+
    30 inline bool operator < ( const DGFEntityKey< A > &k ) const;
    \n+
    31
    \n+
    32 void orientation ( int base, std :: vector< std :: vector< double > > &vtx );
    \n+
    33 void print( std :: ostream &out = std :: cerr ) const;
    \n+
    34
    \n+
    \n+
    35 inline bool origKeySet () const;
    \n+
    \n+
    36 inline const A &origKey ( int i ) const;
    \n+
    \n+
    37 inline int size () const;
    \n+
    38
    \n+
    39 private:
    \n+
    40 std :: vector< A > key_, origKey_;
    \n+
    41 bool origKeySet_;
    \n+
    42 };
    \n+
    43
    \n+
    44
    \n+
    45 template< class A >
    \n+
    \n+
    46 inline const A &DGFEntityKey< A > :: operator[] ( int i ) const
    \n+
    47 {
    \n+
    48 return key_[ i ];
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    51
    \n+
    52 template< class A >
    \n+
    \n+\n+
    54 {
    \n+
    55 // assert(k.key_.size()==key_.size());
    \n+
    56 return key_ < k.key_;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    59
    \n+
    60 template< class A >
    \n+
    \n+\n+
    62 {
    \n+
    63 return origKeySet_;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    66
    \n+
    67 template< class A >
    \n+
    \n+
    68 inline const A &DGFEntityKey< A > :: origKey ( int i ) const
    \n+
    69 {
    \n+
    70 return origKey_[ i ];
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73
    \n+
    74 template< class A >
    \n+
    \n+
    75 inline int DGFEntityKey< A > :: size () const
    \n+
    76 {
    \n+
    77 return key_.size();
    \n+
    78 }
    \n+
    \n+
    \n+
    79
    \n+
    80
    \n+
    81
    \n+
    82 // ElementFaceUtil
    \n+
    83 // ---------------
    \n+
    84
    \n+
    \n+\n+
    86 {
    \n+
    87 inline static int nofFaces ( int dim, const std::vector< unsigned int > &element );
    \n+
    88 inline static int faceSize ( int dim, bool simpl );
    \n+
    89
    \n+\n+
    91 generateFace ( int dim, const std::vector< unsigned int > &element, int f );
    \n+
    92
    \n+
    93 private:
    \n+
    94 template< int dim >
    \n+\n+
    96 generateCubeFace( const std::vector< unsigned int > &element, int f );
    \n+
    97
    \n+
    98 template< int dim >
    \n+\n+
    100 generateSimplexFace ( const std::vector< unsigned int > &element, int f );
    \n+
    101 };
    \n+
    \n+
    102
    \n+
    103
    \n+
    \n+
    104 inline int ElementFaceUtil::nofFaces ( int dim, const std::vector< unsigned int > &element )
    \n+
    105 {
    \n+
    106 switch( dim )
    \n+
    107 {
    \n+
    108 case 1 :
    \n+
    109 return 2;
    \n+
    110 case 2 :
    \n+
    111 switch( element.size() )
    \n+
    112 {
    \n+
    113 case 3 :
    \n+
    114 return 3;
    \n+
    115 case 4 :
    \n+
    116 return 4;
    \n+
    117 default :
    \n+
    118 return -1;
    \n+
    119 }
    \n+
    120 case 3 :
    \n+
    121 switch( element.size() )
    \n+
    122 {
    \n+
    123 case 4 :
    \n+
    124 return 4;
    \n+
    125 case 8 :
    \n+
    126 return 6;
    \n+
    127 default :
    \n+
    128 return -1;
    \n+
    129 }
    \n+
    130 default :
    \n+
    131 return -1;
    \n+
    132 }
    \n+
    133 }
    \n+
    \n+
    134
    \n+
    135
    \n+
    \n+
    136 inline int ElementFaceUtil::faceSize( int dim, bool simpl )
    \n+
    137 {
    \n+
    138 switch( dim )
    \n+
    139 {
    \n+
    140 case 1 :
    \n+
    141 return 1;
    \n+
    142 case 2 :
    \n+
    143 return 2;
    \n+
    144 case 3 :
    \n+
    145 return (simpl ? 3 : 4);
    \n+
    146 default :
    \n+
    147 return -1;
    \n+
    148 }
    \n+
    149 }
    \n+
    \n+
    150
    \n+
    151} //end namespace Dune
    \n+
    152
    \n+
    153// inlcude inline implementation
    \n+
    154#include "entitykey_inline.hh"
    \n+
    155#endif
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    Definition dim.hh:18
    \n-
    int dimworld()
    Definition dim.hh:29
    \n-
    static const char * ID
    Definition dim.hh:22
    \n-
    bool ok()
    Definition dim.hh:33
    \n-
    int dim()
    Definition dim.hh:26
    \n+
    Definition entitykey.hh:21
    \n+
    bool operator<(const DGFEntityKey< A > &k) const
    Definition entitykey.hh:53
    \n+
    DGFEntityKey< A > & operator=(const DGFEntityKey< A > &k)
    Definition entitykey_inline.hh:64
    \n+
    bool origKeySet() const
    Definition entitykey.hh:61
    \n+
    int size() const
    Definition entitykey.hh:75
    \n+
    void orientation(int base, std ::vector< std ::vector< double > > &vtx)
    Definition entitykey_inline.hh:78
    \n+
    const A & origKey(int i) const
    Definition entitykey.hh:68
    \n+
    DGFEntityKey(const std::vector< A > &key, int N, int offset, bool setOrigKey=true)
    \n+
    void print(std ::ostream &out=std ::cerr) const
    Definition entitykey_inline.hh:105
    \n+
    const A & operator[](int i) const
    Definition entitykey.hh:46
    \n+
    Definition entitykey.hh:86
    \n+
    static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector< unsigned int > &element, int f)
    Definition entitykey_inline.hh:145
    \n+
    static int faceSize(int dim, bool simpl)
    Definition entitykey.hh:136
    \n+
    static int nofFaces(int dim, const std::vector< unsigned int > &element)
    Definition entitykey.hh:104
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,75 +3,217 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-dim.hh\n+entitykey.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_DIMBLOCK_HH\n-6#define DUNE_DGF_DIMBLOCK_HH\n+5#ifndef DUNE_DGFEnTITYKEY_HH\n+6#define DUNE_DGFEnTITYKEY_HH\n 7\n 8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-11\n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n 15\n-16 namespace dgf\n-17 {\n-_\b1_\b8 class _\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk {\n-19 int _dimworld; // dimension of world\n-20 int _dim; // dimension of grid\n-21 public:\n-_\b2_\b2 const static char* _\bI_\bD;\n-23 // initialize block and get dimension of world\n-24 _\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk ( std :: istream &in );\n-25 // get dimension of world found in block\n-_\b2_\b6 int _\bd_\bi_\bm() {\n-27 return _dim;\n-28 }\n-_\b2_\b9 int _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd() {\n-30 return _dimworld;\n-31 }\n-32 // some information\n-_\b3_\b3 bool _\bo_\bk() {\n-34 return true;\n-35 }\n-36 };\n-37\n-38 } // end namespace dgf\n-39\n-40} // end namespace Dune\n-41\n-42#endif\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+16 // DGFEntityKey\n+17 // ------------\n+18\n+19 template< class A >\n+_\b2_\b0 struct _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n+21 {\n+22 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std :: vector< A > &key, bool setOrigKey = true );\n+_\b2_\b3 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std::vector< A > &key,\n+24 int N, int offset, bool setOrigKey = true );\n+25 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k );\n+26\n+27 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k );\n+28\n+_\b2_\b9 inline const A &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const;\n+_\b3_\b0 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b<_\b ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k ) const;\n+31\n+32 void _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( int base, std :: vector< std :: vector< double > > &vtx\n+);\n+33 void _\bp_\br_\bi_\bn_\bt( std :: ostream &out = std :: cerr ) const;\n+34\n+_\b3_\b5 inline bool _\bo_\br_\bi_\bg_\bK_\be_\by_\bS_\be_\bt () const;\n+_\b3_\b6 inline const A &_\bo_\br_\bi_\bg_\bK_\be_\by ( int i ) const;\n+_\b3_\b7 inline int _\bs_\bi_\bz_\be () const;\n+38\n+39 private:\n+40 std :: vector< A > key_, origKey_;\n+41 bool origKeySet_;\n+42 };\n+43\n+44\n+45 template< class A >\n+_\b4_\b6 inline const A &_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const\n+47 {\n+48 return key_[ i ];\n+49 }\n+50\n+51\n+52 template< class A >\n+_\b5_\b3 inline bool _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k )\n+const\n+54 {\n+55 // assert(k.key_.size()==key_.size());\n+56 return key_ < k.key_;\n+57 }\n+58\n+59\n+60 template< class A >\n+_\b6_\b1 inline bool _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\br_\bi_\bg_\bK_\be_\by_\bS_\be_\bt () const\n+62 {\n+63 return origKeySet_;\n+64 }\n+65\n+66\n+67 template< class A >\n+_\b6_\b8 inline const A &_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\br_\bi_\bg_\bK_\be_\by ( int i ) const\n+69 {\n+70 return origKey_[ i ];\n+71 }\n+72\n+73\n+74 template< class A >\n+_\b7_\b5 inline int _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bs_\bi_\bz_\be () const\n+76 {\n+77 return key_._\bs_\bi_\bz_\be();\n+78 }\n+79\n+80\n+81\n+82 // ElementFaceUtil\n+83 // ---------------\n+84\n+_\b8_\b5 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl\n+86 {\n+87 inline static int _\bn_\bo_\bf_\bF_\ba_\bc_\be_\bs ( int dim, const std::vector< unsigned int >\n+&element );\n+88 inline static int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be ( int dim, bool simpl );\n+89\n+90 static _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n+91 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be ( int dim, const std::vector< unsigned int > &element, int f );\n+92\n+93 private:\n+94 template< int dim >\n+95 static _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n+96 generateCubeFace( const std::vector< unsigned int > &element, int f );\n+97\n+98 template< int dim >\n+99 static _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n+100 generateSimplexFace ( const std::vector< unsigned int > &element, int f );\n+101 };\n+102\n+103\n+_\b1_\b0_\b4 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bn_\bo_\bf_\bF_\ba_\bc_\be_\bs ( int dim, const std::vector< unsigned\n+int > &element )\n+105 {\n+106 switch( dim )\n+107 {\n+108 case 1 :\n+109 return 2;\n+110 case 2 :\n+111 switch( element.size() )\n+112 {\n+113 case 3 :\n+114 return 3;\n+115 case 4 :\n+116 return 4;\n+117 default :\n+118 return -1;\n+119 }\n+120 case 3 :\n+121 switch( element.size() )\n+122 {\n+123 case 4 :\n+124 return 4;\n+125 case 8 :\n+126 return 6;\n+127 default :\n+128 return -1;\n+129 }\n+130 default :\n+131 return -1;\n+132 }\n+133 }\n+134\n+135\n+_\b1_\b3_\b6 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be( int dim, bool simpl )\n+137 {\n+138 switch( dim )\n+139 {\n+140 case 1 :\n+141 return 1;\n+142 case 2 :\n+143 return 2;\n+144 case 3 :\n+145 return (simpl ? 3 : 4);\n+146 default :\n+147 return -1;\n+148 }\n+149 }\n+150\n+151} //end namespace Dune\n+152\n+153// inlcude inline implementation\n+154#include \"_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b__\bi_\bn_\bl_\bi_\bn_\be_\b._\bh_\bh\"\n+155#endif\n+_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b__\bi_\bn_\bl_\bi_\bn_\be_\b._\bh_\bh\n+_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd\n-int dimworld()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bI_\bD\n-static const char * ID\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bm\n-int dim()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n+bool operator<(const DGFEntityKey< A > &k) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+DGFEntityKey< A > & operator=(const DGFEntityKey< A > &k)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\br_\bi_\bg_\bK_\be_\by_\bS_\be_\bt\n+bool origKeySet() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bs_\bi_\bz_\be\n+int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+void orientation(int base, std ::vector< std ::vector< double > > &vtx)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\br_\bi_\bg_\bK_\be_\by\n+const A & origKey(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n+DGFEntityKey(const std::vector< A > &key, int N, int offset, bool\n+setOrigKey=true)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std ::ostream &out=std ::cerr) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const A & operator[](int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be\n+static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector<\n+unsigned int > &element, int f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be\n+static int faceSize(int dim, bool simpl)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bn_\bo_\bf_\bF_\ba_\bc_\be_\bs\n+static int nofFaces(int dim, const std::vector< unsigned int > &element)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:104\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00851.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00851.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: general.hh File Reference\n+dune-grid: dgfug.cc File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,27 @@\n \n \n \n \n \n \n \n
    \n \n-
    general.hh File Reference
    \n+
    dgfug.cc File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <vector>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::dgf::GeneralBlock
     
    \n+
    #include <config.h>
    \n+#include <dune/geometry/utility/typefromvertexcount.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfug.hh>
    \n+
    \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,24 +3,19 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-general.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dgfug.cc File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bu_\bg_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00854.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00854.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridparameter.cc File Reference\n+dune-grid: macrogrid.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    gridparameter.cc File Reference
    \n+
    macrogrid.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/io/file/dgfparser/blocks/gridparameter.hh>
    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n+
    #include <iostream>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::MacroGrid
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,20 +3,22 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-gridparameter.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+macrogrid.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00857.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00857.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridparameter.hh File Reference\n+dune-grid: entitykey_inline.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    gridparameter.hh File Reference
    \n+
    entitykey_inline.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <string>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+
    #include <algorithm>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::dgf::GridParameterBlock
     Common Grid parameters. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,26 +3,19 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-gridparameter.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+entitykey_inline.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\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_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-\u00a0 Common _\bG_\br_\bi_\bd parameters. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00857_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00857_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridparameter.hh Source File\n+dune-grid: entitykey_inline.hh Source File\n \n \n \n \n \n \n \n@@ -70,134 +70,230 @@\n
    \n \n \n \n \n \n \n
    \n-
    gridparameter.hh
    \n+
    entitykey_inline.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_GRIDPARAMETERBLOCK_HH
    \n-
    6#define DUNE_DGF_GRIDPARAMETERBLOCK_HH
    \n+
    5#ifndef DUNE_ENTITYKEY_INLINE_HH
    \n+
    6#define DUNE_ENTITYKEY_INLINE_HH
    \n
    7
    \n-
    8#include <iostream>
    \n-
    9#include <string>
    \n-
    10
    \n-\n-
    12
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17 namespace dgf
    \n-
    18 {
    \n-
    \n-\n-
    34 : public BasicBlock
    \n-
    35 {
    \n-
    36 public:
    \n-
    37 typedef unsigned int Flags;
    \n-
    38
    \n-
    39 static const Flags foundName = 1 << 0;
    \n-
    40 static const Flags foundDumpFileName = 1 << 1;
    \n-
    41 static const Flags foundLongestEdge = 1 << 5;
    \n-
    42
    \n-
    43 protected:
    \n-
    44 Flags foundFlags_; // supportFlags, this block was created with
    \n-
    45 std::string name_; // name of the grid
    \n-
    46 std::string dumpFileName_; // name of the grid
    \n-
    47 bool markLongestEdge_; // Mark longest edge for AlbertaGrid
    \n+
    8#include <algorithm>
    \n+
    9#include <dune/geometry/referenceelements.hh>
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    15 // DGFEntityKey
    \n+
    16 // ------------
    \n+
    17
    \n+
    18 template< class A >
    \n+
    \n+
    19 inline DGFEntityKey< A > :: DGFEntityKey ( const std :: vector< A > &key, bool setOrigKey )
    \n+
    20 : key_( key.size() ),
    \n+
    21 origKey_( key.size() ),
    \n+
    \n+
    22 origKeySet_( setOrigKey )
    \n+
    23 {
    \n+
    24 for (size_t i=0; i<key_.size(); i++)
    \n+
    \n+
    25 {
    \n+
    26 key_[i]=key[i];
    \n+
    \n+
    27 origKey_[i]=key_[i];
    \n+
    28 }
    \n+
    29 std :: sort( key_.begin(), key_.end() );
    \n+
    30 }
    \n+
    31
    \n+
    \n+\n+
    \n+
    33 template< class A >
    \n+
    34 inline DGFEntityKey< A > :: DGFEntityKey ( const std :: vector< A > &key,
    \n+
    35 int N, int offset, bool setOrigKey )
    \n+
    36 : key_( N ),
    \n+
    37 origKey_( N ),
    \n+
    38 origKeySet_( setOrigKey )
    \n+
    39 {
    \n+
    40 for (size_t i=0; i<key_.size(); i++)
    \n+
    41 {
    \n+
    42 key_[i]=key[(i+offset)%key.size()];
    \n+
    43 origKey_[i]=key[(i+offset)%key.size()];
    \n+
    44 }
    \n+
    45 std :: sort( key_.begin(), key_.end() );
    \n+
    46 }
    \n+
    47
    \n
    48
    \n-
    49 private:
    \n-
    50 // copy not implemented
    \n-\n-
    52
    \n-
    53 public:
    \n-
    55 GridParameterBlock ( std::istream &in );
    \n-
    56
    \n-
    \n-
    58 const std::string &name ( const std::string &defaultValue ) const
    \n-
    59 {
    \n-
    60 if( (foundFlags_ & foundName) == 0 )
    \n-
    61 {
    \n-
    62 dwarn << "GridParameterBlock: Parameter 'name' not specified, "
    \n-
    63 << "defaulting to '" << defaultValue << "'." << std::endl;
    \n-
    64 return defaultValue;
    \n-
    65 }
    \n-
    66 else
    \n-
    67 return name_;
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 const std::string &dumpFileName ( ) const
    \n-
    71 {
    \n-
    72 if( (foundFlags_ & foundDumpFileName) != 0 )
    \n-
    73 {
    \n-
    74 dwarn << "GridParameterBlock: found Parameter 'dumpfilename', "
    \n-
    75 << "dumping file to `" << dumpFileName_ << "'" << std::endl;
    \n-
    76 }
    \n-
    77 return dumpFileName_;
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    \n-
    81 bool markLongestEdge () const
    \n-
    82 {
    \n-
    83 if( (foundFlags_ & foundLongestEdge) == 0 )
    \n-
    84 {
    \n-
    85 dwarn << "GridParameterBlock: Parameter 'refinementedge' not specified, "
    \n-
    86 << "defaulting to 'ARBITRARY'." << std::endl;
    \n-
    87 }
    \n-
    88 return markLongestEdge_;
    \n-
    89 }
    \n-
    \n-
    90
    \n-
    91 // some information
    \n-
    \n-
    92 bool ok()
    \n-
    93 {
    \n-
    94 return true;
    \n-
    95 }
    \n-
    \n-
    96 };
    \n-
    \n-
    97
    \n-
    98
    \n-
    99 } // end namespace dgf
    \n-
    100
    \n-
    101} // end namespace Dune
    \n+
    49 template< class A >
    \n+
    \n+\n+
    51 : key_( k.key_.size() ),
    \n+
    52 origKey_( k.key_.size() ),
    \n+
    53 origKeySet_( k. origKeySet_ )
    \n+
    54 {
    \n+
    55 for (size_t i=0; i<key_.size(); i++)
    \n+
    56 {
    \n+
    57 key_[i]=k.key_[i];
    \n+
    58 origKey_[i]=k.origKey_[i];
    \n+
    59 }
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    62
    \n+
    63 template< class A >
    \n+
    \n+\n+
    65 {
    \n+
    66 assert(key_.size()==k.key_.size());
    \n+
    67 for (size_t i=0; i<key_.size(); i++) {
    \n+
    68 key_[i]=k.key_[i];
    \n+
    69 origKey_[i]=k.origKey_[i];
    \n+
    70 }
    \n+
    71 origKeySet_ = k.origKeySet_;
    \n+
    72 return *this;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75
    \n+
    76 template< class A >
    \n+
    77 inline void DGFEntityKey< A >
    \n+
    \n+
    78 :: orientation ( int base, std::vector< std :: vector< double > > &vtx )
    \n+
    79 {
    \n+
    80 if (key_.size()==3) {
    \n+
    81 assert( (size_t) origKey_[0] < vtx.size() );
    \n+
    82 std::vector<double>& p0 = vtx[origKey_[0]];
    \n+
    83 assert( (size_t) origKey_[1] < vtx.size() );
    \n+
    84 std::vector<double>& p1 = vtx[origKey_[1]];
    \n+
    85 assert( (size_t) origKey_[2] < vtx.size() );
    \n+
    86 std::vector<double>& p2 = vtx[origKey_[2]];
    \n+
    87 assert( (size_t) base < vtx.size() );
    \n+
    88 std::vector<double>& q = vtx[base];
    \n+
    89 double n[3];
    \n+
    90 n[0] = (p1[1]-p0[1])*(p2[2]-p0[2])-(p2[1]-p0[1])*(p1[2]-p0[2]);
    \n+
    91 n[1] = (p1[2]-p0[2])*(p2[0]-p0[0])-(p2[2]-p0[2])*(p1[0]-p0[0]);
    \n+
    92 n[2] = (p1[0]-p0[0])*(p2[1]-p0[1])-(p2[0]-p0[0])*(p1[1]-p0[1]);
    \n+
    93 double test = n[0]*(q[0]-p0[0])+n[1]*(q[1]-p0[1])+n[2]*(q[2]-p0[2]);
    \n+
    94 bool reorient = (test>0);
    \n+
    95 if (reorient) {
    \n+
    96 A key1=origKey_[1];
    \n+
    97 origKey_[1]=origKey_[2];
    \n+
    98 origKey_[2]=key1;
    \n+
    99 }
    \n+
    100 }
    \n+
    101 }
    \n+
    \n
    102
    \n-
    103#endif
    \n-\n+
    103
    \n+
    104 template< class A >
    \n+
    \n+
    105 inline void DGFEntityKey< A > :: print ( std :: ostream &out ) const
    \n+
    106 {
    \n+
    107 for( size_t i = 0; i < key_.size(); ++i )
    \n+
    108 out << key_[ i ] << " ";
    \n+
    109 out << std :: endl;
    \n+
    110 }
    \n+
    \n+
    \n+
    111
    \n+
    112
    \n+
    113 // ElementFaceUtil
    \n+
    114 // ---------------
    \n+
    115
    \n+
    116 template< int dim >
    \n+\n+
    118 ElementFaceUtil::generateCubeFace
    \n+
    119 ( const std::vector< unsigned int > &element, int f )
    \n+
    120 {
    \n+
    121 auto refCube = ReferenceElements< double, dim >::cube();
    \n+
    122 const unsigned int size = refCube.size( f, 1, dim );
    \n+
    123 std::vector< unsigned int > k( size );
    \n+
    124 for( unsigned int i = 0; i < size; ++ i )
    \n+
    125 k[ i ] = element[ refCube.subEntity( f, 1, i, dim ) ];
    \n+\n+
    127 }
    \n+
    128
    \n+
    129
    \n+
    130 template< int dim >
    \n+\n+
    \n+
    132 ElementFaceUtil :: generateSimplexFace
    \n+
    133 ( const std :: vector< unsigned int > &element, int f )
    \n+
    134 {
    \n+
    135 auto refSimplex = ReferenceElements< double, dim >::simplex();
    \n+
    136 const unsigned int size = refSimplex.size( f, 1, dim );
    \n+
    137 std :: vector< unsigned int > k( size );
    \n+
    138 for( unsigned int i = 0; i < size; ++i )
    \n+
    139 k[ i ] = element[ refSimplex.subEntity( f, 1, i, dim ) ];
    \n+\n+
    141 }
    \n+
    \n+
    142
    \n+
    143
    \n+\n+
    \n+
    145 ElementFaceUtil::generateFace ( int dim, const std::vector< unsigned int > &element, int f )
    \n+
    146 {
    \n+
    147 if( element.size() == size_t(dim+1) )
    \n+
    148 {
    \n+
    149 // Simplex element
    \n+
    150 switch( dim )
    \n+
    151 {
    \n+
    152 case 3 :
    \n+
    153 return generateSimplexFace< 3 >( element, f );
    \n+
    154 case 2 :
    \n+
    155 return generateSimplexFace< 2 >( element, f );
    \n+
    156 case 1 :
    \n+
    157 return generateSimplexFace< 1 >( element, f );
    \n+
    158 default :
    \n+
    159 DUNE_THROW( NotImplemented, "ElementUtil::generateFace not implemented for dim = " << dim << "." );
    \n+
    160 }
    \n+
    161 }
    \n+
    162 else
    \n+
    163 {
    \n+
    164 // Cube element
    \n+
    165 switch( dim )
    \n+
    166 {
    \n+
    167 case 3 :
    \n+
    168 return generateCubeFace< 3 >( element, f );
    \n+
    169 case 2 :
    \n+
    170 return generateCubeFace< 2 >( element, f );
    \n+
    171 case 1 :
    \n+
    172 return generateCubeFace< 1 >( element, f );
    \n+
    173 default :
    \n+
    174 DUNE_THROW( NotImplemented, "ElementUtil::generateFace not implemented for dim = " << dim << "." );
    \n+
    175 }
    \n+
    176 }
    \n+
    177 }
    \n+
    \n+
    178
    \n+
    179} // end namespace Dune
    \n+
    180
    \n+
    181#endif // DUNE_ENTITYKEY_INLINE_HH
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    Common Grid parameters.
    Definition gridparameter.hh:35
    \n-
    static const Flags foundDumpFileName
    Definition gridparameter.hh:40
    \n-
    const std::string & dumpFileName() const
    Definition gridparameter.hh:70
    \n-
    static const Flags foundName
    Definition gridparameter.hh:39
    \n-
    GridParameterBlock(std::istream &in)
    constructor: read commmon parameters
    \n-
    unsigned int Flags
    Definition gridparameter.hh:37
    \n-
    std::string dumpFileName_
    Definition gridparameter.hh:46
    \n-
    bool ok()
    Definition gridparameter.hh:92
    \n-
    Flags foundFlags_
    Definition gridparameter.hh:44
    \n-
    const std::string & name(const std::string &defaultValue) const
    return the name of the grid
    Definition gridparameter.hh:58
    \n-
    std::string name_
    Definition gridparameter.hh:45
    \n-
    bool markLongestEdge() const
    returns true if longest edge should be marked for AlbertaGrid
    Definition gridparameter.hh:81
    \n-
    static const Flags foundLongestEdge
    Definition gridparameter.hh:41
    \n-
    bool markLongestEdge_
    Definition gridparameter.hh:47
    \n+
    Definition entitykey.hh:21
    \n+
    static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector< unsigned int > &element, int f)
    Definition entitykey_inline.hh:145
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,149 +3,208 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-gridparameter.hh\n+entitykey_inline.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_GRIDPARAMETERBLOCK_HH\n-6#define DUNE_DGF_GRIDPARAMETERBLOCK_HH\n+5#ifndef DUNE_ENTITYKEY_INLINE_HH\n+6#define DUNE_ENTITYKEY_INLINE_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-12\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17 namespace dgf\n-18 {\n-_\b3_\b3 class _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-34 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-35 {\n-36 public:\n-_\b3_\b7 typedef unsigned int _\bF_\bl_\ba_\bg_\bs;\n-38\n-_\b3_\b9 static const _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bN_\ba_\bm_\be = 1 << 0;\n-_\b4_\b0 static const _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bD_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be = 1 << 1;\n-_\b4_\b1 static const _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be = 1 << 5;\n-42\n-43 protected:\n-_\b4_\b4 _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_; // supportFlags, this block was created with\n-_\b4_\b5 std::string _\bn_\ba_\bm_\be_\b_; // name of the grid\n-_\b4_\b6 std::string _\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be_\b_; // name of the grid\n-_\b4_\b7 bool _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be_\b_; // Mark longest edge for AlbertaGrid\n+8#include \n+9#include \n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+15 // DGFEntityKey\n+16 // ------------\n+17\n+18 template< class A >\n+_\b1_\b9 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std :: vector< A > &key,\n+bool setOrigKey )\n+20 : key_( key.size() ),\n+21 origKey_( key.size() ),\n+_\b2_\b2 origKeySet_( setOrigKey )\n+23 {\n+24 for (size_t i=0; i\n+34 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std :: vector< A > &key,\n+35 int N, int offset, bool setOrigKey )\n+36 : key_( N ),\n+37 origKey_( N ),\n+38 origKeySet_( setOrigKey )\n+39 {\n+40 for (size_t i=0; i\n+_\b5_\b0 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k )\n+51 : key_( k.key_.size() ),\n+52 origKey_( k.key_.size() ),\n+53 origKeySet_( k. origKeySet_ )\n+54 {\n+55 for (size_t i=0; i\n+_\b6_\b4 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const\n+_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k )\n+65 {\n+66 assert(key_.size()==k.key_.size());\n+67 for (size_t i=0; i\n+77 inline void _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>\n+_\b7_\b8_\b _\b:_\b:_\b _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( int base, std::vector< std :: vector< double > > &vtx )\n+79 {\n+80 if (key_.size()==3) {\n+81 assert( (size_t) origKey_[0] < vtx.size() );\n+82 std::vector& p0 = vtx[origKey_[0]];\n+83 assert( (size_t) origKey_[1] < vtx.size() );\n+84 std::vector& p1 = vtx[origKey_[1]];\n+85 assert( (size_t) origKey_[2] < vtx.size() );\n+86 std::vector& p2 = vtx[origKey_[2]];\n+87 assert( (size_t) base < vtx.size() );\n+88 std::vector& q = vtx[base];\n+89 double n[3];\n+90 n[0] = (p1[1]-p0[1])*(p2[2]-p0[2])-(p2[1]-p0[1])*(p1[2]-p0[2]);\n+91 n[1] = (p1[2]-p0[2])*(p2[0]-p0[0])-(p2[2]-p0[2])*(p1[0]-p0[0]);\n+92 n[2] = (p1[0]-p0[0])*(p2[1]-p0[1])-(p2[0]-p0[0])*(p1[1]-p0[1]);\n+93 double test = n[0]*(q[0]-p0[0])+n[1]*(q[1]-p0[1])+n[2]*(q[2]-p0[2]);\n+94 bool reorient = (test>0);\n+95 if (reorient) {\n+96 A key1=origKey_[1];\n+97 origKey_[1]=origKey_[2];\n+98 origKey_[2]=key1;\n+99 }\n+100 }\n+101 }\n 102\n-103#endif\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+103\n+104 template< class A >\n+_\b1_\b0_\b5 inline void _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bp_\br_\bi_\bn_\bt ( std :: ostream &out ) const\n+106 {\n+107 for( size_t i = 0; i < key_.size(); ++i )\n+108 out << key_[ i ] << \" \";\n+109 out << std :: endl;\n+110 }\n+111\n+112\n+113 // ElementFaceUtil\n+114 // ---------------\n+115\n+116 template< int dim >\n+117 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n+118 ElementFaceUtil::generateCubeFace\n+119 ( const std::vector< unsigned int > &element, int f )\n+120 {\n+121 auto refCube = ReferenceElements< double, dim >::cube();\n+122 const unsigned int size = refCube.size( f, 1, dim );\n+123 std::vector< unsigned int > k( size );\n+124 for( unsigned int i = 0; i < size; ++ i )\n+125 k[ i ] = element[ refCube.subEntity( f, 1, i, dim ) ];\n+126 return _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>( k );\n+127 }\n+128\n+129\n+130 template< int dim >\n+131 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n+_\b1_\b3_\b2 ElementFaceUtil :: generateSimplexFace\n+133 ( const std :: vector< unsigned int > &element, int f )\n+134 {\n+135 auto refSimplex = ReferenceElements< double, dim >::simplex();\n+136 const unsigned int size = refSimplex.size( f, 1, dim );\n+137 std :: vector< unsigned int > k( size );\n+138 for( unsigned int i = 0; i < size; ++i )\n+139 k[ i ] = element[ refSimplex.subEntity( f, 1, i, dim ) ];\n+140 return _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>( k );\n+141 }\n+142\n+143\n+144 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n+_\b1_\b4_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be ( int dim, const std::vector< unsigned int >\n+&element, int f )\n+146 {\n+147 if( element.size() == size_t(dim+1) )\n+148 {\n+149 // Simplex element\n+150 switch( dim )\n+151 {\n+152 case 3 :\n+153 return generateSimplexFace< 3 >( element, f );\n+154 case 2 :\n+155 return generateSimplexFace< 2 >( element, f );\n+156 case 1 :\n+157 return generateSimplexFace< 1 >( element, f );\n+158 default :\n+159 DUNE_THROW( NotImplemented, \"ElementUtil::generateFace not implemented for\n+dim = \" << dim << \".\" );\n+160 }\n+161 }\n+162 else\n+163 {\n+164 // Cube element\n+165 switch( dim )\n+166 {\n+167 case 3 :\n+168 return generateCubeFace< 3 >( element, f );\n+169 case 2 :\n+170 return generateCubeFace< 2 >( element, f );\n+171 case 1 :\n+172 return generateCubeFace< 1 >( element, f );\n+173 default :\n+174 DUNE_THROW( NotImplemented, \"ElementUtil::generateFace not implemented for\n+dim = \" << dim << \".\" );\n+175 }\n+176 }\n+177 }\n+178\n+179} // end namespace Dune\n+180\n+181#endif // DUNE_ENTITYKEY_INLINE_HH\n+_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-Common Grid parameters.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bD_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n-static const Flags foundDumpFileName\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n-const std::string & dumpFileName() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bN_\ba_\bm_\be\n-static const Flags foundName\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-GridParameterBlock(std::istream &in)\n-constructor: read commmon parameters\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n-unsigned int Flags\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be_\b_\n-std::string dumpFileName_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_\n-Flags foundFlags_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\ba_\bm_\be\n-const std::string & name(const std::string &defaultValue) const\n-return the name of the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\ba_\bm_\be_\b_\n-std::string name_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n-bool markLongestEdge() const\n-returns true if longest edge should be marked for AlbertaGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n-static const Flags foundLongestEdge\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be_\b_\n-bool markLongestEdge_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be\n+static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector<\n+unsigned int > &element, int f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:145\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00860.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00860.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: simplex.hh File Reference\n+dune-grid: dgfexception.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    simplex.hh File Reference
    \n+
    dgfexception.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <vector>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+
    #include <dune/common/exceptions.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::dgf::SimplexBlock
    class  Dune::DGFException
     exception class for IO errors in the DGF parser More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,25 +3,21 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-simplex.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+dgfexception.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+\u00a0 exception class for IO errors in the DGF parser _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00860_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00860_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: simplex.hh Source File\n+dune-grid: dgfexception.hh Source File\n \n \n \n \n \n \n \n@@ -70,102 +70,44 @@\n
    \n \n \n \n \n \n \n
    \n-
    simplex.hh
    \n+
    dgfexception.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_SIMPLEXBLOCK_HH
    \n-
    6#define DUNE_DGF_SIMPLEXBLOCK_HH
    \n+
    5#ifndef DUNE_GRID_DGFEXCEPTION_HH
    \n+
    6#define DUNE_GRID_DGFEXCEPTION_HH
    \n
    7
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n+
    8#include <dune/common/exceptions.hh>
    \n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 namespace dgf
    \n-
    17 {
    \n-
    18 // SimplexBlock
    \n-
    19 // ------------
    \n-
    20
    \n-
    \n-\n-
    22 : public BasicBlock
    \n-
    23 {
    \n-
    24 unsigned int nofvtx;
    \n-
    25 int vtxoffset;
    \n-
    26 int dimgrid;
    \n-
    27 bool goodline; // active line describes a vertex
    \n-
    28 int nofparams; // nof parameters
    \n-
    29
    \n-
    30 public:
    \n-
    31 SimplexBlock ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid );
    \n-
    32
    \n-
    33 int get ( std :: vector< std :: vector< unsigned int > > &simplex,
    \n-
    34 std :: vector< std :: vector< double > > &params,
    \n-
    35 int &nofp );
    \n-
    36
    \n-
    37 // cubes -> simplex
    \n-
    38 static int
    \n-
    39 cube2simplex ( std :: vector< std :: vector< double > > &vtx,
    \n-
    40 std :: vector< std :: vector< unsigned int > > &elements,
    \n-
    41 std :: vector< std :: vector< double > > &params );
    \n-
    42
    \n-
    43 // some information
    \n-
    \n-
    44 bool ok ()
    \n-
    45 {
    \n-
    46 return goodline;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-\n-
    50 {
    \n-
    51 return noflines();
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    54 private:
    \n-
    55 // get the dimension of the grid
    \n-
    56 int getDimGrid ();
    \n-
    57 // get next simplex
    \n-
    58 bool next ( std :: vector< unsigned int > &simplex,
    \n-
    59 std :: vector< double > &param );
    \n-
    60 };
    \n-
    \n-
    61
    \n-
    62 } // end namespace dgf
    \n-
    63
    \n-
    64} // end namespace Dune
    \n-
    65
    \n-
    66#endif
    \n-\n+
    \n+\n+
    15 : public IOError
    \n+
    16 {};
    \n+
    \n+
    17
    \n+
    18}
    \n+
    19
    \n+
    20#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    int & noflines()
    Definition basic.hh:87
    \n-
    Definition simplex.hh:23
    \n-
    static int cube2simplex(std ::vector< std ::vector< double > > &vtx, std ::vector< std ::vector< unsigned int > > &elements, std ::vector< std ::vector< double > > &params)
    Definition simplex.cc:146
    \n-
    int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector< std ::vector< double > > &params, int &nofp)
    Definition simplex.cc:69
    \n-
    int nofsimplex()
    Definition simplex.hh:49
    \n-
    bool ok()
    Definition simplex.hh:44
    \n+
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,106 +3,37 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-simplex.hh\n+dgfexception.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_SIMPLEXBLOCK_HH\n-6#define DUNE_DGF_SIMPLEXBLOCK_HH\n+5#ifndef DUNE_GRID_DGFEXCEPTION_HH\n+6#define DUNE_GRID_DGFEXCEPTION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+8#include \n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 namespace dgf\n-17 {\n-18 // SimplexBlock\n-19 // ------------\n-20\n-_\b2_\b1 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk\n-22 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-23 {\n-24 unsigned int nofvtx;\n-25 int vtxoffset;\n-26 int dimgrid;\n-27 bool goodline; // active line describes a vertex\n-28 int nofparams; // nof parameters\n-29\n-30 public:\n-31 _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx, int pvtxoffset, int\n-&pdimgrid );\n-32\n-33 int _\bg_\be_\bt ( std :: vector< std :: vector< unsigned int > > &simplex,\n-34 std :: vector< std :: vector< double > > ¶ms,\n-35 int &nofp );\n-36\n-37 // cubes -> simplex\n-38 static int\n-39 _\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx ( std :: vector< std :: vector< double > > &vtx,\n-40 std :: vector< std :: vector< unsigned int > > &elements,\n-41 std :: vector< std :: vector< double > > ¶ms );\n-42\n-43 // some information\n-_\b4_\b4 bool _\bo_\bk ()\n-45 {\n-46 return goodline;\n-47 }\n-48\n-_\b4_\b9 int _\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx ()\n-50 {\n-51 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n-52 }\n-53\n-54 private:\n-55 // get the dimension of the grid\n-56 int getDimGrid ();\n-57 // get next simplex\n-58 bool next ( std :: vector< unsigned int > &simplex,\n-59 std :: vector< double > ¶m );\n-60 };\n-61\n-62 } // end namespace dgf\n-63\n-64} // end namespace Dune\n-65\n-66#endif\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+_\b1_\b4 class _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+15 : public IOError\n+16 {};\n+17\n+18}\n+19\n+20#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n-int & noflines()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-static int cube2simplex(std ::vector< std ::vector< double > > &vtx, std ::\n-vector< std ::vector< unsigned int > > &elements, std ::vector< std ::vector<\n-double > > ¶ms)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.cc:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n-int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector<\n-std ::vector< double > > ¶ms, int &nofp)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.cc:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-int nofsimplex()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+exception class for IO errors in the DGF parser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00863.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00863.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cube.hh File Reference\n+dune-grid: gridparameter.cc File Reference\n \n \n \n \n \n \n \n@@ -70,31 +70,21 @@\n \n \n
    \n \n-
    cube.hh File Reference
    \n+
    gridparameter.cc File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <iostream>
    \n-#include <vector>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::dgf::CubeBlock
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/gridparameter.hh>
    \n+
    \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,24 +4,18 @@\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cube.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+gridparameter.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00866.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00866.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: basic.hh File Reference\n+dune-grid: basic.cc File Reference\n \n \n \n \n \n \n \n@@ -70,48 +70,28 @@\n \n \n
    \n \n-
    basic.hh File Reference
    \n+Namespaces
    \n+
    basic.cc File Reference
    \n \n
    \n-
    #include <cassert>
    \n-#include <cctype>
    \n-#include <iostream>
    \n-#include <string>
    \n-#include <sstream>
    \n-#include <dune/common/stdstreams.hh>
    \n-#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n-
    \n-

    Go to the source code of this file.

    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-\n-\n-\n-

    \n-Classes

    class  Dune::dgf::BasicBlock
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+
    \n \n \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-\n-\n-\n

    \n-Functions

    void Dune::dgf::makeupcase (std ::string &s)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,32 +4,19 @@\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n * _\bb_\bl_\bo_\bc_\bk_\bs\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-basic.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+basic.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bm_\ba_\bk_\be_\bu_\bp_\bc_\ba_\bs_\be (std ::string &s)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00869.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00869.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: projection.cc File Reference\n+dune-grid: boundaryseg.hh File Reference\n \n \n \n \n \n \n \n@@ -71,70 +71,40 @@\n \n \n \n
    \n \n-
    projection.cc File Reference
    \n+Namespaces
    \n+
    boundaryseg.hh File Reference
    \n \n
    \n-
    #include <config.h>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/projection.hh>
    \n-
    \n+
    #include <cassert>
    \n+#include <iostream>
    \n+#include <string>
    \n+#include <vector>
    \n+#include <map>
    \n+#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.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 Classes

    struct  Dune::dgf::Expr::ConstantExpression
     
    struct  Dune::dgf::Expr::VariableExpression
     
    struct  Dune::dgf::Expr::FunctionCallExpression
     
    struct  Dune::dgf::Expr::VectorExpression
     
    struct  Dune::dgf::Expr::BracketExpression
     
    struct  Dune::dgf::Expr::MinusExpression
     
    struct  Dune::dgf::Expr::NormExpression
     
    struct  Dune::dgf::Expr::SqrtExpression
     
    struct  Dune::dgf::Expr::SinExpression
     
    struct  Dune::dgf::Expr::CosExpression
     
    struct  Dune::dgf::Expr::PowerExpression
     
    struct  Dune::dgf::Expr::SumExpression
     
    struct  Dune::dgf::Expr::DifferenceExpression
     
    struct  Dune::dgf::Expr::ProductExpression
     
    struct  Dune::dgf::Expr::QuotientExpression
    class  Dune::dgf::BoundarySegBlock
     
    \n \n \n \n \n \n \n-\n-\n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    namespace  Dune::dgf::Expr
     
    \n-\n-\n-\n

    \n-Functions

    std::ostream & Dune::dgf::operator<< (std::ostream &out, const ProjectionBlock::Token &token)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,57 +4,28 @@\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n * _\bb_\bl_\bo_\bc_\bk_\bs\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-projection.cc File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+boundaryseg.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\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_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bB_\br_\ba_\bc_\bk_\be_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bM_\bi_\bn_\bu_\bs_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bN_\bo_\br_\bm_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bS_\bq_\br_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bS_\bi_\bn_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bC_\bo_\bs_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bP_\bo_\bw_\be_\br_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bS_\bu_\bm_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bQ_\bu_\bo_\bt_\bi_\be_\bn_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const\n- ProjectionBlock::Token &token)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00872.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00872.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cube.cc File Reference\n+dune-grid: periodicfacetrans.cc File Reference\n \n \n \n \n \n \n \n@@ -71,19 +71,19 @@\n \n \n \n
    \n \n-
    cube.cc File Reference
    \n+
    periodicfacetrans.cc File Reference
    \n
    \n
    \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,17 +5,17 @@\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cube.cc File Reference\n+periodicfacetrans.cc File Reference\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\be_\br_\bi_\bo_\bd_\bi_\bc_\bf_\ba_\bc_\be_\bt_\br_\ba_\bn_\bs_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00875.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00875.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: simplexgeneration.hh File Reference\n+dune-grid: general.cc File Reference\n \n \n \n \n \n \n \n@@ -70,29 +70,21 @@\n \n \n
    \n \n-
    simplexgeneration.hh File Reference
    \n+
    general.cc File Reference
    \n
    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
    \n-\n-\n-\n-

    \n-Classes

    class  Dune::dgf::SimplexGenerationBlock
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/general.hh>
    \n+
    \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,22 +4,18 @@\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n * _\bb_\bl_\bo_\bc_\bk_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-simplexgeneration.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+general.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\be_\bn_\be_\br_\ba_\bl_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00878.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00878.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gmsh2dgf.cc File Reference\n+dune-grid: simplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,71 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    gmsh2dgf.cc File Reference
    \n+Classes |\n+Namespaces
    \n+
    simplex.hh File Reference
    \n \n
    \n-\n-

    a small program converting a gmsh file into a DGF file \n-More...

    \n-
    #include <config.h>
    \n-#include <iostream>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/io/file/gmshreader.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfwriter.hh>
    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-\n-\n-\n+
    #include <iostream>
    \n+#include <vector>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+
    \n+

    Go to the source code of this file.

    \n+

    \n-Functions

    int main (int argc, char *argv[])
     
    \n+\n+\n+\n+

    \n+Classes

    class  Dune::dgf::SimplexBlock
     
    \n+\n+\n+\n+\n+\n+\n

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-

    Detailed Description

    \n-

    a small program converting a gmsh file into a DGF file

    \n-
    Author
    Matrin Nolte
    \n-

    gmsh2dgf is a small example program for the DGFWriter. It reads a gmsh file into any grid (selected by gridtype.hh) and writes it back as a DGF file.

    \n-

    The program's usage is as follows:

    ./gmsh2dgf <gmshfile>
    \n-

    Function Documentation

    \n-\n-

    ◆ main()

    \n-\n-
    \n-
    \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n-
    int main (int argc,
    char * argv[] 
    )
    \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": "@@ -3,34 +3,25 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bu_\bt_\bi_\bl_\bs\n-_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-gmsh2dgf.cc File Reference\n-a small program converting a gmsh file into a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+simplex.hh File Reference\n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-int\u00a0 _\bm_\ba_\bi_\bn (int argc, char *argv[])\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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-a small program converting a gmsh file into a DGF file\n- Author\n- Matrin Nolte\n-gmsh2dgf is a small example program for the DGFWriter. It reads a gmsh file\n-into any grid (selected by _\bg_\br_\bi_\bd_\bt_\by_\bp_\be_\b._\bh_\bh) and writes it back as a DGF file.\n-The program's usage is as follows:\n-./gmsh2dgf \n-*\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bai\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n-int main ( int\u00a0 a\bar\brg\bgc\bc,\n- char *\u00a0 a\bar\brg\bgv\bv[]\u00a0\n- )\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00881.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00881.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgf2dgf.cc File Reference\n+dune-grid: interval.hh File Reference\n \n \n \n \n \n \n \n@@ -65,75 +65,52 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgf2dgf.cc File Reference
    \n+
    interval.hh File Reference
    \n
    \n
    \n-\n-

    a small program converting a DGF file into a DGF file \n-More...

    \n-
    #include <config.h>
    \n-#include <iostream>
    \n-#include <dune/grid/io/file/dgfparser/dgfwriter.hh>
    \n-
    \n+
    #include <iostream>
    \n+#include <vector>
    \n+#include <array>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    struct  Dune::dgf::IntervalBlock
     
    struct  Dune::dgf::IntervalBlock::Interval
     
    \n+\n+\n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n \n-\n-\n+\n+\n

    \n Functions

    int main (int argc, char *argv[])
     
    std::ostream & Dune::dgf::operator<< (std::ostream &out, const IntervalBlock::Interval &interval)
     
    \n-

    Detailed Description

    \n-

    a small program converting a DGF file into a DGF file

    \n-
    Author
    Matrin Nolte
    \n-

    dgf2dgf is a small example program for the DGFWriter. It reads a DGF file into any grid, optionally refining the grid globally. The leaf grid is then written back as a DGF file.

    \n-

    The program's usage is as follows:

    ./dgf2dgf <dgffile> [refinement level]
    \n-

    While the program may seem completely useless, it has the following usages:

      \n-
    • Convert an interval block into a simplex or cube grid (depending on the grid implementation used).
    • \n-
    • Resolve the simplex generator block into a vertex and a simplex block, so that it can be used without triangle or tetgen.
    • \n-
    • Construct a refined macro grid, which is very useful when setting up parallel computations with dune-ALUGrid.
    • \n-
    \n-

    The source code of this program also demonstrates the easy use of the DGF parser and the DGFWriter.

    \n-

    Function Documentation

    \n-\n-

    ◆ main()

    \n-\n-
    \n-
    \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n-
    int main (int argc,
    char * argv[] 
    )
    \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": "@@ -3,42 +3,32 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bu_\bt_\bi_\bl_\bs\n-_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-dgf2dgf.cc File Reference\n-a small program converting a DGF file into a DGF file _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n+ * _\bb_\bl_\bo_\bc_\bk_\bs\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+interval.hh File Reference\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\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_\bg_\bf_\b:_\b:_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-int\u00a0 _\bm_\ba_\bi_\bn (int argc, char *argv[])\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:\n+ _\bI_\bn_\bt_\be_\br_\bv_\ba_\bl &interval)\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-a small program converting a DGF file into a DGF file\n- Author\n- Matrin Nolte\n-dgf2dgf is a small example program for the DGFWriter. It reads a DGF file into\n-any grid, optionally refining the grid globally. The leaf grid is then written\n-back as a DGF file.\n-The program's usage is as follows:\n-./dgf2dgf [refinement level]\n-While the program may seem completely useless, it has the following usages:\n- * Convert an interval block into a simplex or cube grid (depending on the\n- grid implementation used).\n- * Resolve the simplex generator block into a vertex and a simplex block, so\n- that it can be used without triangle or tetgen.\n- * Construct a refined macro grid, which is very useful when setting up\n- parallel computations with dune-ALUGrid.\n-The source code of this program also demonstrates the easy use of the DGF\n-parser and the DGFWriter.\n-*\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-*\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bai\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n-int main ( int\u00a0 a\bar\brg\bgc\bc,\n- char *\u00a0 a\bar\brg\bgv\bv[]\u00a0\n- )\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00884.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00884.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfug.hh File Reference\n+dune-grid: simplex.cc File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,26 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfug.hh File Reference
    \n+
    simplex.cc File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <istream>
    \n-#include <string>
    \n-#include <vector>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/common/intersection.hh>
    \n-#include <dune/grid/uggrid.hh>
    \n-#include "dgfparser.hh"
    \n-#include "blocks/gridparameter.hh"
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    struct  Dune::dgf::UGGridParameterBlock
     
    struct  Dune::DGFGridInfo< UGGrid< dim > >
     
    struct  Dune::DGFGridFactory< UGGrid< dim > >
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/simplex.hh>
    \n+
    \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,35 +3,19 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfug.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bg_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n-#include \"_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\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:_\bd_\bg_\bf_\b:_\b:_\bU_\bG_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bU_\bG_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b _\b>_\b _\b>\n-\u00a0\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+simplex.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00887.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00887.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entitykey.hh File Reference\n+dune-grid: dim.cc File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    entitykey.hh File Reference
    \n+
    dim.cc File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <vector>
    \n-#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n-#include "entitykey_inline.hh"
    \n-
    \n-

    Go to the source code of this file.

    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-\n-\n-\n-\n-\n-

    \n-Classes

    struct  Dune::DGFEntityKey< A >
     
    struct  Dune::ElementFaceUtil
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/dim.hh>
    \n+
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,25 +3,20 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-entitykey.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include \"_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b__\bi_\bn_\bl_\bi_\bn_\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:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl\n-\u00a0\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dim.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bd_\bi_\bm_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00890.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00890.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfidentitygrid.hh File Reference\n+dune-grid: vertex.cc File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfidentitygrid.hh File Reference
    \n+
    vertex.cc File Reference
    \n
    \n
    \n-
    #include <dune/common/typetraits.hh>
    \n-#include <dune/grid/identitygrid.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfparser.hh>
    \n-#include <dune/grid/utility/hostgridaccess.hh>
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    struct  Dune::DGFGridFactory< IdentityGrid< HostGrid > >
     
    struct  Dune::DGFGridInfo< IdentityGrid< HostGrid > >
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/vertex.hh>
    \n+
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,25 +3,20 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfidentitygrid.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\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_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b>_\b _\b>\n-\u00a0\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+vertex.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bv_\be_\br_\bt_\be_\bx_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00893.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00893.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entitykey_inline.hh File Reference\n+dune-grid: general.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-
    entitykey_inline.hh File Reference
    \n+
    general.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n+
    #include <iostream>
    \n+#include <vector>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::dgf::GeneralBlock
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,19 +3,25 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-entitykey_inline.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+general.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00893_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00893_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entitykey_inline.hh Source File\n+dune-grid: general.hh Source File\n \n \n \n \n \n \n \n@@ -70,230 +70,98 @@\n
    \n \n \n \n \n \n \n
    \n-
    entitykey_inline.hh
    \n+
    general.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ENTITYKEY_INLINE_HH
    \n-
    6#define DUNE_ENTITYKEY_INLINE_HH
    \n+
    5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH
    \n+
    6#define DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH
    \n
    7
    \n-
    8#include <algorithm>
    \n-
    9#include <dune/geometry/referenceelements.hh>
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    15 // DGFEntityKey
    \n-
    16 // ------------
    \n-
    17
    \n-
    18 template< class A >
    \n-
    \n-
    19 inline DGFEntityKey< A > :: DGFEntityKey ( const std :: vector< A > &key, bool setOrigKey )
    \n-
    20 : key_( key.size() ),
    \n-
    21 origKey_( key.size() ),
    \n-
    \n-
    22 origKeySet_( setOrigKey )
    \n-
    23 {
    \n-
    24 for (size_t i=0; i<key_.size(); i++)
    \n-
    \n-
    25 {
    \n-
    26 key_[i]=key[i];
    \n-
    \n-
    27 origKey_[i]=key_[i];
    \n-
    28 }
    \n-
    29 std :: sort( key_.begin(), key_.end() );
    \n-
    30 }
    \n-
    31
    \n-
    \n-\n-
    \n-
    33 template< class A >
    \n-
    34 inline DGFEntityKey< A > :: DGFEntityKey ( const std :: vector< A > &key,
    \n-
    35 int N, int offset, bool setOrigKey )
    \n-
    36 : key_( N ),
    \n-
    37 origKey_( N ),
    \n-
    38 origKeySet_( setOrigKey )
    \n-
    39 {
    \n-
    40 for (size_t i=0; i<key_.size(); i++)
    \n-
    41 {
    \n-
    42 key_[i]=key[(i+offset)%key.size()];
    \n-
    43 origKey_[i]=key[(i+offset)%key.size()];
    \n-
    44 }
    \n-
    45 std :: sort( key_.begin(), key_.end() );
    \n-
    46 }
    \n-
    47
    \n-
    48
    \n-
    49 template< class A >
    \n-
    \n-\n-
    51 : key_( k.key_.size() ),
    \n-
    52 origKey_( k.key_.size() ),
    \n-
    53 origKeySet_( k. origKeySet_ )
    \n-
    54 {
    \n-
    55 for (size_t i=0; i<key_.size(); i++)
    \n-
    56 {
    \n-
    57 key_[i]=k.key_[i];
    \n-
    58 origKey_[i]=k.origKey_[i];
    \n-
    59 }
    \n-
    60 }
    \n-
    \n-
    61
    \n+
    8#include <iostream>
    \n+
    9#include <vector>
    \n+
    10
    \n+\n+
    12
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    17 namespace dgf
    \n+
    18 {
    \n+
    19
    \n+
    20 // GeneralBlock
    \n+
    21 // ---------
    \n+
    22
    \n+
    \n+\n+
    24 : public BasicBlock
    \n+
    25 {
    \n+
    26 unsigned int nofvtx;
    \n+
    27 int dimgrid;
    \n+
    28 bool goodline; // active line describes a vertex
    \n+
    29 std :: vector< unsigned int > map; // active vertex
    \n+
    30 int nofparams;
    \n+
    31 int vtxoffset;
    \n+
    32
    \n+
    33 public:
    \n+
    34 GeneralBlock ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid );
    \n+
    35
    \n+
    36 int get ( std :: vector< std :: vector< unsigned int> > &simplex,
    \n+
    37 std :: vector< std :: vector< double > > &params,
    \n+
    38 int &nofp );
    \n+
    39
    \n+
    40 // some information
    \n+
    \n+
    41 bool ok ()
    \n+
    42 {
    \n+
    43 return goodline;
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+\n+
    47 {
    \n+
    48 return noflines();
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    51 private:
    \n+
    52 // get the dimension of the grid
    \n+
    53 int getDimGrid ();
    \n+
    54 // get next simplex
    \n+
    55 bool next ( std :: vector< unsigned int > &simplex,
    \n+
    56 std :: vector< double > &param );
    \n+
    57 };
    \n+
    \n+
    58
    \n+
    59 } // end namespace dgf
    \n+
    60
    \n+
    61} // end namespace Dune
    \n
    62
    \n-
    63 template< class A >
    \n-
    \n-\n-
    65 {
    \n-
    66 assert(key_.size()==k.key_.size());
    \n-
    67 for (size_t i=0; i<key_.size(); i++) {
    \n-
    68 key_[i]=k.key_[i];
    \n-
    69 origKey_[i]=k.origKey_[i];
    \n-
    70 }
    \n-
    71 origKeySet_ = k.origKeySet_;
    \n-
    72 return *this;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75
    \n-
    76 template< class A >
    \n-
    77 inline void DGFEntityKey< A >
    \n-
    \n-
    78 :: orientation ( int base, std::vector< std :: vector< double > > &vtx )
    \n-
    79 {
    \n-
    80 if (key_.size()==3) {
    \n-
    81 assert( (size_t) origKey_[0] < vtx.size() );
    \n-
    82 std::vector<double>& p0 = vtx[origKey_[0]];
    \n-
    83 assert( (size_t) origKey_[1] < vtx.size() );
    \n-
    84 std::vector<double>& p1 = vtx[origKey_[1]];
    \n-
    85 assert( (size_t) origKey_[2] < vtx.size() );
    \n-
    86 std::vector<double>& p2 = vtx[origKey_[2]];
    \n-
    87 assert( (size_t) base < vtx.size() );
    \n-
    88 std::vector<double>& q = vtx[base];
    \n-
    89 double n[3];
    \n-
    90 n[0] = (p1[1]-p0[1])*(p2[2]-p0[2])-(p2[1]-p0[1])*(p1[2]-p0[2]);
    \n-
    91 n[1] = (p1[2]-p0[2])*(p2[0]-p0[0])-(p2[2]-p0[2])*(p1[0]-p0[0]);
    \n-
    92 n[2] = (p1[0]-p0[0])*(p2[1]-p0[1])-(p2[0]-p0[0])*(p1[1]-p0[1]);
    \n-
    93 double test = n[0]*(q[0]-p0[0])+n[1]*(q[1]-p0[1])+n[2]*(q[2]-p0[2]);
    \n-
    94 bool reorient = (test>0);
    \n-
    95 if (reorient) {
    \n-
    96 A key1=origKey_[1];
    \n-
    97 origKey_[1]=origKey_[2];
    \n-
    98 origKey_[2]=key1;
    \n-
    99 }
    \n-
    100 }
    \n-
    101 }
    \n-
    \n-
    102
    \n-
    103
    \n-
    104 template< class A >
    \n-
    \n-
    105 inline void DGFEntityKey< A > :: print ( std :: ostream &out ) const
    \n-
    106 {
    \n-
    107 for( size_t i = 0; i < key_.size(); ++i )
    \n-
    108 out << key_[ i ] << " ";
    \n-
    109 out << std :: endl;
    \n-
    110 }
    \n-
    \n-
    \n-
    111
    \n-
    112
    \n-
    113 // ElementFaceUtil
    \n-
    114 // ---------------
    \n-
    115
    \n-
    116 template< int dim >
    \n-\n-
    118 ElementFaceUtil::generateCubeFace
    \n-
    119 ( const std::vector< unsigned int > &element, int f )
    \n-
    120 {
    \n-
    121 auto refCube = ReferenceElements< double, dim >::cube();
    \n-
    122 const unsigned int size = refCube.size( f, 1, dim );
    \n-
    123 std::vector< unsigned int > k( size );
    \n-
    124 for( unsigned int i = 0; i < size; ++ i )
    \n-
    125 k[ i ] = element[ refCube.subEntity( f, 1, i, dim ) ];
    \n-\n-
    127 }
    \n-
    128
    \n-
    129
    \n-
    130 template< int dim >
    \n-\n-
    \n-
    132 ElementFaceUtil :: generateSimplexFace
    \n-
    133 ( const std :: vector< unsigned int > &element, int f )
    \n-
    134 {
    \n-
    135 auto refSimplex = ReferenceElements< double, dim >::simplex();
    \n-
    136 const unsigned int size = refSimplex.size( f, 1, dim );
    \n-
    137 std :: vector< unsigned int > k( size );
    \n-
    138 for( unsigned int i = 0; i < size; ++i )
    \n-
    139 k[ i ] = element[ refSimplex.subEntity( f, 1, i, dim ) ];
    \n-\n-
    141 }
    \n-
    \n-
    142
    \n-
    143
    \n-\n-
    \n-
    145 ElementFaceUtil::generateFace ( int dim, const std::vector< unsigned int > &element, int f )
    \n-
    146 {
    \n-
    147 if( element.size() == size_t(dim+1) )
    \n-
    148 {
    \n-
    149 // Simplex element
    \n-
    150 switch( dim )
    \n-
    151 {
    \n-
    152 case 3 :
    \n-
    153 return generateSimplexFace< 3 >( element, f );
    \n-
    154 case 2 :
    \n-
    155 return generateSimplexFace< 2 >( element, f );
    \n-
    156 case 1 :
    \n-
    157 return generateSimplexFace< 1 >( element, f );
    \n-
    158 default :
    \n-
    159 DUNE_THROW( NotImplemented, "ElementUtil::generateFace not implemented for dim = " << dim << "." );
    \n-
    160 }
    \n-
    161 }
    \n-
    162 else
    \n-
    163 {
    \n-
    164 // Cube element
    \n-
    165 switch( dim )
    \n-
    166 {
    \n-
    167 case 3 :
    \n-
    168 return generateCubeFace< 3 >( element, f );
    \n-
    169 case 2 :
    \n-
    170 return generateCubeFace< 2 >( element, f );
    \n-
    171 case 1 :
    \n-
    172 return generateCubeFace< 1 >( element, f );
    \n-
    173 default :
    \n-
    174 DUNE_THROW( NotImplemented, "ElementUtil::generateFace not implemented for dim = " << dim << "." );
    \n-
    175 }
    \n-
    176 }
    \n-
    177 }
    \n-
    \n-
    178
    \n-
    179} // end namespace Dune
    \n-
    180
    \n-
    181#endif // DUNE_ENTITYKEY_INLINE_HH
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-\n+
    63#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition entitykey.hh:21
    \n-
    static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector< unsigned int > &element, int f)
    Definition entitykey_inline.hh:145
    \n+
    Definition basic.hh:31
    \n+
    int & noflines()
    Definition basic.hh:87
    \n+
    Definition general.hh:25
    \n+
    int nofsimplex()
    Definition general.hh:46
    \n+
    int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector< std ::vector< double > > &params, int &nofp)
    Definition general.cc:101
    \n+
    bool ok()
    Definition general.hh:41
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,208 +3,98 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-entitykey_inline.hh\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+general.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ENTITYKEY_INLINE_HH\n-6#define DUNE_ENTITYKEY_INLINE_HH\n+5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH\n+6#define DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH\n 7\n-8#include \n-9#include \n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-15 // DGFEntityKey\n-16 // ------------\n-17\n-18 template< class A >\n-_\b1_\b9 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std :: vector< A > &key,\n-bool setOrigKey )\n-20 : key_( key.size() ),\n-21 origKey_( key.size() ),\n-_\b2_\b2 origKeySet_( setOrigKey )\n-23 {\n-24 for (size_t i=0; i\n-34 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std :: vector< A > &key,\n-35 int N, int offset, bool setOrigKey )\n-36 : key_( N ),\n-37 origKey_( N ),\n-38 origKeySet_( setOrigKey )\n-39 {\n-40 for (size_t i=0; i\n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+12\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+17 namespace dgf\n+18 {\n+19\n+20 // GeneralBlock\n+21 // ---------\n+22\n+_\b2_\b3 class _\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n+24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+25 {\n+26 unsigned int nofvtx;\n+27 int dimgrid;\n+28 bool goodline; // active line describes a vertex\n+29 std :: vector< unsigned int > map; // active vertex\n+30 int nofparams;\n+31 int vtxoffset;\n+32\n+33 public:\n+34 _\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx, int pvtxoffset, int\n+&pdimgrid );\n+35\n+36 int _\bg_\be_\bt ( std :: vector< std :: vector< unsigned int> > &simplex,\n+37 std :: vector< std :: vector< double > > ¶ms,\n+38 int &nofp );\n+39\n+40 // some information\n+_\b4_\b1 bool _\bo_\bk ()\n+42 {\n+43 return goodline;\n 44 }\n-45 std :: sort( key_.begin(), key_.end() );\n-46 }\n-47\n-48\n-49 template< class A >\n-_\b5_\b0 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k )\n-51 : key_( k.key_.size() ),\n-52 origKey_( k.key_.size() ),\n-53 origKeySet_( k. origKeySet_ )\n-54 {\n-55 for (size_t i=0; i &simplex,\n+56 std :: vector< double > ¶m );\n+57 };\n+58\n+59 } // end namespace dgf\n+60\n+61} // end namespace Dune\n 62\n-63 template< class A >\n-_\b6_\b4 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const\n-_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k )\n-65 {\n-66 assert(key_.size()==k.key_.size());\n-67 for (size_t i=0; i\n-77 inline void _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>\n-_\b7_\b8_\b _\b:_\b:_\b _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( int base, std::vector< std :: vector< double > > &vtx )\n-79 {\n-80 if (key_.size()==3) {\n-81 assert( (size_t) origKey_[0] < vtx.size() );\n-82 std::vector& p0 = vtx[origKey_[0]];\n-83 assert( (size_t) origKey_[1] < vtx.size() );\n-84 std::vector& p1 = vtx[origKey_[1]];\n-85 assert( (size_t) origKey_[2] < vtx.size() );\n-86 std::vector& p2 = vtx[origKey_[2]];\n-87 assert( (size_t) base < vtx.size() );\n-88 std::vector& q = vtx[base];\n-89 double n[3];\n-90 n[0] = (p1[1]-p0[1])*(p2[2]-p0[2])-(p2[1]-p0[1])*(p1[2]-p0[2]);\n-91 n[1] = (p1[2]-p0[2])*(p2[0]-p0[0])-(p2[2]-p0[2])*(p1[0]-p0[0]);\n-92 n[2] = (p1[0]-p0[0])*(p2[1]-p0[1])-(p2[0]-p0[0])*(p1[1]-p0[1]);\n-93 double test = n[0]*(q[0]-p0[0])+n[1]*(q[1]-p0[1])+n[2]*(q[2]-p0[2]);\n-94 bool reorient = (test>0);\n-95 if (reorient) {\n-96 A key1=origKey_[1];\n-97 origKey_[1]=origKey_[2];\n-98 origKey_[2]=key1;\n-99 }\n-100 }\n-101 }\n-102\n-103\n-104 template< class A >\n-_\b1_\b0_\b5 inline void _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bp_\br_\bi_\bn_\bt ( std :: ostream &out ) const\n-106 {\n-107 for( size_t i = 0; i < key_.size(); ++i )\n-108 out << key_[ i ] << \" \";\n-109 out << std :: endl;\n-110 }\n-111\n-112\n-113 // ElementFaceUtil\n-114 // ---------------\n-115\n-116 template< int dim >\n-117 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n-118 ElementFaceUtil::generateCubeFace\n-119 ( const std::vector< unsigned int > &element, int f )\n-120 {\n-121 auto refCube = ReferenceElements< double, dim >::cube();\n-122 const unsigned int size = refCube.size( f, 1, dim );\n-123 std::vector< unsigned int > k( size );\n-124 for( unsigned int i = 0; i < size; ++ i )\n-125 k[ i ] = element[ refCube.subEntity( f, 1, i, dim ) ];\n-126 return _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>( k );\n-127 }\n-128\n-129\n-130 template< int dim >\n-131 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n-_\b1_\b3_\b2 ElementFaceUtil :: generateSimplexFace\n-133 ( const std :: vector< unsigned int > &element, int f )\n-134 {\n-135 auto refSimplex = ReferenceElements< double, dim >::simplex();\n-136 const unsigned int size = refSimplex.size( f, 1, dim );\n-137 std :: vector< unsigned int > k( size );\n-138 for( unsigned int i = 0; i < size; ++i )\n-139 k[ i ] = element[ refSimplex.subEntity( f, 1, i, dim ) ];\n-140 return _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>( k );\n-141 }\n-142\n-143\n-144 inline _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n-_\b1_\b4_\b5 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be ( int dim, const std::vector< unsigned int >\n-&element, int f )\n-146 {\n-147 if( element.size() == size_t(dim+1) )\n-148 {\n-149 // Simplex element\n-150 switch( dim )\n-151 {\n-152 case 3 :\n-153 return generateSimplexFace< 3 >( element, f );\n-154 case 2 :\n-155 return generateSimplexFace< 2 >( element, f );\n-156 case 1 :\n-157 return generateSimplexFace< 1 >( element, f );\n-158 default :\n-159 DUNE_THROW( NotImplemented, \"ElementUtil::generateFace not implemented for\n-dim = \" << dim << \".\" );\n-160 }\n-161 }\n-162 else\n-163 {\n-164 // Cube element\n-165 switch( dim )\n-166 {\n-167 case 3 :\n-168 return generateCubeFace< 3 >( element, f );\n-169 case 2 :\n-170 return generateCubeFace< 2 >( element, f );\n-171 case 1 :\n-172 return generateCubeFace< 1 >( element, f );\n-173 default :\n-174 DUNE_THROW( NotImplemented, \"ElementUtil::generateFace not implemented for\n-dim = \" << dim << \".\" );\n-175 }\n-176 }\n-177 }\n-178\n-179} // end namespace Dune\n-180\n-181#endif // DUNE_ENTITYKEY_INLINE_HH\n-_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n+63#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be\n-static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector<\n-unsigned int > &element, int f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n+int & noflines()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+int nofsimplex()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n+int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector<\n+std ::vector< double > > ¶ms, int &nofp)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.cc:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.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-grid-doc/doxygen/a00896.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00896.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfyasp.hh File Reference\n+dune-grid: polygon.hh File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    dgfyasp.hh File Reference
    \n+
    polygon.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/common/intersection.hh>
    \n-#include <dune/grid/yaspgrid.hh>
    \n-#include "dgfparser.hh"
    \n+
    #include <iostream>
    \n+#include <vector>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::dgf::YaspGridParameterBlock
     Grid parameters for YaspGrid. More...
     
    struct  Dune::DGFGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > >
     Grid factory for YaspGrid with equidistant coordinates. More...
     
    struct  Dune::DGFGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > >
     Grid factory for YaspGrid with equidistant coordinates. More...
     
    class  Dune::DGFGridFactory< Dune::YaspGrid< dim, Dune::TensorProductCoordinates< ctype, dim > > >
     Placeholder for grid factory for YaspGrid with tensor product coordinates. More...
     
    struct  Dune::DGFGridInfo< YaspGrid< dim, Coordinates > >
    struct  Dune::dgf::PolygonBlock
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,38 +3,24 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dgfyasp.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n+polygon.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-\u00a0 _\bG_\br_\bi_\bd parameters for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n- _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n-\u00a0 _\bG_\br_\bi_\bd factory for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with equidistant coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n- _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n-\u00a0 _\bG_\br_\bi_\bd factory for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with equidistant coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:\n- _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n-\u00a0 Placeholder for grid factory for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with tensor product\n- coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00896_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00896_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dgfyasp.hh Source File\n+dune-grid: polygon.hh Source File\n \n \n \n \n \n \n \n@@ -70,619 +70,95 @@\n \n \n \n \n \n \n \n
    \n-
    dgfyasp.hh
    \n+
    polygon.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGFPARSERYASP_HH
    \n-
    6#define DUNE_DGFPARSERYASP_HH
    \n+
    3// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=2 sw=2 sts=2:
    \n+
    5#ifndef DUNE_POLYGON_HH
    \n+
    6#define DUNE_POLYGON_HH
    \n
    7
    \n-\n-\n-
    10#include "dgfparser.hh"
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    15 // External Forward Declarations
    \n-
    16 // -----------------------------
    \n-
    17
    \n-
    18 template< class GridImp, class IntersectionImp >
    \n-
    19 class Intersection;
    \n-
    20
    \n-
    21
    \n-
    22 namespace dgf
    \n-
    23 {
    \n-
    24
    \n-
    \n-\n-
    39 : public GridParameterBlock
    \n-
    40 {
    \n-
    41 protected:
    \n-
    42 int _overlap; // overlap for YaspGrid
    \n+
    8#include <iostream>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/typetraits.hh>
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    17 namespace dgf
    \n+
    18 {
    \n+
    19
    \n+
    20 // PolygonBlock
    \n+
    21 // ------------
    \n+
    22
    \n+
    \n+\n+
    24 : public BasicBlock
    \n+
    25 {
    \n+
    \n+
    26 PolygonBlock ( std::istream &in, int numVtx, int vtxOfs )
    \n+
    27 : BasicBlock( in, "Polygon" ), vtxBegin_( vtxOfs ), vtxEnd_( vtxOfs + numVtx )
    \n+
    28 {}
    \n+
    \n+
    29
    \n+
    \n+
    30 int get ( std::vector< std::vector< int > > &polygons )
    \n+
    31 {
    \n+
    32 reset();
    \n+
    33 std::vector< int > polygon;
    \n+
    34 while( getnextline() )
    \n+
    35 {
    \n+
    36 polygon.clear();
    \n+
    37 for( int vtxIdx; getnextentry( vtxIdx ); )
    \n+
    38 {
    \n+
    39 if( (vtxBegin_ > vtxIdx) || (vtxIdx >= vtxEnd_) )
    \n+
    40 DUNE_THROW( DGFException, "Error in " << *this << ": Invalid vertex index (" << vtxIdx << " not int [" << vtxBegin_ << ", " << vtxEnd_ << "[)" );
    \n+
    41 polygon.push_back( vtxIdx - vtxBegin_ );
    \n+
    42 }
    \n
    43
    \n-
    44 public:
    \n-
    \n-
    46 YaspGridParameterBlock( std::istream &in )
    \n-
    47 : GridParameterBlock( in ),
    \n-
    48 _overlap( 0 ) // default value
    \n-
    49 {
    \n-
    50 // check overlap
    \n-
    51 if( findtoken( "overlap" ) )
    \n-
    52 {
    \n-
    53 int x;
    \n-
    54 if( getnextentry(x) ) _overlap = x;
    \n-
    55 else
    \n-
    56 {
    \n-
    57 dwarn << "GridParameterBlock: found keyword `overlap' but no value, defaulting to `" << _overlap <<"' !\\n";
    \n-
    58 }
    \n-
    59
    \n-
    60 if (_overlap < 0)
    \n-
    61 {
    \n-
    62 DUNE_THROW(DGFException,"Negative overlap specified!");
    \n-
    63 }
    \n-
    64 }
    \n-
    65 else
    \n-
    66 {
    \n-
    67 dwarn << "YaspGridParameterBlock: Parameter 'overlap' not specified, "
    \n-
    68 << "defaulting to '" << _overlap << "'." << std::endl;
    \n-
    69 }
    \n-
    70
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    74 int overlap () const
    \n-
    75 {
    \n-
    76 return _overlap;
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 };
    \n-
    \n-
    80
    \n-
    81 }
    \n-
    82
    \n-
    86 template <typename ctype, int dim>
    \n-
    \n-
    87 struct DGFGridFactory< YaspGrid<dim, EquidistantCoordinates<ctype, dim> > >
    \n-
    88 {
    \n-\n-
    90 const static int dimension = Grid::dimension;
    \n-
    91 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n-
    92
    \n-
    93 private:
    \n-
    94 typedef FieldVector< ctype, dimension > Point;
    \n-\n-
    96
    \n-
    97 public:
    \n-
    \n-
    98 explicit DGFGridFactory ( std::istream &input,
    \n-
    99 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    100 {
    \n-
    101 generate( input, comm );
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    \n-
    104 explicit DGFGridFactory ( const std::string &filename,
    \n-
    105 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    106 {
    \n-
    107 std::ifstream input( filename.c_str() );
    \n-
    108 if( !input )
    \n-
    109 DUNE_THROW( DGFException, "Error: Macrofile '" << filename << "' not found" );
    \n-
    110 generate( input, comm );
    \n-
    111 }
    \n-
    \n-
    112
    \n-
    \n-\n-
    114 {
    \n-
    115 delete boundaryDomainBlock_;
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-
    118 Grid *grid() const
    \n-
    119 {
    \n-
    120 return grid_;
    \n-
    121 }
    \n-
    \n-
    122
    \n-
    123 template <class Intersection>
    \n-
    \n-
    124 bool wasInserted(const Intersection &intersection) const
    \n-
    125 {
    \n-
    126 return false;
    \n-
    127 }
    \n-
    \n-
    128
    \n-
    129 template <class Intersection>
    \n-
    \n-
    130 int boundaryId(const Intersection &intersection) const
    \n-
    131 {
    \n-
    132 if( boundaryDomainBlock_->isactive() )
    \n-
    133 {
    \n-
    134 std::vector< Point > corners;
    \n-
    135 getCorners( intersection.geometry(), corners );
    \n-
    136 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n-
    137 if( data )
    \n-
    138 return data->id();
    \n-
    139 else
    \n-
    140 return intersection.indexInInside();
    \n-
    141 }
    \n-
    142 else
    \n-
    143 return intersection.indexInInside();
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    146 template< int codim >
    \n-
    \n-
    147 int numParameters () const
    \n-
    148 {
    \n-
    149 return 0;
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    152 // return true if boundary parameters found
    \n-
    \n-\n-
    154 {
    \n-
    155 return boundaryDomainBlock_->hasParameter();
    \n-
    156 }
    \n-
    \n-
    157
    \n-
    158 template< class GG, class II >
    \n-
    159 const typename DGFBoundaryParameter::type &
    \n-
    \n-
    160 boundaryParameter ( const Intersection< GG, II > & intersection ) const
    \n-
    161 {
    \n-\n-
    163 {
    \n-
    164 std::vector< Point > corners;
    \n-
    165 getCorners( intersection.geometry(), corners );
    \n-
    166 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n-
    167 if( data )
    \n-
    168 return data->parameter();
    \n-
    169 else
    \n-\n-
    171 }
    \n-
    172 else
    \n-\n-
    174 }
    \n-
    \n-
    175
    \n-
    176 template< class Entity >
    \n-
    \n-
    177 std::vector<double> &parameter ( const Entity & )
    \n-
    178 {
    \n-
    179 return emptyParam;
    \n-
    180 }
    \n-
    \n-
    181
    \n-
    182 private:
    \n-
    183 void generate( std::istream &gridin, MPICommunicatorType comm );
    \n-
    184
    \n-
    185 template< class Geometry >
    \n-
    186 static void getCorners ( const Geometry &geometry, std::vector< Point > &corners )
    \n-
    187 {
    \n-
    188 corners.resize( geometry.corners() );
    \n-
    189 for( int i = 0; i < geometry.corners(); ++i )
    \n-
    190 {
    \n-
    191 const typename Geometry::GlobalCoordinate corner = geometry.corner( i );
    \n-
    192 for( int j = 0; j < dimension; ++j )
    \n-
    193 corners[ i ][ j ] = corner[ j ];
    \n-
    194 }
    \n-
    195 }
    \n-
    196
    \n-
    197 Grid *grid_;
    \n-
    198 dgf::BoundaryDomBlock *boundaryDomainBlock_;
    \n-
    199 std::vector<double> emptyParam;
    \n-
    200 };
    \n-
    \n-
    201
    \n-
    202 // generate YaspGrid from the provided DGF
    \n-
    203 template< typename ctype, int dim >
    \n-
    204 inline void DGFGridFactory< YaspGrid< dim , EquidistantCoordinates<ctype, dim> > >
    \n-
    205 ::generate ( std::istream &gridin, MPICommunicatorType comm )
    \n-
    206 {
    \n-
    207 using std::abs;
    \n-
    208 dgf::IntervalBlock intervalBlock( gridin );
    \n-
    209
    \n-
    210 if( !intervalBlock.isactive() )
    \n-
    211 DUNE_THROW( DGFException, "YaspGrid can only be created from an interval block." );
    \n-
    212
    \n-
    213 if( intervalBlock.numIntervals() != 1 )
    \n-
    214 DUNE_THROW( DGFException, "YaspGrid can only handle 1 interval block." );
    \n-
    215
    \n-
    216 if( intervalBlock.dimw() != dim )
    \n-
    217 {
    \n-
    218 DUNE_THROW( DGFException,
    \n-
    219 "Cannot read an interval of dimension " << intervalBlock.dimw()
    \n-
    220 << " into a YaspGrid< " << dim << " >." );
    \n-
    221 }
    \n-
    222
    \n-
    223 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );
    \n-
    224
    \n-
    225 FieldVector<ctype, dim> lang;
    \n-
    226 std::array<int,dim> anz;
    \n-
    227 for( int i = 0; i < dim; ++i )
    \n-
    228 {
    \n-
    229 // check that start point is 0.0
    \n-
    230 if( abs( interval.p[ 0 ][ i ] ) > 1e-10 )
    \n-
    231 {
    \n-
    232 DUNE_THROW( DGFException,
    \n-
    233 "YaspGrid cannot handle grids with non-zero left lower corner." );
    \n-
    234 }
    \n-
    235
    \n-
    236 lang[ i ] = interval.p[ 1 ][ i ] - interval.p[ 0 ][ i ];
    \n-
    237 anz[ i ] = interval.n[ i ];
    \n-
    238 }
    \n-
    239
    \n-
    240 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation Transformation;
    \n-
    241 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );
    \n-
    242 std::bitset< dim > per;
    \n-
    243 const int numTrafos = trafoBlock.numTransformations();
    \n-
    244 for( int k = 0; k < numTrafos; ++k )
    \n-
    245 {
    \n-
    246 const Transformation &trafo = trafoBlock.transformation( k );
    \n-
    247
    \n-
    248 bool identity = true;
    \n-
    249 for( int i = 0; i < dim; ++i )
    \n-
    250 for( int j = 0; j < dim; ++j )
    \n-
    251 identity &= (abs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);
    \n-
    252 if( !identity )
    \n-
    253 DUNE_THROW( DGFException, "YaspGrid can only handle shifts as periodic face transformations." );
    \n-
    254
    \n-
    255 int numDirs = 0;
    \n-
    256 int dir = -1;
    \n-
    257 for( int i = 0; i < dim; ++i )
    \n-
    258 {
    \n-
    259 if( abs( trafo.shift[ i ] ) < 1e-10 )
    \n-
    260 continue;
    \n-
    261 dir = i;
    \n-
    262 ++numDirs;
    \n-
    263 }
    \n-
    264 if( (numDirs != 1) || (abs( abs( trafo.shift[ dir ] ) - lang[ dir ] ) >= 1e-10) )
    \n-
    265 {
    \n-
    266 std::cerr << "Tranformation '" << trafo
    \n-
    267 << "' does not map boundaries on boundaries." << std::endl;
    \n-
    268 }
    \n-
    269 else
    \n-
    270 per[ dir ] = true;
    \n-
    271 }
    \n-
    272
    \n-
    273 // get grid parameters
    \n-
    274 dgf::YaspGridParameterBlock grdParam( gridin );
    \n-
    275
    \n-
    276 grid_ = new YaspGrid< dim , EquidistantCoordinates<ctype, dim> >( lang, anz, per, grdParam.overlap(), comm );
    \n-
    277
    \n-
    278 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );
    \n-
    279 }
    \n-
    280
    \n-
    284 template <typename ctype, int dim>
    \n-
    \n-\n-
    286 {
    \n-\n-
    288 const static int dimension = Grid::dimension;
    \n-
    289 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n-
    290
    \n-
    291 private:
    \n-
    292 typedef FieldVector< ctype, dimension > Point;
    \n-\n-
    294
    \n-
    295 public:
    \n-
    \n-
    296 explicit DGFGridFactory ( std::istream &input,
    \n-
    297 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    298 {
    \n-
    299 generate( input, comm );
    \n-
    300 }
    \n-
    \n-
    301
    \n-
    \n-
    302 explicit DGFGridFactory ( const std::string &filename,
    \n-
    303 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n-
    304 {
    \n-
    305 std::ifstream input( filename.c_str() );
    \n-
    306 generate( input, comm );
    \n-
    307 }
    \n-
    \n-
    308
    \n-
    \n-\n-
    310 {
    \n-
    311 delete boundaryDomainBlock_;
    \n-
    312 }
    \n-
    \n-
    313
    \n-
    \n-
    314 Grid *grid() const
    \n-
    315 {
    \n-
    316 return grid_;
    \n-
    317 }
    \n-
    \n-
    318
    \n-
    319 template <class Intersection>
    \n-
    \n-
    320 bool wasInserted(const Intersection &intersection) const
    \n-
    321 {
    \n-
    322 return false;
    \n-
    323 }
    \n-
    \n-
    324
    \n-
    325 template <class Intersection>
    \n-
    \n-
    326 int boundaryId(const Intersection &intersection) const
    \n-
    327 {
    \n-
    328 if( boundaryDomainBlock_->isactive() )
    \n-
    329 {
    \n-
    330 std::vector< Point > corners;
    \n-
    331 getCorners( intersection.geometry(), corners );
    \n-
    332 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n-
    333 if( data )
    \n-
    334 return data->id();
    \n-
    335 else
    \n-
    336 return intersection.indexInInside();
    \n-
    337 }
    \n-
    338 else
    \n-
    339 return intersection.indexInInside();
    \n-
    340 }
    \n-
    \n-
    341
    \n-
    342 template< int codim >
    \n-
    \n-
    343 int numParameters () const
    \n-
    344 {
    \n-
    345 return 0;
    \n-
    346 }
    \n-
    \n-
    347
    \n-
    348 // return true if boundary parameters found
    \n-
    \n-\n-
    350 {
    \n-
    351 return boundaryDomainBlock_->hasParameter();
    \n-
    352 }
    \n-
    \n-
    353
    \n-
    354 template< class GG, class II >
    \n-
    355 const typename DGFBoundaryParameter::type &
    \n-
    \n-
    356 boundaryParameter ( const Intersection< GG, II > & intersection ) const
    \n-
    357 {
    \n-\n-
    359 {
    \n-
    360 std::vector< Point > corners;
    \n-
    361 getCorners( intersection.geometry(), corners );
    \n-
    362 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n-
    363 if( data )
    \n-
    364 return data->parameter();
    \n-
    365 else
    \n-\n-
    367 }
    \n-
    368 else
    \n-\n-
    370 }
    \n-
    \n-
    371
    \n-
    372 template< class Entity >
    \n-
    \n-
    373 std::vector<double> &parameter ( [[maybe_unused]] const Entity &entity )
    \n-
    374 {
    \n-
    375 return emptyParam;
    \n-
    376 }
    \n-
    \n-
    377
    \n-
    378 private:
    \n-
    379 void generate( std::istream &gridin, MPICommunicatorType comm );
    \n-
    380
    \n-
    381 template< class Geometry >
    \n-
    382 static void getCorners ( const Geometry &geometry, std::vector< Point > &corners )
    \n-
    383 {
    \n-
    384 corners.resize( geometry.corners() );
    \n-
    385 for( int i = 0; i < geometry.corners(); ++i )
    \n-
    386 {
    \n-
    387 const typename Geometry::GlobalCoordinate corner = geometry.corner( i );
    \n-
    388 for( int j = 0; j < dimension; ++j )
    \n-
    389 corners[ i ][ j ] = corner[ j ];
    \n-
    390 }
    \n-
    391 }
    \n-
    392
    \n-
    393 Grid *grid_;
    \n-
    394 dgf::BoundaryDomBlock *boundaryDomainBlock_;
    \n-
    395 std::vector<double> emptyParam;
    \n-
    396 };
    \n-
    \n-
    397
    \n-
    398 // generate YaspGrid from the provided DGF
    \n-
    399 template< typename ctype, int dim >
    \n-
    400 inline void DGFGridFactory< YaspGrid<dim, EquidistantOffsetCoordinates<ctype, dim> > >
    \n-
    401 ::generate ( std::istream &gridin, MPICommunicatorType comm )
    \n-
    402 {
    \n-
    403 using std::abs;
    \n-
    404 dgf::IntervalBlock intervalBlock( gridin );
    \n-
    405
    \n-
    406 if( !intervalBlock.isactive() )
    \n-
    407 DUNE_THROW( DGFException, "YaspGrid can only be created from an interval block." );
    \n-
    408
    \n-
    409 if( intervalBlock.numIntervals() != 1 )
    \n-
    410 DUNE_THROW( DGFException, "YaspGrid can only handle 1 interval block." );
    \n-
    411
    \n-
    412 if( intervalBlock.dimw() != dim )
    \n-
    413 {
    \n-
    414 DUNE_THROW( DGFException,
    \n-
    415 "Cannot read an interval of dimension "
    \n-
    416 << intervalBlock.dimw()
    \n-
    417 << " into a YaspGrid< " << dim << " >." );
    \n-
    418 }
    \n-
    419
    \n-
    420 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );
    \n-
    421
    \n-
    422 FieldVector<ctype, dim> lower;
    \n-
    423 FieldVector<ctype, dim> upper;
    \n-
    424 std::array<int,dim> anz;
    \n-
    425 for( int i = 0; i < dim; ++i )
    \n-
    426 {
    \n-
    427 lower[ i ] = interval.p[ 0 ][ i ];
    \n-
    428 upper[ i ] = interval.p[ 1 ][ i ];
    \n-
    429 anz[ i ] = interval.n[ i ];
    \n-
    430 }
    \n-
    431
    \n-
    432 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation Transformation;
    \n-
    433 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );
    \n-
    434 std::bitset< dim > periodic;
    \n-
    435 const int numTrafos = trafoBlock.numTransformations();
    \n-
    436 for( int k = 0; k < numTrafos; ++k )
    \n-
    437 {
    \n-
    438 const Transformation &trafo = trafoBlock.transformation( k );
    \n-
    439
    \n-
    440 bool identity = true;
    \n-
    441 for( int i = 0; i < dim; ++i )
    \n-
    442 for( int j = 0; j < dim; ++j )
    \n-
    443 identity &= (abs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);
    \n-
    444 if( !identity )
    \n-
    445 DUNE_THROW( DGFException, "YaspGrid can only handle shifts as periodic face transformations." );
    \n-
    446
    \n-
    447 int numDirs = 0;
    \n-
    448 int dir = -1;
    \n-
    449 for( int currentDir = 0; currentDir < dim; ++currentDir )
    \n-
    450 {
    \n-
    451 if( abs( trafo.shift[ currentDir ] ) > 1e-10 )
    \n-
    452 {
    \n-
    453 dir = currentDir;
    \n-
    454 ++numDirs;
    \n-
    455 }
    \n-
    456 }
    \n-
    457 if ( (numDirs != 1)
    \n-
    458 || (abs( abs( trafo.shift[ dir ] ) - abs( upper[ dir ] - lower[ dir ] ) ) >= 1e-10) )
    \n-
    459 {
    \n-
    460 std::cerr << "Tranformation '" << trafo
    \n-
    461 << "' does not map boundaries on boundaries." << std::endl;
    \n-
    462 }
    \n-
    463 else
    \n-
    464 {
    \n-
    465 periodic[ dir ] = true;
    \n-
    466 }
    \n-
    467 }
    \n-
    468
    \n-
    469 // get grid parameters
    \n-
    470 dgf::YaspGridParameterBlock grdParam( gridin );
    \n-
    471
    \n-
    472 grid_ = new YaspGrid< dim, EquidistantOffsetCoordinates<ctype, dim> >
    \n-
    473 ( lower, upper, anz, periodic, grdParam.overlap(), comm );
    \n-
    474
    \n-
    475 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );
    \n-
    476 }
    \n-
    477
    \n-
    483 template< class ctype, int dim >
    \n-
    \n-
    484 class DGFGridFactory< Dune::YaspGrid<dim, Dune::TensorProductCoordinates<ctype, dim> > >
    \n-
    485 {
    \n-\n-
    487 public:
    \n-
    488 template< typename In >
    \n-
    489 DGFGridFactory ( const In & ) {}
    \n-
    \n-\n-
    491 {
    \n-
    492 throw std::invalid_argument( "Tensor product coordinates for YaspGrid are currently not supported via the DGFGridFactory" );
    \n-
    493 }
    \n-
    \n-
    494 };
    \n-
    \n-
    495
    \n-
    496 template <typename Coordinates, int dim>
    \n-
    \n-
    497 struct DGFGridInfo< YaspGrid<dim , Coordinates> > {
    \n-
    498 static int refineStepsForHalf() {return 1;}
    \n-
    499 static double refineWeight() {return std::pow(0.5,dim);}
    \n-
    500 };
    \n-
    \n-
    501
    \n-
    502}
    \n-
    503#endif // #ifndef DUNE_DGFPARSERYASP_HH
    \n-\n+
    44 polygons.push_back( polygon );
    \n+
    45 }
    \n+
    46 return polygons.size();
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    49 protected:
    \n+\n+
    51 };
    \n+
    \n+
    52
    \n+
    53 } // namespace dgf
    \n+
    54} // end namespace Dune
    \n+
    55
    \n+
    56#endif // #ifndef DUNE_POLYGON_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    void abs(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:328
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n-
    G Grid
    Definition dgfgridfactory.hh:39
    \n-
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n-
    bool haveBoundaryParameters() const
    Definition dgfgridfactory.hh:151
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    Geometry geometry() const
    geometrical information about the intersection in global coordinates.
    Definition common/intersection.hh:323
    \n-
    int indexInInside() const
    Local index of codim 1 entity in the inside() entity where intersection is contained in.
    Definition common/intersection.hh:346
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    Wrapper class for geometries.
    Definition common/geometry.hh:71
    \n-
    FieldVector< ctype, cdim > GlobalCoordinate
    type of the global coordinates
    Definition common/geometry.hh:106
    \n-
    GlobalCoordinate corner(int i) const
    Obtain a corner of the geometry.
    Definition common/geometry.hh:219
    \n-
    int corners() const
    Return the number of corners of the reference element.
    Definition common/geometry.hh:205
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    bool findtoken(std ::string token)
    Definition basic.cc:123
    \n+
    Definition basic.hh:31
    \n+
    void reset()
    Definition basic.hh:51
    \n+
    bool getnextline()
    Definition basic.cc:94
    \n
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n-
    Definition boundarydom.hh:23
    \n-
    int id() const
    Definition boundarydom.hh:42
    \n-
    const BoundaryParameter & parameter() const
    Definition boundarydom.hh:54
    \n-
    Definition boundarydom.hh:195
    \n-
    Common Grid parameters.
    Definition gridparameter.hh:35
    \n+
    Definition polygon.hh:25
    \n+
    PolygonBlock(std::istream &in, int numVtx, int vtxOfs)
    Definition polygon.hh:26
    \n+
    int get(std::vector< std::vector< int > > &polygons)
    Definition polygon.hh:30
    \n+
    int vtxEnd_
    Definition polygon.hh:50
    \n+
    int vtxBegin_
    Definition polygon.hh:50
    \n
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n-
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n-
    Grid parameters for YaspGrid.
    Definition dgfyasp.hh:40
    \n-
    int _overlap
    Definition dgfyasp.hh:42
    \n-
    YaspGridParameterBlock(std::istream &in)
    constructor taking istream
    Definition dgfyasp.hh:46
    \n-
    int overlap() const
    get dimension of world found in block
    Definition dgfyasp.hh:74
    \n-
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:98
    \n-
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:104
    \n-
    bool wasInserted(const Intersection &intersection) const
    Definition dgfyasp.hh:124
    \n-\n-
    std::vector< double > & parameter(const Entity &)
    Definition dgfyasp.hh:177
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfyasp.hh:91
    \n-
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfyasp.hh:160
    \n-\n-\n-\n-
    YaspGrid< dim, EquidistantCoordinates< ctype, dim > > Grid
    Definition dgfyasp.hh:89
    \n-
    int boundaryId(const Intersection &intersection) const
    Definition dgfyasp.hh:130
    \n-
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfyasp.hh:356
    \n-
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:302
    \n-\n-
    int boundaryId(const Intersection &intersection) const
    Definition dgfyasp.hh:326
    \n-
    YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > Grid
    Definition dgfyasp.hh:287
    \n-
    bool wasInserted(const Intersection &intersection) const
    Definition dgfyasp.hh:320
    \n-
    std::vector< double > & parameter(const Entity &entity)
    Definition dgfyasp.hh:373
    \n-\n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfyasp.hh:289
    \n-
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:296
    \n-\n-\n-\n-\n-
    static double refineWeight()
    Definition dgfyasp.hh:499
    \n-
    static int refineStepsForHalf()
    Definition dgfyasp.hh:498
    \n-
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n-
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n-
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n-
    Container for equidistant coordinates in a YaspGrid.
    Definition coordinates.hh:29
    \n-
    Container for equidistant coordinates in a YaspGrid with non-trivial origin.
    Definition coordinates.hh:131
    \n-\n-\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,738 +3,103 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-dgfyasp.hh\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+polygon.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGFPARSERYASP_HH\n-6#define DUNE_DGFPARSERYASP_HH\n+3// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+4// vi: set et ts=2 sw=2 sts=2:\n+5#ifndef DUNE_POLYGON_HH\n+6#define DUNE_POLYGON_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-10#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-15 // External Forward Declarations\n-16 // -----------------------------\n-17\n-18 template< class GridImp, class IntersectionImp >\n-19 class Intersection;\n-20\n-21\n-22 namespace dgf\n-23 {\n-24\n-_\b3_\b8 class _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-39 : public _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-40 {\n-41 protected:\n-_\b4_\b2 int _\b__\bo_\bv_\be_\br_\bl_\ba_\bp; // overlap for YaspGrid\n+8#include \n+9#include \n+10\n+11#include \n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+17 namespace dgf\n+18 {\n+19\n+20 // PolygonBlock\n+21 // ------------\n+22\n+_\b2_\b3 struct _\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+25 {\n+_\b2_\b6 _\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std::istream &in, int numVtx, int vtxOfs )\n+27 : _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk( in, \"Polygon\" ), _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_( vtxOfs ), _\bv_\bt_\bx_\bE_\bn_\bd_\b_( vtxOfs + numVtx\n+)\n+28 {}\n+29\n+_\b3_\b0 int _\bg_\be_\bt ( std::vector< std::vector< int > > &polygons )\n+31 {\n+32 _\br_\be_\bs_\be_\bt();\n+33 std::vector< int > polygon;\n+34 while( _\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be() )\n+35 {\n+36 polygon.clear();\n+37 for( int vtxIdx; _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by( vtxIdx ); )\n+38 {\n+39 if( (_\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_ > vtxIdx) || (vtxIdx >= _\bv_\bt_\bx_\bE_\bn_\bd_\b_) )\n+40 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error in \" << *this << \": Invalid vertex index (\"\n+<< vtxIdx << \" not int [\" << _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_ << \", \" << _\bv_\bt_\bx_\bE_\bn_\bd_\b_ << \"[)\" );\n+41 polygon.push_back( vtxIdx - _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_ );\n+42 }\n 43\n-44 public:\n-_\b4_\b6 _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk( std::istream &in )\n-47 : _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk( in ),\n-48 _\b__\bo_\bv_\be_\br_\bl_\ba_\bp( 0 ) // default value\n-49 {\n-50 // check overlap\n-51 if( _\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn( \"overlap\" ) )\n-52 {\n-53 int x;\n-54 if( _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by(x) ) _\b__\bo_\bv_\be_\br_\bl_\ba_\bp = x;\n-55 else\n-56 {\n-57 dwarn << \"GridParameterBlock: found keyword `overlap' but no value,\n-defaulting to `\" << _\b__\bo_\bv_\be_\br_\bl_\ba_\bp <<\"' !\\n\";\n-58 }\n-59\n-60 if (_\b__\bo_\bv_\be_\br_\bl_\ba_\bp < 0)\n-61 {\n-62 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\"Negative overlap specified!\");\n-63 }\n-64 }\n-65 else\n-66 {\n-67 dwarn << \"YaspGridParameterBlock: Parameter 'overlap' not specified, \"\n-68 << \"defaulting to '\" << _\b__\bo_\bv_\be_\br_\bl_\ba_\bp << \"'.\" << std::endl;\n-69 }\n-70\n-71 }\n-72\n-_\b7_\b4 int _\bo_\bv_\be_\br_\bl_\ba_\bp () const\n-75 {\n-76 return _\b__\bo_\bv_\be_\br_\bl_\ba_\bp;\n-77 }\n-78\n-79 };\n-80\n-81 }\n-82\n-86 template \n-_\b8_\b7 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n-88 {\n-_\b8_\b9 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd;\n-_\b9_\b0 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b9_\b1 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n-92\n-93 private:\n-94 typedef FieldVector< ctype, dimension > Point;\n-95 typedef _\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\ba_\bi_\bn_\bB_\bl_\bo_\bc_\bk;\n-96\n-97 public:\n-_\b9_\b8 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n-99 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-100 {\n-101 generate( input, comm );\n-102 }\n-103\n-_\b1_\b0_\b4 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n-105 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-106 {\n-107 std::ifstream input( filename.c_str() );\n-108 if( !input )\n-109 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error: Macrofile '\" << filename << \"' not found\"\n-);\n-110 generate( input, comm );\n-111 }\n-112\n-_\b1_\b1_\b3 _\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ()\n-114 {\n-115 delete boundaryDomainBlock_;\n-116 }\n-117\n-_\b1_\b1_\b8 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd() const\n-119 {\n-120 return grid_;\n-121 }\n-122\n-123 template \n-_\b1_\b2_\b4 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n-125 {\n-126 return false;\n-127 }\n-128\n-129 template \n-_\b1_\b3_\b0 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n-131 {\n-132 if( boundaryDomainBlock_->isactive() )\n-133 {\n-134 std::vector< Point > corners;\n-135 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n-136 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n-137 if( data )\n-138 return data->_\bi_\bd();\n-139 else\n-140 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n-141 }\n-142 else\n-143 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n-144 }\n-145\n-146 template< int codim >\n-_\b1_\b4_\b7 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-148 {\n-149 return 0;\n-150 }\n-151\n-152 // return true if boundary parameters found\n-_\b1_\b5_\b3 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-154 {\n-155 return boundaryDomainBlock_->hasParameter();\n-156 }\n-157\n-158 template< class GG, class II >\n-159 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n-_\b1_\b6_\b0 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection ) const\n-161 {\n-162 if( _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs() )\n-163 {\n-164 std::vector< Point > corners;\n-165 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n-166 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n-167 if( data )\n-168 return data->_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br();\n-169 else\n-170 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-171 }\n-172 else\n-173 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-174 }\n-175\n-176 template< class Entity >\n-_\b1_\b7_\b7 std::vector &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bE_\bn_\bt_\bi_\bt_\by & )\n-178 {\n-179 return emptyParam;\n-180 }\n-181\n-182 private:\n-183 void generate( std::istream &gridin, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm );\n-184\n-185 template< class Geometry >\n-186 static void getCorners ( const _\bG_\be_\bo_\bm_\be_\bt_\br_\by &geometry, std::vector< Point >\n-&corners )\n-187 {\n-188 corners.resize( geometry._\bc_\bo_\br_\bn_\be_\br_\bs() );\n-189 for( int i = 0; i < geometry._\bc_\bo_\br_\bn_\be_\br_\bs(); ++i )\n-190 {\n-191 const typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be corner = geometry._\bc_\bo_\br_\bn_\be_\br( i );\n-192 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n-193 corners[ i ][ j ] = corner[ j ];\n-194 }\n-195 }\n-196\n-197 _\bG_\br_\bi_\bd *grid_;\n-198 dgf::BoundaryDomBlock *boundaryDomainBlock_;\n-199 std::vector emptyParam;\n-200 };\n-201\n-202 // generate YaspGrid from the provided DGF\n-203 template< typename ctype, int dim >\n-204 inline void DGFGridFactory< YaspGrid< dim , EquidistantCoordinates > >\n-205 ::generate ( std::istream &gridin, MPICommunicatorType comm )\n-206 {\n-207 using std::abs;\n-208 dgf::IntervalBlock intervalBlock( gridin );\n-209\n-210 if( !intervalBlock.isactive() )\n-211 DUNE_THROW( DGFException, \"YaspGrid can only be created from an interval\n-block.\" );\n-212\n-213 if( intervalBlock.numIntervals() != 1 )\n-214 DUNE_THROW( DGFException, \"YaspGrid can only handle 1 interval block.\" );\n-215\n-216 if( intervalBlock.dimw() != dim )\n-217 {\n-218 DUNE_THROW( DGFException,\n-219 \"Cannot read an interval of dimension \" << intervalBlock.dimw()\n-220 << \" into a YaspGrid< \" << dim << \" >.\" );\n-221 }\n-222\n-223 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );\n-224\n-225 FieldVector lang;\n-226 std::array anz;\n-227 for( int i = 0; i < dim; ++i )\n-228 {\n-229 // check that start point is 0.0\n-230 if( _\ba_\bb_\bs( interval.p[ 0 ][ i ] ) > 1e-10 )\n-231 {\n-232 DUNE_THROW( DGFException,\n-233 \"YaspGrid cannot handle grids with non-zero left lower corner.\" );\n-234 }\n-235\n-236 lang[ i ] = interval.p[ 1 ][ i ] - interval.p[ 0 ][ i ];\n-237 anz[ i ] = interval.n[ i ];\n-238 }\n-239\n-240 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation\n-Transformation;\n-241 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );\n-242 std::bitset< dim > per;\n-243 const int numTrafos = trafoBlock.numTransformations();\n-244 for( int k = 0; k < numTrafos; ++k )\n-245 {\n-246 const Transformation &trafo = trafoBlock.transformation( k );\n-247\n-248 bool identity = true;\n-249 for( int i = 0; i < dim; ++i )\n-250 for( int j = 0; j < dim; ++j )\n-251 identity &= (_\ba_\bb_\bs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);\n-252 if( !identity )\n-253 DUNE_THROW( DGFException, \"YaspGrid can only handle shifts as periodic face\n-transformations.\" );\n-254\n-255 int numDirs = 0;\n-256 int dir = -1;\n-257 for( int i = 0; i < dim; ++i )\n-258 {\n-259 if( _\ba_\bb_\bs( trafo.shift[ i ] ) < 1e-10 )\n-260 continue;\n-261 dir = i;\n-262 ++numDirs;\n-263 }\n-264 if( (numDirs != 1) || (_\ba_\bb_\bs( _\ba_\bb_\bs( trafo.shift[ dir ] ) - lang[ dir ] ) >=\n-1e-10) )\n-265 {\n-266 std::cerr << \"Tranformation '\" << trafo\n-267 << \"' does not map boundaries on boundaries.\" << std::endl;\n-268 }\n-269 else\n-270 per[ dir ] = true;\n-271 }\n-272\n-273 // get grid parameters\n-274 dgf::YaspGridParameterBlock grdParam( gridin );\n-275\n-276 grid_ = new YaspGrid< dim , EquidistantCoordinates >( lang,\n-anz, per, grdParam.overlap(), comm );\n-277\n-278 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );\n-279 }\n-280\n-284 template \n-_\b2_\b8_\b5 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n-286 {\n-_\b2_\b8_\b7 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd;\n-_\b2_\b8_\b8 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b2_\b8_\b9 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n-290\n-291 private:\n-292 typedef FieldVector< ctype, dimension > Point;\n-293 typedef _\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\ba_\bi_\bn_\bB_\bl_\bo_\bc_\bk;\n-294\n-295 public:\n-_\b2_\b9_\b6 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n-297 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-298 {\n-299 generate( input, comm );\n-300 }\n-301\n-_\b3_\b0_\b2 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n-303 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n-304 {\n-305 std::ifstream input( filename.c_str() );\n-306 generate( input, comm );\n-307 }\n-308\n-_\b3_\b0_\b9 _\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ()\n-310 {\n-311 delete boundaryDomainBlock_;\n-312 }\n-313\n-_\b3_\b1_\b4 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd() const\n-315 {\n-316 return grid_;\n-317 }\n-318\n-319 template \n-_\b3_\b2_\b0 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n-321 {\n-322 return false;\n-323 }\n-324\n-325 template \n-_\b3_\b2_\b6 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n-327 {\n-328 if( boundaryDomainBlock_->isactive() )\n-329 {\n-330 std::vector< Point > corners;\n-331 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n-332 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n-333 if( data )\n-334 return data->_\bi_\bd();\n-335 else\n-336 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n-337 }\n-338 else\n-339 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n-340 }\n-341\n-342 template< int codim >\n-_\b3_\b4_\b3 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-344 {\n-345 return 0;\n-346 }\n-347\n-348 // return true if boundary parameters found\n-_\b3_\b4_\b9 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n-350 {\n-351 return boundaryDomainBlock_->hasParameter();\n-352 }\n-353\n-354 template< class GG, class II >\n-355 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n-_\b3_\b5_\b6 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection ) const\n-357 {\n-358 if( _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs() )\n-359 {\n-360 std::vector< Point > corners;\n-361 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n-362 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n-363 if( data )\n-364 return data->_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br();\n-365 else\n-366 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-367 }\n-368 else\n-369 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n-370 }\n-371\n-372 template< class Entity >\n-_\b3_\b7_\b3 std::vector &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( [[maybe_unused]] const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-374 {\n-375 return emptyParam;\n-376 }\n-377\n-378 private:\n-379 void generate( std::istream &gridin, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm );\n-380\n-381 template< class Geometry >\n-382 static void getCorners ( const _\bG_\be_\bo_\bm_\be_\bt_\br_\by &geometry, std::vector< Point >\n-&corners )\n-383 {\n-384 corners.resize( geometry._\bc_\bo_\br_\bn_\be_\br_\bs() );\n-385 for( int i = 0; i < geometry._\bc_\bo_\br_\bn_\be_\br_\bs(); ++i )\n-386 {\n-387 const typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be corner = geometry._\bc_\bo_\br_\bn_\be_\br( i );\n-388 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n-389 corners[ i ][ j ] = corner[ j ];\n-390 }\n-391 }\n-392\n-393 _\bG_\br_\bi_\bd *grid_;\n-394 dgf::BoundaryDomBlock *boundaryDomainBlock_;\n-395 std::vector emptyParam;\n-396 };\n-397\n-398 // generate YaspGrid from the provided DGF\n-399 template< typename ctype, int dim >\n-400 inline void DGFGridFactory< YaspGrid > >\n-401 ::generate ( std::istream &gridin, MPICommunicatorType comm )\n-402 {\n-403 using std::abs;\n-404 dgf::IntervalBlock intervalBlock( gridin );\n-405\n-406 if( !intervalBlock.isactive() )\n-407 DUNE_THROW( DGFException, \"YaspGrid can only be created from an interval\n-block.\" );\n-408\n-409 if( intervalBlock.numIntervals() != 1 )\n-410 DUNE_THROW( DGFException, \"YaspGrid can only handle 1 interval block.\" );\n-411\n-412 if( intervalBlock.dimw() != dim )\n-413 {\n-414 DUNE_THROW( DGFException,\n-415 \"Cannot read an interval of dimension \"\n-416 << intervalBlock.dimw()\n-417 << \" into a YaspGrid< \" << dim << \" >.\" );\n-418 }\n-419\n-420 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );\n-421\n-422 FieldVector lower;\n-423 FieldVector upper;\n-424 std::array anz;\n-425 for( int i = 0; i < dim; ++i )\n-426 {\n-427 lower[ i ] = interval.p[ 0 ][ i ];\n-428 upper[ i ] = interval.p[ 1 ][ i ];\n-429 anz[ i ] = interval.n[ i ];\n-430 }\n-431\n-432 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation\n-Transformation;\n-433 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );\n-434 std::bitset< dim > periodic;\n-435 const int numTrafos = trafoBlock.numTransformations();\n-436 for( int k = 0; k < numTrafos; ++k )\n-437 {\n-438 const Transformation &trafo = trafoBlock.transformation( k );\n-439\n-440 bool identity = true;\n-441 for( int i = 0; i < dim; ++i )\n-442 for( int j = 0; j < dim; ++j )\n-443 identity &= (_\ba_\bb_\bs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);\n-444 if( !identity )\n-445 DUNE_THROW( DGFException, \"YaspGrid can only handle shifts as periodic face\n-transformations.\" );\n-446\n-447 int numDirs = 0;\n-448 int dir = -1;\n-449 for( int currentDir = 0; currentDir < dim; ++currentDir )\n-450 {\n-451 if( _\ba_\bb_\bs( trafo.shift[ currentDir ] ) > 1e-10 )\n-452 {\n-453 dir = currentDir;\n-454 ++numDirs;\n-455 }\n-456 }\n-457 if ( (numDirs != 1)\n-458 || (_\ba_\bb_\bs( _\ba_\bb_\bs( trafo.shift[ dir ] ) - _\ba_\bb_\bs( upper[ dir ] - lower[ dir ] ) )\n->= 1e-10) )\n-459 {\n-460 std::cerr << \"Tranformation '\" << trafo\n-461 << \"' does not map boundaries on boundaries.\" << std::endl;\n-462 }\n-463 else\n-464 {\n-465 periodic[ dir ] = true;\n-466 }\n-467 }\n-468\n-469 // get grid parameters\n-470 dgf::YaspGridParameterBlock grdParam( gridin );\n-471\n-472 grid_ = new YaspGrid< dim, EquidistantOffsetCoordinates >\n-473 ( lower, upper, anz, periodic, grdParam.overlap(), comm );\n-474\n-475 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );\n-476 }\n-477\n-483 template< class ctype, int dim >\n-_\b4_\b8_\b4 class _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bD_\bu_\bn_\be::_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n-485 {\n-486 using _\bG_\br_\bi_\bd = _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b>\n->;\n-487 public:\n-488 template< typename In >\n-_\b4_\b8_\b9 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const In & ) {}\n-_\b4_\b9_\b0 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd()\n-491 {\n-492 throw std::invalid_argument( \"Tensor product coordinates for YaspGrid are\n-currently not supported via the DGFGridFactory\" );\n-493 }\n-494 };\n-495\n-496 template \n-_\b4_\b9_\b7 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > {\n-_\b4_\b9_\b8 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf() {return 1;}\n-_\b4_\b9_\b9 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt() {return std::pow(0.5,dim);}\n-500 };\n-501\n-502}\n-503#endif // #ifndef DUNE_DGFPARSERYASP_HH\n-_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh\n+44 polygons.push_back( polygon );\n+45 }\n+46 return polygons.size();\n+47 }\n+48\n+49 protected:\n+_\b5_\b0 int _\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_, _\bv_\bt_\bx_\bE_\bn_\bd_\b_;\n+51 };\n+52\n+53 } // namespace dgf\n+54} // end namespace Dune\n+55\n+56#endif // #ifndef DUNE_POLYGON_HH\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bb_\bs\n-void abs(const DofVectorPointer< int > &dofVector)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:328\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-geometrical information about the intersection in global coordinates.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:323\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n-int indexInInside() const\n-Local index of codim 1 entity in the inside() entity where intersection is\n-contained in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Wrapper class for geometries.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, cdim > GlobalCoordinate\n-type of the global coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bo_\br_\bn_\be_\br\n-GlobalCoordinate corner(int i) const\n-Obtain a corner of the geometry.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bs\n-int corners() const\n-Return the number of corners of the reference element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn\n-bool findtoken(std ::string token)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be\n+bool getnextline()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:94\n _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by\n bool getnextentry(ENTRY &entry)\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bd\n-int id() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const BoundaryParameter & parameter() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-Common Grid parameters.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+PolygonBlock(std::istream &in, int numVtx, int vtxOfs)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n+int get(std::vector< std::vector< int > > &polygons)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bv_\bt_\bx_\bE_\bn_\bd_\b_\n+int vtxEnd_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bg_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bv_\bt_\bx_\bB_\be_\bg_\bi_\bn_\b_\n+int vtxBegin_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polygon.hh:50\n _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n exception class for IO errors in the DGF parser\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n-Some simple static information for a given GridType.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-Grid parameters for YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\b__\bo_\bv_\be_\br_\bl_\ba_\bp\n-int _overlap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n-YaspGridParameterBlock(std::istream &in)\n-constructor taking istream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bv_\be_\br_\bl_\ba_\bp\n-int overlap() const\n-get dimension of world found in block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n-getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(const std::string &filename, MPICommunicatorType\n-comm=MPIHelper::getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n-bool wasInserted(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Entity &)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n-> &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-~DGFGridFactory()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bg_\br_\bi_\bd\n-Grid * grid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bG_\br_\bi_\bd\n-YaspGrid< dim, EquidistantCoordinates< ctype, dim > > Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n-> &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:356\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(const std::string &filename, MPICommunicatorType\n-comm=MPIHelper::getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:302\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n-Grid * grid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-int boundaryId(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n-YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n-bool wasInserted(const Intersection &intersection) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::vector< double > & parameter(const Entity &entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:373\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-bool haveBoundaryParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:349\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-MPIHelper::MPICommunicator MPICommunicatorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:289\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n-getCommunicator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:296\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-~DGFGridFactory()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:309\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-_\b>_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n-int numParameters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:343\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n-_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n-Grid * grid()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:490\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n-_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DGFGridFactory(const In &)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:489\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n-static double refineWeight()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:499\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n-static int refineStepsForHalf()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n-static const type & defaultValue()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-std::string type\n-type of additional boundary parameters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n-[ provides Dune::Grid ]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Container for equidistant coordinates in a YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Container for equidistant coordinates in a YaspGrid with non-trivial origin.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:131\n-_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00899.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00899.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macrogrid.hh File Reference\n+dune-grid: polyhedron.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    macrogrid.hh File Reference
    \n+
    polyhedron.hh File Reference
    \n
    \n
    \n-
    #include <iostream>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+
    #include <algorithm>
    \n+#include <dune/grid/io/file/dgfparser/blocks/polygon.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n+\n \n

    \n Classes

    class  Dune::MacroGrid
    struct  Dune::dgf::PolyhedronBlock
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,22 +3,24 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-macrogrid.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+polyhedron.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\bo_\bl_\by_\bg_\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_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00899_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00899_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macrogrid.hh Source File\n+dune-grid: polyhedron.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,109 @@\n
    \n \n \n \n \n \n \n
    \n-
    macrogrid.hh
    \n+
    polyhedron.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_MACROGRID_HH
    \n-
    6#define DUNE_DGF_MACROGRID_HH
    \n+
    3// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=2 sw=2 sts=2:
    \n+
    5#ifndef DUNE_POLYHEDRON_HH
    \n+
    6#define DUNE_POLYHEDRON_HH
    \n
    7
    \n-
    8
    \n-
    9#include <iostream>
    \n-
    10
    \n-
    11#include <dune/common/parallel/mpihelper.hh>
    \n-\n-
    13
    \n+
    8#include <algorithm>
    \n+
    9
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 // forward declarations
    \n-
    18 // --------------------
    \n-
    19 class DuneGridFormatParser;
    \n+
    15 namespace dgf
    \n+
    16 {
    \n+
    17
    \n+
    18 // PolyhedronBlock
    \n+
    19 // ---------------
    \n
    20
    \n
    \n-\n-
    22 : protected DuneGridFormatParser
    \n-
    23 {
    \n-
    24 template< class GridType >
    \n-
    25 friend struct DGFGridFactory;
    \n-
    26
    \n-
    27 public:
    \n-
    28 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n-
    29
    \n-
    30 protected:
    \n-
    \n-
    32 MacroGrid(const char* filename, MPICommunicatorType MPICOMM = MPIHelper::getCommunicator())
    \n-
    33 : DuneGridFormatParser( rank(MPICOMM), size(MPICOMM) )
    \n-
    34 , filename_(filename)
    \n-
    35 , MPICOMM_(MPICOMM) {}
    \n-
    \n-
    36
    \n-
    \n-
    38 MacroGrid(MPICommunicatorType MPICOMM = MPIHelper::getCommunicator())
    \n-
    39 : DuneGridFormatParser( rank(MPICOMM), size(MPICOMM) )
    \n-
    40 , filename_(0)
    \n-
    41 , MPICOMM_(MPICOMM) {}
    \n-
    \n-
    42
    \n-
    44 template <class GridType>
    \n-
    \n-
    45 inline GridType * createGrid ()
    \n-
    46 {
    \n-
    47 return Impl<GridType>::generate(*this,filename_,MPICOMM_);
    \n-
    48 }
    \n-
    \n-
    49 private:
    \n-
    50 static int rank( [[maybe_unused]] MPICommunicatorType MPICOMM )
    \n-
    51 {
    \n-
    52 int rank = 0;
    \n-
    53#if HAVE_MPI
    \n-
    54 MPI_Comm_rank( MPICOMM, &rank );
    \n-
    55#endif
    \n-
    56 return rank;
    \n-
    57 }
    \n-
    58 static int size( [[maybe_unused]] MPICommunicatorType MPICOMM )
    \n-
    59 {
    \n-
    60 int size = 1;
    \n-
    61#if HAVE_MPI
    \n-
    62 MPI_Comm_size( MPICOMM, &size );
    \n-
    63#endif
    \n-
    64 return size;
    \n-
    65 }
    \n-
    77 template< class GridType >
    \n-
    78 struct Impl
    \n-
    79 {
    \n-
    80 static GridType* generate(MacroGrid& mg,
    \n-
    81 const char* filename, MPICommunicatorType MPICOMM = MPIHelper::getCommunicator() )
    \n-
    82 {
    \n-
    83 // make assertion depend on the template argument but always evaluate to false
    \n-
    84 static_assert( GridType::dimension<0,"DGF grid factory missing. Did you forget to add the corresponding dgf header or config.h?");
    \n-
    85 }
    \n-
    86 };
    \n-
    87
    \n-
    88 const char* filename_;
    \n-
    89 MPICommunicatorType MPICOMM_;
    \n-
    90 };
    \n-
    \n-
    91
    \n-
    92} // end namespace Dune
    \n-
    93
    \n-
    94#endif
    \n-\n+\n+
    22 : public BasicBlock
    \n+
    23 {
    \n+
    \n+
    24 explicit PolyhedronBlock ( std::istream &in, int numPolys )
    \n+
    25 : BasicBlock( in, "Polyhedron" ), numPolys_( numPolys )
    \n+
    26 {}
    \n+
    \n+
    27
    \n+
    \n+
    28 int get ( std::vector< std::vector< int > > &polyhedra )
    \n+
    29 {
    \n+
    30 reset();
    \n+
    31 std::vector< int > polyhedron;
    \n+
    32 int minPolyId = 1;
    \n+
    33 while( getnextline() )
    \n+
    34 {
    \n+
    35 polyhedron.clear();
    \n+
    36 for( int polyIdx; getnextentry( polyIdx ); )
    \n+
    37 {
    \n+
    38 if( (polyIdx < 0) || (polyIdx > numPolys_) )
    \n+
    39 DUNE_THROW( DGFException, "Error in " << *this << ": Invalid polygon index (" << polyIdx << " not int [0, " << numPolys_ << "])" );
    \n+
    40
    \n+
    41 minPolyId = std::min( minPolyId, polyIdx );
    \n+
    42 polyhedron.push_back( polyIdx );
    \n+
    43 }
    \n+
    44
    \n+
    45 polyhedra.push_back( polyhedron );
    \n+
    46 }
    \n+
    47
    \n+
    48 // subtract minimal number to have 0 starting numbering
    \n+
    49 if( minPolyId > 0 )
    \n+
    50 {
    \n+
    51 const size_t polySize = polyhedra.size();
    \n+
    52 for( size_t i=0; i<polySize; ++i )
    \n+
    53 {
    \n+
    54 const size_t pSize = polyhedra[ i ].size();
    \n+
    55 for( size_t j=0; j<pSize; ++j )
    \n+
    56 {
    \n+
    57 polyhedra[ i ][ j ] -= minPolyId;
    \n+
    58 }
    \n+
    59 }
    \n+
    60 }
    \n+
    61 return polyhedra.size();
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    64 protected:
    \n+
    65 const int numPolys_;
    \n+
    66 };
    \n+
    \n+
    67
    \n+
    68 } // namespace dgf
    \n+
    69} // end namespace Dune
    \n+
    70
    \n+
    71#endif // #ifndef DUNE_POLYHEDRON_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition dgfgridfactory.hh:38
    \n-
    Definition macrogrid.hh:23
    \n-
    MacroGrid(const char *filename, MPICommunicatorType MPICOMM=MPIHelper::getCommunicator())
    constructor given the name of a DGF file
    Definition macrogrid.hh:32
    \n-
    MacroGrid(MPICommunicatorType MPICOMM=MPIHelper::getCommunicator())
    constructor given the name of a DGF file
    Definition macrogrid.hh:38
    \n-
    GridType * createGrid()
    returns pointer to a new instance of type GridType created from a DGF file
    Definition macrogrid.hh:45
    \n-
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition macrogrid.hh:28
    \n-
    The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures us...
    Definition parser.hh:47
    \n+
    Definition basic.hh:31
    \n+
    void reset()
    Definition basic.hh:51
    \n+
    bool getnextline()
    Definition basic.cc:94
    \n+
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n+
    Definition polyhedron.hh:23
    \n+
    const int numPolys_
    Definition polyhedron.hh:65
    \n+
    PolyhedronBlock(std::istream &in, int numPolys)
    Definition polyhedron.hh:24
    \n+
    int get(std::vector< std::vector< int > > &polyhedra)
    Definition polyhedron.hh:28
    \n+
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,124 +3,114 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-macrogrid.hh\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+polyhedron.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_MACROGRID_HH\n-6#define DUNE_DGF_MACROGRID_HH\n+3// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+4// vi: set et ts=2 sw=2 sts=2:\n+5#ifndef DUNE_POLYHEDRON_HH\n+6#define DUNE_POLYHEDRON_HH\n 7\n-8\n-9#include \n-10\n-11#include \n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n-13\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 // forward declarations\n-18 // --------------------\n-19 class DuneGridFormatParser;\n+15 namespace dgf\n+16 {\n+17\n+18 // PolyhedronBlock\n+19 // ---------------\n 20\n-_\b2_\b1 class _\bM_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd\n-22 : protected _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n+_\b2_\b1 struct _\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+22 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n 23 {\n-24 template< class GridType >\n-_\b2_\b5 friend struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-26\n-27 public:\n-_\b2_\b8 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n-29\n-30 protected:\n-_\b3_\b2 _\bM_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd(const char* filename, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM = MPIHelper::\n-getCommunicator())\n-33 : _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br( rank(MPICOMM), size(MPICOMM) )\n-34 , filename_(filename)\n-35 , MPICOMM_(MPICOMM) {}\n-36\n-_\b3_\b8 _\bM_\ba_\bc_\br_\bo_\bG_\br_\bi_\bd(_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM = MPIHelper::getCommunicator())\n-39 : _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br( rank(MPICOMM), size(MPICOMM) )\n-40 , filename_(0)\n-41 , MPICOMM_(MPICOMM) {}\n-42\n-44 template \n-_\b4_\b5 inline GridType * _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd ()\n-46 {\n-47 return Impl::generate(*this,filename_,MPICOMM_);\n-48 }\n-49 private:\n-50 static int rank( [[maybe_unused]] _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM )\n-51 {\n-52 int rank = 0;\n-53#if HAVE_MPI\n-54 MPI_Comm_rank( MPICOMM, &rank );\n-55#endif\n-56 return rank;\n-57 }\n-58 static int size( [[maybe_unused]] _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM )\n-59 {\n-60 int size = 1;\n-61#if HAVE_MPI\n-62 MPI_Comm_size( MPICOMM, &size );\n-63#endif\n-64 return size;\n-65 }\n-77 template< class GridType >\n-78 struct Impl\n-79 {\n-80 static GridType* generate(MacroGrid& mg,\n-81 const char* filename, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM = MPIHelper::\n-getCommunicator() )\n-82 {\n-83 // make assertion depend on the template argument but always evaluate to\n-false\n-84 static_assert( GridType::dimension<0,\"DGF grid factory missing. Did you\n-forget to add the corresponding dgf header or config.h?\");\n-85 }\n-86 };\n-87\n-88 const char* filename_;\n-89 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be MPICOMM_;\n-90 };\n-91\n-92} // end namespace Dune\n-93\n-94#endif\n-_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\b2_\b4 explicit _\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std::istream &in, int numPolys )\n+25 : _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk( in, \"Polyhedron\" ), _\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_( numPolys )\n+26 {}\n+27\n+_\b2_\b8 int _\bg_\be_\bt ( std::vector< std::vector< int > > &polyhedra )\n+29 {\n+30 _\br_\be_\bs_\be_\bt();\n+31 std::vector< int > polyhedron;\n+32 int minPolyId = 1;\n+33 while( _\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be() )\n+34 {\n+35 polyhedron.clear();\n+36 for( int polyIdx; _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by( polyIdx ); )\n+37 {\n+38 if( (polyIdx < 0) || (polyIdx > _\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_) )\n+39 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error in \" << *this << \": Invalid polygon index\n+(\" << polyIdx << \" not int [0, \" << _\bn_\bu_\bm_\bP_\bo_\bl_\by_\bs_\b_ << \"])\" );\n+40\n+41 minPolyId = std::min( minPolyId, polyIdx );\n+42 polyhedron.push_back( polyIdx );\n+43 }\n+44\n+45 polyhedra.push_back( polyhedron );\n+46 }\n+47\n+48 // subtract minimal number to have 0 starting numbering\n+49 if( minPolyId > 0 )\n+50 {\n+51 const size_t polySize = polyhedra.size();\n+52 for( size_t i=0; i > &polyhedra)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polyhedron.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+exception class for IO errors in the DGF parser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00902.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00902.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtk.hh File Reference\n+dune-grid: boundaryseg.cc File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,34 @@\n \n \n \n \n \n \n \n
    \n-
    vtk.hh File Reference
    \n+ \n+
    boundaryseg.cc File Reference
    \n
    \n
    \n-\n-

    Convenience header which includes all available VTK writers. \n-More...

    \n-\n-

    Go to the source code of this file.

    \n-

    Detailed Description

    \n-

    Convenience header which includes all available VTK writers.

    \n-
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/boundaryseg.hh>
    \n+
    \n+\n+\n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n+\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,19 +2,21 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-vtk.hh File Reference\n-Convenience header which includes all available VTK writers. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \"_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n-#include \"_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n-#include \"_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n-#include \"_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n-#include \"_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bw_\br_\bi_\bt_\be_\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 which includes all available VTK writers.\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+boundaryseg.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\b._\bh_\bh>\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00905.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00905.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtuwriter.hh File Reference\n+dune-grid: periodicfacetrans.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,52 @@\n \n \n \n \n \n \n \n
    \n \n-
    vtuwriter.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    periodicfacetrans.hh File Reference
    \n \n
    \n-
    #include <ostream>
    \n-#include <string>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/indent.hh>
    \n-#include <dune/grid/io/file/vtk/common.hh>
    \n-#include <dune/grid/io/file/vtk/dataarraywriter.hh>
    \n+
    #include <iostream>
    \n+#include <vector>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.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::VTK::VTUWriter
     Dump a .vtu/.vtp files contents to a stream. More...
    struct  Dune::dgf::PeriodicFaceTransformationBlock
     
    class  Dune::dgf::PeriodicFaceTransformationBlock::Matrix< T >
     
    struct  Dune::dgf::PeriodicFaceTransformationBlock::AffineTransformation
     
    \n \n \n \n \n-\n+\n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n+\n+\n+\n

    \n+Functions

    std::ostream & Dune::dgf::operator<< (std::ostream &out, const PeriodicFaceTransformationBlock::AffineTransformation &trafo)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,34 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vtuwriter.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\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+periodicfacetrans.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 Dump a .vtu/.vtp files contents to a stream. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bT_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const\n+ _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn &trafo)\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00905_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00905_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtuwriter.hh Source File\n+dune-grid: periodicfacetrans.hh Source File\n \n \n \n \n \n \n \n@@ -70,308 +70,191 @@\n
    \n \n \n \n \n \n \n
    \n-
    vtuwriter.hh
    \n+
    periodicfacetrans.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH
    \n-
    8
    \n-
    9#include <ostream>
    \n-
    10#include <string>
    \n-
    11
    \n-
    12#include <dune/common/exceptions.hh>
    \n-
    13#include <dune/common/indent.hh>
    \n-
    14
    \n-\n-\n-
    17
    \n-
    18namespace Dune {
    \n+
    5#ifndef DUNE_DGF_PERIODICFACETRANSBLOCK_HH
    \n+
    6#define DUNE_DGF_PERIODICFACETRANSBLOCK_HH
    \n+
    7
    \n+
    8#include <iostream>
    \n+
    9#include <vector>
    \n+
    10
    \n+\n+
    12
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    17 namespace dgf
    \n+
    18 {
    \n
    19
    \n+
    20 // PeriodicFaceTransformationBlock
    \n+
    21 // -------------------------------
    \n
    22
    \n-
    23 namespace VTK {
    \n-
    24
    \n-
    26
    \n-
    \n-
    98 class VTUWriter {
    \n-
    99 public:
    \n-
    100 std::ostream& stream;
    \n-\n-
    102
    \n-
    103 private:
    \n-\n-
    105 Indent indent;
    \n-
    106
    \n-
    107 std::string fileType;
    \n-
    108 std::string cellName;
    \n+
    \n+\n+
    24 : public BasicBlock
    \n+
    25 {
    \n+
    26 template< class T >
    \n+
    27 class Matrix;
    \n+
    28
    \n+\n+
    30
    \n+
    31 private:
    \n+
    32 std::vector< AffineTransformation > transformations_;
    \n+
    33
    \n+
    34 // copy not implemented
    \n+\n+
    36
    \n+
    37 public:
    \n+
    38 // initialize block and get dimension of world
    \n+
    39 PeriodicFaceTransformationBlock ( std::istream &in, int dimworld );
    \n+
    40
    \n+
    \n+
    41 const AffineTransformation &transformation ( int i ) const
    \n+
    42 {
    \n+
    43 assert( i < numTransformations() );
    \n+
    44 return transformations_[ i ];
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+
    47 int numTransformations () const
    \n+
    48 {
    \n+
    49 return transformations_.size();
    \n+
    50 }
    \n+
    \n+
    51
    \n+
    52 private:
    \n+
    53 void match ( char what );
    \n+
    54 };
    \n+
    \n+
    55
    \n+
    56
    \n+
    57 // PeriodicFaceTransformationBlock::Matrix
    \n+
    58 // ---------------------------------------
    \n+
    59
    \n+
    60 template< class T >
    \n+
    \n+\n+
    62 {
    \n+
    63 int rows_;
    \n+
    64 int cols_;
    \n+
    65 std::vector< T > fields_;
    \n+
    66
    \n+
    67 public:
    \n+
    \n+
    68 Matrix ( int rows, int cols )
    \n+
    69 : rows_( rows ),
    \n+
    70 cols_( cols ),
    \n+
    71 fields_( rows * cols )
    \n+
    72 {}
    \n+
    \n+
    73
    \n+
    \n+
    74 const T &operator() ( int i, int j ) const
    \n+
    75 {
    \n+
    76 return fields_[ i * cols_ + j ];
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    79 T &operator() ( int i, int j )
    \n+
    80 {
    \n+
    81 return fields_[ i * cols_ + j ];
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    \n+
    84 int rows () const
    \n+
    85 {
    \n+
    86 return rows_;
    \n+
    87 }
    \n+
    \n+
    88
    \n+
    \n+
    89 int cols () const
    \n+
    90 {
    \n+
    91 return cols_;
    \n+
    92 }
    \n+
    \n+
    93 };
    \n+
    \n+
    94
    \n+
    95
    \n+
    96 // PeriodicFaceTransformationBlock::AffineTransformation
    \n+
    97 // -----------------------------------------------------
    \n+
    98
    \n+
    \n+\n+
    100 {
    \n+\n+
    102 std::vector< double > shift;
    \n+
    103
    \n+
    \n+
    104 explicit AffineTransformation ( int dimworld )
    \n+
    105 : matrix( dimworld, dimworld ),
    \n+
    106 shift( dimworld )
    \n+
    107 {}
    \n+
    \n+
    108 };
    \n+
    \n
    109
    \n-
    110 bool doAppended;
    \n-
    111
    \n-
    112 public:
    \n-
    114
    \n-
    \n-
    122 inline VTUWriter(std::ostream& stream_, OutputType outputType,
    \n-
    123 FileType fileType_)
    \n-
    124 : stream(stream_), factory(outputType, stream)
    \n-
    125 {
    \n-
    126 switch(fileType_) {
    \n-
    127 case polyData :
    \n-
    128 fileType = "PolyData";
    \n-
    129 cellName = "Lines";
    \n-
    130 break;
    \n-
    131 case unstructuredGrid :
    \n-
    132 fileType = "UnstructuredGrid";
    \n-
    133 cellName = "Cells";
    \n-
    134 break;
    \n-
    135 default :
    \n-
    136 DUNE_THROW(IOError, "VTUWriter: Unknown fileType: " << fileType_);
    \n-
    137 }
    \n-
    138 const std::string& byteOrder = getEndiannessString();
    \n-
    139
    \n-
    140 stream << indent << "<?xml version=\\"1.0\\"?>\\n";
    \n-
    141 stream << indent << "<VTKFile"
    \n-
    142 << " type=\\"" << fileType << "\\""
    \n-
    143 << " version=\\"0.1\\""
    \n-
    144 << " byte_order=\\"" << byteOrder << "\\">\\n";
    \n-
    145 ++indent;
    \n-
    146 }
    \n-
    \n-
    147
    \n-
    \n-
    149 inline ~VTUWriter() {
    \n-
    150 --indent;
    \n-
    151 stream << indent << "</VTKFile>\\n"
    \n-
    152 << std::flush;
    \n-
    153 }
    \n-
    \n-
    154
    \n-
    156
    \n-
    \n-
    167 inline void beginPointData(const std::string& scalars = "",
    \n-
    168 const std::string& vectors = "") {
    \n-
    169 switch(phase) {
    \n-
    170 case main :
    \n-
    171 stream << indent << "<PointData";
    \n-
    172 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n-
    173 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n-
    174 stream << ">\\n";
    \n-
    175 ++indent;
    \n-
    176 break;
    \n-
    177 case appended :
    \n-
    178 break;
    \n-
    179 }
    \n-
    180 }
    \n-
    \n-
    \n-
    182 inline void endPointData() {
    \n-
    183 switch(phase) {
    \n-
    184 case main :
    \n-
    185 --indent;
    \n-
    186 stream << indent << "</PointData>\\n";
    \n-
    187 break;
    \n-
    188 case appended :
    \n-
    189 break;
    \n-
    190 }
    \n-
    191 }
    \n-
    \n-
    192
    \n-
    194
    \n-
    \n-
    205 inline void beginCellData(const std::string& scalars = "",
    \n-
    206 const std::string& vectors = "") {
    \n-
    207 switch(phase) {
    \n-
    208 case main :
    \n-
    209 stream << indent << "<CellData";
    \n-
    210 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n-
    211 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n-
    212 stream << ">\\n";
    \n-
    213 ++indent;
    \n-
    214 break;
    \n-
    215 case appended :
    \n-
    216 break;
    \n-
    217 }
    \n-
    218 }
    \n-
    \n-
    \n-
    220 inline void endCellData() {
    \n-
    221 switch(phase) {
    \n-
    222 case main :
    \n-
    223 --indent;
    \n-
    224 stream << indent << "</CellData>\\n";
    \n-
    225 break;
    \n-
    226 case appended :
    \n-
    227 break;
    \n-
    228 }
    \n-
    229 }
    \n-
    \n-
    230
    \n-
    232
    \n-
    \n-
    238 inline void beginPoints() {
    \n-
    239 switch(phase) {
    \n-
    240 case main :
    \n-
    241 stream << indent << "<Points>\\n";
    \n-
    242 ++indent;
    \n-
    243 break;
    \n-
    244 case appended :
    \n-
    245 break;
    \n-
    246 }
    \n-
    247 }
    \n-
    \n-
    \n-
    249 inline void endPoints() {
    \n-
    250 switch(phase) {
    \n-
    251 case main :
    \n-
    252 --indent;
    \n-
    253 stream << indent << "</Points>\\n";
    \n-
    254 break;
    \n-
    255 case appended :
    \n-
    256 break;
    \n-
    257 }
    \n-
    258 }
    \n-
    \n-
    259
    \n-
    261
    \n-
    \n-
    274 inline void beginCells() {
    \n-
    275 switch(phase) {
    \n-
    276 case main :
    \n-
    277 stream << indent << "<" << cellName << ">\\n";
    \n-
    278 ++indent;
    \n-
    279 break;
    \n-
    280 case appended :
    \n-
    281 break;
    \n-
    282 }
    \n-
    283 }
    \n-
    \n-
    \n-
    285 inline void endCells() {
    \n-
    286 switch(phase) {
    \n-
    287 case main :
    \n-
    288 --indent;
    \n-
    289 stream << indent << "</" << cellName << ">\\n";
    \n-
    290 break;
    \n-
    291 case appended :
    \n-
    292 break;
    \n-
    293 }
    \n-
    294 }
    \n-
    \n-
    295
    \n-
    297
    \n-
    \n-
    310 inline void beginMain(unsigned ncells, unsigned npoints) {
    \n-
    311 stream << indent << "<" << fileType << ">\\n";
    \n-
    312 ++indent;
    \n-
    313 stream << indent << "<Piece"
    \n-
    314 << " NumberOf" << cellName << "=\\"" << ncells << "\\""
    \n-
    315 << " NumberOfPoints=\\"" << npoints << "\\">\\n";
    \n-
    316 ++indent;
    \n-
    317 phase = main;
    \n-
    318 }
    \n-
    \n-
    \n-
    320 inline void endMain() {
    \n-
    321 --indent;
    \n-
    322 stream << indent << "</Piece>\\n";
    \n-
    323 --indent;
    \n-
    324 stream << indent << "</" << fileType << ">\\n";
    \n-
    325 }
    \n-
    \n-
    326
    \n-
    328
    \n-
    \n-
    345 inline bool beginAppended() {
    \n-
    346 doAppended = factory.beginAppended();
    \n-
    347 if(doAppended) {
    \n-
    348 const std::string& encoding = factory.appendedEncoding();
    \n-
    349 stream << indent << "<AppendedData"
    \n-
    350 << " encoding=\\"" << encoding << "\\">\\n";
    \n-
    351 ++indent;
    \n-
    352 // mark begin of data
    \n-
    353 stream << indent << "_";
    \n-
    354 }
    \n-
    355 phase = appended;
    \n-
    356 return doAppended;
    \n-
    357 }
    \n-
    \n-
    \n-
    359 inline void endAppended() {
    \n-
    360 if(doAppended) {
    \n-
    361 stream << "\\n";
    \n-
    362 --indent;
    \n-
    363 stream << indent << "</AppendedData>\\n";
    \n-
    364 }
    \n-
    365 }
    \n-
    \n-
    366
    \n-
    368
    \n-
    \n-
    380 DataArrayWriter* makeArrayWriter(const std::string& name,
    \n-
    381 unsigned ncomps, unsigned nitems,
    \n-
    382 Precision prec) {
    \n-
    383 return factory.make(name, ncomps, nitems, indent, prec);
    \n-
    384 }
    \n-
    \n-
    385 };
    \n-
    \n-
    386
    \n-
    387 } // namespace VTK
    \n-
    388
    \n-
    390
    \n-
    391} // namespace Dune
    \n-
    392
    \n-
    393#endif // DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH
    \n-
    Common stuff for the VTKWriter.
    \n-
    Data array writers for the VTKWriter.
    \n+
    110
    \n+
    \n+
    111 inline std::ostream &
    \n+\n+
    113 {
    \n+
    114 for( int i = 0; i < trafo.matrix.rows(); ++i )
    \n+
    115 {
    \n+
    116 out << (i > 0 ? ", " : "");
    \n+
    117 for( int j = 0; j < trafo.matrix.cols(); ++j )
    \n+
    118 out << (j > 0 ? " " : "") << trafo.matrix( i, j );
    \n+
    119 }
    \n+
    120 out << " +";
    \n+
    121 for( unsigned int i = 0; i < trafo.shift.size(); ++i )
    \n+
    122 out << " " << trafo.shift[ i ];
    \n+
    123 return out;
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    126 } // end namespace dgf
    \n+
    127
    \n+
    128} // end namespace Dune
    \n+
    129
    \n+
    130#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n-
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n-
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n-
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n-
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n-
    base class for data array writers
    Definition dataarraywriter.hh:56
    \n-
    a factory for DataArrayWriters
    Definition dataarraywriter.hh:462
    \n-
    bool beginAppended()
    signal start of the appended section
    Definition dataarraywriter.hh:497
    \n-
    DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned nitems, const Indent &indent, Precision prec)
    create a DataArrayWriter
    Definition dataarraywriter.hh:541
    \n-
    const std::string & appendedEncoding() const
    query encoding string for appended data
    Definition dataarraywriter.hh:510
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n-
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n-
    bool beginAppended()
    start the appended data section
    Definition vtuwriter.hh:345
    \n-
    void endAppended()
    finish the appended data section
    Definition vtuwriter.hh:359
    \n-
    VTUWriter(std::ostream &stream_, OutputType outputType, FileType fileType_)
    create a VTUWriter object
    Definition vtuwriter.hh:122
    \n-
    std::ostream & stream
    Definition vtuwriter.hh:100
    \n-
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n-
    void beginMain(unsigned ncells, unsigned npoints)
    start the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:310
    \n-
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n-
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n-
    Phase
    Definition vtuwriter.hh:101
    \n-
    @ appended
    Definition vtuwriter.hh:101
    \n-
    @ main
    Definition vtuwriter.hh:101
    \n-
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n-
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n-
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n-
    ~VTUWriter()
    write footer
    Definition vtuwriter.hh:149
    \n-
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n-
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n-
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:320
    \n-
    enum Dune::VTK::VTUWriter::Phase phase
    \n+
    std::ostream & operator<<(std::ostream &out, const IntervalBlock::Interval &interval)
    Definition interval.hh:123
    \n+
    Definition basic.hh:31
    \n+
    Definition periodicfacetrans.hh:25
    \n+
    int numTransformations() const
    Definition periodicfacetrans.hh:47
    \n+
    const AffineTransformation & transformation(int i) const
    Definition periodicfacetrans.hh:41
    \n+
    Definition periodicfacetrans.hh:62
    \n+
    int rows() const
    Definition periodicfacetrans.hh:84
    \n+
    const T & operator()(int i, int j) const
    Definition periodicfacetrans.hh:74
    \n+
    int cols() const
    Definition periodicfacetrans.hh:89
    \n+
    Matrix(int rows, int cols)
    Definition periodicfacetrans.hh:68
    \n+\n+
    Matrix< double > matrix
    Definition periodicfacetrans.hh:101
    \n+
    std::vector< double > shift
    Definition periodicfacetrans.hh:102
    \n+
    AffineTransformation(int dimworld)
    Definition periodicfacetrans.hh:104
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,363 +2,189 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-vtuwriter.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+periodicfacetrans.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_VTUWRITER_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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-17\n-18namespace _\bD_\bu_\bn_\be {\n+5#ifndef DUNE_DGF_PERIODICFACETRANSBLOCK_HH\n+6#define DUNE_DGF_PERIODICFACETRANSBLOCK_HH\n+7\n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+12\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+17 namespace dgf\n+18 {\n 19\n+20 // PeriodicFaceTransformationBlock\n+21 // -------------------------------\n 22\n-23 namespace VTK {\n-24\n-26\n-_\b9_\b8 class _\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br {\n-99 public:\n-_\b1_\b0_\b0 std::ostream& _\bs_\bt_\br_\be_\ba_\bm;\n-_\b1_\b0_\b1 enum _\bP_\bh_\ba_\bs_\be { _\bm_\ba_\bi_\bn, _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd } _\bp_\bh_\ba_\bs_\be;\n-102\n-103 private:\n-104 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by factory;\n-105 Indent indent;\n-106\n-107 std::string fileType;\n-108 std::string cellName;\n+_\b2_\b3 struct _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+25 {\n+26 template< class T >\n+27 class _\bM_\ba_\bt_\br_\bi_\bx;\n+28\n+29 struct _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn;\n+30\n+31 private:\n+32 std::vector< AffineTransformation > transformations_;\n+33\n+34 // copy not implemented\n+35 _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( const _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk & );\n+36\n+37 public:\n+38 // initialize block and get dimension of world\n+39 _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std::istream &in, int dimworld );\n+40\n+_\b4_\b1 const _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn &_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int i ) const\n+42 {\n+43 assert( i < _\bn_\bu_\bm_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bs() );\n+44 return transformations_[ i ];\n+45 }\n+46\n+_\b4_\b7 int _\bn_\bu_\bm_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bs () const\n+48 {\n+49 return transformations_.size();\n+50 }\n+51\n+52 private:\n+53 void match ( char what );\n+54 };\n+55\n+56\n+57 // PeriodicFaceTransformationBlock::Matrix\n+58 // ---------------------------------------\n+59\n+60 template< class T >\n+_\b6_\b1 class _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+62 {\n+63 int rows_;\n+64 int cols_;\n+65 std::vector< T > fields_;\n+66\n+67 public:\n+_\b6_\b8 _\bM_\ba_\bt_\br_\bi_\bx ( int _\br_\bo_\bw_\bs, int _\bc_\bo_\bl_\bs )\n+69 : rows_( _\br_\bo_\bw_\bs ),\n+70 cols_( _\bc_\bo_\bl_\bs ),\n+71 fields_( _\br_\bo_\bw_\bs * _\bc_\bo_\bl_\bs )\n+72 {}\n+73\n+_\b7_\b4 const T &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( int i, int j ) const\n+75 {\n+76 return fields_[ i * cols_ + j ];\n+77 }\n+78\n+_\b7_\b9 T &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( int i, int j )\n+80 {\n+81 return fields_[ i * cols_ + j ];\n+82 }\n+83\n+_\b8_\b4 int _\br_\bo_\bw_\bs () const\n+85 {\n+86 return rows_;\n+87 }\n+88\n+_\b8_\b9 int _\bc_\bo_\bl_\bs () const\n+90 {\n+91 return cols_;\n+92 }\n+93 };\n+94\n+95\n+96 // PeriodicFaceTransformationBlock::AffineTransformation\n+97 // -----------------------------------------------------\n+98\n+_\b9_\b9 struct _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+100 {\n+_\b1_\b0_\b1 _\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b> _\bm_\ba_\bt_\br_\bi_\bx;\n+_\b1_\b0_\b2 std::vector< double > _\bs_\bh_\bi_\bf_\bt;\n+103\n+_\b1_\b0_\b4 explicit _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( int dimworld )\n+105 : _\bm_\ba_\bt_\br_\bi_\bx( dimworld, dimworld ),\n+106 _\bs_\bh_\bi_\bf_\bt( dimworld )\n+107 {}\n+108 };\n 109\n-110 bool doAppended;\n-111\n-112 public:\n-114\n-_\b1_\b2_\b2 inline _\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br(std::ostream& stream_, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType,\n-123 _\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType_)\n-124 : _\bs_\bt_\br_\be_\ba_\bm(stream_), factory(outputType, _\bs_\bt_\br_\be_\ba_\bm)\n-125 {\n-126 switch(fileType_) {\n-127 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba :\n-128 fileType = \"PolyData\";\n-129 cellName = \"Lines\";\n-130 break;\n-131 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd :\n-132 fileType = \"UnstructuredGrid\";\n-133 cellName = \"Cells\";\n-134 break;\n-135 default :\n-136 DUNE_THROW(IOError, \"VTUWriter: Unknown fileType: \" << fileType_);\n-137 }\n-138 const std::string& byteOrder = _\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg();\n-139\n-140 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-141 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-145 ++indent;\n-146 }\n-147\n-_\b1_\b4_\b9 inline _\b~_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br() {\n-150 --indent;\n-151 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\"\n-152 << std::flush;\n-153 }\n-154\n-156\n-_\b1_\b6_\b7 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n-168 const std::string& vectors = \"\") {\n-169 switch(_\bp_\bh_\ba_\bs_\be) {\n-170 case _\bm_\ba_\bi_\bn :\n-171 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-175 ++indent;\n-176 break;\n-177 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-178 break;\n-179 }\n-180 }\n-_\b1_\b8_\b2 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba() {\n-183 switch(_\bp_\bh_\ba_\bs_\be) {\n-184 case _\bm_\ba_\bi_\bn :\n-185 --indent;\n-186 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-187 break;\n-188 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-189 break;\n-190 }\n-191 }\n-192\n-194\n-_\b2_\b0_\b5 inline void _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n-206 const std::string& vectors = \"\") {\n-207 switch(_\bp_\bh_\ba_\bs_\be) {\n-208 case _\bm_\ba_\bi_\bn :\n-209 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-213 ++indent;\n-214 break;\n-215 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-216 break;\n-217 }\n-218 }\n-_\b2_\b2_\b0 inline void _\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba() {\n-221 switch(_\bp_\bh_\ba_\bs_\be) {\n-222 case _\bm_\ba_\bi_\bn :\n-223 --indent;\n-224 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-225 break;\n-226 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-227 break;\n-228 }\n-229 }\n-230\n-232\n-_\b2_\b3_\b8 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() {\n-239 switch(_\bp_\bh_\ba_\bs_\be) {\n-240 case _\bm_\ba_\bi_\bn :\n-241 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-242 ++indent;\n-243 break;\n-244 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-245 break;\n-246 }\n-247 }\n-_\b2_\b4_\b9 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() {\n-250 switch(_\bp_\bh_\ba_\bs_\be) {\n-251 case _\bm_\ba_\bi_\bn :\n-252 --indent;\n-253 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-254 break;\n-255 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-256 break;\n-257 }\n-258 }\n-259\n-261\n-_\b2_\b7_\b4 inline void _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs() {\n-275 switch(_\bp_\bh_\ba_\bs_\be) {\n-276 case _\bm_\ba_\bi_\bn :\n-277 _\bs_\bt_\br_\be_\ba_\bm << indent << \"<\" << cellName << \">\\n\";\n-278 ++indent;\n-279 break;\n-280 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-281 break;\n-282 }\n-283 }\n-_\b2_\b8_\b5 inline void _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs() {\n-286 switch(_\bp_\bh_\ba_\bs_\be) {\n-287 case _\bm_\ba_\bi_\bn :\n-288 --indent;\n-289 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-290 break;\n-291 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd :\n-292 break;\n-293 }\n-294 }\n-295\n-297\n-_\b3_\b1_\b0 inline void _\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn(unsigned ncells, unsigned npoints) {\n-311 _\bs_\bt_\br_\be_\ba_\bm << indent << \"<\" << fileType << \">\\n\";\n-312 ++indent;\n-313 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-316 ++indent;\n-317 _\bp_\bh_\ba_\bs_\be = _\bm_\ba_\bi_\bn;\n-318 }\n-_\b3_\b2_\b0 inline void _\be_\bn_\bd_\bM_\ba_\bi_\bn() {\n-321 --indent;\n-322 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-323 --indent;\n-324 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-325 }\n-326\n-328\n-_\b3_\b4_\b5 inline bool _\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd() {\n-346 doAppended = factory._\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd();\n-347 if(doAppended) {\n-348 const std::string& encoding = factory._\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg();\n-349 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-351 ++indent;\n-352 // mark begin of data\n-353 _\bs_\bt_\br_\be_\ba_\bm << indent << \"_\";\n-354 }\n-355 _\bp_\bh_\ba_\bs_\be = _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd;\n-356 return doAppended;\n-357 }\n-_\b3_\b5_\b9 inline void _\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd() {\n-360 if(doAppended) {\n-361 _\bs_\bt_\br_\be_\ba_\bm << \"\\n\";\n-362 --indent;\n-363 _\bs_\bt_\br_\be_\ba_\bm << indent << \"\\n\";\n-364 }\n-365 }\n-366\n-368\n-_\b3_\b8_\b0 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br* _\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(const std::string& name,\n-381 unsigned ncomps, unsigned nitems,\n-382 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec) {\n-383 return factory._\bm_\ba_\bk_\be(name, ncomps, nitems, indent, prec);\n-384 }\n-385 };\n-386\n-387 } // namespace VTK\n-388\n-390\n-391} // namespace Dune\n-392\n-393#endif // DUNE_GRID_IO_FILE_VTK_VTUWRITER_HH\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-Data array writers for the VTKWriter.\n+110\n+_\b1_\b1_\b1 inline std::ostream &\n+112 _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:\n+_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn &trafo )\n+113 {\n+114 for( int i = 0; i < trafo._\bm_\ba_\bt_\br_\bi_\bx._\br_\bo_\bw_\bs(); ++i )\n+115 {\n+116 out << (i > 0 ? \", \" : \"\");\n+117 for( int j = 0; j < trafo._\bm_\ba_\bt_\br_\bi_\bx._\bc_\bo_\bl_\bs(); ++j )\n+118 out << (j > 0 ? \" \" : \"\") << trafo._\bm_\ba_\bt_\br_\bi_\bx( i, j );\n+119 }\n+120 out << \" +\";\n+121 for( unsigned int i = 0; i < trafo._\bs_\bh_\bi_\bf_\bt.size(); ++i )\n+122 out << \" \" << trafo._\bs_\bh_\bi_\bf_\bt[ i ];\n+123 return out;\n+124 }\n+125\n+126 } // end namespace dgf\n+127\n+128} // end namespace Dune\n+129\n+130#endif\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n-OutputType\n-How the bulk data should be stored in the file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n-FileType\n-which type of VTK file to write\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n-@ polyData\n-for .vtp files (PolyData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n-@ unstructuredGrid\n-for .vtu files (UnstructuredGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n-std::string getEndiannessString()\n-determine endianness of this C++ implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-base class for data array writers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-a factory for DataArrayWriters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:462\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n-bool beginAppended()\n-signal start of the appended section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:497\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned\n-nitems, const Indent &indent, Precision prec)\n-create a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:541\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg\n-const std::string & appendedEncoding() const\n-query encoding string for appended data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:510\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n-unsigned nitems, Precision prec)\n-acquire a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n-bool beginAppended()\n-start the appended data section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:345\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n-void endAppended()\n-finish the appended data section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:359\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-VTUWriter(std::ostream &stream_, OutputType outputType, FileType fileType_)\n-create a VTUWriter object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm\n-std::ostream & stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void endCellData()\n-finish CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n-void beginMain(unsigned ncells, unsigned npoints)\n-start the main PolyData/UnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n-void beginCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void endPointData()\n-finish PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bP_\bh_\ba_\bs_\be\n-Phase\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd\n-@ appended\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bi_\bn\n-@ main\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void beginCellData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void beginPointData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-void endPoints()\n-finish section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-~VTUWriter()\n-write footer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n-void endCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-void beginPoints()\n-start section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n-void endMain()\n-finish the main PolyData/UnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bh_\ba_\bs_\be\n-enum Dune::VTK::VTUWriter::Phase phase\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+std::ostream & operator<<(std::ostream &out, const IntervalBlock::Interval\n+&interval)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interval.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bu_\bm_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bs\n+int numTransformations() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+const AffineTransformation & transformation(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n+int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const T & operator()(int i, int j) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n+int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+Matrix(int rows, int cols)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bm_\ba_\bt_\br_\bi_\bx\n+Matrix< double > matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n+std::vector< double > shift\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bF_\ba_\bc_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n+AffineTransformation(int dimworld)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn periodicfacetrans.hh:104\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00908.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00908.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: corneriterator.hh File Reference\n+dune-grid: gridparameter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    corneriterator.hh File Reference
    \n+
    gridparameter.hh File Reference
    \n
    \n
    \n-
    #include <iterator>
    \n-#include <dune/common/iteratorfacades.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/io/file/vtk/corner.hh>
    \n+
    #include <iostream>
    \n+#include <string>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::VTK::CornerIterator< CellIterator >
     iterate over the corners of some cell range More...
    class  Dune::dgf::GridParameterBlock
     Common Grid parameters. More...
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,28 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-corneriterator.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+gridparameter.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-\u00a0 iterate over the corners of some cell range _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+\u00a0 Common _\bG_\br_\bi_\bd parameters. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00908_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00908_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: corneriterator.hh Source File\n+dune-grid: gridparameter.hh Source File\n \n \n \n \n \n \n \n@@ -70,170 +70,134 @@\n
    \n \n \n \n \n \n \n
    \n-
    corneriterator.hh
    \n+
    gridparameter.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH
    \n-
    8
    \n-
    9#include <iterator>
    \n+
    5#ifndef DUNE_DGF_GRIDPARAMETERBLOCK_HH
    \n+
    6#define DUNE_DGF_GRIDPARAMETERBLOCK_HH
    \n+
    7
    \n+
    8#include <iostream>
    \n+
    9#include <string>
    \n
    10
    \n-
    11#include <dune/common/iteratorfacades.hh>
    \n-
    12#include <dune/common/typetraits.hh>
    \n+\n+
    12
    \n
    13
    \n-
    14#include <dune/geometry/referenceelements.hh>
    \n-
    15
    \n-\n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    22
    \n-
    23 namespace VTK {
    \n-
    24
    \n-
    26
    \n-
    30 template<typename CellIterator>
    \n-
    \n-\n-
    32 : public ForwardIteratorFacade
    \n-
    33 < CornerIterator<CellIterator>,
    \n-
    34 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n-
    35 CellIterator>::value_type>::type>,
    \n-
    36 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n-
    37 CellIterator>::value_type>::type>&,
    \n-
    38 typename std::iterator_traits<CellIterator>::difference_type>
    \n-
    39 {
    \n-
    40 public:
    \n-
    41 // reiterate the facades typedefs here
    \n-\n-
    43 typedef VTK::Corner<typename std::remove_const<typename std::iterator_traits<
    \n-
    44 CellIterator>::value_type>::type> Corner;
    \n-
    45 typedef const Corner Value;
    \n-
    46 typedef Value& Reference;
    \n-
    47 typedef typename std::iterator_traits<CellIterator>::difference_type
    \n-\n-
    49
    \n-
    50 typedef typename std::iterator_traits<CellIterator>::value_type::Geometry::ctype
    \n-\n-
    52 static const unsigned dim = std::iterator_traits<CellIterator>::
    \n-
    53 value_type::mydimension;
    \n-
    54 typedef ReferenceElements<ctype, dim> Refelems;
    \n-
    55
    \n-
    56 private:
    \n-
    57 typedef ForwardIteratorFacade<DerivedType, Value, Reference,
    \n-
    58 DifferenceType> Facade;
    \n-
    59
    \n-
    60 CellIterator cellit;
    \n-
    61 CellIterator cellend;
    \n-
    62 Corner corner;
    \n-
    63
    \n-
    64 public:
    \n-
    \n-\n-
    66 return corner;
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    \n-
    69 bool isDereferencable() const {
    \n-
    70 return cellit != cellend;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    73 bool equals(const DerivedType& other) const {
    \n-
    74 bool mePassedTheEnd = !isDereferencable();
    \n-
    75 bool otherPassedTheEnd = !other.isDereferencable();
    \n-
    76 // both are passed the end => return true
    \n-
    77 if(mePassedTheEnd && otherPassedTheEnd) return true;
    \n-
    78 // one is passed the end => return false
    \n-
    79 if(mePassedTheEnd || otherPassedTheEnd) return false;
    \n-
    80 // none is passed the end, do their iterators and indices match?
    \n-
    81 return cellit == other.cellit &&
    \n-
    82 corner.duneIndex() == other.corner.duneIndex();
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    85 void increment() {
    \n-
    86 int index = corner.vtkIndex();
    \n-
    87 ++index;
    \n-
    88 if(index == Refelems::general(cellit->type()).size(dim)) {
    \n-
    89 ++cellit;
    \n-
    90 if(cellit != cellend) {
    \n-
    91 corner.cell(*cellit);
    \n-
    92 corner.vtkIndex(0);
    \n-
    93 }
    \n-
    94 }
    \n-
    95 else
    \n-
    96 corner.vtkIndex(index);
    \n-
    97 }
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    17 namespace dgf
    \n+
    18 {
    \n+
    \n+\n+
    34 : public BasicBlock
    \n+
    35 {
    \n+
    36 public:
    \n+
    37 typedef unsigned int Flags;
    \n+
    38
    \n+
    39 static const Flags foundName = 1 << 0;
    \n+
    40 static const Flags foundDumpFileName = 1 << 1;
    \n+
    41 static const Flags foundLongestEdge = 1 << 5;
    \n+
    42
    \n+
    43 protected:
    \n+
    44 Flags foundFlags_; // supportFlags, this block was created with
    \n+
    45 std::string name_; // name of the grid
    \n+
    46 std::string dumpFileName_; // name of the grid
    \n+
    47 bool markLongestEdge_; // Mark longest edge for AlbertaGrid
    \n+
    48
    \n+
    49 private:
    \n+
    50 // copy not implemented
    \n+\n+
    52
    \n+
    53 public:
    \n+
    55 GridParameterBlock ( std::istream &in );
    \n+
    56
    \n+
    \n+
    58 const std::string &name ( const std::string &defaultValue ) const
    \n+
    59 {
    \n+
    60 if( (foundFlags_ & foundName) == 0 )
    \n+
    61 {
    \n+
    62 dwarn << "GridParameterBlock: Parameter 'name' not specified, "
    \n+
    63 << "defaulting to '" << defaultValue << "'." << std::endl;
    \n+
    64 return defaultValue;
    \n+
    65 }
    \n+
    66 else
    \n+
    67 return name_;
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 const std::string &dumpFileName ( ) const
    \n+
    71 {
    \n+
    72 if( (foundFlags_ & foundDumpFileName) != 0 )
    \n+
    73 {
    \n+
    74 dwarn << "GridParameterBlock: found Parameter 'dumpfilename', "
    \n+
    75 << "dumping file to `" << dumpFileName_ << "'" << std::endl;
    \n+
    76 }
    \n+
    77 return dumpFileName_;
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    \n+
    81 bool markLongestEdge () const
    \n+
    82 {
    \n+
    83 if( (foundFlags_ & foundLongestEdge) == 0 )
    \n+
    84 {
    \n+
    85 dwarn << "GridParameterBlock: Parameter 'refinementedge' not specified, "
    \n+
    86 << "defaulting to 'ARBITRARY'." << std::endl;
    \n+
    87 }
    \n+
    88 return markLongestEdge_;
    \n+
    89 }
    \n+
    \n+
    90
    \n+
    91 // some information
    \n+
    \n+
    92 bool ok()
    \n+
    93 {
    \n+
    94 return true;
    \n+
    95 }
    \n
    \n+
    96 };
    \n+
    \n+
    97
    \n
    98
    \n+
    99 } // end namespace dgf
    \n
    100
    \n-
    \n-
    105 CornerIterator(const CellIterator& cellit_, const CellIterator& cellend_,
    \n-
    106 unsigned vtkIndex = 0)
    \n-
    107 : cellit(cellit_), cellend(cellend_)
    \n-
    108 {
    \n-
    109 if(cellit != cellend) {
    \n-
    110 corner.cell(*cellit);
    \n-
    111 corner.vtkIndex(vtkIndex);
    \n-
    112 }
    \n-
    113 }
    \n-
    \n-
    115
    \n-
    \n-
    118 CornerIterator(const CellIterator& cellend_)
    \n-
    119 : cellit(cellend_), cellend(cellend_)
    \n-
    120 { }
    \n-
    \n-
    121 };
    \n-
    \n-
    122
    \n-
    123 } // namespace VTK
    \n-
    124
    \n-
    126
    \n-
    127} // namespace Dune
    \n-
    128
    \n-
    129#endif // DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH
    \n-\n+
    101} // end namespace Dune
    \n+
    102
    \n+
    103#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n-
    unsigned vtkIndex() const
    get the index of the corner within the cell in VTK-numbering
    Definition corner.hh:63
    \n-
    unsigned duneIndex() const
    get the index of the corner within the cell in Dune-numbering
    Definition corner.hh:55
    \n-
    const Cell & cell() const
    get reference to the cell
    Definition corner.hh:46
    \n-
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n-
    Value & Reference
    Definition corneriterator.hh:46
    \n-
    VTK::Corner< typename std::remove_const< typename std::iterator_traits< CellIterator >::value_type >::type > Corner
    Definition corneriterator.hh:44
    \n-
    void increment()
    Definition corneriterator.hh:85
    \n-
    Reference dereference() const
    Definition corneriterator.hh:65
    \n-
    std::iterator_traits< CellIterator >::difference_type DifferenceType
    Definition corneriterator.hh:48
    \n-
    static const unsigned dim
    Definition corneriterator.hh:52
    \n-
    ReferenceElements< ctype, dim > Refelems
    Definition corneriterator.hh:54
    \n-
    const Corner Value
    Definition corneriterator.hh:45
    \n-
    CornerIterator(const CellIterator &cellit_, const CellIterator &cellend_, unsigned vtkIndex=0)
    construct a CornerIterator
    Definition corneriterator.hh:105
    \n-
    CornerIterator(const CellIterator &cellend_)
    construct a CornerIterator
    Definition corneriterator.hh:118
    \n-
    bool equals(const DerivedType &other) const
    Definition corneriterator.hh:73
    \n-
    CornerIterator< CellIterator > DerivedType
    Definition corneriterator.hh:42
    \n-
    std::iterator_traits< CellIterator >::value_type::Geometry::ctype ctype
    Definition corneriterator.hh:51
    \n-
    bool isDereferencable() const
    Definition corneriterator.hh:69
    \n+
    Definition basic.hh:31
    \n+
    Common Grid parameters.
    Definition gridparameter.hh:35
    \n+
    static const Flags foundDumpFileName
    Definition gridparameter.hh:40
    \n+
    const std::string & dumpFileName() const
    Definition gridparameter.hh:70
    \n+
    static const Flags foundName
    Definition gridparameter.hh:39
    \n+
    GridParameterBlock(std::istream &in)
    constructor: read commmon parameters
    \n+
    unsigned int Flags
    Definition gridparameter.hh:37
    \n+
    std::string dumpFileName_
    Definition gridparameter.hh:46
    \n+
    bool ok()
    Definition gridparameter.hh:92
    \n+
    Flags foundFlags_
    Definition gridparameter.hh:44
    \n+
    const std::string & name(const std::string &defaultValue) const
    return the name of the grid
    Definition gridparameter.hh:58
    \n+
    std::string name_
    Definition gridparameter.hh:45
    \n+
    bool markLongestEdge() const
    returns true if longest edge should be marked for AlbertaGrid
    Definition gridparameter.hh:81
    \n+
    static const Flags foundLongestEdge
    Definition gridparameter.hh:41
    \n+
    bool markLongestEdge_
    Definition gridparameter.hh:47
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,197 +2,150 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-corneriterator.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+gridparameter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH\n-7#define DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH\n-8\n-9#include \n+5#ifndef DUNE_DGF_GRIDPARAMETERBLOCK_HH\n+6#define DUNE_DGF_GRIDPARAMETERBLOCK_HH\n+7\n+8#include \n+9#include \n 10\n-11#include \n-12#include \n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+12\n 13\n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n-17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-22\n-23 namespace VTK {\n-24\n-26\n-30 template\n-_\b3_\b1 class _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-32 : public ForwardIteratorFacade\n-33 < CornerIterator,\n-34 const Corner::value_type>::type>,\n-36 const Corner::value_type>::type>&,\n-38 typename std::iterator_traits::difference_type>\n-39 {\n-40 public:\n-41 // reiterate the facades typedefs here\n-_\b4_\b2 typedef _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be;\n-43 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br::value_type>::type> _\bC_\bo_\br_\bn_\be_\br;\n-_\b4_\b5 typedef const _\bC_\bo_\br_\bn_\be_\br _\bV_\ba_\bl_\bu_\be;\n-_\b4_\b6 typedef _\bV_\ba_\bl_\bu_\be& _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-47 typedef typename std::iterator_traits::difference_type\n-_\b4_\b8 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be;\n-49\n-50 typedef typename std::iterator_traits::value_type::Geometry::\n-ctype\n-_\b5_\b1 _\bc_\bt_\by_\bp_\be;\n-_\b5_\b2 static const unsigned _\bd_\bi_\bm = std::iterator_traits::\n-53 value_type::mydimension;\n-_\b5_\b4 typedef ReferenceElements _\bR_\be_\bf_\be_\bl_\be_\bm_\bs;\n-55\n-56 private:\n-57 typedef ForwardIteratorFacade<_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be, _\bV_\ba_\bl_\bu_\be, _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be,\n-58 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be> Facade;\n-59\n-60 CellIterator cellit;\n-61 CellIterator cellend;\n-62 _\bC_\bo_\br_\bn_\be_\br corner;\n-63\n-64 public:\n-_\b6_\b5 _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n-66 return corner;\n-67 }\n-68\n-_\b6_\b9 bool _\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be() const {\n-70 return cellit != cellend;\n-71 }\n-72\n-_\b7_\b3 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be& other) const {\n-74 bool mePassedTheEnd = !_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be();\n-75 bool otherPassedTheEnd = !other._\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be();\n-76 // both are passed the end => return true\n-77 if(mePassedTheEnd && otherPassedTheEnd) return true;\n-78 // one is passed the end => return false\n-79 if(mePassedTheEnd || otherPassedTheEnd) return false;\n-80 // none is passed the end, do their iterators and indices match?\n-81 return cellit == other.cellit &&\n-82 corner._\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx() == other.corner._\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx();\n-83 }\n-84\n-_\b8_\b5 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n-86 int index = corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx();\n-87 ++index;\n-88 if(index == Refelems::general(cellit->type()).size(_\bd_\bi_\bm)) {\n-89 ++cellit;\n-90 if(cellit != cellend) {\n-91 corner._\bc_\be_\bl_\bl(*cellit);\n-92 corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(0);\n-93 }\n-94 }\n-95 else\n-96 corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(index);\n-97 }\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+17 namespace dgf\n+18 {\n+_\b3_\b3 class _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+34 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+35 {\n+36 public:\n+_\b3_\b7 typedef unsigned int _\bF_\bl_\ba_\bg_\bs;\n+38\n+_\b3_\b9 static const _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bN_\ba_\bm_\be = 1 << 0;\n+_\b4_\b0 static const _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bD_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be = 1 << 1;\n+_\b4_\b1 static const _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be = 1 << 5;\n+42\n+43 protected:\n+_\b4_\b4 _\bF_\bl_\ba_\bg_\bs _\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_; // supportFlags, this block was created with\n+_\b4_\b5 std::string _\bn_\ba_\bm_\be_\b_; // name of the grid\n+_\b4_\b6 std::string _\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be_\b_; // name of the grid\n+_\b4_\b7 bool _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be_\b_; // Mark longest edge for AlbertaGrid\n+48\n+49 private:\n+50 // copy not implemented\n+51 _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk(const _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk&);\n+52\n+53 public:\n+_\b5_\b5 _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk ( std::istream &in );\n+56\n+_\b5_\b8 const std::string &_\bn_\ba_\bm_\be ( const std::string &defaultValue ) const\n+59 {\n+60 if( (_\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_ & _\bf_\bo_\bu_\bn_\bd_\bN_\ba_\bm_\be) == 0 )\n+61 {\n+62 dwarn << \"GridParameterBlock: Parameter 'name' not specified, \"\n+63 << \"defaulting to '\" << defaultValue << \"'.\" << std::endl;\n+64 return defaultValue;\n+65 }\n+66 else\n+67 return _\bn_\ba_\bm_\be_\b_;\n+68 }\n+69\n+_\b7_\b0 const std::string &_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be ( ) const\n+71 {\n+72 if( (_\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_ & _\bf_\bo_\bu_\bn_\bd_\bD_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be) != 0 )\n+73 {\n+74 dwarn << \"GridParameterBlock: found Parameter 'dumpfilename', \"\n+75 << \"dumping file to `\" << _\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be_\b_ << \"'\" << std::endl;\n+76 }\n+77 return _\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be_\b_;\n+78 }\n+79\n+_\b8_\b1 bool _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be () const\n+82 {\n+83 if( (_\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_ & _\bf_\bo_\bu_\bn_\bd_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be) == 0 )\n+84 {\n+85 dwarn << \"GridParameterBlock: Parameter 'refinementedge' not specified, \"\n+86 << \"defaulting to 'ARBITRARY'.\" << std::endl;\n+87 }\n+88 return _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be_\b_;\n+89 }\n+90\n+91 // some information\n+_\b9_\b2 bool _\bo_\bk()\n+93 {\n+94 return true;\n+95 }\n+96 };\n+97\n 98\n+99 } // end namespace dgf\n 100\n-_\b1_\b0_\b5 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellit_, const CellIterator& cellend_,\n-106 unsigned vtkIndex = 0)\n-107 : cellit(cellit_), cellend(cellend_)\n-108 {\n-109 if(cellit != cellend) {\n-110 corner._\bc_\be_\bl_\bl(*cellit);\n-111 corner._\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(vtkIndex);\n-112 }\n-113 }\n-115\n-_\b1_\b1_\b8 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellend_)\n-119 : cellit(cellend_), cellend(cellend_)\n-120 { }\n-121 };\n-122\n-123 } // namespace VTK\n-124\n-126\n-127} // namespace Dune\n-128\n-129#endif // DUNE_GRID_IO_FILE_VTK_CORNERITERATOR_HH\n-_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n+101} // end namespace Dune\n+102\n+103#endif\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-simple class representing a corner of a cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx\n-unsigned vtkIndex() const\n-get the index of the corner within the cell in VTK-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx\n-unsigned duneIndex() const\n-get the index of the corner within the cell in Dune-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bc_\be_\bl_\bl\n-const Cell & cell() const\n-get reference to the cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-iterate over the corners of some cell range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Value & Reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-VTK::Corner< typename std::remove_const< typename std::iterator_traits<\n-CellIterator >::value_type >::type > Corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Reference dereference() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be\n-std::iterator_traits< CellIterator >::difference_type DifferenceType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm\n-static const unsigned dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\bl_\be_\bm_\bs\n-ReferenceElements< ctype, dim > Refelems\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-const Corner Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-CornerIterator(const CellIterator &cellit_, const CellIterator &cellend_,\n-unsigned vtkIndex=0)\n-construct a CornerIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-CornerIterator(const CellIterator &cellend_)\n-construct a CornerIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const DerivedType &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be\n-CornerIterator< CellIterator > DerivedType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-std::iterator_traits< CellIterator >::value_type::Geometry::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be\n-bool isDereferencable() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+Common Grid parameters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bD_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n+static const Flags foundDumpFileName\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n+const std::string & dumpFileName() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bN_\ba_\bm_\be\n+static const Flags foundName\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+GridParameterBlock(std::istream &in)\n+constructor: read commmon parameters\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bF_\bl_\ba_\bg_\bs\n+unsigned int Flags\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be_\b_\n+std::string dumpFileName_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bF_\bl_\ba_\bg_\bs_\b_\n+Flags foundFlags_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\ba_\bm_\be\n+const std::string & name(const std::string &defaultValue) const\n+return the name of the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\ba_\bm_\be_\b_\n+std::string name_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n+bool markLongestEdge() const\n+returns true if longest edge should be marked for AlbertaGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bo_\bu_\bn_\bd_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n+static const Flags foundLongestEdge\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be_\b_\n+bool markLongestEdge_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:47\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00911.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00911.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: common.hh File Reference\n+dune-grid: simplexgeneration.cc File Reference\n \n \n \n \n \n \n \n@@ -65,136 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    common.hh File Reference
    \n+Namespaces
    \n+
    simplexgeneration.cc File Reference
    \n \n
    \n-\n-

    Common stuff for the VTKWriter. \n-More...

    \n-
    #include <limits>
    \n-#include <sstream>
    \n-#include <string>
    \n-#include <cstdint>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/geometry/type.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-Classes

    struct  Dune::VTK::PrintType< T >
     determine a type to safely put another type into a stream More...
     
    struct  Dune::VTK::PrintType< unsigned char >
     
    struct  Dune::VTK::PrintType< signed char >
     
    struct  Dune::VTK::PrintType< char >
     
    class  Dune::VTK::FieldInfo
     Descriptor struct for VTK fields. More...
     
    \n+
    \n \n \n \n \n-\n+\n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Enumerations

    enum  Dune::VTK::OutputType { Dune::VTK::ascii\n-, Dune::VTK::base64\n-, Dune::VTK::appendedraw\n-, Dune::VTK::appendedbase64\n- }
     How the bulk data should be stored in the file. More...
     
    enum  Dune::VTK::DataMode { Dune::VTK::conforming\n-, Dune::VTK::nonconforming\n- }
     Whether to produce conforming or non-conforming output. More...
     
    enum  Dune::VTK::GeometryType {
    \n-  Dune::VTK::vertex = 1\n-, Dune::VTK::line = 3\n-, Dune::VTK::triangle = 5\n-, Dune::VTK::polygon = 7\n-,
    \n-  Dune::VTK::quadrilateral = 9\n-, Dune::VTK::tetrahedron = 10\n-, Dune::VTK::hexahedron = 12\n-, Dune::VTK::prism = 13\n-,
    \n-  Dune::VTK::pyramid = 14\n-, Dune::VTK::polyhedron = 42\n-
    \n- }
     Type representing VTK's entity geometry types. More...
     
    enum  Dune::VTK::FileType { Dune::VTK::polyData\n-, Dune::VTK::unstructuredGrid\n- }
     which type of VTK file to write More...
     
    enum class  Dune::VTK::Precision {
    \n-  Dune::VTK::int32\n-, Dune::VTK::uint8\n-, Dune::VTK::uint32\n-, Dune::VTK::float32\n-,
    \n-  Dune::VTK::float64\n-
    \n- }
     which precision to use when writing out data to vtk files More...
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

    \n-Functions

    GeometryType Dune::VTK::geometryType (const Dune::GeometryType &t)
     mapping from GeometryType to VTKGeometryType
     
    int Dune::VTK::renumber (const Dune::GeometryType &t, int i)
     renumber VTK <-> Dune
     
    template<typename T >
    int Dune::VTK::renumber (const T &t, int i)
     renumber VTK <-> Dune
     
    std::string Dune::VTK::getEndiannessString ()
     determine endianness of this C++ implementation
     
    std::string Dune::VTK::toString (Precision p)
     map precision to VTK type name
     
    std::size_t Dune::VTK::typeSize (Precision p)
     map precision to byte size
     
    \n-

    Detailed Description

    \n-

    Common stuff for the VTKWriter.

    \n-
    Author
    Peter Bastian, Christian Engwer
    \n-

    This file contains common stuff for all instances of VTKWriter.

    \n-
    \n+\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,94 +2,21 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\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-common.hh File Reference\n-Common stuff for the VTKWriter. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-_\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bT_\b _\b>\n-\u00a0 determine a type to safely put another type into a stream _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bc_\bh_\ba_\br_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-\u00a0 Descriptor struct for _\bV_\bT_\bK fields. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+simplexgeneration.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\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:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4 ,\n- _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 }\n-\u00a0 How the bulk data should be stored in the file. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:\n- _\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg }\n-\u00a0 Whether to produce conforming or non-conforming output. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be {\n- \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bv_\be_\br_\bt_\be_\bx = 1 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bl_\bi_\bn_\be = 3 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:\n- _\bt_\br_\bi_\ba_\bn_\bg_\bl_\be = 5 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bg_\bo_\bn = 7 ,\n- \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl = 9 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn = 10 ,\n- _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn = 12 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\br_\bi_\bs_\bm = 13 ,\n- \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\by_\br_\ba_\bm_\bi_\bd = 14 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn = 42\n- }\n-\u00a0 Type representing VTK's entity geometry types. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be { _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:\n- _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd }\n-\u00a0 which type of VTK file to write _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-enum class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn {\n- \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bi_\bn_\bt_\b3_\b2 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bi_\bn_\bt_\b8 , _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2 , _\bD_\bu_\bn_\be_\b:_\b:\n- _\bV_\bT_\bK_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2 ,\n- \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4\n- }\n-\u00a0 which precision to use when writing out data to vtk files _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be (const Dune::GeometryType &t)\n-\u00a0 mapping from GeometryType to VTKGeometryType\n-\u00a0\n- int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br (const Dune::GeometryType &t, int i)\n-\u00a0 renumber _\bV_\bT_\bK <-> _\bD_\bu_\bn_\be\n-\u00a0\n-template\n- int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br (const T &t, int i)\n-\u00a0 renumber _\bV_\bT_\bK <-> _\bD_\bu_\bn_\be\n-\u00a0\n- std::string\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg ()\n-\u00a0 determine endianness of this C++ implementation\n-\u00a0\n- std::string\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg (_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n-\u00a0 map precision to _\bV_\bT_\bK type name\n-\u00a0\n- std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\by_\bp_\be_\bS_\bi_\bz_\be (_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n-\u00a0 map precision to byte size\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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-Common stuff for the VTKWriter.\n- Author\n- Peter Bastian, Christian Engwer\n-This file contains common stuff for all instances of VTKWriter.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00914.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00914.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: basicwriter.hh File Reference\n+dune-grid: simplexgeneration.hh File Reference\n \n \n \n \n \n \n \n@@ -65,52 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    basicwriter.hh File Reference
    \n+
    simplexgeneration.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <iomanip>
    \n-#include <iterator>
    \n-#include <list>
    \n-#include <memory>
    \n-#include <sstream>
    \n-#include <string>
    \n-#include <dune/common/parallel/mpiguard.hh>
    \n-#include <dune/common/path.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/io/file/vtk/common.hh>
    \n-#include <dune/grid/io/file/vtk/functionwriter.hh>
    \n-#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n-#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n+
    #include <iostream>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::VTK::BasicWriter< IteratorFactory >
    class  Dune::dgf::SimplexGenerationBlock
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,36 +2,25 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-basicwriter.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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+simplexgeneration.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00914_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00914_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: basicwriter.hh Source File\n+dune-grid: simplexgeneration.hh Source File\n \n \n \n \n \n \n \n@@ -70,496 +70,156 @@\n
    \n \n \n \n \n \n \n
    \n-
    basicwriter.hh
    \n+
    simplexgeneration.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH
    \n-
    8
    \n-
    9#include <fstream>
    \n-
    10#include <iomanip>
    \n-
    11#include <iterator>
    \n-
    12#include <list>
    \n-
    13#include <memory>
    \n-
    14#include <sstream>
    \n-
    15#include <string>
    \n-
    16
    \n-
    17#include <dune/common/parallel/mpiguard.hh>
    \n-
    18#include <dune/common/path.hh>
    \n-
    19
    \n-
    20#include <dune/geometry/referenceelements.hh>
    \n-
    21
    \n-\n-\n-\n-\n-
    26
    \n-
    27namespace Dune
    \n-
    28{
    \n-
    31
    \n-
    \n-
    32 namespace VTK {
    \n-
    33
    \n-
    34 template<typename IteratorFactory>
    \n-
    \n-\n-
    36 typedef typename IteratorFactory::CellIterator CellIterator;
    \n-
    37 typedef typename IteratorFactory::CornerIterator CornerIterator;
    \n-
    38 typedef typename IteratorFactory::PointIterator PointIterator;
    \n-
    39
    \n-
    40 typedef typename IteratorFactory::Cell Cell;
    \n-
    41
    \n-
    42 public:
    \n-\n-
    44
    \n-
    45 private:
    \n-
    46 typedef std::list<std::shared_ptr<FunctionWriter> > WriterList;
    \n-
    47 typedef typename WriterList::const_iterator WIterator;
    \n-
    48
    \n-
    49 typedef typename Cell::Geometry::ctype ctype;
    \n-
    50 static const unsigned celldim = Cell::mydimension;
    \n-
    51 typedef ReferenceElements<ctype, celldim> Refelems;
    \n-
    52
    \n-
    53 static const FileType fileType = celldim == 1
    \n-\n+
    5#ifndef DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH
    \n+
    6#define DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH
    \n+
    7
    \n+
    8#include <iostream>
    \n+
    9
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    15 namespace dgf
    \n+
    16 {
    \n+
    17
    \n+
    \n+\n+
    19 : public BasicBlock
    \n+
    20 {
    \n+
    21 double area_;
    \n+
    22 double angle_;
    \n+
    23 bool display_;
    \n+
    24 std::string path_;
    \n+
    25 bool haspath_;
    \n+
    26 std::string filename_;
    \n+
    27 std::string filetype_;
    \n+
    28 std::string parameter_;
    \n+
    29 std::string dumpfilename_;
    \n+
    30 bool hasfile_;
    \n+
    31 int dimension_;
    \n+
    32
    \n+
    33 public:
    \n+
    34 SimplexGenerationBlock ( std :: istream &in );
    \n+
    35
    \n+
    \n+
    36 double maxArea ()
    \n+
    37 {
    \n+
    38 return area_;
    \n+
    39 }
    \n+
    \n+
    40
    \n+
    \n+
    41 double minAngle ()
    \n+
    42 {
    \n+
    43 return angle_;
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    46 bool display ()
    \n+
    47 {
    \n+
    48 return display_;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    51 bool haspath ()
    \n+
    52 {
    \n+
    53 return haspath_;
    \n+
    54 }
    \n+
    \n
    55
    \n-
    56 const IteratorFactory& factory;
    \n-
    57
    \n-
    58 WriterList cellData;
    \n-
    59 WriterList pointData;
    \n+
    \n+
    56 std :: string path ()
    \n+
    57 {
    \n+
    58 return path_;
    \n+
    59 }
    \n+
    \n
    60
    \n-\n-
    62 typename IteratorFactory::ConnectivityWriter connectivity;
    \n-
    63 OffsetsWriter<Cell> offsets;
    \n-\n+
    \n+
    61 bool hasfile ()
    \n+
    62 {
    \n+
    63 return hasfile_;
    \n+
    64 }
    \n+
    \n
    65
    \n-
    66 public:
    \n-
    \n-
    67 BasicWriter(const IteratorFactory& factory_)
    \n-
    68 : factory(factory_), connectivity(factory.makeConnectivity())
    \n-
    69 { }
    \n+
    \n+
    66 std :: string filename ()
    \n+
    67 {
    \n+
    68 return filename_;
    \n+
    69 }
    \n
    \n
    70
    \n-
    72 //
    \n-
    73 // Methods for adding data
    \n-
    74 //
    \n+
    \n+
    71 std :: string filetype ()
    \n+
    72 {
    \n+
    73 return filetype_;
    \n+
    74 }
    \n+
    \n
    75
    \n
    \n-
    76 void addCellData(const std::shared_ptr<FunctionWriter>& writer) {
    \n-
    77 cellData.push_back(writer);
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    \n-
    80 void addPointData(const std::shared_ptr<FunctionWriter>& writer) {
    \n-
    81 pointData.push_back(writer);
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    \n-
    84 void clear() {
    \n-
    85 cellData.clear();
    \n-
    86 pointData.clear();
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    89 protected:
    \n-
    91 //
    \n-
    92 // Methods for writing single functions
    \n-
    93 //
    \n-
    94
    \n-
    \n-\n-
    96 FunctionWriter& functionWriter,
    \n-
    97 unsigned ncells) const
    \n-
    98 {
    \n-
    99 if(functionWriter.beginWrite(vtuWriter, ncells)) {
    \n-
    100 const CellIterator& cellend = factory.endCells();
    \n-
    101 for(CellIterator cellit = factory.beginCells(); cellit != cellend;
    \n-
    102 ++cellit)
    \n-
    103 functionWriter.write(*cellit, Refelems::general(cellit->type()).
    \n-
    104 position(0,0));
    \n-
    105 }
    \n-
    106 functionWriter.endWrite();
    \n-
    107 }
    \n-
    \n-
    108
    \n-
    \n-\n-
    110 FunctionWriter& functionWriter,
    \n-
    111 unsigned npoints) const
    \n-
    112 {
    \n-
    113 if(functionWriter.beginWrite(vtuWriter, npoints)) {
    \n-
    114 const PointIterator& pend = factory.endPoints();
    \n-
    115 for(PointIterator pit = factory.beginPoints(); pit != pend; ++pit)
    \n-
    116 functionWriter.write(pit->cell(), pit->duneIndex());
    \n-
    117 }
    \n-
    118 functionWriter.endWrite();
    \n-
    119 }
    \n-
    \n-
    120
    \n-
    \n-\n-
    122 FunctionWriter& functionWriter,
    \n-
    123 unsigned ncorners) const
    \n-
    124 {
    \n-
    125 if(functionWriter.beginWrite(vtuWriter, ncorners)) {
    \n-
    126 const CornerIterator& cend = factory.endCorners();
    \n-
    127 for(CornerIterator cit = factory.beginCorners(); cit != cend; ++cit)
    \n-
    128 functionWriter.write(cit->cell(), cit->duneIndex());
    \n-
    129 }
    \n-
    130 functionWriter.endWrite();
    \n-
    131 }
    \n-
    \n-
    132
    \n-
    134 //
    \n-
    135 // Methods for writing whole sections
    \n-
    136 //
    \n-
    137
    \n-
    \n-
    138 static std::string getFirstScalar(const WriterList& data) {
    \n-
    139 const WIterator& wend = data.end();
    \n-
    140 for(WIterator wit = data.begin(); wit != wend; ++wit)
    \n-
    141 if((*wit)->ncomps() == 1)
    \n-
    142 return (*wit)->name();
    \n-
    143 return "";
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    \n-
    146 static std::string getFirstVector(const WriterList& data) {
    \n-
    147 const WIterator& wend = data.end();
    \n-
    148 for(WIterator wit = data.begin(); wit != wend; ++wit)
    \n-
    149 if((*wit)->ncomps() == 3)
    \n-
    150 return (*wit)->name();
    \n-
    151 return "";
    \n-
    152 }
    \n-
    \n-
    153
    \n-
    \n-
    154 void writeCellData(VTUWriter& vtuWriter, unsigned ncells) const {
    \n-
    155 if(cellData.empty()) return;
    \n-
    156
    \n-
    157 vtuWriter.beginCellData(getFirstScalar(cellData),
    \n-
    158 getFirstVector(cellData));
    \n-
    159 const WIterator& wend = cellData.end();
    \n-
    160 for(WIterator wit = cellData.begin(); wit != wend; ++wit)
    \n-
    161 writeCellFunction(vtuWriter, **wit, ncells);
    \n-
    162 vtuWriter.endCellData();
    \n-
    163 }
    \n-
    \n-
    164
    \n-
    \n-
    165 void writePointData(VTUWriter& vtuWriter, unsigned npoints) const {
    \n-
    166 if(pointData.empty()) return;
    \n-
    167
    \n-
    168 vtuWriter.beginPointData(getFirstScalar(pointData),
    \n-
    169 getFirstVector(pointData));
    \n-
    170 const WIterator& wend = pointData.end();
    \n-
    171 for(WIterator wit = pointData.begin(); wit != wend; ++wit)
    \n-
    172 writePointFunction(vtuWriter, **wit, npoints);
    \n-
    173 vtuWriter.endPointData();
    \n-
    174 }
    \n-
    \n-
    175
    \n-
    \n-
    176 void writeGrid(VTUWriter& vtuWriter, unsigned ncells, unsigned npoints,
    \n-
    177 unsigned ncorners) {
    \n-
    178 vtuWriter.beginPoints();
    \n-
    179 writePointFunction(vtuWriter, coords, npoints);
    \n-
    180 vtuWriter.endPoints();
    \n-
    181
    \n-
    182 vtuWriter.beginCells();
    \n-
    183 writeCornerFunction(vtuWriter, connectivity, ncorners);
    \n-
    184 writeCellFunction(vtuWriter, offsets, ncells);
    \n-
    185 if(fileType != polyData)
    \n-
    186 writeCellFunction(vtuWriter, types, ncells);
    \n-
    187 vtuWriter.endCells();
    \n-
    188 }
    \n-
    \n-
    189
    \n-
    \n-
    190 void writeAll(VTUWriter& vtuWriter, unsigned ncells, unsigned npoints,
    \n-
    191 unsigned ncorners) {
    \n-
    192 writeCellData(vtuWriter, ncells);
    \n-
    193 writePointData(vtuWriter, npoints);
    \n-
    194 writeGrid(vtuWriter, ncells, npoints, ncorners);
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    197 public:
    \n-
    \n-
    198 void writePiece(const std::string& filename, OutputType outputType) {
    \n-
    199 std::ofstream stream;
    \n-
    200 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n-
    201 std::ios_base::eofbit);
    \n-
    202 stream.open(filename.c_str(), std::ios::binary);
    \n-
    203
    \n-
    204 VTUWriter vtuWriter(stream, outputType, fileType);
    \n-
    205
    \n-
    206 unsigned ncells = std::distance(factory.beginCells(),
    \n-
    207 factory.endCells());
    \n-
    208 unsigned npoints = std::distance(factory.beginPoints(),
    \n-
    209 factory.endPoints());
    \n-
    210 unsigned ncorners = std::distance(factory.beginCorners(),
    \n-
    211 factory.endCorners());
    \n-
    212
    \n-
    213 vtuWriter.beginMain(ncells, npoints);
    \n-
    214 writeAll(vtuWriter, ncells, npoints, ncorners);
    \n-
    215 vtuWriter.endMain();
    \n-
    216
    \n-
    217 if(vtuWriter.beginAppended())
    \n-
    218 writeAll(vtuWriter, ncells, npoints, ncorners);
    \n-
    219 vtuWriter.endAppended();
    \n-
    220
    \n-
    221 }
    \n-
    \n-
    222
    \n-
    224
    \n-
    \n-
    240 void writeCollection(const std::string name,
    \n-
    241 const std::string& piecename,
    \n-
    242 const std::string& piecepath)
    \n-
    243 {
    \n-
    244 std::ofstream stream;
    \n-
    245 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n-
    246 std::ios_base::eofbit);
    \n-
    247 stream.open(name.c_str(), std::ios::binary);
    \n-
    248
    \n-
    249 PVTUWriter writer(stream, fileType);
    \n-
    250
    \n-
    251 writer.beginMain();
    \n-
    252
    \n-
    253 // PPointData
    \n-
    254 writer.beginPointData(getFirstScalar(pointData),
    \n-
    255 getFirstVector(pointData));
    \n-
    256 for(WIterator it=pointData.begin(); it!=pointData.end(); ++it)
    \n-
    257 (*it)->addArray(writer);
    \n-
    258 writer.endPointData();
    \n-
    259
    \n-
    260 // PCellData
    \n-
    261 writer.beginCellData(getFirstScalar(cellData),
    \n-
    262 getFirstVector(cellData));
    \n-
    263 for(WIterator it=cellData.begin(); it!=cellData.end(); ++it)
    \n-
    264 (*it)->addArray(writer);
    \n-
    265 writer.endCellData();
    \n-
    266
    \n-
    267 // PPoints
    \n-
    268 writer.beginPoints();
    \n-
    269 coords.addArray(writer);
    \n-
    270 writer.endPoints();
    \n-
    271
    \n-
    272 // Pieces
    \n-
    273 for( int i = 0; i < factory.comm().size(); ++i )
    \n-
    274 writer.addPiece(getParallelPieceName(piecename, piecepath, i));
    \n-
    275
    \n-
    276 writer.endMain();
    \n-
    277 }
    \n-
    \n-
    278
    \n-
    280 //
    \n-
    281 // Filename generators
    \n-
    282 //
    \n-
    283
    \n-
    285
    \n-
    \n-
    295 std::string getParallelPieceName(const std::string& name,
    \n-
    296 const std::string& path, int rank) const
    \n-
    297 {
    \n-
    298 std::ostringstream s;
    \n-
    299 if(path.size() > 0) {
    \n-
    300 s << path;
    \n-
    301 if(path[path.size()-1] != '/')
    \n-
    302 s << '/';
    \n-
    303 }
    \n-
    304 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()
    \n-
    305 << ':';
    \n-
    306 s << 'p' << std::setw(4) << std::setfill('0') << rank << ':';
    \n-
    307 s << name;
    \n-
    308 switch(fileType) {
    \n-
    309 case polyData : s << ".vtp"; break;
    \n-
    310 case unstructuredGrid : s << ".vtu"; break;
    \n-
    311 }
    \n-
    312 return s.str();
    \n-
    313 }
    \n-
    \n-
    314
    \n-
    316
    \n-
    \n-
    325 std::string getParallelHeaderName(const std::string& name,
    \n-
    326 const std::string& path) const
    \n-
    327 {
    \n-
    328 std::ostringstream s;
    \n-
    329 if(path.size() > 0) {
    \n-
    330 s << path;
    \n-
    331 if(path[path.size()-1] != '/')
    \n-
    332 s << '/';
    \n-
    333 }
    \n-
    334 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()
    \n-
    335 << ':';
    \n-
    336 s << name;
    \n-
    337 switch(fileType) {
    \n-
    338 case polyData : s << ".pvtp"; break;
    \n-
    339 case unstructuredGrid : s << ".pvtu"; break;
    \n-
    340 }
    \n-
    341 return s.str();
    \n-
    342 }
    \n-
    \n-
    343
    \n-
    345
    \n-
    \n-
    357 std::string getSerialPieceName(const std::string& name,
    \n-
    358 const std::string& path) const
    \n-
    359 {
    \n-
    360 switch(fileType) {
    \n-
    361 case polyData : return concatPaths(path, name+".vtp");
    \n-
    362 case unstructuredGrid : return concatPaths(path, name+".vtu");
    \n-
    363 }
    \n-
    364 return concatPaths(path, name); // unknown fileType
    \n-
    365 }
    \n-
    \n-
    366
    \n-
    368 //
    \n-
    369 // User interface functions for writing
    \n-
    370 //
    \n-
    371
    \n-
    373
    \n-
    \n-
    395 std::string pwrite(const std::string& name, const std::string& path,
    \n-
    396 const std::string& extendpath, OutputType outputType)
    \n-
    397 {
    \n-
    398 MPIGuard guard(factory.comm());
    \n-
    399
    \n-
    400 // do some magic because paraview can only cope with relative paths to
    \n-
    401 // piece files
    \n-
    402 std::ofstream file;
    \n-
    403 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n-
    404 std::ios_base::eofbit);
    \n-
    405 std::string piecepath = concatPaths(path, extendpath);
    \n-
    406 std::string relpiecepath = relativePath(path, piecepath);
    \n-
    407
    \n-
    408 // write this processes .vtu/.vtp piece file
    \n-
    409 std::string fullname = getParallelPieceName(name, piecepath,
    \n-
    410 factory.comm().rank());
    \n-
    411 writePiece(fullname, outputType);
    \n-
    412
    \n-
    413 // if we are rank 0, write .pvtu/.pvtp parallel header
    \n-
    414 fullname = getParallelHeaderName(name, path);
    \n-
    415 if(factory.comm().rank() == 0)
    \n-
    416 writeCollection(fullname, name, relpiecepath);
    \n-
    417
    \n-
    418 guard.finalize();
    \n-
    419
    \n-
    420 return fullname;
    \n-
    421 }
    \n-
    \n-
    422
    \n-
    \n-
    436 std::string write(const std::string &name, OutputType outputType)
    \n-
    437 {
    \n-
    438 // in the parallel case, just use pwrite, it has all the necessary
    \n-
    439 // stuff, so we don't need to reimplement it here.
    \n-
    440 if(factory.comm().size() > 1)
    \n-
    441 return pwrite(name, "", "", outputType);
    \n-
    442
    \n-
    443 // generate filename for process data
    \n-
    444 std::string pieceName = getSerialPieceName(name, "");
    \n-
    445
    \n-
    446 writePiece(pieceName, outputType);
    \n-
    447
    \n-
    448 return pieceName;
    \n-
    449 }
    \n-
    \n-
    450
    \n-
    451 };
    \n-
    \n-
    452
    \n-
    453 } // namespace VTK
    \n-
    \n-
    454
    \n-
    456
    \n-
    457} // namespace Dune
    \n-
    458
    \n-
    459#endif // DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH
    \n-\n-
    Common stuff for the VTKWriter.
    \n-\n-\n+
    76 int dimension ()
    \n+
    77 {
    \n+
    78 return dimension_;
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    \n+
    81 std :: string parameter ()
    \n+
    82 {
    \n+
    83 return parameter_;
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    \n+
    86 const std::string dumpFileName ( ) const
    \n+
    87 {
    \n+
    88 return dumpfilename_;
    \n+
    89 }
    \n+
    \n+
    90 };
    \n+
    \n+
    91
    \n+
    92 } // end namespace dgf
    \n+
    93
    \n+
    94} // end namespace Dune
    \n+
    95
    \n+
    96#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n-
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n-
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n-
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n-
    Definition basicwriter.hh:35
    \n-
    void writeCellData(VTUWriter &vtuWriter, unsigned ncells) const
    Definition basicwriter.hh:154
    \n-
    BasicWriter(const IteratorFactory &factory_)
    Definition basicwriter.hh:67
    \n-
    std::string getSerialPieceName(const std::string &name, const std::string &path) const
    return name of a serial piece file
    Definition basicwriter.hh:357
    \n-
    void writeCollection(const std::string name, const std::string &piecename, const std::string &piecepath)
    write header file in parallel case to stream
    Definition basicwriter.hh:240
    \n-
    void writeGrid(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints, unsigned ncorners)
    Definition basicwriter.hh:176
    \n-
    void writeAll(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints, unsigned ncorners)
    Definition basicwriter.hh:190
    \n-
    std::string pwrite(const std::string &name, const std::string &path, const std::string &extendpath, OutputType outputType)
    write output; interface might change later
    Definition basicwriter.hh:395
    \n-
    void clear()
    Definition basicwriter.hh:84
    \n-
    void writeCellFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter, unsigned ncells) const
    Definition basicwriter.hh:95
    \n-
    void writeCornerFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter, unsigned ncorners) const
    Definition basicwriter.hh:121
    \n-
    std::string getParallelHeaderName(const std::string &name, const std::string &path) const
    return name of a parallel header file
    Definition basicwriter.hh:325
    \n-
    void writePointData(VTUWriter &vtuWriter, unsigned npoints) const
    Definition basicwriter.hh:165
    \n-
    static std::string getFirstVector(const WriterList &data)
    Definition basicwriter.hh:146
    \n-
    FunctionWriterBase< Cell > FunctionWriter
    Definition basicwriter.hh:43
    \n-
    void writePointFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter, unsigned npoints) const
    Definition basicwriter.hh:109
    \n-
    void writePiece(const std::string &filename, OutputType outputType)
    Definition basicwriter.hh:198
    \n-
    void addCellData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:76
    \n-
    static std::string getFirstScalar(const WriterList &data)
    Definition basicwriter.hh:138
    \n-
    std::string getParallelPieceName(const std::string &name, const std::string &path, int rank) const
    return name of a parallel piece file
    Definition basicwriter.hh:295
    \n-
    std::string write(const std::string &name, OutputType outputType)
    write output (interface might change later)
    Definition basicwriter.hh:436
    \n-
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n-
    Base class for function writers.
    Definition functionwriter.hh:34
    \n-
    virtual void write(const Cell &, const Domain &)
    write at the given position
    Definition functionwriter.hh:59
    \n-
    virtual void endWrite()=0
    signal end of writing
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0
    start writing with the given writer
    \n-
    writer for the Coordinates array
    Definition functionwriter.hh:147
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:165
    \n-
    writer for the offsets array
    Definition functionwriter.hh:300
    \n-
    writer for the types array
    Definition functionwriter.hh:340
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n-
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition pvtuwriter.hh:195
    \n-
    void endCellData()
    finish CellData section
    Definition pvtuwriter.hh:155
    \n-
    void beginMain(unsigned ghostLevel=0)
    start the main PPolyData/PUnstructuredGrid section
    Definition pvtuwriter.hh:189
    \n-
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition pvtuwriter.hh:146
    \n-
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition pvtuwriter.hh:120
    \n-
    void addPiece(const std::string &filename)
    Add a serial piece to the output file.
    Definition pvtuwriter.hh:215
    \n-
    void endPointData()
    finish PointData section
    Definition pvtuwriter.hh:129
    \n-
    void endPoints()
    finish section for the point coordinates
    Definition pvtuwriter.hh:171
    \n-
    void beginPoints()
    start section for the point coordinates
    Definition pvtuwriter.hh:166
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n-
    bool beginAppended()
    start the appended data section
    Definition vtuwriter.hh:345
    \n-
    void endAppended()
    finish the appended data section
    Definition vtuwriter.hh:359
    \n-
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n-
    void beginMain(unsigned ncells, unsigned npoints)
    start the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:310
    \n-
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n-
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n-
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n-
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n-
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n-
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n-
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n-
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:320
    \n+
    Definition basic.hh:31
    \n+
    Definition simplexgeneration.hh:20
    \n+
    std::string filename()
    Definition simplexgeneration.hh:66
    \n+
    double maxArea()
    Definition simplexgeneration.hh:36
    \n+
    bool haspath()
    Definition simplexgeneration.hh:51
    \n+
    std::string parameter()
    Definition simplexgeneration.hh:81
    \n+
    int dimension()
    Definition simplexgeneration.hh:76
    \n+
    std::string path()
    Definition simplexgeneration.hh:56
    \n+
    const std::string dumpFileName() const
    Definition simplexgeneration.hh:86
    \n+
    bool display()
    Definition simplexgeneration.hh:46
    \n+
    double minAngle()
    Definition simplexgeneration.hh:41
    \n+
    bool hasfile()
    Definition simplexgeneration.hh:61
    \n+
    std::string filetype()
    Definition simplexgeneration.hh:71
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,607 +2,151 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-basicwriter.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+simplexgeneration.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH\n-8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14#include \n-15#include \n-16\n-17#include \n-18#include \n-19\n-20#include \n-21\n-22#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-23#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-26\n-27namespace _\bD_\bu_\bn_\be\n-28{\n-31\n-_\b3_\b2 namespace VTK {\n-33\n-34 template\n-_\b3_\b5 class _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br {\n-36 typedef typename IteratorFactory::CellIterator CellIterator;\n-37 typedef typename IteratorFactory::CornerIterator CornerIterator;\n-38 typedef typename IteratorFactory::PointIterator PointIterator;\n-39\n-40 typedef typename IteratorFactory::Cell Cell;\n-41\n-42 public:\n-_\b4_\b3 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br;\n-44\n-45 private:\n-46 typedef std::list > WriterList;\n-47 typedef typename WriterList::const_iterator WIterator;\n-48\n-49 typedef typename Cell::Geometry::ctype ctype;\n-50 static const unsigned celldim = Cell::mydimension;\n-51 typedef ReferenceElements Refelems;\n-52\n-53 static const _\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType = celldim == 1\n-54 ? _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd;\n+5#ifndef DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH\n+6#define DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH\n+7\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+15 namespace dgf\n+16 {\n+17\n+_\b1_\b8 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+19 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+20 {\n+21 double area_;\n+22 double angle_;\n+23 bool display_;\n+24 std::string path_;\n+25 bool haspath_;\n+26 std::string filename_;\n+27 std::string filetype_;\n+28 std::string parameter_;\n+29 std::string dumpfilename_;\n+30 bool hasfile_;\n+31 int dimension_;\n+32\n+33 public:\n+34 _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std :: istream &in );\n+35\n+_\b3_\b6 double _\bm_\ba_\bx_\bA_\br_\be_\ba ()\n+37 {\n+38 return area_;\n+39 }\n+40\n+_\b4_\b1 double _\bm_\bi_\bn_\bA_\bn_\bg_\bl_\be ()\n+42 {\n+43 return angle_;\n+44 }\n+45\n+_\b4_\b6 bool _\bd_\bi_\bs_\bp_\bl_\ba_\by ()\n+47 {\n+48 return display_;\n+49 }\n+50\n+_\b5_\b1 bool _\bh_\ba_\bs_\bp_\ba_\bt_\bh ()\n+52 {\n+53 return haspath_;\n+54 }\n 55\n-56 const IteratorFactory& factory;\n-57\n-58 WriterList cellData;\n-59 WriterList pointData;\n+_\b5_\b6 std :: string _\bp_\ba_\bt_\bh ()\n+57 {\n+58 return path_;\n+59 }\n 60\n-61 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> coords;\n-62 typename IteratorFactory::ConnectivityWriter connectivity;\n-63 _\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> offsets;\n-64 _\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> types;\n+_\b6_\b1 bool _\bh_\ba_\bs_\bf_\bi_\bl_\be ()\n+62 {\n+63 return hasfile_;\n+64 }\n 65\n-66 public:\n-_\b6_\b7 _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br(const IteratorFactory& factory_)\n-68 : factory(factory_), connectivity(factory.makeConnectivity())\n-69 { }\n+_\b6_\b6 std :: string _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be ()\n+67 {\n+68 return filename_;\n+69 }\n 70\n-72 //\n-73 // Methods for adding data\n-74 //\n+_\b7_\b1 std :: string _\bf_\bi_\bl_\be_\bt_\by_\bp_\be ()\n+72 {\n+73 return filetype_;\n+74 }\n 75\n-_\b7_\b6 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::shared_ptr& writer) {\n-77 cellData.push_back(writer);\n-78 }\n-79\n-_\b8_\b0 void _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::shared_ptr& writer) {\n-81 pointData.push_back(writer);\n-82 }\n-83\n-_\b8_\b4 void _\bc_\bl_\be_\ba_\br() {\n-85 cellData.clear();\n-86 pointData.clear();\n-87 }\n-88\n-89 protected:\n-91 //\n-92 // Methods for writing single functions\n-93 //\n-94\n-_\b9_\b5 void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter,\n-96 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br& functionWriter,\n-97 unsigned ncells) const\n-98 {\n-99 if(functionWriter._\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(vtuWriter, ncells)) {\n-100 const CellIterator& cellend = factory.endCells();\n-101 for(CellIterator cellit = factory.beginCells(); cellit != cellend;\n-102 ++cellit)\n-103 functionWriter._\bw_\br_\bi_\bt_\be(*cellit, Refelems::general(cellit->type()).\n-104 position(0,0));\n-105 }\n-106 functionWriter._\be_\bn_\bd_\bW_\br_\bi_\bt_\be();\n-107 }\n-108\n-_\b1_\b0_\b9 void _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter,\n-110 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br& functionWriter,\n-111 unsigned npoints) const\n-112 {\n-113 if(functionWriter._\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(vtuWriter, npoints)) {\n-114 const PointIterator& pend = factory.endPoints();\n-115 for(PointIterator pit = factory.beginPoints(); pit != pend; ++pit)\n-116 functionWriter._\bw_\br_\bi_\bt_\be(pit->cell(), pit->duneIndex());\n-117 }\n-118 functionWriter._\be_\bn_\bd_\bW_\br_\bi_\bt_\be();\n-119 }\n-120\n-_\b1_\b2_\b1 void _\bw_\br_\bi_\bt_\be_\bC_\bo_\br_\bn_\be_\br_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter,\n-122 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br& functionWriter,\n-123 unsigned ncorners) const\n-124 {\n-125 if(functionWriter._\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(vtuWriter, ncorners)) {\n-126 const CornerIterator& cend = factory.endCorners();\n-127 for(CornerIterator cit = factory.beginCorners(); cit != cend; ++cit)\n-128 functionWriter._\bw_\br_\bi_\bt_\be(cit->cell(), cit->duneIndex());\n-129 }\n-130 functionWriter._\be_\bn_\bd_\bW_\br_\bi_\bt_\be();\n-131 }\n-132\n-134 //\n-135 // Methods for writing whole sections\n-136 //\n-137\n-_\b1_\b3_\b8 static std::string _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(const WriterList& data) {\n-139 const WIterator& wend = data.end();\n-140 for(WIterator wit = data.begin(); wit != wend; ++wit)\n-141 if((*wit)->ncomps() == 1)\n-142 return (*wit)->name();\n-143 return \"\";\n-144 }\n-145\n-_\b1_\b4_\b6 static std::string _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(const WriterList& data) {\n-147 const WIterator& wend = data.end();\n-148 for(WIterator wit = data.begin(); wit != wend; ++wit)\n-149 if((*wit)->ncomps() == 3)\n-150 return (*wit)->name();\n-151 return \"\";\n-152 }\n-153\n-_\b1_\b5_\b4 void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned ncells) const {\n-155 if(cellData.empty()) return;\n-156\n-157 vtuWriter._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(cellData),\n-158 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(cellData));\n-159 const WIterator& wend = cellData.end();\n-160 for(WIterator wit = cellData.begin(); wit != wend; ++wit)\n-161 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, **wit, ncells);\n-162 vtuWriter._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n-163 }\n-164\n-_\b1_\b6_\b5 void _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned npoints) const {\n-166 if(pointData.empty()) return;\n-167\n-168 vtuWriter._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(pointData),\n-169 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(pointData));\n-170 const WIterator& wend = pointData.end();\n-171 for(WIterator wit = pointData.begin(); wit != wend; ++wit)\n-172 _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, **wit, npoints);\n-173 vtuWriter._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n-174 }\n-175\n-_\b1_\b7_\b6 void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned ncells, unsigned npoints,\n-177 unsigned ncorners) {\n-178 vtuWriter._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n-179 _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, coords, npoints);\n-180 vtuWriter._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n-181\n-182 vtuWriter._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs();\n-183 _\bw_\br_\bi_\bt_\be_\bC_\bo_\br_\bn_\be_\br_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, connectivity, ncorners);\n-184 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, offsets, ncells);\n-185 if(fileType != _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba)\n-186 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, types, ncells);\n-187 vtuWriter._\be_\bn_\bd_\bC_\be_\bl_\bl_\bs();\n-188 }\n-189\n-_\b1_\b9_\b0 void _\bw_\br_\bi_\bt_\be_\bA_\bl_\bl(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned ncells, unsigned npoints,\n-191 unsigned ncorners) {\n-192 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(vtuWriter, ncells);\n-193 _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(vtuWriter, npoints);\n-194 _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd(vtuWriter, ncells, npoints, ncorners);\n-195 }\n-196\n-197 public:\n-_\b1_\b9_\b8 void _\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be(const std::string& filename, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType) {\n-199 std::ofstream stream;\n-200 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n-201 std::ios_base::eofbit);\n-202 stream.open(filename.c_str(), std::ios::binary);\n-203\n-204 _\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br vtuWriter(stream, outputType, fileType);\n-205\n-206 unsigned ncells = std::distance(factory.beginCells(),\n-207 factory.endCells());\n-208 unsigned npoints = std::distance(factory.beginPoints(),\n-209 factory.endPoints());\n-210 unsigned ncorners = std::distance(factory.beginCorners(),\n-211 factory.endCorners());\n-212\n-213 vtuWriter._\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn(ncells, npoints);\n-214 _\bw_\br_\bi_\bt_\be_\bA_\bl_\bl(vtuWriter, ncells, npoints, ncorners);\n-215 vtuWriter._\be_\bn_\bd_\bM_\ba_\bi_\bn();\n-216\n-217 if(vtuWriter._\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd())\n-218 _\bw_\br_\bi_\bt_\be_\bA_\bl_\bl(vtuWriter, ncells, npoints, ncorners);\n-219 vtuWriter._\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd();\n-220\n-221 }\n-222\n-224\n-_\b2_\b4_\b0 void _\bw_\br_\bi_\bt_\be_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn(const std::string name,\n-241 const std::string& piecename,\n-242 const std::string& piecepath)\n-243 {\n-244 std::ofstream stream;\n-245 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n-246 std::ios_base::eofbit);\n-247 stream.open(name.c_str(), std::ios::binary);\n-248\n-249 _\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br writer(stream, fileType);\n-250\n-251 writer._\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn();\n-252\n-253 // PPointData\n-254 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(pointData),\n-255 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(pointData));\n-256 for(WIterator it=pointData.begin(); it!=pointData.end(); ++it)\n-257 (*it)->addArray(writer);\n-258 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n-259\n-260 // PCellData\n-261 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(cellData),\n-262 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(cellData));\n-263 for(WIterator it=cellData.begin(); it!=cellData.end(); ++it)\n-264 (*it)->addArray(writer);\n-265 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n-266\n-267 // PPoints\n-268 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n-269 coords._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(writer);\n-270 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n-271\n-272 // Pieces\n-273 for( int i = 0; i < factory.comm().size(); ++i )\n-274 writer._\ba_\bd_\bd_\bP_\bi_\be_\bc_\be(_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(piecename, piecepath, i));\n-275\n-276 writer._\be_\bn_\bd_\bM_\ba_\bi_\bn();\n-277 }\n-278\n-280 //\n-281 // Filename generators\n-282 //\n-283\n-285\n-_\b2_\b9_\b5 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n-296 const std::string& path, int rank) const\n-297 {\n-298 std::ostringstream s;\n-299 if(path.size() > 0) {\n-300 s << path;\n-301 if(path[path.size()-1] != '/')\n-302 s << '/';\n-303 }\n-304 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()\n-305 << ':';\n-306 s << 'p' << std::setw(4) << std::setfill('0') << rank << ':';\n-307 s << name;\n-308 switch(fileType) {\n-309 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : s << \".vtp\"; break;\n-310 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd : s << \".vtu\"; break;\n-311 }\n-312 return s.str();\n-313 }\n-314\n-316\n-_\b3_\b2_\b5 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(const std::string& name,\n-326 const std::string& path) const\n-327 {\n-328 std::ostringstream s;\n-329 if(path.size() > 0) {\n-330 s << path;\n-331 if(path[path.size()-1] != '/')\n-332 s << '/';\n-333 }\n-334 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()\n-335 << ':';\n-336 s << name;\n-337 switch(fileType) {\n-338 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : s << \".pvtp\"; break;\n-339 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd : s << \".pvtu\"; break;\n-340 }\n-341 return s.str();\n-342 }\n-343\n-345\n-_\b3_\b5_\b7 std::string _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n-358 const std::string& path) const\n-359 {\n-360 switch(fileType) {\n-361 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : return concatPaths(path, name+\".vtp\");\n-362 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd : return concatPaths(path, name+\".vtu\");\n-363 }\n-364 return concatPaths(path, name); // unknown fileType\n-365 }\n-366\n-368 //\n-369 // User interface functions for writing\n-370 //\n-371\n-373\n-_\b3_\b9_\b5 std::string _\bp_\bw_\br_\bi_\bt_\be(const std::string& name, const std::string& path,\n-396 const std::string& extendpath, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType)\n-397 {\n-398 MPIGuard guard(factory.comm());\n-399\n-400 // do some magic because paraview can only cope with relative paths to\n-401 // piece files\n-402 std::ofstream file;\n-403 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n-404 std::ios_base::eofbit);\n-405 std::string piecepath = concatPaths(path, extendpath);\n-406 std::string relpiecepath = relativePath(path, piecepath);\n-407\n-408 // write this processes .vtu/.vtp piece file\n-409 std::string fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, piecepath,\n-410 factory.comm().rank());\n-411 _\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be(fullname, outputType);\n-412\n-413 // if we are rank 0, write .pvtu/.pvtp parallel header\n-414 fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(name, path);\n-415 if(factory.comm().rank() == 0)\n-416 _\bw_\br_\bi_\bt_\be_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn(fullname, name, relpiecepath);\n-417\n-418 guard.finalize();\n-419\n-420 return fullname;\n-421 }\n-422\n-_\b4_\b3_\b6 std::string _\bw_\br_\bi_\bt_\be(const std::string &name, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType)\n-437 {\n-438 // in the parallel case, just use pwrite, it has all the necessary\n-439 // stuff, so we don't need to reimplement it here.\n-440 if(factory.comm().size() > 1)\n-441 return _\bp_\bw_\br_\bi_\bt_\be(name, \"\", \"\", outputType);\n-442\n-443 // generate filename for process data\n-444 std::string pieceName = _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, \"\");\n-445\n-446 _\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be(pieceName, outputType);\n-447\n-448 return pieceName;\n-449 }\n-450\n-451 };\n-452\n-453 } // namespace VTK\n-454\n-456\n-457} // namespace Dune\n-458\n-459#endif // DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH\n-_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\b7_\b6 int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ()\n+77 {\n+78 return dimension_;\n+79 }\n+80\n+_\b8_\b1 std :: string _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ()\n+82 {\n+83 return parameter_;\n+84 }\n+85\n+_\b8_\b6 const std::string _\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be ( ) const\n+87 {\n+88 return dumpfilename_;\n+89 }\n+90 };\n+91\n+92 } // end namespace dgf\n+93\n+94} // end namespace Dune\n+95\n+96#endif\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n-OutputType\n-How the bulk data should be stored in the file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n-FileType\n-which type of VTK file to write\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n-@ polyData\n-for .vtp files (PolyData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n-@ unstructuredGrid\n-for .vtu files (UnstructuredGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void writeCellData(VTUWriter &vtuWriter, unsigned ncells) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n-BasicWriter(const IteratorFactory &factory_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n-std::string getSerialPieceName(const std::string &name, const std::string\n-&path) const\n-return name of a serial piece file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:357\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn\n-void writeCollection(const std::string name, const std::string &piecename,\n-const std::string &piecepath)\n-write header file in parallel case to stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd\n-void writeGrid(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints,\n-unsigned ncorners)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bA_\bl_\bl\n-void writeAll(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints, unsigned\n-ncorners)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:190\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bw_\br_\bi_\bt_\be\n-std::string pwrite(const std::string &name, const std::string &path, const\n-std::string &extendpath, OutputType outputType)\n-write output; interface might change later\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:395\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bl_\be_\ba_\br\n-void clear()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void writeCellFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter,\n-unsigned ncells) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bo_\br_\bn_\be_\br_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void writeCornerFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter,\n-unsigned ncorners) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be\n-std::string getParallelHeaderName(const std::string &name, const std::string\n-&path) const\n-return name of a parallel header file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:325\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void writePointData(VTUWriter &vtuWriter, unsigned npoints) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br\n-static std::string getFirstVector(const WriterList &data)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-FunctionWriterBase< Cell > FunctionWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void writePointFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter,\n-unsigned npoints) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be\n-void writePiece(const std::string &filename, OutputType outputType)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br\n-static std::string getFirstScalar(const WriterList &data)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n-std::string getParallelPieceName(const std::string &name, const std::string\n-&path, int rank) const\n-return name of a parallel piece file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:295\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-std::string write(const std::string &name, OutputType outputType)\n-write output (interface might change later)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:436\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-Base class for function writers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Cell &, const Domain &)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()=0\n-signal end of writing\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0\n-start writing with the given writer\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-writer for the Coordinates array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br\n-writer for the offsets array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:300\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-writer for the types array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:340\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n-void endMain()\n-finish the main PolyData/UnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void endCellData()\n-finish CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n-void beginMain(unsigned ghostLevel=0)\n-start the main PPolyData/PUnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void beginCellData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void beginPointData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bi_\be_\bc_\be\n-void addPiece(const std::string &filename)\n-Add a serial piece to the output file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:215\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void endPointData()\n-finish PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-void endPoints()\n-finish section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-void beginPoints()\n-start section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n-bool beginAppended()\n-start the appended data section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:345\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n-void endAppended()\n-finish the appended data section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:359\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void endCellData()\n-finish CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n-void beginMain(unsigned ncells, unsigned npoints)\n-start the main PolyData/UnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n-void beginCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void endPointData()\n-finish PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void beginCellData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void beginPointData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-void endPoints()\n-finish section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n-void endCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-void beginPoints()\n-start section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n-void endMain()\n-finish the main PolyData/UnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be\n+std::string filename()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\ba_\bx_\bA_\br_\be_\ba\n+double maxArea()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bp_\ba_\bt_\bh\n+bool haspath()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::string parameter()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+int dimension()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bp_\ba_\bt_\bh\n+std::string path()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n+const std::string dumpFileName() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by\n+bool display()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\bi_\bn_\bA_\bn_\bg_\bl_\be\n+double minAngle()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bf_\bi_\bl_\be\n+bool hasfile()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bl_\be_\bt_\by_\bp_\be\n+std::string filetype()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:71\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00917.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00917.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: corner.hh File Reference\n+dune-grid: vertex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    corner.hh File Reference
    \n+
    vertex.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/io/file/vtk/common.hh>
    \n+
    #include <iostream>
    \n+#include <vector>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::VTK::Corner< Cell >
     simple class representing a corner of a cell More...
    class  Dune::dgf::VertexBlock
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,24 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-corner.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+vertex.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n-\u00a0 simple class representing a corner of a cell _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00917_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00917_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: corner.hh Source File\n+dune-grid: vertex.hh Source File\n \n \n \n \n \n \n \n@@ -70,87 +70,93 @@\n
    \n \n \n \n \n \n \n
    \n-
    corner.hh
    \n+
    vertex.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_CORNER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_CORNER_HH
    \n-
    8
    \n-\n+
    5#ifndef DUNE_DGF_VERTEXBLOCK_HH
    \n+
    6#define DUNE_DGF_VERTEXBLOCK_HH
    \n+
    7
    \n+
    8#include <iostream>
    \n+
    9#include <vector>
    \n
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-
    16 namespace VTK {
    \n-
    17
    \n-
    19
    \n-
    24 template<typename Cell>
    \n-
    \n-
    25 class Corner {
    \n-
    26 // store a pointer to the element
    \n-
    27 const Cell* cell_;
    \n-
    28 // store index of the corner within element (Dune numbering)
    \n-
    29 unsigned index;
    \n-
    30
    \n-
    31 public:
    \n-
    33
    \n-
    \n-
    38 Corner(const Cell& cell, unsigned duneIndex)
    \n-
    39 : cell_(&cell), index(duneIndex)
    \n-
    40 { }
    \n+
    16 namespace dgf
    \n+
    17 {
    \n+
    18
    \n+
    \n+\n+
    20 : public BasicBlock
    \n+
    21 {
    \n+
    22 int dimvertex; // the dimension of the vertices (determined from DGF file)
    \n+
    23 int dimworld; // the dimension of the world (either dimvertex or given by user)
    \n+
    24 bool goodline; // active line describes a vertex
    \n+
    25 int vtxoffset;
    \n+
    26 int nofParam;
    \n+
    27
    \n+
    28 public:
    \n+
    29 // initialize vertex block
    \n+
    30 VertexBlock ( std :: istream &in, int &pdimworld );
    \n+
    31
    \n+
    32 int get ( std :: vector< std :: vector< double > > &vtx,
    \n+
    33 std :: vector< std :: vector< double > > &param,
    \n+
    34 int &nofp );
    \n+
    35
    \n+
    36 // some information
    \n+
    \n+
    37 bool ok () const
    \n+
    38 {
    \n+
    39 return goodline;
    \n+
    40 }
    \n
    \n
    41
    \n-
    43 Corner() { }
    \n-
    44
    \n-
    46 const Cell& cell() const { return *cell_; }
    \n-
    48
    \n-
    52 void cell(const Cell& cell__) { cell_ = &cell__; index = 0; }
    \n-
    53
    \n-
    55 unsigned duneIndex() const { return index; }
    \n-
    57 void duneIndex(unsigned i) { index = i; }
    \n+
    \n+
    42 int offset () const
    \n+
    43 {
    \n+
    44 return vtxoffset;
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    47 private:
    \n+
    48 // get dimworld
    \n+
    49 int getDimWorld ();
    \n+
    50
    \n+
    51 // get next vertex
    \n+
    52 bool next ( std :: vector< double > &point, std :: vector< double > &param );
    \n+
    53 };
    \n+
    \n+
    54
    \n+
    55 } // end namespace dgf
    \n+
    56
    \n+
    57} // end namespace Dune
    \n
    58
    \n-
    60
    \n-
    63 unsigned vtkIndex() const { return renumber(cell_->type(), index); }
    \n-
    65
    \n-
    68 void vtkIndex(unsigned i) { index = renumber(cell_->type(), i); }
    \n-
    69 };
    \n-
    \n-
    70
    \n-
    71 } // namespace VTK
    \n-
    72
    \n-
    74
    \n-
    75} // namespace Dune
    \n-
    76
    \n-
    77#endif // DUNE_GRID_IO_FILE_VTK_CORNER_HH
    \n-
    Common stuff for the VTKWriter.
    \n+
    59#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n-
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n-
    unsigned vtkIndex() const
    get the index of the corner within the cell in VTK-numbering
    Definition corner.hh:63
    \n-
    void vtkIndex(unsigned i)
    set the index of the corner within the cell in VTK-numbering
    Definition corner.hh:68
    \n-
    Corner(const Cell &cell, unsigned duneIndex)
    construct a Corner
    Definition corner.hh:38
    \n-
    void cell(const Cell &cell__)
    set a new cell
    Definition corner.hh:52
    \n-
    void duneIndex(unsigned i)
    set the index of the corner within the cell in Dune-numbering
    Definition corner.hh:57
    \n-
    unsigned duneIndex() const
    get the index of the corner within the cell in Dune-numbering
    Definition corner.hh:55
    \n-
    const Cell & cell() const
    get reference to the cell
    Definition corner.hh:46
    \n-
    Corner()
    construct an invalid Corner
    Definition corner.hh:43
    \n+
    Definition basic.hh:31
    \n+
    Definition vertex.hh:21
    \n+
    int get(std ::vector< std ::vector< double > > &vtx, std ::vector< std ::vector< double > > &param, int &nofp)
    Definition vertex.cc:63
    \n+
    int offset() const
    Definition vertex.hh:42
    \n+
    bool ok() const
    Definition vertex.hh:37
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,107 +2,93 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-corner.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+vertex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_CORNER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_CORNER_HH\n-8\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+5#ifndef DUNE_DGF_VERTEXBLOCK_HH\n+6#define DUNE_DGF_VERTEXBLOCK_HH\n+7\n+8#include \n+9#include \n 10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n 15\n-16 namespace VTK {\n-17\n-19\n-24 template\n-_\b2_\b5 class _\bC_\bo_\br_\bn_\be_\br {\n-26 // store a pointer to the element\n-27 const Cell* cell_;\n-28 // store index of the corner within element (Dune numbering)\n-29 unsigned index;\n-30\n-31 public:\n-33\n-_\b3_\b8 _\bC_\bo_\br_\bn_\be_\br(const Cell& _\bc_\be_\bl_\bl, unsigned _\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx)\n-39 : cell_(&_\bc_\be_\bl_\bl), index(_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx)\n-40 { }\n+16 namespace dgf\n+17 {\n+18\n+_\b1_\b9 class _\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk\n+20 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+21 {\n+22 int dimvertex; // the dimension of the vertices (determined from DGF file)\n+23 int dimworld; // the dimension of the world (either dimvertex or given by\n+user)\n+24 bool goodline; // active line describes a vertex\n+25 int vtxoffset;\n+26 int nofParam;\n+27\n+28 public:\n+29 // initialize vertex block\n+30 _\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int &pdimworld );\n+31\n+32 int _\bg_\be_\bt ( std :: vector< std :: vector< double > > &vtx,\n+33 std :: vector< std :: vector< double > > ¶m,\n+34 int &nofp );\n+35\n+36 // some information\n+_\b3_\b7 bool _\bo_\bk () const\n+38 {\n+39 return goodline;\n+40 }\n 41\n-_\b4_\b3 _\bC_\bo_\br_\bn_\be_\br() { }\n-44\n-_\b4_\b6 const Cell& _\bc_\be_\bl_\bl() const { return *cell_; }\n-48\n-_\b5_\b2 void _\bc_\be_\bl_\bl(const Cell& cell__) { cell_ = &cell__; index = 0; }\n-53\n-_\b5_\b5 unsigned _\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx() const { return index; }\n-_\b5_\b7 void _\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx(unsigned i) { index = i; }\n+_\b4_\b2 int _\bo_\bf_\bf_\bs_\be_\bt () const\n+43 {\n+44 return vtxoffset;\n+45 }\n+46\n+47 private:\n+48 // get dimworld\n+49 int getDimWorld ();\n+50\n+51 // get next vertex\n+52 bool next ( std :: vector< double > &point, std :: vector< double > ¶m\n+);\n+53 };\n+54\n+55 } // end namespace dgf\n+56\n+57} // end namespace Dune\n 58\n-60\n-_\b6_\b3 unsigned _\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx() const { return _\br_\be_\bn_\bu_\bm_\bb_\be_\br(cell_->type(), index); }\n-65\n-_\b6_\b8 void _\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx(unsigned i) { index = _\br_\be_\bn_\bu_\bm_\bb_\be_\br(cell_->type(), i); }\n-69 };\n-70\n-71 } // namespace VTK\n-72\n-74\n-75} // namespace Dune\n-76\n-77#endif // DUNE_GRID_IO_FILE_VTK_CORNER_HH\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n+59#endif\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n-int renumber(const Dune::GeometryType &t, int i)\n-renumber VTK <-> Dune\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-simple class representing a corner of a cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx\n-unsigned vtkIndex() const\n-get the index of the corner within the cell in VTK-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bv_\bt_\bk_\bI_\bn_\bd_\be_\bx\n-void vtkIndex(unsigned i)\n-set the index of the corner within the cell in VTK-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-Corner(const Cell &cell, unsigned duneIndex)\n-construct a Corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bc_\be_\bl_\bl\n-void cell(const Cell &cell__)\n-set a new cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx\n-void duneIndex(unsigned i)\n-set the index of the corner within the cell in Dune-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bd_\bu_\bn_\be_\bI_\bn_\bd_\be_\bx\n-unsigned duneIndex() const\n-get the index of the corner within the cell in Dune-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bc_\be_\bl_\bl\n-const Cell & cell() const\n-get reference to the cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-Corner()\n-construct an invalid Corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n+int get(std ::vector< std ::vector< double > > &vtx, std ::vector< std ::\n+vector< double > > ¶m, int &nofp)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.cc:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n+int offset() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertex.hh:37\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00920.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00920.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: pointiterator.hh File Reference\n+dune-grid: basic.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,53 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    pointiterator.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    basic.hh File Reference
    \n \n
    \n-
    #include <iterator>
    \n-#include <vector>
    \n-#include <dune/common/iteratorfacades.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/grid/io/file/vtk/corner.hh>
    \n-#include <dune/grid/io/file/vtk/corneriterator.hh>
    \n+
    #include <cassert>
    \n+#include <cctype>
    \n+#include <iostream>
    \n+#include <string>
    \n+#include <sstream>
    \n+#include <dune/common/stdstreams.hh>
    \n+#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::VTK::PointIterator< CellIterator, IS >
     iterate over the points of some corner range More...
    class  Dune::dgf::BasicBlock
     
    \n \n \n \n \n-\n+\n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n+\n+\n+\n

    \n+Functions

    void Dune::dgf::makeupcase (std ::string &s)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,34 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-pointiterator.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\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+basic.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\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:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b,_\b _\bI_\bS_\b _\b>\n-\u00a0 iterate over the points of some corner range _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bm_\ba_\bk_\be_\bu_\bp_\bc_\ba_\bs_\be (std ::string &s)\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00920_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00920_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: pointiterator.hh Source File\n+dune-grid: basic.hh Source File\n \n \n \n \n \n \n \n@@ -70,151 +70,172 @@\n
    \n \n \n \n \n \n \n
    \n-
    pointiterator.hh
    \n+
    basic.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH
    \n-
    8
    \n-
    9#include <iterator>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/iteratorfacades.hh>
    \n-
    13#include <dune/common/typetraits.hh>
    \n-
    14
    \n-\n-\n+
    5#ifndef DUNE_DGF_BASICBLOCK_HH
    \n+
    6#define DUNE_DGF_BASICBLOCK_HH
    \n+
    7
    \n+
    8#include <cassert>
    \n+
    9#include <cctype>
    \n+
    10#include <iostream>
    \n+
    11#include <string>
    \n+
    12#include <sstream>
    \n+
    13
    \n+
    14#include <dune/common/stdstreams.hh>
    \n+\n+\n
    17
    \n
    18namespace Dune
    \n
    19{
    \n-
    22
    \n-
    23 namespace VTK {
    \n-
    24
    \n-
    26
    \n-
    49 template<typename CellIterator, typename IS>
    \n-
    \n-\n-
    51 : public ForwardIteratorFacade
    \n-
    52 < PointIterator<CellIterator, IS>,
    \n-
    53 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n-
    54 CellIterator>::value_type>::type>,
    \n-
    55 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n-
    56 CellIterator>::value_type>::type>&,
    \n-
    57 typename std::iterator_traits<CellIterator>::difference_type>
    \n-
    58 {
    \n-
    59 public:
    \n-
    60 typedef VTK::Corner<typename std::remove_const<typename std::iterator_traits<
    \n-
    61 CellIterator>::value_type>::type> Corner;
    \n-
    62
    \n-
    63 // reiterate the facades typedefs here
    \n-\n-
    65 typedef const Corner Value;
    \n-
    66 typedef Value& Reference;
    \n-
    67 typedef typename std::iterator_traits<CellIterator>::difference_type
    \n-\n-
    69
    \n-
    70 static const unsigned mydim = std::iterator_traits<CellIterator>::
    \n-
    71 value_type::mydimension;
    \n-
    72
    \n-
    73 private:
    \n-
    74 typedef ForwardIteratorFacade<DerivedType, Value, Reference,
    \n-
    75 DifferenceType> Facade;
    \n-
    76
    \n-\n-
    78 const IS* is;
    \n-
    79 std::vector<bool> seen;
    \n-
    80
    \n-
    81 public:
    \n+
    20
    \n+
    21 namespace dgf
    \n+
    22 {
    \n+
    23
    \n+
    \n+
    24 inline void makeupcase( std :: string &s )
    \n+
    25 {
    \n+
    26 for (size_t i=0; i<s.size(); i++)
    \n+
    27 s[i]=std::toupper(s[i]);
    \n+
    28 }
    \n+
    \n+
    29
    \n+
    \n+\n+
    31 {
    \n+
    32 int pos; // line number
    \n+
    33 bool active; // block was found
    \n+
    34 bool empty; // block was found but was empty
    \n+
    35 std::string identifier; // identifier of this block
    \n+
    36 int linecount; // total number of lines in the block
    \n+
    37 std::stringstream block_; // the block itself
    \n+
    38 std::string oneline; // the active line in the block
    \n+
    39
    \n+
    40 // get the block (if it exists)
    \n+
    41 void getblock ( std::istream &in );
    \n+
    42
    \n+
    43 // count the number of lines in the block
    \n+
    44 // int countlines ();
    \n+
    45
    \n+
    46 protected:
    \n+
    47 std::stringstream line; // the active line as string buffer
    \n+
    48 // for use in the derived classes
    \n+
    49
    \n+
    50 // go back to beginning of block
    \n+
    \n+
    51 void reset ()
    \n+
    52 {
    \n+
    53 pos = -1;
    \n+
    54 block_.clear();
    \n+
    55 block_.seekg( 0 );
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    58 // get next line and store in string stream
    \n+
    59 bool getnextline ();
    \n+
    60
    \n+
    61 // get next entry in line
    \n+
    62 template< class ENTRY >
    \n+
    \n+
    63 bool getnextentry( ENTRY &entry )
    \n+
    64 {
    \n+
    65 line >> entry;
    \n+
    66 return static_cast< bool >( line );
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    69 bool gettokenparam ( std :: string token, std :: string &entry );
    \n+
    70 bool findtoken( std :: string token );
    \n+
    71
    \n+
    72 public:
    \n+
    73 // search for block in file and store in buffer
    \n+
    74 BasicBlock ( std::istream &in, const char* id );
    \n+
    75
    \n+
    76 // some information on this block
    \n+
    \n+
    77 bool isactive ()
    \n+
    78 {
    \n+
    79 return active;
    \n+
    80 }
    \n+
    \n+
    81
    \n
    \n-\n-
    83 return *cornerit;
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    \n-
    86 bool isDereferencable() const {
    \n-
    87 return cornerit.isDereferencable();
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    \n-
    90 bool equals(const DerivedType& other) const {
    \n-
    91 return cornerit == other.cornerit;
    \n-
    92 }
    \n-
    \n-
    93
    \n-
    \n-
    94 void increment() {
    \n-
    95 for(++cornerit; isDereferencable(); ++cornerit) {
    \n-
    96 typename IS::IndexType index =
    \n-
    97 is->subIndex(cornerit->cell(), cornerit->duneIndex(), mydim);
    \n-
    98
    \n-
    99 if(!seen[index]) {
    \n-
    100 seen[index] = true;
    \n-
    101 break;
    \n-
    102 }
    \n-
    103 }
    \n-
    104 }
    \n+
    82 bool isempty ()
    \n+
    83 {
    \n+
    84 return empty;
    \n+
    85 }
    \n+
    \n+
    86
    \n+
    \n+
    87 int &noflines ()
    \n+
    88 {
    \n+
    89 return linecount;
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    \n+\n+
    93 {
    \n+
    94 return pos;
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    \n+
    97 const std::string & id () const
    \n+
    98 {
    \n+
    99 return identifier;
    \n+
    100 }
    \n+
    \n+
    101
    \n+
    102 // for error messages
    \n+
    \n+
    103 friend std :: ostream &operator<< ( std :: ostream &os, const BasicBlock &b )
    \n+
    104 {
    \n+
    105 return os << "block " << b.identifier << " (line " << b.pos << ")";
    \n+
    106 }
    \n
    \n-
    105
    \n
    107
    \n-
    \n-
    112 PointIterator(const CellIterator& cellit, const CellIterator& cellend,
    \n-
    113 const IS& is_)
    \n-
    114 : cornerit(cellit, cellend), is(&is_), seen(is->size(mydim), false)
    \n-
    115 { }
    \n-
    \n-
    117
    \n-
    \n-
    120 PointIterator(const CellIterator& cellend_)
    \n-
    121 : cornerit(cellend_), is(0)
    \n-
    122 { }
    \n-
    \n-
    123 };
    \n-
    \n-
    124
    \n-
    125 } // namespace VTK
    \n-
    126
    \n-
    128
    \n-
    129} // namespace Dune
    \n-
    130
    \n-
    131#endif // DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH
    \n-\n-\n+
    108 };
    \n+
    \n+
    109
    \n+
    110 } // end namespace dgf
    \n+
    111
    \n+
    112} // end namespace Dune
    \n+
    113
    \n+
    114#endif
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n-
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n-
    bool isDereferencable() const
    Definition corneriterator.hh:69
    \n-
    iterate over the points of some corner range
    Definition pointiterator.hh:58
    \n-
    PointIterator(const CellIterator &cellit, const CellIterator &cellend, const IS &is_)
    construct a CornerIterator
    Definition pointiterator.hh:112
    \n-
    void increment()
    Definition pointiterator.hh:94
    \n-
    VTK::Corner< typename std::remove_const< typename std::iterator_traits< CellIterator >::value_type >::type > Corner
    Definition pointiterator.hh:61
    \n-
    Reference dereference() const
    Definition pointiterator.hh:82
    \n-
    std::iterator_traits< CellIterator >::difference_type DifferenceType
    Definition pointiterator.hh:68
    \n-
    static const unsigned mydim
    Definition pointiterator.hh:70
    \n-
    PointIterator(const CellIterator &cellend_)
    construct a CornerIterator
    Definition pointiterator.hh:120
    \n-
    bool equals(const DerivedType &other) const
    Definition pointiterator.hh:90
    \n-
    PointIterator< CellIterator, IS > DerivedType
    Definition pointiterator.hh:64
    \n-
    const Corner Value
    Definition pointiterator.hh:65
    \n-
    Value & Reference
    Definition pointiterator.hh:66
    \n-
    bool isDereferencable() const
    Definition pointiterator.hh:86
    \n+
    void makeupcase(std ::string &s)
    Definition basic.hh:24
    \n+
    Definition basic.hh:31
    \n+
    void reset()
    Definition basic.hh:51
    \n+
    bool getnextline()
    Definition basic.cc:94
    \n+
    bool findtoken(std ::string token)
    Definition basic.cc:123
    \n+
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n+
    const std::string & id() const
    Definition basic.hh:97
    \n+
    int & noflines()
    Definition basic.hh:87
    \n+
    friend std::ostream & operator<<(std ::ostream &os, const BasicBlock &b)
    Definition basic.hh:103
    \n+
    bool isempty()
    Definition basic.hh:82
    \n+
    bool isactive()
    Definition basic.hh:77
    \n+
    int linenumber()
    Definition basic.hh:92
    \n+
    std::stringstream line
    Definition basic.hh:47
    \n+
    bool gettokenparam(std ::string token, std ::string &entry)
    Definition basic.cc:104
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,168 +2,175 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-pointiterator.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+basic.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH\n-7#define DUNE_GRID_IO_FILE_VTK_POINTITERATOR_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/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+5#ifndef DUNE_DGF_BASICBLOCK_HH\n+6#define DUNE_DGF_BASICBLOCK_HH\n+7\n+8#include \n+9#include \n+10#include \n+11#include \n+12#include \n+13\n+14#include \n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 17\n 18namespace _\bD_\bu_\bn_\be\n 19{\n-22\n-23 namespace VTK {\n-24\n-26\n-49 template\n-_\b5_\b0 class _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-51 : public ForwardIteratorFacade\n-52 < PointIterator,\n-53 const Corner::value_type>::type>,\n-55 const Corner::value_type>::type>&,\n-57 typename std::iterator_traits::difference_type>\n-58 {\n-59 public:\n-60 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br::value_type>::type> _\bC_\bo_\br_\bn_\be_\br;\n-62\n-63 // reiterate the facades typedefs here\n-_\b6_\b4 typedef _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b,_\b _\bI_\bS_\b> _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be;\n-_\b6_\b5 typedef const _\bC_\bo_\br_\bn_\be_\br _\bV_\ba_\bl_\bu_\be;\n-_\b6_\b6 typedef _\bV_\ba_\bl_\bu_\be& _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-67 typedef typename std::iterator_traits::difference_type\n-_\b6_\b8 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be;\n-69\n-_\b7_\b0 static const unsigned _\bm_\by_\bd_\bi_\bm = std::iterator_traits::\n-71 value_type::mydimension;\n-72\n-73 private:\n-74 typedef ForwardIteratorFacade<_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be, _\bV_\ba_\bl_\bu_\be, _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be,\n-75 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be> Facade;\n-76\n-77 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> cornerit;\n-78 const IS* is;\n-79 std::vector seen;\n-80\n-81 public:\n-_\b8_\b2 _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n-83 return *cornerit;\n-84 }\n-85\n-_\b8_\b6 bool _\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be() const {\n-87 return cornerit._\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be();\n-88 }\n-89\n-_\b9_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be& other) const {\n-91 return cornerit == other.cornerit;\n-92 }\n-93\n-_\b9_\b4 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n-95 for(++cornerit; _\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be(); ++cornerit) {\n-96 typename IS::IndexType index =\n-97 is->subIndex(cornerit->cell(), cornerit->duneIndex(), _\bm_\by_\bd_\bi_\bm);\n-98\n-99 if(!seen[index]) {\n-100 seen[index] = true;\n-101 break;\n-102 }\n-103 }\n-104 }\n-105\n+20\n+21 namespace dgf\n+22 {\n+23\n+_\b2_\b4 inline void _\bm_\ba_\bk_\be_\bu_\bp_\bc_\ba_\bs_\be( std :: string &s )\n+25 {\n+26 for (size_t i=0; i\n+_\b6_\b3 bool _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by( ENTRY &entry )\n+64 {\n+65 _\bl_\bi_\bn_\be >> entry;\n+66 return static_cast< bool >( _\bl_\bi_\bn_\be );\n+67 }\n+68\n+69 bool _\bg_\be_\bt_\bt_\bo_\bk_\be_\bn_\bp_\ba_\br_\ba_\bm ( std :: string token, std :: string &entry );\n+70 bool _\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn( std :: string token );\n+71\n+72 public:\n+73 // search for block in file and store in buffer\n+74 _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk ( std::istream &in, const char* id );\n+75\n+76 // some information on this block\n+_\b7_\b7 bool _\bi_\bs_\ba_\bc_\bt_\bi_\bv_\be ()\n+78 {\n+79 return active;\n+80 }\n+81\n+_\b8_\b2 bool _\bi_\bs_\be_\bm_\bp_\bt_\by ()\n+83 {\n+84 return empty;\n+85 }\n+86\n+_\b8_\b7 int &_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs ()\n+88 {\n+89 return linecount;\n+90 }\n+91\n+_\b9_\b2 int _\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br ()\n+93 {\n+94 return pos;\n+95 }\n+96\n+_\b9_\b7 const std::string & _\bi_\bd () const\n+98 {\n+99 return identifier;\n+100 }\n+101\n+102 // for error messages\n+_\b1_\b0_\b3 friend std :: ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std :: ostream &os, const _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk &b\n+)\n+104 {\n+105 return os << \"block \" << b.identifier << \" (line \" << b.pos << \")\";\n+106 }\n 107\n-_\b1_\b1_\b2 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellit, const CellIterator& cellend,\n-113 const IS& is_)\n-114 : cornerit(cellit, cellend), is(&is_), seen(is->size(_\bm_\by_\bd_\bi_\bm), false)\n-115 { }\n-117\n-_\b1_\b2_\b0 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellend_)\n-121 : cornerit(cellend_), is(0)\n-122 { }\n-123 };\n-124\n-125 } // namespace VTK\n-126\n-128\n-129} // namespace Dune\n-130\n-131#endif // DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH\n-_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n+108 };\n+109\n+110 } // end namespace dgf\n+111\n+112} // end namespace Dune\n+113\n+114#endif\n+_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n+_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-simple class representing a corner of a cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-iterate over the corners of some cell range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be\n-bool isDereferencable() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-iterate over the points of some corner range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-PointIterator(const CellIterator &cellit, const CellIterator &cellend, const IS\n-&is_)\n-construct a CornerIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-VTK::Corner< typename std::remove_const< typename std::iterator_traits<\n-CellIterator >::value_type >::type > Corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Reference dereference() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be\n-std::iterator_traits< CellIterator >::difference_type DifferenceType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\by_\bd_\bi_\bm\n-static const unsigned mydim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-PointIterator(const CellIterator &cellend_)\n-construct a CornerIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const DerivedType &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be\n-PointIterator< CellIterator, IS > DerivedType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-const Corner Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Value & Reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be\n-bool isDereferencable() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bm_\ba_\bk_\be_\bu_\bp_\bc_\ba_\bs_\be\n+void makeupcase(std ::string &s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be\n+bool getnextline()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn\n+bool findtoken(std ::string token)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by\n+bool getnextentry(ENTRY &entry)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bi_\bd\n+const std::string & id() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n+int & noflines()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+friend std::ostream & operator<<(std ::ostream &os, const BasicBlock &b)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bi_\bs_\be_\bm_\bp_\bt_\by\n+bool isempty()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bi_\bs_\ba_\bc_\bt_\bi_\bv_\be\n+bool isactive()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br\n+int linenumber()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bl_\bi_\bn_\be\n+std::stringstream line\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bt_\bo_\bk_\be_\bn_\bp_\ba_\br_\ba_\bm\n+bool gettokenparam(std ::string token, std ::string &entry)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:104\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00923.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00923.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: function.hh File Reference\n+dune-grid: cube.cc File Reference\n \n \n \n \n \n \n \n@@ -65,59 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    function.hh File Reference
    \n+
    cube.cc File Reference
    \n
    \n
    \n-\n-

    Functions for VTK output. \n-More...

    \n-
    #include <string>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/multilineargeometry.hh>
    \n-#include <dune/grid/common/mcmgmapper.hh>
    \n-#include <dune/grid/io/file/vtk/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-Classes

    class  Dune::VTKFunction< GridView >
     A base class for grid functions with any return type and dimension. More...
     
    class  Dune::P0VTKFunction< GV, V >
     Take a vector and interpret it as cell data for the VTKWriter. More...
     
    class  Dune::P1VTKFunction< GV, V >
     Take a vector and interpret it as point data for the VTKWriter. More...
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/cube.hh>
    \n+
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n-

    Detailed Description

    \n-

    Functions for VTK output.

    \n-
    Author
    Peter Bastian, Christian Engwer
    \n-
    \n+\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,41 +2,21 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-function.hh File Reference\n-Functions for VTK output. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\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:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 A base class for grid functions with any return type and dimension.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b,_\b _\bV_\b _\b>\n-\u00a0 Take a vector and interpret it as cell data for the _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b,_\b _\bV_\b _\b>\n-\u00a0 Take a vector and interpret it as point data for the _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+cube.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bc_\bu_\bb_\be_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-Functions for VTK output.\n- Author\n- Peter Bastian, Christian Engwer\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00926.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00926.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: functionwriter.hh File Reference\n+dune-grid: cube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,69 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    functionwriter.hh File Reference
    \n+
    cube.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <memory>
    \n-#include <string>
    \n-#include <typeinfo>
    \n+
    #include <cassert>
    \n+#include <iostream>
    \n #include <vector>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/io/file/vtk/common.hh>
    \n-#include <dune/grid/io/file/vtk/dataarraywriter.hh>
    \n-#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n-#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.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::VTK::FunctionWriterBase< Cell_ >
     Base class for function writers. More...
     
    class  Dune::VTK::VTKFunctionWriter< Func >
     Base class for function writers. More...
     
    class  Dune::VTK::CoordinatesWriter< Cell >
     writer for the Coordinates array More...
     
    class  Dune::VTK::ConformingConnectivityWriter< IteratorFactory >
     writer for the connectivity array in conforming mode More...
     
    class  Dune::VTK::NonConformingConnectivityWriter< Cell >
     writer for the connectivity array in nonconforming mode More...
     
    class  Dune::VTK::OffsetsWriter< Cell >
     writer for the offsets array More...
     
    class  Dune::VTK::TypesWriter< Cell >
     writer for the types array More...
    class  Dune::dgf::CubeBlock
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,53 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-functionwriter.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+cube.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\b _\bC_\be_\bl_\bl_\b__\b _\b>\n-\u00a0 Base class for function writers. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b _\b>\n-\u00a0 Base class for function writers. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n-\u00a0 writer for the Coordinates array _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b _\b>\n-\u00a0 writer for the connectivity array in conforming mode _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n-\u00a0 writer for the connectivity array in nonconforming mode _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n-\u00a0 writer for the offsets array _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bC_\be_\bl_\bl_\b _\b>\n-\u00a0 writer for the types array _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00926_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00926_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: functionwriter.hh Source File\n+dune-grid: cube.hh Source File\n \n \n \n \n \n \n \n@@ -70,479 +70,96 @@\n
    \n \n \n \n \n \n \n
    \n-
    functionwriter.hh
    \n+
    cube.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n-
    10#include <memory>
    \n-
    11#include <string>
    \n-
    12#include <typeinfo>
    \n-
    13#include <vector>
    \n+
    5#ifndef DUNE_DGF_CUBEBLOCK_HH
    \n+
    6#define DUNE_DGF_CUBEBLOCK_HH
    \n+
    7
    \n+
    8#include <cassert>
    \n+
    9#include <iostream>
    \n+
    10#include <vector>
    \n+
    11
    \n+\n+
    13
    \n
    14
    \n-
    15#include <dune/common/exceptions.hh>
    \n-
    16#include <dune/common/fvector.hh>
    \n+
    15namespace Dune
    \n+
    16{
    \n
    17
    \n-
    18#include <dune/geometry/referenceelements.hh>
    \n-
    19
    \n-\n-\n-\n-\n-
    24
    \n-
    25namespace Dune
    \n-
    26{
    \n-
    29
    \n-
    30 namespace VTK {
    \n-
    31
    \n-
    33 template<typename Cell_>
    \n-
    \n-\n-
    35 typedef typename Cell_::Geometry::ctype DF;
    \n-
    36 static const unsigned mydim = Cell_::mydimension;
    \n-
    37 typedef ReferenceElements<DF, mydim> Refelems;
    \n-
    38
    \n-
    39 public:
    \n-
    40 typedef FieldVector<DF, mydim> Domain;
    \n-
    41 typedef Cell_ Cell;
    \n-
    42
    \n-
    44 virtual std::string name() const = 0;
    \n-
    45
    \n-
    47 virtual unsigned ncomps() const = 0;
    \n-
    48
    \n-
    50 virtual void addArray(PVTUWriter& writer) = 0;
    \n-
    52 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) = 0;
    \n-
    54
    \n-
    \n-
    59 virtual void write(const Cell& /* cell */, const Domain& /* xl */) {
    \n-
    60 DUNE_THROW(NotImplemented, "FunctionWriterBase::write(const Cell&, "
    \n-
    61 "const Domain&): Either the derived class " <<
    \n-
    62 typeid(*this).name() << " failed to implement this method "
    \n-
    63 "or this method is not meant to be called on the derived "
    \n-
    64 "class and was called in error.");
    \n-
    65 }
    \n-
    \n-
    67
    \n-
    \n-
    71 virtual void write(const Cell& cell, unsigned cornerIndex) {
    \n-
    72 write(cell,
    \n-
    73 Refelems::general(cell.type()).position(cornerIndex, mydim));
    \n-
    74 }
    \n-
    \n-
    76 virtual void endWrite() = 0;
    \n-\n-
    79 };
    \n-
    \n-
    80
    \n-
    82 //
    \n-
    83 // A Generic Function writer for VTKFunctions
    \n-
    84 //
    \n-
    85
    \n-
    87 template<typename Func>
    \n-
    \n-\n-
    89 : public FunctionWriterBase<typename Func::Entity>
    \n-
    90 {
    \n-\n-
    92 std::shared_ptr<const Func> func;
    \n-
    93 VTK::Precision precision_;
    \n-
    94 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    95
    \n-
    96 public:
    \n-
    \n-
    97 VTKFunctionWriter(const std::shared_ptr<const Func>& func_,
    \n-\n-
    99 : func(func_), precision_(prec)
    \n-
    100 { }
    \n-
    \n-
    101
    \n-
    103 virtual std::string name() const { return func->name(); }
    \n-
    104
    \n-
    \n-
    106 virtual unsigned ncomps() const {
    \n-
    107 if(func->ncomps() == 2) return 3;
    \n-
    108 else return func->ncomps();
    \n-
    109 }
    \n-
    \n-
    110
    \n-
    \n-
    112 virtual void addArray(PVTUWriter& writer) {
    \n-
    113 writer.addArray(name(), ncomps(), precision_);
    \n-
    114 }
    \n-
    \n-
    115
    \n-
    \n-
    117 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    118 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n-
    119 nitems, precision_));
    \n-
    120 return !arraywriter->writeIsNoop();
    \n-
    121 }
    \n-
    \n-
    122
    \n-
    \n-
    124 virtual void write(const typename Base::Cell& cell,
    \n-
    125 const typename Base::Domain& xl) {
    \n-
    126 for(int d = 0; d < func->ncomps(); ++d)
    \n-
    127 arraywriter->write(func->evaluate(d, cell, xl));
    \n-
    128 for(unsigned d = func->ncomps(); d < ncomps(); ++d)
    \n-
    129 arraywriter->write(0);
    \n-
    130 }
    \n-
    \n-
    131
    \n-
    \n-
    133 virtual void endWrite() {
    \n-
    134 arraywriter.reset();
    \n-
    135 }
    \n-
    \n-
    136 };
    \n-
    \n-
    137
    \n-
    139 //
    \n-
    140 // Writers for the grid information
    \n-
    141 //
    \n-
    142
    \n-
    144 template<typename Cell>
    \n-
    \n-\n-
    146 : public FunctionWriterBase<Cell>
    \n-
    147 {
    \n-\n-
    149
    \n-
    150 VTK::Precision precision_;
    \n-
    151 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    152
    \n-
    153 public:
    \n-
    \n-\n-
    155 : precision_(prec)
    \n-
    156 {}
    \n-
    \n-
    157
    \n-
    159 virtual std::string name() const { return "Coordinates"; }
    \n-
    160
    \n-
    162 virtual unsigned ncomps() const { return 3; }
    \n-
    163
    \n-
    \n-
    165 virtual void addArray(PVTUWriter& writer) {
    \n-
    166 writer.addArray(name(), ncomps(), precision_);
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    \n-
    170 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    171 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n-
    172 nitems, precision_));
    \n-
    173 return !arraywriter->writeIsNoop();
    \n-
    174 }
    \n-
    \n-
    \n-
    176 virtual void write(const typename Base::Cell& cell,
    \n-
    177 const typename Base::Domain& xl) {
    \n-
    178 FieldVector<typename Base::Cell::Geometry::ctype, Base::Cell::Geometry::coorddimension> xg
    \n-
    179 = cell.geometry().global(xl);
    \n-
    180 for(unsigned d = 0; d < 3 && d < Base::Cell::Geometry::coorddimension; ++d)
    \n-
    181 arraywriter->write(xg[d]);
    \n-
    182 for(unsigned d = Base::Cell::Geometry::coorddimension; d < 3; ++d)
    \n-
    183 arraywriter->write(0);
    \n-
    184 }
    \n-
    \n-
    \n-
    186 virtual void endWrite() {
    \n-
    187 arraywriter.reset();
    \n-
    188 }
    \n-
    \n-
    189 };
    \n-
    \n-
    190
    \n-
    192 template<typename IteratorFactory>
    \n-
    \n-\n-
    194 : public FunctionWriterBase<typename IteratorFactory::Cell>
    \n-
    195 {
    \n-\n-
    197 static const unsigned mydim = Base::Cell::mydimension;
    \n-
    198
    \n-
    199 const IteratorFactory& factory;
    \n-
    200 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    201 std::vector<unsigned> pointIndices;
    \n-
    202
    \n-
    203 public:
    \n-
    \n-
    205 ConformingConnectivityWriter(const IteratorFactory& factory_)
    \n-
    206 : factory(factory_)
    \n-
    207 { }
    \n-
    \n-
    208
    \n-
    210 virtual std::string name() const { return "connectivity"; }
    \n-
    211
    \n-
    213 virtual unsigned ncomps() const { return 1; }
    \n-
    214
    \n-
    \n-
    216 virtual void addArray(PVTUWriter& writer) {
    \n-
    217 writer.addArray(name(), ncomps(), Precision::int32);
    \n-
    218 }
    \n-
    \n-
    219
    \n-
    \n-
    221 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    222 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n-
    223 nitems, Precision::int32));
    \n-
    224 if(arraywriter->writeIsNoop())
    \n-
    225 return false;
    \n-
    226
    \n-
    228 pointIndices.resize(factory.indexSet().size(mydim));
    \n-
    229 const typename IteratorFactory::PointIterator& pend =
    \n-
    230 factory.endPoints();
    \n-
    231 typename IteratorFactory::PointIterator pit = factory.beginPoints();
    \n-
    232 unsigned counter = 0;
    \n-
    233 while(pit != pend) {
    \n-
    234 pointIndices[factory.indexSet().subIndex
    \n-
    235 (pit->cell(), pit->duneIndex(), mydim)] = counter;
    \n-
    236 ++counter;
    \n-
    237 ++pit;
    \n-
    238 }
    \n-
    239 return true;
    \n-
    240 }
    \n+
    18 namespace dgf
    \n+
    19 {
    \n+
    20
    \n+
    \n+\n+
    22 : public BasicBlock
    \n+
    23 {
    \n+
    24 unsigned int nofvtx;
    \n+
    25 int dimgrid;
    \n+
    26 bool goodline; // active line describes a vertex
    \n+
    27 std :: vector< unsigned int > map; // active vertex
    \n+
    28 int nofparams;
    \n+
    29 int vtxoffset;
    \n+
    30
    \n+
    31 public:
    \n+
    32 CubeBlock ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid );
    \n+
    33
    \n+
    34 int get ( std :: vector< std :: vector< unsigned int> > &simplex,
    \n+
    35 std :: vector< std :: vector< double > > &params,
    \n+
    36 int &nofp );
    \n+
    37
    \n+
    38 // some information
    \n+
    \n+
    39 bool ok ()
    \n+
    40 {
    \n+
    41 return goodline;
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+\n+
    45 {
    \n+
    46 return noflines();
    \n+
    47 }
    \n
    \n-
    \n-
    242 virtual void write(const typename Base::Cell& cell, unsigned cornerIndex)
    \n-
    243 {
    \n-
    244 // if pointIndices is empty, we're in writeIsNoop mode
    \n-
    245 if(pointIndices.size() == 0)
    \n-
    246 return;
    \n-
    247 arraywriter->write(pointIndices[factory.indexSet().subIndex
    \n-
    248 (cell, cornerIndex, mydim)]);
    \n-
    249 }
    \n-
    \n-
    \n-
    251 virtual void endWrite() {
    \n-
    252 arraywriter.reset();
    \n-
    253 pointIndices.clear();
    \n-
    254 }
    \n-
    \n-
    255 };
    \n-
    \n-
    256
    \n-
    258 template<typename Cell>
    \n-
    \n-\n-
    260 : public FunctionWriterBase<Cell>
    \n-
    261 {
    \n-
    262 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    263 unsigned counter;
    \n-
    264
    \n-
    265 public:
    \n-
    267 virtual std::string name() const { return "connectivity"; }
    \n-
    268
    \n-
    270 virtual unsigned ncomps() const { return 1; }
    \n-
    271
    \n-
    \n-
    273 virtual void addArray(PVTUWriter& writer) {
    \n-
    274 writer.addArray(name(), ncomps(), Precision::int32);
    \n-
    275 }
    \n-
    \n-
    276
    \n-
    \n-
    278 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    279 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n-
    280 nitems, Precision::int32));
    \n-
    281 counter = 0;
    \n-
    282 return !arraywriter->writeIsNoop();
    \n-
    283 }
    \n-
    \n-
    \n-
    285 virtual void write(const Cell& /* cell */, unsigned /* cornerIndex */)
    \n-
    286 {
    \n-
    287 arraywriter->write(counter);
    \n-
    288 ++counter;
    \n-
    289 }
    \n-
    \n-
    \n-
    291 virtual void endWrite() {
    \n-
    292 arraywriter.reset();
    \n-
    293 }
    \n-
    \n-
    294 };
    \n-
    \n-
    295
    \n-
    297 template<typename Cell>
    \n-
    \n-\n-
    299 : public FunctionWriterBase<Cell>
    \n-
    300 {
    \n-\n-
    302
    \n-
    303 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    304 unsigned offset;
    \n-
    305
    \n-
    306 public:
    \n-
    308 virtual std::string name() const { return "offsets"; }
    \n-
    309
    \n-
    311 virtual unsigned ncomps() const { return 1; }
    \n-
    312
    \n-
    \n-
    314 virtual void addArray(PVTUWriter& writer) {
    \n-
    315 writer.addArray(name(), ncomps(), Precision::int32);
    \n-
    316 }
    \n-
    \n-
    317
    \n-
    \n-
    319 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    320 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n-
    321 nitems, Precision::int32));
    \n-
    322 offset = 0;
    \n-
    323 return !arraywriter->writeIsNoop();
    \n-
    324 }
    \n-
    \n-
    \n-
    326 virtual void write(const Cell& cell, const typename Base::Domain&) {
    \n-
    327 offset += cell.geometry().corners();
    \n-
    328 arraywriter->write(offset);
    \n-
    329 }
    \n-
    \n-
    \n-
    331 virtual void endWrite() {
    \n-
    332 arraywriter.reset();
    \n-
    333 }
    \n-
    \n-
    334 };
    \n-
    \n-
    335
    \n-
    337 template<typename Cell>
    \n-
    \n-\n-
    339 : public FunctionWriterBase<Cell>
    \n-
    340 {
    \n-\n-
    342
    \n-
    343 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    344
    \n-
    345 public:
    \n-
    347 virtual std::string name() const { return "types"; }
    \n-
    348
    \n-
    350 virtual unsigned ncomps() const { return 1; }
    \n-
    351
    \n-
    \n-
    353 virtual void addArray(PVTUWriter& writer) {
    \n-
    354 writer.addArray(name(), ncomps(), Precision::uint8);
    \n-
    355 }
    \n-
    \n-
    356
    \n-
    \n-
    358 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    359 arraywriter.reset(writer.makeArrayWriter
    \n-
    360 ( name(), ncomps(), nitems, Precision::uint8));
    \n-
    361 return !arraywriter->writeIsNoop();
    \n-
    362 }
    \n-
    \n-
    \n-
    364 virtual void write(const Cell& cell, const typename Base::Domain&) {
    \n-
    365 arraywriter->write(geometryType(cell.type()));
    \n-
    366 }
    \n-
    \n-
    \n-
    368 virtual void endWrite() {
    \n-
    369 arraywriter.reset();
    \n-
    370 }
    \n-
    \n-
    371 };
    \n-
    \n-
    372
    \n-
    373 } // namespace VTK
    \n-
    374
    \n-
    376
    \n-
    377} // namespace Dune
    \n-
    378
    \n-
    379#endif // DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH
    \n-\n-
    Common stuff for the VTKWriter.
    \n-\n-
    Data array writers for the VTKWriter.
    \n+
    48
    \n+
    49 private:
    \n+
    50 // get the dimension of the grid
    \n+
    51 int getDimGrid ();
    \n+
    52 // get next simplex
    \n+
    53 bool next ( std :: vector< unsigned int > &simplex,
    \n+
    54 std :: vector< double > &param );
    \n+
    55 };
    \n+
    \n+
    56
    \n+
    57 } // end namespace dgf
    \n+
    58
    \n+
    59} // end namespace Dune
    \n+
    60
    \n+
    61#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-\n-\n-\n-
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n-
    Base class for function writers.
    Definition functionwriter.hh:34
    \n-
    virtual std::string name() const =0
    return name
    \n-
    virtual unsigned ncomps() const =0
    return number of components of the vector
    \n-
    virtual void write(const Cell &, const Domain &)
    write at the given position
    Definition functionwriter.hh:59
    \n-
    Cell_ Cell
    Definition functionwriter.hh:41
    \n-
    virtual void addArray(PVTUWriter &writer)=0
    add this field to the given parallel writer
    \n-
    virtual void endWrite()=0
    signal end of writing
    \n-
    FieldVector< DF, mydim > Domain
    Definition functionwriter.hh:40
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0
    start writing with the given writer
    \n-
    virtual ~FunctionWriterBase()
    destructor
    Definition functionwriter.hh:78
    \n-
    virtual void write(const Cell &cell, unsigned cornerIndex)
    write at the given corner
    Definition functionwriter.hh:71
    \n-
    Base class for function writers.
    Definition functionwriter.hh:90
    \n-
    VTKFunctionWriter(const std::shared_ptr< const Func > &func_, VTK::Precision prec=VTK::Precision::float32)
    Definition functionwriter.hh:97
    \n-
    virtual std::string name() const
    return name
    Definition functionwriter.hh:103
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:106
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:117
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:112
    \n-
    virtual void write(const typename Base::Cell &cell, const typename Base::Domain &xl)
    write at the given position
    Definition functionwriter.hh:124
    \n-
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:133
    \n-
    writer for the Coordinates array
    Definition functionwriter.hh:147
    \n-
    virtual void write(const typename Base::Cell &cell, const typename Base::Domain &xl)
    write at the given position
    Definition functionwriter.hh:176
    \n-
    virtual std::string name() const
    return name
    Definition functionwriter.hh:159
    \n-
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:186
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:162
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:165
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:170
    \n-
    CoordinatesWriter(VTK::Precision prec=VTK::Precision::float32)
    Definition functionwriter.hh:154
    \n-
    writer for the connectivity array in conforming mode
    Definition functionwriter.hh:195
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:216
    \n-
    virtual std::string name() const
    return name
    Definition functionwriter.hh:210
    \n-
    virtual void write(const typename Base::Cell &cell, unsigned cornerIndex)
    write at the given corner
    Definition functionwriter.hh:242
    \n-
    ConformingConnectivityWriter(const IteratorFactory &factory_)
    create a writer with the given iteratorfactory
    Definition functionwriter.hh:205
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:213
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:221
    \n-
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:251
    \n-
    writer for the connectivity array in nonconforming mode
    Definition functionwriter.hh:261
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:270
    \n-
    virtual std::string name() const
    return name
    Definition functionwriter.hh:267
    \n-
    virtual void write(const Cell &, unsigned)
    write at the given corner
    Definition functionwriter.hh:285
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:273
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:278
    \n-
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:291
    \n-
    writer for the offsets array
    Definition functionwriter.hh:300
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:314
    \n-
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:331
    \n-
    virtual std::string name() const
    return name
    Definition functionwriter.hh:308
    \n-
    virtual void write(const Cell &cell, const typename Base::Domain &)
    write at the given position
    Definition functionwriter.hh:326
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:319
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:311
    \n-
    writer for the types array
    Definition functionwriter.hh:340
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition functionwriter.hh:350
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition functionwriter.hh:358
    \n-
    virtual std::string name() const
    return name
    Definition functionwriter.hh:347
    \n-
    virtual void write(const Cell &cell, const typename Base::Domain &)
    write at the given position
    Definition functionwriter.hh:364
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:353
    \n-
    virtual void endWrite()
    signal end of writing
    Definition functionwriter.hh:368
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n-
    void addArray(const std::string &name, unsigned ncomps, Precision prec)
    Add an array to the output file.
    Definition pvtuwriter.hh:207
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n-
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n+
    Definition basic.hh:31
    \n+
    int & noflines()
    Definition basic.hh:87
    \n+
    Definition cube.hh:23
    \n+
    int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector< std ::vector< double > > &params, int &nofp)
    Definition cube.cc:103
    \n+
    int nofsimplex()
    Definition cube.hh:44
    \n+
    bool ok()
    Definition cube.hh:39
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,577 +2,97 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-functionwriter.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+cube.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH\n-8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n+5#ifndef DUNE_DGF_CUBEBLOCK_HH\n+6#define DUNE_DGF_CUBEBLOCK_HH\n+7\n+8#include \n+9#include \n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+13\n 14\n-15#include \n-16#include \n+15namespace _\bD_\bu_\bn_\be\n+16{\n 17\n-18#include \n-19\n-20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-22#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-23#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-24\n-25namespace _\bD_\bu_\bn_\be\n-26{\n-29\n-30 namespace VTK {\n-31\n-33 template\n-_\b3_\b4 class _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be {\n-35 typedef typename Cell_::Geometry::ctype DF;\n-36 static const unsigned mydim = Cell_::mydimension;\n-37 typedef ReferenceElements Refelems;\n-38\n-39 public:\n-_\b4_\b0 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn;\n-_\b4_\b1 typedef Cell_ _\bC_\be_\bl_\bl;\n-42\n-_\b4_\b4 virtual std::string _\bn_\ba_\bm_\be() const = 0;\n-45\n-_\b4_\b7 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const = 0;\n+18 namespace dgf\n+19 {\n+20\n+_\b2_\b1 class _\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk\n+22 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+23 {\n+24 unsigned int nofvtx;\n+25 int dimgrid;\n+26 bool goodline; // active line describes a vertex\n+27 std :: vector< unsigned int > map; // active vertex\n+28 int nofparams;\n+29 int vtxoffset;\n+30\n+31 public:\n+32 _\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid\n+);\n+33\n+34 int _\bg_\be_\bt ( std :: vector< std :: vector< unsigned int> > &simplex,\n+35 std :: vector< std :: vector< double > > ¶ms,\n+36 int &nofp );\n+37\n+38 // some information\n+_\b3_\b9 bool _\bo_\bk ()\n+40 {\n+41 return goodline;\n+42 }\n+43\n+_\b4_\b4 int _\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx ()\n+45 {\n+46 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n+47 }\n 48\n-_\b5_\b0 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) = 0;\n-_\b5_\b2 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) = 0;\n-54\n-_\b5_\b9 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& /* cell */, const _\bD_\bo_\bm_\ba_\bi_\bn& /* xl */) {\n-60 DUNE_THROW(NotImplemented, \"FunctionWriterBase::write(const Cell&, \"\n-61 \"const Domain&): Either the derived class \" <<\n-62 typeid(*this).name() << \" failed to implement this method \"\n-63 \"or this method is not meant to be called on the derived \"\n-64 \"class and was called in error.\");\n-65 }\n-67\n-_\b7_\b1 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& cell, unsigned cornerIndex) {\n-72 _\bw_\br_\bi_\bt_\be(cell,\n-73 Refelems::general(cell.type()).position(cornerIndex, mydim));\n-74 }\n-_\b7_\b6 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() = 0;\n-_\b7_\b8 virtual _\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be() {}\n-79 };\n-80\n-82 //\n-83 // A Generic Function writer for VTKFunctions\n-84 //\n-85\n-87 template\n-_\b8_\b8 class _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-89 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-90 {\n-91 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bF_\bu_\bn_\bc_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b> _\bB_\ba_\bs_\be;\n-92 std::shared_ptr func;\n-93 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn precision_;\n-94 std::shared_ptr arraywriter;\n-95\n-96 public:\n-_\b9_\b7 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br(const std::shared_ptr& func_,\n-98 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-99 : func(func_), precision_(prec)\n-100 { }\n-101\n-_\b1_\b0_\b3 virtual std::string _\bn_\ba_\bm_\be() const { return func->name(); }\n-104\n-_\b1_\b0_\b6 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const {\n-107 if(func->ncomps() == 2) return 3;\n-108 else return func->ncomps();\n-109 }\n-110\n-_\b1_\b1_\b2 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-113 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), precision_);\n-114 }\n-115\n-_\b1_\b1_\b7 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-118 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n-119 nitems, precision_));\n-120 return !arraywriter->writeIsNoop();\n-121 }\n-122\n-_\b1_\b2_\b4 virtual void _\bw_\br_\bi_\bt_\be(const typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl& cell,\n-125 const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn& xl) {\n-126 for(int d = 0; d < func->ncomps(); ++d)\n-127 arraywriter->write(func->evaluate(d, cell, xl));\n-128 for(unsigned d = func->ncomps(); d < _\bn_\bc_\bo_\bm_\bp_\bs(); ++d)\n-129 arraywriter->write(0);\n-130 }\n-131\n-_\b1_\b3_\b3 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-134 arraywriter.reset();\n-135 }\n-136 };\n-137\n-139 //\n-140 // Writers for the grid information\n-141 //\n-142\n-144 template\n-_\b1_\b4_\b5 class _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-146 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-147 {\n-148 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n-149\n-150 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn precision_;\n-151 std::shared_ptr arraywriter;\n-152\n-153 public:\n-_\b1_\b5_\b4 explicit _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br(_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-155 : precision_(prec)\n-156 {}\n-157\n-_\b1_\b5_\b9 virtual std::string _\bn_\ba_\bm_\be() const { return \"Coordinates\"; }\n-160\n-_\b1_\b6_\b2 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 3; }\n-163\n-_\b1_\b6_\b5 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-166 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), precision_);\n-167 }\n-168\n-_\b1_\b7_\b0 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-171 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n-172 nitems, precision_));\n-173 return !arraywriter->writeIsNoop();\n-174 }\n-_\b1_\b7_\b6 virtual void _\bw_\br_\bi_\bt_\be(const typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl& cell,\n-177 const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn& xl) {\n-178 FieldVector xg\n-179 = cell.geometry().global(xl);\n-180 for(unsigned d = 0; d < 3 && d < Base::Cell::Geometry::coorddimension; ++d)\n-181 arraywriter->write(xg[d]);\n-182 for(unsigned d = Base::Cell::Geometry::coorddimension; d < 3; ++d)\n-183 arraywriter->write(0);\n-184 }\n-_\b1_\b8_\b6 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-187 arraywriter.reset();\n-188 }\n-189 };\n-190\n-192 template\n-_\b1_\b9_\b3 class _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-194 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-195 {\n-196 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n-197 static const unsigned mydim = Base::Cell::mydimension;\n-198\n-199 const IteratorFactory& factory;\n-200 std::shared_ptr arraywriter;\n-201 std::vector pointIndices;\n-202\n-203 public:\n-_\b2_\b0_\b5 _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br(const IteratorFactory& factory_)\n-206 : factory(factory_)\n-207 { }\n-208\n-_\b2_\b1_\b0 virtual std::string _\bn_\ba_\bm_\be() const { return \"connectivity\"; }\n-211\n-_\b2_\b1_\b3 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n-214\n-_\b2_\b1_\b6 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-217 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2);\n-218 }\n-219\n-_\b2_\b2_\b1 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-222 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n-223 nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-224 if(arraywriter->writeIsNoop())\n-225 return false;\n-226\n-228 pointIndices.resize(factory.indexSet().size(mydim));\n-229 const typename IteratorFactory::PointIterator& pend =\n-230 factory.endPoints();\n-231 typename IteratorFactory::PointIterator pit = factory.beginPoints();\n-232 unsigned counter = 0;\n-233 while(pit != pend) {\n-234 pointIndices[factory.indexSet().subIndex\n-235 (pit->cell(), pit->duneIndex(), mydim)] = counter;\n-236 ++counter;\n-237 ++pit;\n-238 }\n-239 return true;\n-240 }\n-_\b2_\b4_\b2 virtual void _\bw_\br_\bi_\bt_\be(const typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl& cell, unsigned cornerIndex)\n-243 {\n-244 // if pointIndices is empty, we're in writeIsNoop mode\n-245 if(pointIndices.size() == 0)\n-246 return;\n-247 arraywriter->write(pointIndices[factory.indexSet().subIndex\n-248 (cell, cornerIndex, mydim)]);\n-249 }\n-_\b2_\b5_\b1 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-252 arraywriter.reset();\n-253 pointIndices.clear();\n-254 }\n-255 };\n-256\n-258 template\n-_\b2_\b5_\b9 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-260 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-261 {\n-262 std::shared_ptr arraywriter;\n-263 unsigned counter;\n-264\n-265 public:\n-_\b2_\b6_\b7 virtual std::string _\bn_\ba_\bm_\be() const { return \"connectivity\"; }\n-268\n-_\b2_\b7_\b0 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n-271\n-_\b2_\b7_\b3 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-274 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2);\n-275 }\n-276\n-_\b2_\b7_\b8 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-279 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n-280 nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-281 counter = 0;\n-282 return !arraywriter->writeIsNoop();\n-283 }\n-_\b2_\b8_\b5 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& /* cell */, unsigned /* cornerIndex */)\n-286 {\n-287 arraywriter->write(counter);\n-288 ++counter;\n-289 }\n-_\b2_\b9_\b1 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-292 arraywriter.reset();\n-293 }\n-294 };\n-295\n-297 template\n-_\b2_\b9_\b8 class _\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br\n-299 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-300 {\n-301 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n-302\n-303 std::shared_ptr arraywriter;\n-304 unsigned offset;\n-305\n-306 public:\n-_\b3_\b0_\b8 virtual std::string _\bn_\ba_\bm_\be() const { return \"offsets\"; }\n-309\n-_\b3_\b1_\b1 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n-312\n-_\b3_\b1_\b4 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-315 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2);\n-316 }\n-317\n-_\b3_\b1_\b9 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-320 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n-321 nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-322 offset = 0;\n-323 return !arraywriter->writeIsNoop();\n-324 }\n-_\b3_\b2_\b6 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& cell, const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn&) {\n-327 offset += cell.geometry().corners();\n-328 arraywriter->write(offset);\n-329 }\n-_\b3_\b3_\b1 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-332 arraywriter.reset();\n-333 }\n-334 };\n-335\n-337 template\n-_\b3_\b3_\b8 class _\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-339 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-340 {\n-341 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bB_\ba_\bs_\be;\n-342\n-343 std::shared_ptr arraywriter;\n-344\n-345 public:\n-_\b3_\b4_\b7 virtual std::string _\bn_\ba_\bm_\be() const { return \"types\"; }\n-348\n-_\b3_\b5_\b0 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return 1; }\n-351\n-_\b3_\b5_\b3 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-354 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8);\n-355 }\n-356\n-_\b3_\b5_\b8 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-359 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-360 ( _\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8));\n-361 return !arraywriter->writeIsNoop();\n-362 }\n-_\b3_\b6_\b4 virtual void _\bw_\br_\bi_\bt_\be(const _\bC_\be_\bl_\bl& cell, const typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn&) {\n-365 arraywriter->write(_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(cell.type()));\n-366 }\n-_\b3_\b6_\b8 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-369 arraywriter.reset();\n-370 }\n-371 };\n-372\n-373 } // namespace VTK\n-374\n-376\n-377} // namespace Dune\n-378\n-379#endif // DUNE_GRID_IO_FILE_VTK_FUNCTIONWRITER_HH\n-_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-Data array writers for the VTKWriter.\n+49 private:\n+50 // get the dimension of the grid\n+51 int getDimGrid ();\n+52 // get next simplex\n+53 bool next ( std :: vector< unsigned int > &simplex,\n+54 std :: vector< double > ¶m );\n+55 };\n+56\n+57 } // end namespace dgf\n+58\n+59} // end namespace Dune\n+60\n+61#endif\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n-@ int32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n-@ uint8\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n-@ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType geometryType(const Dune::GeometryType &t)\n-mapping from GeometryType to VTKGeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-Base class for function writers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const =0\n-return name\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const =0\n-return number of components of the vector\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Cell &, const Domain &)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl\n-Cell_ Cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)=0\n-add this field to the given parallel writer\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()=0\n-signal end of writing\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-FieldVector< DF, mydim > Domain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0\n-start writing with the given writer\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-virtual ~FunctionWriterBase()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Cell &cell, unsigned cornerIndex)\n-write at the given corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-Base class for function writers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-VTKFunctionWriter(const std::shared_ptr< const Func > &func_, VTK::Precision\n-prec=VTK::Precision::float32)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const typename Base::Cell &cell, const typename Base::Domain\n-&xl)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-writer for the Coordinates array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const typename Base::Cell &cell, const typename Base::Domain\n-&xl)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-CoordinatesWriter(VTK::Precision prec=VTK::Precision::float32)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-writer for the connectivity array in conforming mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const typename Base::Cell &cell, unsigned cornerIndex)\n-write at the given corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-ConformingConnectivityWriter(const IteratorFactory &factory_)\n-create a writer with the given iteratorfactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:221\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:251\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-writer for the connectivity array in nonconforming mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:261\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:270\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:267\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Cell &, unsigned)\n-write at the given corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:273\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:278\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:291\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br\n-writer for the offsets array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:300\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:331\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:308\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Cell &cell, const typename Base::Domain &)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:311\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n-writer for the types array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:340\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:350\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:358\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:347\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Cell &cell, const typename Base::Domain &)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:364\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:353\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:368\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-void addArray(const std::string &name, unsigned ncomps, Precision prec)\n-Add an array to the output file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n-unsigned nitems, Precision prec)\n-acquire a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n+int & noflines()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n+int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector<\n+std ::vector< double > > ¶ms, int &nofp)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.cc:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+int nofsimplex()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.hh:39\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00929.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00929.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarywriter.hh File Reference\n+dune-grid: boundarydom.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,47 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    boundarywriter.hh File Reference
    \n+
    boundarydom.hh File Reference
    \n
    \n
    \n-
    #include <memory>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::VTK::NonConformingBoundaryWriter< GV >
    struct  Dune::dgf::DomainData
     
    struct  Dune::dgf::Domain
     
    class  Dune::dgf::BoundaryDomBlock
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,27 +2,32 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-boundarywriter.hh File Reference\n-#include \n+boundarydom.hh File Reference\n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bk_\be_\bl_\be_\bt_\bo_\bn_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\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:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00929_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00929_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundarywriter.hh Source File\n+dune-grid: boundarydom.hh Source File\n \n \n \n \n \n \n \n@@ -70,116 +70,419 @@\n
    \n \n \n \n \n \n \n
    \n-
    boundarywriter.hh
    \n+
    boundarydom.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH
    \n-
    8
    \n-
    9#include <memory>
    \n-
    10#include <string>
    \n+
    5#ifndef DUNE_DGF_BOUNDARYDOMBLOCK_HH
    \n+
    6#define DUNE_DGF_BOUNDARYDOMBLOCK_HH
    \n+
    7
    \n+
    8#include <iostream>
    \n+
    9#include <string>
    \n+
    10#include <vector>
    \n
    11
    \n-\n-\n-\n+\n+\n+
    14
    \n
    15
    \n-
    16namespace Dune {
    \n-
    19
    \n-
    20 namespace VTK {
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    19 namespace dgf
    \n+
    20 {
    \n
    21
    \n-
    22 template<typename GV>
    \n-
    \n-\n-\n-
    25 public BasicWriter<NonConformingBoundaryIteratorFactory<GV> >
    \n-
    26 {
    \n-\n-\n-
    29
    \n-
    30 const GV& gv;
    \n-
    31
    \n-
    32 public:
    \n-
    \n-\n-
    34 : Factory(gv_), Base(static_cast<const Factory&>(*this)), gv(gv_)
    \n-
    35 { }
    \n-
    \n-
    36
    \n-\n-
    38
    \n-
    39 template<typename Func>
    \n-
    \n-
    40 void addCellData(const std::shared_ptr<Func>& p, const std::string& name) {
    \n-
    41 addCellData(std::shared_ptr<typename Base::FunctionWriter>
    \n-
    42 (new SkeletonFunctionWriter<Func>(p, name)));
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    45 template<typename Func>
    \n-
    \n-
    46 void addCellData(Func* p, const std::string& name) {
    \n-
    47 addCellData(std::shared_ptr<Func>(p), name);
    \n-
    48 }
    \n-
    \n-
    49
    \n-\n-
    51
    \n-
    52 template<typename Func>
    \n-
    \n-
    53 void addPointData(const std::shared_ptr<Func>& p, const std::string& name) {
    \n-
    54 addPointData(std::shared_ptr<typename Base::FunctionWriter>
    \n-
    55 (new SkeletonFunctionWriter<Func>(p, name)));
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    58 template<typename Func>
    \n-
    \n-
    59 void addPointData(Func* p, const std::string& name) {
    \n-
    60 addPointData(std::shared_ptr<Func>(p), name);
    \n-
    61 }
    \n+
    \n+\n+
    23 {
    \n+\n+
    25
    \n+
    \n+\n+
    27 : id_( 0 ),
    \n+
    28 parameter_( DGFBoundaryParameter::defaultValue() ),
    \n+
    29 defaultData_( false )
    \n+
    30 { }
    \n
    \n-
    62
    \n-
    63 };
    \n+
    31
    \n+\n+
    33
    \n+
    34 // constructor
    \n+
    \n+
    35 DomainData ( int id, BoundaryParameter parameter, bool defaultData = false )
    \n+
    36 : id_( id ),
    \n+
    37 parameter_( parameter ),
    \n+
    38 defaultData_( defaultData )
    \n+
    39 { }
    \n+
    \n+
    40
    \n+
    41 // return id
    \n+
    \n+
    42 int id () const
    \n+
    43 {
    \n+
    44 return id_;
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    47 // return true, if additional parameters given
    \n+
    \n+
    48 bool hasParameter () const
    \n+
    49 {
    \n+
    50 return (!parameter_.empty());
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    53 // return additional parameters
    \n+
    \n+\n+
    55 {
    \n+
    56 return parameter_;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    59 // reset data
    \n+
    \n+
    60 void reset ( int id, BoundaryParameter parameter, bool defaultData = false )
    \n+
    61 {
    \n+
    62 id_ = id;
    \n+
    63 parameter_ = parameter;
    \n+
    64 defaultData_ = defaultData;
    \n+
    65 }
    \n
    \n-
    64
    \n-
    65 } // namespace VTK
    \n
    66
    \n-
    68
    \n-
    69} // namespace Dune
    \n-
    70
    \n-
    71#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH
    \n-\n-
    Functions for VTK output on the skeleton.
    \n-
    Functions for VTK output on the skeleton.
    \n+
    67 // returns true if data origins from default boundary domain
    \n+
    \n+
    68 bool isDefault () const
    \n+
    69 {
    \n+
    70 return defaultData_;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    73 friend std::ostream & operator<< ( std :: ostream & os, const DomainData & ddata )
    \n+
    74 {
    \n+
    75 os << "domain data: id = " << ddata.id();
    \n+
    76 if( ddata.hasParameter() )
    \n+
    77 os << ", parameter = " << ddata.parameter();
    \n+
    78 return os;
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    81 private:
    \n+
    82 int id_;
    \n+
    83 BoundaryParameter parameter_;
    \n+
    84 bool defaultData_;
    \n+
    85
    \n+
    86 }; // end struct DomainData
    \n+
    \n+
    87
    \n+
    88
    \n+
    \n+
    89 struct Domain
    \n+
    90 {
    \n+
    91 // dimension of world coordinates
    \n+
    92 const int dimensionworld;
    \n+
    93
    \n+\n+
    95
    \n+
    96 // constructor
    \n+
    \n+
    97 Domain( std::vector< double > p1, std::vector< double > p2, int id, BoundaryParameter & parameter )
    \n+
    98 : dimensionworld( p1.size() ),
    \n+
    99 left_( p1 ),
    \n+
    100 right_( p2 ),
    \n+
    101 data_( id, parameter )
    \n+
    102 {
    \n+
    103 if( int( p2.size() ) != dimensionworld )
    \n+
    104 {
    \n+
    105 DUNE_THROW(DGFException,
    \n+
    106 "ERROR in " << *this << "!");
    \n+
    107 }
    \n+
    108 }
    \n+
    \n+
    109
    \n+
    110 // constructor
    \n+
    \n+
    111 Domain( std::vector< double > p1, std::vector< double > p2, DomainData & data )
    \n+
    112 : dimensionworld( p1.size() ),
    \n+
    113 left_( p1 ),
    \n+
    114 right_( p2 ),
    \n+
    115 data_( data )
    \n+
    116 {
    \n+
    117 if( int( p2.size() ) != dimensionworld )
    \n+
    118 {
    \n+
    119 DUNE_THROW(DGFException,
    \n+
    120 "ERROR in " << *this << "!");
    \n+
    121 }
    \n+
    122 }
    \n+
    \n+
    123
    \n+
    124 // copy constructor
    \n+
    \n+
    125 Domain ( const Domain & other )
    \n+\n+
    127 left_( other.left_ ),
    \n+
    128 right_( other.right_ ),
    \n+
    129 data_( other.data_ )
    \n+
    130 {
    \n+
    131 if( dimensionworld != other.dimensionworld )
    \n+
    132 {
    \n+
    133 DUNE_THROW(DGFException,
    \n+
    134 "ERROR in " << *this << "!");
    \n+
    135 }
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    138 // assignment
    \n+
    \n+
    139 Domain & operator = ( const Domain & other )
    \n+
    140 {
    \n+
    141 if( dimensionworld != other.dimensionworld )
    \n+
    142 {
    \n+
    143 DUNE_THROW(DGFException,
    \n+
    144 "ERROR in " << *this << "!");
    \n+
    145 }
    \n+
    146
    \n+
    147 left_ = other.left_;
    \n+
    148 right_= other.right_;
    \n+
    149 data_= other.data_;
    \n+
    150 return *this;
    \n+
    151 }
    \n+
    \n+
    152
    \n+
    153 // return true if point is contained in boundary domain
    \n+
    154 template< class Vector >
    \n+
    \n+
    155 bool contains ( const Vector & x ) const
    \n+
    156 {
    \n+
    157 bool ret = true;
    \n+
    158 for( int i = 0; i < dimensionworld; ++i )
    \n+
    159 {
    \n+
    160 if( x[ i ] < left_[ i ] || x[ i ] > right_[ i ] )
    \n+
    161 ret = false;
    \n+
    162 }
    \n+
    163 return ret;
    \n+
    164 }
    \n+
    \n+
    165
    \n+
    \n+
    166 const DomainData & data () const
    \n+
    167 {
    \n+
    168 return data_;
    \n+
    169 }
    \n+
    \n+
    170
    \n+
    171 // for error messages
    \n+
    \n+
    172 friend std::ostream & operator<< ( std :: ostream &os, const Domain & domain )
    \n+
    173 {
    \n+
    174 os << "domain: " << std::endl;
    \n+
    175 os << "left = ";
    \n+
    176 for( int i = 0; i < domain.dimensionworld; ++i )
    \n+
    177 os << domain.left_[ i ] << " ";
    \n+
    178 os << std::endl;
    \n+
    179 os << "right = ";
    \n+
    180 for( int i = 0; i < domain.dimensionworld; ++i )
    \n+
    181 os << domain.right_[ i ] << " ";
    \n+
    182 os << std::endl;
    \n+
    183 os << domain.data();
    \n+
    184 return os;
    \n+
    185 }
    \n+
    \n+
    186
    \n+
    187 private:
    \n+
    188 std::vector< double > left_, right_;
    \n+
    189 DomainData data_;
    \n+
    190
    \n+
    191 };
    \n+
    \n+
    192
    \n+
    \n+\n+
    194 : public BasicBlock
    \n+
    195 {
    \n+
    196 typedef DGFBoundaryParameter::type BoundaryParameter;
    \n+
    197
    \n+
    198 // the dimension of the vertices (is given from user)
    \n+
    199 int dimworld_;
    \n+
    200
    \n+
    201 // internal counter
    \n+
    202 int counter_;
    \n+
    203
    \n+
    204 // default values if given
    \n+
    205 DomainData * default_;
    \n+
    206
    \n+
    207 // storage for all domains;
    \n+
    208 int ndomains_;
    \n+
    209 std::vector< Domain > domains_;
    \n+
    210
    \n+
    211 public:
    \n+
    212 // initialize vertex block and get first vertex
    \n+
    213 BoundaryDomBlock ( std::istream & in, int cdimworld );
    \n+
    214
    \n+
    215 // destructor
    \n+
    \n+\n+
    217 {
    \n+
    218 if( default_ )
    \n+
    219 delete default_;
    \n+
    220 }
    \n+
    \n+
    221
    \n+
    222 // go to next domain in block
    \n+
    \n+
    223 bool next ()
    \n+
    224 {
    \n+
    225 counter_++;
    \n+
    226 return ( counter_ < ndomains_ );
    \n+
    227 }
    \n+
    \n+
    228
    \n+
    229 // return domain
    \n+
    \n+
    230 const Domain & domain () const
    \n+
    231 {
    \n+
    232 return domains_.at( counter_ );
    \n+
    233 }
    \n+
    \n+
    234
    \n+
    235 // return true if default is given
    \n+
    \n+
    236 bool hasDefaultData () const
    \n+
    237 {
    \n+
    238 return bool( default_ );
    \n+
    239 }
    \n+
    \n+
    240
    \n+
    241 // return default data
    \n+
    \n+
    242 const DomainData * defaultData () const
    \n+
    243 {
    \n+
    244 return default_;
    \n+
    245 }
    \n+
    \n+
    246
    \n+
    247 // return true if any boundary domain block has
    \n+
    248 // additional parameters
    \n+
    249 bool hasParameter () const;
    \n+
    250
    \n+
    \n+
    251 void reset ()
    \n+
    252 {
    \n+\n+
    254 counter_ = -1;
    \n+
    255 }
    \n+
    \n+
    256
    \n+
    257 // return true while block is active
    \n+
    \n+
    258 bool ok ()
    \n+
    259 {
    \n+
    260 return ( counter_ <= ndomains_ );
    \n+
    261 }
    \n+
    \n+
    262
    \n+
    263 // return data if all vectors in array are contained within
    \n+
    264 // a single domain
    \n+
    265 template< class Vector >
    \n+
    \n+
    266 const DomainData * contains ( const std::vector< Vector > & v ) const
    \n+
    267 {
    \n+
    268 std::vector< int > index( ndomains_ );
    \n+
    269 for( int i = 0; i < ndomains_; ++i)
    \n+
    270 index[ i ] = i;
    \n+
    271
    \n+
    272 size_t N = v.size();
    \n+
    273 for( size_t i = 0; i < N; ++i )
    \n+
    274 {
    \n+
    275 if( index.empty() )
    \n+
    276 break;
    \n+
    277
    \n+
    278 const int n = index.size();
    \n+
    279 assert( n > 0 );
    \n+
    280 for( int j = n-1; j >= 0; --j )
    \n+
    281 {
    \n+
    282 bool inside = domains_[ index[ j ] ].contains( v[ i ] );
    \n+
    283 if( !inside )
    \n+
    284 index.erase( index.begin() + j );
    \n+
    285 }
    \n+
    286 }
    \n+
    287
    \n+
    288 // check wheter no boundary domain found
    \n+
    289 if( index.empty() )
    \n+
    290 return default_;
    \n+
    291
    \n+
    292 // check for ambiguity
    \n+
    293 if( index.size() > 1 )
    \n+
    294 dwarn << "WARNING: ambiguous boundary domain assignment, use first boundary domain in list" << std::endl;
    \n+
    295
    \n+
    296 return &domains_[ index[ 0 ] ].data();
    \n+
    297 }
    \n+
    \n+
    298
    \n+
    299 private:
    \n+
    300 void readBlock ();
    \n+
    301 };
    \n+
    \n+
    302
    \n+
    303 } // end namespace dgf
    \n+
    304
    \n+
    305} // end namespace Dune
    \n+
    306
    \n+
    307#endif
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basicwriter.hh:35
    \n-
    void addCellData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:76
    \n-
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n-
    Definition boundaryiterators.hh:159
    \n-
    Definition boundarywriter.hh:26
    \n-
    void addPointData(const std::shared_ptr< Func > &p, const std::string &name)
    Definition boundarywriter.hh:53
    \n-
    void addCellData(Func *p, const std::string &name)
    Definition boundarywriter.hh:46
    \n-
    void addPointData(Func *p, const std::string &name)
    Definition boundarywriter.hh:59
    \n-
    NonConformingBoundaryWriter(const GV &gv_)
    Definition boundarywriter.hh:33
    \n-
    void addCellData(const std::shared_ptr< Func > &p, const std::string &name)
    Definition boundarywriter.hh:40
    \n-
    function writer for skeleton functions
    Definition skeletonfunction.hh:83
    \n+
    Definition basic.hh:31
    \n+
    void reset()
    Definition basic.hh:51
    \n+
    Definition boundarydom.hh:23
    \n+
    void reset(int id, BoundaryParameter parameter, bool defaultData=false)
    Definition boundarydom.hh:60
    \n+
    ~DomainData()
    Definition boundarydom.hh:32
    \n+
    DGFBoundaryParameter::type BoundaryParameter
    Definition boundarydom.hh:24
    \n+
    DomainData()
    Definition boundarydom.hh:26
    \n+
    int id() const
    Definition boundarydom.hh:42
    \n+
    const BoundaryParameter & parameter() const
    Definition boundarydom.hh:54
    \n+
    friend std::ostream & operator<<(std ::ostream &os, const DomainData &ddata)
    Definition boundarydom.hh:73
    \n+
    bool hasParameter() const
    Definition boundarydom.hh:48
    \n+
    DomainData(int id, BoundaryParameter parameter, bool defaultData=false)
    Definition boundarydom.hh:35
    \n+
    bool isDefault() const
    Definition boundarydom.hh:68
    \n+
    Definition boundarydom.hh:90
    \n+
    Domain(std::vector< double > p1, std::vector< double > p2, int id, BoundaryParameter &parameter)
    Definition boundarydom.hh:97
    \n+
    Domain(const Domain &other)
    Definition boundarydom.hh:125
    \n+
    const int dimensionworld
    Definition boundarydom.hh:92
    \n+
    bool contains(const Vector &x) const
    Definition boundarydom.hh:155
    \n+
    DGFBoundaryParameter::type BoundaryParameter
    Definition boundarydom.hh:94
    \n+
    friend std::ostream & operator<<(std ::ostream &os, const Domain &domain)
    Definition boundarydom.hh:172
    \n+
    Domain & operator=(const Domain &other)
    Definition boundarydom.hh:139
    \n+
    const DomainData & data() const
    Definition boundarydom.hh:166
    \n+
    Domain(std::vector< double > p1, std::vector< double > p2, DomainData &data)
    Definition boundarydom.hh:111
    \n+
    Definition boundarydom.hh:195
    \n+
    ~BoundaryDomBlock()
    Definition boundarydom.hh:216
    \n+
    bool hasParameter() const
    Definition boundarydom.cc:138
    \n+
    const Domain & domain() const
    Definition boundarydom.hh:230
    \n+
    const DomainData * contains(const std::vector< Vector > &v) const
    Definition boundarydom.hh:266
    \n+
    bool next()
    Definition boundarydom.hh:223
    \n+
    void reset()
    Definition boundarydom.hh:251
    \n+
    bool ok()
    Definition boundarydom.hh:258
    \n+
    bool hasDefaultData() const
    Definition boundarydom.hh:236
    \n+
    const DomainData * defaultData() const
    Definition boundarydom.hh:242
    \n+
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Contains types for additional features.
    Definition parser.hh:23
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,119 +2,437 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-boundarywriter.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+boundarydom.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_DGF_BOUNDARYDOMBLOCK_HH\n+6#define DUNE_DGF_BOUNDARYDOMBLOCK_HH\n+7\n+8#include \n+9#include \n+10#include \n 11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bk_\be_\bl_\be_\bt_\bo_\bn_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+14\n 15\n-16namespace _\bD_\bu_\bn_\be {\n-19\n-20 namespace VTK {\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+19 namespace dgf\n+20 {\n 21\n-22 template\n-_\b2_\b3 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br\n-24 : public _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by,\n-25 public _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br >\n-26 {\n-27 typedef _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\bV_\b> _\bF_\ba_\bc_\bt_\bo_\br_\by;\n-28 typedef _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\ba_\bc_\bt_\bo_\br_\by_\b> _\bB_\ba_\bs_\be;\n-29\n-30 const GV& gv;\n+_\b2_\b2 struct _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+23 {\n+_\b2_\b4 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n+25\n+_\b2_\b6 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba ()\n+27 : id_( 0 ),\n+28 parameter_( _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br::defaultValue() ),\n+29 defaultData_( false )\n+30 { }\n 31\n-32 public:\n-_\b3_\b3 _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br(const GV& gv_)\n-34 : _\bF_\ba_\bc_\bt_\bo_\br_\by(gv_), _\bB_\ba_\bs_\be(static_cast(*this)), gv(gv_)\n-35 { }\n-36\n-37 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba;\n-38\n-39 template\n-_\b4_\b0 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::shared_ptr& p, const std::string& name) {\n-41 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr\n-42 (new _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\bu_\bn_\bc_\b>(p, name)));\n-43 }\n-44\n-45 template\n-_\b4_\b6 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(Func* p, const std::string& name) {\n-47 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr(p), name);\n-48 }\n-49\n-50 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba;\n-51\n-52 template\n-_\b5_\b3 void _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::shared_ptr& p, const std::string& name) {\n-54 _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(std::shared_ptr\n-55 (new _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\bu_\bn_\bc_\b>(p, name)));\n-56 }\n-57\n-58 template\n-_\b5_\b9 void _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(Func* p, const std::string& name) {\n-60 _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(std::shared_ptr(p), name);\n-61 }\n-62\n-63 };\n-64\n-65 } // namespace VTK\n+_\b3_\b2 _\b~_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba () { }\n+33\n+34 // constructor\n+_\b3_\b5 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba ( int id, _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, bool defaultData = false )\n+36 : id_( _\bi_\bd ),\n+37 parameter_( _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ),\n+38 defaultData_( defaultData )\n+39 { }\n+40\n+41 // return id\n+_\b4_\b2 int _\bi_\bd () const\n+43 {\n+44 return id_;\n+45 }\n+46\n+47 // return true, if additional parameters given\n+_\b4_\b8 bool _\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br () const\n+49 {\n+50 return (!parameter_.empty());\n+51 }\n+52\n+53 // return additional parameters\n+_\b5_\b4 const _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br & _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br () const\n+55 {\n+56 return parameter_;\n+57 }\n+58\n+59 // reset data\n+_\b6_\b0 void _\br_\be_\bs_\be_\bt ( int id, _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, bool defaultData = false )\n+61 {\n+62 id_ = _\bi_\bd;\n+63 parameter_ = _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n+64 defaultData_ = defaultData;\n+65 }\n 66\n-68\n-69} // namespace Dune\n-70\n-71#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYWRITER_HH\n-_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n-Functions for VTK output on the skeleton.\n-_\bs_\bk_\be_\bl_\be_\bt_\bo_\bn_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-Functions for VTK output on the skeleton.\n+67 // returns true if data origins from default boundary domain\n+_\b6_\b8 bool _\bi_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt () const\n+69 {\n+70 return defaultData_;\n+71 }\n+72\n+_\b7_\b3 friend std::ostream & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std :: ostream & os, const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba &\n+ddata )\n+74 {\n+75 os << \"domain data: id = \" << ddata._\bi_\bd();\n+76 if( ddata._\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br() )\n+77 os << \", parameter = \" << ddata._\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br();\n+78 return os;\n+79 }\n+80\n+81 private:\n+82 int id_;\n+83 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br parameter_;\n+84 bool defaultData_;\n+85\n+86 }; // end struct DomainData\n+87\n+88\n+_\b8_\b9 struct _\bD_\bo_\bm_\ba_\bi_\bn\n+90 {\n+91 // dimension of world coordinates\n+_\b9_\b2 const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+93\n+_\b9_\b4 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n+95\n+96 // constructor\n+_\b9_\b7 _\bD_\bo_\bm_\ba_\bi_\bn( std::vector< double > p1, std::vector< double > p2, int id,\n+_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br & parameter )\n+98 : _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd( p1.size() ),\n+99 left_( p1 ),\n+100 right_( p2 ),\n+101 data_( id, parameter )\n+102 {\n+103 if( int( p2.size() ) != _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n+104 {\n+105 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n+106 \"ERROR in \" << *this << \"!\");\n+107 }\n+108 }\n+109\n+110 // constructor\n+_\b1_\b1_\b1 _\bD_\bo_\bm_\ba_\bi_\bn( std::vector< double > p1, std::vector< double > p2, _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba &\n+_\bd_\ba_\bt_\ba )\n+112 : _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd( p1.size() ),\n+113 left_( p1 ),\n+114 right_( p2 ),\n+115 data_( _\bd_\ba_\bt_\ba )\n+116 {\n+117 if( int( p2.size() ) != _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n+118 {\n+119 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n+120 \"ERROR in \" << *this << \"!\");\n+121 }\n+122 }\n+123\n+124 // copy constructor\n+_\b1_\b2_\b5 _\bD_\bo_\bm_\ba_\bi_\bn ( const _\bD_\bo_\bm_\ba_\bi_\bn & other )\n+126 : _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd( other._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd ),\n+127 left_( other.left_ ),\n+128 right_( other.right_ ),\n+129 data_( other.data_ )\n+130 {\n+131 if( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd != other._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n+132 {\n+133 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n+134 \"ERROR in \" << *this << \"!\");\n+135 }\n+136 }\n+137\n+138 // assignment\n+_\b1_\b3_\b9 _\bD_\bo_\bm_\ba_\bi_\bn & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b ( const _\bD_\bo_\bm_\ba_\bi_\bn & other )\n+140 {\n+141 if( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd != other._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd )\n+142 {\n+143 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\n+144 \"ERROR in \" << *this << \"!\");\n+145 }\n+146\n+147 left_ = other.left_;\n+148 right_= other.right_;\n+149 data_= other.data_;\n+150 return *this;\n+151 }\n+152\n+153 // return true if point is contained in boundary domain\n+154 template< class Vector >\n+_\b1_\b5_\b5 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs ( const Vector & x ) const\n+156 {\n+157 bool ret = true;\n+158 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++i )\n+159 {\n+160 if( x[ i ] < left_[ i ] || x[ i ] > right_[ i ] )\n+161 ret = false;\n+162 }\n+163 return ret;\n+164 }\n+165\n+_\b1_\b6_\b6 const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba & _\bd_\ba_\bt_\ba () const\n+167 {\n+168 return data_;\n+169 }\n+170\n+171 // for error messages\n+_\b1_\b7_\b2 friend std::ostream & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std :: ostream &os, const _\bD_\bo_\bm_\ba_\bi_\bn &\n+domain )\n+173 {\n+174 os << \"domain: \" << std::endl;\n+175 os << \"left = \";\n+176 for( int i = 0; i < domain._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++i )\n+177 os << domain.left_[ i ] << \" \";\n+178 os << std::endl;\n+179 os << \"right = \";\n+180 for( int i = 0; i < domain._\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd; ++i )\n+181 os << domain.right_[ i ] << \" \";\n+182 os << std::endl;\n+183 os << domain._\bd_\ba_\bt_\ba();\n+184 return os;\n+185 }\n+186\n+187 private:\n+188 std::vector< double > left_, right_;\n+189 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba data_;\n+190\n+191 };\n+192\n+_\b1_\b9_\b3 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n+194 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+195 {\n+196 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be BoundaryParameter;\n+197\n+198 // the dimension of the vertices (is given from user)\n+199 int dimworld_;\n+200\n+201 // internal counter\n+202 int counter_;\n+203\n+204 // default values if given\n+205 _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba * default_;\n+206\n+207 // storage for all domains;\n+208 int ndomains_;\n+209 std::vector< Domain > domains_;\n+210\n+211 public:\n+212 // initialize vertex block and get first vertex\n+213 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk ( std::istream & in, int cdimworld );\n+214\n+215 // destructor\n+_\b2_\b1_\b6 _\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk ()\n+217 {\n+218 if( default_ )\n+219 delete default_;\n+220 }\n+221\n+222 // go to next domain in block\n+_\b2_\b2_\b3 bool _\bn_\be_\bx_\bt ()\n+224 {\n+225 counter_++;\n+226 return ( counter_ < ndomains_ );\n+227 }\n+228\n+229 // return domain\n+_\b2_\b3_\b0 const _\bD_\bo_\bm_\ba_\bi_\bn & _\bd_\bo_\bm_\ba_\bi_\bn () const\n+231 {\n+232 return domains_.at( counter_ );\n+233 }\n+234\n+235 // return true if default is given\n+_\b2_\b3_\b6 bool _\bh_\ba_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba () const\n+237 {\n+238 return bool( default_ );\n+239 }\n+240\n+241 // return default data\n+_\b2_\b4_\b2 const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba * _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba () const\n+243 {\n+244 return default_;\n+245 }\n+246\n+247 // return true if any boundary domain block has\n+248 // additional parameters\n+249 bool _\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br () const;\n+250\n+_\b2_\b5_\b1 void _\br_\be_\bs_\be_\bt ()\n+252 {\n+253 _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt();\n+254 counter_ = -1;\n+255 }\n+256\n+257 // return true while block is active\n+_\b2_\b5_\b8 bool _\bo_\bk ()\n+259 {\n+260 return ( counter_ <= ndomains_ );\n+261 }\n+262\n+263 // return data if all vectors in array are contained within\n+264 // a single domain\n+265 template< class Vector >\n+_\b2_\b6_\b6 const _\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba * _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs ( const std::vector< Vector > & v ) const\n+267 {\n+268 std::vector< int > index( ndomains_ );\n+269 for( int i = 0; i < ndomains_; ++i)\n+270 index[ i ] = i;\n+271\n+272 size_t N = v.size();\n+273 for( size_t i = 0; i < N; ++i )\n+274 {\n+275 if( index.empty() )\n+276 break;\n+277\n+278 const int n = index.size();\n+279 assert( n > 0 );\n+280 for( int j = n-1; j >= 0; --j )\n+281 {\n+282 bool inside = domains_[ index[ j ] ].contains( v[ i ] );\n+283 if( !inside )\n+284 index.erase( index.begin() + j );\n+285 }\n+286 }\n+287\n+288 // check wheter no boundary domain found\n+289 if( index.empty() )\n+290 return default_;\n+291\n+292 // check for ambiguity\n+293 if( index.size() > 1 )\n+294 dwarn << \"WARNING: ambiguous boundary domain assignment, use first boundary\n+domain in list\" << std::endl;\n+295\n+296 return &domains_[ index[ 0 ] ].data();\n+297 }\n+298\n+299 private:\n+300 void readBlock ();\n+301 };\n+302\n+303 } // end namespace dgf\n+304\n+305} // end namespace Dune\n+306\n+307#endif\n+_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void addPointData(const std::shared_ptr< Func > &p, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(Func *p, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void addPointData(Func *p, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br\n-NonConformingBoundaryWriter(const GV &gv_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< Func > &p, const std::string &name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarywriter.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-function writer for skeleton functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset(int id, BoundaryParameter parameter, bool defaultData=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\b~_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+~DomainData()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+DGFBoundaryParameter::type BoundaryParameter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+DomainData()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bd\n+int id() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const BoundaryParameter & parameter() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+friend std::ostream & operator<<(std ::ostream &os, const DomainData &ddata)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+bool hasParameter() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+DomainData(int id, BoundaryParameter parameter, bool defaultData=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt\n+bool isDefault() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+Domain(std::vector< double > p1, std::vector< double > p2, int id,\n+BoundaryParameter ¶meter)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+Domain(const Domain &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+const int dimensionworld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(const Vector &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+DGFBoundaryParameter::type BoundaryParameter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+friend std::ostream & operator<<(std ::ostream &os, const Domain &domain)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:172\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+Domain & operator=(const Domain &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bd_\ba_\bt_\ba\n+const DomainData & data() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+Domain(std::vector< double > p1, std::vector< double > p2, DomainData &data)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\b~_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n+~BoundaryDomBlock()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+bool hasParameter() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.cc:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bo_\bm_\ba_\bi_\bn\n+const Domain & domain() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+const DomainData * contains(const std::vector< Vector > &v) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:266\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\be_\bx_\bt\n+bool next()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:251\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:258\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba\n+bool hasDefaultData() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bD_\ba_\bt_\ba\n+const DomainData * defaultData() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+exception class for IO errors in the DGF parser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+Contains types for additional features.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.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-grid-doc/doxygen/a00932.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00932.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryiterators.hh File Reference\n+dune-grid: dim.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-
    boundaryiterators.hh File Reference
    \n+
    dim.hh File Reference
    \n
    \n
    \n-\n-

    Functions for VTK output on the skeleton. \n-More...

    \n-
    #include <iterator>
    \n-#include <memory>
    \n-#include <dune/common/iteratorfacades.hh>
    \n-#include <dune/grid/io/file/vtk/corner.hh>
    \n-#include <dune/grid/io/file/vtk/corneriterator.hh>
    \n-#include <dune/grid/io/file/vtk/functionwriter.hh>
    \n+
    #include <iostream>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.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::VTK::BoundaryIterator< GV >
     iterate over the GridViews boundary intersections More...
     
    class  Dune::VTK::IntersectionIndexSet< ElementIndexSet >
     
    class  Dune::VTK::NonConformingBoundaryIteratorFactory< GV >
    class  Dune::dgf::DimBlock
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n-

    Detailed Description

    \n-

    Functions for VTK output on the skeleton.

    \n-
    Author
    J\u00f6 Fahlke
    \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": "@@ -2,39 +2,25 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-boundaryiterators.hh File Reference\n-_\bd_\bu_\bn_\be_\b-_\bg_\br_\bi_\bd \u00bb _\bI_\b/_\bO \u00bb _\bV_\bi_\bs_\bu_\ba_\bl_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b _\bT_\bo_\bo_\bl_\bK_\bi_\bt_\b _\b(_\bV_\bT_\bK_\b)\n-Functions for VTK output on the skeleton. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+dim.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\bV_\b _\b>\n-\u00a0 iterate over the GridViews boundary intersections _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\bV_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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-Functions for VTK output on the skeleton.\n- Author\n- J\u00c3\u00b6 Fahlke\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00932_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00932_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: boundaryiterators.hh Source File\n+dune-grid: dim.hh Source File\n \n \n \n \n \n \n \n@@ -70,283 +70,79 @@\n \n \n \n \n \n \n \n
    \n-
    boundaryiterators.hh
    \n+
    dim.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
    \n-
    8
    \n-
    9#include <iterator>
    \n-
    10#include <memory>
    \n+
    5#ifndef DUNE_DGF_DIMBLOCK_HH
    \n+
    6#define DUNE_DGF_DIMBLOCK_HH
    \n+
    7
    \n+
    8#include <iostream>
    \n+
    9
    \n+\n
    11
    \n-
    12#include <dune/common/iteratorfacades.hh>
    \n-
    13
    \n-\n-\n-\n-
    17
    \n-
    18namespace Dune {
    \n-
    19
    \n-
    22
    \n-
    28 namespace VTK {
    \n-
    29
    \n-
    31
    \n-
    35 template<typename GV>
    \n-
    \n-\n-
    37 : public ForwardIteratorFacade
    \n-
    38 < BoundaryIterator<GV>,
    \n-
    39 const typename GV::Intersection,
    \n-
    40 const typename GV::Intersection&,
    \n-
    41 typename std::iterator_traits<typename GV::template Codim<0>::
    \n-
    42 Iterator>::difference_type>
    \n-
    43 {
    \n-
    44 public:
    \n-
    45 // reiterator the facades typedefs here
    \n-\n-
    47 typedef const typename GV::Intersection Value;
    \n-
    48 typedef Value& Reference;
    \n-
    49 typedef typename GV::template Codim<0>::Iterator ElementIterator;
    \n-
    50 typedef typename GV::IntersectionIterator IntersectionIterator;
    \n-
    51 typedef typename std::iterator_traits<ElementIterator>::difference_type
    \n-\n-
    53
    \n-
    54 private:
    \n-
    55 typedef ForwardIteratorFacade<DerivedType, Value, Reference,
    \n-
    56 DifferenceType> Facade;
    \n-
    57
    \n-
    58 const GV* gv;
    \n-\n-
    60 std::shared_ptr<IntersectionIterator> iit;
    \n-
    61
    \n-
    62 bool valid() const {
    \n-
    63 // we're valid if we're passed-the-end
    \n-
    64 if(eit == gv->template end<0>()) return true;
    \n-
    65 // or if we're on a boundary
    \n-
    66 if((*iit)->boundary() && !(*iit)->neighbor()) return true;
    \n-
    67 // otherwise we're invalid
    \n-
    68 return false;
    \n-
    69 }
    \n-
    70
    \n-
    71 void basic_increment() {
    \n-
    72 ++*iit;
    \n-
    73 if(*iit == gv->iend(*eit)) {
    \n-
    74 iit.reset();
    \n-
    75 ++eit;
    \n-
    76 if(eit != gv->template end<0>())
    \n-
    77 iit.reset(new IntersectionIterator(gv->ibegin(*eit)));
    \n-
    78 }
    \n-
    79 }
    \n-
    80
    \n-
    81 public:
    \n-
    \n-\n-
    83 return **iit;
    \n-
    84 }
    \n-
    \n-
    \n-
    85 bool equals(const DerivedType& other) const {
    \n-
    86 if(eit != other.eit) return false;
    \n-
    87
    \n-
    88 // this is a bit tricky, since we may not compare iit if we are
    \n-
    89 // passed-the-end
    \n-
    90 bool mePassedTheEnd = eit == gv->template end<0>();
    \n-
    91 bool otherPassedTheEnd = other.eit == other.gv->template end<0>();
    \n-
    92
    \n-
    93 // both passed-the-end => consider them equal
    \n-
    94 if(mePassedTheEnd && otherPassedTheEnd) return true;
    \n-
    95
    \n-
    96 // one passed the end => not equal
    \n-
    97 if(mePassedTheEnd || otherPassedTheEnd) return false;
    \n-
    98
    \n-
    99 // none passed-the-end => do their iit iterators match?
    \n-
    100 return *iit == *other.iit;
    \n-
    101 }
    \n-
    \n-
    102
    \n-
    \n-
    103 void increment() {
    \n-
    104 basic_increment();
    \n-
    105 while(!valid()) basic_increment();
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    109
    \n-
    \n-
    113 BoundaryIterator(const GV& gv_, const ElementIterator& eit_,
    \n-
    114 const IntersectionIterator& iit_)
    \n-
    115 : gv(&gv_), eit(eit_), iit(new IntersectionIterator(iit_))
    \n-
    116 {
    \n-
    117 while(!valid()) basic_increment();
    \n-
    118 }
    \n-
    \n-
    120
    \n-
    \n-
    125 BoundaryIterator(const GV& gv_, const ElementIterator& eit_)
    \n-
    126 : gv(&gv_), eit(eit_)
    \n-
    127 {
    \n-
    128 if(eit != gv->template end<0>())
    \n-
    129 iit.reset(new IntersectionIterator(gv->ibegin(*eit)));
    \n-
    130
    \n-
    131 while(!valid()) basic_increment();
    \n-
    132 }
    \n-
    \n-
    134
    \n-
    \n-
    138 BoundaryIterator(const GV& gv_, bool end = false)
    \n-
    139 : gv(&gv_), eit(end ? gv->template end<0>() : gv->template begin<0>())
    \n-
    140 {
    \n-
    141 if(eit != gv->template end<0>())
    \n-
    142 iit.reset(new IntersectionIterator(gv->ibegin(*eit)));
    \n-
    143
    \n-
    144 while(!valid()) basic_increment();
    \n-
    145 }
    \n-
    \n-
    146 };
    \n-
    \n-
    147
    \n-
    148 template<typename ElementIndexSet>
    \n-
    \n-\n-
    150 const ElementIndexSet& eis;
    \n-
    151
    \n-
    152 public:
    \n-
    \n-
    153 IntersectionIndexSet(const ElementIndexSet& eis_)
    \n-
    154 : eis(eis_)
    \n-
    155 { }
    \n-
    \n-
    156 };
    \n-
    \n-
    157
    \n-
    158 template<typename GV>
    \n-
    \n-\n-
    160 const GV& gv;
    \n-
    161
    \n-
    162 public:
    \n-
    163 static const unsigned dimCell = GV::dimension-1;
    \n-
    164
    \n-
    165 typedef typename GV::Intersection Cell;
    \n-\n-
    167
    \n-\n-\n-
    170
    \n-
    171 typedef Corner Point;
    \n-\n-
    173
    \n-\n-
    175 typedef typename GV::Communication Communication;
    \n-
    176
    \n-
    \n-\n-
    178 : gv(gv_)
    \n-
    179 { }
    \n-
    \n-
    180
    \n-
    \n-\n-
    182 return CellIterator(gv);
    \n-
    183 }
    \n-
    \n-
    \n-\n-
    185 return CellIterator(gv, true);
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    \n-\n-\n-
    190 }
    \n-
    \n-
    \n-\n-
    192 return CornerIterator(endCells());
    \n-
    193 }
    \n-
    \n-
    194
    \n-\n-
    196 PointIterator endPoints() const { return endCorners(); }
    \n-
    197
    \n-
    \n-\n-
    199 return ConnectivityWriter();
    \n-
    200 }
    \n-
    \n-
    \n-
    201 const Communication& comm() const {
    \n-
    202 return gv.comm();
    \n-
    203 }
    \n-
    \n-
    204 };
    \n-
    \n-
    205
    \n-
    206 } // namespace VTK
    \n-
    207
    \n-
    209
    \n-
    210} // namespace Dune
    \n-
    211
    \n-
    212#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
    \n-\n-\n-\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 namespace dgf
    \n+
    17 {
    \n+
    \n+
    18 class DimBlock : public BasicBlock {
    \n+
    19 int _dimworld; // dimension of world
    \n+
    20 int _dim; // dimension of grid
    \n+
    21 public:
    \n+
    22 const static char* ID;
    \n+
    23 // initialize block and get dimension of world
    \n+
    24 DimBlock ( std :: istream &in );
    \n+
    25 // get dimension of world found in block
    \n+
    \n+
    26 int dim() {
    \n+
    27 return _dim;
    \n+
    28 }
    \n+
    \n+
    \n+
    29 int dimworld() {
    \n+
    30 return _dimworld;
    \n+
    31 }
    \n+
    \n+
    32 // some information
    \n+
    \n+
    33 bool ok() {
    \n+
    34 return true;
    \n+
    35 }
    \n+
    \n+
    36 };
    \n+
    \n+
    37
    \n+
    38 } // end namespace dgf
    \n+
    39
    \n+
    40} // end namespace Dune
    \n+
    41
    \n+
    42#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    iterate over the GridViews boundary intersections
    Definition boundaryiterators.hh:43
    \n-
    BoundaryIterator< GV > DerivedType
    Definition boundaryiterators.hh:46
    \n-
    BoundaryIterator(const GV &gv_, const ElementIterator &eit_)
    construct a BoundaryIterator
    Definition boundaryiterators.hh:125
    \n-
    Reference dereference() const
    Definition boundaryiterators.hh:82
    \n-
    const GV::Intersection Value
    Definition boundaryiterators.hh:47
    \n-
    BoundaryIterator(const GV &gv_, bool end=false)
    construct a BoundaryIterator
    Definition boundaryiterators.hh:138
    \n-
    BoundaryIterator(const GV &gv_, const ElementIterator &eit_, const IntersectionIterator &iit_)
    construct a BoundaryIterator
    Definition boundaryiterators.hh:113
    \n-
    GV::template Codim< 0 >::Iterator ElementIterator
    Definition boundaryiterators.hh:49
    \n-
    Value & Reference
    Definition boundaryiterators.hh:48
    \n-
    GV::IntersectionIterator IntersectionIterator
    Definition boundaryiterators.hh:50
    \n-
    bool equals(const DerivedType &other) const
    Definition boundaryiterators.hh:85
    \n-
    std::iterator_traits< ElementIterator >::difference_type DifferenceType
    Definition boundaryiterators.hh:52
    \n-
    void increment()
    Definition boundaryiterators.hh:103
    \n-
    Definition boundaryiterators.hh:149
    \n-
    IntersectionIndexSet(const ElementIndexSet &eis_)
    Definition boundaryiterators.hh:153
    \n-
    Definition boundaryiterators.hh:159
    \n-
    PointIterator beginPoints() const
    Definition boundaryiterators.hh:195
    \n-
    ConnectivityWriter makeConnectivity() const
    Definition boundaryiterators.hh:198
    \n-
    GV::Communication Communication
    Definition boundaryiterators.hh:175
    \n-
    static const unsigned dimCell
    Definition boundaryiterators.hh:163
    \n-
    VTK::CornerIterator< CellIterator > CornerIterator
    Definition boundaryiterators.hh:169
    \n-
    BoundaryIterator< GV > CellIterator
    Definition boundaryiterators.hh:166
    \n-
    Corner Point
    Definition boundaryiterators.hh:171
    \n-
    CornerIterator beginCorners() const
    Definition boundaryiterators.hh:188
    \n-
    CellIterator beginCells() const
    Definition boundaryiterators.hh:181
    \n-
    NonConformingConnectivityWriter< Cell > ConnectivityWriter
    Definition boundaryiterators.hh:174
    \n-
    CornerIterator endCorners() const
    Definition boundaryiterators.hh:191
    \n-
    VTK::Corner< Cell > Corner
    Definition boundaryiterators.hh:168
    \n-
    GV::Intersection Cell
    Definition boundaryiterators.hh:165
    \n-
    CornerIterator PointIterator
    Definition boundaryiterators.hh:172
    \n-
    NonConformingBoundaryIteratorFactory(const GV &gv_)
    Definition boundaryiterators.hh:177
    \n-
    CellIterator endCells() const
    Definition boundaryiterators.hh:184
    \n-
    const Communication & comm() const
    Definition boundaryiterators.hh:201
    \n-
    PointIterator endPoints() const
    Definition boundaryiterators.hh:196
    \n-
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n-
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n-
    writer for the connectivity array in nonconforming mode
    Definition functionwriter.hh:261
    \n+
    Definition basic.hh:31
    \n+
    Definition dim.hh:18
    \n+
    int dimworld()
    Definition dim.hh:29
    \n+
    static const char * ID
    Definition dim.hh:22
    \n+
    bool ok()
    Definition dim.hh:33
    \n+
    int dim()
    Definition dim.hh:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,320 +2,76 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-boundaryiterators.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+dim.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH\n-7#define DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_DGF_DIMBLOCK_HH\n+6#define DUNE_DGF_DIMBLOCK_HH\n+7\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n 11\n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-17\n-18namespace _\bD_\bu_\bn_\be {\n-19\n-22\n-28 namespace VTK {\n-29\n-31\n-35 template\n-_\b3_\b6 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-37 : public ForwardIteratorFacade\n-38 < BoundaryIterator,\n-39 const typename GV::Intersection,\n-40 const typename GV::Intersection&,\n-41 typename std::iterator_traits::\n-42 Iterator>::difference_type>\n-43 {\n-44 public:\n-45 // reiterator the facades typedefs here\n-_\b4_\b6 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\bV_\b> _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be;\n-_\b4_\b7 typedef const typename GV::Intersection _\bV_\ba_\bl_\bu_\be;\n-_\b4_\b8 typedef _\bV_\ba_\bl_\bu_\be& _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-_\b4_\b9 typedef typename GV::template Codim<0>::Iterator _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b5_\b0 typedef typename GV::IntersectionIterator _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-51 typedef typename std::iterator_traits::difference_type\n-_\b5_\b2 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be;\n-53\n-54 private:\n-55 typedef ForwardIteratorFacade<_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be, _\bV_\ba_\bl_\bu_\be, _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be,\n-56 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be> Facade;\n-57\n-58 const GV* gv;\n-59 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br eit;\n-60 std::shared_ptr iit;\n-61\n-62 bool valid() const {\n-63 // we're valid if we're passed-the-end\n-64 if(eit == gv->template end<0>()) return true;\n-65 // or if we're on a boundary\n-66 if((*iit)->boundary() && !(*iit)->neighbor()) return true;\n-67 // otherwise we're invalid\n-68 return false;\n-69 }\n-70\n-71 void basic_increment() {\n-72 ++*iit;\n-73 if(*iit == gv->iend(*eit)) {\n-74 iit.reset();\n-75 ++eit;\n-76 if(eit != gv->template end<0>())\n-77 iit.reset(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv->ibegin(*eit)));\n-78 }\n-79 }\n-80\n-81 public:\n-_\b8_\b2 _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n-83 return **iit;\n-84 }\n-_\b8_\b5 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be& other) const {\n-86 if(eit != other.eit) return false;\n-87\n-88 // this is a bit tricky, since we may not compare iit if we are\n-89 // passed-the-end\n-90 bool mePassedTheEnd = eit == gv->template end<0>();\n-91 bool otherPassedTheEnd = other.eit == other.gv->template end<0>();\n-92\n-93 // both passed-the-end => consider them equal\n-94 if(mePassedTheEnd && otherPassedTheEnd) return true;\n-95\n-96 // one passed the end => not equal\n-97 if(mePassedTheEnd || otherPassedTheEnd) return false;\n-98\n-99 // none passed-the-end => do their iit iterators match?\n-100 return *iit == *other.iit;\n-101 }\n-102\n-_\b1_\b0_\b3 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n-104 basic_increment();\n-105 while(!valid()) basic_increment();\n-106 }\n-107\n-109\n-_\b1_\b1_\b3 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GV& gv_, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& eit_,\n-114 const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& iit_)\n-115 : gv(&gv_), eit(eit_), iit(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(iit_))\n-116 {\n-117 while(!valid()) basic_increment();\n-118 }\n-120\n-_\b1_\b2_\b5 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GV& gv_, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& eit_)\n-126 : gv(&gv_), eit(eit_)\n-127 {\n-128 if(eit != gv->template end<0>())\n-129 iit.reset(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv->ibegin(*eit)));\n-130\n-131 while(!valid()) basic_increment();\n-132 }\n-134\n-_\b1_\b3_\b8 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GV& gv_, bool end = false)\n-139 : gv(&gv_), eit(end ? gv->template end<0>() : gv->template begin<0>())\n-140 {\n-141 if(eit != gv->template end<0>())\n-142 iit.reset(new _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv->ibegin(*eit)));\n-143\n-144 while(!valid()) basic_increment();\n-145 }\n-146 };\n-147\n-148 template\n-_\b1_\b4_\b9 class _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt {\n-150 const ElementIndexSet& eis;\n-151\n-152 public:\n-_\b1_\b5_\b3 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(const ElementIndexSet& eis_)\n-154 : eis(eis_)\n-155 { }\n-156 };\n-157\n-158 template\n-_\b1_\b5_\b9 class _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-160 const GV& gv;\n-161\n-162 public:\n-_\b1_\b6_\b3 static const unsigned _\bd_\bi_\bm_\bC_\be_\bl_\bl = GV::dimension-1;\n-164\n-_\b1_\b6_\b5 typedef typename GV::Intersection _\bC_\be_\bl_\bl;\n-_\b1_\b6_\b6 typedef _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\bV_\b> _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-167\n-_\b1_\b6_\b8 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\br_\bn_\be_\br;\n-_\b1_\b6_\b9 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-170\n-_\b1_\b7_\b1 typedef _\bC_\bo_\br_\bn_\be_\br _\bP_\bo_\bi_\bn_\bt;\n-_\b1_\b7_\b2 typedef _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-173\n-_\b1_\b7_\b4 typedef _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br;\n-_\b1_\b7_\b5 typedef typename GV::Communication _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn;\n-176\n-_\b1_\b7_\b7 explicit _\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(const GV& gv_)\n-178 : gv(gv_)\n-179 { }\n-180\n-_\b1_\b8_\b1 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs() const {\n-182 return _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv);\n-183 }\n-_\b1_\b8_\b4 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs() const {\n-185 return _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(gv, true);\n-186 }\n-187\n-_\b1_\b8_\b8 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n-189 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs(), _\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n-190 }\n-_\b1_\b9_\b1 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs() const {\n-192 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs());\n-193 }\n-194\n-_\b1_\b9_\b5 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() const { return _\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs(); }\n-_\b1_\b9_\b6 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() const { return _\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs(); }\n-197\n-_\b1_\b9_\b8 _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br _\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by() const {\n-199 return _\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br();\n-200 }\n-_\b2_\b0_\b1 const _\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn& _\bc_\bo_\bm_\bm() const {\n-202 return gv.comm();\n-203 }\n-204 };\n-205\n-206 } // namespace VTK\n-207\n-209\n-210} // namespace Dune\n-211\n-212#endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH\n-_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n-_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 namespace dgf\n+17 {\n+_\b1_\b8 class _\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk {\n+19 int _dimworld; // dimension of world\n+20 int _dim; // dimension of grid\n+21 public:\n+_\b2_\b2 const static char* _\bI_\bD;\n+23 // initialize block and get dimension of world\n+24 _\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk ( std :: istream &in );\n+25 // get dimension of world found in block\n+_\b2_\b6 int _\bd_\bi_\bm() {\n+27 return _dim;\n+28 }\n+_\b2_\b9 int _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd() {\n+30 return _dimworld;\n+31 }\n+32 // some information\n+_\b3_\b3 bool _\bo_\bk() {\n+34 return true;\n+35 }\n+36 };\n+37\n+38 } // end namespace dgf\n+39\n+40} // end namespace Dune\n+41\n+42#endif\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-iterate over the GridViews boundary intersections\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be\n-BoundaryIterator< GV > DerivedType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-BoundaryIterator(const GV &gv_, const ElementIterator &eit_)\n-construct a BoundaryIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Reference dereference() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-const GV::Intersection Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-BoundaryIterator(const GV &gv_, bool end=false)\n-construct a BoundaryIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-BoundaryIterator(const GV &gv_, const ElementIterator &eit_, const\n-IntersectionIterator &iit_)\n-construct a BoundaryIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GV::template Codim< 0 >::Iterator ElementIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-Value & Reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GV::IntersectionIterator IntersectionIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const DerivedType &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be\n-std::iterator_traits< ElementIterator >::difference_type DifferenceType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-IntersectionIndexSet(const ElementIndexSet &eis_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-PointIterator beginPoints() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by\n-ConnectivityWriter makeConnectivity() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-GV::Communication Communication\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\bC_\be_\bl_\bl\n-static const unsigned dimCell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-VTK::CornerIterator< CellIterator > CornerIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:169\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-BoundaryIterator< GV > CellIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt\n-Corner Point\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\bo_\br_\bn_\be_\br_\bs\n-CornerIterator beginCorners() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n-CellIterator beginCells() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-NonConformingConnectivityWriter< Cell > ConnectivityWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\bo_\br_\bn_\be_\br_\bs\n-CornerIterator endCorners() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-VTK::Corner< Cell > Corner\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:168\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\be_\bl_\bl\n-GV::Intersection Cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-CornerIterator PointIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:172\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-NonConformingBoundaryIteratorFactory(const GV &gv_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n-CellIterator endCells() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:184\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bo_\bm_\bm\n-const Communication & comm() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:201\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-PointIterator endPoints() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryiterators.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n-simple class representing a corner of a cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-iterate over the corners of some cell range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bC_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bv_\bi_\bt_\by_\bW_\br_\bi_\bt_\be_\br\n-writer for the connectivity array in nonconforming mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd\n+int dimworld()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bI_\bD\n+static const char * ID\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bi_\bm_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bm\n+int dim()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dim.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-grid-doc/doxygen/a00935.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00935.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: skeletonfunction.hh File Reference\n+dune-grid: boundarydom.cc File Reference\n \n \n \n \n \n \n \n@@ -65,59 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    skeletonfunction.hh File Reference
    \n+
    boundarydom.cc File Reference
    \n
    \n
    \n-\n-

    Functions for VTK output on the skeleton. \n-More...

    \n-
    #include <memory>
    \n-#include <string>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/grid/io/file/vtk/functionwriter.hh>
    \n-#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n-#include <dune/grid/io/file/vtk/vtuwriter.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::VTK::SkeletonFunctionTraits< GV, RF >
     
    class  Dune::VTK::SkeletonFunctionInterface< GV, RF >
     A prototype for VTKFunctions on the skeleton. More...
     
    class  Dune::VTK::SkeletonFunctionWriter< Func >
     function writer for skeleton functions More...
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>
    \n+
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n-

    Detailed Description

    \n-

    Functions for VTK output on the skeleton.

    \n-
    Author
    J\u00f6 Fahlke
    \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": "@@ -2,41 +2,21 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-skeletonfunction.hh File Reference\n-_\bd_\bu_\bn_\be_\b-_\bg_\br_\bi_\bd \u00bb _\bI_\b/_\bO \u00bb _\bV_\bi_\bs_\bu_\ba_\bl_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b _\bT_\bo_\bo_\bl_\bK_\bi_\bt_\b _\b(_\bV_\bT_\bK_\b)\n-Functions for VTK output on the skeleton. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bG_\bV_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\bV_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0 A prototype for VTKFunctions on the skeleton. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b _\b>\n-\u00a0 function writer for skeleton functions _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+boundarydom.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bd_\bo_\bm_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\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-Functions for VTK output on the skeleton.\n- Author\n- J\u00c3\u00b6 Fahlke\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00938.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00938.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtksequencewriterbase.hh File Reference\n+dune-grid: interval.cc File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    vtksequencewriterbase.hh File Reference
    \n+
    interval.cc File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <iostream>
    \n-#include <sstream>
    \n-#include <fstream>
    \n-#include <iomanip>
    \n-#include <memory>
    \n-#include <dune/grid/io/file/vtk/common.hh>
    \n-#include <dune/common/path.hh>
    \n-#include <dune/grid/io/file/vtk/vtkwriter.hh>
    \n-
    \n-

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::VTKSequenceWriterBase< GridView >
     Base class to write pvd-files which contains a list of all collected vtk-files. More...
     
    \n+
    #include <config.h>
    \n+#include <dune/grid/io/file/dgfparser/blocks/interval.hh>
    \n+
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,31 +2,21 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vtksequencewriterbase.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\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:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Base class to write pvd-files which contains a list of all collected\n- vtk-files. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+interval.cc File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bi_\bn_\bt_\be_\br_\bv_\ba_\bl_\b._\bh_\bh>\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00941.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00941.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: volumeiterators.hh File Reference\n+dune-grid: projection.cc File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,76 @@\n \n \n \n \n \n \n \n
    \n \n-
    volumeiterators.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    projection.cc File Reference
    \n \n
    \n-\n-

    Go to the source code of this file.

    \n-\n+
    #include <config.h>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/projection.hh>
    \n+
    \n \n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\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::VTK::ConformingVolumeIteratorFactory< GV >
    struct  Dune::dgf::Expr::ConstantExpression
     
    struct  Dune::dgf::Expr::VariableExpression
     
    struct  Dune::dgf::Expr::FunctionCallExpression
     
    struct  Dune::dgf::Expr::VectorExpression
     
    struct  Dune::dgf::Expr::BracketExpression
     
    struct  Dune::dgf::Expr::MinusExpression
     
    struct  Dune::dgf::Expr::NormExpression
     
    struct  Dune::dgf::Expr::SqrtExpression
     
    class  Dune::VTK::NonConformingVolumeIteratorFactory< GV >
    struct  Dune::dgf::Expr::SinExpression
     
    struct  Dune::dgf::Expr::CosExpression
     
    struct  Dune::dgf::Expr::PowerExpression
     
    struct  Dune::dgf::Expr::SumExpression
     
    struct  Dune::dgf::Expr::DifferenceExpression
     
    struct  Dune::dgf::Expr::ProductExpression
     
    struct  Dune::dgf::Expr::QuotientExpression
     
    \n \n \n \n \n-\n+\n \n+\n+\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    namespace  Dune::dgf::Expr
     
    \n+\n+\n+\n

    \n+Functions

    std::ostream & Dune::dgf::operator<< (std::ostream &out, const ProjectionBlock::Token &token)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,59 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-volumeiterators.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bo_\bi_\bn_\bt_\bi_\bt_\be_\br_\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+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\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+projection.cc File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\bV_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\bV_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bB_\br_\ba_\bc_\bk_\be_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bM_\bi_\bn_\bu_\bs_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bN_\bo_\br_\bm_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bS_\bq_\br_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bS_\bi_\bn_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bC_\bo_\bs_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bP_\bo_\bw_\be_\br_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bS_\bu_\bm_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br_\b:_\b:_\bQ_\bu_\bo_\bt_\bi_\be_\bn_\bt_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n+\u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bE_\bx_\bp_\br\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const\n+ ProjectionBlock::Token &token)\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00944.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00944.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: pvtuwriter.hh File Reference\n+dune-grid: dgfyasp.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,53 @@\n \n \n \n \n \n \n \n
    \n \n-
    pvtuwriter.hh File Reference
    \n+
    dgfyasp.hh File Reference
    \n
    \n
    \n-
    #include <ostream>
    \n-#include <string>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/indent.hh>
    \n-#include <dune/grid/io/file/vtk/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+\n+\n+\n+\n \n

    \n Classes

    class  Dune::VTK::PVTUWriter
     Dump a .vtu/.vtp files contents to a stream. More...
    class  Dune::dgf::YaspGridParameterBlock
     Grid parameters for YaspGrid. More...
     
    struct  Dune::DGFGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > >
     Grid factory for YaspGrid with equidistant coordinates. More...
     
    struct  Dune::DGFGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > >
     Grid factory for YaspGrid with equidistant coordinates. More...
     
    class  Dune::DGFGridFactory< Dune::YaspGrid< dim, Dune::TensorProductCoordinates< ctype, dim > > >
     Placeholder for grid factory for YaspGrid with tensor product coordinates. More...
     
    struct  Dune::DGFGridInfo< YaspGrid< dim, Coordinates > >
     
    \n \n \n \n \n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::dgf
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,28 +2,41 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-pvtuwriter.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+dgfyasp.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\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:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 Dump a .vtu/.vtp files contents to a stream. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+\u00a0 _\bG_\br_\bi_\bd parameters for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n+ _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n+\u00a0 _\bG_\br_\bi_\bd factory for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with equidistant coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n+ _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n+\u00a0 _\bG_\br_\bi_\bd factory for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with equidistant coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:\n+ _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>\n+\u00a0 Placeholder for grid factory for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd with tensor product\n+ coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00944_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00944_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: pvtuwriter.hh Source File\n+dune-grid: dgfyasp.hh Source File\n \n \n \n \n \n \n \n@@ -70,197 +70,619 @@\n
    \n \n \n \n \n \n \n
    \n-
    pvtuwriter.hh
    \n+
    dgfyasp.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH
    \n-
    8
    \n-
    9#include <ostream>
    \n-
    10#include <string>
    \n+
    5#ifndef DUNE_DGFPARSERYASP_HH
    \n+
    6#define DUNE_DGFPARSERYASP_HH
    \n+
    7
    \n+\n+\n+
    10#include "dgfparser.hh"
    \n
    11
    \n-
    12#include <dune/common/exceptions.hh>
    \n-
    13#include <dune/common/indent.hh>
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-\n-
    16
    \n-
    17namespace Dune {
    \n-
    18
    \n+
    15 // External Forward Declarations
    \n+
    16 // -----------------------------
    \n+
    17
    \n+
    18 template< class GridImp, class IntersectionImp >
    \n+
    19 class Intersection;
    \n+
    20
    \n
    21
    \n-
    22 namespace VTK {
    \n-
    23
    \n-
    25
    \n-
    \n-
    62 class PVTUWriter {
    \n-
    63 std::ostream& stream;
    \n-
    64
    \n-
    65 std::string fileType;
    \n-
    66
    \n-
    67 Indent indent;
    \n-
    68
    \n-
    69 public:
    \n-
    71
    \n-
    \n-
    78 inline PVTUWriter(std::ostream& stream_, FileType fileType_)
    \n-
    79 : stream(stream_)
    \n-
    80 {
    \n-
    81 switch(fileType_) {
    \n-
    82 case polyData :
    \n-
    83 fileType = "PPolyData";
    \n-
    84 break;
    \n-
    85 case unstructuredGrid :
    \n-
    86 fileType = "PUnstructuredGrid";
    \n-
    87 break;
    \n-
    88 default :
    \n-
    89 DUNE_THROW(IOError, "PVTUWriter: Unknown fileType: " << fileType_);
    \n-
    90 }
    \n-
    91 const std::string& byteOrder = getEndiannessString();
    \n+
    22 namespace dgf
    \n+
    23 {
    \n+
    24
    \n+
    \n+\n+
    39 : public GridParameterBlock
    \n+
    40 {
    \n+
    41 protected:
    \n+
    42 int _overlap; // overlap for YaspGrid
    \n+
    43
    \n+
    44 public:
    \n+
    \n+
    46 YaspGridParameterBlock( std::istream &in )
    \n+
    47 : GridParameterBlock( in ),
    \n+
    48 _overlap( 0 ) // default value
    \n+
    49 {
    \n+
    50 // check overlap
    \n+
    51 if( findtoken( "overlap" ) )
    \n+
    52 {
    \n+
    53 int x;
    \n+
    54 if( getnextentry(x) ) _overlap = x;
    \n+
    55 else
    \n+
    56 {
    \n+
    57 dwarn << "GridParameterBlock: found keyword `overlap' but no value, defaulting to `" << _overlap <<"' !\\n";
    \n+
    58 }
    \n+
    59
    \n+
    60 if (_overlap < 0)
    \n+
    61 {
    \n+
    62 DUNE_THROW(DGFException,"Negative overlap specified!");
    \n+
    63 }
    \n+
    64 }
    \n+
    65 else
    \n+
    66 {
    \n+
    67 dwarn << "YaspGridParameterBlock: Parameter 'overlap' not specified, "
    \n+
    68 << "defaulting to '" << _overlap << "'." << std::endl;
    \n+
    69 }
    \n+
    70
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    74 int overlap () const
    \n+
    75 {
    \n+
    76 return _overlap;
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79 };
    \n+
    \n+
    80
    \n+
    81 }
    \n+
    82
    \n+
    86 template <typename ctype, int dim>
    \n+
    \n+
    87 struct DGFGridFactory< YaspGrid<dim, EquidistantCoordinates<ctype, dim> > >
    \n+
    88 {
    \n+\n+
    90 const static int dimension = Grid::dimension;
    \n+
    91 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n
    92
    \n-
    93 stream << indent << "<?xml version=\\"1.0\\"?>\\n";
    \n-
    94 stream << indent << "<VTKFile"
    \n-
    95 << " type=\\"" << fileType << "\\""
    \n-
    96 << " version=\\"0.1\\""
    \n-
    97 << " byte_order=\\"" << byteOrder << "\\">\\n";
    \n-
    98 ++indent;
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    \n-
    102 inline ~PVTUWriter() {
    \n-
    103 --indent;
    \n-
    104 stream << indent << "</VTKFile>\\n"
    \n-
    105 << std::flush;
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    109
    \n-
    \n-
    120 inline void beginPointData(const std::string& scalars = "",
    \n-
    121 const std::string& vectors = "") {
    \n-
    122 stream << indent << "<PPointData";
    \n-
    123 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n-
    124 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n-
    125 stream << ">\\n";
    \n-
    126 ++indent;
    \n-
    127 }
    \n-
    \n-
    \n-
    129 inline void endPointData() {
    \n-
    130 --indent;
    \n-
    131 stream << indent << "</PPointData>\\n";
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    135
    \n-
    \n-
    146 inline void beginCellData(const std::string& scalars = "",
    \n-
    147 const std::string& vectors = "") {
    \n-
    148 stream << indent << "<PCellData";
    \n-
    149 if(scalars != "") stream << " Scalars=\\"" << scalars << "\\"";
    \n-
    150 if(vectors != "") stream << " Vectors=\\"" << vectors << "\\"";
    \n-
    151 stream << ">\\n";
    \n-
    152 ++indent;
    \n-
    153 }
    \n-
    \n-
    \n-
    155 inline void endCellData() {
    \n-
    156 --indent;
    \n-
    157 stream << indent << "</PCellData>\\n";
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    161
    \n-
    \n-
    166 inline void beginPoints() {
    \n-
    167 stream << indent << "<PPoints>\\n";
    \n-
    168 ++indent;
    \n-
    169 }
    \n-
    \n-
    \n-
    171 inline void endPoints() {
    \n-
    172 --indent;
    \n-
    173 stream << indent << "</PPoints>\\n";
    \n-
    174 }
    \n+
    93 private:
    \n+
    94 typedef FieldVector< ctype, dimension > Point;
    \n+\n+
    96
    \n+
    97 public:
    \n+
    \n+
    98 explicit DGFGridFactory ( std::istream &input,
    \n+
    99 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    100 {
    \n+
    101 generate( input, comm );
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    \n+
    104 explicit DGFGridFactory ( const std::string &filename,
    \n+
    105 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    106 {
    \n+
    107 std::ifstream input( filename.c_str() );
    \n+
    108 if( !input )
    \n+
    109 DUNE_THROW( DGFException, "Error: Macrofile '" << filename << "' not found" );
    \n+
    110 generate( input, comm );
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    \n+\n+
    114 {
    \n+
    115 delete boundaryDomainBlock_;
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+
    118 Grid *grid() const
    \n+
    119 {
    \n+
    120 return grid_;
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    123 template <class Intersection>
    \n+
    \n+
    124 bool wasInserted(const Intersection &intersection) const
    \n+
    125 {
    \n+
    126 return false;
    \n+
    127 }
    \n+
    \n+
    128
    \n+
    129 template <class Intersection>
    \n+
    \n+
    130 int boundaryId(const Intersection &intersection) const
    \n+
    131 {
    \n+
    132 if( boundaryDomainBlock_->isactive() )
    \n+
    133 {
    \n+
    134 std::vector< Point > corners;
    \n+
    135 getCorners( intersection.geometry(), corners );
    \n+
    136 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n+
    137 if( data )
    \n+
    138 return data->id();
    \n+
    139 else
    \n+
    140 return intersection.indexInInside();
    \n+
    141 }
    \n+
    142 else
    \n+
    143 return intersection.indexInInside();
    \n+
    144 }
    \n+
    \n+
    145
    \n+
    146 template< int codim >
    \n+
    \n+
    147 int numParameters () const
    \n+
    148 {
    \n+
    149 return 0;
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    152 // return true if boundary parameters found
    \n+
    \n+\n+
    154 {
    \n+
    155 return boundaryDomainBlock_->hasParameter();
    \n+
    156 }
    \n+
    \n+
    157
    \n+
    158 template< class GG, class II >
    \n+
    159 const typename DGFBoundaryParameter::type &
    \n+
    \n+
    160 boundaryParameter ( const Intersection< GG, II > & intersection ) const
    \n+
    161 {
    \n+\n+
    163 {
    \n+
    164 std::vector< Point > corners;
    \n+
    165 getCorners( intersection.geometry(), corners );
    \n+
    166 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n+
    167 if( data )
    \n+
    168 return data->parameter();
    \n+
    169 else
    \n+\n+
    171 }
    \n+
    172 else
    \n+\n+
    174 }
    \n
    \n
    175
    \n-
    177
    \n-
    \n-
    189 inline void beginMain(unsigned ghostLevel = 0) {
    \n-
    190 stream << indent << "<" << fileType
    \n-
    191 << " GhostLevel=\\"" << ghostLevel << "\\">\\n";
    \n-
    192 ++indent;
    \n-
    193 }
    \n-
    \n-
    \n-
    195 inline void endMain() {
    \n-
    196 --indent;
    \n-
    197 stream << indent << "</" << fileType << ">\\n";
    \n-
    198 }
    \n+
    176 template< class Entity >
    \n+
    \n+
    177 std::vector<double> &parameter ( const Entity & )
    \n+
    178 {
    \n+
    179 return emptyParam;
    \n+
    180 }
    \n+
    \n+
    181
    \n+
    182 private:
    \n+
    183 void generate( std::istream &gridin, MPICommunicatorType comm );
    \n+
    184
    \n+
    185 template< class Geometry >
    \n+
    186 static void getCorners ( const Geometry &geometry, std::vector< Point > &corners )
    \n+
    187 {
    \n+
    188 corners.resize( geometry.corners() );
    \n+
    189 for( int i = 0; i < geometry.corners(); ++i )
    \n+
    190 {
    \n+
    191 const typename Geometry::GlobalCoordinate corner = geometry.corner( i );
    \n+
    192 for( int j = 0; j < dimension; ++j )
    \n+
    193 corners[ i ][ j ] = corner[ j ];
    \n+
    194 }
    \n+
    195 }
    \n+
    196
    \n+
    197 Grid *grid_;
    \n+
    198 dgf::BoundaryDomBlock *boundaryDomainBlock_;
    \n+
    199 std::vector<double> emptyParam;
    \n+
    200 };
    \n
    \n-
    199
    \n
    201
    \n-
    \n-
    207 void addArray(const std::string& name, unsigned ncomps, Precision prec) {
    \n-
    208 stream << indent << "<PDataArray"
    \n-
    209 << " type=\\"" << toString(prec) << "\\""
    \n-
    210 << " Name=\\"" << name << "\\""
    \n-
    211 << " NumberOfComponents=\\"" << ncomps << "\\"/>\\n";
    \n-
    212 }
    \n-
    \n-
    213
    \n-
    \n-
    215 inline void addPiece(const std::string& filename) {
    \n-
    216 stream << indent << "<Piece "
    \n-
    217 << " Source=\\"" << filename << "\\"/>\\n";
    \n-
    218 }
    \n-
    \n-
    219 };
    \n-
    \n-
    220
    \n-
    221 } // namespace VTK
    \n+
    202 // generate YaspGrid from the provided DGF
    \n+
    203 template< typename ctype, int dim >
    \n+
    204 inline void DGFGridFactory< YaspGrid< dim , EquidistantCoordinates<ctype, dim> > >
    \n+
    205 ::generate ( std::istream &gridin, MPICommunicatorType comm )
    \n+
    206 {
    \n+
    207 using std::abs;
    \n+
    208 dgf::IntervalBlock intervalBlock( gridin );
    \n+
    209
    \n+
    210 if( !intervalBlock.isactive() )
    \n+
    211 DUNE_THROW( DGFException, "YaspGrid can only be created from an interval block." );
    \n+
    212
    \n+
    213 if( intervalBlock.numIntervals() != 1 )
    \n+
    214 DUNE_THROW( DGFException, "YaspGrid can only handle 1 interval block." );
    \n+
    215
    \n+
    216 if( intervalBlock.dimw() != dim )
    \n+
    217 {
    \n+
    218 DUNE_THROW( DGFException,
    \n+
    219 "Cannot read an interval of dimension " << intervalBlock.dimw()
    \n+
    220 << " into a YaspGrid< " << dim << " >." );
    \n+
    221 }
    \n
    222
    \n+
    223 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );
    \n
    224
    \n-
    225} // namespace Dune
    \n-
    226
    \n-
    227#endif // DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH
    \n-
    Common stuff for the VTKWriter.
    \n+
    225 FieldVector<ctype, dim> lang;
    \n+
    226 std::array<int,dim> anz;
    \n+
    227 for( int i = 0; i < dim; ++i )
    \n+
    228 {
    \n+
    229 // check that start point is 0.0
    \n+
    230 if( abs( interval.p[ 0 ][ i ] ) > 1e-10 )
    \n+
    231 {
    \n+
    232 DUNE_THROW( DGFException,
    \n+
    233 "YaspGrid cannot handle grids with non-zero left lower corner." );
    \n+
    234 }
    \n+
    235
    \n+
    236 lang[ i ] = interval.p[ 1 ][ i ] - interval.p[ 0 ][ i ];
    \n+
    237 anz[ i ] = interval.n[ i ];
    \n+
    238 }
    \n+
    239
    \n+
    240 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation Transformation;
    \n+
    241 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );
    \n+
    242 std::bitset< dim > per;
    \n+
    243 const int numTrafos = trafoBlock.numTransformations();
    \n+
    244 for( int k = 0; k < numTrafos; ++k )
    \n+
    245 {
    \n+
    246 const Transformation &trafo = trafoBlock.transformation( k );
    \n+
    247
    \n+
    248 bool identity = true;
    \n+
    249 for( int i = 0; i < dim; ++i )
    \n+
    250 for( int j = 0; j < dim; ++j )
    \n+
    251 identity &= (abs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);
    \n+
    252 if( !identity )
    \n+
    253 DUNE_THROW( DGFException, "YaspGrid can only handle shifts as periodic face transformations." );
    \n+
    254
    \n+
    255 int numDirs = 0;
    \n+
    256 int dir = -1;
    \n+
    257 for( int i = 0; i < dim; ++i )
    \n+
    258 {
    \n+
    259 if( abs( trafo.shift[ i ] ) < 1e-10 )
    \n+
    260 continue;
    \n+
    261 dir = i;
    \n+
    262 ++numDirs;
    \n+
    263 }
    \n+
    264 if( (numDirs != 1) || (abs( abs( trafo.shift[ dir ] ) - lang[ dir ] ) >= 1e-10) )
    \n+
    265 {
    \n+
    266 std::cerr << "Tranformation '" << trafo
    \n+
    267 << "' does not map boundaries on boundaries." << std::endl;
    \n+
    268 }
    \n+
    269 else
    \n+
    270 per[ dir ] = true;
    \n+
    271 }
    \n+
    272
    \n+
    273 // get grid parameters
    \n+
    274 dgf::YaspGridParameterBlock grdParam( gridin );
    \n+
    275
    \n+
    276 grid_ = new YaspGrid< dim , EquidistantCoordinates<ctype, dim> >( lang, anz, per, grdParam.overlap(), comm );
    \n+
    277
    \n+
    278 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );
    \n+
    279 }
    \n+
    280
    \n+
    284 template <typename ctype, int dim>
    \n+
    \n+\n+
    286 {
    \n+\n+
    288 const static int dimension = Grid::dimension;
    \n+
    289 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n+
    290
    \n+
    291 private:
    \n+
    292 typedef FieldVector< ctype, dimension > Point;
    \n+\n+
    294
    \n+
    295 public:
    \n+
    \n+
    296 explicit DGFGridFactory ( std::istream &input,
    \n+
    297 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    298 {
    \n+
    299 generate( input, comm );
    \n+
    300 }
    \n+
    \n+
    301
    \n+
    \n+
    302 explicit DGFGridFactory ( const std::string &filename,
    \n+
    303 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    304 {
    \n+
    305 std::ifstream input( filename.c_str() );
    \n+
    306 generate( input, comm );
    \n+
    307 }
    \n+
    \n+
    308
    \n+
    \n+\n+
    310 {
    \n+
    311 delete boundaryDomainBlock_;
    \n+
    312 }
    \n+
    \n+
    313
    \n+
    \n+
    314 Grid *grid() const
    \n+
    315 {
    \n+
    316 return grid_;
    \n+
    317 }
    \n+
    \n+
    318
    \n+
    319 template <class Intersection>
    \n+
    \n+
    320 bool wasInserted(const Intersection &intersection) const
    \n+
    321 {
    \n+
    322 return false;
    \n+
    323 }
    \n+
    \n+
    324
    \n+
    325 template <class Intersection>
    \n+
    \n+
    326 int boundaryId(const Intersection &intersection) const
    \n+
    327 {
    \n+
    328 if( boundaryDomainBlock_->isactive() )
    \n+
    329 {
    \n+
    330 std::vector< Point > corners;
    \n+
    331 getCorners( intersection.geometry(), corners );
    \n+
    332 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n+
    333 if( data )
    \n+
    334 return data->id();
    \n+
    335 else
    \n+
    336 return intersection.indexInInside();
    \n+
    337 }
    \n+
    338 else
    \n+
    339 return intersection.indexInInside();
    \n+
    340 }
    \n+
    \n+
    341
    \n+
    342 template< int codim >
    \n+
    \n+
    343 int numParameters () const
    \n+
    344 {
    \n+
    345 return 0;
    \n+
    346 }
    \n+
    \n+
    347
    \n+
    348 // return true if boundary parameters found
    \n+
    \n+\n+
    350 {
    \n+
    351 return boundaryDomainBlock_->hasParameter();
    \n+
    352 }
    \n+
    \n+
    353
    \n+
    354 template< class GG, class II >
    \n+
    355 const typename DGFBoundaryParameter::type &
    \n+
    \n+
    356 boundaryParameter ( const Intersection< GG, II > & intersection ) const
    \n+
    357 {
    \n+\n+
    359 {
    \n+
    360 std::vector< Point > corners;
    \n+
    361 getCorners( intersection.geometry(), corners );
    \n+
    362 const dgf::DomainData *data = boundaryDomainBlock_->contains( corners );
    \n+
    363 if( data )
    \n+
    364 return data->parameter();
    \n+
    365 else
    \n+\n+
    367 }
    \n+
    368 else
    \n+\n+
    370 }
    \n+
    \n+
    371
    \n+
    372 template< class Entity >
    \n+
    \n+
    373 std::vector<double> &parameter ( [[maybe_unused]] const Entity &entity )
    \n+
    374 {
    \n+
    375 return emptyParam;
    \n+
    376 }
    \n+
    \n+
    377
    \n+
    378 private:
    \n+
    379 void generate( std::istream &gridin, MPICommunicatorType comm );
    \n+
    380
    \n+
    381 template< class Geometry >
    \n+
    382 static void getCorners ( const Geometry &geometry, std::vector< Point > &corners )
    \n+
    383 {
    \n+
    384 corners.resize( geometry.corners() );
    \n+
    385 for( int i = 0; i < geometry.corners(); ++i )
    \n+
    386 {
    \n+
    387 const typename Geometry::GlobalCoordinate corner = geometry.corner( i );
    \n+
    388 for( int j = 0; j < dimension; ++j )
    \n+
    389 corners[ i ][ j ] = corner[ j ];
    \n+
    390 }
    \n+
    391 }
    \n+
    392
    \n+
    393 Grid *grid_;
    \n+
    394 dgf::BoundaryDomBlock *boundaryDomainBlock_;
    \n+
    395 std::vector<double> emptyParam;
    \n+
    396 };
    \n+
    \n+
    397
    \n+
    398 // generate YaspGrid from the provided DGF
    \n+
    399 template< typename ctype, int dim >
    \n+
    400 inline void DGFGridFactory< YaspGrid<dim, EquidistantOffsetCoordinates<ctype, dim> > >
    \n+
    401 ::generate ( std::istream &gridin, MPICommunicatorType comm )
    \n+
    402 {
    \n+
    403 using std::abs;
    \n+
    404 dgf::IntervalBlock intervalBlock( gridin );
    \n+
    405
    \n+
    406 if( !intervalBlock.isactive() )
    \n+
    407 DUNE_THROW( DGFException, "YaspGrid can only be created from an interval block." );
    \n+
    408
    \n+
    409 if( intervalBlock.numIntervals() != 1 )
    \n+
    410 DUNE_THROW( DGFException, "YaspGrid can only handle 1 interval block." );
    \n+
    411
    \n+
    412 if( intervalBlock.dimw() != dim )
    \n+
    413 {
    \n+
    414 DUNE_THROW( DGFException,
    \n+
    415 "Cannot read an interval of dimension "
    \n+
    416 << intervalBlock.dimw()
    \n+
    417 << " into a YaspGrid< " << dim << " >." );
    \n+
    418 }
    \n+
    419
    \n+
    420 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );
    \n+
    421
    \n+
    422 FieldVector<ctype, dim> lower;
    \n+
    423 FieldVector<ctype, dim> upper;
    \n+
    424 std::array<int,dim> anz;
    \n+
    425 for( int i = 0; i < dim; ++i )
    \n+
    426 {
    \n+
    427 lower[ i ] = interval.p[ 0 ][ i ];
    \n+
    428 upper[ i ] = interval.p[ 1 ][ i ];
    \n+
    429 anz[ i ] = interval.n[ i ];
    \n+
    430 }
    \n+
    431
    \n+
    432 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation Transformation;
    \n+
    433 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );
    \n+
    434 std::bitset< dim > periodic;
    \n+
    435 const int numTrafos = trafoBlock.numTransformations();
    \n+
    436 for( int k = 0; k < numTrafos; ++k )
    \n+
    437 {
    \n+
    438 const Transformation &trafo = trafoBlock.transformation( k );
    \n+
    439
    \n+
    440 bool identity = true;
    \n+
    441 for( int i = 0; i < dim; ++i )
    \n+
    442 for( int j = 0; j < dim; ++j )
    \n+
    443 identity &= (abs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);
    \n+
    444 if( !identity )
    \n+
    445 DUNE_THROW( DGFException, "YaspGrid can only handle shifts as periodic face transformations." );
    \n+
    446
    \n+
    447 int numDirs = 0;
    \n+
    448 int dir = -1;
    \n+
    449 for( int currentDir = 0; currentDir < dim; ++currentDir )
    \n+
    450 {
    \n+
    451 if( abs( trafo.shift[ currentDir ] ) > 1e-10 )
    \n+
    452 {
    \n+
    453 dir = currentDir;
    \n+
    454 ++numDirs;
    \n+
    455 }
    \n+
    456 }
    \n+
    457 if ( (numDirs != 1)
    \n+
    458 || (abs( abs( trafo.shift[ dir ] ) - abs( upper[ dir ] - lower[ dir ] ) ) >= 1e-10) )
    \n+
    459 {
    \n+
    460 std::cerr << "Tranformation '" << trafo
    \n+
    461 << "' does not map boundaries on boundaries." << std::endl;
    \n+
    462 }
    \n+
    463 else
    \n+
    464 {
    \n+
    465 periodic[ dir ] = true;
    \n+
    466 }
    \n+
    467 }
    \n+
    468
    \n+
    469 // get grid parameters
    \n+
    470 dgf::YaspGridParameterBlock grdParam( gridin );
    \n+
    471
    \n+
    472 grid_ = new YaspGrid< dim, EquidistantOffsetCoordinates<ctype, dim> >
    \n+
    473 ( lower, upper, anz, periodic, grdParam.overlap(), comm );
    \n+
    474
    \n+
    475 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );
    \n+
    476 }
    \n+
    477
    \n+
    483 template< class ctype, int dim >
    \n+
    \n+
    484 class DGFGridFactory< Dune::YaspGrid<dim, Dune::TensorProductCoordinates<ctype, dim> > >
    \n+
    485 {
    \n+\n+
    487 public:
    \n+
    488 template< typename In >
    \n+
    489 DGFGridFactory ( const In & ) {}
    \n+
    \n+\n+
    491 {
    \n+
    492 throw std::invalid_argument( "Tensor product coordinates for YaspGrid are currently not supported via the DGFGridFactory" );
    \n+
    493 }
    \n+
    \n+
    494 };
    \n+
    \n+
    495
    \n+
    496 template <typename Coordinates, int dim>
    \n+
    \n+
    497 struct DGFGridInfo< YaspGrid<dim , Coordinates> > {
    \n+
    498 static int refineStepsForHalf() {return 1;}
    \n+
    499 static double refineWeight() {return std::pow(0.5,dim);}
    \n+
    500 };
    \n+
    \n+
    501
    \n+
    502}
    \n+
    503#endif // #ifndef DUNE_DGFPARSERYASP_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n-
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n-
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n-
    std::string toString(Precision p)
    map precision to VTK type name
    Definition common.hh:280
    \n-
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n-
    ~PVTUWriter()
    write footer
    Definition pvtuwriter.hh:102
    \n-
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition pvtuwriter.hh:195
    \n-
    void endCellData()
    finish CellData section
    Definition pvtuwriter.hh:155
    \n-
    void addArray(const std::string &name, unsigned ncomps, Precision prec)
    Add an array to the output file.
    Definition pvtuwriter.hh:207
    \n-
    void beginMain(unsigned ghostLevel=0)
    start the main PPolyData/PUnstructuredGrid section
    Definition pvtuwriter.hh:189
    \n-
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition pvtuwriter.hh:146
    \n-
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition pvtuwriter.hh:120
    \n-
    void addPiece(const std::string &filename)
    Add a serial piece to the output file.
    Definition pvtuwriter.hh:215
    \n-
    PVTUWriter(std::ostream &stream_, FileType fileType_)
    create a PVTUWriter object
    Definition pvtuwriter.hh:78
    \n-
    void endPointData()
    finish PointData section
    Definition pvtuwriter.hh:129
    \n-
    void endPoints()
    finish section for the point coordinates
    Definition pvtuwriter.hh:171
    \n-
    void beginPoints()
    start section for the point coordinates
    Definition pvtuwriter.hh:166
    \n+
    void abs(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:328
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfgridfactory.hh:41
    \n+
    G Grid
    Definition dgfgridfactory.hh:39
    \n+
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n+
    bool haveBoundaryParameters() const
    Definition dgfgridfactory.hh:151
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    Geometry geometry() const
    geometrical information about the intersection in global coordinates.
    Definition common/intersection.hh:323
    \n+
    int indexInInside() const
    Local index of codim 1 entity in the inside() entity where intersection is contained in.
    Definition common/intersection.hh:346
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    Wrapper class for geometries.
    Definition common/geometry.hh:71
    \n+
    FieldVector< ctype, cdim > GlobalCoordinate
    type of the global coordinates
    Definition common/geometry.hh:106
    \n+
    GlobalCoordinate corner(int i) const
    Obtain a corner of the geometry.
    Definition common/geometry.hh:219
    \n+
    int corners() const
    Return the number of corners of the reference element.
    Definition common/geometry.hh:205
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    bool findtoken(std ::string token)
    Definition basic.cc:123
    \n+
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n+
    Definition boundarydom.hh:23
    \n+
    int id() const
    Definition boundarydom.hh:42
    \n+
    const BoundaryParameter & parameter() const
    Definition boundarydom.hh:54
    \n+
    Definition boundarydom.hh:195
    \n+
    Common Grid parameters.
    Definition gridparameter.hh:35
    \n+
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n+
    Grid parameters for YaspGrid.
    Definition dgfyasp.hh:40
    \n+
    int _overlap
    Definition dgfyasp.hh:42
    \n+
    YaspGridParameterBlock(std::istream &in)
    constructor taking istream
    Definition dgfyasp.hh:46
    \n+
    int overlap() const
    get dimension of world found in block
    Definition dgfyasp.hh:74
    \n+
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:98
    \n+
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:104
    \n+
    bool wasInserted(const Intersection &intersection) const
    Definition dgfyasp.hh:124
    \n+\n+
    std::vector< double > & parameter(const Entity &)
    Definition dgfyasp.hh:177
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfyasp.hh:91
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfyasp.hh:160
    \n+\n+\n+\n+
    YaspGrid< dim, EquidistantCoordinates< ctype, dim > > Grid
    Definition dgfyasp.hh:89
    \n+
    int boundaryId(const Intersection &intersection) const
    Definition dgfyasp.hh:130
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfyasp.hh:356
    \n+
    DGFGridFactory(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:302
    \n+\n+
    int boundaryId(const Intersection &intersection) const
    Definition dgfyasp.hh:326
    \n+
    YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > Grid
    Definition dgfyasp.hh:287
    \n+
    bool wasInserted(const Intersection &intersection) const
    Definition dgfyasp.hh:320
    \n+
    std::vector< double > & parameter(const Entity &entity)
    Definition dgfyasp.hh:373
    \n+\n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition dgfyasp.hh:289
    \n+
    DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    Definition dgfyasp.hh:296
    \n+\n+\n+\n+\n+
    static double refineWeight()
    Definition dgfyasp.hh:499
    \n+
    static int refineStepsForHalf()
    Definition dgfyasp.hh:498
    \n+
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n+
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n+
    Container for equidistant coordinates in a YaspGrid.
    Definition coordinates.hh:29
    \n+
    Container for equidistant coordinates in a YaspGrid with non-trivial origin.
    Definition coordinates.hh:131
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,224 +2,739 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-pvtuwriter.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+dgfyasp.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_DGFPARSERYASP_HH\n+6#define DUNE_DGFPARSERYASP_HH\n+7\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+10#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\"\n 11\n-12#include \n-13#include \n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be {\n-18\n+15 // External Forward Declarations\n+16 // -----------------------------\n+17\n+18 template< class GridImp, class IntersectionImp >\n+19 class Intersection;\n+20\n 21\n-22 namespace VTK {\n-23\n-25\n-_\b6_\b2 class _\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br {\n-63 std::ostream& stream;\n-64\n-65 std::string fileType;\n-66\n-67 Indent indent;\n-68\n-69 public:\n-71\n-_\b7_\b8 inline _\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br(std::ostream& stream_, _\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType_)\n-79 : stream(stream_)\n-80 {\n-81 switch(fileType_) {\n-82 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba :\n-83 fileType = \"PPolyData\";\n-84 break;\n-85 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd :\n-86 fileType = \"PUnstructuredGrid\";\n-87 break;\n-88 default :\n-89 DUNE_THROW(IOError, \"PVTUWriter: Unknown fileType: \" << fileType_);\n-90 }\n-91 const std::string& byteOrder = _\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg();\n+22 namespace dgf\n+23 {\n+24\n+_\b3_\b8 class _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+39 : public _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+40 {\n+41 protected:\n+_\b4_\b2 int _\b__\bo_\bv_\be_\br_\bl_\ba_\bp; // overlap for YaspGrid\n+43\n+44 public:\n+_\b4_\b6 _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk( std::istream &in )\n+47 : _\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk( in ),\n+48 _\b__\bo_\bv_\be_\br_\bl_\ba_\bp( 0 ) // default value\n+49 {\n+50 // check overlap\n+51 if( _\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn( \"overlap\" ) )\n+52 {\n+53 int x;\n+54 if( _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by(x) ) _\b__\bo_\bv_\be_\br_\bl_\ba_\bp = x;\n+55 else\n+56 {\n+57 dwarn << \"GridParameterBlock: found keyword `overlap' but no value,\n+defaulting to `\" << _\b__\bo_\bv_\be_\br_\bl_\ba_\bp <<\"' !\\n\";\n+58 }\n+59\n+60 if (_\b__\bo_\bv_\be_\br_\bl_\ba_\bp < 0)\n+61 {\n+62 DUNE_THROW(_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn,\"Negative overlap specified!\");\n+63 }\n+64 }\n+65 else\n+66 {\n+67 dwarn << \"YaspGridParameterBlock: Parameter 'overlap' not specified, \"\n+68 << \"defaulting to '\" << _\b__\bo_\bv_\be_\br_\bl_\ba_\bp << \"'.\" << std::endl;\n+69 }\n+70\n+71 }\n+72\n+_\b7_\b4 int _\bo_\bv_\be_\br_\bl_\ba_\bp () const\n+75 {\n+76 return _\b__\bo_\bv_\be_\br_\bl_\ba_\bp;\n+77 }\n+78\n+79 };\n+80\n+81 }\n+82\n+86 template \n+_\b8_\b7 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n+88 {\n+_\b8_\b9 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd;\n+_\b9_\b0 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b9_\b1 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n 92\n-93 stream << indent << \"\\n\";\n-94 stream << indent << \"\\n\";\n-98 ++indent;\n-99 }\n-100\n-_\b1_\b0_\b2 inline _\b~_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br() {\n-103 --indent;\n-104 stream << indent << \"\\n\"\n-105 << std::flush;\n-106 }\n-107\n-109\n-_\b1_\b2_\b0 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n-121 const std::string& vectors = \"\") {\n-122 stream << indent << \"\\n\";\n-126 ++indent;\n+93 private:\n+94 typedef FieldVector< ctype, dimension > Point;\n+95 typedef _\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\ba_\bi_\bn_\bB_\bl_\bo_\bc_\bk;\n+96\n+97 public:\n+_\b9_\b8 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n+99 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+100 {\n+101 generate( input, comm );\n+102 }\n+103\n+_\b1_\b0_\b4 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n+105 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+106 {\n+107 std::ifstream input( filename.c_str() );\n+108 if( !input )\n+109 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Error: Macrofile '\" << filename << \"' not found\"\n+);\n+110 generate( input, comm );\n+111 }\n+112\n+_\b1_\b1_\b3 _\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ()\n+114 {\n+115 delete boundaryDomainBlock_;\n+116 }\n+117\n+_\b1_\b1_\b8 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd() const\n+119 {\n+120 return grid_;\n+121 }\n+122\n+123 template \n+_\b1_\b2_\b4 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n+125 {\n+126 return false;\n 127 }\n-_\b1_\b2_\b9 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba() {\n-130 --indent;\n-131 stream << indent << \"\\n\";\n-132 }\n-133\n-135\n-_\b1_\b4_\b6 inline void _\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::string& scalars = \"\",\n-147 const std::string& vectors = \"\") {\n-148 stream << indent << \"\\n\";\n-152 ++indent;\n-153 }\n-_\b1_\b5_\b5 inline void _\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba() {\n-156 --indent;\n-157 stream << indent << \"\\n\";\n-158 }\n-159\n-161\n-_\b1_\b6_\b6 inline void _\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs() {\n-167 stream << indent << \"\\n\";\n-168 ++indent;\n-169 }\n-_\b1_\b7_\b1 inline void _\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs() {\n-172 --indent;\n-173 stream << indent << \"\\n\";\n+128\n+129 template \n+_\b1_\b3_\b0 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n+131 {\n+132 if( boundaryDomainBlock_->isactive() )\n+133 {\n+134 std::vector< Point > corners;\n+135 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n+136 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n+137 if( data )\n+138 return data->_\bi_\bd();\n+139 else\n+140 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n+141 }\n+142 else\n+143 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n+144 }\n+145\n+146 template< int codim >\n+_\b1_\b4_\b7 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+148 {\n+149 return 0;\n+150 }\n+151\n+152 // return true if boundary parameters found\n+_\b1_\b5_\b3 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+154 {\n+155 return boundaryDomainBlock_->hasParameter();\n+156 }\n+157\n+158 template< class GG, class II >\n+159 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n+_\b1_\b6_\b0 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection ) const\n+161 {\n+162 if( _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs() )\n+163 {\n+164 std::vector< Point > corners;\n+165 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n+166 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n+167 if( data )\n+168 return data->_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br();\n+169 else\n+170 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+171 }\n+172 else\n+173 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n 174 }\n 175\n-177\n-_\b1_\b8_\b9 inline void _\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn(unsigned ghostLevel = 0) {\n-190 stream << indent << \"<\" << fileType\n-191 << \" GhostLevel=\\\"\" << ghostLevel << \"\\\">\\n\";\n-192 ++indent;\n-193 }\n-_\b1_\b9_\b5 inline void _\be_\bn_\bd_\bM_\ba_\bi_\bn() {\n-196 --indent;\n-197 stream << indent << \"\\n\";\n-198 }\n-199\n+176 template< class Entity >\n+_\b1_\b7_\b7 std::vector &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bE_\bn_\bt_\bi_\bt_\by & )\n+178 {\n+179 return emptyParam;\n+180 }\n+181\n+182 private:\n+183 void generate( std::istream &gridin, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm );\n+184\n+185 template< class Geometry >\n+186 static void getCorners ( const _\bG_\be_\bo_\bm_\be_\bt_\br_\by &geometry, std::vector< Point >\n+&corners )\n+187 {\n+188 corners.resize( geometry._\bc_\bo_\br_\bn_\be_\br_\bs() );\n+189 for( int i = 0; i < geometry._\bc_\bo_\br_\bn_\be_\br_\bs(); ++i )\n+190 {\n+191 const typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be corner = geometry._\bc_\bo_\br_\bn_\be_\br( i );\n+192 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n+193 corners[ i ][ j ] = corner[ j ];\n+194 }\n+195 }\n+196\n+197 _\bG_\br_\bi_\bd *grid_;\n+198 dgf::BoundaryDomBlock *boundaryDomainBlock_;\n+199 std::vector emptyParam;\n+200 };\n 201\n-_\b2_\b0_\b7 void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(const std::string& name, unsigned ncomps, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec) {\n-208 stream << indent << \"\\n\";\n-212 }\n-213\n-_\b2_\b1_\b5 inline void _\ba_\bd_\bd_\bP_\bi_\be_\bc_\be(const std::string& filename) {\n-216 stream << indent << \"\\n\";\n-218 }\n-219 };\n-220\n-221 } // namespace VTK\n+202 // generate YaspGrid from the provided DGF\n+203 template< typename ctype, int dim >\n+204 inline void DGFGridFactory< YaspGrid< dim , EquidistantCoordinates > >\n+205 ::generate ( std::istream &gridin, MPICommunicatorType comm )\n+206 {\n+207 using std::abs;\n+208 dgf::IntervalBlock intervalBlock( gridin );\n+209\n+210 if( !intervalBlock.isactive() )\n+211 DUNE_THROW( DGFException, \"YaspGrid can only be created from an interval\n+block.\" );\n+212\n+213 if( intervalBlock.numIntervals() != 1 )\n+214 DUNE_THROW( DGFException, \"YaspGrid can only handle 1 interval block.\" );\n+215\n+216 if( intervalBlock.dimw() != dim )\n+217 {\n+218 DUNE_THROW( DGFException,\n+219 \"Cannot read an interval of dimension \" << intervalBlock.dimw()\n+220 << \" into a YaspGrid< \" << dim << \" >.\" );\n+221 }\n 222\n+223 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );\n 224\n-225} // namespace Dune\n-226\n-227#endif // DUNE_GRID_IO_FILE_VTK_PVTUWRITER_HH\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n+225 FieldVector lang;\n+226 std::array anz;\n+227 for( int i = 0; i < dim; ++i )\n+228 {\n+229 // check that start point is 0.0\n+230 if( _\ba_\bb_\bs( interval.p[ 0 ][ i ] ) > 1e-10 )\n+231 {\n+232 DUNE_THROW( DGFException,\n+233 \"YaspGrid cannot handle grids with non-zero left lower corner.\" );\n+234 }\n+235\n+236 lang[ i ] = interval.p[ 1 ][ i ] - interval.p[ 0 ][ i ];\n+237 anz[ i ] = interval.n[ i ];\n+238 }\n+239\n+240 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation\n+Transformation;\n+241 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );\n+242 std::bitset< dim > per;\n+243 const int numTrafos = trafoBlock.numTransformations();\n+244 for( int k = 0; k < numTrafos; ++k )\n+245 {\n+246 const Transformation &trafo = trafoBlock.transformation( k );\n+247\n+248 bool identity = true;\n+249 for( int i = 0; i < dim; ++i )\n+250 for( int j = 0; j < dim; ++j )\n+251 identity &= (_\ba_\bb_\bs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);\n+252 if( !identity )\n+253 DUNE_THROW( DGFException, \"YaspGrid can only handle shifts as periodic face\n+transformations.\" );\n+254\n+255 int numDirs = 0;\n+256 int dir = -1;\n+257 for( int i = 0; i < dim; ++i )\n+258 {\n+259 if( _\ba_\bb_\bs( trafo.shift[ i ] ) < 1e-10 )\n+260 continue;\n+261 dir = i;\n+262 ++numDirs;\n+263 }\n+264 if( (numDirs != 1) || (_\ba_\bb_\bs( _\ba_\bb_\bs( trafo.shift[ dir ] ) - lang[ dir ] ) >=\n+1e-10) )\n+265 {\n+266 std::cerr << \"Tranformation '\" << trafo\n+267 << \"' does not map boundaries on boundaries.\" << std::endl;\n+268 }\n+269 else\n+270 per[ dir ] = true;\n+271 }\n+272\n+273 // get grid parameters\n+274 dgf::YaspGridParameterBlock grdParam( gridin );\n+275\n+276 grid_ = new YaspGrid< dim , EquidistantCoordinates >( lang,\n+anz, per, grdParam.overlap(), comm );\n+277\n+278 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );\n+279 }\n+280\n+284 template \n+_\b2_\b8_\b5 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n+286 {\n+_\b2_\b8_\b7 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd;\n+_\b2_\b8_\b8 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b2_\b8_\b9 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n+290\n+291 private:\n+292 typedef FieldVector< ctype, dimension > Point;\n+293 typedef _\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\ba_\bi_\bn_\bB_\bl_\bo_\bc_\bk;\n+294\n+295 public:\n+_\b2_\b9_\b6 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n+297 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+298 {\n+299 generate( input, comm );\n+300 }\n+301\n+_\b3_\b0_\b2 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n+303 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+304 {\n+305 std::ifstream input( filename.c_str() );\n+306 generate( input, comm );\n+307 }\n+308\n+_\b3_\b0_\b9 _\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ()\n+310 {\n+311 delete boundaryDomainBlock_;\n+312 }\n+313\n+_\b3_\b1_\b4 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd() const\n+315 {\n+316 return grid_;\n+317 }\n+318\n+319 template \n+_\b3_\b2_\b0 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n+321 {\n+322 return false;\n+323 }\n+324\n+325 template \n+_\b3_\b2_\b6 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd(const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection) const\n+327 {\n+328 if( boundaryDomainBlock_->isactive() )\n+329 {\n+330 std::vector< Point > corners;\n+331 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n+332 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n+333 if( data )\n+334 return data->_\bi_\bd();\n+335 else\n+336 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n+337 }\n+338 else\n+339 return intersection._\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be();\n+340 }\n+341\n+342 template< int codim >\n+_\b3_\b4_\b3 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+344 {\n+345 return 0;\n+346 }\n+347\n+348 // return true if boundary parameters found\n+_\b3_\b4_\b9 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+350 {\n+351 return boundaryDomainBlock_->hasParameter();\n+352 }\n+353\n+354 template< class GG, class II >\n+355 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n+_\b3_\b5_\b6 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection ) const\n+357 {\n+358 if( _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs() )\n+359 {\n+360 std::vector< Point > corners;\n+361 getCorners( intersection._\bg_\be_\bo_\bm_\be_\bt_\br_\by(), corners );\n+362 const _\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba *data = boundaryDomainBlock_->contains( corners );\n+363 if( data )\n+364 return data->_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br();\n+365 else\n+366 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+367 }\n+368 else\n+369 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+370 }\n+371\n+372 template< class Entity >\n+_\b3_\b7_\b3 std::vector &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( [[maybe_unused]] const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+374 {\n+375 return emptyParam;\n+376 }\n+377\n+378 private:\n+379 void generate( std::istream &gridin, _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm );\n+380\n+381 template< class Geometry >\n+382 static void getCorners ( const _\bG_\be_\bo_\bm_\be_\bt_\br_\by &geometry, std::vector< Point >\n+&corners )\n+383 {\n+384 corners.resize( geometry._\bc_\bo_\br_\bn_\be_\br_\bs() );\n+385 for( int i = 0; i < geometry._\bc_\bo_\br_\bn_\be_\br_\bs(); ++i )\n+386 {\n+387 const typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be corner = geometry._\bc_\bo_\br_\bn_\be_\br( i );\n+388 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n+389 corners[ i ][ j ] = corner[ j ];\n+390 }\n+391 }\n+392\n+393 _\bG_\br_\bi_\bd *grid_;\n+394 dgf::BoundaryDomBlock *boundaryDomainBlock_;\n+395 std::vector emptyParam;\n+396 };\n+397\n+398 // generate YaspGrid from the provided DGF\n+399 template< typename ctype, int dim >\n+400 inline void DGFGridFactory< YaspGrid > >\n+401 ::generate ( std::istream &gridin, MPICommunicatorType comm )\n+402 {\n+403 using std::abs;\n+404 dgf::IntervalBlock intervalBlock( gridin );\n+405\n+406 if( !intervalBlock.isactive() )\n+407 DUNE_THROW( DGFException, \"YaspGrid can only be created from an interval\n+block.\" );\n+408\n+409 if( intervalBlock.numIntervals() != 1 )\n+410 DUNE_THROW( DGFException, \"YaspGrid can only handle 1 interval block.\" );\n+411\n+412 if( intervalBlock.dimw() != dim )\n+413 {\n+414 DUNE_THROW( DGFException,\n+415 \"Cannot read an interval of dimension \"\n+416 << intervalBlock.dimw()\n+417 << \" into a YaspGrid< \" << dim << \" >.\" );\n+418 }\n+419\n+420 const dgf::IntervalBlock::Interval &interval = intervalBlock.get( 0 );\n+421\n+422 FieldVector lower;\n+423 FieldVector upper;\n+424 std::array anz;\n+425 for( int i = 0; i < dim; ++i )\n+426 {\n+427 lower[ i ] = interval.p[ 0 ][ i ];\n+428 upper[ i ] = interval.p[ 1 ][ i ];\n+429 anz[ i ] = interval.n[ i ];\n+430 }\n+431\n+432 typedef dgf::PeriodicFaceTransformationBlock::AffineTransformation\n+Transformation;\n+433 dgf::PeriodicFaceTransformationBlock trafoBlock( gridin, dim );\n+434 std::bitset< dim > periodic;\n+435 const int numTrafos = trafoBlock.numTransformations();\n+436 for( int k = 0; k < numTrafos; ++k )\n+437 {\n+438 const Transformation &trafo = trafoBlock.transformation( k );\n+439\n+440 bool identity = true;\n+441 for( int i = 0; i < dim; ++i )\n+442 for( int j = 0; j < dim; ++j )\n+443 identity &= (_\ba_\bb_\bs( (i == j ? 1.0 : 0.0) - trafo.matrix( i, j ) ) < 1e-10);\n+444 if( !identity )\n+445 DUNE_THROW( DGFException, \"YaspGrid can only handle shifts as periodic face\n+transformations.\" );\n+446\n+447 int numDirs = 0;\n+448 int dir = -1;\n+449 for( int currentDir = 0; currentDir < dim; ++currentDir )\n+450 {\n+451 if( _\ba_\bb_\bs( trafo.shift[ currentDir ] ) > 1e-10 )\n+452 {\n+453 dir = currentDir;\n+454 ++numDirs;\n+455 }\n+456 }\n+457 if ( (numDirs != 1)\n+458 || (_\ba_\bb_\bs( _\ba_\bb_\bs( trafo.shift[ dir ] ) - _\ba_\bb_\bs( upper[ dir ] - lower[ dir ] ) )\n+>= 1e-10) )\n+459 {\n+460 std::cerr << \"Tranformation '\" << trafo\n+461 << \"' does not map boundaries on boundaries.\" << std::endl;\n+462 }\n+463 else\n+464 {\n+465 periodic[ dir ] = true;\n+466 }\n+467 }\n+468\n+469 // get grid parameters\n+470 dgf::YaspGridParameterBlock grdParam( gridin );\n+471\n+472 grid_ = new YaspGrid< dim, EquidistantOffsetCoordinates >\n+473 ( lower, upper, anz, periodic, grdParam.overlap(), comm );\n+474\n+475 boundaryDomainBlock_ = new dgf::BoundaryDomBlock( gridin, dimension );\n+476 }\n+477\n+483 template< class ctype, int dim >\n+_\b4_\b8_\b4 class _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bD_\bu_\bn_\be::_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n+485 {\n+486 using _\bG_\br_\bi_\bd = _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b>\n+>;\n+487 public:\n+488 template< typename In >\n+_\b4_\b8_\b9 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const In & ) {}\n+_\b4_\b9_\b0 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd()\n+491 {\n+492 throw std::invalid_argument( \"Tensor product coordinates for YaspGrid are\n+currently not supported via the DGFGridFactory\" );\n+493 }\n+494 };\n+495\n+496 template \n+_\b4_\b9_\b7 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > {\n+_\b4_\b9_\b8 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf() {return 1;}\n+_\b4_\b9_\b9 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt() {return std::pow(0.5,dim);}\n+500 };\n+501\n+502}\n+503#endif // #ifndef DUNE_DGFPARSERYASP_HH\n+_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n-FileType\n-which type of VTK file to write\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n-@ polyData\n-for .vtp files (PolyData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n-@ unstructuredGrid\n-for .vtu files (UnstructuredGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg\n-std::string toString(Precision p)\n-map precision to VTK type name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:280\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n-std::string getEndiannessString()\n-determine endianness of this C++ implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-~PVTUWriter()\n-write footer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n-void endMain()\n-finish the main PolyData/UnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void endCellData()\n-finish CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-void addArray(const std::string &name, unsigned ncomps, Precision prec)\n-Add an array to the output file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n-void beginMain(unsigned ghostLevel=0)\n-start the main PPolyData/PUnstructuredGrid section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void beginCellData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void beginPointData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bi_\be_\bc_\be\n-void addPiece(const std::string &filename)\n-Add a serial piece to the output file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:215\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-PVTUWriter(std::ostream &stream_, FileType fileType_)\n-create a PVTUWriter object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void endPointData()\n-finish PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-void endPoints()\n-finish section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-void beginPoints()\n-start section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bb_\bs\n+void abs(const DofVectorPointer< int > &dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:328\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+geometrical information about the intersection in global coordinates.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:323\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bI_\bn_\bI_\bn_\bs_\bi_\bd_\be\n+int indexInInside() const\n+Local index of codim 1 entity in the inside() entity where intersection is\n+contained in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Wrapper class for geometries.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, cdim > GlobalCoordinate\n+type of the global coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bo_\br_\bn_\be_\br\n+GlobalCoordinate corner(int i) const\n+Obtain a corner of the geometry.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bs\n+int corners() const\n+Return the number of corners of the reference element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn\n+bool findtoken(std ::string token)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by\n+bool getnextentry(ENTRY &entry)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bd\n+int id() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bD_\ba_\bt_\ba_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const BoundaryParameter & parameter() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\bo_\bm_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarydom.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+Common Grid parameters.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridparameter.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+exception class for IO errors in the DGF parser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n+Some simple static information for a given GridType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+Grid parameters for YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\b__\bo_\bv_\be_\br_\bl_\ba_\bp\n+int _overlap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk\n+YaspGridParameterBlock(std::istream &in)\n+constructor taking istream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bv_\be_\br_\bl_\ba_\bp\n+int overlap() const\n+get dimension of world found in block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n+getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const std::string &filename, MPICommunicatorType\n+comm=MPIHelper::getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n+bool wasInserted(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Entity &)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n+> &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+~DGFGridFactory()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bg_\br_\bi_\bd\n+Grid * grid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bG_\br_\bi_\bd\n+YaspGrid< dim, EquidistantCoordinates< ctype, dim > > Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n+> &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:356\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const std::string &filename, MPICommunicatorType\n+comm=MPIHelper::getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:302\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n+Grid * grid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n+YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n+bool wasInserted(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Entity &entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:373\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:349\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:289\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::\n+getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:296\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\b~_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+~DGFGridFactory()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:309\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\b>_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:343\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n+_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n+Grid * grid()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:490\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<\n+_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const In &)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:489\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n+static double refineWeight()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:499\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n+static int refineStepsForHalf()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfyasp.hh:498\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n+static const type & defaultValue()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n+[ provides Dune::Grid ]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Container for equidistant coordinates in a YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Container for equidistant coordinates in a YaspGrid with non-trivial origin.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:131\n+_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00947.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00947.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtksequencewriter.hh File Reference\n+dune-grid: gridptr.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,55 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    vtksequencewriter.hh File Reference
    \n+
    gridptr.hh File Reference
    \n
    \n
    \n-
    #include <memory>
    \n-#include <dune/grid/io/file/vtk/vtksequencewriterbase.hh>
    \n-#include <dune/grid/io/file/vtk/vtkwriter.hh>
    \n-#include <dune/grid/io/file/vtk/subsamplingvtkwriter.hh>
    \n+
    #include <cassert>
    \n+#include <cctype>
    \n+#include <array>
    \n+#include <iostream>
    \n+#include <map>
    \n+#include <memory>
    \n+#include <string>
    \n+#include <type_traits>
    \n+#include <vector>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/common/shared_ptr.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/grid/common/intersection.hh>
    \n+#include <dune/grid/common/partitionset.hh>
    \n+#include <dune/grid/common/rangegenerators.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n+#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n+#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+#include <dune/grid/io/file/gmshreader.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::VTKSequenceWriter< GridView >
     Writer for the ouput of grid functions in the vtk format. More...
    struct  Dune::GridPtr< GridType >
     Class for constructing grids from DGF files. More...
     
    class  Dune::GridPtr< GridType >::mygrid_ptr
     
    struct  Dune::GridPtr< GridType >::DataHandle
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,25 +2,45 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vtksequencewriter.hh File Reference\n+gridptr.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\bb_\ba_\bs_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\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:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Writer for the ouput of grid functions in the vtk format. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 Class for constructing grids from DGF files. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00947_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00947_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtksequencewriter.hh Source File\n+dune-grid: gridptr.hh Source File\n \n \n \n \n \n \n \n@@ -70,102 +70,964 @@\n \n \n \n \n \n \n \n
    \n-
    vtksequencewriter.hh
    \n+
    gridptr.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_VTKSEQUENCE_HH
    \n-
    7#define DUNE_VTKSEQUENCE_HH
    \n-
    8
    \n-
    9#include <memory>
    \n+
    5#ifndef DUNE_DGF_GRIDPTR_HH
    \n+
    6#define DUNE_DGF_GRIDPTR_HH
    \n+
    7
    \n+
    8#include <cassert>
    \n+
    9#include <cctype>
    \n
    10
    \n-\n-
    12
    \n-\n-\n-
    15
    \n-
    16namespace Dune {
    \n-
    17
    \n-
    26 template< class GridView >
    \n-
    \n-\n-
    28 public VTKSequenceWriterBase<GridView>
    \n-
    29 {
    \n-
    30 public:
    \n-
    \n-\n-
    43 const std::string& name )
    \n-\n-
    45 name,
    \n-
    46 "",
    \n-
    47 "",
    \n-
    48 vtkWriter->gridView_.comm().rank(),
    \n-
    49 vtkWriter->gridView_.comm().size())
    \n-
    50 {}
    \n-
    \n+
    11#include <array>
    \n+
    12#include <iostream>
    \n+
    13#include <map>
    \n+
    14#include <memory>
    \n+
    15#include <string>
    \n+
    16#include <type_traits>
    \n+
    17#include <vector>
    \n+
    18
    \n+
    19//- Dune includes
    \n+
    20#include <dune/common/parallel/mpihelper.hh>
    \n+
    21#include <dune/common/shared_ptr.hh>
    \n+
    22
    \n+\n+\n+\n+\n+\n+
    28
    \n+\n+\n+\n+
    32
    \n+\n+
    34
    \n+
    35namespace Dune
    \n+
    36{
    \n+
    37
    \n+
    38 // External Forward Declarations
    \n+
    39 // -----------------------------
    \n+
    40
    \n+
    41 template < class G >
    \n+
    42 struct DGFGridFactory;
    \n+
    43
    \n+
    44 template< class GridImp, class IntersectionImp >
    \n+
    45 class Intersection;
    \n+
    46
    \n+
    47
    \n+
    48
    \n+
    49 // GridPtr
    \n+
    50 // -------
    \n
    51
    \n-
    \n-\n-
    70 const std::string& name,
    \n-
    71 const std::string& path,
    \n-
    72 const std::string& extendpath )
    \n-\n-
    74 name,
    \n-
    75 path,
    \n-
    76 extendpath,
    \n-
    77 vtkWriter->gridView_.comm().rank(),
    \n-
    78 vtkWriter->gridView_.comm().size())
    \n-
    79 {}
    \n-
    \n-
    80
    \n-
    \n-
    87 explicit VTKSequenceWriter ( const GridView &gridView,
    \n-
    88 const std::string& name,
    \n-
    89 const std::string& path,
    \n-
    90 const std::string& extendpath,
    \n-\n-
    92 : VTKSequenceWriterBase<GridView>(std::make_shared<VTKWriter<GridView> >(gridView,dm),
    \n-
    93 name,path,extendpath,
    \n-
    94 gridView.comm().rank(), gridView.comm().size())
    \n-
    95 {}
    \n-
    \n-
    96 };
    \n-
    \n-
    97
    \n-
    98} // end namespace Dune
    \n-
    99
    \n-
    100#endif
    \n-\n-
    Provides file i/o for the visualization toolkit.
    \n-
    Provides subsampled file i/o for the visualization toolkit.
    \n-
    STL namespace.
    \n+
    64 template< class GridType >
    \n+
    \n+
    65 struct GridPtr
    \n+
    66 {
    \n+
    \n+
    67 class mygrid_ptr : public std::shared_ptr< GridType >
    \n+
    68 {
    \n+
    69 typedef std::shared_ptr< GridType > base_t ;
    \n+
    70 // empty deleter to avoid deletion on release
    \n+
    71 typedef null_deleter< GridType > emptydeleter_t ;
    \n+
    72
    \n+
    73 void removeObj()
    \n+
    74 {
    \n+
    75 // if use count is only 1 delete object
    \n+
    76 if( use_count() == 1 )
    \n+
    77 {
    \n+
    78 // delete point here, since we use the empty deleter
    \n+
    79 GridType* grd = release();
    \n+
    80 if( grd ) delete grd ;
    \n+
    81 }
    \n+
    82 }
    \n+
    83
    \n+
    84 void assignObj( const mygrid_ptr& other )
    \n+
    85 {
    \n+
    86 removeObj();
    \n+
    87 base_t :: operator = ( other );
    \n+
    88 }
    \n+
    89 public:
    \n+
    90 using base_t :: get ;
    \n+
    91 using base_t :: swap ;
    \n+
    92 using base_t :: use_count ;
    \n+
    93
    \n+
    94 // default constructor
    \n+
    95 mygrid_ptr() : base_t( ( GridType * ) 0, emptydeleter_t() ) {}
    \n+
    96 // copy constructor
    \n+
    97 mygrid_ptr( const mygrid_ptr& other ) : base_t(nullptr) { assignObj( other ); }
    \n+
    98 // constructor taking pointer
    \n+
    99 explicit mygrid_ptr( GridType* grd ) : base_t( grd, emptydeleter_t() ) {}
    \n+
    100
    \n+
    101 // destructor
    \n+
    102 ~mygrid_ptr() { removeObj(); }
    \n+
    103
    \n+
    104 // assigment operator
    \n+
    \n+\n+
    106 {
    \n+
    107 assignObj( other );
    \n+
    108 return *this;
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    111 // release pointer
    \n+
    \n+
    112 GridType* release()
    \n+
    113 {
    \n+
    114 GridType* grd = this->get();
    \n+
    115 base_t ptr(( GridType * ) 0, emptydeleter_t() );
    \n+
    116 this->swap( ptr );
    \n+
    117 return grd ;
    \n+
    118 }
    \n+
    \n+
    119 };
    \n+
    \n+
    120
    \n+
    121 protected:
    \n+
    \n+
    122 std::string getFileExtension( const std::string& filename ) const
    \n+
    123 {
    \n+
    124 // extract file extension
    \n+
    125 auto extpos = filename.find_last_of(".");
    \n+
    126 std::string ext;
    \n+
    127 if( extpos != std::string::npos)
    \n+
    128 ext = filename.substr( extpos + 1 );
    \n+
    129
    \n+
    130 // convert all letters to lower case
    \n+
    131 for( auto& item : ext )
    \n+
    132 item = std::tolower( item );
    \n+
    133 return ext;
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    136 // read gmsh file if dimension world <= 3
    \n+
    \n+
    137 void readGmsh( const std::string& filename, std::integral_constant< bool, true > )
    \n+
    138 {
    \n+
    139 GridFactory<GridType> gridFactory;
    \n+
    140 std::vector<int> boundaryIDs;
    \n+
    141 std::vector<int> elementsIDs;
    \n+
    142 GmshReader<GridType>::read(gridFactory,filename,boundaryIDs,elementsIDs);
    \n+
    143 initialize( gridFactory, boundaryIDs,elementsIDs);
    \n+
    144 }
    \n+
    \n+
    145
    \n+
    146 // if dimension world > 3 throw GridError
    \n+
    \n+
    147 void readGmsh( const std::string& filename, std::integral_constant< bool, false > )
    \n+
    148 {
    \n+
    149 DUNE_THROW(GridError, "GmshReader requires dimWorld <= 3." );
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    152 public:
    \n+
    153
    \n+
    154 typedef MPIHelper::MPICommunicator MPICommunicatorType;
    \n+
    155 static const int dimension = GridType::dimension;
    \n+
    156
    \n+
    \n+
    158 explicit GridPtr ( const std::string &filename,
    \n+
    159 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    160 : gridPtr_(),
    \n+
    161 elParam_(),
    \n+
    162 vtxParam_(),
    \n+
    163 bndParam_(),
    \n+
    164 bndId_(),
    \n+
    165 emptyParam_(),
    \n+
    166 nofElParam_( 0 ),
    \n+
    167 nofVtxParam_( 0 ),
    \n+
    168 haveBndParam_( false )
    \n+
    169 {
    \n+
    170 std::string fileExt = getFileExtension( filename );
    \n+
    171
    \n+
    172 if( fileExt == "dgf" )
    \n+
    173 {
    \n+
    174 DGFGridFactory< GridType > dgfFactory( filename, comm );
    \n+
    175 initialize( dgfFactory );
    \n+
    176 }
    \n+
    177 else if( fileExt == "msh" )
    \n+
    178 {
    \n+
    179 // Gmsh reader only compiles for dimworld <= 3
    \n+
    180 readGmsh( filename, std::integral_constant< bool, GridType::dimensionworld <= 3 > () );
    \n+
    181 }
    \n+
    182 else if( fileExt == "amc" || fileExt == "2d" || fileExt == "3d" )
    \n+
    183 {
    \n+
    184 // TODO: AlbertaReader
    \n+
    185 DUNE_THROW( NotImplemented, "GridPtr: file format '" << fileExt << "' not supported yet!" );
    \n+
    186 }
    \n+
    187 else if( fileExt == "vtu" )
    \n+
    188 {
    \n+
    189 // TODO: vtu/vtk reader
    \n+
    190 DUNE_THROW( NotImplemented, "GridPtr: file format '" << fileExt << "' not supported yet!" );
    \n+
    191 }
    \n+
    192 else
    \n+
    193 {
    \n+
    194 DUNE_THROW( NotImplemented, "GridPtr: file format '" << fileExt << "' not supported yet!" );
    \n+
    195 }
    \n+
    196 }
    \n+
    \n+
    197
    \n+
    \n+
    199 explicit GridPtr ( std::istream &input,
    \n+
    200 MPICommunicatorType comm = MPIHelper::getCommunicator() )
    \n+
    201 : gridPtr_(),
    \n+
    202 elParam_(),
    \n+
    203 vtxParam_(),
    \n+
    204 bndParam_(),
    \n+
    205 bndId_(),
    \n+
    206 emptyParam_(),
    \n+
    207 nofElParam_( 0 ),
    \n+
    208 nofVtxParam_( 0 ),
    \n+
    209 haveBndParam_( false )
    \n+
    210 {
    \n+
    211 // input stream only works for DGF format right now
    \n+
    212 DGFGridFactory< GridType > dgfFactory( input, comm );
    \n+
    213 initialize( dgfFactory );
    \n+
    214 }
    \n+
    \n+
    215
    \n+
    \n+\n+
    218 : gridPtr_(),
    \n+
    219 elParam_(),
    \n+
    220 vtxParam_(),
    \n+
    221 bndParam_(),
    \n+
    222 bndId_(),
    \n+
    223 emptyParam_(),
    \n+
    224 nofElParam_(0),
    \n+
    225 nofVtxParam_(0),
    \n+
    226 haveBndParam_( false )
    \n+
    227 {}
    \n+
    \n+
    228
    \n+
    \n+
    230 explicit GridPtr( GridType *grd )
    \n+
    231 : gridPtr_(grd),
    \n+
    232 elParam_(),
    \n+
    233 vtxParam_(),
    \n+
    234 bndParam_(),
    \n+
    235 bndId_(),
    \n+
    236 emptyParam_(),
    \n+
    237 nofElParam_(0),
    \n+
    238 nofVtxParam_(0),
    \n+
    239 haveBndParam_( false )
    \n+
    240 {}
    \n+
    \n+
    241
    \n+
    243 GridPtr( const GridPtr &org ) = default;
    \n+
    244
    \n+
    \n+\n+
    247 {
    \n+
    248 gridPtr_ = org.gridPtr_;
    \n+
    249 elParam_ = org.elParam_;
    \n+
    250 vtxParam_ = org.vtxParam_;
    \n+
    251 bndParam_ = org.bndParam_;
    \n+
    252 bndId_ = org.bndId_;
    \n+\n+
    254
    \n+\n+\n+\n+
    258 return *this;
    \n+
    259 }
    \n+
    \n+
    260
    \n+
    \n+
    262 GridPtr& operator = (GridType * grd)
    \n+
    263 {
    \n+
    264 gridPtr_ = mygrid_ptr( grd );
    \n+
    265 elParam_.resize(0);
    \n+
    266 vtxParam_.resize(0);
    \n+
    267 bndParam_.resize(0);
    \n+
    268 bndId_.resize(0);
    \n+
    269 emptyParam_.resize(0);
    \n+
    270
    \n+
    271 nofVtxParam_ = 0;
    \n+
    272 nofElParam_ = 0;
    \n+
    273 haveBndParam_ = false;
    \n+
    274 return *this;
    \n+
    275 }
    \n+
    \n+
    276
    \n+
    \n+
    278 GridType& operator*() {
    \n+
    279 return *gridPtr_;
    \n+
    280 }
    \n+
    \n+
    281
    \n+
    \n+
    283 GridType* operator->() {
    \n+
    284 return gridPtr_.operator -> ();
    \n+
    285 }
    \n+
    \n+
    286
    \n+
    \n+
    288 const GridType& operator*() const {
    \n+
    289 return *gridPtr_;
    \n+
    290 }
    \n+
    \n+
    291
    \n+
    \n+
    293 const GridType* operator->() const {
    \n+
    294 return gridPtr_.operator -> ();
    \n+
    295 }
    \n+
    \n+
    296
    \n+
    298 GridType* release () { return gridPtr_.release(); }
    \n+
    299
    \n+
    \n+
    301 int nofParameters(int cdim) const {
    \n+
    302 switch (cdim) {
    \n+
    303 case 0 : return nofElParam_; break;
    \n+
    304 case GridType::dimension : return nofVtxParam_; break;
    \n+
    305 }
    \n+
    306 return 0;
    \n+
    307 }
    \n+
    \n+
    308
    \n+
    310 template <class Entity>
    \n+
    \n+
    311 int nofParameters ( const Entity & ) const
    \n+
    312 {
    \n+
    313 return nofParameters( (int) Entity::codimension );
    \n+
    314 }
    \n+
    \n+
    315
    \n+
    317 template< class GridImp, class IntersectionImp >
    \n+
    \n+\n+
    319 {
    \n+
    320 return parameters( intersection ).size();
    \n+
    321 }
    \n+
    \n+
    322
    \n+
    324 template <class Entity>
    \n+
    \n+
    325 const std::vector< double > &parameters ( const Entity &entity ) const
    \n+
    326 {
    \n+
    327 typedef typename GridType::LevelGridView GridView;
    \n+
    328 GridView gridView = gridPtr_->levelGridView( 0 );
    \n+
    329 switch( (int)Entity::codimension )
    \n+
    330 {
    \n+
    331 case 0 :
    \n+
    332 if( nofElParam_ > 0 )
    \n+
    333 {
    \n+
    334 assert( (unsigned int)gridView.indexSet().index( entity ) < elParam_.size() );
    \n+
    335 return elParam_[ gridView.indexSet().index( entity ) ];
    \n+
    336 }
    \n+
    337 break;
    \n+
    338 case GridType::dimension :
    \n+
    339 if( nofVtxParam_ > 0 )
    \n+
    340 {
    \n+
    341 assert( (unsigned int)gridView.indexSet().index( entity ) < vtxParam_.size() );
    \n+
    342 return vtxParam_[ gridView.indexSet().index( entity ) ];
    \n+
    343 }
    \n+
    344 break;
    \n+
    345 }
    \n+
    346 return emptyParam_;
    \n+
    347 }
    \n+
    \n+
    348
    \n+
    350 template< class GridImp, class IntersectionImp >
    \n+
    \n+\n+
    352 {
    \n+
    353 // if no parameters given return empty vector
    \n+
    354 if ( !haveBndParam_ )
    \n+\n+
    356
    \n+
    357 return bndParam_[ intersection.boundarySegmentIndex() ];
    \n+
    358 }
    \n+
    \n+
    359
    \n+
    \n+\n+
    361 {
    \n+
    362 if( gridPtr_->comm().size() > 1 )
    \n+
    363 {
    \n+
    364 DataHandle dh(*this);
    \n+
    365 gridPtr_->levelGridView( 0 ).communicate( dh.interface(), InteriorBorder_All_Interface,ForwardCommunication );
    \n+
    366 }
    \n+
    367 }
    \n+
    \n+
    368
    \n+
    \n+\n+
    370 {
    \n+
    371 if( gridPtr_->comm().size() > 1 )
    \n+
    372 {
    \n+
    373 DataHandle dh(*this);
    \n+
    374 gridPtr_->loadBalance( dh.interface() );
    \n+
    375 gridPtr_->levelGridView( 0 ).communicate( dh.interface(), InteriorBorder_All_Interface,ForwardCommunication );
    \n+
    376 }
    \n+
    377 }
    \n+
    \n+
    378
    \n+
    379 protected:
    \n+
    380 template< class Range >
    \n+
    \n+
    381 static bool isEmpty ( Range &&range )
    \n+
    382 {
    \n+
    383 return range.begin() == range.end();
    \n+
    384 }
    \n+
    \n+
    385
    \n+
    \n+\n+
    387 {
    \n+
    388 gridPtr_ = mygrid_ptr( dgfFactory.grid() );
    \n+
    389
    \n+
    390 const auto gridView = gridPtr_->levelGridView( 0 );
    \n+
    391 const auto &indexSet = gridView.indexSet();
    \n+
    392
    \n+
    393 nofElParam_ = dgfFactory.template numParameters< 0 >();
    \n+
    394 nofVtxParam_ = dgfFactory.template numParameters< dimension >();
    \n+\n+
    396
    \n+
    397 std::array< int, 3 > nofParams = {{ nofElParam_, nofVtxParam_, static_cast< int >( haveBndParam_ ) }};
    \n+
    398 gridView.comm().max( nofParams.data(), nofParams.size() );
    \n+
    399
    \n+
    400 // empty grids have no parameters associated
    \n+
    401 if( isEmpty( elements( gridView, Partitions::interiorBorder ) ) )
    \n+
    402 {
    \n+
    403 nofElParam_ = nofParams[ 0 ];
    \n+
    404 nofVtxParam_ = nofParams[ 1 ];
    \n+
    405 }
    \n+
    406
    \n+
    407 // boundary parameters may be empty
    \n+
    408 haveBndParam_ = static_cast< bool >( nofParams[ 2 ] );
    \n+
    409
    \n+
    410 if( (nofElParam_ != nofParams[ 0 ]) || (nofVtxParam_ != nofParams[ 1 ]) )
    \n+
    411 DUNE_THROW( DGFException, "Number of parameters differs between processes" );
    \n+
    412
    \n+
    413 elParam_.resize( nofElParam_ > 0 ? indexSet.size( 0 ) : 0 );
    \n+
    414 vtxParam_.resize( nofVtxParam_ > 0 ? indexSet.size( dimension ) : 0 );
    \n+
    415
    \n+
    416 bndId_.resize( indexSet.size( 1 ) );
    \n+
    417 if( haveBndParam_ )
    \n+
    418 bndParam_.resize( gridPtr_->numBoundarySegments() );
    \n+
    419
    \n+
    420 for( const auto &element : elements( gridView, Partitions::interiorBorder ) )
    \n+
    421 {
    \n+
    422 if( nofElParam_ > 0 )
    \n+
    423 {
    \n+
    424 std::swap( elParam_[ indexSet.index( element ) ], dgfFactory.parameter( element ) );
    \n+
    425 assert( elParam_[ indexSet.index( element ) ].size() == static_cast< std::size_t >( nofElParam_ ) );
    \n+
    426 }
    \n+
    427
    \n+
    428 if( nofVtxParam_ > 0 )
    \n+
    429 {
    \n+
    430 for( unsigned int v = 0, n = element.subEntities( dimension ); v < n; ++v )
    \n+
    431 {
    \n+
    432 const auto index = indexSet.subIndex( element, v, dimension );
    \n+
    433 if( vtxParam_[ index ].empty() )
    \n+
    434 std::swap( vtxParam_[ index ], dgfFactory.parameter( element.template subEntity< dimension >( v ) ) );
    \n+
    435 assert( vtxParam_[ index ].size() == static_cast< std::size_t >( nofVtxParam_ ) );
    \n+
    436 }
    \n+
    437 }
    \n+
    438
    \n+
    439 if( element.hasBoundaryIntersections() )
    \n+
    440 {
    \n+
    441 for( const auto &intersection : intersections( gridView, element ) )
    \n+
    442 {
    \n+
    443 // dirty hack: check for "none" to make corner point grid work
    \n+
    444 if( !intersection.boundary() || intersection.type().isNone() )
    \n+
    445 continue;
    \n+
    446
    \n+
    447 const auto k = indexSet.subIndex( element, intersection.indexInInside(), 1 );
    \n+
    448 bndId_[ k ] = dgfFactory.boundaryId( intersection );
    \n+
    449 if( haveBndParam_ )
    \n+
    450 bndParam_[ intersection.boundarySegmentIndex() ] = dgfFactory.boundaryParameter( intersection );
    \n+
    451 }
    \n+
    452 }
    \n+
    453 }
    \n+
    454 }
    \n+
    \n+
    455
    \n+
    \n+\n+
    457 std::vector<int>& boundaryIds,
    \n+
    458 std::vector<int>& elementIds )
    \n+
    459 {
    \n+
    460 gridPtr_ = mygrid_ptr( factory.createGrid().release() );
    \n+
    461
    \n+
    462 const auto& gridView = gridPtr_->leafGridView();
    \n+
    463 const auto& indexSet = gridView.indexSet();
    \n+
    464
    \n+
    465 nofElParam_ = elementIds.empty() ? 0 : 1 ;
    \n+
    466 nofVtxParam_ = 0;
    \n+
    467 haveBndParam_ = boundaryIds.empty() ? 0 : 1 ;
    \n+
    468
    \n+
    469 std::array< int, 3 > nofParams = {{ nofElParam_, nofVtxParam_, static_cast< int >( haveBndParam_ ) }};
    \n+
    470 gridView.comm().max( nofParams.data(), nofParams.size() );
    \n+
    471
    \n+
    472 // empty grids have no parameters associated
    \n+
    473 if( isEmpty( elements( gridView, Partitions::interiorBorder ) ) )
    \n+
    474 {
    \n+
    475 nofElParam_ = nofParams[ 0 ];
    \n+
    476 }
    \n+
    477
    \n+
    478 // boundary parameters may be empty
    \n+
    479 haveBndParam_ = static_cast< bool >( nofParams[ 2 ] );
    \n+
    480
    \n+
    481 // Reorder boundary IDs according to the insertion index
    \n+
    482 if(!boundaryIds.empty() || !elementIds.empty() )
    \n+
    483 {
    \n+
    484 bndParam_.resize( boundaryIds.size() );
    \n+
    485 elParam_.resize( elementIds.size(), std::vector<double>(1) );
    \n+
    486 for(const auto& entity : elements( gridView ))
    \n+
    487 {
    \n+
    488 elParam_[ indexSet.index( entity ) ][ 0 ] = elementIds[ factory.insertionIndex( entity ) ];
    \n+
    489 if( haveBndParam_ )
    \n+
    490 {
    \n+
    491 for(const auto& intersection : intersections( gridView,entity) )
    \n+
    492 {
    \n+
    493 if(intersection.boundary())
    \n+
    494 {
    \n+
    495 // DGFBoundaryParameter::type is of type string.
    \n+
    496 bndParam_[intersection.boundarySegmentIndex()] = std::to_string(boundaryIds[factory.insertionIndex(intersection)]);
    \n+
    497 }
    \n+
    498 }
    \n+
    499 }
    \n+
    500 }
    \n+
    501 }
    \n+
    502 }
    \n+
    \n+
    503
    \n+
    504 template <class Entity>
    \n+
    \n+
    505 std::vector< double > &params ( const Entity &entity )
    \n+
    506 {
    \n+
    507 const auto gridView = gridPtr_->levelGridView( 0 );
    \n+
    508 switch( (int)Entity::codimension )
    \n+
    509 {
    \n+
    510 case 0 :
    \n+
    511 if( nofElParam_ > 0 ) {
    \n+
    512 if ( gridView.indexSet().index( entity ) >= elParam_.size() )
    \n+
    513 elParam_.resize( gridView.indexSet().index( entity ) );
    \n+
    514 return elParam_[ gridView.indexSet().index( entity ) ];
    \n+
    515 }
    \n+
    516 break;
    \n+
    517 case GridType::dimension :
    \n+
    518 if( nofVtxParam_ > 0 ) {
    \n+
    519 if ( gridView.indexSet().index( entity ) >= vtxParam_.size() )
    \n+
    520 vtxParam_.resize( gridView.indexSet().index( entity ) );
    \n+
    521 return vtxParam_[ gridView.indexSet().index( entity ) ];
    \n+
    522 }
    \n+
    523 break;
    \n+
    524 }
    \n+
    525 return emptyParam_;
    \n+
    526 }
    \n+
    \n+
    527
    \n+
    \n+
    528 void setNofParams( int cdim, int nofP )
    \n+
    529 {
    \n+
    530 switch (cdim) {
    \n+
    531 case 0 : nofElParam_ = nofP; break;
    \n+
    532 case GridType::dimension : nofVtxParam_ = nofP; break;
    \n+
    533 }
    \n+
    534 }
    \n+
    \n+
    535
    \n+
    \n+\n+
    537 : public CommDataHandleIF< DataHandle, char >
    \n+
    538 {
    \n+
    \n+
    539 explicit DataHandle ( GridPtr &gridPtr )
    \n+
    540 : gridPtr_( gridPtr ), idSet_( gridPtr->localIdSet() )
    \n+
    541 {
    \n+
    542 const auto gridView = gridPtr_->levelGridView( 0 );
    \n+
    543 const auto &indexSet = gridView.indexSet();
    \n+
    544
    \n+
    545 for( const auto &element : elements( gridView, Partitions::interiorBorder ) )
    \n+
    546 {
    \n+
    547 if( gridPtr_.nofElParam_ > 0 )
    \n+
    548 std::swap( gridPtr_.elParam_[ indexSet.index( element ) ], elData_[ idSet_.id( element ) ] );
    \n+
    549
    \n+
    550 if( gridPtr_.nofVtxParam_ > 0 )
    \n+
    551 {
    \n+
    552 for( unsigned int v = 0, n = element.subEntities( dimension ); v < n; ++v )
    \n+
    553 {
    \n+
    554 const auto index = indexSet.subIndex( element, v, dimension );
    \n+
    555 if ( !gridPtr_.vtxParam_[ index ].empty() )
    \n+
    556 std::swap( gridPtr_.vtxParam_[ index ], vtxData_[ idSet_.subId( element, v, dimension ) ] );
    \n+
    557 }
    \n+
    558 }
    \n+
    559
    \n+
    560 if( element.hasBoundaryIntersections() )
    \n+
    561 {
    \n+
    562 for( const auto &intersection : intersections( gridView, element ) )
    \n+
    563 {
    \n+
    564 // dirty hack: check for "none" to make corner point grid work
    \n+
    565 if( !intersection.boundary() || intersection.type().isNone() )
    \n+
    566 continue;
    \n+
    567
    \n+
    568 const int i = intersection.indexInInside();
    \n+
    569 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];
    \n+
    570 bndData.first = gridPtr_.bndId_[ indexSet.subIndex( element, i, 1 ) ];
    \n+
    571 if( gridPtr_.haveBndParam_ )
    \n+
    572 std::swap( bndData.second, gridPtr_.bndParam_[ intersection.boundarySegmentIndex() ] );
    \n+
    573 }
    \n+
    574 }
    \n+
    575 }
    \n+
    576 }
    \n+
    \n+
    577
    \n+
    578 DataHandle ( const DataHandle & ) = delete;
    \n+
    579 DataHandle ( DataHandle && ) = delete;
    \n+
    580
    \n+
    \n+\n+
    582 {
    \n+
    583 const auto gridView = gridPtr_->levelGridView( 0 );
    \n+
    584 const auto &indexSet = gridView.indexSet();
    \n+
    585
    \n+
    586 if( gridPtr_.nofElParam_ > 0 )
    \n+
    587 gridPtr_.elParam_.resize( indexSet.size( 0 ) );
    \n+
    588 if( gridPtr_.nofVtxParam_ > 0 )
    \n+
    589 gridPtr_.vtxParam_.resize( indexSet.size( dimension ) );
    \n+
    590 gridPtr_.bndId_.resize( indexSet.size( 1 ) );
    \n+
    591 if( gridPtr_.haveBndParam_ )
    \n+
    592 gridPtr_.bndParam_.resize( gridPtr_->numBoundarySegments() );
    \n+
    593
    \n+
    594 for( const auto &element : elements( gridView, Partitions::all ) )
    \n+
    595 {
    \n+
    596 if( gridPtr_.nofElParam_ > 0 )
    \n+
    597 {
    \n+
    598 std::swap( gridPtr_.elParam_[ indexSet.index( element ) ], elData_[ idSet_.id( element ) ] );
    \n+
    599 assert( gridPtr_.elParam_[ indexSet.index( element ) ].size() == static_cast< std::size_t >( gridPtr_.nofElParam_ ) );
    \n+
    600 }
    \n+
    601
    \n+
    602 if( gridPtr_.nofVtxParam_ > 0 )
    \n+
    603 {
    \n+
    604 for( unsigned int v = 0; v < element.subEntities( dimension ); ++v )
    \n+
    605 {
    \n+
    606 const auto index = indexSet.subIndex( element, v, dimension );
    \n+
    607 if( gridPtr_.vtxParam_[ index ].empty() )
    \n+
    608 std::swap( gridPtr_.vtxParam_[ index ], vtxData_[ idSet_.subId( element, v, dimension ) ] );
    \n+
    609 assert( gridPtr_.vtxParam_[ index ].size() == static_cast< std::size_t >( gridPtr_.nofVtxParam_ ) );
    \n+
    610 }
    \n+
    611 }
    \n+
    612
    \n+
    613 if( element.hasBoundaryIntersections() )
    \n+
    614 {
    \n+
    615 for( const auto &intersection : intersections( gridView, element ) )
    \n+
    616 {
    \n+
    617 // dirty hack: check for "none" to make corner point grid work
    \n+
    618 if( !intersection.boundary() || intersection.type().isNone() )
    \n+
    619 continue;
    \n+
    620
    \n+
    621 const int i = intersection.indexInInside();
    \n+
    622 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];
    \n+
    623 gridPtr_.bndId_[ indexSet.subIndex( element, i, 1 ) ] = bndData.first;
    \n+
    624 if( gridPtr_.haveBndParam_ )
    \n+
    625 std::swap( bndData.second, gridPtr_.bndParam_[ intersection.boundarySegmentIndex() ] );
    \n+
    626 }
    \n+
    627 }
    \n+
    628 }
    \n+
    629 }
    \n+
    630
    \n+\n+
    \n+
    632
    \n+
    \n+
    633 bool contains ( int dim, int codim ) const
    \n+
    634 {
    \n+
    635 assert( dim == dimension );
    \n+
    636 // do not use a switch statement, because dimension == 1 is possible
    \n+
    637 return (codim == 1) || ((codim == dimension) && (gridPtr_.nofVtxParam_ > 0)) || ((codim == 0) && (gridPtr_.nofElParam_ > 0));
    \n+
    638 }
    \n+
    \n+
    639
    \n+
    640 bool fixedSize (int /* dim */, int /* codim */) const { return false; }
    \n+
    641
    \n+
    642 template< class Entity >
    \n+
    \n+
    643 std::size_t size ( const Entity &entity ) const
    \n+
    644 {
    \n+
    645 std::size_t totalSize = 0;
    \n+
    646
    \n+
    647 // do not use a switch statement, because dimension == 1 is possible
    \n+
    648 if( (Entity::codimension == 0) && (gridPtr_.nofElParam_ > 0) )
    \n+
    649 {
    \n+
    650 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofElParam_ ) );
    \n+
    651 for( double &v : elData_[ idSet_.id( entity ) ] )
    \n+
    652 totalSize += dataSize( v );
    \n+
    653 }
    \n+
    654
    \n+
    655 if( (Entity::codimension == dimension) && (gridPtr_.nofVtxParam_ > 0) )
    \n+
    656 {
    \n+
    657 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofVtxParam_ ) );
    \n+
    658 for( double &v : vtxData_[ idSet_.id( entity ) ] )
    \n+
    659 totalSize += dataSize( v );
    \n+
    660 }
    \n+
    661
    \n+
    662 if( Entity::codimension == 1 )
    \n+
    663 {
    \n+
    664 const auto bndData = bndData_.find( idSet_.id( entity ) );
    \n+
    665 if( bndData != bndData_.end() )
    \n+
    666 totalSize += dataSize( bndData->second.first ) + dataSize( bndData->second.second );
    \n+
    667 }
    \n+
    668
    \n+
    669 return totalSize;
    \n+
    670 }
    \n+
    \n+
    671
    \n+
    672 template< class Buffer, class Entity >
    \n+
    \n+
    673 void gather ( Buffer &buffer, const Entity &entity ) const
    \n+
    674 {
    \n+
    675 // do not use a switch statement, because dimension == 1 is possible
    \n+
    676 if( (Entity::codimension == 0) && (gridPtr_.nofElParam_ > 0) )
    \n+
    677 {
    \n+
    678 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofElParam_ ) );
    \n+
    679 for( double &v : elData_[ idSet_.id( entity ) ] )
    \n+
    680 write( buffer, v );
    \n+
    681 }
    \n+
    682
    \n+
    683 if( (Entity::codimension == dimension) && (gridPtr_.nofVtxParam_ > 0) )
    \n+
    684 {
    \n+
    685 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >( gridPtr_.nofVtxParam_ ) );
    \n+
    686 for( double &v : vtxData_[ idSet_.id( entity ) ] )
    \n+
    687 write( buffer, v );
    \n+
    688 }
    \n+
    689
    \n+
    690 if( Entity::codimension == 1 )
    \n+
    691 {
    \n+
    692 const auto bndData = bndData_.find( idSet_.id( entity ) );
    \n+
    693 if( bndData != bndData_.end() )
    \n+
    694 {
    \n+
    695 write( buffer, bndData->second.first );
    \n+
    696 write( buffer, bndData->second.second );
    \n+
    697 }
    \n+
    698 }
    \n+
    699 }
    \n+
    \n+
    700
    \n+
    701 template< class Buffer, class Entity >
    \n+
    \n+
    702 void scatter ( Buffer &buffer, const Entity &entity, std::size_t n )
    \n+
    703 {
    \n+
    704 // do not use a switch statement, because dimension == 1 is possible
    \n+
    705 if( (Entity::codimension == 0) && (gridPtr_.nofElParam_ > 0) )
    \n+
    706 {
    \n+
    707 auto &p = elData_[ idSet_.id( entity ) ];
    \n+
    708 p.resize( gridPtr_.nofElParam_ );
    \n+
    709 for( double &v : p )
    \n+
    710 read( buffer, v, n );
    \n+
    711 }
    \n+
    712
    \n+
    713 if( (Entity::codimension == dimension) && (gridPtr_.nofVtxParam_ > 0) )
    \n+
    714 {
    \n+
    715 auto &p = vtxData_[ idSet_.id( entity ) ];
    \n+
    716 p.resize( gridPtr_.nofVtxParam_ );
    \n+
    717 for( double &v : p )
    \n+
    718 read( buffer, v, n );
    \n+
    719 }
    \n+
    720
    \n+
    721 if( (Entity::codimension == 1) && (n > 0) )
    \n+
    722 {
    \n+
    723 auto &bndData = bndData_[ idSet_.id( entity ) ];
    \n+
    724 read( buffer, bndData.first, n );
    \n+
    725 read( buffer, bndData.second, n );
    \n+
    726 }
    \n+
    727
    \n+
    728 assert( n == 0 );
    \n+
    729 }
    \n+
    \n+
    730
    \n+
    731 private:
    \n+
    732 template< class T >
    \n+
    733 static std::enable_if_t< std::is_trivially_copyable< T >::value, std::size_t > dataSize ( const T & /* value */ )
    \n+
    734 {
    \n+
    735 return sizeof( T );
    \n+
    736 }
    \n+
    737
    \n+
    738 static std::size_t dataSize ( const std::string &s )
    \n+
    739 {
    \n+
    740 return dataSize( s.size() ) + s.size();
    \n+
    741 }
    \n+
    742
    \n+
    743 template< class Buffer, class T >
    \n+
    744 static std::enable_if_t< std::is_trivially_copyable< T >::value > write ( Buffer &buffer, const T &value )
    \n+
    745 {
    \n+
    746 std::array< char, sizeof( T ) > bytes;
    \n+
    747 std::memcpy( bytes.data(), &value, sizeof( T ) );
    \n+
    748 for( char &b : bytes )
    \n+
    749 buffer.write( b );
    \n+
    750 }
    \n+
    751
    \n+
    752 template< class Buffer >
    \n+
    753 static void write ( Buffer &buffer, const std::string &s )
    \n+
    754 {
    \n+
    755 write( buffer, s.size() );
    \n+
    756 for( const char &c : s )
    \n+
    757 buffer.write( c );
    \n+
    758 }
    \n+
    759
    \n+
    760 template< class Buffer, class T >
    \n+
    761 static std::enable_if_t< std::is_trivially_copyable< T >::value > read ( Buffer &buffer, T &value, std::size_t &n )
    \n+
    762 {
    \n+
    763 assert( n >= sizeof( T ) );
    \n+
    764 n -= sizeof( T );
    \n+
    765
    \n+
    766 std::array< char, sizeof( T ) > bytes;
    \n+
    767 for( char &b : bytes )
    \n+
    768 buffer.read( b );
    \n+
    769 std::memcpy( &value, bytes.data(), sizeof( T ) );
    \n+
    770 }
    \n+
    771
    \n+
    772 template< class Buffer >
    \n+
    773 static void read ( Buffer &buffer, std::string &s, std::size_t &n )
    \n+
    774 {
    \n+
    775 std::size_t size;
    \n+
    776 read( buffer, size, n );
    \n+
    777 s.resize( size );
    \n+
    778
    \n+
    779 assert( n >= size );
    \n+
    780 n -= size;
    \n+
    781
    \n+
    782 for( char &c : s )
    \n+
    783 buffer.read( c );
    \n+
    784 }
    \n+
    785
    \n+
    786 GridPtr &gridPtr_;
    \n+
    787 const typename GridType::LocalIdSet &idSet_;
    \n+
    788 mutable std::map< typename GridType::LocalIdSet::IdType, std::vector< double > > elData_, vtxData_;
    \n+
    789 mutable std::map< typename GridType::LocalIdSet::IdType, std::pair< int, DGFBoundaryParameter::type > > bndData_;
    \n+
    790 };
    \n+
    \n+
    791
    \n+
    792 // grid auto pointer
    \n+\n+
    794 // element and vertex parameters
    \n+
    795 std::vector< std::vector< double > > elParam_;
    \n+
    796 std::vector< std::vector< double > > vtxParam_;
    \n+
    797 std::vector< DGFBoundaryParameter::type > bndParam_;
    \n+
    798 std::vector< int > bndId_;
    \n+
    799 std::vector< double > emptyParam_;
    \n+
    800
    \n+\n+\n+\n+
    804 }; // end of class GridPtr
    \n+
    \n+
    805
    \n+
    806} // end namespace Dune
    \n+
    807
    \n+
    808#endif
    \n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+\n+\n+\n+\n+\n+\n+\n+
    @ ForwardCommunication
    communicate as given in InterfaceType
    Definition gridenums.hh:171
    \n+
    @ InteriorBorder_All_Interface
    send interior and border, receive all entities
    Definition gridenums.hh:88
    \n+
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n+
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    DataMode
    Whether to produce conforming or non-conforming output.
    Definition common.hh:67
    \n-
    @ conforming
    Output conforming data.
    Definition common.hh:73
    \n+
    constexpr All all
    PartitionSet for all partitions.
    Definition partitionset.hh:296
    \n+
    constexpr InteriorBorder interiorBorder
    PartitionSet for the interior and border partitions.
    Definition partitionset.hh:287
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    int boundaryId(const Intersection &intersection) const
    Definition dgfgridfactory.hh:102
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
    Definition dgfgridfactory.hh:158
    \n+
    Grid * grid()
    Definition dgfgridfactory.hh:90
    \n+
    std::vector< double > & parameter(const Element &element)
    Definition dgfgridfactory.hh:124
    \n+
    bool haveBoundaryParameters() const
    Definition dgfgridfactory.hh:151
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    size_t boundarySegmentIndex() const
    index of the boundary segment within the macro grid
    Definition common/intersection.hh:236
    \n+
    CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
    Definition datahandleif.hh:78
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n+
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n+
    virtual unsigned int insertionIndex(const typename Codim< 0 >::Entity &entity) const
    obtain an element's insertion index
    Definition common/gridfactory.hh:220
    \n+
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n+
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    Writer for the ouput of grid functions in the vtk format.
    Definition vtksequencewriter.hh:29
    \n-
    VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const std::string &name, const std::string &path, const std::string &extendpath)
    Constructor with a given VTKWriter or SubsamplingVTKWriter.
    Definition vtksequencewriter.hh:69
    \n-
    VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const std::string &name)
    Constructor with a given VTKWriter or SubsamplingVTKWriter.
    Definition vtksequencewriter.hh:42
    \n-
    VTKSequenceWriter(const GridView &gridView, const std::string &name, const std::string &path, const std::string &extendpath, VTK::DataMode dm=VTK::conforming)
    Constructor creating its own VTKWriter object.
    Definition vtksequencewriter.hh:87
    \n-
    Base class to write pvd-files which contains a list of all collected vtk-files.
    Definition vtksequencewriterbase.hh:34
    \n-
    const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const
    Definition vtksequencewriterbase.hh:63
    \n-
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n+
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Class for constructing grids from DGF files.
    Definition gridptr.hh:66
    \n+
    GridPtr(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor given a std::istream
    Definition gridptr.hh:199
    \n+
    const std::vector< double > & parameters(const Entity &entity) const
    get parameters defined for each codim 0 und dim entity on the grid through the grid file
    Definition gridptr.hh:325
    \n+
    GridPtr()
    Default constructor, creating empty GridPtr.
    Definition gridptr.hh:217
    \n+
    const GridType & operator*() const
    return const reference to GridType instance
    Definition gridptr.hh:288
    \n+
    bool haveBndParam_
    Definition gridptr.hh:803
    \n+
    static const int dimension
    Definition gridptr.hh:155
    \n+
    std::vector< int > bndId_
    Definition gridptr.hh:798
    \n+
    void setNofParams(int cdim, int nofP)
    Definition gridptr.hh:528
    \n+
    void loadBalance()
    Definition gridptr.hh:369
    \n+
    std::vector< DGFBoundaryParameter::type > bndParam_
    Definition gridptr.hh:797
    \n+
    void initialize(GridFactory< GridType > &factory, std::vector< int > &boundaryIds, std::vector< int > &elementIds)
    Definition gridptr.hh:456
    \n+
    GridPtr(GridType *grd)
    Constructor storing given pointer to internal auto pointer.
    Definition gridptr.hh:230
    \n+
    int nofElParam_
    Definition gridptr.hh:801
    \n+
    const DGFBoundaryParameter::type & parameters(const Intersection< GridImp, IntersectionImp > &intersection) const
    get parameters for intersection
    Definition gridptr.hh:351
    \n+
    GridType & operator*()
    return reference to GridType instance
    Definition gridptr.hh:278
    \n+
    static bool isEmpty(Range &&range)
    Definition gridptr.hh:381
    \n+
    int nofParameters(const Entity &) const
    get parameters defined for given entity
    Definition gridptr.hh:311
    \n+
    GridPtr(const std::string &filename, MPICommunicatorType comm=MPIHelper::getCommunicator())
    constructor given the name of a DGF file
    Definition gridptr.hh:158
    \n+
    std::vector< std::vector< double > > elParam_
    Definition gridptr.hh:795
    \n+
    MPIHelper::MPICommunicator MPICommunicatorType
    Definition gridptr.hh:154
    \n+
    GridPtr & operator=(const GridPtr &org)
    assignment of grid pointer
    Definition gridptr.hh:246
    \n+
    int nofParameters(int cdim) const
    get number of parameters defined for a given codimension
    Definition gridptr.hh:301
    \n+
    int nofParameters(const Intersection< GridImp, IntersectionImp > &intersection) const
    get number of parameters defined for a given intersection
    Definition gridptr.hh:318
    \n+
    std::vector< double > emptyParam_
    Definition gridptr.hh:799
    \n+
    mygrid_ptr gridPtr_
    Definition gridptr.hh:793
    \n+
    void readGmsh(const std::string &filename, std::integral_constant< bool, false >)
    Definition gridptr.hh:147
    \n+
    void readGmsh(const std::string &filename, std::integral_constant< bool, true >)
    Definition gridptr.hh:137
    \n+
    std::vector< double > & params(const Entity &entity)
    Definition gridptr.hh:505
    \n+
    void initialize(DGFGridFactory< GridType > &dgfFactory)
    Definition gridptr.hh:386
    \n+
    GridPtr(const GridPtr &org)=default
    Copy constructor, copies internal auto pointer.
    \n+
    std::string getFileExtension(const std::string &filename) const
    Definition gridptr.hh:122
    \n+
    const GridType * operator->() const
    return const pointer to GridType instance
    Definition gridptr.hh:293
    \n+
    GridType * release()
    release pointer from internal ownership
    Definition gridptr.hh:298
    \n+
    void communicate()
    Definition gridptr.hh:360
    \n+
    std::vector< std::vector< double > > vtxParam_
    Definition gridptr.hh:796
    \n+
    GridType * operator->()
    return pointer to GridType instance
    Definition gridptr.hh:283
    \n+
    int nofVtxParam_
    Definition gridptr.hh:802
    \n+
    Definition gridptr.hh:68
    \n+
    mygrid_ptr(GridType *grd)
    Definition gridptr.hh:99
    \n+
    ~mygrid_ptr()
    Definition gridptr.hh:102
    \n+
    GridType * release()
    Definition gridptr.hh:112
    \n+
    mygrid_ptr(const mygrid_ptr &other)
    Definition gridptr.hh:97
    \n+
    mygrid_ptr & operator=(const mygrid_ptr &other)
    Definition gridptr.hh:105
    \n+
    mygrid_ptr()
    Definition gridptr.hh:95
    \n+
    Definition gridptr.hh:538
    \n+
    CommDataHandleIF< DataHandle, char > & interface()
    Definition gridptr.hh:631
    \n+
    DataHandle(const DataHandle &)=delete
    \n+
    ~DataHandle()
    Definition gridptr.hh:581
    \n+
    DataHandle(GridPtr &gridPtr)
    Definition gridptr.hh:539
    \n+
    void gather(Buffer &buffer, const Entity &entity) const
    Definition gridptr.hh:673
    \n+
    bool fixedSize(int, int) const
    Definition gridptr.hh:640
    \n+
    std::size_t size(const Entity &entity) const
    Definition gridptr.hh:643
    \n+
    DataHandle(DataHandle &&)=delete
    \n+
    void scatter(Buffer &buffer, const Entity &entity, std::size_t n)
    Definition gridptr.hh:702
    \n+
    bool contains(int dim, int codim) const
    Definition gridptr.hh:633
    \n+
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n+
    static std::unique_ptr< Grid > read(const std::string &fileName, bool verbose=true, bool insertBoundarySegments=true)
    Definition gmshreader.hh:904
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,121 +2,1132 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-vtksequencewriter.hh\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+gridptr.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_VTKSEQUENCE_HH\n-7#define DUNE_VTKSEQUENCE_HH\n-8\n-9#include \n+5#ifndef DUNE_DGF_GRIDPTR_HH\n+6#define DUNE_DGF_GRIDPTR_HH\n+7\n+8#include \n+9#include \n 10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\bb_\ba_\bs_\be_\b._\bh_\bh>\n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be {\n-17\n-26 template< class GridView >\n-_\b2_\b7 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br :\n-28 public _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-29 {\n-30 public:\n-_\b4_\b2 _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br ( std::shared_ptr<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> > _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n-43 const std::string& name )\n-44 : _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>(_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n-45 name,\n-46 \"\",\n-47 \"\",\n-48 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().rank(),\n-49 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().size())\n-50 {}\n+11#include \n+12#include \n+13#include \n+14#include \n+15#include \n+16#include \n+17#include \n+18\n+19//- Dune includes\n+20#include \n+21#include \n+22\n+23#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n+25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+26#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n+27#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+28\n+29#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+31#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+32\n+33#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+34\n+35namespace _\bD_\bu_\bn_\be\n+36{\n+37\n+38 // External Forward Declarations\n+39 // -----------------------------\n+40\n+41 template < class G >\n+42 struct DGFGridFactory;\n+43\n+44 template< class GridImp, class IntersectionImp >\n+45 class Intersection;\n+46\n+47\n+48\n+49 // GridPtr\n+50 // -------\n 51\n-_\b6_\b9 _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br ( std::shared_ptr<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> > _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n-70 const std::string& name,\n-71 const std::string& path,\n-72 const std::string& extendpath )\n-73 : _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>(_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n-74 name,\n-75 path,\n-76 extendpath,\n-77 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().rank(),\n-78 _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br->gridView_.comm().size())\n-79 {}\n-80\n-_\b8_\b7 explicit _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br ( const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView,\n-88 const std::string& name,\n-89 const std::string& path,\n-90 const std::string& extendpath,\n-91 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be dm = _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg )\n-92 : _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>(_\bs_\bt_\bd::make_shared<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw> >\n-(gridView,dm),\n-93 name,path,extendpath,\n-94 gridView.comm().rank(), gridView.comm().size())\n-95 {}\n-96 };\n-97\n-98} // end namespace Dune\n-99\n-100#endif\n-_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\bb_\ba_\bs_\be_\b._\bh_\bh\n-_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-Provides file i/o for the visualization toolkit.\n-_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-Provides subsampled file i/o for the visualization toolkit.\n-_\bs_\bt_\bd\n-STL namespace.\n+64 template< class GridType >\n+_\b6_\b5 struct _\bG_\br_\bi_\bd_\bP_\bt_\br\n+66 {\n+_\b6_\b7 class _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br : public std::shared_ptr< GridType >\n+68 {\n+69 typedef std::shared_ptr< GridType > base_t ;\n+70 // empty deleter to avoid deletion on release\n+71 typedef null_deleter< GridType > emptydeleter_t ;\n+72\n+73 void removeObj()\n+74 {\n+75 // if use count is only 1 delete object\n+76 if( use_count() == 1 )\n+77 {\n+78 // delete point here, since we use the empty deleter\n+79 GridType* grd = _\br_\be_\bl_\be_\ba_\bs_\be();\n+80 if( grd ) delete grd ;\n+81 }\n+82 }\n+83\n+84 void assignObj( const _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& other )\n+85 {\n+86 removeObj();\n+87 base_t :: operator = ( other );\n+88 }\n+89 public:\n+90 using base_t :: get ;\n+91 using base_t :: swap ;\n+92 using base_t :: use_count ;\n+93\n+94 // default constructor\n+_\b9_\b5 _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br() : base_t( ( GridType * ) 0, emptydeleter_t() ) {}\n+96 // copy constructor\n+_\b9_\b7 _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( const _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& other ) : base_t(nullptr) { assignObj( other\n+); }\n+98 // constructor taking pointer\n+_\b9_\b9 explicit _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( GridType* grd ) : base_t( grd, emptydeleter_t() ) {}\n+100\n+101 // destructor\n+_\b1_\b0_\b2 _\b~_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br() { removeObj(); }\n+103\n+104 // assigment operator\n+_\b1_\b0_\b5 _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b ( const _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br& other )\n+106 {\n+107 assignObj( other );\n+108 return *this;\n+109 }\n+110\n+111 // release pointer\n+_\b1_\b1_\b2 GridType* _\br_\be_\bl_\be_\ba_\bs_\be()\n+113 {\n+114 GridType* grd = this->get();\n+115 base_t ptr(( GridType * ) 0, emptydeleter_t() );\n+116 this->swap( ptr );\n+117 return grd ;\n+118 }\n+119 };\n+120\n+121 protected:\n+_\b1_\b2_\b2 std::string _\bg_\be_\bt_\bF_\bi_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn( const std::string& filename ) const\n+123 {\n+124 // extract file extension\n+125 auto extpos = filename.find_last_of(\".\");\n+126 std::string ext;\n+127 if( extpos != std::string::npos)\n+128 ext = filename.substr( extpos + 1 );\n+129\n+130 // convert all letters to lower case\n+131 for( auto& item : ext )\n+132 item = std::tolower( item );\n+133 return ext;\n+134 }\n+135\n+136 // read gmsh file if dimension world <= 3\n+_\b1_\b3_\b7 void _\br_\be_\ba_\bd_\bG_\bm_\bs_\bh( const std::string& filename, std::integral_constant< bool,\n+true > )\n+138 {\n+139 _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b> gridFactory;\n+140 std::vector boundaryIDs;\n+141 std::vector elementsIDs;\n+142 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b>_\b:_\b:_\br_\be_\ba_\bd(gridFactory,filename,boundaryIDs,elementsIDs);\n+143 _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be( gridFactory, boundaryIDs,elementsIDs);\n+144 }\n+145\n+146 // if dimension world > 3 throw GridError\n+_\b1_\b4_\b7 void _\br_\be_\ba_\bd_\bG_\bm_\bs_\bh( const std::string& filename, std::integral_constant< bool,\n+false > )\n+148 {\n+149 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"GmshReader requires dimWorld <= 3.\" );\n+150 }\n+151\n+152 public:\n+153\n+_\b1_\b5_\b4 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be;\n+_\b1_\b5_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = GridType::dimension;\n+156\n+_\b1_\b5_\b8 explicit _\bG_\br_\bi_\bd_\bP_\bt_\br ( const std::string &filename,\n+159 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+160 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(),\n+161 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n+162 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n+163 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n+164 _\bb_\bn_\bd_\bI_\bd_\b_(),\n+165 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n+166 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n+167 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n+168 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n+169 {\n+170 std::string fileExt = _\bg_\be_\bt_\bF_\bi_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn( filename );\n+171\n+172 if( fileExt == \"dgf\" )\n+173 {\n+174 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> dgfFactory( filename, comm );\n+175 _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be( dgfFactory );\n+176 }\n+177 else if( fileExt == \"msh\" )\n+178 {\n+179 // Gmsh reader only compiles for dimworld <= 3\n+180 _\br_\be_\ba_\bd_\bG_\bm_\bs_\bh( filename, std::integral_constant< bool, GridType::dimensionworld\n+<= 3 > () );\n+181 }\n+182 else if( fileExt == \"amc\" || fileExt == \"2d\" || fileExt == \"3d\" )\n+183 {\n+184 // TODO: AlbertaReader\n+185 DUNE_THROW( NotImplemented, \"GridPtr: file format '\" << fileExt << \"' not\n+supported yet!\" );\n+186 }\n+187 else if( fileExt == \"vtu\" )\n+188 {\n+189 // TODO: vtu/vtk reader\n+190 DUNE_THROW( NotImplemented, \"GridPtr: file format '\" << fileExt << \"' not\n+supported yet!\" );\n+191 }\n+192 else\n+193 {\n+194 DUNE_THROW( NotImplemented, \"GridPtr: file format '\" << fileExt << \"' not\n+supported yet!\" );\n+195 }\n+196 }\n+197\n+_\b1_\b9_\b9 explicit _\bG_\br_\bi_\bd_\bP_\bt_\br ( std::istream &input,\n+200 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be comm = MPIHelper::getCommunicator() )\n+201 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(),\n+202 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n+203 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n+204 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n+205 _\bb_\bn_\bd_\bI_\bd_\b_(),\n+206 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n+207 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n+208 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_( 0 ),\n+209 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n+210 {\n+211 // input stream only works for DGF format right now\n+212 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> dgfFactory( input, comm );\n+213 _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be( dgfFactory );\n+214 }\n+215\n+_\b2_\b1_\b7 _\bG_\br_\bi_\bd_\bP_\bt_\br()\n+218 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(),\n+219 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n+220 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n+221 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n+222 _\bb_\bn_\bd_\bI_\bd_\b_(),\n+223 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n+224 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_(0),\n+225 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(0),\n+226 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n+227 {}\n+228\n+_\b2_\b3_\b0 explicit _\bG_\br_\bi_\bd_\bP_\bt_\br( GridType *grd )\n+231 : _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_(grd),\n+232 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_(),\n+233 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(),\n+234 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_(),\n+235 _\bb_\bn_\bd_\bI_\bd_\b_(),\n+236 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_(),\n+237 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_(0),\n+238 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_(0),\n+239 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_( false )\n+240 {}\n+241\n+_\b2_\b4_\b3 _\bG_\br_\bi_\bd_\bP_\bt_\br( const _\bG_\br_\bi_\bd_\bP_\bt_\br &org ) = default;\n+244\n+_\b2_\b4_\b6 _\bG_\br_\bi_\bd_\bP_\bt_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bG_\br_\bi_\bd_\bP_\bt_\br &org )\n+247 {\n+248 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = org._\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n+249 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_ = org._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n+250 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = org._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n+251 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = org._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n+252 _\bb_\bn_\bd_\bI_\bd_\b_ = org._\bb_\bn_\bd_\bI_\bd_\b_;\n+253 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_ = org._\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n+254\n+255 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = org._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n+256 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = org._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n+257 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = org._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n+258 return *this;\n+259 }\n+260\n+_\b2_\b6_\b2 _\bG_\br_\bi_\bd_\bP_\bt_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b (GridType * grd)\n+263 {\n+264 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( grd );\n+265 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n+266 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n+267 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n+268 _\bb_\bn_\bd_\bI_\bd_\b_.resize(0);\n+269 _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_.resize(0);\n+270\n+271 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = 0;\n+272 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = 0;\n+273 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = false;\n+274 return *this;\n+275 }\n+276\n+_\b2_\b7_\b8 GridType& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() {\n+279 return *_\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n+280 }\n+281\n+_\b2_\b8_\b3 GridType* _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() {\n+284 return _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_.operator -> ();\n+285 }\n+286\n+_\b2_\b8_\b8 const GridType& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() const {\n+289 return *_\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n+290 }\n+291\n+_\b2_\b9_\b3 const GridType* _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() const {\n+294 return _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_.operator -> ();\n+295 }\n+296\n+_\b2_\b9_\b8 GridType* _\br_\be_\bl_\be_\ba_\bs_\be () { return _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_._\br_\be_\bl_\be_\ba_\bs_\be(); }\n+299\n+_\b3_\b0_\b1 int _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs(int cdim) const {\n+302 switch (cdim) {\n+303 case 0 : return _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_; break;\n+304 case GridType::dimension : return _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_; break;\n+305 }\n+306 return 0;\n+307 }\n+308\n+310 template \n+_\b3_\b1_\b1 int _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by & ) const\n+312 {\n+313 return _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs( (int) _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+314 }\n+315\n+317 template< class GridImp, class IntersectionImp >\n+_\b3_\b1_\b8 int _\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b _\b> &\n+intersection ) const\n+319 {\n+320 return _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs( intersection ).size();\n+321 }\n+322\n+324 template \n+_\b3_\b2_\b5 const std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+326 {\n+327 typedef typename GridType::LevelGridView _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n+328 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 );\n+329 switch( (int)_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n+330 {\n+331 case 0 :\n+332 if( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+333 {\n+334 assert( (unsigned int)gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) < _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.size()\n+);\n+335 return _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) ];\n+336 }\n+337 break;\n+338 case GridType::dimension :\n+339 if( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+340 {\n+341 assert( (unsigned int)gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) < _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.size\n+() );\n+342 return _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ gridView._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index( entity ) ];\n+343 }\n+344 break;\n+345 }\n+346 return _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n+347 }\n+348\n+350 template< class GridImp, class IntersectionImp >\n+_\b3_\b5_\b1 const _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be & _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<\n+_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b _\b> & intersection ) const\n+352 {\n+353 // if no parameters given return empty vector\n+354 if ( !_\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+355 return _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be();\n+356\n+357 return _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_[ intersection._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx() ];\n+358 }\n+359\n+_\b3_\b6_\b0 void _\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be ()\n+361 {\n+362 if( _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->comm().size() > 1 )\n+363 {\n+364 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be dh(*this);\n+365 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 ).communicate( dh._\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(),\n+_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn );\n+366 }\n+367 }\n+368\n+_\b3_\b6_\b9 void _\bl_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be ()\n+370 {\n+371 if( _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->comm().size() > 1 )\n+372 {\n+373 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be dh(*this);\n+374 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->loadBalance( dh._\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() );\n+375 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 ).communicate( dh._\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(),\n+_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn );\n+376 }\n+377 }\n+378\n+379 protected:\n+380 template< class Range >\n+_\b3_\b8_\b1 static bool _\bi_\bs_\bE_\bm_\bp_\bt_\by ( Range &&range )\n+382 {\n+383 return range.begin() == range.end();\n+384 }\n+385\n+_\b3_\b8_\b6 void _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be ( _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> &dgfFactory )\n+387 {\n+388 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( dgfFactory._\bg_\br_\bi_\bd() );\n+389\n+390 const auto gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 );\n+391 const auto &indexSet = gridView.indexSet();\n+392\n+393 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = dgfFactory.template numParameters< 0 >();\n+394 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = dgfFactory.template numParameters< dimension >();\n+395 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = dgfFactory._\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs();\n+396\n+397 std::array< int, 3 > nofParams = {{ _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_, _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_, static_cast<\n+int >( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ ) }};\n+398 gridView.comm().max( nofParams.data(), nofParams.size() );\n+399\n+400 // empty grids have no parameters associated\n+401 if( _\bi_\bs_\bE_\bm_\bp_\bt_\by( elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br ) ) )\n+402 {\n+403 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = nofParams[ 0 ];\n+404 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = nofParams[ 1 ];\n+405 }\n+406\n+407 // boundary parameters may be empty\n+408 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = static_cast< bool >( nofParams[ 2 ] );\n+409\n+410 if( (_\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ != nofParams[ 0 ]) || (_\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ != nofParams[ 1 ]) )\n+411 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"Number of parameters differs between processes\"\n+);\n+412\n+413 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 ? indexSet.size( 0 ) : 0 );\n+414 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 ? indexSet.size( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) : 0 );\n+415\n+416 _\bb_\bn_\bd_\bI_\bd_\b_.resize( indexSet.size( 1 ) );\n+417 if( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+418 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize( _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->numBoundarySegments() );\n+419\n+420 for( const auto &element : elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br )\n+)\n+421 {\n+422 if( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+423 {\n+424 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ], dgfFactory._\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+( element ) );\n+425 assert( _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ].size() == static_cast< std::\n+size_t >( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+426 }\n+427\n+428 if( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+429 {\n+430 for( unsigned int v = 0, n = element.subEntities( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ); v < n; ++v )\n+431 {\n+432 const auto index = indexSet.subIndex( element, v, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+433 if( _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].empty() )\n+434 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ], dgfFactory._\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br( element.template\n+subEntity< dimension >( v ) ) );\n+435 assert( _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].size() == static_cast< std::size_t >\n+( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+436 }\n+437 }\n+438\n+439 if( element.hasBoundaryIntersections() )\n+440 {\n+441 for( const auto &intersection : intersections( gridView, element ) )\n+442 {\n+443 // dirty hack: check for \"none\" to make corner point grid work\n+444 if( !intersection.boundary() || intersection.type().isNone() )\n+445 continue;\n+446\n+447 const auto k = indexSet.subIndex( element, intersection.indexInInside(), 1\n+);\n+448 _\bb_\bn_\bd_\bI_\bd_\b_[ k ] = dgfFactory._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd( intersection );\n+449 if( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+450 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_[ intersection.boundarySegmentIndex() ] =\n+dgfFactory._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br( intersection );\n+451 }\n+452 }\n+453 }\n+454 }\n+455\n+_\b4_\b5_\b6 void _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be ( _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b> &factory,\n+457 std::vector& boundaryIds,\n+458 std::vector& elementIds )\n+459 {\n+460 _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_ = _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br( factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd().release() );\n+461\n+462 const auto& gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->leafGridView();\n+463 const auto& indexSet = gridView.indexSet();\n+464\n+465 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = elementIds.empty() ? 0 : 1 ;\n+466 _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = 0;\n+467 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = boundaryIds.empty() ? 0 : 1 ;\n+468\n+469 std::array< int, 3 > nofParams = {{ _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_, _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_, static_cast<\n+int >( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ ) }};\n+470 gridView.comm().max( nofParams.data(), nofParams.size() );\n+471\n+472 // empty grids have no parameters associated\n+473 if( _\bi_\bs_\bE_\bm_\bp_\bt_\by( elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br ) ) )\n+474 {\n+475 _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = nofParams[ 0 ];\n+476 }\n+477\n+478 // boundary parameters may be empty\n+479 _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ = static_cast< bool >( nofParams[ 2 ] );\n+480\n+481 // Reorder boundary IDs according to the insertion index\n+482 if(!boundaryIds.empty() || !elementIds.empty() )\n+483 {\n+484 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize( boundaryIds.size() );\n+485 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( elementIds.size(), std::vector(1) );\n+486 for(const auto& entity : elements( gridView ))\n+487 {\n+488 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( entity ) ][ 0 ] = elementIds\n+[ factory._\bi_\bn_\bs_\be_\br_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx( entity ) ];\n+489 if( _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+490 {\n+491 for(const auto& intersection : intersections( gridView,entity) )\n+492 {\n+493 if(intersection.boundary())\n+494 {\n+495 // DGFBoundaryParameter::type is of type string.\n+496 _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_[intersection.boundarySegmentIndex()] = std::to_string(boundaryIds\n+[factory._\bi_\bn_\bs_\be_\br_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx(intersection)]);\n+497 }\n+498 }\n+499 }\n+500 }\n+501 }\n+502 }\n+503\n+504 template \n+_\b5_\b0_\b5 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\bs ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+506 {\n+507 const auto gridView = _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_->levelGridView( 0 );\n+508 switch( (int)_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n+509 {\n+510 case 0 :\n+511 if( _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 ) {\n+512 if ( gridView.indexSet().index( entity ) >= _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.size() )\n+513 _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( gridView.indexSet().index( entity ) );\n+514 return _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ gridView.indexSet().index( entity ) ];\n+515 }\n+516 break;\n+517 case GridType::dimension :\n+518 if( _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 ) {\n+519 if ( gridView.indexSet().index( entity ) >= _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.size() )\n+520 _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize( gridView.indexSet().index( entity ) );\n+521 return _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ gridView.indexSet().index( entity ) ];\n+522 }\n+523 break;\n+524 }\n+525 return _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n+526 }\n+527\n+_\b5_\b2_\b8 void _\bs_\be_\bt_\bN_\bo_\bf_\bP_\ba_\br_\ba_\bm_\bs( int cdim, int nofP )\n+529 {\n+530 switch (cdim) {\n+531 case 0 : _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ = nofP; break;\n+532 case GridType::dimension : _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ = nofP; break;\n+533 }\n+534 }\n+535\n+_\b5_\b3_\b6 struct _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+537 : public _\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF< DataHandle, char >\n+538 {\n+_\b5_\b3_\b9 explicit _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ( _\bG_\br_\bi_\bd_\bP_\bt_\br &gridPtr )\n+540 : gridPtr_( gridPtr ), idSet_( gridPtr->localIdSet() )\n+541 {\n+542 const auto gridView = gridPtr_->levelGridView( 0 );\n+543 const auto &indexSet = gridView.indexSet();\n+544\n+545 for( const auto &element : elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br )\n+)\n+546 {\n+547 if( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+548 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ], elData_\n+[ idSet_.id( element ) ] );\n+549\n+550 if( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+551 {\n+552 for( unsigned int v = 0, n = element.subEntities( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ); v < n; ++v )\n+553 {\n+554 const auto index = indexSet.subIndex( element, v, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+555 if ( !gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].empty() )\n+556 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ], vtxData_[ idSet_.subId( element, v,\n+_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) ] );\n+557 }\n+558 }\n+559\n+560 if( element.hasBoundaryIntersections() )\n+561 {\n+562 for( const auto &intersection : intersections( gridView, element ) )\n+563 {\n+564 // dirty hack: check for \"none\" to make corner point grid work\n+565 if( !intersection.boundary() || intersection.type().isNone() )\n+566 continue;\n+567\n+568 const int i = intersection.indexInInside();\n+569 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];\n+570 bndData.first = gridPtr_._\bb_\bn_\bd_\bI_\bd_\b_[ indexSet.subIndex( element, i, 1 ) ];\n+571 if( gridPtr_._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+572 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( bndData.second, gridPtr_._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n+[ intersection.boundarySegmentIndex() ] );\n+573 }\n+574 }\n+575 }\n+576 }\n+577\n+_\b5_\b7_\b8 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ( const _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be & ) = delete;\n+_\b5_\b7_\b9 _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ( _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be && ) = delete;\n+580\n+_\b5_\b8_\b1 _\b~_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be ()\n+582 {\n+583 const auto gridView = gridPtr_->levelGridView( 0 );\n+584 const auto &indexSet = gridView.indexSet();\n+585\n+586 if( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+587 gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_.resize( indexSet.size( 0 ) );\n+588 if( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+589 gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_.resize( indexSet.size( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) );\n+590 gridPtr_._\bb_\bn_\bd_\bI_\bd_\b_.resize( indexSet.size( 1 ) );\n+591 if( gridPtr_._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+592 gridPtr_._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_.resize( gridPtr_->numBoundarySegments() );\n+593\n+594 for( const auto &element : elements( gridView, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\ba_\bl_\bl ) )\n+595 {\n+596 if( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+597 {\n+598 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ], elData_\n+[ idSet_.id( element ) ] );\n+599 assert( gridPtr_._\be_\bl_\bP_\ba_\br_\ba_\bm_\b_[ indexSet.index( element ) ].size() ==\n+static_cast< std::size_t >( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+600 }\n+601\n+602 if( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0 )\n+603 {\n+604 for( unsigned int v = 0; v < element.subEntities( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ); ++v )\n+605 {\n+606 const auto index = indexSet.subIndex( element, v, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+607 if( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].empty() )\n+608 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ], vtxData_[ idSet_.subId( element, v,\n+_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ) ] );\n+609 assert( gridPtr_._\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_[ index ].size() == static_cast< std::size_t >\n+( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+610 }\n+611 }\n+612\n+613 if( element.hasBoundaryIntersections() )\n+614 {\n+615 for( const auto &intersection : intersections( gridView, element ) )\n+616 {\n+617 // dirty hack: check for \"none\" to make corner point grid work\n+618 if( !intersection.boundary() || intersection.type().isNone() )\n+619 continue;\n+620\n+621 const int i = intersection.indexInInside();\n+622 auto &bndData = bndData_[ idSet_.subId( element, i, 1 ) ];\n+623 gridPtr_._\bb_\bn_\bd_\bI_\bd_\b_[ indexSet.subIndex( element, i, 1 ) ] = bndData.first;\n+624 if( gridPtr_._\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_ )\n+625 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( bndData.second, gridPtr_._\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n+[ intersection.boundarySegmentIndex() ] );\n+626 }\n+627 }\n+628 }\n+629 }\n+630\n+631 _\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b,_\b _\bc_\bh_\ba_\br_\b _\b> &_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be () { return *this; }\n+632\n+_\b6_\b3_\b3 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs ( int dim, int codim ) const\n+634 {\n+635 assert( dim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+636 // do not use a switch statement, because dimension == 1 is possible\n+637 return (codim == 1) || ((codim == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ >\n+0)) || ((codim == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0));\n+638 }\n+639\n+_\b6_\b4_\b0 bool _\bf_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be (int /* dim */, int /* codim */) const { return false; }\n+641\n+642 template< class Entity >\n+_\b6_\b4_\b3 std::size_t _\bs_\bi_\bz_\be ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+644 {\n+645 std::size_t totalSize = 0;\n+646\n+647 // do not use a switch statement, because dimension == 1 is possible\n+648 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n+649 {\n+650 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >\n+( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+651 for( double &v : elData_[ idSet_.id( entity ) ] )\n+652 totalSize += dataSize( v );\n+653 }\n+654\n+655 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n+656 {\n+657 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t\n+>( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+658 for( double &v : vtxData_[ idSet_.id( entity ) ] )\n+659 totalSize += dataSize( v );\n+660 }\n+661\n+662 if( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1 )\n+663 {\n+664 const auto bndData = bndData_.find( idSet_.id( entity ) );\n+665 if( bndData != bndData_.end() )\n+666 totalSize += dataSize( bndData->second.first ) + dataSize( bndData-\n+>second.second );\n+667 }\n+668\n+669 return totalSize;\n+670 }\n+671\n+672 template< class Buffer, class Entity >\n+_\b6_\b7_\b3 void _\bg_\ba_\bt_\bh_\be_\br ( Buffer &buffer, const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+674 {\n+675 // do not use a switch statement, because dimension == 1 is possible\n+676 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n+677 {\n+678 assert( elData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t >\n+( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+679 for( double &v : elData_[ idSet_.id( entity ) ] )\n+680 write( buffer, v );\n+681 }\n+682\n+683 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n+684 {\n+685 assert( vtxData_[ idSet_.id( entity ) ].size() == static_cast< std::size_t\n+>( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ ) );\n+686 for( double &v : vtxData_[ idSet_.id( entity ) ] )\n+687 write( buffer, v );\n+688 }\n+689\n+690 if( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1 )\n+691 {\n+692 const auto bndData = bndData_.find( idSet_.id( entity ) );\n+693 if( bndData != bndData_.end() )\n+694 {\n+695 write( buffer, bndData->second.first );\n+696 write( buffer, bndData->second.second );\n+697 }\n+698 }\n+699 }\n+700\n+701 template< class Buffer, class Entity >\n+_\b7_\b0_\b2 void _\bs_\bc_\ba_\bt_\bt_\be_\br ( Buffer &buffer, const _\bE_\bn_\bt_\bi_\bt_\by &entity, std::size_t n )\n+703 {\n+704 // do not use a switch statement, because dimension == 1 is possible\n+705 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 0) && (gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n+706 {\n+707 auto &p = elData_[ idSet_.id( entity ) ];\n+708 p.resize( gridPtr_._\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_ );\n+709 for( double &v : p )\n+710 read( buffer, v, n );\n+711 }\n+712\n+713 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) && (gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ > 0) )\n+714 {\n+715 auto &p = vtxData_[ idSet_.id( entity ) ];\n+716 p.resize( gridPtr_._\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_ );\n+717 for( double &v : p )\n+718 read( buffer, v, n );\n+719 }\n+720\n+721 if( (_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1) && (n > 0) )\n+722 {\n+723 auto &bndData = bndData_[ idSet_.id( entity ) ];\n+724 read( buffer, bndData.first, n );\n+725 read( buffer, bndData.second, n );\n+726 }\n+727\n+728 assert( n == 0 );\n+729 }\n+730\n+731 private:\n+732 template< class T >\n+733 static std::enable_if_t< std::is_trivially_copyable< T >::value, std::\n+size_t > dataSize ( const T & /* value */ )\n+734 {\n+735 return sizeof( T );\n+736 }\n+737\n+738 static std::size_t dataSize ( const std::string &s )\n+739 {\n+740 return dataSize( s.size() ) + s.size();\n+741 }\n+742\n+743 template< class Buffer, class T >\n+744 static std::enable_if_t< std::is_trivially_copyable< T >::value > write\n+( Buffer &buffer, const T &value )\n+745 {\n+746 std::array< char, sizeof( T ) > bytes;\n+747 std::memcpy( bytes.data(), &value, sizeof( T ) );\n+748 for( char &b : bytes )\n+749 buffer.write( b );\n+750 }\n+751\n+752 template< class Buffer >\n+753 static void write ( Buffer &buffer, const std::string &s )\n+754 {\n+755 write( buffer, s.size() );\n+756 for( const char &c : s )\n+757 buffer.write( c );\n+758 }\n+759\n+760 template< class Buffer, class T >\n+761 static std::enable_if_t< std::is_trivially_copyable< T >::value > read\n+( Buffer &buffer, T &value, std::size_t &n )\n+762 {\n+763 assert( n >= sizeof( T ) );\n+764 n -= sizeof( T );\n+765\n+766 std::array< char, sizeof( T ) > bytes;\n+767 for( char &b : bytes )\n+768 buffer.read( b );\n+769 std::memcpy( &value, bytes.data(), sizeof( T ) );\n+770 }\n+771\n+772 template< class Buffer >\n+773 static void read ( Buffer &buffer, std::string &s, std::size_t &n )\n+774 {\n+775 std::size_t _\bs_\bi_\bz_\be;\n+776 read( buffer, _\bs_\bi_\bz_\be, n );\n+777 s.resize( _\bs_\bi_\bz_\be );\n+778\n+779 assert( n >= _\bs_\bi_\bz_\be );\n+780 n -= _\bs_\bi_\bz_\be;\n+781\n+782 for( char &c : s )\n+783 buffer.read( c );\n+784 }\n+785\n+786 _\bG_\br_\bi_\bd_\bP_\bt_\br &gridPtr_;\n+787 const typename GridType::LocalIdSet &idSet_;\n+788 mutable std::map< typename GridType::LocalIdSet::IdType, std::vector<\n+double > > elData_, vtxData_;\n+789 mutable std::map< typename GridType::LocalIdSet::IdType, std::pair< int,\n+DGFBoundaryParameter::type > > bndData_;\n+790 };\n+791\n+792 // grid auto pointer\n+_\b7_\b9_\b3 mutable _\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br _\bg_\br_\bi_\bd_\bP_\bt_\br_\b_;\n+794 // element and vertex parameters\n+_\b7_\b9_\b5 std::vector< std::vector< double > > _\be_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n+_\b7_\b9_\b6 std::vector< std::vector< double > > _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n+_\b7_\b9_\b7 std::vector< DGFBoundaryParameter::type > _\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n+_\b7_\b9_\b8 std::vector< int > _\bb_\bn_\bd_\bI_\bd_\b_;\n+_\b7_\b9_\b9 std::vector< double > _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n+800\n+_\b8_\b0_\b1 int _\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_;\n+_\b8_\b0_\b2 int _\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_;\n+_\b8_\b0_\b3 bool _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_;\n+804 }; // end of class GridPtr\n+805\n+806} // end namespace Dune\n+807\n+808#endif\n+_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n+Describes the parallel communication interface class for MessageBuffers and\n+DataHandles.\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh\n+_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n+_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n+@ ForwardCommunication\n+communicate as given in InterfaceType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ InteriorBorder_All_Interface\n+send interior and border, receive all entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n+const IndexSet & indexSet() const\n+obtain the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n+_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n+> &b)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be\n-DataMode\n-Whether to produce conforming or non-conforming output.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-@ conforming\n-Output conforming data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\ba_\bl_\bl\n+constexpr All all\n+PartitionSet for all partitions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:296\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br\n+constexpr InteriorBorder interiorBorder\n+PartitionSet for the interior and border partitions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II\n+> &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\br_\bi_\bd\n+Grid * grid()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Element &element)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+size_t boundarySegmentIndex() const\n+index of the boundary segment within the macro grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF\n+CommDataHandleIF describes the features of a data handle for communication in\n+parallel runs using the...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int codimension\n+Know your own codimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+Base class for exceptions in Dune grid modules.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bi_\bo_\bn_\bI_\bn_\bd_\be_\bx\n+virtual unsigned int insertionIndex(const typename Codim< 0 >::Entity &entity)\n+const\n+obtain an element's insertion index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Provide a generic factory class for unstructured grids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+virtual std::unique_ptr< GridType > createGrid()\n+Finalize grid creation and hand over the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n Grid view abstract base class.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n-Writer for the ouput of grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n-VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const\n-std::string &name, const std::string &path, const std::string &extendpath)\n-Constructor with a given VTKWriter or SubsamplingVTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n-VTKSequenceWriter(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const\n-std::string &name)\n-Constructor with a given VTKWriter or SubsamplingVTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n-VTKSequenceWriter(const GridView &gridView, const std::string &name, const\n-std::string &path, const std::string &extendpath, VTK::DataMode dm=VTK::\n-conforming)\n-Constructor creating its own VTKWriter object.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-Base class to write pvd-files which contains a list of all collected vtk-files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br\n-const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-Writer for the ouput of grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+exception class for IO errors in the DGF parser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n+Class for constructing grids from DGF files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n+GridPtr(std::istream &input, MPICommunicatorType comm=MPIHelper::\n+getCommunicator())\n+constructor given a std::istream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+const std::vector< double > & parameters(const Entity &entity) const\n+get parameters defined for each codim 0 und dim entity on the grid through the\n+grid file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:325\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n+GridPtr()\n+Default constructor, creating empty GridPtr.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:217\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+const GridType & operator*() const\n+return const reference to GridType instance\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:288\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n+bool haveBndParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:803\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\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 gridptr.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bb_\bn_\bd_\bI_\bd_\b_\n+std::vector< int > bndId_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:798\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bs_\be_\bt_\bN_\bo_\bf_\bP_\ba_\br_\ba_\bm_\bs\n+void setNofParams(int cdim, int nofP)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:528\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bl_\bo_\ba_\bd_\bB_\ba_\bl_\ba_\bn_\bc_\be\n+void loadBalance()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:369\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bb_\bn_\bd_\bP_\ba_\br_\ba_\bm_\b_\n+std::vector< DGFBoundaryParameter::type > bndParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:797\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n+void initialize(GridFactory< GridType > &factory, std::vector< int >\n+&boundaryIds, std::vector< int > &elementIds)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:456\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n+GridPtr(GridType *grd)\n+Constructor storing given pointer to internal auto pointer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bE_\bl_\bP_\ba_\br_\ba_\bm_\b_\n+int nofElParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:801\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+const DGFBoundaryParameter::type & parameters(const Intersection< GridImp,\n+IntersectionImp > &intersection) const\n+get parameters for intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:351\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+GridType & operator*()\n+return reference to GridType instance\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:278\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bi_\bs_\bE_\bm_\bp_\bt_\by\n+static bool isEmpty(Range &&range)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:381\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int nofParameters(const Entity &) const\n+get parameters defined for given entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:311\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n+GridPtr(const std::string &filename, MPICommunicatorType comm=MPIHelper::\n+getCommunicator())\n+constructor given the name of a DGF file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\be_\bl_\bP_\ba_\br_\ba_\bm_\b_\n+std::vector< std::vector< double > > elParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:795\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+MPIHelper::MPICommunicator MPICommunicatorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+GridPtr & operator=(const GridPtr &org)\n+assignment of grid pointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int nofParameters(int cdim) const\n+get number of parameters defined for a given codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:301\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int nofParameters(const Intersection< GridImp, IntersectionImp > &intersection)\n+const\n+get number of parameters defined for a given intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:318\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_\n+std::vector< double > emptyParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:799\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bg_\br_\bi_\bd_\bP_\bt_\br_\b_\n+mygrid_ptr gridPtr_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:793\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\br_\be_\ba_\bd_\bG_\bm_\bs_\bh\n+void readGmsh(const std::string &filename, std::integral_constant< bool, false\n+>)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\br_\be_\ba_\bd_\bG_\bm_\bs_\bh\n+void readGmsh(const std::string &filename, std::integral_constant< bool, true\n+>)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bp_\ba_\br_\ba_\bm_\bs\n+std::vector< double > & params(const Entity &entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:505\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n+void initialize(DGFGridFactory< GridType > &dgfFactory)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:386\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br\n+GridPtr(const GridPtr &org)=default\n+Copy constructor, copies internal auto pointer.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bg_\be_\bt_\bF_\bi_\bl_\be_\bE_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn\n+std::string getFileExtension(const std::string &filename) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n+const GridType * operator->() const\n+return const pointer to GridType instance\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:293\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+GridType * release()\n+release pointer from internal ownership\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:298\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be\n+void communicate()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:360\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_\n+std::vector< std::vector< double > > vtxParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:796\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n+GridType * operator->()\n+return pointer to GridType instance\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:283\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bn_\bo_\bf_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm_\b_\n+int nofVtxParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:802\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n+mygrid_ptr(GridType *grd)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\b~_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n+~mygrid_ptr()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+GridType * release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n+mygrid_ptr(const mygrid_ptr &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+mygrid_ptr & operator=(const mygrid_ptr &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br_\b:_\b:_\bm_\by_\bg_\br_\bi_\bd_\b__\bp_\bt_\br\n+mygrid_ptr()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:538\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+CommDataHandleIF< DataHandle, char > & interface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:631\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+DataHandle(const DataHandle &)=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\b~_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+~DataHandle()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:581\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+DataHandle(GridPtr &gridPtr)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:539\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bg_\ba_\bt_\bh_\be_\br\n+void gather(Buffer &buffer, const Entity &entity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:673\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bf_\bi_\bx_\be_\bd_\bS_\bi_\bz_\be\n+bool fixedSize(int, int) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:640\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size(const Entity &entity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:643\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be\n+DataHandle(DataHandle &&)=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bs_\bc_\ba_\bt_\bt_\be_\br\n+void scatter(Buffer &buffer, const Entity &entity, std::size_t n)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:702\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bP_\bt_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(int dim, int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridptr.hh:633\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n+static const type & defaultValue()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static std::unique_ptr< Grid > read(const std::string &fileName, bool\n+verbose=true, bool insertBoundarySegments=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:904\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a00950.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00950.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dataarraywriter.hh File Reference\n+dune-grid: gmshreader.hh File Reference\n \n \n \n \n \n \n \n@@ -65,78 +65,84 @@\n \n \n \n \n \n \n \n
    \n \n-
    dataarraywriter.hh File Reference
    \n+Namespaces |\n+Enumerations |\n+Functions
    \n+
    gmshreader.hh File Reference
    \n \n
    \n-\n-

    Data array writers for the VTKWriter. \n-More...

    \n-
    #include <cstdint>
    \n+
    #include <cstdarg>
    \n+#include <cstdio>
    \n+#include <cstring>
    \n+#include <fstream>
    \n #include <iostream>
    \n+#include <map>
    \n+#include <memory>
    \n #include <string>
    \n-#include <iomanip>
    \n-#include <cmath>
    \n+#include <tuple>
    \n+#include <vector>
    \n+#include <utility>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/common/indent.hh>
    \n-#include <dune/grid/io/file/vtk/streams.hh>
    \n-#include <dune/grid/io/file/vtk/common.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/grid/common/boundarysegment.hh>
    \n+#include <dune/grid/common/gridfactory.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n-\n-\n-\n-\n-\n-\n-\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::VTK::DataArrayWriter
     base class for data array writers More...
     
    class  Dune::VTK::AsciiDataArrayWriter
     a streaming writer for data array tags, uses ASCII inline format More...
     
    class  Dune::VTK::BinaryDataArrayWriter
     a streaming writer for data array tags, uses binary inline format More...
     
    class  Dune::VTK::AppendedRawDataArrayWriter
     a streaming writer for data array tags, uses appended raw format More...
    struct  Dune::GmshReaderOptions
     Options for read operation. More...
     
    class  Dune::VTK::AppendedBase64DataArrayWriter
     a streaming writer for data array tags, uses appended base64 format More...
    class  Dune::GmshReaderParser< GridType >
     dimension independent parts for GmshReaderParser More...
     
    class  Dune::VTK::NakedBase64DataArrayWriter
     a streaming writer for appended data array tags, uses base64 format More...
     
    class  Dune::VTK::NakedRawDataArrayWriter
     a streaming writer for appended data arrays, uses raw format More...
     
    class  Dune::VTK::DataArrayWriterFactory
     a factory for DataArrayWriters More...
    class  Dune::GmshReader< GridType >
     Read Gmsh mesh file. More...
     
    \n \n \n \n \n-\n+\n \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
    namespace  Dune::Gmsh
     
    \n+\n+\n+\n+\n+

    \n+Enumerations

    enum class  Dune::Gmsh::ReaderOptions { Dune::Gmsh::ReaderOptions::verbose = 1\n+, Dune::Gmsh::ReaderOptions::insertBoundarySegments = 2\n+, Dune::Gmsh::ReaderOptions::readElementData = 4\n+, Dune::Gmsh::ReaderOptions::readBoundaryData = 8\n+ }
     Option for the Gmsh mesh file reader. More...
     
    \n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    constexpr ReaderOptions Dune::Gmsh::operator| (ReaderOptions a, ReaderOptions b)
     composition operator for reader options
     
    constexpr bool Dune::Gmsh::operator& (ReaderOptions a, ReaderOptions b)
     query operator for reader options (is b set in a)
     
    \n-

    Detailed Description

    \n-

    Data array writers for the VTKWriter.

    \n-
    Author
    Peter Bastian, Christian Engwer
    \n-

    This file contains classes to help writing data in the difeerent VTK output modes

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,65 +2,60 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dataarraywriter.hh File Reference\n-Data array writers for the VTKWriter. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \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+gmshreader.hh File Reference\n+#include \n+#include \n+#include \n+#include \n #include \n+#include \n+#include \n #include \n-#include \n-#include \n+#include \n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\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:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 base class for data array writers _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0 Options for read operation. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 a streaming writer for data array tags, uses ASCII inline format\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 a streaming writer for data array tags, uses binary inline format\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 a streaming writer for data array tags, uses appended raw format\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 a streaming writer for data array tags, uses appended base64 format\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 a streaming writer for appended data array tags, uses base64 format\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 dimension independent parts for _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-\u00a0 a streaming writer for appended data arrays, uses raw format _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-\u00a0 a factory for DataArrayWriters _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 Read _\bG_\bm_\bs_\bh mesh file. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh\n+\u00a0\n+E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n+enum class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs { _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bv_\be_\br_\bb_\bo_\bs_\be = 1\n+ , _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs = 2 , _\bD_\bu_\bn_\be_\b:_\b:\n+ _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba = 4 , _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:\n+ _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba = 8 }\n+\u00a0 Option for the Gmsh mesh file reader. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+constexpr _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b| (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+ b)\n+\u00a0 composition operator for reader options\n+\u00a0\n+ constexpr bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b& (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+ b)\n+\u00a0 query operator for reader options (is b set in a)\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-Data array writers for the VTKWriter.\n- Author\n- Peter Bastian, Christian Engwer\n-This file contains classes to help writing data in the difeerent VTK output\n-modes\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00950_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00950_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: dataarraywriter.hh Source File\n+dune-grid: gmshreader.hh Source File\n \n \n \n \n \n \n \n@@ -70,526 +70,1167 @@\n \n \n \n \n \n \n \n
    \n-
    dataarraywriter.hh
    \n+
    gmshreader.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH
    \n+
    6#ifndef DUNE_GMSHREADER_HH
    \n+
    7#define DUNE_GMSHREADER_HH
    \n
    8
    \n-
    9#include <cstdint>
    \n-
    10#include <iostream>
    \n-
    11#include <string>
    \n-
    12#include <iomanip>
    \n-
    13#include <cstdint>
    \n-
    14#include <cmath>
    \n-
    15
    \n-
    16#include <dune/common/exceptions.hh>
    \n-
    17#include <dune/common/indent.hh>
    \n-
    18
    \n-\n-\n-
    21
    \n-
    30namespace Dune
    \n-
    31{
    \n-
    34
    \n-
    35 namespace VTK {
    \n-
    36
    \n-
    38
    \n-
    \n-\n-
    56 {
    \n-
    57 public:
    \n-
    59
    \n-
    \n-\n-
    64 : prec(_prec)
    \n-
    65 {}
    \n-
    \n-
    66
    \n-
    68 template<class T>
    \n-
    \n-
    69 void write(T data)
    \n-
    70 {
    \n-
    71 switch(prec)
    \n-
    72 {
    \n-\n-
    74 writeFloat32(data); break;
    \n-\n-
    76 writeFloat64(data); break;
    \n-\n-
    78 writeUInt32(data); break;
    \n-\n-
    80 writeUInt8(data); break;
    \n-\n-
    82 writeInt32(data); break;
    \n-
    83 default:
    \n-
    84 DUNE_THROW(Dune::NotImplemented, "Unknown precision type");
    \n-
    85 }
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    89 virtual bool writeIsNoop() const { return false; }
    \n-
    91 virtual ~DataArrayWriter () {}
    \n-
    92
    \n-
    93 private:
    \n-
    95 virtual void writeFloat32 (float data) = 0;
    \n-
    97 virtual void writeFloat64 (double data) = 0;
    \n-
    99 virtual void writeInt32 (std::int32_t data) = 0;
    \n-
    101 virtual void writeUInt8 (std::uint8_t data) = 0;
    \n-
    103 virtual void writeUInt32 (std::uint32_t data) = 0;
    \n-
    104
    \n-
    105 Precision prec;
    \n-
    106 };
    \n-
    \n-
    107
    \n-
    \n-\n-
    110 {
    \n-
    111 public:
    \n-
    113
    \n-
    \n-
    121 AsciiDataArrayWriter(std::ostream& theStream, std::string name,
    \n-
    122 int ncomps, const Indent& indent_, Precision prec_)
    \n-
    123 : DataArrayWriter(prec_), s(theStream), counter(0), numPerLine(12), indent(indent_)
    \n-
    124 {
    \n-
    125 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n-
    126 << "Name=\\"" << name << "\\" ";
    \n-
    127 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n-
    128 s << "format=\\"ascii\\">\\n";
    \n-
    129 ++indent;
    \n-
    130 }
    \n-
    \n+
    9#include <cstdarg>
    \n+
    10#include <cstdio>
    \n+
    11#include <cstring>
    \n+
    12#include <fstream>
    \n+
    13#include <iostream>
    \n+
    14#include <map>
    \n+
    15#include <memory>
    \n+
    16#include <string>
    \n+
    17#include <tuple>
    \n+
    18#include <vector>
    \n+
    19#include <utility>
    \n+
    20
    \n+
    21#include <dune/common/exceptions.hh>
    \n+
    22#include <dune/common/fvector.hh>
    \n+
    23
    \n+
    24#include <dune/geometry/type.hh>
    \n+
    25
    \n+\n+\n+
    28
    \n+
    29namespace Dune
    \n+
    30{
    \n+
    31
    \n+
    \n+\n+
    39 {
    \n+
    \n+\n+\n+\n+
    45 };
    \n+
    \n+
    46 };
    \n+
    \n+
    47
    \n+
    48 namespace {
    \n+
    49
    \n+
    50 // arbitrary dimension, implementation is in specialization
    \n+
    51 template< int dimension, int dimWorld = dimension >
    \n+
    52 class GmshReaderQuadraticBoundarySegment
    \n+
    53 {
    \n+
    54 public:
    \n+
    55 // empty function since this class does not implement anything
    \n+
    56 static void registerFactory() {}
    \n+
    57 };
    \n+
    58
    \n+
    59 // quadratic boundary segments in 1d
    \n+
    60 /*
    \n+
    61 Note the points
    \n+
    62
    \n+
    63 (0) (alpha) (1)
    \n+
    64
    \n+
    65 are mapped to the points in global coordinates
    \n+
    66
    \n+
    67 p0 p2 p1
    \n+
    68
    \n+
    69 alpha is determined automatically from the given points.
    \n+
    70 */
    \n+
    71 template< int dimWorld >
    \n+
    72 struct GmshReaderQuadraticBoundarySegment< 2, dimWorld >
    \n+
    73 : public Dune::BoundarySegment< 2, dimWorld >
    \n+
    74 {
    \n+
    75 typedef GmshReaderQuadraticBoundarySegment< 2, dimWorld > ThisType;
    \n+
    76 typedef typename Dune::BoundarySegment< 2, dimWorld > :: ObjectStreamType ObjectStreamType;
    \n+
    77 typedef Dune::FieldVector< double, dimWorld > GlobalVector;
    \n+
    78
    \n+
    79 GmshReaderQuadraticBoundarySegment ( const GlobalVector &p0_, const GlobalVector &p1_, const GlobalVector &p2_)
    \n+
    80 : p0(p0_), p1(p1_), p2(p2_)
    \n+
    81 {
    \n+
    82 init();
    \n+
    83 }
    \n+
    84
    \n+
    85 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )
    \n+
    86 {
    \n+
    87 // key is read before by the factory
    \n+
    88 const int bytes = sizeof(double)*dimWorld;
    \n+
    89 in.read( (char *) &p0[ 0 ], bytes );
    \n+
    90 in.read( (char *) &p1[ 0 ], bytes );
    \n+
    91 in.read( (char *) &p2[ 0 ], bytes );
    \n+
    92 init();
    \n+
    93 }
    \n+
    94
    \n+
    95 static void registerFactory()
    \n+
    96 {
    \n+
    97 if( key() < 0 )
    \n+
    98 {
    \n+
    99 key() = Dune::BoundarySegment< 2, dimWorld >::template registerFactory< ThisType >();
    \n+
    100 }
    \n+
    101 }
    \n+
    102
    \n+
    103 virtual GlobalVector operator() ( const Dune::FieldVector<double,1> &local ) const
    \n+
    104 {
    \n+
    105 GlobalVector y;
    \n+
    106 y = 0.0;
    \n+
    107 y.axpy((local[0]-alpha)*(local[0]-1.0)/alpha,p0);
    \n+
    108 y.axpy(local[0]*(local[0]-1.0)/(alpha*(alpha-1.0)),p1);
    \n+
    109 y.axpy(local[0]*(local[0]-alpha)/(1.0-alpha),p2);
    \n+
    110 return y;
    \n+
    111 }
    \n+
    112
    \n+
    113 void backup( ObjectStreamType& out ) const
    \n+
    114 {
    \n+
    115 // backup key to identify object
    \n+
    116 out.write( (const char *) &key(), sizeof( int ) );
    \n+
    117 // backup data
    \n+
    118 const int bytes = sizeof(double)*dimWorld;
    \n+
    119 out.write( (const char*) &p0[ 0 ], bytes );
    \n+
    120 out.write( (const char*) &p1[ 0 ], bytes );
    \n+
    121 out.write( (const char*) &p2[ 0 ], bytes );
    \n+
    122 }
    \n+
    123
    \n+
    124 protected:
    \n+
    125 void init()
    \n+
    126 {
    \n+
    127 GlobalVector d1 = p1;
    \n+
    128 d1 -= p0;
    \n+
    129 GlobalVector d2 = p2;
    \n+
    130 d2 -= p1;
    \n
    131
    \n-
    \n-\n-
    134 {
    \n-
    135 if (counter%numPerLine!=0) s << "\\n";
    \n-
    136 --indent;
    \n-
    137 s << indent << "</DataArray>\\n";
    \n-
    138 }
    \n-
    \n-
    139
    \n-
    140 private:
    \n-
    142 void writeFloat64 (double data) final
    \n-
    143 { write_float(data); }
    \n-
    145 void writeFloat32 (float data) final
    \n-
    146 { write_float(data); }
    \n-
    148 void writeInt32 (std::int32_t data) final
    \n-
    149 { write_(data); }
    \n-
    151 void writeUInt32 (std::uint32_t data) final
    \n-
    152 { write_(data); }
    \n-
    154 void writeUInt8 (std::uint8_t data) final
    \n-
    155 { write_(data); }
    \n-
    156
    \n-
    157 template<class T>
    \n-
    158 void write_(T data)
    \n-
    159 {
    \n-
    160 typedef typename PrintType<T>::Type PT;
    \n-
    161 if(counter%numPerLine==0) s << indent;
    \n-
    162 else s << " ";
    \n-
    163 const auto original_precision = std::cout.precision();
    \n-
    164 s << std::setprecision(std::numeric_limits<PT>::digits10) << (PT) data;
    \n-
    165 std::cout.precision(original_precision);
    \n-
    166 counter++;
    \n-
    167 if (counter%numPerLine==0) s << "\\n";
    \n-
    168 }
    \n-
    169
    \n-
    170 template<class T>
    \n-
    171 void write_float(T data)
    \n-
    172 {
    \n-
    173 typedef typename PrintType<T>::Type PT;
    \n-
    174 if(counter%numPerLine==0) s << indent;
    \n-
    175 else s << " ";
    \n-
    176 PT out_data = (PT) data;
    \n-
    177 if (std::fpclassify(out_data) == FP_SUBNORMAL)
    \n-
    178 {
    \n-
    179 // truncate denormalized data to 0 to avoid Paraview segfaults on macOS
    \n-
    180 out_data = 0;
    \n-
    181 }
    \n-
    182 const auto original_precision = std::cout.precision();
    \n-
    183 s << std::setprecision(std::numeric_limits<PT>::digits10) << out_data;
    \n-
    184 std::cout.precision(original_precision);
    \n-
    185 counter++;
    \n-
    186 if (counter%numPerLine==0) s << "\\n";
    \n-
    187 }
    \n-
    188
    \n-
    189 std::ostream& s;
    \n-
    190 int counter;
    \n-
    191 int numPerLine;
    \n-
    192 Indent indent;
    \n-
    193 };
    \n-
    \n-
    194
    \n-
    \n-\n-
    197 {
    \n-
    198 public:
    \n-
    200
    \n-
    \n-
    210 BinaryDataArrayWriter(std::ostream& theStream, std::string name,
    \n-
    211 int ncomps, int nitems, const Indent& indent_, Precision prec_)
    \n-
    212 : DataArrayWriter(prec_), s(theStream), b64(theStream), indent(indent_)
    \n-
    213 {
    \n-
    214 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n-
    215 << "Name=\\"" << name << "\\" ";
    \n-
    216 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n-
    217 s << "format=\\"binary\\">\\n";
    \n+
    132 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());
    \n+
    133 if (alpha<1E-6 || alpha>1-1E-6)
    \n+
    134 DUNE_THROW(Dune::IOError, "ration in quadratic boundary segment bad");
    \n+
    135 }
    \n+
    136
    \n+
    137 static int& key() {
    \n+
    138 static int k = -1;
    \n+
    139 return k;
    \n+
    140 }
    \n+
    141
    \n+
    142 private:
    \n+
    143 GlobalVector p0,p1,p2;
    \n+
    144 double alpha;
    \n+
    145 };
    \n+
    146
    \n+
    147
    \n+
    148 // quadratic boundary segments in 2d
    \n+
    149 /* numbering of points corresponding to gmsh:
    \n+
    150
    \n+
    151 2
    \n+
    152
    \n+
    153 5 4
    \n+
    154
    \n+
    155 0 3 1
    \n+
    156
    \n+
    157 Note: The vertices 3, 4, 5 are not necessarily at the edge midpoints but can
    \n+
    158 be placed with parameters alpha, beta , gamma at the following positions
    \n+
    159 in local coordinates:
    \n+
    160
    \n+
    161
    \n+
    162 2 = (0,1)
    \n+
    163
    \n+
    164 5 = (0,beta) 4 = (1-gamma/sqrt(2),gamma/sqrt(2))
    \n+
    165
    \n+
    166 0 = (0,0) 3 = (alpha,0) 1 = (1,0)
    \n+
    167
    \n+
    168 The parameters alpha, beta, gamma are determined from the given vertices in
    \n+
    169 global coordinates.
    \n+
    170 */
    \n+
    171 template<>
    \n+
    172 class GmshReaderQuadraticBoundarySegment< 3, 3 >
    \n+
    173 : public Dune::BoundarySegment< 3 >
    \n+
    174 {
    \n+
    175 typedef GmshReaderQuadraticBoundarySegment< 3, 3 > ThisType;
    \n+
    176 typedef typename Dune::BoundarySegment< 3 > :: ObjectStreamType ObjectStreamType;
    \n+
    177 public:
    \n+
    178 GmshReaderQuadraticBoundarySegment (Dune::FieldVector<double,3> p0_, Dune::FieldVector<double,3> p1_,
    \n+
    179 Dune::FieldVector<double,3> p2_, Dune::FieldVector<double,3> p3_,
    \n+
    180 Dune::FieldVector<double,3> p4_, Dune::FieldVector<double,3> p5_)
    \n+
    181 : p0(p0_), p1(p1_), p2(p2_), p3(p3_), p4(p4_), p5(p5_)
    \n+
    182 {
    \n+
    183 init();
    \n+
    184 }
    \n+
    185
    \n+
    186 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )
    \n+
    187 {
    \n+
    188 const int bytes = sizeof(double)*3;
    \n+
    189 in.read( (char *) &p0[ 0 ], bytes );
    \n+
    190 in.read( (char *) &p1[ 0 ], bytes );
    \n+
    191 in.read( (char *) &p2[ 0 ], bytes );
    \n+
    192 in.read( (char *) &p3[ 0 ], bytes );
    \n+
    193 in.read( (char *) &p4[ 0 ], bytes );
    \n+
    194 in.read( (char *) &p5[ 0 ], bytes );
    \n+
    195 init();
    \n+
    196 }
    \n+
    197
    \n+
    198 static void registerFactory()
    \n+
    199 {
    \n+
    200 if( key() < 0 )
    \n+
    201 {
    \n+
    202 key() = Dune::BoundarySegment< 3 >::template registerFactory< ThisType >();
    \n+
    203 }
    \n+
    204 }
    \n+
    205
    \n+
    206 virtual Dune::FieldVector<double,3> operator() (const Dune::FieldVector<double,2>& local) const
    \n+
    207 {
    \n+
    208 Dune::FieldVector<double,3> y;
    \n+
    209 y = 0.0;
    \n+
    210 y.axpy(phi0(local),p0);
    \n+
    211 y.axpy(phi1(local),p1);
    \n+
    212 y.axpy(phi2(local),p2);
    \n+
    213 y.axpy(phi3(local),p3);
    \n+
    214 y.axpy(phi4(local),p4);
    \n+
    215 y.axpy(phi5(local),p5);
    \n+
    216 return y;
    \n+
    217 }
    \n
    218
    \n-
    219 // write indentation for the data chunk
    \n-
    220 s << indent+1;
    \n-
    221 // store size, needs to be exactly 32 bit
    \n-
    222 std::uint32_t size = ncomps*nitems*typeSize(prec_);
    \n-
    223 b64.write(size);
    \n-
    224 b64.flush();
    \n-
    225 }
    \n-
    \n-
    226
    \n-
    \n-\n-
    229 {
    \n-
    230 b64.flush();
    \n-
    231 // append newline to written data
    \n-
    232 s << "\\n";
    \n-
    233 s << indent << "</DataArray>\\n";
    \n-
    234 s.flush();
    \n-
    235 }
    \n-
    \n-
    236
    \n-
    237 private:
    \n-
    239 void writeFloat64 (double data) final
    \n-
    240 { write_(data); }
    \n-
    242 void writeFloat32 (float data) final
    \n-
    243 { write_(data); }
    \n-
    245 void writeInt32 (std::int32_t data) final
    \n-
    246 { write_(data); }
    \n-
    248 void writeUInt32 (std::uint32_t data) final
    \n-
    249 { write_(data); }
    \n-
    251 void writeUInt8 (std::uint8_t data) final
    \n-
    252 { write_(data); }
    \n-
    253
    \n-
    255 template<class T>
    \n-
    256 void write_(T data)
    \n-
    257 {
    \n-
    258 b64.write(data);
    \n-
    259 }
    \n-
    260
    \n-
    261 std::ostream& s;
    \n-
    262 Base64Stream b64;
    \n-
    263 const Indent& indent;
    \n-
    264 };
    \n-
    \n-
    265
    \n-
    \n-\n-
    268 {
    \n-
    269 public:
    \n-
    271
    \n-
    \n-
    283 AppendedRawDataArrayWriter(std::ostream& s, std::string name,
    \n-
    284 int ncomps, unsigned nitems, unsigned& offset,
    \n-
    285 const Indent& indent, Precision prec_)
    \n-
    286 : DataArrayWriter(prec_)
    \n-
    287 {
    \n-
    288 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n-
    289 << "Name=\\"" << name << "\\" ";
    \n-
    290 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n-
    291 s << "format=\\"appended\\" offset=\\""<< offset << "\\" />\\n";
    \n-
    292 offset += 4; // header
    \n-
    293 offset += ncomps*nitems*typeSize(prec_);
    \n-
    294 }
    \n-
    \n-
    295
    \n-
    297 bool writeIsNoop() const { return true; }
    \n+
    219 void backup( ObjectStreamType& out ) const
    \n+
    220 {
    \n+
    221 // backup key to identify object in factory
    \n+
    222 out.write( (const char*) &key(), sizeof( int ) );
    \n+
    223 // backup data
    \n+
    224 const int bytes = sizeof(double)*3;
    \n+
    225 out.write( (const char*) &p0[ 0 ], bytes );
    \n+
    226 out.write( (const char*) &p1[ 0 ], bytes );
    \n+
    227 out.write( (const char*) &p2[ 0 ], bytes );
    \n+
    228 out.write( (const char*) &p3[ 0 ], bytes );
    \n+
    229 out.write( (const char*) &p4[ 0 ], bytes );
    \n+
    230 out.write( (const char*) &p5[ 0 ], bytes );
    \n+
    231 }
    \n+
    232
    \n+
    233 protected:
    \n+
    234 void init()
    \n+
    235 {
    \n+
    236 using std::sqrt;
    \n+
    237 sqrt2 = sqrt(2.0);
    \n+
    238 Dune::FieldVector<double,3> d1,d2;
    \n+
    239
    \n+
    240 d1 = p3; d1 -= p0;
    \n+
    241 d2 = p1; d2 -= p3;
    \n+
    242 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());
    \n+
    243 if (alpha<1E-6 || alpha>1-1E-6)
    \n+
    244 DUNE_THROW(Dune::IOError, "alpha in quadratic boundary segment bad");
    \n+
    245
    \n+
    246 d1 = p5; d1 -= p0;
    \n+
    247 d2 = p2; d2 -= p5;
    \n+
    248 beta=d1.two_norm()/(d1.two_norm()+d2.two_norm());
    \n+
    249 if (beta<1E-6 || beta>1-1E-6)
    \n+
    250 DUNE_THROW(Dune::IOError, "beta in quadratic boundary segment bad");
    \n+
    251
    \n+
    252 d1 = p4; d1 -= p1;
    \n+
    253 d2 = p2; d2 -= p4;
    \n+
    254 gamma=sqrt2*(d1.two_norm()/(d1.two_norm()+d2.two_norm()));
    \n+
    255 if (gamma<1E-6 || gamma>1-1E-6)
    \n+
    256 DUNE_THROW(Dune::IOError, "gamma in quadratic boundary segment bad");
    \n+
    257 }
    \n+
    258
    \n+
    259 static int& key() {
    \n+
    260 static int k = -1;
    \n+
    261 return k;
    \n+
    262 }
    \n+
    263
    \n+
    264 private:
    \n+
    265 // The six Lagrange basis function on the reference element
    \n+
    266 // for the points given above
    \n+
    267
    \n+
    268 double phi0 (const Dune::FieldVector<double,2>& local) const
    \n+
    269 {
    \n+
    270 return (alpha*beta-beta*local[0]-alpha*local[1])*(1-local[0]-local[1])/(alpha*beta);
    \n+
    271 }
    \n+
    272 double phi3 (const Dune::FieldVector<double,2>& local) const
    \n+
    273 {
    \n+
    274 return local[0]*(1-local[0]-local[1])/(alpha*(1-alpha));
    \n+
    275 }
    \n+
    276 double phi1 (const Dune::FieldVector<double,2>& local) const
    \n+
    277 {
    \n+
    278 return local[0]*(gamma*local[0]-(sqrt2-gamma-sqrt2*alpha)*local[1]-alpha*gamma)/(gamma*(1-alpha));
    \n+
    279 }
    \n+
    280 double phi5 (const Dune::FieldVector<double,2>& local) const
    \n+
    281 {
    \n+
    282 return local[1]*(1-local[0]-local[1])/(beta*(1-beta));
    \n+
    283 }
    \n+
    284 double phi4 (const Dune::FieldVector<double,2>& local) const
    \n+
    285 {
    \n+
    286 return local[0]*local[1]/((1-gamma/sqrt2)*gamma/sqrt2);
    \n+
    287 }
    \n+
    288 double phi2 (const Dune::FieldVector<double,2>& local) const
    \n+
    289 {
    \n+
    290 return local[1]*(beta*(1-gamma/sqrt2)-local[0]*(beta-gamma/sqrt2)-local[1]*(1-gamma/sqrt2))/((1-gamma/sqrt2)*(beta-1));
    \n+
    291 }
    \n+
    292
    \n+
    293 Dune::FieldVector<double,3> p0,p1,p2,p3,p4,p5;
    \n+
    294 double alpha,beta,gamma,sqrt2;
    \n+
    295 };
    \n+
    296
    \n+
    297 } // end empty namespace
    \n
    298
    \n-
    299 private:
    \n-
    301 void writeFloat64 (double) final {}
    \n-
    302 void writeFloat32 (float) final {}
    \n-
    303 void writeInt32 (std::int32_t) final {}
    \n-
    304 void writeUInt32 (std::uint32_t) final {}
    \n-
    305 void writeUInt8 (std::uint8_t) final {}
    \n-
    306 };
    \n-
    \n-
    307
    \n-
    \n-\n-
    310 {
    \n-
    311 public:
    \n-
    313
    \n-
    \n-
    325 AppendedBase64DataArrayWriter(std::ostream& s, std::string name,
    \n-
    326 int ncomps, unsigned nitems,
    \n-
    327 unsigned& offset, const Indent& indent, Precision prec_)
    \n-
    328 : DataArrayWriter(prec_)
    \n-
    329 {
    \n-
    330 s << indent << "<DataArray type=\\"" << toString(prec_) << "\\" "
    \n-
    331 << "Name=\\"" << name << "\\" ";
    \n-
    332 s << "NumberOfComponents=\\"" << ncomps << "\\" ";
    \n-
    333 s << "format=\\"appended\\" offset=\\""<< offset << "\\" />\\n";
    \n-
    334 offset += 8; // header
    \n-
    335 std::size_t bytes = ncomps*nitems*typeSize(prec_);
    \n-
    336 offset += bytes/3*4;
    \n-
    337 if(bytes%3 != 0)
    \n-
    338 offset += 4;
    \n-
    339 }
    \n-
    \n-
    340
    \n-
    342 bool writeIsNoop() const { return true; }
    \n-
    343
    \n-
    344 private:
    \n-
    346 void writeFloat64 (double) final {}
    \n-
    347 void writeFloat32 (float) final {}
    \n-
    348 void writeInt32 (std::int32_t) final {}
    \n-
    349 void writeUInt32 (std::uint32_t) final {}
    \n-
    350 void writeUInt8 (std::uint8_t) final {}
    \n-
    351 };
    \n-
    \n-
    352
    \n-
    354 //
    \n-
    355 // Naked ArrayWriters for the appended section
    \n-
    356 //
    \n-
    357
    \n-
    \n-\n-
    360 {
    \n-
    361 public:
    \n-
    363
    \n-
    \n-
    369 NakedBase64DataArrayWriter(std::ostream& theStream, int ncomps,
    \n-
    370 int nitems, Precision prec_)
    \n-
    371 : DataArrayWriter(prec_), b64(theStream)
    \n-
    372 {
    \n-
    373 // store size
    \n-
    374 std::uint32_t size = ncomps*nitems*typeSize(prec_);
    \n-
    375 b64.write(size);
    \n-
    376 b64.flush();
    \n-
    377 }
    \n-
    \n-
    378
    \n-
    379 private:
    \n-
    381 void writeFloat64 (double data) final
    \n-
    382 { write_(data); }
    \n-
    384 void writeFloat32 (float data) final
    \n-
    385 { write_(data); }
    \n-
    387 void writeInt32 (std::int32_t data) final
    \n-
    388 { write_(data); }
    \n-
    390 void writeUInt32 (std::uint32_t data) final
    \n-
    391 { write_(data); }
    \n-
    393 void writeUInt8 (std::uint8_t data) final
    \n-
    394 { write_(data); }
    \n-
    395
    \n-
    397 template<class T>
    \n-
    398 void write_(T data)
    \n-
    399 {
    \n-
    400 b64.write(data);
    \n-
    401 }
    \n+
    300 template<typename GridType>
    \n+
    \n+\n+
    302 {
    \n+
    303 protected:
    \n+
    304 // private data
    \n+\n+\n+\n+\n+\n+\n+
    311 // read buffer
    \n+
    312 char buf[512];
    \n+
    313 std::string fileName;
    \n+
    314 // exported data
    \n+\n+\n+
    317
    \n+
    318 // static data
    \n+
    319 static const int dim = GridType::dimension;
    \n+
    320 static const int dimWorld = GridType::dimensionworld;
    \n+
    321 static_assert( (dimWorld <= 3), "GmshReader requires dimWorld <= 3." );
    \n+
    322
    \n+
    323 // typedefs
    \n+
    324 typedef FieldVector< double, dimWorld > GlobalVector;
    \n+
    325
    \n+
    326 // don't use something like
    \n+
    327 // readfile(file, 1, "%s\\n", buf);
    \n+
    328 // to skip the rest of of the line -- that will only skip the next
    \n+
    329 // whitespace-separated word! Use skipline() instead.
    \n+
    \n+
    330 void readfile(FILE * file, int cnt, const char * format,
    \n+
    331 void* t1, void* t2 = 0, void* t3 = 0, void* t4 = 0,
    \n+
    332 void* t5 = 0, void* t6 = 0, void* t7 = 0, void* t8 = 0,
    \n+
    333 void* t9 = 0, void* t10 = 0)
    \n+
    334 {
    \n+
    335 off_t pos = ftello(file);
    \n+
    336 int c = fscanf(file, format, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
    \n+
    337 if (c != cnt)
    \n+
    338 DUNE_THROW(Dune::IOError, "Error parsing " << fileName << " "
    \n+
    339 "file pos " << pos
    \n+
    340 << ": Expected '" << format << "', only read " << c << " entries instead of " << cnt << ".");
    \n+
    341 }
    \n+
    \n+
    342
    \n+
    343 // skip over the rest of the line, including the terminating newline
    \n+
    \n+
    344 void skipline(FILE * file)
    \n+
    345 {
    \n+
    346 int c;
    \n+
    347 do {
    \n+
    348 c = std::fgetc(file);
    \n+
    349 } while(c != '\\n' && c != EOF);
    \n+
    350 }
    \n+
    \n+
    351
    \n+
    352 public:
    \n+
    353
    \n+
    \n+\n+
    355 factory(_factory), verbose(v), insert_boundary_segments(i) {}
    \n+
    \n+
    356
    \n+
    \n+
    357 std::vector<int> & boundaryIdMap()
    \n+
    358 {
    \n+\n+
    360 }
    \n+
    \n+
    361
    \n+
    \n+
    362 std::vector<int> & elementIndexMap()
    \n+
    363 {
    \n+\n+
    365 }
    \n+
    \n+
    366
    \n+
    \n+
    367 void read (const std::string& f)
    \n+
    368 {
    \n+
    369 if (verbose) std::cout << "Reading " << dim << "d Gmsh grid..." << std::endl;
    \n+
    370
    \n+
    371 // open file name, we use C I/O
    \n+
    372 fileName = f;
    \n+
    373 FILE* file = fopen(fileName.c_str(),"rb");
    \n+
    374 if (file==0)
    \n+
    375 DUNE_THROW(Dune::IOError, "Could not open " << fileName);
    \n+
    376
    \n+
    377 //=========================================
    \n+
    378 // Header: Read vertices into vector
    \n+
    379 // Check vertices that are needed
    \n+
    380 //=========================================
    \n+
    381
    \n+\n+\n+
    384 element_count = 0;
    \n+
    385
    \n+
    386 // process header
    \n+
    387 double version_number;
    \n+
    388 int file_type, data_size;
    \n+
    389
    \n+
    390 readfile(file,1,"%s\\n",buf);
    \n+
    391 if (strcmp(buf,"$MeshFormat")!=0)
    \n+
    392 DUNE_THROW(Dune::IOError, "expected $MeshFormat in first line");
    \n+
    393 readfile(file,3,"%lg %d %d\\n",&version_number,&file_type,&data_size);
    \n+
    394 // 2.2 is not representable as float and leads to problems on i386
    \n+
    395 // Hence we use >= 2.00001.
    \n+
    396 if( (version_number < 2.0) || (version_number >= 2.20001) ) // 2.2 is not representable as float and leads to problems on i386
    \n+
    397 DUNE_THROW(Dune::IOError, "can only read Gmsh version 2 files");
    \n+
    398 if (verbose) std::cout << "version " << version_number << " Gmsh file detected" << std::endl;
    \n+
    399 readfile(file,1,"%s\\n",buf);
    \n+
    400 if (strcmp(buf,"$EndMeshFormat")!=0)
    \n+
    401 DUNE_THROW(Dune::IOError, "expected $EndMeshFormat");
    \n
    402
    \n-
    403 Base64Stream b64;
    \n-
    404 };
    \n-
    \n+
    403 // node section
    \n+
    404 int number_of_nodes;
    \n
    405
    \n-
    \n-\n-
    408 {
    \n-
    409 RawStream s;
    \n-
    410
    \n-
    411 public:
    \n-
    413
    \n-
    \n-
    419 NakedRawDataArrayWriter(std::ostream& theStream, int ncomps,
    \n-
    420 int nitems, Precision prec_)
    \n-
    421 : DataArrayWriter(prec_), s(theStream)
    \n-
    422 {
    \n-
    423 s.write((unsigned int)(ncomps*nitems*typeSize(prec_)));
    \n-
    424 }
    \n-
    \n-
    425
    \n-
    426 private:
    \n-
    428 void writeFloat64 (double data) final
    \n-
    429 { write_(data); }
    \n-
    431 void writeFloat32 (float data) final
    \n-
    432 { write_(data); }
    \n-
    434 void writeInt32 (std::int32_t data) final
    \n-
    435 { write_(data); }
    \n-
    437 void writeUInt32 (std::uint32_t data) final
    \n-
    438 { write_(data); }
    \n-
    440 void writeUInt8 (std::uint8_t data) final
    \n-
    441 { write_(data); }
    \n-
    442
    \n-
    444 template<class T>
    \n-
    445 void write_(T data)
    \n-
    446 {
    \n-
    447 s.write(data);
    \n-
    448 }
    \n-
    449 };
    \n-
    \n-
    450
    \n-
    452 //
    \n-
    453 // Factory
    \n-
    454 //
    \n-
    455
    \n-
    457
    \n-
    \n-\n-
    463 enum Phase { main, appended };
    \n-
    464
    \n-
    465 OutputType type;
    \n-
    466 std::ostream& stream;
    \n-
    467 unsigned offset;
    \n-
    469 Phase phase;
    \n-
    470
    \n-
    471 public:
    \n-
    473
    \n-
    \n-
    482 inline DataArrayWriterFactory(OutputType type_, std::ostream& stream_)
    \n-
    483 : type(type_), stream(stream_), offset(0), phase(main)
    \n-
    484 { }
    \n-
    \n-
    485
    \n-
    487
    \n-
    \n-
    497 inline bool beginAppended() {
    \n-
    498 phase = appended;
    \n-
    499 switch(type) {
    \n-
    500 case ascii : return false;
    \n-
    501 case base64 : return false;
    \n-
    502 case appendedraw : return true;
    \n-
    503 case appendedbase64 : return true;
    \n-
    504 }
    \n-
    505 DUNE_THROW(IOError, "Dune::VTK::DataArrayWriter: unsupported "
    \n-
    506 "OutputType " << type);
    \n-
    507 }
    \n-
    \n-
    508
    \n-
    \n-
    510 const std::string& appendedEncoding() const {
    \n-
    511 static const std::string rawString = "raw";
    \n-
    512 static const std::string base64String = "base64";
    \n-
    513
    \n-
    514 switch(type) {
    \n-
    515 case ascii :
    \n-
    516 case base64 :
    \n-
    517 DUNE_THROW(IOError, "DataArrayWriterFactory::appendedEncoding(): No "
    \n-
    518 "appended encoding for OutputType " << type);
    \n-
    519 case appendedraw : return rawString;
    \n-
    520 case appendedbase64 : return base64String;
    \n-
    521 }
    \n-
    522 DUNE_THROW(IOError, "DataArrayWriterFactory::appendedEncoding(): "
    \n-
    523 "unsupported OutputType " << type);
    \n-
    524 }
    \n-
    \n-
    525
    \n-
    527
    \n-
    \n-
    541 DataArrayWriter* make(const std::string& name, unsigned ncomps,
    \n-
    542 unsigned nitems, const Indent& indent,
    \n-
    543 Precision prec)
    \n-
    544 {
    \n-
    545 switch(phase) {
    \n-
    546 case main :
    \n-
    547 switch(type) {
    \n-
    548 case ascii :
    \n-
    549 return new AsciiDataArrayWriter(stream, name, ncomps, indent, prec);
    \n-
    550 case base64 :
    \n-
    551 return new BinaryDataArrayWriter(stream, name, ncomps, nitems,
    \n-
    552 indent, prec);
    \n-
    553 case appendedraw :
    \n-
    554 return new AppendedRawDataArrayWriter(stream, name, ncomps,
    \n-
    555 nitems, offset, indent, prec);
    \n-
    556 case appendedbase64 :
    \n-
    557 return new AppendedBase64DataArrayWriter(stream, name, ncomps,
    \n-
    558 nitems, offset,
    \n-
    559 indent, prec);
    \n-
    560 }
    \n-
    561 break;
    \n-
    562 case appended :
    \n-
    563 switch(type) {
    \n-
    564 case ascii :
    \n-
    565 case base64 :
    \n-
    566 break; // invlid in appended mode
    \n-
    567 case appendedraw :
    \n-
    568 return new NakedRawDataArrayWriter(stream, ncomps, nitems, prec);
    \n-
    569 case appendedbase64 :
    \n-
    570 return new NakedBase64DataArrayWriter(stream, ncomps, nitems, prec);
    \n-
    571 }
    \n-
    572 break;
    \n-
    573 }
    \n-
    574 DUNE_THROW(IOError, "Dune::VTK::DataArrayWriter: unsupported "
    \n-
    575 "OutputType " << type << " in phase " << phase);
    \n-
    576 }
    \n-
    \n-
    577 };
    \n-
    \n-
    578
    \n-
    579 } // namespace VTK
    \n-
    580
    \n-
    582
    \n-
    583} // namespace Dune
    \n-
    584
    \n-
    585#endif // DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH
    \n-
    Common stuff for the VTKWriter.
    \n-\n+
    406 readfile(file,1,"%s\\n",buf);
    \n+
    407 if (strcmp(buf,"$Nodes")!=0)
    \n+
    408 DUNE_THROW(Dune::IOError, "expected $Nodes");
    \n+
    409 readfile(file,1,"%d\\n",&number_of_nodes);
    \n+
    410 if (verbose) std::cout << "file contains " << number_of_nodes << " nodes" << std::endl;
    \n+
    411
    \n+
    412 // read nodes
    \n+
    413 // The '+1' is due to the fact that gmsh numbers node starting from 1 rather than from 0
    \n+
    414 std::vector< GlobalVector > nodes( number_of_nodes+1 );
    \n+
    415 {
    \n+
    416 int id;
    \n+
    417 double x[ 3 ];
    \n+
    418 for( int i = 1; i <= number_of_nodes; ++i )
    \n+
    419 {
    \n+
    420 readfile(file,4, "%d %lg %lg %lg\\n", &id, &x[ 0 ], &x[ 1 ], &x[ 2 ] );
    \n+
    421
    \n+
    422 if (id > number_of_nodes) {
    \n+
    423 DUNE_THROW(Dune::IOError,
    \n+
    424 "Only dense sequences of node indices are currently supported (node index "
    \n+
    425 << id << " is invalid).");
    \n+
    426 }
    \n+
    427
    \n+
    428 // just store node position
    \n+
    429 for( int j = 0; j < dimWorld; ++j )
    \n+
    430 nodes[ id ][ j ] = x[ j ];
    \n+
    431 }
    \n+
    432 readfile(file,1,"%s\\n",buf);
    \n+
    433 if (strcmp(buf,"$EndNodes")!=0)
    \n+
    434 DUNE_THROW(Dune::IOError, "expected $EndNodes");
    \n+
    435 }
    \n+
    436
    \n+
    437 // element section
    \n+
    438 readfile(file,1,"%s\\n",buf);
    \n+
    439 if (strcmp(buf,"$Elements")!=0)
    \n+
    440 DUNE_THROW(Dune::IOError, "expected $Elements");
    \n+
    441 int number_of_elements;
    \n+
    442 readfile(file,1,"%d\\n",&number_of_elements);
    \n+
    443 if (verbose) std::cout << "file contains " << number_of_elements << " elements" << std::endl;
    \n+
    444
    \n+
    445 //=========================================
    \n+
    446 // Pass 1: Select and insert those vertices in the file that
    \n+
    447 // actually occur as corners of an element.
    \n+
    448 //=========================================
    \n+
    449
    \n+
    450 off_t section_element_offset = ftello(file);
    \n+
    451 std::map<int,unsigned int> renumber;
    \n+
    452 for (int i=1; i<=number_of_elements; i++)
    \n+
    453 {
    \n+
    454 int id, elm_type, number_of_tags;
    \n+
    455 readfile(file,3,"%d %d %d ",&id,&elm_type,&number_of_tags);
    \n+
    456 for (int k=1; k<=number_of_tags; k++)
    \n+
    457 {
    \n+
    458 int blub;
    \n+
    459 readfile(file,1,"%d ",&blub);
    \n+
    460 // k == 1: physical entity (not used here)
    \n+
    461 // k == 2: elementary entity (not used here either)
    \n+
    462 // if version_number < 2.2:
    \n+
    463 // k == 3: mesh partition 0
    \n+
    464 // else
    \n+
    465 // k == 3: number of mesh partitions
    \n+
    466 // k => 4: mesh partition k-4
    \n+
    467 }
    \n+
    468 pass1HandleElement(file, elm_type, renumber, nodes);
    \n+
    469 }
    \n+
    470 if (verbose) std::cout << "number of real vertices = " << number_of_real_vertices << std::endl;
    \n+
    471 if (verbose) std::cout << "number of boundary elements = " << boundary_element_count << std::endl;
    \n+
    472 if (verbose) std::cout << "number of elements = " << element_count << std::endl;
    \n+
    473 readfile(file,1,"%s\\n",buf);
    \n+
    474 if (strcmp(buf,"$EndElements")!=0)
    \n+
    475 DUNE_THROW(Dune::IOError, "expected $EndElements");
    \n+\n+\n+
    478
    \n+
    479 //==============================================
    \n+
    480 // Pass 2: Insert boundary segments and elements
    \n+
    481 //==============================================
    \n+
    482
    \n+
    483 fseeko(file, section_element_offset, SEEK_SET);
    \n+\n+
    485 element_count = 0;
    \n+
    486 for (int i=1; i<=number_of_elements; i++)
    \n+
    487 {
    \n+
    488 int id, elm_type, number_of_tags;
    \n+
    489 readfile(file,3,"%d %d %d ",&id,&elm_type,&number_of_tags);
    \n+
    490 int physical_entity = -1;
    \n+
    491
    \n+
    492 for (int k=1; k<=number_of_tags; k++)
    \n+
    493 {
    \n+
    494 int blub;
    \n+
    495 readfile(file,1,"%d ",&blub);
    \n+
    496 if (k==1) physical_entity = blub;
    \n+
    497 }
    \n+
    498 pass2HandleElement(file, elm_type, renumber, nodes, physical_entity);
    \n+
    499 }
    \n+
    500 readfile(file,1,"%s\\n",buf);
    \n+
    501 if (strcmp(buf,"$EndElements")!=0)
    \n+
    502 DUNE_THROW(Dune::IOError, "expected $EndElements");
    \n+
    503
    \n+
    504 fclose(file);
    \n+
    505 }
    \n+
    \n+
    506
    \n+
    \n+
    512 void pass1HandleElement(FILE* file, const int elm_type,
    \n+
    513 std::map<int,unsigned int> & renumber,
    \n+
    514 const std::vector< GlobalVector > & nodes)
    \n+
    515 {
    \n+
    516 // some data about gmsh elements
    \n+
    517 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1, 1};
    \n+
    518 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -1, 1};
    \n+
    519 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -1, 0};
    \n+
    520
    \n+
    521 // test whether we support the element type
    \n+
    522 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?
    \n+
    523 && (elementDim[elm_type] == dim || elementDim[elm_type] == (dim-1) ) ) ) // real element or boundary element?
    \n+
    524 {
    \n+
    525 skipline(file); // skip rest of line if element is unknown
    \n+
    526 return;
    \n+
    527 }
    \n+
    528
    \n+
    529 // The format string for parsing is n times '%d' in a row
    \n+
    530 std::string formatString = "%d";
    \n+
    531 for (int i=1; i<nDofs[elm_type]; i++)
    \n+
    532 formatString += " %d";
    \n+
    533 formatString += "\\n";
    \n+
    534
    \n+
    535 // '10' is the largest number of dofs we may encounter in a .msh file
    \n+
    536 std::vector<int> elementDofs(10);
    \n+
    537
    \n+
    538 readfile(file,nDofs[elm_type], formatString.c_str(),
    \n+
    539 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),
    \n+
    540 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),
    \n+
    541 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),
    \n+
    542 &(elementDofs[9]));
    \n+
    543
    \n+
    544 // insert each vertex if it hasn't been inserted already
    \n+
    545 for (int i=0; i<nVertices[elm_type]; i++)
    \n+
    546 if (renumber.find(elementDofs[i])==renumber.end())
    \n+
    547 {
    \n+
    548 renumber[elementDofs[i]] = number_of_real_vertices++;
    \n+
    549 factory.insertVertex(nodes[elementDofs[i]]);
    \n+
    550 }
    \n+
    551
    \n+
    552 // count elements and boundary elements
    \n+
    553 if (elementDim[elm_type] == dim)
    \n+\n+
    555 else
    \n+\n+
    557
    \n+
    558 }
    \n+
    \n+
    559
    \n+
    560
    \n+
    561
    \n+
    562 // generic-case: This is not supposed to be used at runtime.
    \n+
    563 template <class E, class V, class V2>
    \n+
    \n+\n+
    565 const V&,
    \n+
    566 const E&,
    \n+
    567 const V2&
    \n+
    568 )
    \n+
    569 {
    \n+
    570 DUNE_THROW(Dune::IOError, "tried to create a 3D boundary segment in a non-3D Grid");
    \n+
    571 }
    \n+
    \n+
    572
    \n+
    573 // 3d-case:
    \n+
    574 template <class E, class V>
    \n+
    \n+\n+
    576 const std::vector<FieldVector<double, 3> >& nodes,
    \n+
    577 const E& elementDofs,
    \n+
    578 const V& vertices
    \n+
    579 )
    \n+
    580 {
    \n+
    581 std::array<FieldVector<double,dimWorld>, 6> v;
    \n+
    582 for (int i=0; i<6; i++)
    \n+
    583 for (int j=0; j<dimWorld; j++)
    \n+
    584 v[i][j] = nodes[elementDofs[i]][j];
    \n+
    585
    \n+
    586 BoundarySegment<dim,dimWorld>* newBoundarySegment
    \n+
    587 = (BoundarySegment<dim,dimWorld>*) new GmshReaderQuadraticBoundarySegment< 3, 3 >( v[0], v[1], v[2],
    \n+
    588 v[3], v[4], v[5] );
    \n+
    589
    \n+
    590 factory.insertBoundarySegment( vertices,
    \n+
    591 std::shared_ptr<BoundarySegment<dim,dimWorld> >(newBoundarySegment) );
    \n+
    592 }
    \n+
    \n+
    593
    \n+
    594
    \n+
    595
    \n+
    \n+
    600 virtual void pass2HandleElement(FILE* file, const int elm_type,
    \n+
    601 std::map<int,unsigned int> & renumber,
    \n+
    602 const std::vector< GlobalVector > & nodes,
    \n+
    603 const int physical_entity)
    \n+
    604 {
    \n+
    605 // some data about gmsh elements
    \n+
    606 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1, 1};
    \n+
    607 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -1, 1};
    \n+
    608 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -1, 0};
    \n+
    609
    \n+
    610 // test whether we support the element type
    \n+
    611 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?
    \n+
    612 && (elementDim[elm_type] == dim || elementDim[elm_type] == (dim-1) ) ) ) // real element or boundary element?
    \n+
    613 {
    \n+
    614 skipline(file); // skip rest of line if element is unknown
    \n+
    615 return;
    \n+
    616 }
    \n+
    617
    \n+
    618 // The format string for parsing is n times '%d' in a row
    \n+
    619 std::string formatString = "%d";
    \n+
    620 for (int i=1; i<nDofs[elm_type]; i++)
    \n+
    621 formatString += " %d";
    \n+
    622 formatString += "\\n";
    \n+
    623
    \n+
    624 // '10' is the largest number of dofs we may encounter in a .msh file
    \n+
    625 std::vector<int> elementDofs(10);
    \n+
    626
    \n+
    627 readfile(file,nDofs[elm_type], formatString.c_str(),
    \n+
    628 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),
    \n+
    629 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),
    \n+
    630 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),
    \n+
    631 &(elementDofs[9]));
    \n+
    632
    \n+
    633 // correct differences between gmsh and Dune in the local vertex numbering
    \n+
    634 switch (elm_type)
    \n+
    635 {
    \n+
    636 case 3 : // 4-node quadrilateral
    \n+
    637 std::swap(elementDofs[2],elementDofs[3]);
    \n+
    638 break;
    \n+
    639 case 5 : // 8-node hexahedron
    \n+
    640 std::swap(elementDofs[2],elementDofs[3]);
    \n+
    641 std::swap(elementDofs[6],elementDofs[7]);
    \n+
    642 break;
    \n+
    643 case 7 : // 5-node pyramid
    \n+
    644 std::swap(elementDofs[2],elementDofs[3]);
    \n+
    645 break;
    \n+
    646 }
    \n+
    647
    \n+
    648 // renumber corners to account for the explicitly given vertex
    \n+
    649 // numbering in the file
    \n+
    650 std::vector<unsigned int> vertices(nVertices[elm_type]);
    \n+
    651
    \n+
    652 for (int i=0; i<nVertices[elm_type]; i++)
    \n+
    653 vertices[i] = renumber[elementDofs[i]];
    \n+
    654
    \n+
    655 // If it is an element, insert it as such
    \n+
    656 if (elementDim[elm_type] == dim) {
    \n+
    657
    \n+
    658 switch (elm_type)
    \n+
    659 {
    \n+
    660 case 1 : // 2-node line
    \n+
    661 factory.insertElement(Dune::GeometryTypes::line,vertices);
    \n+
    662 break;
    \n+
    663 case 2 : // 3-node triangle
    \n+
    664 factory.insertElement(Dune::GeometryTypes::triangle,vertices);
    \n+
    665 break;
    \n+
    666 case 3 : // 4-node quadrilateral
    \n+
    667 factory.insertElement(Dune::GeometryTypes::quadrilateral,vertices);
    \n+
    668 break;
    \n+
    669 case 4 : // 4-node tetrahedron
    \n+
    670 factory.insertElement(Dune::GeometryTypes::tetrahedron,vertices);
    \n+
    671 break;
    \n+
    672 case 5 : // 8-node hexahedron
    \n+
    673 factory.insertElement(Dune::GeometryTypes::hexahedron,vertices);
    \n+
    674 break;
    \n+
    675 case 6 : // 6-node prism
    \n+
    676 factory.insertElement(Dune::GeometryTypes::prism,vertices);
    \n+
    677 break;
    \n+
    678 case 7 : // 5-node pyramid
    \n+
    679 factory.insertElement(Dune::GeometryTypes::pyramid,vertices);
    \n+
    680 break;
    \n+
    681 case 9 : // 6-node triangle
    \n+
    682 factory.insertElement(Dune::GeometryTypes::triangle,vertices);
    \n+
    683 break;
    \n+
    684 case 11 : // 10-node tetrahedron
    \n+
    685 factory.insertElement(Dune::GeometryTypes::tetrahedron,vertices);
    \n+
    686 break;
    \n+
    687 }
    \n+
    688
    \n+
    689 } else {
    \n+
    690 // it must be a boundary segment then
    \n+\n+
    692
    \n+
    693 switch (elm_type)
    \n+
    694 {
    \n+
    695 case 1 : // 2-node line
    \n+
    696 factory.insertBoundarySegment(vertices);
    \n+
    697 break;
    \n+
    698
    \n+
    699 case 2 : // 3-node triangle
    \n+
    700 factory.insertBoundarySegment(vertices);
    \n+
    701 break;
    \n+
    702
    \n+
    703 case 3 : // 4-node quadrilateral
    \n+
    704 factory.insertBoundarySegment(vertices);
    \n+
    705 break;
    \n+
    706
    \n+
    707 case 15 : // 1-node point
    \n+
    708 factory.insertBoundarySegment(vertices);
    \n+
    709 break;
    \n+
    710
    \n+
    711 case 8 : { // 3-node line
    \n+
    712 std::array<FieldVector<double,dimWorld>, 3> v;
    \n+
    713 for (int i=0; i<dimWorld; i++) {
    \n+
    714 v[0][i] = nodes[elementDofs[0]][i];
    \n+
    715 v[1][i] = nodes[elementDofs[2]][i]; // yes, the renumbering is intended!
    \n+
    716 v[2][i] = nodes[elementDofs[1]][i];
    \n+
    717 }
    \n+
    718 BoundarySegment<dim,dimWorld>* newBoundarySegment
    \n+
    719 = (BoundarySegment<dim,dimWorld>*) new GmshReaderQuadraticBoundarySegment< 2, dimWorld >(v[0], v[1], v[2]);
    \n+
    720 factory.insertBoundarySegment(vertices,
    \n+
    721 std::shared_ptr<BoundarySegment<dim,dimWorld> >(newBoundarySegment));
    \n+
    722 break;
    \n+
    723 }
    \n+
    724 case 9 : { // 6-node triangle
    \n+
    725 boundarysegment_insert(nodes, elementDofs, vertices);
    \n+
    726 break;
    \n+
    727 }
    \n+
    728 default: {
    \n+
    729 DUNE_THROW(Dune::IOError, "GmshReader does not support using element-type " << elm_type << " for boundary segments");
    \n+
    730 break;
    \n+
    731 }
    \n+
    732
    \n+
    733 }
    \n+
    734
    \n+
    735 }
    \n+
    736 }
    \n+
    737
    \n+
    738 // count elements and boundary elements
    \n+
    739 if (elementDim[elm_type] == dim) {
    \n+\n+\n+
    742 } else {
    \n+\n+\n+
    745 }
    \n+
    746
    \n+
    747 }
    \n+
    \n+
    748
    \n+
    749 };
    \n+
    \n+
    750
    \n+
    \n+
    751 namespace Gmsh {
    \n+
    \n+
    757 enum class ReaderOptions
    \n+
    758 {
    \n+
    759 verbose = 1,
    \n+\n+
    761 readElementData = 4,
    \n+\n+
    763 };
    \n+
    \n+
    764
    \n+
    \n+\n+
    767 {
    \n+
    768 return static_cast<ReaderOptions>(
    \n+
    769 static_cast<int>(a) | static_cast<int>(b)
    \n+
    770 );
    \n+
    771 }
    \n+
    \n+
    772
    \n+
    \n+\n+
    775 {
    \n+
    776 return static_cast<int>(a) & static_cast<int>(b);
    \n+
    777 }
    \n+
    \n+
    778
    \n+
    779 } // end namespace Gmsh
    \n+
    \n+
    780
    \n+
    805 template<typename GridType>
    \n+
    \n+\n+
    807 {
    \n+
    809
    \n+
    828 static void doRead(Dune::GridFactory<GridType> &factory,
    \n+
    829 const std::string &fileName,
    \n+
    830 std::vector<int>& boundarySegmentToPhysicalEntity,
    \n+
    831 std::vector<int>& elementToPhysicalEntity,
    \n+
    832 bool verbose, bool insertBoundarySegments)
    \n+
    833 {
    \n+
    834 // register boundary segment to boundary segment factory for possible load balancing
    \n+
    835 // this needs to be done on all cores since the type might not be known otherwise
    \n+
    836 GmshReaderQuadraticBoundarySegment< Grid::dimension, Grid::dimensionworld >::registerFactory();
    \n+
    837
    \n+
    838#ifndef NDEBUG
    \n+
    839 // check that this method is called on all cores
    \n+
    840 factory.comm().barrier();
    \n+
    841#endif
    \n+
    842
    \n+
    843 // create parse object and read grid on process 0
    \n+
    844 if (factory.comm().rank() == 0)
    \n+
    845 {
    \n+
    846 GmshReaderParser<Grid> parser(factory,verbose,insertBoundarySegments);
    \n+
    847 parser.read(fileName);
    \n+
    848
    \n+
    849 boundarySegmentToPhysicalEntity = std::move(parser.boundaryIdMap());
    \n+
    850 elementToPhysicalEntity = std::move(parser.elementIndexMap());
    \n+
    851 }
    \n+
    852 else
    \n+
    853 {
    \n+
    854 boundarySegmentToPhysicalEntity = {};
    \n+
    855 elementToPhysicalEntity = {};
    \n+
    856 }
    \n+
    857 }
    \n+
    858
    \n+
    860
    \n+
    879 template<class T>
    \n+
    880 static T &discarded(T &&value) { return value; }
    \n+
    881
    \n+
    882 struct DataArg {
    \n+
    883 std::vector<int> *data_ = nullptr;
    \n+
    884 DataArg(std::vector<int> &data) : data_(&data) {}
    \n+
    885 DataArg(const decltype(std::ignore)&) {}
    \n+
    886 DataArg() = default;
    \n+
    887 };
    \n+
    888
    \n+
    889 struct DataFlagArg : DataArg {
    \n+
    890 bool flag_ = false;
    \n+
    891 using DataArg::DataArg;
    \n+
    892 DataFlagArg(bool flag) : flag_(flag) {}
    \n+
    893 };
    \n+
    894
    \n+
    895 public:
    \n+
    896 typedef GridType Grid;
    \n+
    897
    \n+
    \n+
    904 static std::unique_ptr<Grid> read (const std::string& fileName, bool verbose = true, bool insertBoundarySegments=true)
    \n+
    905 {
    \n+
    906 // make a grid factory
    \n+\n+
    908
    \n+
    909 read(factory, fileName, verbose, insertBoundarySegments);
    \n+
    910
    \n+
    911 return factory.createGrid();
    \n+
    912 }
    \n+
    \n+
    913
    \n+
    \n+
    933 static std::unique_ptr<Grid> read (const std::string& fileName,
    \n+
    934 std::vector<int>& boundarySegmentToPhysicalEntity,
    \n+
    935 std::vector<int>& elementToPhysicalEntity,
    \n+
    936 bool verbose = true, bool insertBoundarySegments=true)
    \n+
    937 {
    \n+
    938 // make a grid factory
    \n+\n+
    940
    \n+
    941 doRead(
    \n+
    942 factory, fileName, boundarySegmentToPhysicalEntity,
    \n+
    943 elementToPhysicalEntity, verbose, insertBoundarySegments
    \n+
    944 );
    \n+
    945
    \n+
    946 return factory.createGrid();
    \n+
    947 }
    \n+
    \n+
    948
    \n+
    \n+
    950 static void read (Dune::GridFactory<Grid>& factory, const std::string& fileName,
    \n+
    951 bool verbose = true, bool insertBoundarySegments=true)
    \n+
    952 {
    \n+
    953 doRead(
    \n+
    954 factory, fileName, discarded(std::vector<int>{}),
    \n+
    955 discarded(std::vector<int>{}), verbose, insertBoundarySegments
    \n+
    956 );
    \n+
    957 }
    \n+
    \n+
    958
    \n+
    960
    \n+
    \n+
    983 static void read (Dune::GridFactory<Grid> &factory,
    \n+
    984 const std::string &fileName,
    \n+
    985 DataFlagArg boundarySegmentData,
    \n+
    986 DataArg elementData,
    \n+
    987 bool verbose=true)
    \n+
    988 {
    \n+
    989 doRead(
    \n+
    990 factory, fileName,
    \n+
    991 boundarySegmentData.data_
    \n+
    992 ? *boundarySegmentData.data_ : discarded(std::vector<int>{}),
    \n+
    993 elementData.data_
    \n+
    994 ? *elementData.data_ : discarded(std::vector<int>{}),
    \n+
    995 verbose,
    \n+
    996 boundarySegmentData.flag_ || boundarySegmentData.data_
    \n+
    997 );
    \n+
    998 }
    \n+
    \n+
    999
    \n+
    \n+
    1020 static void read (Dune::GridFactory<Grid>& factory,
    \n+
    1021 const std::string& fileName,
    \n+
    1022 std::vector<int>& boundarySegmentToPhysicalEntity,
    \n+
    1023 std::vector<int>& elementToPhysicalEntity,
    \n+
    1024 bool verbose, bool insertBoundarySegments)
    \n+
    1025 {
    \n+
    1026 doRead(
    \n+
    1027 factory, fileName, boundarySegmentToPhysicalEntity,
    \n+
    1028 elementToPhysicalEntity, verbose, insertBoundarySegments
    \n+
    1029 );
    \n+
    1030 }
    \n+
    \n+
    1031
    \n+
    1033 //\\{
    \n+
    1034
    \n+
    1035 [[deprecated("Will be removed after 2.8. Either use other constructors or use static methods without constructing an object")]]
    \n+
    1036 GmshReader() = default;
    \n+
    1037
    \n+\n+
    1039
    \n+
    1040 static constexpr Opts defaultOpts =
    \n+
    1041 Opts::verbose | Opts::insertBoundarySegments | Opts::readElementData | Opts::readBoundaryData;
    \n+
    1042
    \n+
    1044
    \n+
    \n+
    1067 GmshReader(const std::string& fileName,
    \n+\n+
    1069 {
    \n+
    1070 gridFactory_ = std::make_unique<Dune::GridFactory<Grid>>();
    \n+
    1071 readGridFile(fileName, *gridFactory_, options);
    \n+
    1072 }
    \n+
    \n+
    1073
    \n+
    \n+
    1081 GmshReader(const std::string& fileName, GridFactory<Grid>& factory,
    \n+\n+
    1083 {
    \n+
    1084 readGridFile(fileName, factory, options);
    \n+
    1085 }
    \n+
    \n+
    1086
    \n+
    \n+
    1088 const std::vector<int>& elementData () const
    \n+
    1089 {
    \n+
    1090 checkElementData();
    \n+
    1091 return elementIndexToGmshPhysicalEntity_;
    \n+
    1092 }
    \n+
    \n+
    1093
    \n+
    \n+
    1095 const std::vector<int>& boundaryData () const
    \n+
    1096 {
    \n+
    1097 checkBoundaryData();
    \n+
    1098 return boundarySegmentIndexToGmshPhysicalEntity_;
    \n+
    1099 }
    \n+
    \n+
    1100
    \n+
    \n+
    1105 bool hasElementData () const
    \n+
    1106 { return hasElementData_ && !extractedElementData_; }
    \n+
    \n+
    1107
    \n+
    \n+
    1112 bool hasBoundaryData () const
    \n+
    1113 { return hasBoundaryData_ && !extractedBoundaryData_; }
    \n+
    \n+
    1114
    \n+
    \n+
    1116 std::vector<int> extractElementData ()
    \n+
    1117 {
    \n+
    1118 checkElementData();
    \n+
    1119 extractedElementData_ = true;
    \n+
    1120 return std::move(elementIndexToGmshPhysicalEntity_);
    \n+
    1121 }
    \n+
    \n+
    1122
    \n+
    \n+
    1124 std::vector<int> extractBoundaryData ()
    \n+
    1125 {
    \n+
    1126 checkBoundaryData();
    \n+
    1127 extractedBoundaryData_ = true;
    \n+
    1128 return std::move(boundarySegmentIndexToGmshPhysicalEntity_);
    \n+
    1129 }
    \n+
    \n+
    1130
    \n+
    \n+
    1132 std::unique_ptr<Grid> createGrid ()
    \n+
    1133 {
    \n+
    1134 if (!gridFactory_)
    \n+
    1135 DUNE_THROW(Dune::InvalidStateException,
    \n+
    1136 "This GmshReader has been constructed with a Dune::GridFactory. "
    \n+
    1137 << "This grid factory has been filled with all information to create a grid. "
    \n+
    1138 << "Please use this factory to create the grid by calling factory.createGrid(). "
    \n+
    1139 << "Alternatively use the constructor without passing the factory in combination with this member function."
    \n+
    1140 );
    \n+
    1141
    \n+
    1142 return gridFactory_->createGrid();
    \n+
    1143 }
    \n+
    \n+
    1144
    \n+
    1145 //\\}
    \n+
    1146
    \n+
    1147 private:
    \n+
    1148 void checkElementData () const
    \n+
    1149 {
    \n+
    1150 if (!hasElementData_)
    \n+
    1151 DUNE_THROW(Dune::InvalidStateException,
    \n+
    1152 "This GmshReader has been constructed without the option 'readElementData'. "
    \n+
    1153 << "Please enable reading element data by passing the option 'Gmsh::ReaderOpts::readElementData' "
    \n+
    1154 << "to the constructor of this class."
    \n+
    1155 );
    \n+
    1156
    \n+
    1157 if (extractedElementData_)
    \n+
    1158 DUNE_THROW(Dune::InvalidStateException,
    \n+
    1159 "The element data has already been extracted from this GmshReader "
    \n+
    1160 << "via a function call to reader.extractElementData(). Use the extraced data or "
    \n+
    1161 << "read the grid data from file again by constructing a new reader."
    \n+
    1162 );
    \n+
    1163 }
    \n+
    1164
    \n+
    1165 void checkBoundaryData () const
    \n+
    1166 {
    \n+
    1167 if (!hasBoundaryData_)
    \n+
    1168 DUNE_THROW(Dune::InvalidStateException,
    \n+
    1169 "This GmshReader has been constructed without the option 'readBoundaryData'. "
    \n+
    1170 << "Please enable reading boundary data by passing the option 'Gmsh::ReaderOpts::readBoundaryData' "
    \n+
    1171 << "to the constructor of this class."
    \n+
    1172 );
    \n+
    1173
    \n+
    1174 if (extractedBoundaryData_)
    \n+
    1175 DUNE_THROW(Dune::InvalidStateException,
    \n+
    1176 "The boundary data has already been extracted from this GmshReader "
    \n+
    1177 << "via a function call to reader.extractBoundaryData(). Use the extraced data or "
    \n+
    1178 << "read the grid data from file again by constructing a new reader."
    \n+
    1179 );
    \n+
    1180 }
    \n+
    1181
    \n+
    1182 void readGridFile (const std::string& fileName, GridFactory<Grid>& factory, Gmsh::ReaderOptions options)
    \n+
    1183 {
    \n+
    1184 const bool verbose = options & Opts::verbose;
    \n+
    1185 const bool insertBoundarySegments = options & Opts::insertBoundarySegments;
    \n+
    1186 const bool readBoundaryData = options & Opts::readBoundaryData;
    \n+
    1187 const bool readElementData = options & Opts::readElementData;
    \n+
    1188
    \n+
    1189 doRead(
    \n+
    1190 factory, fileName, boundarySegmentIndexToGmshPhysicalEntity_,
    \n+
    1191 elementIndexToGmshPhysicalEntity_, verbose,
    \n+
    1192 readBoundaryData || insertBoundarySegments
    \n+
    1193 );
    \n+
    1194
    \n+
    1195 // clear unwanted data
    \n+
    1196 if (!readBoundaryData)
    \n+
    1197 boundarySegmentIndexToGmshPhysicalEntity_ = std::vector<int>{};
    \n+
    1198 if (!readElementData)
    \n+
    1199 elementIndexToGmshPhysicalEntity_ = std::vector<int>{};
    \n+
    1200
    \n+
    1201 hasElementData_ = readElementData;
    \n+
    1202 hasBoundaryData_ = readBoundaryData;
    \n+
    1203 }
    \n+
    1204
    \n+
    1205 std::unique_ptr<Dune::GridFactory<Grid>> gridFactory_;
    \n+
    1206
    \n+
    1207 std::vector<int> elementIndexToGmshPhysicalEntity_;
    \n+
    1208 std::vector<int> boundarySegmentIndexToGmshPhysicalEntity_;
    \n+
    1209
    \n+
    1210 bool hasElementData_;
    \n+
    1211 bool hasBoundaryData_;
    \n+
    1212
    \n+
    1213 // for better error messages, we keep track of these separately
    \n+
    1214 bool extractedElementData_ = false;
    \n+
    1215 bool extractedBoundaryData_ = false;
    \n+
    1216 };
    \n+
    \n+
    1217
    \n+
    1220} // namespace Dune
    \n+
    1221
    \n+
    1222#endif
    \n+
    Base class for grid boundary segments of arbitrary geometry.
    \n+
    ReaderOptions
    Option for the Gmsh mesh file reader.
    Definition gmshreader.hh:758
    \n+\n+\n+\n+\n+
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-\n-\n-\n-\n-\n-
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n-
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n-
    @ appendedraw
    Output is to the file is appended raw binary.
    Definition common.hh:49
    \n-
    @ appendedbase64
    Output is to the file is appended base64 binary.
    Definition common.hh:51
    \n-
    @ base64
    Output to the file is inline base64 binary.
    Definition common.hh:47
    \n-
    std::string toString(Precision p)
    map precision to VTK type name
    Definition common.hh:280
    \n-
    std::size_t typeSize(Precision p)
    map precision to byte size
    Definition common.hh:300
    \n-
    T Type
    type to convert T to before putting it into a stream with <<
    Definition common.hh:97
    \n-
    base class for data array writers
    Definition dataarraywriter.hh:56
    \n-
    void write(T data)
    write one element of data
    Definition dataarraywriter.hh:69
    \n-
    DataArrayWriter(Precision _prec)
    construct a data array writer
    Definition dataarraywriter.hh:63
    \n-
    virtual bool writeIsNoop() const
    whether calls to write may be skipped
    Definition dataarraywriter.hh:89
    \n-
    virtual ~DataArrayWriter()
    virtual destructor
    Definition dataarraywriter.hh:91
    \n-
    a streaming writer for data array tags, uses ASCII inline format
    Definition dataarraywriter.hh:110
    \n-
    ~AsciiDataArrayWriter()
    finish output; writes end tag
    Definition dataarraywriter.hh:133
    \n-
    AsciiDataArrayWriter(std::ostream &theStream, std::string name, int ncomps, const Indent &indent_, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:121
    \n-
    a streaming writer for data array tags, uses binary inline format
    Definition dataarraywriter.hh:197
    \n-
    ~BinaryDataArrayWriter()
    finish output; writes end tag
    Definition dataarraywriter.hh:228
    \n-
    BinaryDataArrayWriter(std::ostream &theStream, std::string name, int ncomps, int nitems, const Indent &indent_, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:210
    \n-
    a streaming writer for data array tags, uses appended raw format
    Definition dataarraywriter.hh:268
    \n-
    AppendedRawDataArrayWriter(std::ostream &s, std::string name, int ncomps, unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:283
    \n-
    bool writeIsNoop() const
    whether calls to write may be skipped
    Definition dataarraywriter.hh:297
    \n-
    a streaming writer for data array tags, uses appended base64 format
    Definition dataarraywriter.hh:310
    \n-
    AppendedBase64DataArrayWriter(std::ostream &s, std::string name, int ncomps, unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:325
    \n-
    bool writeIsNoop() const
    whether calls to write may be skipped
    Definition dataarraywriter.hh:342
    \n-
    a streaming writer for appended data array tags, uses base64 format
    Definition dataarraywriter.hh:360
    \n-
    NakedBase64DataArrayWriter(std::ostream &theStream, int ncomps, int nitems, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:369
    \n-
    a streaming writer for appended data arrays, uses raw format
    Definition dataarraywriter.hh:408
    \n-
    NakedRawDataArrayWriter(std::ostream &theStream, int ncomps, int nitems, Precision prec_)
    make a new data array writer
    Definition dataarraywriter.hh:419
    \n-
    a factory for DataArrayWriters
    Definition dataarraywriter.hh:462
    \n-
    bool beginAppended()
    signal start of the appended section
    Definition dataarraywriter.hh:497
    \n-
    DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned nitems, const Indent &indent, Precision prec)
    create a DataArrayWriter
    Definition dataarraywriter.hh:541
    \n-
    DataArrayWriterFactory(OutputType type_, std::ostream &stream_)
    create a DataArrayWriterFactory
    Definition dataarraywriter.hh:482
    \n-
    const std::string & appendedEncoding() const
    query encoding string for appended data
    Definition dataarraywriter.hh:510
    \n-
    void write(X &data)
    encode a data item
    Definition streams.hh:42
    \n-
    void flush()
    flush the current unwritten data to the stream.
    Definition streams.hh:64
    \n-
    write out data in binary
    Definition streams.hh:84
    \n-
    void write(T data)
    write data to stream
    Definition streams.hh:93
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n+
    constexpr bool operator&(ReaderOptions a, ReaderOptions b)
    query operator for reader options (is b set in a)
    Definition gmshreader.hh:774
    \n+
    constexpr ReaderOptions operator|(ReaderOptions a, ReaderOptions b)
    composition operator for reader options
    Definition gmshreader.hh:766
    \n+
    Base class for classes implementing geometries of boundary segments.
    Definition boundarysegment.hh:94
    \n+
    Communication comm() const
    Return the Communication used by the grid factory.
    Definition common/gridfactory.hh:297
    \n+
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n+
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n+
    Options for read operation.
    Definition gmshreader.hh:39
    \n+
    GeometryOrder
    Definition gmshreader.hh:40
    \n+
    @ firstOrder
    edges are straight lines.
    Definition gmshreader.hh:42
    \n+
    @ secondOrder
    quadratic boundary approximation.
    Definition gmshreader.hh:44
    \n+
    dimension independent parts for GmshReaderParser
    Definition gmshreader.hh:302
    \n+
    void pass1HandleElement(FILE *file, const int elm_type, std::map< int, unsigned int > &renumber, const std::vector< GlobalVector > &nodes)
    Process one element during the first pass through the list of all elements.
    Definition gmshreader.hh:512
    \n+
    static const int dimWorld
    Definition gmshreader.hh:320
    \n+
    Dune::GridFactory< GridType > & factory
    Definition gmshreader.hh:305
    \n+
    std::vector< int > & boundaryIdMap()
    Definition gmshreader.hh:357
    \n+
    std::vector< int > & elementIndexMap()
    Definition gmshreader.hh:362
    \n+
    unsigned int number_of_real_vertices
    Definition gmshreader.hh:308
    \n+
    void boundarysegment_insert(const std::vector< FieldVector< double, 3 > > &nodes, const E &elementDofs, const V &vertices)
    Definition gmshreader.hh:575
    \n+
    GmshReaderParser(Dune::GridFactory< GridType > &_factory, bool v, bool i)
    Definition gmshreader.hh:354
    \n+
    int element_count
    Definition gmshreader.hh:310
    \n+
    void read(const std::string &f)
    Definition gmshreader.hh:367
    \n+
    void skipline(FILE *file)
    Definition gmshreader.hh:344
    \n+
    void readfile(FILE *file, int cnt, const char *format, void *t1, void *t2=0, void *t3=0, void *t4=0, void *t5=0, void *t6=0, void *t7=0, void *t8=0, void *t9=0, void *t10=0)
    Definition gmshreader.hh:330
    \n+
    std::vector< int > element_index_to_physical_entity
    Definition gmshreader.hh:316
    \n+
    virtual void pass2HandleElement(FILE *file, const int elm_type, std::map< int, unsigned int > &renumber, const std::vector< GlobalVector > &nodes, const int physical_entity)
    Process one element during the second pass through the list of all elements.
    Definition gmshreader.hh:600
    \n+
    static const int dim
    Definition gmshreader.hh:319
    \n+
    FieldVector< double, dimWorld > GlobalVector
    Definition gmshreader.hh:324
    \n+
    std::string fileName
    Definition gmshreader.hh:313
    \n+
    int boundary_element_count
    Definition gmshreader.hh:309
    \n+
    void boundarysegment_insert(const V &, const E &, const V2 &)
    Definition gmshreader.hh:564
    \n+
    bool verbose
    Definition gmshreader.hh:306
    \n+
    std::vector< int > boundary_id_to_physical_entity
    Definition gmshreader.hh:315
    \n+
    char buf[512]
    Definition gmshreader.hh:312
    \n+
    bool insert_boundary_segments
    Definition gmshreader.hh:307
    \n+
    Read Gmsh mesh file.
    Definition gmshreader.hh:807
    \n+
    static std::unique_ptr< Grid > read(const std::string &fileName, std::vector< int > &boundarySegmentToPhysicalEntity, std::vector< int > &elementToPhysicalEntity, bool verbose=true, bool insertBoundarySegments=true)
    Read Gmsh file, possibly with data.
    Definition gmshreader.hh:933
    \n+
    const std::vector< int > & elementData() const
    Access element data (maps element index to Gmsh physical entity)
    Definition gmshreader.hh:1088
    \n+
    static void read(Dune::GridFactory< Grid > &factory, const std::string &fileName, DataFlagArg boundarySegmentData, DataArg elementData, bool verbose=true)
    read Gmsh file, possibly with data
    Definition gmshreader.hh:983
    \n+
    static std::unique_ptr< Grid > read(const std::string &fileName, bool verbose=true, bool insertBoundarySegments=true)
    Definition gmshreader.hh:904
    \n+
    static void read(Dune::GridFactory< Grid > &factory, const std::string &fileName, bool verbose=true, bool insertBoundarySegments=true)
    Definition gmshreader.hh:950
    \n+
    GridType Grid
    Definition gmshreader.hh:896
    \n+
    std::unique_ptr< Grid > createGrid()
    Create the grid.
    Definition gmshreader.hh:1132
    \n+
    std::vector< int > extractBoundaryData()
    Erase boundary data from reader and return the data.
    Definition gmshreader.hh:1124
    \n+
    static void read(Dune::GridFactory< Grid > &factory, const std::string &fileName, std::vector< int > &boundarySegmentToPhysicalEntity, std::vector< int > &elementToPhysicalEntity, bool verbose, bool insertBoundarySegments)
    Read Gmsh file, possibly with data.
    Definition gmshreader.hh:1020
    \n+
    bool hasElementData() const
    If element data is available.
    Definition gmshreader.hh:1105
    \n+
    bool hasBoundaryData() const
    If boundary data is available.
    Definition gmshreader.hh:1112
    \n+
    static constexpr Opts defaultOpts
    Definition gmshreader.hh:1040
    \n+
    GmshReader(const std::string &fileName, GridFactory< Grid > &factory, Gmsh::ReaderOptions options=defaultOpts)
    Construct a Gmsh reader object from a file name and a grid factory.
    Definition gmshreader.hh:1081
    \n+
    GmshReader(const std::string &fileName, Gmsh::ReaderOptions options=defaultOpts)
    Construct a Gmsh reader object (alternatively use one of the static member functions)
    Definition gmshreader.hh:1067
    \n+
    std::vector< int > extractElementData()
    Erase element data from reader and return the data.
    Definition gmshreader.hh:1116
    \n+
    const std::vector< int > & boundaryData() const
    Access boundary data (maps boundary segment index to Gmsh physical entity)
    Definition gmshreader.hh:1095
    \n+
    GmshReader()=default
    Dynamic Gmsh reader interface.
    \n+
    Provide a generic factory class for unstructured grids.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,598 +2,1302 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-dataarraywriter.hh\n+gmshreader.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH\n+6#ifndef DUNE_GMSHREADER_HH\n+7#define DUNE_GMSHREADER_HH\n 8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14#include \n-15\n-16#include \n-17#include \n-18\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-21\n-30namespace _\bD_\bu_\bn_\be\n-31{\n-34\n-35 namespace VTK {\n-36\n-38\n-_\b5_\b5 class _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-56 {\n-57 public:\n-59\n-_\b6_\b3 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _prec)\n-64 : prec(_prec)\n-65 {}\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14#include \n+15#include \n+16#include \n+17#include \n+18#include \n+19#include \n+20\n+21#include \n+22#include \n+23\n+24#include \n+25\n+26#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+27#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+28\n+29namespace _\bD_\bu_\bn_\be\n+30{\n+31\n+_\b3_\b8 struct _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+39 {\n+_\b4_\b0 enum _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bO_\br_\bd_\be_\br {\n+_\b4_\b2 _\bf_\bi_\br_\bs_\bt_\bO_\br_\bd_\be_\br,\n+44 _\bs_\be_\bc_\bo_\bn_\bd_\bO_\br_\bd_\be_\br\n+_\b4_\b5 };\n+46 };\n+47\n+48 namespace {\n+49\n+50 // arbitrary dimension, implementation is in specialization\n+51 template< int dimension, int dimWorld = dimension >\n+52 class GmshReaderQuadraticBoundarySegment\n+53 {\n+54 public:\n+55 // empty function since this class does not implement anything\n+56 static void registerFactory() {}\n+57 };\n+58\n+59 // quadratic boundary segments in 1d\n+60 /*\n+61 Note the points\n+62\n+63 (0) (alpha) (1)\n+64\n+65 are mapped to the points in global coordinates\n 66\n-68 template\n-_\b6_\b9 void _\bw_\br_\bi_\bt_\be(T data)\n-70 {\n-71 switch(prec)\n-72 {\n-73 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2:\n-74 writeFloat32(data); break;\n-75 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4:\n-76 writeFloat64(data); break;\n-77 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2:\n-78 writeUInt32(data); break;\n-79 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8:\n-80 writeUInt8(data); break;\n-81 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2:\n-82 writeInt32(data); break;\n-83 default:\n-84 DUNE_THROW(Dune::NotImplemented, \"Unknown precision type\");\n-85 }\n-86 }\n-87\n-_\b8_\b9 virtual bool _\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp() const { return false; }\n-_\b9_\b1 virtual _\b~_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br () {}\n-92\n-93 private:\n-95 virtual void writeFloat32 (float data) = 0;\n-97 virtual void writeFloat64 (double data) = 0;\n-99 virtual void writeInt32 (std::int32_t data) = 0;\n-101 virtual void writeUInt8 (std::uint8_t data) = 0;\n-103 virtual void writeUInt32 (std::uint32_t data) = 0;\n-104\n-105 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec;\n-106 };\n-107\n-_\b1_\b0_\b9 class _\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-110 {\n-111 public:\n-113\n-_\b1_\b2_\b1 _\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, std::string name,\n-122 int ncomps, const Indent& indent_, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n-123 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), s(theStream), counter(0), numPerLine(12), indent\n-(indent_)\n-124 {\n-125 s << indent << \"\\n\";\n-129 ++indent;\n-130 }\n+67 p0 p2 p1\n+68\n+69 alpha is determined automatically from the given points.\n+70 */\n+71 template< int dimWorld >\n+72 struct GmshReaderQuadraticBoundarySegment< 2, dimWorld >\n+73 : public _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt< 2, dimWorld >\n+74 {\n+75 typedef GmshReaderQuadraticBoundarySegment< 2, dimWorld > ThisType;\n+76 typedef typename _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b2_\b,_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b> :: ObjectStreamType\n+ObjectStreamType;\n+77 typedef Dune::FieldVector< double, dimWorld > _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n+78\n+79 GmshReaderQuadraticBoundarySegment ( const GlobalVector &p0_, const\n+GlobalVector &p1_, const GlobalVector &p2_)\n+80 : p0(p0_), p1(p1_), p2(p2_)\n+81 {\n+82 init();\n+83 }\n+84\n+85 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )\n+86 {\n+87 // key is read before by the factory\n+88 const int bytes = sizeof(double)*dimWorld;\n+89 in.read( (char *) &p0[ 0 ], bytes );\n+90 in.read( (char *) &p1[ 0 ], bytes );\n+91 in.read( (char *) &p2[ 0 ], bytes );\n+92 init();\n+93 }\n+94\n+95 static void registerFactory()\n+96 {\n+97 if( key() < 0 )\n+98 {\n+99 key() = _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b2_\b,_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be registerFactory<\n+ThisType >();\n+100 }\n+101 }\n+102\n+103 virtual _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br operator() ( const Dune::FieldVector &local\n+) const\n+104 {\n+105 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br y;\n+106 y = 0.0;\n+107 y.axpy((local[0]-alpha)*(local[0]-1.0)/alpha,p0);\n+108 y.axpy(local[0]*(local[0]-1.0)/(alpha*(alpha-1.0)),p1);\n+109 y.axpy(local[0]*(local[0]-alpha)/(1.0-alpha),p2);\n+110 return y;\n+111 }\n+112\n+113 void backup( ObjectStreamType& out ) const\n+114 {\n+115 // backup key to identify object\n+116 out.write( (const char *) &key(), sizeof( int ) );\n+117 // backup data\n+118 const int bytes = sizeof(double)*dimWorld;\n+119 out.write( (const char*) &p0[ 0 ], bytes );\n+120 out.write( (const char*) &p1[ 0 ], bytes );\n+121 out.write( (const char*) &p2[ 0 ], bytes );\n+122 }\n+123\n+124 protected:\n+125 void init()\n+126 {\n+127 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br d1 = p1;\n+128 d1 -= p0;\n+129 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br d2 = p2;\n+130 d2 -= p1;\n 131\n-_\b1_\b3_\b3 _\b~_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br ()\n-134 {\n-135 if (counter%numPerLine!=0) s << \"\\n\";\n-136 --indent;\n-137 s << indent << \"\\n\";\n-138 }\n-139\n-140 private:\n-142 void writeFloat64 (double data) final\n-143 { write_float(data); }\n-145 void writeFloat32 (float data) final\n-146 { write_float(data); }\n-148 void writeInt32 (std::int32_t data) final\n-149 { write_(data); }\n-151 void writeUInt32 (std::uint32_t data) final\n-152 { write_(data); }\n-154 void writeUInt8 (std::uint8_t data) final\n-155 { write_(data); }\n+132 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());\n+133 if (alpha<1E-6 || alpha>1-1E-6)\n+134 DUNE_THROW(Dune::IOError, \"ration in quadratic boundary segment bad\");\n+135 }\n+136\n+137 static int& key() {\n+138 static int k = -1;\n+139 return k;\n+140 }\n+141\n+142 private:\n+143 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br p0,p1,p2;\n+144 double alpha;\n+145 };\n+146\n+147\n+148 // quadratic boundary segments in 2d\n+149 /* numbering of points corresponding to gmsh:\n+150\n+151 2\n+152\n+153 5 4\n+154\n+155 0 3 1\n 156\n-157 template\n-158 void write_(T data)\n-159 {\n-160 typedef typename _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\bT_\b>_\b:_\b:_\bT_\by_\bp_\be PT;\n-161 if(counter%numPerLine==0) s << indent;\n-162 else s << \" \";\n-163 const auto original_precision = std::cout.precision();\n-164 s << std::setprecision(std::numeric_limits::digits10) << (PT) data;\n-165 std::cout.precision(original_precision);\n-166 counter++;\n-167 if (counter%numPerLine==0) s << \"\\n\";\n-168 }\n-169\n-170 template\n-171 void write_float(T data)\n-172 {\n-173 typedef typename _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\bT_\b>_\b:_\b:_\bT_\by_\bp_\be PT;\n-174 if(counter%numPerLine==0) s << indent;\n-175 else s << \" \";\n-176 PT out_data = (PT) data;\n-177 if (std::fpclassify(out_data) == FP_SUBNORMAL)\n-178 {\n-179 // truncate denormalized data to 0 to avoid Paraview segfaults on macOS\n-180 out_data = 0;\n-181 }\n-182 const auto original_precision = std::cout.precision();\n-183 s << std::setprecision(std::numeric_limits::digits10) << out_data;\n-184 std::cout.precision(original_precision);\n-185 counter++;\n-186 if (counter%numPerLine==0) s << \"\\n\";\n-187 }\n-188\n-189 std::ostream& s;\n-190 int counter;\n-191 int numPerLine;\n-192 Indent indent;\n-193 };\n-194\n-_\b1_\b9_\b6 class _\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-197 {\n-198 public:\n-200\n-_\b2_\b1_\b0 _\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, std::string name,\n-211 int ncomps, int nitems, const Indent& indent_, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n-212 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), s(theStream), b64(theStream), indent(indent_)\n-213 {\n-214 s << indent << \"\\n\";\n+157 Note: The vertices 3, 4, 5 are not necessarily at the edge midpoints but\n+can\n+158 be placed with parameters alpha, beta , gamma at the following positions\n+159 in local coordinates:\n+160\n+161\n+162 2 = (0,1)\n+163\n+164 5 = (0,beta) 4 = (1-gamma/sqrt(2),gamma/sqrt(2))\n+165\n+166 0 = (0,0) 3 = (alpha,0) 1 = (1,0)\n+167\n+168 The parameters alpha, beta, gamma are determined from the given vertices in\n+169 global coordinates.\n+170 */\n+171 template<>\n+172 class GmshReaderQuadraticBoundarySegment< 3, 3 >\n+173 : public _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt< 3 >\n+174 {\n+175 typedef GmshReaderQuadraticBoundarySegment< 3, 3 > ThisType;\n+176 typedef typename _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b3_\b _\b> :: ObjectStreamType\n+ObjectStreamType;\n+177 public:\n+178 GmshReaderQuadraticBoundarySegment (Dune::FieldVector p0_, Dune::\n+FieldVector p1_,\n+179 Dune::FieldVector p2_, Dune::FieldVector p3_,\n+180 Dune::FieldVector p4_, Dune::FieldVector p5_)\n+181 : p0(p0_), p1(p1_), p2(p2_), p3(p3_), p4(p4_), p5(p5_)\n+182 {\n+183 init();\n+184 }\n+185\n+186 GmshReaderQuadraticBoundarySegment( ObjectStreamType& in )\n+187 {\n+188 const int bytes = sizeof(double)*3;\n+189 in.read( (char *) &p0[ 0 ], bytes );\n+190 in.read( (char *) &p1[ 0 ], bytes );\n+191 in.read( (char *) &p2[ 0 ], bytes );\n+192 in.read( (char *) &p3[ 0 ], bytes );\n+193 in.read( (char *) &p4[ 0 ], bytes );\n+194 in.read( (char *) &p5[ 0 ], bytes );\n+195 init();\n+196 }\n+197\n+198 static void registerFactory()\n+199 {\n+200 if( key() < 0 )\n+201 {\n+202 key() = _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\b _\b3_\b _\b>_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be registerFactory< ThisType >();\n+203 }\n+204 }\n+205\n+206 virtual Dune::FieldVector operator() (const Dune::\n+FieldVector& local) const\n+207 {\n+208 Dune::FieldVector y;\n+209 y = 0.0;\n+210 y.axpy(phi0(local),p0);\n+211 y.axpy(phi1(local),p1);\n+212 y.axpy(phi2(local),p2);\n+213 y.axpy(phi3(local),p3);\n+214 y.axpy(phi4(local),p4);\n+215 y.axpy(phi5(local),p5);\n+216 return y;\n+217 }\n 218\n-219 // write indentation for the data chunk\n-220 s << indent+1;\n-221 // store size, needs to be exactly 32 bit\n-222 std::uint32_t size = ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n-223 b64._\bw_\br_\bi_\bt_\be(size);\n-224 b64._\bf_\bl_\bu_\bs_\bh();\n-225 }\n-226\n-_\b2_\b2_\b8 _\b~_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br ()\n-229 {\n-230 b64._\bf_\bl_\bu_\bs_\bh();\n-231 // append newline to written data\n-232 s << \"\\n\";\n-233 s << indent << \"\\n\";\n-234 s.flush();\n-235 }\n-236\n-237 private:\n-239 void writeFloat64 (double data) final\n-240 { write_(data); }\n-242 void writeFloat32 (float data) final\n-243 { write_(data); }\n-245 void writeInt32 (std::int32_t data) final\n-246 { write_(data); }\n-248 void writeUInt32 (std::uint32_t data) final\n-249 { write_(data); }\n-251 void writeUInt8 (std::uint8_t data) final\n-252 { write_(data); }\n-253\n-255 template\n-256 void write_(T data)\n-257 {\n-258 b64._\bw_\br_\bi_\bt_\be(data);\n-259 }\n-260\n-261 std::ostream& s;\n-262 Base64Stream b64;\n-263 const Indent& indent;\n-264 };\n-265\n-_\b2_\b6_\b7 class _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-268 {\n-269 public:\n-271\n-_\b2_\b8_\b3 _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& s, std::string name,\n-284 int ncomps, unsigned nitems, unsigned& offset,\n-285 const Indent& indent, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n-286 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_)\n-287 {\n-288 s << indent << \"\\n\";\n-292 offset += 4; // header\n-293 offset += ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n-294 }\n-295\n-_\b2_\b9_\b7 bool _\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp() const { return true; }\n+219 void backup( ObjectStreamType& out ) const\n+220 {\n+221 // backup key to identify object in factory\n+222 out.write( (const char*) &key(), sizeof( int ) );\n+223 // backup data\n+224 const int bytes = sizeof(double)*3;\n+225 out.write( (const char*) &p0[ 0 ], bytes );\n+226 out.write( (const char*) &p1[ 0 ], bytes );\n+227 out.write( (const char*) &p2[ 0 ], bytes );\n+228 out.write( (const char*) &p3[ 0 ], bytes );\n+229 out.write( (const char*) &p4[ 0 ], bytes );\n+230 out.write( (const char*) &p5[ 0 ], bytes );\n+231 }\n+232\n+233 protected:\n+234 void init()\n+235 {\n+236 using std::sqrt;\n+237 sqrt2 = sqrt(2.0);\n+238 Dune::FieldVector d1,d2;\n+239\n+240 d1 = p3; d1 -= p0;\n+241 d2 = p1; d2 -= p3;\n+242 alpha=d1.two_norm()/(d1.two_norm()+d2.two_norm());\n+243 if (alpha<1E-6 || alpha>1-1E-6)\n+244 DUNE_THROW(Dune::IOError, \"alpha in quadratic boundary segment bad\");\n+245\n+246 d1 = p5; d1 -= p0;\n+247 d2 = p2; d2 -= p5;\n+248 beta=d1.two_norm()/(d1.two_norm()+d2.two_norm());\n+249 if (beta<1E-6 || beta>1-1E-6)\n+250 DUNE_THROW(Dune::IOError, \"beta in quadratic boundary segment bad\");\n+251\n+252 d1 = p4; d1 -= p1;\n+253 d2 = p2; d2 -= p4;\n+254 gamma=sqrt2*(d1.two_norm()/(d1.two_norm()+d2.two_norm()));\n+255 if (gamma<1E-6 || gamma>1-1E-6)\n+256 DUNE_THROW(Dune::IOError, \"gamma in quadratic boundary segment bad\");\n+257 }\n+258\n+259 static int& key() {\n+260 static int k = -1;\n+261 return k;\n+262 }\n+263\n+264 private:\n+265 // The six Lagrange basis function on the reference element\n+266 // for the points given above\n+267\n+268 double phi0 (const Dune::FieldVector& local) const\n+269 {\n+270 return (alpha*beta-beta*local[0]-alpha*local[1])*(1-local[0]-local[1])/\n+(alpha*beta);\n+271 }\n+272 double phi3 (const Dune::FieldVector& local) const\n+273 {\n+274 return local[0]*(1-local[0]-local[1])/(alpha*(1-alpha));\n+275 }\n+276 double phi1 (const Dune::FieldVector& local) const\n+277 {\n+278 return local[0]*(gamma*local[0]-(sqrt2-gamma-sqrt2*alpha)*local[1]-\n+alpha*gamma)/(gamma*(1-alpha));\n+279 }\n+280 double phi5 (const Dune::FieldVector& local) const\n+281 {\n+282 return local[1]*(1-local[0]-local[1])/(beta*(1-beta));\n+283 }\n+284 double phi4 (const Dune::FieldVector& local) const\n+285 {\n+286 return local[0]*local[1]/((1-gamma/sqrt2)*gamma/sqrt2);\n+287 }\n+288 double phi2 (const Dune::FieldVector& local) const\n+289 {\n+290 return local[1]*(beta*(1-gamma/sqrt2)-local[0]*(beta-gamma/sqrt2)-local[1]*\n+(1-gamma/sqrt2))/((1-gamma/sqrt2)*(beta-1));\n+291 }\n+292\n+293 Dune::FieldVector p0,p1,p2,p3,p4,p5;\n+294 double alpha,beta,gamma,sqrt2;\n+295 };\n+296\n+297 } // end empty namespace\n 298\n-299 private:\n-301 void writeFloat64 (double) final {}\n-302 void writeFloat32 (float) final {}\n-303 void writeInt32 (std::int32_t) final {}\n-304 void writeUInt32 (std::uint32_t) final {}\n-305 void writeUInt8 (std::uint8_t) final {}\n-306 };\n-307\n-_\b3_\b0_\b9 class _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-310 {\n-311 public:\n-313\n-_\b3_\b2_\b5 _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& s, std::string name,\n-326 int ncomps, unsigned nitems,\n-327 unsigned& offset, const Indent& indent, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n-328 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_)\n-329 {\n-330 s << indent << \"\\n\";\n-334 offset += 8; // header\n-335 std::size_t bytes = ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n-336 offset += bytes/3*4;\n-337 if(bytes%3 != 0)\n-338 offset += 4;\n-339 }\n-340\n-_\b3_\b4_\b2 bool _\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp() const { return true; }\n-343\n-344 private:\n-346 void writeFloat64 (double) final {}\n-347 void writeFloat32 (float) final {}\n-348 void writeInt32 (std::int32_t) final {}\n-349 void writeUInt32 (std::uint32_t) final {}\n-350 void writeUInt8 (std::uint8_t) final {}\n-351 };\n-352\n-354 //\n-355 // Naked ArrayWriters for the appended section\n-356 //\n-357\n-_\b3_\b5_\b9 class _\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-360 {\n-361 public:\n-363\n-_\b3_\b6_\b9 _\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, int ncomps,\n-370 int nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n-371 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), b64(theStream)\n-372 {\n-373 // store size\n-374 std::uint32_t size = ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_);\n-375 b64._\bw_\br_\bi_\bt_\be(size);\n-376 b64._\bf_\bl_\bu_\bs_\bh();\n-377 }\n-378\n-379 private:\n-381 void writeFloat64 (double data) final\n-382 { write_(data); }\n-384 void writeFloat32 (float data) final\n-385 { write_(data); }\n-387 void writeInt32 (std::int32_t data) final\n-388 { write_(data); }\n-390 void writeUInt32 (std::uint32_t data) final\n-391 { write_(data); }\n-393 void writeUInt8 (std::uint8_t data) final\n-394 { write_(data); }\n-395\n-397 template\n-398 void write_(T data)\n-399 {\n-400 b64._\bw_\br_\bi_\bt_\be(data);\n-401 }\n+300 template\n+_\b3_\b0_\b1 class _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br\n+302 {\n+303 protected:\n+304 // private data\n+_\b3_\b0_\b5 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b>& _\bf_\ba_\bc_\bt_\bo_\br_\by;\n+_\b3_\b0_\b6 bool _\bv_\be_\br_\bb_\bo_\bs_\be;\n+_\b3_\b0_\b7 bool _\bi_\bn_\bs_\be_\br_\bt_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bs_\be_\bg_\bm_\be_\bn_\bt_\bs;\n+_\b3_\b0_\b8 unsigned int _\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs;\n+_\b3_\b0_\b9 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt;\n+_\b3_\b1_\b0 int _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt;\n+311 // read buffer\n+_\b3_\b1_\b2 char _\bb_\bu_\bf[512];\n+_\b3_\b1_\b3 std::string _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be;\n+314 // exported data\n+_\b3_\b1_\b5 std::vector _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n+_\b3_\b1_\b6 std::vector _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n+317\n+318 // static data\n+_\b3_\b1_\b9 static const int _\bd_\bi_\bm = GridType::dimension;\n+_\b3_\b2_\b0 static const int _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd = GridType::dimensionworld;\n+321 static_assert( (_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd <= 3), \"GmshReader requires dimWorld <= 3.\" );\n+322\n+323 // typedefs\n+_\b3_\b2_\b4 typedef FieldVector< double, dimWorld > _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br;\n+325\n+326 // don't use something like\n+327 // readfile(file, 1, \"%s\\n\", buf);\n+328 // to skip the rest of of the line -- that will only skip the next\n+329 // whitespace-separated word! Use skipline() instead.\n+_\b3_\b3_\b0 void _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(FILE * file, int cnt, const char * format,\n+331 void* t1, void* t2 = 0, void* t3 = 0, void* t4 = 0,\n+332 void* t5 = 0, void* t6 = 0, void* t7 = 0, void* t8 = 0,\n+333 void* t9 = 0, void* t10 = 0)\n+334 {\n+335 off_t pos = ftello(file);\n+336 int c = fscanf(file, format, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);\n+337 if (c != cnt)\n+338 DUNE_THROW(Dune::IOError, \"Error parsing \" << _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be << \" \"\n+339 \"file pos \" << pos\n+340 << \": Expected '\" << format << \"', only read \" << c << \" entries instead of\n+\" << cnt << \".\");\n+341 }\n+342\n+343 // skip over the rest of the line, including the terminating newline\n+_\b3_\b4_\b4 void _\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be(FILE * file)\n+345 {\n+346 int c;\n+347 do {\n+348 c = std::fgetc(file);\n+349 } while(c != '\\n' && c != EOF);\n+350 }\n+351\n+352 public:\n+353\n+_\b3_\b5_\b4 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br(_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b>& _factory, bool v, bool i) :\n+355 _\bf_\ba_\bc_\bt_\bo_\br_\by(_factory), _\bv_\be_\br_\bb_\bo_\bs_\be(v), _\bi_\bn_\bs_\be_\br_\bt_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bs_\be_\bg_\bm_\be_\bn_\bt_\bs(i) {}\n+356\n+_\b3_\b5_\b7 std::vector & _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd_\bM_\ba_\bp()\n+358 {\n+359 return _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n+360 }\n+361\n+_\b3_\b6_\b2 std::vector & _\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp()\n+363 {\n+364 return _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by;\n+365 }\n+366\n+_\b3_\b6_\b7 void _\br_\be_\ba_\bd (const std::string& f)\n+368 {\n+369 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"Reading \" << _\bd_\bi_\bm << \"d Gmsh grid...\" << std::\n+endl;\n+370\n+371 // open file name, we use C I/O\n+372 _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be = f;\n+373 FILE* file = fopen(_\bf_\bi_\bl_\be_\bN_\ba_\bm_\be.c_str(),\"rb\");\n+374 if (file==0)\n+375 DUNE_THROW(Dune::IOError, \"Could not open \" << _\bf_\bi_\bl_\be_\bN_\ba_\bm_\be);\n+376\n+377 //=========================================\n+378 // Header: Read vertices into vector\n+379 // Check vertices that are needed\n+380 //=========================================\n+381\n+382 _\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs = 0;\n+383 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n+384 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n+385\n+386 // process header\n+387 double version_number;\n+388 int file_type, data_size;\n+389\n+390 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+391 if (strcmp(_\bb_\bu_\bf,\"$MeshFormat\")!=0)\n+392 DUNE_THROW(Dune::IOError, \"expected $MeshFormat in first line\");\n+393 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,3,\"%lg %d %d\\n\",&version_number,&file_type,&data_size);\n+394 // 2.2 is not representable as float and leads to problems on i386\n+395 // Hence we use >= 2.00001.\n+396 if( (version_number < 2.0) || (version_number >= 2.20001) ) // 2.2 is not\n+representable as float and leads to problems on i386\n+397 DUNE_THROW(Dune::IOError, \"can only read Gmsh version 2 files\");\n+398 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"version \" << version_number << \" Gmsh file\n+detected\" << std::endl;\n+399 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+400 if (strcmp(_\bb_\bu_\bf,\"$EndMeshFormat\")!=0)\n+401 DUNE_THROW(Dune::IOError, \"expected $EndMeshFormat\");\n 402\n-403 Base64Stream b64;\n-404 };\n+403 // node section\n+404 int number_of_nodes;\n 405\n-_\b4_\b0_\b7 class _\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br : public _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-408 {\n-409 _\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm s;\n-410\n-411 public:\n-413\n-_\b4_\b1_\b9 _\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(std::ostream& theStream, int ncomps,\n-420 int nitems, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_)\n-421 : _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(prec_), s(theStream)\n-422 {\n-423 s._\bw_\br_\bi_\bt_\be((unsigned int)(ncomps*nitems*_\bt_\by_\bp_\be_\bS_\bi_\bz_\be(prec_)));\n-424 }\n-425\n-426 private:\n-428 void writeFloat64 (double data) final\n-429 { write_(data); }\n-431 void writeFloat32 (float data) final\n-432 { write_(data); }\n-434 void writeInt32 (std::int32_t data) final\n-435 { write_(data); }\n-437 void writeUInt32 (std::uint32_t data) final\n-438 { write_(data); }\n-440 void writeUInt8 (std::uint8_t data) final\n-441 { write_(data); }\n-442\n-444 template\n-445 void write_(T data)\n-446 {\n-447 s._\bw_\br_\bi_\bt_\be(data);\n-448 }\n-449 };\n-450\n-452 //\n-453 // Factory\n-454 //\n-455\n-457\n-_\b4_\b6_\b2 class _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-463 enum Phase { main, appended };\n-464\n-465 _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type;\n-466 std::ostream& stream;\n-467 unsigned offset;\n-469 Phase phase;\n-470\n-471 public:\n-473\n-_\b4_\b8_\b2 inline _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type_, std::ostream& stream_)\n-483 : type(type_), stream(stream_), offset(0), phase(main)\n-484 { }\n-485\n-487\n-_\b4_\b9_\b7 inline bool _\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd() {\n-498 phase = appended;\n-499 switch(type) {\n-500 case _\ba_\bs_\bc_\bi_\bi : return false;\n-501 case _\bb_\ba_\bs_\be_\b6_\b4 : return false;\n-502 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw : return true;\n-503 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 : return true;\n-504 }\n-505 DUNE_THROW(IOError, \"Dune::VTK::DataArrayWriter: unsupported \"\n-506 \"OutputType \" << type);\n-507 }\n-508\n-_\b5_\b1_\b0 const std::string& _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg() const {\n-511 static const std::string rawString = \"raw\";\n-512 static const std::string base64String = \"base64\";\n-513\n-514 switch(type) {\n-515 case _\ba_\bs_\bc_\bi_\bi :\n-516 case _\bb_\ba_\bs_\be_\b6_\b4 :\n-517 DUNE_THROW(IOError, \"DataArrayWriterFactory::appendedEncoding(): No \"\n-518 \"appended encoding for OutputType \" << type);\n-519 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw : return rawString;\n-520 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 : return base64String;\n-521 }\n-522 DUNE_THROW(IOError, \"DataArrayWriterFactory::appendedEncoding(): \"\n-523 \"unsupported OutputType \" << type);\n-524 }\n-525\n-527\n-_\b5_\b4_\b1 _\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br* _\bm_\ba_\bk_\be(const std::string& name, unsigned ncomps,\n-542 unsigned nitems, const Indent& indent,\n-543 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec)\n-544 {\n-545 switch(phase) {\n-546 case main :\n-547 switch(type) {\n-548 case _\ba_\bs_\bc_\bi_\bi :\n-549 return new _\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps, indent, prec);\n-550 case _\bb_\ba_\bs_\be_\b6_\b4 :\n-551 return new _\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps, nitems,\n-552 indent, prec);\n-553 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw :\n-554 return new _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps,\n-555 nitems, offset, indent, prec);\n-556 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 :\n-557 return new _\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, name, ncomps,\n-558 nitems, offset,\n-559 indent, prec);\n-560 }\n-561 break;\n-562 case appended :\n-563 switch(type) {\n-564 case _\ba_\bs_\bc_\bi_\bi :\n-565 case _\bb_\ba_\bs_\be_\b6_\b4 :\n-566 break; // invlid in appended mode\n-567 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw :\n-568 return new _\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, ncomps, nitems, prec);\n-569 case _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4 :\n-570 return new _\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(stream, ncomps, nitems, prec);\n+406 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+407 if (strcmp(_\bb_\bu_\bf,\"$Nodes\")!=0)\n+408 DUNE_THROW(Dune::IOError, \"expected $Nodes\");\n+409 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d\\n\",&number_of_nodes);\n+410 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"file contains \" << number_of_nodes << \" nodes\"\n+<< std::endl;\n+411\n+412 // read nodes\n+413 // The '+1' is due to the fact that gmsh numbers node starting from 1\n+rather than from 0\n+414 std::vector< GlobalVector > nodes( number_of_nodes+1 );\n+415 {\n+416 int id;\n+417 double x[ 3 ];\n+418 for( int i = 1; i <= number_of_nodes; ++i )\n+419 {\n+420 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,4, \"%d %lg %lg %lg\\n\", &id, &x[ 0 ], &x[ 1 ], &x[ 2 ] );\n+421\n+422 if (id > number_of_nodes) {\n+423 DUNE_THROW(Dune::IOError,\n+424 \"Only dense sequences of node indices are currently supported (node index \"\n+425 << id << \" is invalid).\");\n+426 }\n+427\n+428 // just store node position\n+429 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n+430 nodes[ id ][ j ] = x[ j ];\n+431 }\n+432 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+433 if (strcmp(_\bb_\bu_\bf,\"$EndNodes\")!=0)\n+434 DUNE_THROW(Dune::IOError, \"expected $EndNodes\");\n+435 }\n+436\n+437 // element section\n+438 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+439 if (strcmp(_\bb_\bu_\bf,\"$Elements\")!=0)\n+440 DUNE_THROW(Dune::IOError, \"expected $Elements\");\n+441 int number_of_elements;\n+442 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d\\n\",&number_of_elements);\n+443 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"file contains \" << number_of_elements << \"\n+elements\" << std::endl;\n+444\n+445 //=========================================\n+446 // Pass 1: Select and insert those vertices in the file that\n+447 // actually occur as corners of an element.\n+448 //=========================================\n+449\n+450 off_t section_element_offset = ftello(file);\n+451 std::map renumber;\n+452 for (int i=1; i<=number_of_elements; i++)\n+453 {\n+454 int id, elm_type, number_of_tags;\n+455 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,3,\"%d %d %d \",&id,&elm_type,&number_of_tags);\n+456 for (int k=1; k<=number_of_tags; k++)\n+457 {\n+458 int blub;\n+459 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d \",&blub);\n+460 // k == 1: physical entity (not used here)\n+461 // k == 2: elementary entity (not used here either)\n+462 // if version_number < 2.2:\n+463 // k == 3: mesh partition 0\n+464 // else\n+465 // k == 3: number of mesh partitions\n+466 // k => 4: mesh partition k-4\n+467 }\n+468 _\bp_\ba_\bs_\bs_\b1_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(file, elm_type, renumber, nodes);\n+469 }\n+470 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"number of real vertices = \" <<\n+_\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs << std::endl;\n+471 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"number of boundary elements = \" <<\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt << std::endl;\n+472 if (_\bv_\be_\br_\bb_\bo_\bs_\be) std::cout << \"number of elements = \" << _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt << std::\n+endl;\n+473 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+474 if (strcmp(_\bb_\bu_\bf,\"$EndElements\")!=0)\n+475 DUNE_THROW(Dune::IOError, \"expected $EndElements\");\n+476 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by.resize(_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt);\n+477 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by.resize(_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt);\n+478\n+479 //==============================================\n+480 // Pass 2: Insert boundary segments and elements\n+481 //==============================================\n+482\n+483 fseeko(file, section_element_offset, SEEK_SET);\n+484 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n+485 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt = 0;\n+486 for (int i=1; i<=number_of_elements; i++)\n+487 {\n+488 int id, elm_type, number_of_tags;\n+489 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,3,\"%d %d %d \",&id,&elm_type,&number_of_tags);\n+490 int physical_entity = -1;\n+491\n+492 for (int k=1; k<=number_of_tags; k++)\n+493 {\n+494 int blub;\n+495 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%d \",&blub);\n+496 if (k==1) physical_entity = blub;\n+497 }\n+498 _\bp_\ba_\bs_\bs_\b2_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(file, elm_type, renumber, nodes, physical_entity);\n+499 }\n+500 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,1,\"%s\\n\",_\bb_\bu_\bf);\n+501 if (strcmp(_\bb_\bu_\bf,\"$EndElements\")!=0)\n+502 DUNE_THROW(Dune::IOError, \"expected $EndElements\");\n+503\n+504 fclose(file);\n+505 }\n+506\n+_\b5_\b1_\b2 void _\bp_\ba_\bs_\bs_\b1_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(FILE* file, const int elm_type,\n+513 std::map & renumber,\n+514 const std::vector< GlobalVector > & nodes)\n+515 {\n+516 // some data about gmsh elements\n+517 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1,\n+1};\n+518 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -\n+1, 1};\n+519 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -\n+1, 0};\n+520\n+521 // test whether we support the element type\n+522 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?\n+523 && (elementDim[elm_type] == _\bd_\bi_\bm || elementDim[elm_type] == (_\bd_\bi_\bm-1) ) ) ) /\n+/ real element or boundary element?\n+524 {\n+525 _\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be(file); // skip rest of line if element is unknown\n+526 return;\n+527 }\n+528\n+529 // The format string for parsing is n times '%d' in a row\n+530 std::string formatString = \"%d\";\n+531 for (int i=1; i elementDofs(10);\n+537\n+538 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,nDofs[elm_type], formatString.c_str(),\n+539 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),\n+540 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),\n+541 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),\n+542 &(elementDofs[9]));\n+543\n+544 // insert each vertex if it hasn't been inserted already\n+545 for (int i=0; i\n+_\b5_\b6_\b4 void _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt(\n+565 const V&,\n+566 const E&,\n+567 const V2&\n+568 )\n+569 {\n+570 DUNE_THROW(Dune::IOError, \"tried to create a 3D boundary segment in a non-\n+3D Grid\");\n 571 }\n-572 break;\n-573 }\n-574 DUNE_THROW(IOError, \"Dune::VTK::DataArrayWriter: unsupported \"\n-575 \"OutputType \" << type << \" in phase \" << phase);\n-576 }\n-577 };\n-578\n-579 } // namespace VTK\n-580\n-582\n-583} // namespace Dune\n-584\n-585#endif // DUNE_GRID_IO_FILE_VTK_DATAARRAYWRITER_HH\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh\n+572\n+573 // 3d-case:\n+574 template \n+_\b5_\b7_\b5 void _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt(\n+576 const std::vector >& nodes,\n+577 const E& elementDofs,\n+578 const V& vertices\n+579 )\n+580 {\n+581 std::array, 6> v;\n+582 for (int i=0; i<6; i++)\n+583 for (int j=0; j<_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; j++)\n+584 v[i][j] = nodes[elementDofs[i]][j];\n+585\n+586 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>* newBoundarySegment\n+587 = (_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>*) new GmshReaderQuadraticBoundarySegment<\n+3, 3 >( v[0], v[1], v[2],\n+588 v[3], v[4], v[5] );\n+589\n+590 _\bf_\ba_\bc_\bt_\bo_\br_\by.insertBoundarySegment( vertices,\n+591 std::shared_ptr<_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b> >(newBoundarySegment) );\n+592 }\n+593\n+594\n+595\n+_\b6_\b0_\b0 virtual void _\bp_\ba_\bs_\bs_\b2_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(FILE* file, const int elm_type,\n+601 std::map & renumber,\n+602 const std::vector< GlobalVector > & nodes,\n+603 const int physical_entity)\n+604 {\n+605 // some data about gmsh elements\n+606 const int nDofs[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 3, 6, -1, 10, -1, -1, -1,\n+1};\n+607 const int nVertices[16] = {-1, 2, 3, 4, 4, 8, 6, 5, 2, 3, -1, 4, -1, -1, -\n+1, 1};\n+608 const int elementDim[16] = {-1, 1, 2, 2, 3, 3, 3, 3, 1, 2, -1, 3, -1, -1, -\n+1, 0};\n+609\n+610 // test whether we support the element type\n+611 if ( not (elm_type > 0 && elm_type <= 15 // index in suitable range?\n+612 && (elementDim[elm_type] == _\bd_\bi_\bm || elementDim[elm_type] == (_\bd_\bi_\bm-1) ) ) ) /\n+/ real element or boundary element?\n+613 {\n+614 _\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be(file); // skip rest of line if element is unknown\n+615 return;\n+616 }\n+617\n+618 // The format string for parsing is n times '%d' in a row\n+619 std::string formatString = \"%d\";\n+620 for (int i=1; i elementDofs(10);\n+626\n+627 _\br_\be_\ba_\bd_\bf_\bi_\bl_\be(file,nDofs[elm_type], formatString.c_str(),\n+628 &(elementDofs[0]),&(elementDofs[1]),&(elementDofs[2]),\n+629 &(elementDofs[3]),&(elementDofs[4]),&(elementDofs[5]),\n+630 &(elementDofs[6]),&(elementDofs[7]),&(elementDofs[8]),\n+631 &(elementDofs[9]));\n+632\n+633 // correct differences between gmsh and Dune in the local vertex numbering\n+634 switch (elm_type)\n+635 {\n+636 case 3 : // 4-node quadrilateral\n+637 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[2],elementDofs[3]);\n+638 break;\n+639 case 5 : // 8-node hexahedron\n+640 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[2],elementDofs[3]);\n+641 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[6],elementDofs[7]);\n+642 break;\n+643 case 7 : // 5-node pyramid\n+644 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(elementDofs[2],elementDofs[3]);\n+645 break;\n+646 }\n+647\n+648 // renumber corners to account for the explicitly given vertex\n+649 // numbering in the file\n+650 std::vector vertices(nVertices[elm_type]);\n+651\n+652 for (int i=0; i, 3> v;\n+713 for (int i=0; i<_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; i++) {\n+714 v[0][i] = nodes[elementDofs[0]][i];\n+715 v[1][i] = nodes[elementDofs[2]][i]; // yes, the renumbering is intended!\n+716 v[2][i] = nodes[elementDofs[1]][i];\n+717 }\n+718 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>* newBoundarySegment\n+719 = (_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b>*) new GmshReaderQuadraticBoundarySegment<\n+2, dimWorld >(v[0], v[1], v[2]);\n+720 _\bf_\ba_\bc_\bt_\bo_\br_\by.insertBoundarySegment(vertices,\n+721 std::shared_ptr<_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b> >(newBoundarySegment));\n+722 break;\n+723 }\n+724 case 9 : { // 6-node triangle\n+725 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt(nodes, elementDofs, vertices);\n+726 break;\n+727 }\n+728 default: {\n+729 DUNE_THROW(Dune::IOError, \"GmshReader does not support using element-type \"\n+<< elm_type << \" for boundary segments\");\n+730 break;\n+731 }\n+732\n+733 }\n+734\n+735 }\n+736 }\n+737\n+738 // count elements and boundary elements\n+739 if (elementDim[elm_type] == _\bd_\bi_\bm) {\n+740 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by[_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt] = physical_entity;\n+741 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt++;\n+742 } else {\n+743 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by[_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt] = physical_entity;\n+744 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt++;\n+745 }\n+746\n+747 }\n+748\n+749 };\n+750\n+_\b7_\b5_\b1 namespace Gmsh {\n+_\b7_\b5_\b7 enum class _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+758 {\n+759 _\bv_\be_\br_\bb_\bo_\bs_\be = 1,\n+760 _\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs = 2,\n+761 _\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba = 4,\n+762 _\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba = 8\n+763 };\n+764\n+_\b7_\b6_\b6 constexpr _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b|_\b (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs b)\n+767 {\n+768 return static_cast<_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs>(\n+769 static_cast(a) | static_cast(b)\n+770 );\n+771 }\n+772\n+_\b7_\b7_\b4 constexpr bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b&_\b (_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs a, _\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs b)\n+775 {\n+776 return static_cast(a) & static_cast(b);\n+777 }\n+778\n+779 } // end namespace Gmsh\n+780\n+805 template\n+_\b8_\b0_\b6 class _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n+807 {\n+809\n+828 static void doRead(_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b> &factory,\n+829 const std::string &fileName,\n+830 std::vector& boundarySegmentToPhysicalEntity,\n+831 std::vector& elementToPhysicalEntity,\n+832 bool verbose, bool insertBoundarySegments)\n+833 {\n+834 // register boundary segment to boundary segment factory for possible load\n+balancing\n+835 // this needs to be done on all cores since the type might not be known\n+otherwise\n+836 GmshReaderQuadraticBoundarySegment< Grid::dimension, Grid::dimensionworld\n+>::registerFactory();\n+837\n+838#ifndef NDEBUG\n+839 // check that this method is called on all cores\n+840 factory._\bc_\bo_\bm_\bm().barrier();\n+841#endif\n+842\n+843 // create parse object and read grid on process 0\n+844 if (factory._\bc_\bo_\bm_\bm().rank() == 0)\n+845 {\n+846 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b<_\bG_\br_\bi_\bd_\b> parser(factory,verbose,insertBoundarySegments);\n+847 parser._\br_\be_\ba_\bd(fileName);\n+848\n+849 boundarySegmentToPhysicalEntity = std::move(parser._\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd_\bM_\ba_\bp());\n+850 elementToPhysicalEntity = std::move(parser._\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp());\n+851 }\n+852 else\n+853 {\n+854 boundarySegmentToPhysicalEntity = {};\n+855 elementToPhysicalEntity = {};\n+856 }\n+857 }\n+858\n+860\n+879 template\n+880 static T &discarded(T &&value) { return value; }\n+881\n+882 struct DataArg {\n+883 std::vector *data_ = nullptr;\n+884 DataArg(std::vector &data) : data_(&data) {}\n+885 DataArg(const decltype(std::ignore)&) {}\n+886 DataArg() = default;\n+887 };\n+888\n+889 struct DataFlagArg : DataArg {\n+890 bool flag_ = false;\n+891 using DataArg::DataArg;\n+892 DataFlagArg(bool flag) : flag_(flag) {}\n+893 };\n+894\n+895 public:\n+_\b8_\b9_\b6 typedef GridType _\bG_\br_\bi_\bd;\n+897\n+_\b9_\b0_\b4 static std::unique_ptr _\br_\be_\ba_\bd (const std::string& fileName, bool\n+verbose = true, bool insertBoundarySegments=true)\n+905 {\n+906 // make a grid factory\n+907 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> factory;\n+908\n+909 _\br_\be_\ba_\bd(factory, fileName, verbose, insertBoundarySegments);\n+910\n+911 return factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd();\n+912 }\n+913\n+_\b9_\b3_\b3 static std::unique_ptr _\br_\be_\ba_\bd (const std::string& fileName,\n+934 std::vector& boundarySegmentToPhysicalEntity,\n+935 std::vector& elementToPhysicalEntity,\n+936 bool verbose = true, bool insertBoundarySegments=true)\n+937 {\n+938 // make a grid factory\n+939 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> factory;\n+940\n+941 doRead(\n+942 factory, fileName, boundarySegmentToPhysicalEntity,\n+943 elementToPhysicalEntity, verbose, insertBoundarySegments\n+944 );\n+945\n+946 return factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd();\n+947 }\n+948\n+_\b9_\b5_\b0 static void _\br_\be_\ba_\bd (_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory, const std::string&\n+fileName,\n+951 bool verbose = true, bool insertBoundarySegments=true)\n+952 {\n+953 doRead(\n+954 factory, fileName, discarded(std::vector{}),\n+955 discarded(std::vector{}), verbose, insertBoundarySegments\n+956 );\n+957 }\n+958\n+960\n+_\b9_\b8_\b3 static void _\br_\be_\ba_\bd (_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> &factory,\n+984 const std::string &fileName,\n+985 DataFlagArg boundarySegmentData,\n+986 DataArg _\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba,\n+987 bool verbose=true)\n+988 {\n+989 doRead(\n+990 factory, fileName,\n+991 boundarySegmentData.data_\n+992 ? *boundarySegmentData.data_ : discarded(std::vector{}),\n+993 _\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba.data_\n+994 ? *_\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba.data_ : discarded(std::vector{}),\n+995 verbose,\n+996 boundarySegmentData.flag_ || boundarySegmentData.data_\n+997 );\n+998 }\n+999\n+_\b1_\b0_\b2_\b0 static void _\br_\be_\ba_\bd (_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory,\n+1021 const std::string& fileName,\n+1022 std::vector& boundarySegmentToPhysicalEntity,\n+1023 std::vector& elementToPhysicalEntity,\n+1024 bool verbose, bool insertBoundarySegments)\n+1025 {\n+1026 doRead(\n+1027 factory, fileName, boundarySegmentToPhysicalEntity,\n+1028 elementToPhysicalEntity, verbose, insertBoundarySegments\n+1029 );\n+1030 }\n+1031\n+1033 //\\{\n+1034\n+1035 [[deprecated(\"Will be removed after 2.8. Either use other constructors or\n+use static methods without constructing an object\")]]\n+_\b1_\b0_\b3_\b6 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br() = default;\n+1037\n+_\b1_\b0_\b3_\b8 using _\bO_\bp_\bt_\bs = _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs;\n+1039\n+_\b1_\b0_\b4_\b0 static constexpr _\bO_\bp_\bt_\bs _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs =\n+1041 Opts::verbose | Opts::insertBoundarySegments | Opts::readElementData |\n+Opts::readBoundaryData;\n+1042\n+1044\n+_\b1_\b0_\b6_\b7 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br(const std::string& fileName,\n+1068 _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs)\n+1069 {\n+1070 gridFactory_ = std::make_unique>();\n+1071 readGridFile(fileName, *gridFactory_, options);\n+1072 }\n+1073\n+_\b1_\b0_\b8_\b1 _\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br(const std::string& fileName, _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory,\n+1082 _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs)\n+1083 {\n+1084 readGridFile(fileName, factory, options);\n+1085 }\n+1086\n+_\b1_\b0_\b8_\b8 const std::vector& _\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba () const\n+1089 {\n+1090 checkElementData();\n+1091 return elementIndexToGmshPhysicalEntity_;\n+1092 }\n+1093\n+_\b1_\b0_\b9_\b5 const std::vector& _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba () const\n+1096 {\n+1097 checkBoundaryData();\n+1098 return boundarySegmentIndexToGmshPhysicalEntity_;\n+1099 }\n+1100\n+_\b1_\b1_\b0_\b5 bool _\bh_\ba_\bs_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba () const\n+1106 { return hasElementData_ && !extractedElementData_; }\n+1107\n+_\b1_\b1_\b1_\b2 bool _\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba () const\n+1113 { return hasBoundaryData_ && !extractedBoundaryData_; }\n+1114\n+_\b1_\b1_\b1_\b6 std::vector _\be_\bx_\bt_\br_\ba_\bc_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba ()\n+1117 {\n+1118 checkElementData();\n+1119 extractedElementData_ = true;\n+1120 return std::move(elementIndexToGmshPhysicalEntity_);\n+1121 }\n+1122\n+_\b1_\b1_\b2_\b4 std::vector _\be_\bx_\bt_\br_\ba_\bc_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba ()\n+1125 {\n+1126 checkBoundaryData();\n+1127 extractedBoundaryData_ = true;\n+1128 return std::move(boundarySegmentIndexToGmshPhysicalEntity_);\n+1129 }\n+1130\n+_\b1_\b1_\b3_\b2 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd ()\n+1133 {\n+1134 if (!gridFactory_)\n+1135 DUNE_THROW(Dune::InvalidStateException,\n+1136 \"This GmshReader has been constructed with a Dune::GridFactory. \"\n+1137 << \"This grid factory has been filled with all information to create a\n+grid. \"\n+1138 << \"Please use this factory to create the grid by calling\n+factory.createGrid(). \"\n+1139 << \"Alternatively use the constructor without passing the factory in\n+combination with this member function.\"\n+1140 );\n+1141\n+1142 return gridFactory_->createGrid();\n+1143 }\n+1144\n+1145 //\\}\n+1146\n+1147 private:\n+1148 void checkElementData () const\n+1149 {\n+1150 if (!hasElementData_)\n+1151 DUNE_THROW(Dune::InvalidStateException,\n+1152 \"This GmshReader has been constructed without the option\n+'readElementData'. \"\n+1153 << \"Please enable reading element data by passing the option 'Gmsh::\n+ReaderOpts::readElementData' \"\n+1154 << \"to the constructor of this class.\"\n+1155 );\n+1156\n+1157 if (extractedElementData_)\n+1158 DUNE_THROW(Dune::InvalidStateException,\n+1159 \"The element data has already been extracted from this GmshReader \"\n+1160 << \"via a function call to reader.extractElementData(). Use the extraced\n+data or \"\n+1161 << \"read the grid data from file again by constructing a new reader.\"\n+1162 );\n+1163 }\n+1164\n+1165 void checkBoundaryData () const\n+1166 {\n+1167 if (!hasBoundaryData_)\n+1168 DUNE_THROW(Dune::InvalidStateException,\n+1169 \"This GmshReader has been constructed without the option\n+'readBoundaryData'. \"\n+1170 << \"Please enable reading boundary data by passing the option 'Gmsh::\n+ReaderOpts::readBoundaryData' \"\n+1171 << \"to the constructor of this class.\"\n+1172 );\n+1173\n+1174 if (extractedBoundaryData_)\n+1175 DUNE_THROW(Dune::InvalidStateException,\n+1176 \"The boundary data has already been extracted from this GmshReader \"\n+1177 << \"via a function call to reader.extractBoundaryData(). Use the extraced\n+data or \"\n+1178 << \"read the grid data from file again by constructing a new reader.\"\n+1179 );\n+1180 }\n+1181\n+1182 void readGridFile (const std::string& fileName, GridFactory&\n+factory, _\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs options)\n+1183 {\n+1184 const bool _\bv_\be_\br_\bb_\bo_\bs_\be = options & Opts::verbose;\n+1185 const bool _\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs = options & Opts::\n+insertBoundarySegments;\n+1186 const bool _\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba = options & Opts::readBoundaryData;\n+1187 const bool _\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba = options & Opts::readElementData;\n+1188\n+1189 doRead(\n+1190 factory, fileName, boundarySegmentIndexToGmshPhysicalEntity_,\n+1191 elementIndexToGmshPhysicalEntity_, verbose,\n+1192 readBoundaryData || insertBoundarySegments\n+1193 );\n+1194\n+1195 // clear unwanted data\n+1196 if (!readBoundaryData)\n+1197 boundarySegmentIndexToGmshPhysicalEntity_ = std::vector{};\n+1198 if (!readElementData)\n+1199 elementIndexToGmshPhysicalEntity_ = std::vector{};\n+1200\n+1201 hasElementData_ = _\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba;\n+1202 hasBoundaryData_ = _\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba;\n+1203 }\n+1204\n+1205 std::unique_ptr> gridFactory_;\n+1206\n+1207 std::vector elementIndexToGmshPhysicalEntity_;\n+1208 std::vector boundarySegmentIndexToGmshPhysicalEntity_;\n+1209\n+1210 bool hasElementData_;\n+1211 bool hasBoundaryData_;\n+1212\n+1213 // for better error messages, we keep track of these separately\n+1214 bool extractedElementData_ = false;\n+1215 bool extractedBoundaryData_ = false;\n+1216 };\n+1217\n+1220} // namespace Dune\n+1221\n+1222#endif\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b._\bh_\bh\n+Base class for grid boundary segments of arbitrary geometry.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+ReaderOptions\n+Option for the Gmsh mesh file reader.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:758\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bv_\be_\br_\bb_\bo_\bs_\be\n+@ verbose\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n+@ readBoundaryData\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\br_\be_\ba_\bd_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n+@ readElementData\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt_\bs\n+@ insertBoundarySegments\n+_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n+> &b)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n-@ int32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2\n-@ uint32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n-@ uint8\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n-@ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4\n-@ float64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n-OutputType\n-How the bulk data should be stored in the file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n-@ ascii\n-Output to the file is in ascii.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw\n-@ appendedraw\n-Output is to the file is appended raw binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n-@ appendedbase64\n-Output is to the file is appended base64 binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4\n-@ base64\n-Output to the file is inline base64 binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg\n-std::string toString(Precision p)\n-map precision to VTK type name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:280\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\by_\bp_\be_\bS_\bi_\bz_\be\n-std::size_t typeSize(Precision p)\n-map precision to byte size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:300\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n-T Type\n-type to convert T to before putting it into a stream with <<\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-base class for data array writers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(T data)\n-write one element of data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-DataArrayWriter(Precision _prec)\n-construct a data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp\n-virtual bool writeIsNoop() const\n-whether calls to write may be skipped\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-virtual ~DataArrayWriter()\n-virtual destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-a streaming writer for data array tags, uses ASCII inline format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-~AsciiDataArrayWriter()\n-finish output; writes end tag\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bA_\bs_\bc_\bi_\bi_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-AsciiDataArrayWriter(std::ostream &theStream, std::string name, int ncomps,\n-const Indent &indent_, Precision prec_)\n-make a new data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-a streaming writer for data array tags, uses binary inline format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-~BinaryDataArrayWriter()\n-finish output; writes end tag\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:228\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bB_\bi_\bn_\ba_\br_\by_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-BinaryDataArrayWriter(std::ostream &theStream, std::string name, int ncomps,\n-int nitems, const Indent &indent_, Precision prec_)\n-make a new data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-a streaming writer for data array tags, uses appended raw format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-AppendedRawDataArrayWriter(std::ostream &s, std::string name, int ncomps,\n-unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)\n-make a new data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:283\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp\n-bool writeIsNoop() const\n-whether calls to write may be skipped\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:297\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-a streaming writer for data array tags, uses appended base64 format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-AppendedBase64DataArrayWriter(std::ostream &s, std::string name, int ncomps,\n-unsigned nitems, unsigned &offset, const Indent &indent, Precision prec_)\n-make a new data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:325\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bI_\bs_\bN_\bo_\bo_\bp\n-bool writeIsNoop() const\n-whether calls to write may be skipped\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:342\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-a streaming writer for appended data array tags, uses base64 format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:360\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bB_\ba_\bs_\be_\b6_\b4_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-NakedBase64DataArrayWriter(std::ostream &theStream, int ncomps, int nitems,\n-Precision prec_)\n-make a new data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:369\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-a streaming writer for appended data arrays, uses raw format\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:408\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bN_\ba_\bk_\be_\bd_\bR_\ba_\bw_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-NakedRawDataArrayWriter(std::ostream &theStream, int ncomps, int nitems,\n-Precision prec_)\n-make a new data array writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:419\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-a factory for DataArrayWriters\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:462\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n-bool beginAppended()\n-signal start of the appended section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:497\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-DataArrayWriter * make(const std::string &name, unsigned ncomps, unsigned\n-nitems, const Indent &indent, Precision prec)\n-create a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:541\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-DataArrayWriterFactory(OutputType type_, std::ostream &stream_)\n-create a DataArrayWriterFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:482\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bE_\bn_\bc_\bo_\bd_\bi_\bn_\bg\n-const std::string & appendedEncoding() const\n-query encoding string for appended data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:510\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(X &data)\n-encode a data item\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bf_\bl_\bu_\bs_\bh\n-void flush()\n-flush the current unwritten data to the stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n-write out data in binary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(T data)\n-write data to stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b&\n+constexpr bool operator&(ReaderOptions a, ReaderOptions b)\n+query operator for reader options (is b set in a)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:774\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b|\n+constexpr ReaderOptions operator|(ReaderOptions a, ReaderOptions b)\n+composition operator for reader options\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:766\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bm_\be_\bn_\bt\n+Base class for classes implementing geometries of boundary segments.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundarysegment.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bo_\bm_\bm\n+Communication comm() const\n+Return the Communication used by the grid factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:297\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Provide a generic factory class for unstructured grids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+virtual std::unique_ptr< GridType > createGrid()\n+Finalize grid creation and hand over the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options for read operation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bO_\br_\bd_\be_\br\n+GeometryOrder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bf_\bi_\br_\bs_\bt_\bO_\br_\bd_\be_\br\n+@ firstOrder\n+edges are straight lines.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bs_\be_\bc_\bo_\bn_\bd_\bO_\br_\bd_\be_\br\n+@ secondOrder\n+quadratic boundary approximation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br\n+dimension independent parts for GmshReaderParser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:302\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bp_\ba_\bs_\bs_\b1_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+void pass1HandleElement(FILE *file, const int elm_type, std::map< int, unsigned\n+int > &renumber, const std::vector< GlobalVector > &nodes)\n+Process one element during the first pass through the list of all elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:512\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br_\by\n+Dune::GridFactory< GridType > & factory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:305\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd_\bM_\ba_\bp\n+std::vector< int > & boundaryIdMap()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:357\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bM_\ba_\bp\n+std::vector< int > & elementIndexMap()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:362\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bu_\bm_\bb_\be_\br_\b__\bo_\bf_\b__\br_\be_\ba_\bl_\b__\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n+unsigned int number_of_real_vertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:308\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt\n+void boundarysegment_insert(const std::vector< FieldVector< double, 3 > >\n+&nodes, const E &elementDofs, const V &vertices)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:575\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br\n+GmshReaderParser(Dune::GridFactory< GridType > &_factory, bool v, bool i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:354\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt\n+int element_count\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+void read(const std::string &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:367\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\bk_\bi_\bp_\bl_\bi_\bn_\be\n+void skipline(FILE *file)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:344\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bf_\bi_\bl_\be\n+void readfile(FILE *file, int cnt, const char *format, void *t1, void *t2=0,\n+void *t3=0, void *t4=0, void *t5=0, void *t6=0, void *t7=0, void *t8=0, void\n+*t9=0, void *t10=0)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:330\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bi_\bn_\bd_\be_\bx_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by\n+std::vector< int > element_index_to_physical_entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:316\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bp_\ba_\bs_\bs_\b2_\bH_\ba_\bn_\bd_\bl_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+virtual void pass2HandleElement(FILE *file, const int elm_type, std::map< int,\n+unsigned int > &renumber, const std::vector< GlobalVector > &nodes, const int\n+physical_entity)\n+Process one element during the second pass through the list of all elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:600\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm\n+static const int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< double, dimWorld > GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:324\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\bi_\bl_\be_\bN_\ba_\bm_\be\n+std::string fileName\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:313\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bc_\bo_\bu_\bn_\bt\n+int boundary_element_count\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:309\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\bm_\be_\bn_\bt_\b__\bi_\bn_\bs_\be_\br_\bt\n+void boundarysegment_insert(const V &, const E &, const V2 &)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:564\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\be_\br_\bb_\bo_\bs_\be\n+bool verbose\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:306\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bi_\bd_\b__\bt_\bo_\b__\bp_\bh_\by_\bs_\bi_\bc_\ba_\bl_\b__\be_\bn_\bt_\bi_\bt_\by\n+std::vector< int > boundary_id_to_physical_entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:315\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bu_\bf\n+char buf[512]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\b__\bs_\be_\bg_\bm_\be_\bn_\bt_\bs\n+bool insert_boundary_segments\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:307\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n+Read Gmsh mesh file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:807\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static std::unique_ptr< Grid > read(const std::string &fileName, std::vector<\n+int > &boundarySegmentToPhysicalEntity, std::vector< int >\n+&elementToPhysicalEntity, bool verbose=true, bool insertBoundarySegments=true)\n+Read Gmsh file, possibly with data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:933\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n+const std::vector< int > & elementData() const\n+Access element data (maps element index to Gmsh physical entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1088\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static void read(Dune::GridFactory< Grid > &factory, const std::string\n+&fileName, DataFlagArg boundarySegmentData, DataArg elementData, bool\n+verbose=true)\n+read Gmsh file, possibly with data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:983\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static std::unique_ptr< Grid > read(const std::string &fileName, bool\n+verbose=true, bool insertBoundarySegments=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:904\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static void read(Dune::GridFactory< Grid > &factory, const std::string\n+&fileName, bool verbose=true, bool insertBoundarySegments=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:950\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n+GridType Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:896\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+std::unique_ptr< Grid > createGrid()\n+Create the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\be_\bx_\bt_\br_\ba_\bc_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n+std::vector< int > extractBoundaryData()\n+Erase boundary data from reader and return the data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static void read(Dune::GridFactory< Grid > &factory, const std::string\n+&fileName, std::vector< int > &boundarySegmentToPhysicalEntity, std::vector<\n+int > &elementToPhysicalEntity, bool verbose, bool insertBoundarySegments)\n+Read Gmsh file, possibly with data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1020\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n+bool hasElementData() const\n+If element data is available.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n+bool hasBoundaryData() const\n+If boundary data is available.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bO_\bp_\bt_\bs\n+static constexpr Opts defaultOpts\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1040\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n+GmshReader(const std::string &fileName, GridFactory< Grid > &factory, Gmsh::\n+ReaderOptions options=defaultOpts)\n+Construct a Gmsh reader object from a file name and a grid factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1081\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n+GmshReader(const std::string &fileName, Gmsh::ReaderOptions\n+options=defaultOpts)\n+Construct a Gmsh reader object (alternatively use one of the static member\n+functions)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1067\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\be_\bx_\bt_\br_\ba_\bc_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bD_\ba_\bt_\ba\n+std::vector< int > extractElementData()\n+Erase element data from reader and return the data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bD_\ba_\bt_\ba\n+const std::vector< int > & boundaryData() const\n+Access boundary data (maps boundary segment index to Gmsh physical entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:1095\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n+GmshReader()=default\n+Dynamic Gmsh reader interface.\n+_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+Provide a generic factory class for unstructured grids.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00953.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00953.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: volumewriter.hh File Reference\n+dune-grid: starcdreader.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,44 @@\n \n \n \n \n \n \n \n
    \n \n-
    volumewriter.hh File Reference
    \n+
    starcdreader.hh File Reference
    \n
    \n
    \n-
    #include <memory>
    \n-#include <dune/grid/io/file/vtk/basicwriter.hh>
    \n-#include <dune/grid/io/file/vtk/function.hh>
    \n-#include <dune/grid/io/file/vtk/functionwriter.hh>
    \n-#include <dune/grid/io/file/vtk/volumeiterators.hh>
    \n+
    #include <dune/common/exceptions.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/grid/common/gridfactory.hh>
    \n+#include <iostream>
    \n+#include <fstream>
    \n+#include <memory>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::VTK::ConformingVolumeWriter< GV >
    class  Dune::StarCDReader< GridType >
     File reader for the Star-CD format. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::VTK
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,27 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-volumewriter.hh File Reference\n+starcdreader.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\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:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\bV_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 File reader for the Star-CD format. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00953_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00953_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: volumewriter.hh Source File\n+dune-grid: starcdreader.hh Source File\n \n \n \n \n \n \n \n@@ -70,136 +70,180 @@\n
    \n \n \n \n \n \n \n
    \n-
    volumewriter.hh
    \n+
    starcdreader.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH
    \n-
    8
    \n-
    9#include <memory>
    \n-
    10
    \n-\n-\n-\n-\n+
    5#ifndef DUNE_STARCD_READER_HH
    \n+
    6#define DUNE_STARCD_READER_HH
    \n+
    7
    \n+
    8#include <dune/common/exceptions.hh>
    \n+
    9
    \n+
    10#include <dune/geometry/type.hh>
    \n+\n+
    12#include <iostream>
    \n+
    13#include <fstream>
    \n+
    14#include <memory>
    \n
    15
    \n
    16namespace Dune {
    \n-
    19
    \n-
    20 namespace VTK {
    \n-
    21
    \n-
    22 template<typename GV>
    \n-
    \n-\n-\n-
    25 public BasicWriter<ConformingVolumeIteratorFactory<GV> >
    \n-
    26 {
    \n-\n-\n-
    29
    \n-
    30 const GV& gv;
    \n-
    31
    \n-
    32 public:
    \n-\n-
    34 typedef std::shared_ptr<VTKFunction> VTKFunctionPtr;
    \n-
    35
    \n-
    \n-\n-
    37 : Factory(gv_), Base(static_cast<const Factory&>(*this)), gv(gv_)
    \n-
    38 { }
    \n-
    \n-
    39
    \n-\n-
    41
    \n-
    \n-
    42 void addCellData(const VTKFunctionPtr& p) {
    \n-
    43 Base::addCellData(std::shared_ptr<typename Base::FunctionWriter>
    \n-\n-
    45 }
    \n-
    \n-
    46
    \n-
    \n-\n-\n-
    49 }
    \n-
    \n-
    50
    \n-
    51 template<typename V>
    \n-
    \n-
    52 void addCellData(const V &v, const std::string &name, int ncomps=1) {
    \n-
    53 addCellData(new P0VTKFunction<GV, V>(gv, v, name, ncomps));
    \n-
    54 }
    \n-
    \n+
    17
    \n+
    51 template <class GridType>
    \n+
    \n+\n+
    53
    \n+
    54 public:
    \n
    55
    \n-
    \n-\n-
    57 addPointData(std::shared_ptr<typename Base::FunctionWriter>
    \n-\n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-\n-\n-
    63 }
    \n-
    \n-
    64
    \n-
    65 template<typename V>
    \n-
    \n-
    66 void addVertexData(const V &v, const std::string &name, int ncomps=1) {
    \n-
    67 addVertexData(new P1VTKFunction<GV, V>(gv, v, name, ncomps));
    \n-
    68 }
    \n-
    \n+
    \n+
    65 static std::unique_ptr<GridType> read(const std::string& fileName, bool verbose = true)
    \n+
    66 {
    \n+
    67 // extract the grid dimension
    \n+
    68 const int dim = GridType::dimension;
    \n
    69
    \n-
    70 };
    \n-
    \n-
    71
    \n-
    72 } // namespace VTK
    \n-
    73
    \n-
    75
    \n-
    76} // namespace Dune
    \n+
    70 // currently only dim = 3 is implemented
    \n+
    71 if (dim != 3)
    \n+
    72 DUNE_THROW(Dune::NotImplemented,
    \n+
    73 "Reading Star-CD format is not implemented for dimension " << dim);
    \n+
    74
    \n+
    75 // set up the grid factory
    \n+\n
    77
    \n-
    78#endif // DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH
    \n-\n-
    Functions for VTK output.
    \n-\n-\n+
    78 // set the name of the vertex file
    \n+
    79 std::string vertexFileName = fileName + ".vrt";
    \n+
    80
    \n+
    81 // set the vertex input stream
    \n+
    82 std::ifstream vertexFile(vertexFileName.c_str());
    \n+
    83 if (!vertexFile)
    \n+
    84 DUNE_THROW(Dune::IOError, "Could not open " << vertexFileName);
    \n+
    85
    \n+
    86 // read the vertices
    \n+
    87 int dummyIdx;
    \n+
    88 int numberOfVertices = 0;
    \n+
    89 while (vertexFile >> dummyIdx) {
    \n+
    90 numberOfVertices++;
    \n+
    91
    \n+
    92 Dune::FieldVector<double,dim> position;
    \n+
    93
    \n+
    94 for (int k = 0; k < dim; k++)
    \n+
    95 vertexFile >> position[k];
    \n+
    96
    \n+
    97 factory.insertVertex(position);
    \n+
    98 }
    \n+
    99 if (verbose)
    \n+
    100 std::cout << numberOfVertices << " vertices read." << std::endl;
    \n+
    101
    \n+
    102 // set the name of the element file
    \n+
    103 std::string elementFileName = fileName + ".cel";
    \n+
    104
    \n+
    105 // set the element input stream
    \n+
    106 std::ifstream elementFile(elementFileName.c_str());
    \n+
    107 if (!elementFile)
    \n+
    108 DUNE_THROW(Dune::IOError, "Could not open " << elementFileName);
    \n+
    109
    \n+
    110 // read the elements
    \n+
    111 int numberOfElements = 0;
    \n+
    112 int numberOfSimplices = 0;
    \n+
    113 int numberOfPyramids = 0;
    \n+
    114 int numberOfPrisms = 0;
    \n+
    115 int numberOfCubes = 0;;
    \n+
    116 int maxNumberOfVertices = (int)pow(2, dim);
    \n+
    117 int isVolume = 1;
    \n+
    118 while (elementFile >> dummyIdx) {
    \n+
    119 std::vector<unsigned int> vertices(maxNumberOfVertices);
    \n+
    120 for (int k = 0; k < maxNumberOfVertices; k++)
    \n+
    121 elementFile >> vertices[k];
    \n+
    122
    \n+
    123 int boundaryId;
    \n+
    124 elementFile >> boundaryId;
    \n+
    125
    \n+
    126 int volumeOrSurface[2];
    \n+
    127 elementFile >> volumeOrSurface[0] >> volumeOrSurface[1];
    \n+
    128
    \n+
    129 if (volumeOrSurface[0] == isVolume) {
    \n+
    130 numberOfElements++;
    \n+
    131
    \n+
    132 if (vertices[2] == vertices[3]) { // simplex or prism
    \n+
    133 if (vertices[4] == vertices[5]) { // simplex
    \n+
    134 numberOfSimplices++;
    \n+
    135 std::vector<unsigned int> simplexVertices(4);
    \n+
    136 for (int k = 0; k < 3; k++)
    \n+
    137 simplexVertices[k] = vertices[k] - 1;
    \n+
    138 simplexVertices[3] = vertices[4] - 1;
    \n+
    139 factory.insertElement(Dune::GeometryTypes::tetrahedron, simplexVertices);
    \n+
    140 }
    \n+
    141 else { // prism
    \n+
    142 numberOfPrisms++;
    \n+
    143 std::vector<unsigned int> prismVertices(6);
    \n+
    144 for (int k = 0; k < 3; k++)
    \n+
    145 prismVertices[k] = vertices[k] - 1;
    \n+
    146 for (int k = 3; k < 6; k++)
    \n+
    147 prismVertices[k] = vertices[k+1] - 1;
    \n+
    148 factory.insertElement(Dune::GeometryTypes::prism, prismVertices);
    \n+
    149 }
    \n+
    150 }
    \n+
    151 else { // cube or pyramid
    \n+
    152 if (vertices[4] == vertices[5]) { // pyramid
    \n+
    153 numberOfPyramids++;
    \n+
    154 std::vector<unsigned int> pyramidVertices(5);
    \n+
    155 for (int k = 0; k < 5; k++)
    \n+
    156 pyramidVertices[k] = vertices[k] - 1;
    \n+
    157 factory.insertElement(Dune::GeometryTypes::pyramid, pyramidVertices);
    \n+
    158 }
    \n+
    159 else { // cube
    \n+
    160 numberOfCubes++;
    \n+
    161 std::vector<unsigned int> cubeVertices(8);
    \n+
    162 for (int k = 0; k < 8; k++)
    \n+
    163 cubeVertices[k] = vertices[k] - 1;
    \n+
    164 std::swap(cubeVertices[2], cubeVertices[3]);
    \n+
    165 std::swap(cubeVertices[6], cubeVertices[7]);
    \n+
    166 factory.insertElement(Dune::GeometryTypes::hexahedron, cubeVertices);
    \n+
    167 }
    \n+
    168 }
    \n+
    169 }
    \n+
    170 }
    \n+
    171 if (verbose)
    \n+
    172 std::cout << numberOfElements << " elements read: "
    \n+
    173 << numberOfSimplices << " simplices, " << numberOfPyramids << " pyramids, "
    \n+
    174 << numberOfPrisms << " prisms, " << numberOfCubes << " cubes." << std::endl;
    \n+
    175
    \n+
    176 // finish off the construction of the grid object
    \n+
    177 if (verbose)
    \n+
    178 std::cout << "Starting createGrid() ... " << std::flush;
    \n+
    179
    \n+
    180 return factory.createGrid();
    \n+
    181
    \n+
    182 }
    \n+
    \n+
    183
    \n+
    184 };
    \n+
    \n+
    185
    \n+
    186}
    \n+
    187
    \n+
    188#endif
    \n+
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basicwriter.hh:35
    \n-
    void addCellData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:76
    \n-
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n-\n-
    Take a vector and interpret it as cell data for the VTKWriter.
    Definition function.hh:97
    \n-
    Take a vector and interpret it as point data for the VTKWriter.
    Definition function.hh:205
    \n-
    Base class for function writers.
    Definition functionwriter.hh:90
    \n-
    Definition volumeiterators.hh:23
    \n-
    Definition volumewriter.hh:26
    \n-
    std::shared_ptr< VTKFunction > VTKFunctionPtr
    Definition volumewriter.hh:34
    \n-
    void addCellData(const VTKFunctionPtr &p)
    Definition volumewriter.hh:42
    \n-
    void addVertexData(const VTKFunctionPtr &p)
    Definition volumewriter.hh:56
    \n-
    void addCellData(VTKFunction *p)
    Definition volumewriter.hh:47
    \n-
    void addVertexData(const V &v, const std::string &name, int ncomps=1)
    Definition volumewriter.hh:66
    \n-
    void addVertexData(VTKFunction *p)
    Definition volumewriter.hh:61
    \n-
    void addCellData(const V &v, const std::string &name, int ncomps=1)
    Definition volumewriter.hh:52
    \n-
    ConformingVolumeWriter(const GV &gv_)
    Definition volumewriter.hh:36
    \n-
    Dune::VTKFunction< GV > VTKFunction
    Definition volumewriter.hh:33
    \n-
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n+
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n+
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)
    Insert an element into the coarse grid.
    Definition common/gridfactory.hh:346
    \n+
    virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)
    Insert a vertex into the coarse grid.
    Definition common/gridfactory.hh:335
    \n+
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n+
    File reader for the Star-CD format.
    Definition starcdreader.hh:52
    \n+
    static std::unique_ptr< GridType > read(const std::string &fileName, bool verbose=true)
    Read grid from a Star-CD file.
    Definition starcdreader.hh:65
    \n+
    Provide a generic factory class for unstructured grids.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,148 +2,193 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-volumewriter.hh\n+starcdreader.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH\n-7#define DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH\n-8\n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+5#ifndef DUNE_STARCD_READER_HH\n+6#define DUNE_STARCD_READER_HH\n+7\n+8#include \n+9\n+10#include \n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+12#include \n+13#include \n+14#include \n 15\n 16namespace _\bD_\bu_\bn_\be {\n-19\n-20 namespace VTK {\n-21\n-22 template\n-_\b2_\b3 class _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br\n-24 : public _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by,\n-25 public _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br >\n-26 {\n-27 typedef _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\bV_\b> _\bF_\ba_\bc_\bt_\bo_\br_\by;\n-28 typedef _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\ba_\bc_\bt_\bo_\br_\by_\b> _\bB_\ba_\bs_\be;\n-29\n-30 const GV& gv;\n-31\n-32 public:\n-_\b3_\b3 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b> _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn;\n-_\b3_\b4 typedef std::shared_ptr _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br;\n-35\n-_\b3_\b6 _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br(const GV& gv_)\n-37 : _\bF_\ba_\bc_\bt_\bo_\br_\by(gv_), _\bB_\ba_\bs_\be(static_cast(*this)), gv(gv_)\n-38 { }\n-39\n-40 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba;\n-41\n-_\b4_\b2 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br& p) {\n-43 _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr\n-44 (new _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b>(p)));\n-45 }\n-46\n-_\b4_\b7 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p) {\n-48 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br(p));\n-49 }\n-50\n-51 template\n-_\b5_\b2 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const V &v, const std::string &name, int ncomps=1) {\n-53 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(new _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\bV_\b,_\b _\bV_\b>(gv, v, name, ncomps));\n-54 }\n+17\n+51 template \n+_\b5_\b2 class _\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br {\n+53\n+54 public:\n 55\n-_\b5_\b6 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(const _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br& p) {\n-57 _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(std::shared_ptr\n-58 (new _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b>(p)));\n-59 }\n-60\n-_\b6_\b1 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p) {\n-62 _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br(p));\n-63 }\n-64\n-65 template\n-_\b6_\b6 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(const V &v, const std::string &name, int ncomps=1) {\n-67 _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(new _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\bV_\b,_\b _\bV_\b>(gv, v, name, ncomps));\n-68 }\n+_\b6_\b5 static std::unique_ptr _\br_\be_\ba_\bd(const std::string& fileName, bool\n+verbose = true)\n+66 {\n+67 // extract the grid dimension\n+68 const int dim = GridType::dimension;\n 69\n-70 };\n-71\n-72 } // namespace VTK\n-73\n-75\n-76} // namespace Dune\n+70 // currently only dim = 3 is implemented\n+71 if (dim != 3)\n+72 DUNE_THROW(Dune::NotImplemented,\n+73 \"Reading Star-CD format is not implemented for dimension \" << dim);\n+74\n+75 // set up the grid factory\n+76 _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\bT_\by_\bp_\be_\b> factory;\n 77\n-78#endif // DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH\n-_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-Functions for VTK output.\n-_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bv_\bo_\bl_\bu_\bm_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n+78 // set the name of the vertex file\n+79 std::string vertexFileName = fileName + \".vrt\";\n+80\n+81 // set the vertex input stream\n+82 std::ifstream vertexFile(vertexFileName.c_str());\n+83 if (!vertexFile)\n+84 DUNE_THROW(Dune::IOError, \"Could not open \" << vertexFileName);\n+85\n+86 // read the vertices\n+87 int dummyIdx;\n+88 int numberOfVertices = 0;\n+89 while (vertexFile >> dummyIdx) {\n+90 numberOfVertices++;\n+91\n+92 Dune::FieldVector position;\n+93\n+94 for (int k = 0; k < dim; k++)\n+95 vertexFile >> position[k];\n+96\n+97 factory._\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx(position);\n+98 }\n+99 if (verbose)\n+100 std::cout << numberOfVertices << \" vertices read.\" << std::endl;\n+101\n+102 // set the name of the element file\n+103 std::string elementFileName = fileName + \".cel\";\n+104\n+105 // set the element input stream\n+106 std::ifstream elementFile(elementFileName.c_str());\n+107 if (!elementFile)\n+108 DUNE_THROW(Dune::IOError, \"Could not open \" << elementFileName);\n+109\n+110 // read the elements\n+111 int numberOfElements = 0;\n+112 int numberOfSimplices = 0;\n+113 int numberOfPyramids = 0;\n+114 int numberOfPrisms = 0;\n+115 int numberOfCubes = 0;;\n+116 int maxNumberOfVertices = (int)pow(2, dim);\n+117 int isVolume = 1;\n+118 while (elementFile >> dummyIdx) {\n+119 std::vector vertices(maxNumberOfVertices);\n+120 for (int k = 0; k < maxNumberOfVertices; k++)\n+121 elementFile >> vertices[k];\n+122\n+123 int boundaryId;\n+124 elementFile >> boundaryId;\n+125\n+126 int volumeOrSurface[2];\n+127 elementFile >> volumeOrSurface[0] >> volumeOrSurface[1];\n+128\n+129 if (volumeOrSurface[0] == isVolume) {\n+130 numberOfElements++;\n+131\n+132 if (vertices[2] == vertices[3]) { // simplex or prism\n+133 if (vertices[4] == vertices[5]) { // simplex\n+134 numberOfSimplices++;\n+135 std::vector simplexVertices(4);\n+136 for (int k = 0; k < 3; k++)\n+137 simplexVertices[k] = vertices[k] - 1;\n+138 simplexVertices[3] = vertices[4] - 1;\n+139 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::tetrahedron, simplexVertices);\n+140 }\n+141 else { // prism\n+142 numberOfPrisms++;\n+143 std::vector prismVertices(6);\n+144 for (int k = 0; k < 3; k++)\n+145 prismVertices[k] = vertices[k] - 1;\n+146 for (int k = 3; k < 6; k++)\n+147 prismVertices[k] = vertices[k+1] - 1;\n+148 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::prism, prismVertices);\n+149 }\n+150 }\n+151 else { // cube or pyramid\n+152 if (vertices[4] == vertices[5]) { // pyramid\n+153 numberOfPyramids++;\n+154 std::vector pyramidVertices(5);\n+155 for (int k = 0; k < 5; k++)\n+156 pyramidVertices[k] = vertices[k] - 1;\n+157 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::pyramid, pyramidVertices);\n+158 }\n+159 else { // cube\n+160 numberOfCubes++;\n+161 std::vector cubeVertices(8);\n+162 for (int k = 0; k < 8; k++)\n+163 cubeVertices[k] = vertices[k] - 1;\n+164 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(cubeVertices[2], cubeVertices[3]);\n+165 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp(cubeVertices[6], cubeVertices[7]);\n+166 factory._\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt(Dune::GeometryTypes::hexahedron, cubeVertices);\n+167 }\n+168 }\n+169 }\n+170 }\n+171 if (verbose)\n+172 std::cout << numberOfElements << \" elements read: \"\n+173 << numberOfSimplices << \" simplices, \" << numberOfPyramids << \" pyramids, \"\n+174 << numberOfPrisms << \" prisms, \" << numberOfCubes << \" cubes.\" << std::\n+endl;\n+175\n+176 // finish off the construction of the grid object\n+177 if (verbose)\n+178 std::cout << \"Starting createGrid() ... \" << std::flush;\n+179\n+180 return factory._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd();\n+181\n+182 }\n+183\n+184 };\n+185\n+186}\n+187\n+188#endif\n+_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n+> &b)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Take a vector and interpret it as cell data for the VTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Take a vector and interpret it as point data for the VTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-Base class for function writers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br\n-std::shared_ptr< VTKFunction > VTKFunctionPtr\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const VTKFunctionPtr &p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const VTKFunctionPtr &p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(VTKFunction *p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const V &v, const std::string &name, int ncomps=1)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(VTKFunction *p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const V &v, const std::string &name, int ncomps=1)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br\n-ConformingVolumeWriter(const GV &gv_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Dune::VTKFunction< GV > VTKFunction\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Provide a generic factory class for unstructured grids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n+virtual void insertElement(const GeometryType &type, const std::vector<\n+unsigned int > &vertices)\n+Insert an element into the coarse grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n+virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)\n+Insert a vertex into the coarse grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+virtual std::unique_ptr< GridType > createGrid()\n+Finalize grid creation and hand over the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br\n+File reader for the Star-CD format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn starcdreader.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\br_\bC_\bD_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+static std::unique_ptr< GridType > read(const std::string &fileName, bool\n+verbose=true)\n+Read grid from a Star-CD file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn starcdreader.hh:65\n+_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+Provide a generic factory class for unstructured grids.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00956.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00956.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtkwriter.hh File Reference\n+dune-grid: gmshwriter.hh File Reference\n \n \n \n \n \n \n \n@@ -65,95 +65,49 @@\n \n \n \n \n \n \n \n
    \n \n-
    vtkwriter.hh File Reference
    \n+
    gmshwriter.hh File Reference
    \n
    \n
    \n-\n-

    Provides file i/o for the visualization toolkit. \n-More...

    \n-
    #include <cstring>
    \n+
    #include <fstream>
    \n #include <iostream>
    \n-#include <string>
    \n-#include <fstream>
    \n-#include <sstream>
    \n #include <iomanip>
    \n-#include <memory>
    \n-#include <type_traits>
    \n+#include <string>
    \n #include <vector>
    \n-#include <list>
    \n-#include <map>
    \n-#include <dune/common/visibility.hh>
    \n-#include <dune/common/typetraits.hh>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/common/indent.hh>
    \n-#include <dune/common/iteratorfacades.hh>
    \n-#include <dune/common/path.hh>
    \n+#include <dune/geometry/type.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/common/mcmgmapper.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/io/file/vtk/common.hh>
    \n-#include <dune/grid/io/file/vtk/dataarraywriter.hh>
    \n-#include <dune/grid/io/file/vtk/function.hh>
    \n-#include <dune/grid/io/file/vtk/pvtuwriter.hh>
    \n-#include <dune/grid/io/file/vtk/streams.hh>
    \n-#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include <dune/grid/common/mcmgmapper.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 Classes

    class  Dune::VTKWriter< GridView >
     Writer for the ouput of grid functions in the vtk format. More...
     
    class  Dune::VTKWriter< GridView >::VTKLocalFunction
     Type erasure wrapper for VTK data sets. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase
     Base class for polymorphic container of underlying data set. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapper< F >
     Type erasure implementation for functions conforming to the dune-functions LocalFunction interface. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::GlobalFunctionWrapper< F >
     Type erasure implementation for C++ functions, i.e., functions that can be evaluated in global coordinates. More...
     
    struct  Dune::VTKWriter< GridView >::VTKLocalFunction::VTKFunctionWrapper
     Type erasure implementation for legacy VTKFunctions. More...
     
    class  Dune::VTKWriter< GridView >::CellIterator
     Iterator over the grids elements. More...
     
    class  Dune::VTKWriter< GridView >::VertexIterator
     Iterate over the grid's vertices. More...
     
    class  Dune::VTKWriter< GridView >::CornerIterator
     Iterate over the elements' corners. More...
    class  Dune::GmshWriter< GridView >
     Write Gmsh mesh file. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-

    Detailed Description

    \n-

    Provides file i/o for the visualization toolkit.

    \n-
    Author
    Peter Bastian, Christian Engwer
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,79 +2,30 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vtkwriter.hh File Reference\n-Provides file i/o for the visualization toolkit. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n+gmshwriter.hh File Reference\n #include \n-#include \n+#include \n #include \n-#include \n-#include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n #include \n-#include \n-#include \n-#include \n+#include \n #include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\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:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Writer for the ouput of grid functions in the vtk format. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-\u00a0 Type erasure wrapper for _\bV_\bT_\bK data sets. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-\u00a0 Base class for polymorphic container of underlying data set. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bF_\b _\b>\n-\u00a0 Type erasure implementation for functions conforming to the dune-\n- functions LocalFunction interface. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b<\n- _\bF_\b _\b>\n-\u00a0 Type erasure implementation for C++ functions, i.e., functions that\n- can be evaluated in global coordinates. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-\u00a0 Type erasure implementation for legacy VTKFunctions. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-\u00a0 Iterator over the grids elements. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-\u00a0 Iterate over the grid's vertices. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-\u00a0 Iterate over the elements' corners. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Write _\bG_\bm_\bs_\bh mesh file. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-Provides file i/o for the visualization toolkit.\n- Author\n- Peter Bastian, Christian Engwer\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00956_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00956_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtkwriter.hh Source File\n+dune-grid: gmshwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,1657 +70,240 @@\n \n \n \n \n \n \n \n
    \n-
    vtkwriter.hh
    \n+
    gmshwriter.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_VTKWRITER_HH
    \n-
    7#define DUNE_VTKWRITER_HH
    \n-
    8
    \n-
    9#include <cstring>
    \n-
    10#include <iostream>
    \n+
    5#ifndef DUNE_GRID_IO_FILE_GMSHWRITER_HH
    \n+
    6#define DUNE_GRID_IO_FILE_GMSHWRITER_HH
    \n+
    7
    \n+
    8#include <fstream>
    \n+
    9#include <iostream>
    \n+
    10#include <iomanip>
    \n
    11#include <string>
    \n-
    12#include <fstream>
    \n-
    13#include <sstream>
    \n-
    14#include <iomanip>
    \n-
    15#include <memory>
    \n-
    16#include <type_traits>
    \n-
    17#include <vector>
    \n-
    18#include <list>
    \n-
    19#include <map>
    \n-
    20
    \n-
    21#include <dune/common/visibility.hh>
    \n-
    22#include <dune/common/typetraits.hh>
    \n-
    23#include <dune/common/exceptions.hh>
    \n-
    24#include <dune/common/indent.hh>
    \n-
    25#include <dune/common/iteratorfacades.hh>
    \n-
    26#include <dune/common/path.hh>
    \n-
    27#include <dune/geometry/referenceelements.hh>
    \n-\n-\n-\n-\n-\n-\n-\n-\n-
    36
    \n-
    50namespace Dune
    \n-
    51{
    \n-
    52
    \n-
    53 namespace Impl
    \n-
    54 {
    \n-
    55 // Check whether type F has a method 'bind' (see the dune-functions interface)
    \n-
    56 template< class F, class E, class = void >
    \n-
    57 struct IsBindable
    \n-
    58 : std::false_type
    \n-
    59 {};
    \n-
    60
    \n-
    61 template< class F, class E >
    \n-
    62 struct IsBindable< F, E, std::void_t< decltype( std::declval< F & >().bind( std::declval< const E & >() ) ),
    \n-
    63 decltype( std::declval< F & >().unbind() ) > >
    \n-
    64 : std::true_type
    \n-
    65 {};
    \n-
    66
    \n-
    67 // Check whether localFunction(F) can be called (see the dune-functions interface)
    \n-
    68 template< class F, class = void >
    \n-
    69 struct HasLocalFunction
    \n-
    70 : std::false_type
    \n-
    71 {};
    \n-
    72
    \n-
    73 template< class F >
    \n-
    74 struct HasLocalFunction< F, std::void_t< decltype( localFunction( std::declval< F& >() ) ) > >
    \n-
    75 : std::true_type
    \n-
    76 {};
    \n-
    77
    \n-
    78 } // namespace Impl
    \n+
    12#include <vector>
    \n+
    13
    \n+
    14#include <dune/common/exceptions.hh>
    \n+
    15#include <dune/geometry/type.hh>
    \n+
    16#include <dune/geometry/referenceelements.hh>
    \n+\n+\n+
    19
    \n+
    20namespace Dune {
    \n+
    21
    \n+
    35 template <class GridView>
    \n+
    \n+\n+
    37 {
    \n+
    38 private:
    \n+
    39 const GridView gv;
    \n+
    40 int precision;
    \n+
    41
    \n+
    42 static const unsigned int dim = GridView::dimension;
    \n+
    43 static const unsigned int dimWorld = GridView::dimensionworld;
    \n+
    44 static_assert( (dimWorld <= 3), "GmshWriter requires dimWorld <= 3." );
    \n+
    45
    \n+
    47 template<typename Entity>
    \n+
    48 std::size_t nodeIndexFromEntity(const Entity& entity, int i) const {
    \n+
    49 return gv.indexSet().subIndex(entity, i, dim)+1;
    \n+
    50 }
    \n+
    51
    \n+
    55 static std::size_t translateDuneToGmshType(const GeometryType& type) {
    \n+
    56 std::size_t element_type;
    \n+
    57
    \n+
    58 if (type.isLine())
    \n+
    59 element_type = 1;
    \n+
    60 else if (type.isTriangle())
    \n+
    61 element_type = 2;
    \n+
    62 else if (type.isQuadrilateral())
    \n+
    63 element_type = 3;
    \n+
    64 else if (type.isTetrahedron())
    \n+
    65 element_type = 4;
    \n+
    66 else if (type.isHexahedron())
    \n+
    67 element_type = 5;
    \n+
    68 else if (type.isPrism())
    \n+
    69 element_type = 6;
    \n+
    70 else if (type.isPyramid())
    \n+
    71 element_type = 7;
    \n+
    72 else if (type.isVertex())
    \n+
    73 element_type = 15;
    \n+
    74 else
    \n+
    75 DUNE_THROW(Dune::IOError, "GeometryType " << type << " is not supported by gmsh.");
    \n+
    76
    \n+
    77 return element_type;
    \n+
    78 }
    \n
    79
    \n-
    80 // Forward-declaration here, so the class can be friend of VTKWriter
    \n-
    81 template <class GridView>
    \n-\n-
    83 template <class GridView>
    \n-\n-
    85
    \n-
    94 template< class GridView >
    \n-
    \n-
    95 class VTKWriter {
    \n-
    96
    \n-
    97 // VTKSequenceWriterBase needs getSerialPieceName
    \n-
    98 // and getParallelHeaderName
    \n-
    99 friend class VTKSequenceWriterBase<GridView>;
    \n-
    100 // VTKSequenceWriter needs the grid view, to get the MPI size and rank
    \n-
    101 friend class VTKSequenceWriter<GridView>;
    \n-
    102
    \n-
    103 // extract types
    \n-
    104 typedef typename GridView::Grid Grid;
    \n-
    105 typedef typename GridView::ctype DT;
    \n-
    106 constexpr static int n = GridView::dimension;
    \n-
    107 constexpr static int w = GridView::dimensionworld;
    \n+
    94 void outputElements(std::ofstream& file, const std::vector<int>& physicalEntities, const std::vector<int>& physicalBoundaries) const {
    \n+\n+
    96 std::size_t counter(1);
    \n+
    97 for (const auto& entity : elements(gv)) {
    \n+
    98 // Check whether the type is compatible. If not, close file and rethrow exception.
    \n+
    99 try {
    \n+
    100 std::size_t element_type = translateDuneToGmshType(entity.type());
    \n+
    101
    \n+
    102 file << counter << " " << element_type;
    \n+
    103 // If present, set the first tag to the physical entity
    \n+
    104 if (!physicalEntities.empty())
    \n+
    105 file << " " << 1 << " " << physicalEntities[elementMapper.index(entity)];
    \n+
    106 else
    \n+
    107 file << " " << 0; // "0" for "I do not use any tags."
    \n
    108
    \n-
    109 typedef typename GridView::template Codim< 0 >::Entity Cell;
    \n-
    110 typedef typename GridView::template Codim< n >::Entity Vertex;
    \n-
    111 typedef Cell Entity;
    \n-
    112
    \n-
    113 typedef typename GridView::IndexSet IndexSet;
    \n-
    114
    \n-
    115 static const PartitionIteratorType VTK_Partition = InteriorBorder_Partition;
    \n-
    116 //static const PartitionIteratorType VTK_Partition = All_Partition;
    \n-
    117
    \n-
    118 typedef typename GridView::template Codim< 0 >
    \n-
    119 ::template Partition< VTK_Partition >::Iterator
    \n-
    120 GridCellIterator;
    \n-
    121 typedef typename GridView::template Codim< n >
    \n-
    122 ::template Partition< VTK_Partition >::Iterator
    \n-
    123 GridVertexIterator;
    \n-
    124
    \n-
    125 typedef typename GridCellIterator::Reference EntityReference;
    \n-
    126
    \n-
    127 typedef typename GridView::template Codim< 0 >
    \n-
    128 ::Entity::Geometry::LocalCoordinate Coordinate;
    \n-
    129
    \n-\n+
    109 // Output list of nodes.
    \n+
    110 // 3, 5 and 7 got different vertex numbering compared to Dune
    \n+
    111 if (3 == element_type)
    \n+
    112 file << " "
    \n+
    113 << nodeIndexFromEntity(entity, 0) << " " << nodeIndexFromEntity(entity, 1) << " "
    \n+
    114 << nodeIndexFromEntity(entity, 3) << " " << nodeIndexFromEntity(entity, 2);
    \n+
    115 else if (5 == element_type)
    \n+
    116 file << " "
    \n+
    117 << nodeIndexFromEntity(entity, 0) << " " << nodeIndexFromEntity(entity, 1) << " "
    \n+
    118 << nodeIndexFromEntity(entity, 3) << " " << nodeIndexFromEntity(entity, 2) << " "
    \n+
    119 << nodeIndexFromEntity(entity, 4) << " " << nodeIndexFromEntity(entity, 5) << " "
    \n+
    120 << nodeIndexFromEntity(entity, 7) << " " << nodeIndexFromEntity(entity, 6);
    \n+
    121 else if (7 == element_type)
    \n+
    122 file << " "
    \n+
    123 << nodeIndexFromEntity(entity, 0) << " " << nodeIndexFromEntity(entity, 1) << " "
    \n+
    124 << nodeIndexFromEntity(entity, 3) << " " << nodeIndexFromEntity(entity, 2) << " "
    \n+
    125 << nodeIndexFromEntity(entity, 4);
    \n+
    126 else {
    \n+
    127 for (int k = 0; k < entity.geometry().corners(); ++k)
    \n+
    128 file << " " << nodeIndexFromEntity(entity, k);
    \n+
    129 }
    \n+
    130 ++counter;
    \n
    131
    \n-
    132 // return true if entity should be skipped in Vertex and Corner iterator
    \n-
    133 static bool skipEntity( const PartitionType entityType )
    \n-
    134 {
    \n-
    135 switch( VTK_Partition )
    \n-
    136 {
    \n-
    137 // for All_Partition no entity has to be skipped
    \n-
    138 case All_Partition: return false;
    \n-
    139 case InteriorBorder_Partition: return ( entityType != InteriorEntity );
    \n-
    140 default: DUNE_THROW(NotImplemented,"Add check for this partition type");
    \n-
    141 }
    \n-
    142 return false ;
    \n-
    143 }
    \n-
    144
    \n-
    145 public:
    \n-
    146
    \n-\n-
    148
    \n-
    149 protected:
    \n-
    150
    \n+
    132 file << std::endl;
    \n+
    133
    \n+
    134 // Write boundaries
    \n+
    135 if (!physicalBoundaries.empty()) {
    \n+
    136 auto refElement = referenceElement<typename GridView::ctype,dim>(entity.type());
    \n+
    137 for(const auto& intersection : intersections(gv, entity)) {
    \n+
    138 if(intersection.boundary()) {
    \n+
    139 const auto faceLocalIndex(intersection.indexInInside());
    \n+
    140 file << counter << " " << translateDuneToGmshType(intersection.type())
    \n+
    141 << " " << 1 << " " << physicalBoundaries[intersection.boundarySegmentIndex()];
    \n+
    142 for (int k = 0; k < intersection.geometry().corners(); ++k)
    \n+
    143 {
    \n+
    144 const auto vtxLocalIndex(refElement.subEntity(faceLocalIndex, 1, k, dim));
    \n+
    145 file << " " << nodeIndexFromEntity(entity, vtxLocalIndex);
    \n+
    146 }
    \n+
    147 ++counter;
    \n+
    148 file << std::endl;
    \n+
    149 }
    \n+
    150 }
    \n+
    151 }
    \n
    152
    \n-
    \n-\n-
    156 {
    \n-
    157
    \n-
    158 public:
    \n+
    153 } catch(Exception& e) {
    \n+
    154 file.close();
    \n+
    155 throw;
    \n+
    156 }
    \n+
    157 }
    \n+
    158 }
    \n
    159
    \n-\n-
    161
    \n-
    \n-\n-
    164 {
    \n-
    165
    \n-
    167 virtual void bind(const Entity& e) = 0;
    \n-
    168
    \n-
    170 virtual void unbind() = 0;
    \n+
    160
    \n+
    167 void outputNodes(std::ofstream& file) const {
    \n+
    168 for (const auto& vertex : vertices(gv)) {
    \n+
    169 const auto globalCoord = vertex.geometry().center();
    \n+
    170 const auto nodeIndex = gv.indexSet().index(vertex)+1; // Start counting indices by "1".
    \n
    171
    \n-
    173
    \n-
    176 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const = 0;
    \n-
    177
    \n-
    \n-\n-
    179 {}
    \n-
    \n+
    172 if (1 == dimWorld)
    \n+
    173 file << nodeIndex << " " << globalCoord[0] << " " << 0 << " " << 0 << std::endl;
    \n+
    174 else if (2 == dimWorld)
    \n+
    175 file << nodeIndex << " " << globalCoord[0] << " " << globalCoord[1] << " " << 0 << std::endl;
    \n+
    176 else // (3 == dimWorld)
    \n+
    177 file << nodeIndex << " " << globalCoord[0] << " " << globalCoord[1] << " " << globalCoord[2] << std::endl;
    \n+
    178 }
    \n+
    179 }
    \n
    180
    \n-
    181 };
    \n-
    \n-
    182
    \n-
    184 // DUNE_PRIVATE since _f has less visibility
    \n-
    185 template<typename F>
    \n-
    \n-
    186 struct DUNE_PRIVATE FunctionWrapper
    \n-
    187 : public FunctionWrapperBase
    \n-
    188 {
    \n-
    189 using Function = typename std::decay<F>::type;
    \n-
    190
    \n-
    191 template<typename F_>
    \n-
    \n-\n-
    193 : _f(std::forward<F_>(f))
    \n-
    194 {}
    \n-
    \n-
    195
    \n-
    \n-
    196 virtual void bind(const Entity& e)
    \n-
    197 {
    \n-
    198 _f.bind(e);
    \n-
    199 }
    \n-
    \n-
    200
    \n-
    \n-
    201 virtual void unbind()
    \n-
    202 {
    \n-
    203 _f.unbind();
    \n-
    204 }
    \n-
    \n-
    205
    \n-
    \n-
    206 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const
    \n-
    207 {
    \n-
    208 auto r = _f(pos);
    \n-
    209 // we need to do different things here depending on whether r supports indexing into it or not.
    \n-
    210 do_write(w,r,count,IsIndexable<decltype(r)>());
    \n-
    211 }
    \n-
    \n-
    212
    \n-
    213 private:
    \n-
    214
    \n-
    215 template<typename R>
    \n-
    216 void do_write(Writer& w, const R& r, std::size_t count, std::true_type) const
    \n-
    217 {
    \n-
    218 for (std::size_t i = 0; i < count; ++i)
    \n-
    219 w.write(r[i]);
    \n-
    220 }
    \n-
    221
    \n-
    222 template<typename R>
    \n-
    223 void do_write(Writer& w, const R& r, std::size_t count, std::false_type) const
    \n-
    224 {
    \n-
    225 assert(count == 1);
    \n-
    226 w.write(r);
    \n-
    227 }
    \n+
    181 public:
    \n+
    187 GmshWriter(const GridView& gridView, int numDigits=6) : gv(gridView), precision(numDigits) {}
    \n+
    188
    \n+
    \n+
    193 void setPrecision(int numDigits) {
    \n+
    194 precision = numDigits;
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    \n+
    218 void write(const std::string& fileName,
    \n+
    219 const std::vector<int>& physicalEntities=std::vector<int>(),
    \n+
    220 const std::vector<int>& physicalBoundaries=std::vector<int>()) const {
    \n+
    221 // Open file
    \n+
    222 std::ofstream file(fileName.c_str());
    \n+
    223 if (!file.is_open())
    \n+
    224 DUNE_THROW(Dune::IOError, "Could not open " << fileName << " with write access.");
    \n+
    225
    \n+
    226 // Set precision
    \n+
    227 file << std::setprecision( precision );
    \n
    228
    \n-
    229 Function _f;
    \n-
    230 };
    \n-
    \n-
    231
    \n-
    233 template<typename F>
    \n-
    \n-\n-
    235 : public FunctionWrapperBase
    \n-
    236 {
    \n-
    237 using Function = typename std::decay<F>::type;
    \n-
    238
    \n-
    239 template<typename F_>
    \n-
    \n-\n-
    241 : _f(std::forward<F_>(f))
    \n-
    242 , element_(nullptr)
    \n-
    243 {}
    \n-
    \n-
    244
    \n-
    \n-
    245 virtual void bind(const Entity& e)
    \n-
    246 {
    \n-
    247 element_ = &e;
    \n-
    248 }
    \n-
    \n+
    229 // Output Header
    \n+
    230 file << "$MeshFormat" << std::endl
    \n+
    231 << "2.0 0 " << sizeof(double) << std::endl // "2.0" for "version 2.0", "0" for ASCII
    \n+
    232 << "$EndMeshFormat" << std::endl;
    \n+
    233
    \n+
    234 // Output Nodes
    \n+
    235 file << "$Nodes" << std::endl
    \n+
    236 << gv.size(dim) << std::endl;
    \n+
    237
    \n+
    238 outputNodes(file);
    \n+
    239
    \n+
    240 file << "$EndNodes" << std::endl;
    \n+
    241
    \n+
    242 // Output Elements;
    \n+
    243 int boundariesSize(0);
    \n+
    244 if(!physicalBoundaries.empty())
    \n+
    245 for(const auto& entity : elements(gv))
    \n+
    246 for(const auto& intersection : intersections(gv, entity))
    \n+
    247 if(intersection.boundary())
    \n+
    248 ++boundariesSize;
    \n
    249
    \n-
    \n-
    250 virtual void unbind()
    \n-
    251 {
    \n-
    252 element_ = nullptr;
    \n-
    253 }
    \n-
    \n+
    250 file << "$Elements" << std::endl
    \n+
    251 << gv.size(0) + boundariesSize<< std::endl;
    \n+
    252
    \n+
    253 outputElements(file, physicalEntities, physicalBoundaries);
    \n
    254
    \n-
    \n-
    255 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const
    \n-
    256 {
    \n-
    257 auto globalPos = element_->geometry().global(pos);
    \n-
    258 auto r = _f(globalPos);
    \n-
    259 if constexpr (IsIndexable<decltype(r)>()) {
    \n-
    260 for (std::size_t i = 0; i < count; ++i)
    \n-
    261 w.write(r[i]);
    \n-
    262 }
    \n-
    263 else {
    \n-
    264 assert(count == 1);
    \n-
    265 w.write(r);
    \n-
    266 }
    \n-
    267 }
    \n-
    \n-
    268 private:
    \n-
    269 Function _f;
    \n-
    270 const Entity* element_;
    \n-
    271 };
    \n-
    \n-
    272
    \n-
    \n-\n-
    275 : public FunctionWrapperBase
    \n-
    276 {
    \n-
    \n-
    277 VTKFunctionWrapper(const std::shared_ptr< const VTKFunction >& f)
    \n-
    278 : _f(f)
    \n-
    279 , _entity(nullptr)
    \n-
    280 {}
    \n-
    \n-
    281
    \n-
    \n-
    282 virtual void bind(const Entity& e)
    \n-
    283 {
    \n-
    284 _entity = &e;
    \n-
    285 }
    \n-
    \n-
    286
    \n-
    \n-
    287 virtual void unbind()
    \n-
    288 {
    \n-
    289 _entity = nullptr;
    \n-
    290 }
    \n-
    \n-
    291
    \n-
    \n-
    292 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const
    \n-
    293 {
    \n-
    294 for (std::size_t i = 0; i < count; ++i)
    \n-
    295 w.write(_f->evaluate(i,*_entity,pos));
    \n-
    296 }
    \n-
    \n-
    297
    \n-
    298 private:
    \n-
    299
    \n-
    300 std::shared_ptr< const VTKFunction > _f;
    \n-
    301 const Entity* _entity;
    \n-
    302
    \n-
    303 };
    \n-
    \n-
    304
    \n-
    306 template<typename F, std::enable_if_t<Impl::IsBindable<F, Entity>::value, int> = 0>
    \n-
    \n-\n-
    308 : _f(std::make_unique<FunctionWrapper<F> >(std::forward<F>(f)))
    \n-\n-
    310 {}
    \n-
    \n-
    311
    \n-
    313 // That is, a function that you can create a LocalFunction for, and evaluate that in element coordinates
    \n-
    314 template<typename F, std::enable_if_t<not Impl::IsBindable<F, Entity>::value && Impl::HasLocalFunction<F>::value, int> = 0>
    \n-
    \n-\n-
    316 : _f(std::make_unique< FunctionWrapper<
    \n-
    317 typename std::decay<decltype(localFunction(std::forward<F>(f)))>::type
    \n-
    318 > >(localFunction(std::forward<F>(f))))
    \n-\n-
    320 {}
    \n-
    \n-
    321
    \n-
    323 // That is, a function that can be evaluated in global coordinates of the domain
    \n-
    324 template<typename F, std::enable_if_t<not Impl::IsBindable<F, Entity>::value && not Impl::HasLocalFunction<F>::value, int> = 0>
    \n-
    \n-\n-
    326 : _f(std::make_unique< GlobalFunctionWrapper<F> >(std::forward<F>(f)))
    \n-\n-
    328 {}
    \n-
    \n-
    329
    \n-
    \n-
    331 explicit VTKLocalFunction (const std::shared_ptr< const VTKFunction >& vtkFunctionPtr)
    \n-
    332 : _f(std::make_unique<VTKFunctionWrapper>(vtkFunctionPtr))
    \n-
    333 , _fieldInfo(
    \n-
    334 vtkFunctionPtr->name(),
    \n-
    335 (vtkFunctionPtr->ncomps() == 2 || vtkFunctionPtr->ncomps() == 3) ? VTK::FieldInfo::Type::vector : VTK::FieldInfo::Type::scalar,
    \n-
    336 vtkFunctionPtr->ncomps(),
    \n-
    337 vtkFunctionPtr->precision()
    \n-
    338 )
    \n-
    339 {}
    \n-
    \n-
    340
    \n-
    \n-
    342 std::string name() const
    \n-
    343 {
    \n-
    344 return fieldInfo().name();
    \n-
    345 }
    \n-
    \n-
    346
    \n-
    \n-\n-
    349 {
    \n-
    350 return _fieldInfo;
    \n-
    351 }
    \n-
    \n-
    352
    \n-
    \n-
    354 void bind(const Entity& e) const
    \n-
    355 {
    \n-
    356 _f->bind(e);
    \n-
    357 }
    \n-
    \n-
    358
    \n-
    \n-
    360 void unbind() const
    \n-
    361 {
    \n-
    362 _f->unbind();
    \n-
    363 }
    \n-
    \n-
    364
    \n-
    \n-
    366 void write(const Coordinate& pos, Writer& w) const
    \n-
    367 {
    \n-
    368 _f->write(pos,w,fieldInfo().size());
    \n-
    369 }
    \n-
    \n-
    370
    \n-
    371 std::shared_ptr<FunctionWrapperBase> _f;
    \n-\n-
    373
    \n-
    374 };
    \n-
    \n-
    375
    \n-
    376 typedef typename std::list<VTKLocalFunction>::const_iterator FunctionIterator;
    \n-
    377
    \n-
    379
    \n-
    \n-
    384 class CellIterator : public GridCellIterator
    \n-
    385 {
    \n-
    386 public:
    \n-
    388 CellIterator(const GridCellIterator & x) : GridCellIterator(x) {}
    \n-
    \n-
    391 const FieldVector<DT,n> position() const
    \n-
    392 {
    \n-
    393 return ReferenceElements<DT,n>::general((*this)->type()).position(0,0);
    \n-
    394 }
    \n-
    \n-
    395 };
    \n-
    \n-
    396
    \n-
    \n-\n-
    398 {
    \n-
    399 return gridView_.template begin< 0, VTK_Partition >();
    \n-
    400 }
    \n-
    \n-
    401
    \n-
    \n-\n-
    403 {
    \n-
    404 return gridView_.template end< 0, VTK_Partition >();
    \n-
    405 }
    \n-
    \n-
    406
    \n-
    408
    \n-
    \n-\n-
    423 public ForwardIteratorFacade<VertexIterator, const Entity, EntityReference, int>
    \n-
    424 {
    \n-
    425 GridCellIterator git;
    \n-
    426 GridCellIterator gend;
    \n-
    427 VTK::DataMode datamode;
    \n-
    428 // Index of the currently visited corner within the current element.
    \n-
    429 // NOTE: this is in Dune-numbering, in contrast to CornerIterator.
    \n-
    430 int cornerIndexDune;
    \n-
    431 const VertexMapper & vertexmapper;
    \n-
    432 std::vector<bool> visited;
    \n-
    433 // in conforming mode, for each vertex id (as obtained by vertexmapper)
    \n-
    434 // hold its number in the iteration order (VertexIterator)
    \n-
    435 int offset;
    \n-
    436
    \n-
    437 // hide operator ->
    \n-
    438 void operator->();
    \n-
    439 protected:
    \n-
    \n-\n-
    441 {
    \n-
    442 if( git == gend )
    \n-
    443 return;
    \n-
    444 ++cornerIndexDune;
    \n-
    445 const int numCorners = git->subEntities(n);
    \n-
    446 if( cornerIndexDune == numCorners )
    \n-
    447 {
    \n-
    448 offset += numCorners;
    \n-
    449 cornerIndexDune = 0;
    \n-
    450
    \n-
    451 ++git;
    \n-
    452 while( (git != gend) && skipEntity( git->partitionType() ) )
    \n-
    453 ++git;
    \n-
    454 }
    \n-
    455 }
    \n-
    \n-
    456 public:
    \n-
    \n-
    457 VertexIterator(const GridCellIterator & x,
    \n-
    458 const GridCellIterator & end,
    \n-
    459 const VTK::DataMode & dm,
    \n-
    460 const VertexMapper & vm) :
    \n-
    461 git(x), gend(end), datamode(dm), cornerIndexDune(0),
    \n-
    462 vertexmapper(vm), visited(vm.size(), false),
    \n-
    463 offset(0)
    \n-
    464 {
    \n-
    465 if (datamode == VTK::conforming && git != gend)
    \n-
    466 visited[vertexmapper.subIndex(*git,cornerIndexDune,n)] = true;
    \n-
    467 }
    \n-
    \n-
    \n-
    468 void increment ()
    \n-
    469 {
    \n-
    470 switch (datamode)
    \n-
    471 {
    \n-
    472 case VTK::conforming :
    \n-
    473 while(visited[vertexmapper.subIndex(*git,cornerIndexDune,n)])
    \n-
    474 {
    \n-\n-
    476 if (git == gend) return;
    \n-
    477 }
    \n-
    478 visited[vertexmapper.subIndex(*git,cornerIndexDune,n)] = true;
    \n-
    479 break;
    \n-
    480 case VTK::nonconforming :
    \n-\n-
    482 break;
    \n-
    483 }
    \n-
    484 }
    \n-
    \n-
    \n-
    485 bool equals (const VertexIterator & cit) const
    \n-
    486 {
    \n-
    487 return git == cit.git
    \n-
    488 && cornerIndexDune == cit.cornerIndexDune
    \n-
    489 && datamode == cit.datamode;
    \n-
    490 }
    \n-
    \n-
    \n-
    491 EntityReference dereference() const
    \n-
    492 {
    \n-
    493 return *git;
    \n-
    494 }
    \n-
    \n-
    \n-
    496 int localindex () const
    \n-
    497 {
    \n-
    498 return cornerIndexDune;
    \n-
    499 }
    \n-
    \n-
    \n-
    501 FieldVector<DT,n> position () const
    \n-
    502 {
    \n-
    503 return referenceElement<DT,n>(git->type())
    \n-
    504 .position(cornerIndexDune,n);
    \n-
    505 }
    \n-
    \n-
    506 };
    \n-
    \n-
    507
    \n-
    \n-\n-
    509 {
    \n-
    510 return VertexIterator( gridView_.template begin< 0, VTK_Partition >(),
    \n-
    511 gridView_.template end< 0, VTK_Partition >(),
    \n-
    512 datamode, *vertexmapper );
    \n-
    513 }
    \n-
    \n-
    514
    \n-
    \n-\n-
    516 {
    \n-
    517 return VertexIterator( gridView_.template end< 0, VTK_Partition >(),
    \n-
    518 gridView_.template end< 0, VTK_Partition >(),
    \n-
    519 datamode, *vertexmapper );
    \n-
    520 }
    \n-
    \n-
    521
    \n-
    523
    \n-
    \n-\n-
    538 public ForwardIteratorFacade<CornerIterator, const Entity, EntityReference, int>
    \n-
    539 {
    \n-
    540 GridCellIterator git;
    \n-
    541 GridCellIterator gend;
    \n-
    542 VTK::DataMode datamode;
    \n-
    543 // Index of the currently visited corner within the current element.
    \n-
    544 // NOTE: this is in VTK-numbering, in contrast to VertexIterator.
    \n-
    545 int cornerIndexVTK;
    \n-
    546 const VertexMapper & vertexmapper;
    \n-
    547 // in conforming mode, for each vertex id (as obtained by vertexmapper)
    \n-
    548 // hold its number in the iteration order of VertexIterator (*not*
    \n-
    549 // CornerIterator)
    \n-
    550 const std::vector<int> & number;
    \n-
    551 // holds the number of corners of all the elements we have seen so far,
    \n-
    552 // excluding the current element
    \n-
    553 int offset;
    \n-
    554
    \n-
    555 // hide operator ->
    \n-
    556 void operator->();
    \n-
    557 public:
    \n-
    \n-
    558 CornerIterator(const GridCellIterator & x,
    \n-
    559 const GridCellIterator & end,
    \n-
    560 const VTK::DataMode & dm,
    \n-
    561 const VertexMapper & vm,
    \n-
    562 const std::vector<int> & num) :
    \n-
    563 git(x), gend(end), datamode(dm), cornerIndexVTK(0),
    \n-
    564 vertexmapper(vm),
    \n-
    565 number(num), offset(0) {}
    \n-
    \n-
    \n-
    566 void increment ()
    \n-
    567 {
    \n-
    568 if( git == gend )
    \n-
    569 return;
    \n-
    570 ++cornerIndexVTK;
    \n-
    571 const int numCorners = git->subEntities(n);
    \n-
    572 if( cornerIndexVTK == numCorners )
    \n-
    573 {
    \n-
    574 offset += numCorners;
    \n-
    575 cornerIndexVTK = 0;
    \n-
    576
    \n-
    577 ++git;
    \n-
    578 while( (git != gend) && skipEntity( git->partitionType() ) )
    \n-
    579 ++git;
    \n-
    580 }
    \n-
    581 }
    \n-
    \n-
    \n-
    582 bool equals (const CornerIterator & cit) const
    \n-
    583 {
    \n-
    584 return git == cit.git
    \n-
    585 && cornerIndexVTK == cit.cornerIndexVTK
    \n-
    586 && datamode == cit.datamode;
    \n-
    587 }
    \n-
    \n-
    \n-
    588 EntityReference dereference() const
    \n-
    589 {
    \n-
    590 return *git;
    \n-
    591 }
    \n-
    \n-
    593
    \n-
    \n-
    597 int id () const
    \n-
    598 {
    \n-
    599 switch (datamode)
    \n-
    600 {
    \n-
    601 case VTK::conforming :
    \n-
    602 return
    \n-
    603 number[vertexmapper.subIndex(*git,VTK::renumber(*git,cornerIndexVTK),
    \n-
    604 n)];
    \n-
    605 case VTK::nonconforming :
    \n-
    606 return offset + VTK::renumber(*git,cornerIndexVTK);
    \n-
    607 default :
    \n-
    608 DUNE_THROW(IOError,"VTKWriter: unsupported DataMode" << datamode);
    \n-
    609 }
    \n-
    610 }
    \n-
    \n-
    611 };
    \n-
    \n-
    612
    \n-
    \n-\n-
    614 {
    \n-
    615 return CornerIterator( gridView_.template begin< 0, VTK_Partition >(),
    \n-
    616 gridView_.template end< 0, VTK_Partition >(),
    \n-
    617 datamode, *vertexmapper, number );
    \n-
    618 }
    \n-
    \n-
    619
    \n-
    \n-\n-
    621 {
    \n-
    622 return CornerIterator( gridView_.template end< 0, VTK_Partition >(),
    \n-
    623 gridView_.template end< 0, VTK_Partition >(),
    \n-
    624 datamode, *vertexmapper, number );
    \n-
    625 }
    \n-
    \n-
    626
    \n-
    627 public:
    \n-
    \n-
    636 explicit VTKWriter ( const GridView &gridView,
    \n-\n-\n-
    639 : gridView_( gridView ),
    \n-
    640 datamode( dm ),
    \n-
    641 coordPrec (coordPrecision),
    \n-
    642 polyhedralCellsPresent_( checkForPolyhedralCells() )
    \n-
    643 { }
    \n-
    \n-
    644
    \n-
    \n-
    649 void addCellData (const std::shared_ptr< const VTKFunction > & p)
    \n-
    650 {
    \n-
    651 celldata.push_back(VTKLocalFunction(p));
    \n-
    652 }
    \n-
    \n-
    653
    \n-
    673 template<typename F>
    \n-
    \n-
    674 void addCellData(F&& f, VTK::FieldInfo vtkFieldInfo)
    \n-
    675 {
    \n-
    676 celldata.push_back(VTKLocalFunction(std::forward<F>(f),vtkFieldInfo));
    \n-
    677 }
    \n-
    \n-
    678
    \n-
    694 template<class Container>
    \n-
    \n-
    695 void addCellData (const Container& v, const std::string &name, int ncomps = 1,
    \n-\n-
    697 {
    \n-
    698 typedef P0VTKFunction<GridView, Container> Function;
    \n-
    699 for (int c=0; c<ncomps; ++c) {
    \n-
    700 std::stringstream compName;
    \n-
    701 compName << name;
    \n-
    702 if (ncomps>1)
    \n-
    703 compName << "[" << c << "]";
    \n-
    704 VTKFunction* p = new Function(gridView_, v, compName.str(), ncomps, c, prec);
    \n-
    705 addCellData(std::shared_ptr< const VTKFunction >(p));
    \n-
    706 }
    \n-
    707 }
    \n-
    \n-
    708
    \n-
    \n-
    713 void addVertexData (const std::shared_ptr< const VTKFunction > & p)
    \n-
    714 {
    \n-
    715 vertexdata.push_back(VTKLocalFunction(p));
    \n-
    716 }
    \n-
    \n-
    717
    \n-
    737 template<typename F>
    \n-
    \n-
    738 void addVertexData(F&& f, VTK::FieldInfo vtkFieldInfo)
    \n-
    739 {
    \n-
    740 vertexdata.push_back(VTKLocalFunction(std::forward<F>(f),vtkFieldInfo));
    \n-
    741 }
    \n-
    \n-
    742
    \n-
    743
    \n-
    759 template<class Container>
    \n-
    \n-
    760 void addVertexData (const Container& v, const std::string &name, int ncomps=1,
    \n-\n-
    762 {
    \n-
    763 typedef P1VTKFunction<GridView, Container> Function;
    \n-
    764 for (int c=0; c<ncomps; ++c) {
    \n-
    765 std::stringstream compName;
    \n-
    766 compName << name;
    \n-
    767 if (ncomps>1)
    \n-
    768 compName << "[" << c << "]";
    \n-
    769 VTKFunction* p = new Function(gridView_, v, compName.str(), ncomps, c, prec);
    \n-
    770 addVertexData(std::shared_ptr< const VTKFunction >(p));
    \n-
    771 }
    \n-
    772 }
    \n-
    \n-
    773
    \n-
    \n-
    775 void clear ()
    \n-
    776 {
    \n-
    777 celldata.clear();
    \n-
    778 vertexdata.clear();
    \n-
    779 }
    \n-
    \n-
    780
    \n-
    \n-\n-
    783 { return coordPrec; }
    \n-
    \n-
    784
    \n-
    \n-
    786 virtual ~VTKWriter ()
    \n-
    787 {
    \n-
    788 this->clear();
    \n-
    789 }
    \n-
    \n-
    790
    \n-
    \n-
    803 std::string write ( const std::string &name,
    \n-\n-
    805 {
    \n-
    806 return write( name, type, gridView_.comm().rank(), gridView_.comm().size() );
    \n-
    807 }
    \n-
    \n-
    808
    \n-
    \n-
    835 std::string pwrite ( const std::string & name, const std::string & path, const std::string & extendpath,
    \n-\n-
    837 {
    \n-
    838 return pwrite( name, path, extendpath, type, gridView_.comm().rank(), gridView_.comm().size() );
    \n-
    839 }
    \n-
    \n-
    840
    \n-
    841 protected:
    \n-
    843
    \n-
    \n-
    855 std::string getParallelPieceName(const std::string& name,
    \n-
    856 const std::string& path,
    \n-
    857 int commRank, int commSize) const
    \n-
    858 {
    \n-
    859 std::ostringstream s;
    \n-
    860 // write path first
    \n-
    861 if(path.size() > 0)
    \n-
    862 {
    \n-
    863 s << path;
    \n-
    864 if(path[path.size()-1] != '/')
    \n-
    865 s << '/';
    \n-
    866 }
    \n-
    867
    \n-
    868 std::string fileprefix;
    \n-
    869 // check if a path was already added to name
    \n-
    870 // and if yes find filename without path
    \n-
    871 auto pos = name.rfind('/');
    \n-
    872 if( pos != std::string::npos )
    \n-
    873 {
    \n-
    874 // extract filename without path
    \n-
    875 fileprefix = name.substr( pos+1 );
    \n-
    876 // extract the path and added it before
    \n-
    877 // the magic below is added
    \n-
    878 std::string newpath = name.substr(0, pos);
    \n-
    879 s << newpath;
    \n-
    880 if(newpath[name.size()-1] != '/')
    \n-
    881 s << '/';
    \n-
    882 }
    \n-
    883 else
    \n-
    884 {
    \n-
    885 // if no path was found just copy the name
    \n-
    886 fileprefix = name;
    \n-
    887 }
    \n-
    888
    \n-
    889 s << 's' << std::setw(4) << std::setfill('0') << commSize << '-';
    \n-
    890 const bool writeHeader = commRank < 0;
    \n-
    891 if( ! writeHeader )
    \n-
    892 {
    \n-
    893 s << 'p' << std::setw(4) << std::setfill('0') << commRank << '-';
    \n-
    894 }
    \n-
    895
    \n-
    896 s << fileprefix << ".";
    \n-
    897 // write p for header files
    \n-
    898 if( writeHeader )
    \n-
    899 s << "p";
    \n-
    900 s << "vt";
    \n-
    901
    \n-
    902 if(GridView::dimension > 1)
    \n-
    903 s << "u";
    \n-
    904 else
    \n-
    905 s << "p";
    \n-
    906 return s.str();
    \n-
    907 }
    \n-
    \n-
    908
    \n-
    910
    \n-
    \n-
    920 std::string getParallelHeaderName(const std::string& name,
    \n-
    921 const std::string& path,
    \n-
    922 int commSize) const
    \n-
    923 {
    \n-
    924 return getParallelPieceName( name, path, -1, commSize );
    \n-
    925 }
    \n-
    \n-
    926
    \n-
    928
    \n-
    \n-
    940 std::string getSerialPieceName(const std::string& name,
    \n-
    941 const std::string& path) const
    \n-
    942 {
    \n-
    943 static const std::string extension =
    \n-
    944 GridView::dimension == 1 ? ".vtp" : ".vtu";
    \n-
    945
    \n-
    946 return concatPaths(path, name+extension);
    \n-
    947 }
    \n-
    \n-
    948
    \n-
    \n-
    965 std::string write ( const std::string &name,
    \n-
    966 VTK::OutputType type,
    \n-
    967 const int commRank,
    \n-
    968 const int commSize )
    \n-
    969 {
    \n-
    970 // in the parallel case, just use pwrite, it has all the necessary
    \n-
    971 // stuff, so we don't need to reimplement it here.
    \n-
    972 if(commSize > 1)
    \n-
    973 {
    \n-
    974 std::string filename = name;
    \n-
    975 std::string path = std::string("");
    \n-
    976
    \n-
    977 // check if a path was already added to name
    \n-
    978 // and if yes find filename without path
    \n-
    979 auto pos = name.rfind('/');
    \n-
    980 if( pos != std::string::npos )
    \n-
    981 {
    \n-
    982 // extract filename without path
    \n-
    983 filename = name.substr( pos+1 );
    \n-
    984
    \n-
    985 // extract the path and added it before
    \n-
    986 // the magic below is added
    \n-
    987 path = name.substr(0, pos);
    \n-
    988 }
    \n-
    989
    \n-
    990 return pwrite(filename, path, "", type, commRank, commSize);
    \n-
    991 }
    \n-
    992
    \n-
    993 // make data mode visible to private functions
    \n-
    994 outputtype = type;
    \n-
    995
    \n-
    996 // generate filename for process data
    \n-
    997 std::string pieceName = getSerialPieceName(name, "");
    \n-
    998
    \n-
    999 // write process data
    \n-
    1000 std::ofstream file;
    \n-
    1001 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n-
    1002 std::ios_base::eofbit);
    \n-
    1003 // check if file can be opened
    \n-
    1004 try {
    \n-
    1005 file.open( pieceName.c_str(), std::ios::binary );
    \n-
    1006 }
    \n-
    1007 catch(...) {
    \n-
    1008 std::cerr << "Filename: " << pieceName << " could not be opened" << std::endl;
    \n-
    1009 throw;
    \n-
    1010 }
    \n-
    1011 if (! file.is_open())
    \n-
    1012 DUNE_THROW(IOError, "Could not write to piece file " << pieceName);
    \n-
    1013 writeDataFile( file );
    \n-
    1014 file.close();
    \n-
    1015
    \n-
    1016 return pieceName;
    \n-
    1017 }
    \n-
    \n-
    1018
    \n-
    1020
    \n-
    \n-
    1043 std::string pwrite(const std::string& name, const std::string& path,
    \n-
    1044 const std::string& extendpath,
    \n-
    1045 VTK::OutputType ot, const int commRank,
    \n-
    1046 const int commSize )
    \n-
    1047 {
    \n-
    1048 // make data mode visible to private functions
    \n-
    1049 outputtype=ot;
    \n-
    1050
    \n-
    1051 // do some magic because paraview can only cope with relative paths to piece files
    \n-
    1052 std::ofstream file;
    \n-
    1053 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n-
    1054 std::ios_base::eofbit);
    \n-
    1055 std::string piecepath = concatPaths(path, extendpath);
    \n-
    1056 std::string relpiecepath = relativePath(path, piecepath);
    \n-
    1057
    \n-
    1058 // write this processes .vtu/.vtp piece file
    \n-
    1059 std::string fullname = getParallelPieceName(name, piecepath, commRank,
    \n-
    1060 commSize);
    \n-
    1061 // check if file can be opened
    \n-
    1062 try {
    \n-
    1063 file.open(fullname.c_str(),std::ios::binary);
    \n-
    1064 }
    \n-
    1065 catch(...) {
    \n-
    1066 std::cerr << "Filename: " << fullname << " could not be opened" << std::endl;
    \n-
    1067 throw;
    \n-
    1068 }
    \n-
    1069 if (! file.is_open())
    \n-
    1070 DUNE_THROW(IOError, "Could not write to piecefile file " << fullname);
    \n-
    1071 writeDataFile(file);
    \n-
    1072 file.close();
    \n-
    1073 gridView_.comm().barrier();
    \n-
    1074
    \n-
    1075 // if we are rank 0, write .pvtu/.pvtp parallel header
    \n-
    1076 fullname = getParallelHeaderName(name, path, commSize);
    \n-
    1077 if( commRank ==0 )
    \n-
    1078 {
    \n-
    1079 file.open(fullname.c_str());
    \n-
    1080 if (! file.is_open())
    \n-
    1081 DUNE_THROW(IOError, "Could not write to parallel file " << fullname);
    \n-
    1082 writeParallelHeader(file,name,relpiecepath, commSize );
    \n-
    1083 file.close();
    \n-
    1084 }
    \n-
    1085 gridView_.comm().barrier();
    \n-
    1086 return fullname;
    \n-
    1087 }
    \n-
    \n-
    1088
    \n-
    1089 private:
    \n-
    1091
    \n-
    1108 void writeParallelHeader(std::ostream& s, const std::string& piecename,
    \n-
    1109 const std::string& piecepath, const int commSize)
    \n-
    1110 {
    \n-
    1111 VTK::FileType fileType =
    \n-
    1112 (n == 1) ? VTK::polyData : VTK::unstructuredGrid;
    \n-
    1113
    \n-
    1114 VTK::PVTUWriter writer(s, fileType);
    \n-
    1115
    \n-
    1116 writer.beginMain();
    \n-
    1117
    \n-
    1118 // PPointData
    \n-
    1119 {
    \n-
    1120 std::string scalars, vectors;
    \n-
    1121 std::tie(scalars,vectors) = getDataNames(vertexdata);
    \n-
    1122 writer.beginPointData(scalars, vectors);
    \n-
    1123 }
    \n-
    1124 for (auto it = vertexdata.begin(),
    \n-
    1125 end = vertexdata.end();
    \n-
    1126 it != end;
    \n-
    1127 ++it)
    \n-
    1128 {
    \n-
    1129 unsigned writecomps = it->fieldInfo().size();
    \n-
    1130 if(writecomps == 2) writecomps = 3;
    \n-
    1131 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());
    \n-
    1132 }
    \n-
    1133 writer.endPointData();
    \n-
    1134
    \n-
    1135 // PCellData
    \n-
    1136 {
    \n-
    1137 std::string scalars, vectors;
    \n-
    1138 std::tie(scalars,vectors) = getDataNames(celldata);
    \n-
    1139 writer.beginCellData(scalars, vectors);
    \n-
    1140 }
    \n-
    1141 for (auto it = celldata.begin(),
    \n-
    1142 end = celldata.end();
    \n-
    1143 it != end;
    \n-
    1144 ++it)
    \n-
    1145 {
    \n-
    1146 unsigned writecomps = it->fieldInfo().size();
    \n-
    1147 if(writecomps == 2) writecomps = 3;
    \n-
    1148 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());
    \n-
    1149 }
    \n-
    1150 writer.endCellData();
    \n-
    1151
    \n-
    1152 // PPoints
    \n-
    1153 writer.beginPoints();
    \n-
    1154 writer.addArray("Coordinates", 3, coordPrec);
    \n-
    1155 writer.endPoints();
    \n-
    1156
    \n-
    1157 // Pieces
    \n-
    1158 for( int i = 0; i < commSize; ++i )
    \n-
    1159 {
    \n-
    1160 const std::string& fullname = getParallelPieceName(piecename,
    \n-
    1161 piecepath, i,
    \n-
    1162 commSize);
    \n-
    1163 writer.addPiece(fullname);
    \n-
    1164 }
    \n-
    1165
    \n-
    1166 writer.endMain();
    \n-
    1167 }
    \n-
    1168
    \n-
    1170 void writeDataFile (std::ostream& s)
    \n-
    1171 {
    \n-
    1172 VTK::FileType fileType =
    \n-
    1173 (n == 1) ? VTK::polyData : VTK::unstructuredGrid;
    \n-
    1174
    \n-
    1175 VTK::VTUWriter writer(s, outputtype, fileType);
    \n-
    1176
    \n-
    1177 // Grid characteristics
    \n-
    1178 vertexmapper = new VertexMapper( gridView_, mcmgVertexLayout() );
    \n-
    1179 if (datamode == VTK::conforming)
    \n-
    1180 {
    \n-
    1181 number.resize(vertexmapper->size());
    \n-
    1182 for (std::vector<int>::size_type i=0; i<number.size(); i++) number[i] = -1;
    \n-
    1183 }
    \n-\n-
    1185
    \n-
    1186 writer.beginMain(ncells, nvertices);
    \n-
    1187 writeAllData(writer);
    \n-
    1188 writer.endMain();
    \n-
    1189
    \n-
    1190 // write appended binary data section
    \n-
    1191 if(writer.beginAppended())
    \n-
    1192 writeAllData(writer);
    \n-
    1193 writer.endAppended();
    \n-
    1194
    \n-
    1195 delete vertexmapper; number.clear();
    \n-
    1196 }
    \n-
    1197
    \n-
    1198 void writeAllData(VTK::VTUWriter& writer) {
    \n-
    1199 // PointData
    \n-
    1200 writeVertexData(writer);
    \n-
    1201
    \n-
    1202 // CellData
    \n-
    1203 writeCellData(writer);
    \n-
    1204
    \n-
    1205 // Points
    \n-
    1206 writeGridPoints(writer);
    \n-
    1207
    \n-
    1208 // Cells
    \n-
    1209 writeGridCells(writer);
    \n-
    1210 }
    \n-
    1211
    \n-
    1212 protected:
    \n-
    \n-
    1213 std::string getFormatString() const
    \n-
    1214 {
    \n-\n-
    1216 return "ascii";
    \n-\n-
    1218 return "binary";
    \n-\n-
    1220 return "appended";
    \n-\n-
    1222 return "appended";
    \n-
    1223 DUNE_THROW(IOError, "VTKWriter: unsupported OutputType" << outputtype);
    \n-
    1224 }
    \n-
    \n-
    1225
    \n-
    \n-
    1226 std::string getTypeString() const
    \n-
    1227 {
    \n-
    1228 if (n==1)
    \n-
    1229 return "PolyData";
    \n-
    1230 else
    \n-
    1231 return "UnstructuredGrid";
    \n-
    1232 }
    \n-
    \n-
    1233
    \n-
    \n-
    1235 virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    \n-
    1236 {
    \n-
    1237 nvertices_ = 0;
    \n-
    1238 ncells_ = 0;
    \n-
    1239 ncorners_ = 0;
    \n-
    1240 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n-
    1241 {
    \n-
    1242 ncells_++;
    \n-
    1243 // because of the use of vertexmapper->map(), this iteration must be
    \n-
    1244 // in the order of Dune's numbering.
    \n-
    1245 const int subEntities = it->subEntities(n);
    \n-
    1246 for (int i=0; i<subEntities; ++i)
    \n-
    1247 {
    \n-
    1248 ncorners_++;
    \n-
    1249 if (datamode == VTK::conforming)
    \n-
    1250 {
    \n-
    1251 int alpha = vertexmapper->subIndex(*it,i,n);
    \n-
    1252 if (number[alpha]<0)
    \n-
    1253 number[alpha] = nvertices_++;
    \n-
    1254 }
    \n-
    1255 else
    \n-
    1256 {
    \n-
    1257 nvertices_++;
    \n-
    1258 }
    \n-
    1259 }
    \n-
    1260 }
    \n-
    1261 }
    \n-
    \n-
    1262
    \n-
    1263 template<typename T>
    \n-
    \n-
    1264 std::tuple<std::string,std::string> getDataNames(const T& data) const
    \n-
    1265 {
    \n-
    1266 std::string scalars = "";
    \n-
    1267 for (auto it = data.begin(),
    \n-
    1268 end = data.end();
    \n-
    1269 it != end;
    \n-
    1270 ++it)
    \n-
    1271 if (it->fieldInfo().type() == VTK::FieldInfo::Type::scalar)
    \n-
    1272 {
    \n-
    1273 scalars = it->name();
    \n-
    1274 break;
    \n-
    1275 }
    \n-
    1276
    \n-
    1277 std::string vectors = "";
    \n-
    1278 for (auto it = data.begin(),
    \n-
    1279 end = data.end();
    \n-
    1280 it != end;
    \n-
    1281 ++it)
    \n-
    1282 if (it->fieldInfo().type() == VTK::FieldInfo::Type::vector)
    \n-
    1283 {
    \n-
    1284 vectors = it->name();
    \n-
    1285 break;
    \n-
    1286 }
    \n-
    1287 return std::make_tuple(scalars,vectors);
    \n-
    1288 }
    \n-
    \n-
    1289
    \n-
    1290 template<typename Data, typename Iterator>
    \n-
    \n-
    1291 void writeData(VTK::VTUWriter& writer, const Data& data, const Iterator begin, const Iterator end, int nentries)
    \n-
    1292 {
    \n-
    1293 for (auto it = data.begin(),
    \n-
    1294 iend = data.end();
    \n-
    1295 it != iend;
    \n-
    1296 ++it)
    \n-
    1297 {
    \n-
    1298 const auto& f = *it;
    \n-
    1299 VTK::FieldInfo fieldInfo = f.fieldInfo();
    \n-
    1300 std::size_t writecomps = fieldInfo.size();
    \n-
    1301 switch (fieldInfo.type())
    \n-
    1302 {
    \n-\n-
    1304 break;
    \n-\n-
    1306 // vtk file format: a vector data always should have 3 comps (with
    \n-
    1307 // 3rd comp = 0 in 2D case)
    \n-
    1308 if (writecomps > 3)
    \n-
    1309 DUNE_THROW(IOError,"Cannot write VTK vectors with more than 3 components (components was " << writecomps << ")");
    \n-
    1310 writecomps = 3;
    \n-
    1311 break;
    \n-\n-
    1313 DUNE_THROW(NotImplemented,"VTK output for tensors not implemented yet");
    \n-
    1314 }
    \n-
    1315 std::shared_ptr<VTK::DataArrayWriter> p
    \n-
    1316 (writer.makeArrayWriter(f.name(), writecomps, nentries, fieldInfo.precision()));
    \n-
    1317 if(!p->writeIsNoop())
    \n-
    1318 for (Iterator eit = begin; eit!=end; ++eit)
    \n-
    1319 {
    \n-
    1320 const Entity & e = *eit;
    \n-
    1321 f.bind(e);
    \n-
    1322 f.write(eit.position(),*p);
    \n-
    1323 f.unbind();
    \n-
    1324 // vtk file format: a vector data always should have 3 comps
    \n-
    1325 // (with 3rd comp = 0 in 2D case)
    \n-
    1326 for (std::size_t j=fieldInfo.size(); j < writecomps; ++j)
    \n-
    1327 p->write(0.0);
    \n-
    1328 }
    \n-
    1329 }
    \n-
    1330 }
    \n-
    \n-
    1331
    \n-
    \n-
    1333 virtual void writeCellData(VTK::VTUWriter& writer)
    \n-
    1334 {
    \n-
    1335 if(celldata.size() == 0)
    \n-
    1336 return;
    \n-
    1337
    \n-
    1338 std::string scalars, vectors;
    \n-
    1339 std::tie(scalars,vectors) = getDataNames(celldata);
    \n-
    1340
    \n-
    1341 writer.beginCellData(scalars, vectors);
    \n-\n-
    1343 writer.endCellData();
    \n-
    1344 }
    \n-
    \n-
    1345
    \n-
    \n-
    1347 virtual void writeVertexData(VTK::VTUWriter& writer)
    \n-
    1348 {
    \n-
    1349 if(vertexdata.size() == 0)
    \n-
    1350 return;
    \n-
    1351
    \n-
    1352 std::string scalars, vectors;
    \n-
    1353 std::tie(scalars,vectors) = getDataNames(vertexdata);
    \n-
    1354
    \n-
    1355 writer.beginPointData(scalars, vectors);
    \n-\n-
    1357 writer.endPointData();
    \n-
    1358 }
    \n-
    \n-
    1359
    \n-
    \n-
    1361 virtual void writeGridPoints(VTK::VTUWriter& writer)
    \n-
    1362 {
    \n-
    1363 writer.beginPoints();
    \n-
    1364
    \n-
    1365 std::shared_ptr<VTK::DataArrayWriter> p
    \n-
    1366 (writer.makeArrayWriter("Coordinates", 3, nvertices, coordPrec));
    \n-
    1367 if(!p->writeIsNoop()) {
    \n-
    1368 VertexIterator vEnd = vertexEnd();
    \n-
    1369 for (VertexIterator vit=vertexBegin(); vit!=vEnd; ++vit)
    \n-
    1370 {
    \n-
    1371 int dimw=w;
    \n-
    1372 for (int j=0; j<std::min(dimw,3); j++)
    \n-
    1373 p->write((*vit).geometry().corner(vit.localindex())[j]);
    \n-
    1374 for (int j=std::min(dimw,3); j<3; j++)
    \n-
    1375 p->write(0.0);
    \n-
    1376 }
    \n-
    1377 }
    \n-
    1378 // free the VTK::DataArrayWriter before touching the stream
    \n-
    1379 p.reset();
    \n-
    1380
    \n-
    1381 writer.endPoints();
    \n-
    1382 }
    \n-
    \n-
    1383
    \n-
    \n-
    1385 virtual void writeGridCells(VTK::VTUWriter& writer)
    \n-
    1386 {
    \n-
    1387 writer.beginCells();
    \n-
    1388
    \n-
    1389 // connectivity
    \n-
    1390 {
    \n-
    1391 std::shared_ptr<VTK::DataArrayWriter> p1
    \n-
    1392 (writer.makeArrayWriter("connectivity", 1, ncorners, VTK::Precision::int32));
    \n-
    1393 if(!p1->writeIsNoop())
    \n-
    1394 for (CornerIterator it=cornerBegin(); it!=cornerEnd(); ++it)
    \n-
    1395 p1->write(it.id());
    \n-
    1396 }
    \n-
    1397
    \n-
    1398 // offsets
    \n-
    1399 {
    \n-
    1400 std::shared_ptr<VTK::DataArrayWriter> p2
    \n-
    1401 (writer.makeArrayWriter("offsets", 1, ncells, VTK::Precision::int32));
    \n-
    1402 if(!p2->writeIsNoop()) {
    \n-
    1403 int offset = 0;
    \n-
    1404 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n-
    1405 {
    \n-
    1406 offset += it->subEntities(n);
    \n-
    1407 p2->write(offset);
    \n-
    1408 }
    \n-
    1409 }
    \n-
    1410 }
    \n-
    1411
    \n-
    1412 // types
    \n-
    1413 if (n>1)
    \n-
    1414 {
    \n-
    1415 {
    \n-
    1416 std::shared_ptr<VTK::DataArrayWriter> p3
    \n-
    1417 (writer.makeArrayWriter("types", 1, ncells, VTK::Precision::uint8));
    \n-
    1418
    \n-
    1419 if(!p3->writeIsNoop())
    \n-
    1420 {
    \n-
    1421 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n-
    1422 {
    \n-
    1423 int vtktype = VTK::geometryType(it->type());
    \n-
    1424 p3->write(vtktype);
    \n-
    1425 }
    \n-
    1426 }
    \n-
    1427 }
    \n-
    1428
    \n-
    1429
    \n-
    1430 // if polyhedron cells found also cell faces need to be written
    \n-
    1431 if( polyhedralCellsPresent_ )
    \n-
    1432 {
    \n-
    1433 writeCellFaces( writer );
    \n-
    1434 }
    \n-
    1435 }
    \n-
    1436
    \n-
    1437 writer.endCells();
    \n-
    1438 }
    \n-
    \n-
    1439
    \n-
    1440 protected:
    \n-
    \n-\n-
    1442 {
    \n-
    1443 // check if polyhedron cells are present
    \n-
    1444 for( const auto& geomType : gridView_.indexSet().types( 0 ) )
    \n-
    1445 {
    \n-
    1446 if( VTK::geometryType( geomType ) == VTK::polyhedron )
    \n-
    1447 {
    \n-
    1448 return true;
    \n-
    1449 }
    \n-
    1450 }
    \n-
    1451 return false;
    \n-
    1452 }
    \n-
    \n-
    1453
    \n-
    \n-
    1455 virtual void writeCellFaces(VTK::VTUWriter& writer)
    \n-
    1456 {
    \n-
    1457 if( ! faceVertices_ )
    \n-
    1458 {
    \n-
    1459 faceVertices_.reset( new std::pair< std::vector<int>, std::vector<int> > () );
    \n-
    1460 // fill face vertex structure
    \n-\n-
    1462 faceVertices_->first, faceVertices_->second );
    \n-
    1463 }
    \n-
    1464
    \n-
    1465 std::vector< int >& faces = faceVertices_->first;
    \n-
    1466 std::vector< int >& faceOffsets = faceVertices_->second;
    \n-
    1467 assert( int(faceOffsets.size()) == ncells );
    \n-
    1468
    \n-
    1469 {
    \n-
    1470 std::shared_ptr<VTK::DataArrayWriter> p4
    \n-
    1471 (writer.makeArrayWriter("faces", 1, faces.size(), VTK::Precision::int32));
    \n-
    1472 if(!p4->writeIsNoop())
    \n-
    1473 {
    \n-
    1474 for( const auto& face : faces )
    \n-
    1475 p4->write( face );
    \n-
    1476 }
    \n-
    1477 }
    \n-
    1478
    \n-
    1479 {
    \n-
    1480 std::shared_ptr<VTK::DataArrayWriter> p5
    \n-
    1481 (writer.makeArrayWriter("faceoffsets", 1, ncells, VTK::Precision::int32));
    \n-
    1482 if(!p5->writeIsNoop())
    \n-
    1483 {
    \n-
    1484 for( const auto& offset : faceOffsets )
    \n-
    1485 p5->write( offset );
    \n-
    1486
    \n-
    1487 // clear face vertex structure
    \n-
    1488 faceVertices_.reset();
    \n-
    1489 }
    \n-
    1490 }
    \n-
    1491 }
    \n-
    \n-
    1492
    \n-
    1493 template <class CornerIterator, class IndexSet, class T>
    \n-
    \n-\n-
    1495 const CornerIterator end,
    \n-
    1496 const IndexSet& indexSet,
    \n-
    1497 std::vector<T>& faces,
    \n-
    1498 std::vector<T>& faceOffsets )
    \n-
    1499 {
    \n-
    1500 if( n == 3 && it != end )
    \n-
    1501 {
    \n-
    1502 // clear output arrays
    \n-
    1503 faces.clear();
    \n-
    1504 faces.reserve( 15 * ncells );
    \n-
    1505 faceOffsets.clear();
    \n-
    1506 faceOffsets.reserve( ncells );
    \n-
    1507
    \n-
    1508 int offset = 0;
    \n-
    1509
    \n-
    1510 Cell element = *it;
    \n-
    1511 int elIndex = indexSet.index( element );
    \n-
    1512 std::vector< T > vertices;
    \n-
    1513 vertices.reserve( 30 );
    \n-
    1514 for( ; it != end; ++it )
    \n-
    1515 {
    \n-
    1516 const Cell& cell = *it ;
    \n-
    1517 const int cellIndex = indexSet.index( cell ) ;
    \n-
    1518 if( elIndex != cellIndex )
    \n-
    1519 {
    \n-
    1520 fillFacesForElement( element, indexSet, vertices, offset, faces, faceOffsets );
    \n-
    1521
    \n-
    1522 vertices.clear();
    \n-
    1523 element = cell ;
    \n-
    1524 elIndex = cellIndex ;
    \n-
    1525 }
    \n-
    1526 vertices.push_back( it.id() );
    \n-
    1527 }
    \n-
    1528
    \n-
    1529 // fill faces for last element
    \n-
    1530 fillFacesForElement( element, indexSet, vertices, offset, faces, faceOffsets );
    \n-
    1531 }
    \n-
    1532 }
    \n-
    \n-
    1533
    \n-
    1534 template <class Entity, class IndexSet, class T>
    \n-
    \n-
    1535 static void fillFacesForElement( const Entity& element,
    \n-
    1536 const IndexSet& indexSet,
    \n-
    1537 const std::vector<T>& vertices,
    \n-
    1538 T& offset,
    \n-
    1539 std::vector<T>& faces,
    \n-
    1540 std::vector<T>& faceOffsets )
    \n-
    1541 {
    \n-
    1542 const int dim = n;
    \n-
    1543
    \n-
    1544 std::map< T, T > vxMap;
    \n-
    1545
    \n-
    1546 // get number of local faces
    \n-
    1547 const int nVertices = element.subEntities( dim );
    \n-
    1548 for( int vx = 0; vx < nVertices; ++ vx )
    \n-
    1549 {
    \n-
    1550 const int vxIdx = indexSet.subIndex( element, vx, dim );
    \n-
    1551 vxMap[ vxIdx ] = vertices[ vx ];
    \n-
    1552 }
    \n-
    1553
    \n-
    1554 // get number of local faces
    \n-
    1555 const int nFaces = element.subEntities( 1 );
    \n-
    1556 // store number of faces for current element
    \n-
    1557 faces.push_back( nFaces );
    \n-
    1558 ++offset;
    \n-
    1559 // extract each face as a set of vertex indices
    \n-
    1560 for( int fce = 0; fce < nFaces; ++ fce )
    \n-
    1561 {
    \n-
    1562 // obtain face
    \n-
    1563 const auto face = element.template subEntity< 1 > ( fce );
    \n-
    1564
    \n-
    1565 // get all vertex indices from current face
    \n-
    1566 const int nVxFace = face.subEntities( dim );
    \n-
    1567 faces.push_back( nVxFace );
    \n-
    1568 ++offset ;
    \n-
    1569 for( int i=0; i<nVxFace; ++i )
    \n-
    1570 {
    \n-
    1571 const T vxIndex = indexSet.subIndex( face, i, dim );
    \n-
    1572 assert( vxMap.find( vxIndex ) != vxMap.end() );
    \n-
    1573 faces.push_back( vxMap[ vxIndex ] );
    \n-
    1574 ++offset ;
    \n-
    1575 }
    \n-
    1576 }
    \n-
    1577
    \n-
    1578 // store face offset for each element
    \n-
    1579 faceOffsets.push_back( offset );
    \n-
    1580 }
    \n+
    255 file << "$EndElements" << std::endl;
    \n+
    256 }
    \n
    \n-
    1581
    \n-
    1582 protected:
    \n-
    1583 // the list of registered functions
    \n-
    1584 std::list<VTKLocalFunction> celldata;
    \n-
    1585 std::list<VTKLocalFunction> vertexdata;
    \n-
    1586
    \n-
    1587 // the grid
    \n-\n-
    1589
    \n-
    1590 // temporary grid information
    \n-\n-\n-\n-
    1594 private:
    \n-
    1595 VertexMapper* vertexmapper;
    \n-
    1596 // in conforming mode, for each vertex id (as obtained by vertexmapper)
    \n-
    1597 // hold its number in the iteration order (VertexIterator)
    \n-
    1598 std::vector<int> number;
    \n-
    1599 VTK::DataMode datamode;
    \n-
    1600 VTK::Precision coordPrec;
    \n-
    1601
    \n-
    1602 // true if polyhedral cells are present in the grid
    \n-
    1603 const bool polyhedralCellsPresent_;
    \n-
    1604
    \n-
    1605 // pointer holding face vertex connectivity if needed
    \n-
    1606 std::shared_ptr< std::pair< std::vector<int>, std::vector<int> > > faceVertices_;
    \n-
    1607
    \n-
    1608 protected:
    \n-\n-
    1610 };
    \n+
    257
    \n+
    258 };
    \n
    \n-
    1611
    \n-
    1612}
    \n-
    1613
    \n-
    1614#endif
    \n-\n-
    Mapper for multiple codim and multiple geometry types.
    \n-\n-
    Common stuff for the VTKWriter.
    \n-
    Functions for VTK output.
    \n-\n-
    Data array writers for the VTKWriter.
    \n-\n-
    PartitionIteratorType
    Parameter to be used for the parallel level- and leaf iterators.
    Definition gridenums.hh:136
    \n-
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n-
    @ All_Partition
    all entities
    Definition gridenums.hh:141
    \n-
    @ InteriorBorder_Partition
    interior and border entities
    Definition gridenums.hh:138
    \n-
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n+
    259
    \n+
    260} // namespace Dune
    \n+
    261
    \n+
    262#endif // DUNE_GRID_IO_FILE_GMSHWRITER_HH
    \n+
    Mapper for multiple codim and multiple geometry types.
    \n
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n-
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n-
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n-
    const Communication & comm() const
    obtain communication object
    Definition common/gridview.hh:280
    \n+
    int size(int codim) const
    obtain number of entities in a given codimension
    Definition common/gridview.hh:197
    \n
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n-
    Grid::ctype ctype
    type used for coordinates in grid
    Definition common/gridview.hh:145
    \n
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n-
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n-
    STL namespace.
    \n+
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-\n-\n-\n-
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n-
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n-
    @ appendedraw
    Output is to the file is appended raw binary.
    Definition common.hh:49
    \n-
    @ appendedbase64
    Output is to the file is appended base64 binary.
    Definition common.hh:51
    \n-
    @ base64
    Output to the file is inline base64 binary.
    Definition common.hh:47
    \n-
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n-
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n-
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n-
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n-
    DataMode
    Whether to produce conforming or non-conforming output.
    Definition common.hh:67
    \n-
    @ conforming
    Output conforming data.
    Definition common.hh:73
    \n-
    @ nonconforming
    Output non-conforming data.
    Definition common.hh:81
    \n-
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n-
    @ polyhedron
    Definition common.hh:142
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    Geometry geometry() const
    obtain geometric realization of the entity
    Definition common/entity.hh:141
    \n+
    GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition common/entity.hh:146
    \n
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n-
    size_type size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mcmgmapper.hh:204
    \n-
    Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity of codim 0 entity to starting index in array for dof block.
    Definition mcmgmapper.hh:185
    \n-
    Descriptor struct for VTK fields.
    Definition common.hh:328
    \n-
    std::size_t size() const
    The number of components in the data field.
    Definition common.hh:364
    \n-
    Precision precision() const
    The precision used for the output of the data field.
    Definition common.hh:370
    \n-
    @ tensor
    tensor field (always 3x3)
    \n-
    @ vector
    vector-valued field (always 3D, will be padded if necessary)
    \n-\n-
    Type type() const
    The type of the data field.
    Definition common.hh:358
    \n-
    std::string name() const
    The name of the data field.
    Definition common.hh:352
    \n-
    base class for data array writers
    Definition dataarraywriter.hh:56
    \n-
    void write(T data)
    write one element of data
    Definition dataarraywriter.hh:69
    \n-
    A base class for grid functions with any return type and dimension.
    Definition function.hh:42
    \n-
    Take a vector and interpret it as cell data for the VTKWriter.
    Definition function.hh:97
    \n-
    Take a vector and interpret it as point data for the VTKWriter.
    Definition function.hh:205
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n-
    Writer for the ouput of grid functions in the vtk format.
    Definition vtksequencewriter.hh:29
    \n-
    Base class to write pvd-files which contains a list of all collected vtk-files.
    Definition vtksequencewriterbase.hh:34
    \n-
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n-
    void addCellData(const Container &v, const std::string &name, int ncomps=1, VTK::Precision prec=VTK::Precision::float32)
    Add a grid function (represented by container) that lives on the cells of the grid to the visualizati...
    Definition vtkwriter.hh:695
    \n-
    CornerIterator cornerEnd() const
    Definition vtkwriter.hh:620
    \n-
    void clear()
    clear list of registered functions
    Definition vtkwriter.hh:775
    \n-
    std::string write(const std::string &name, VTK::OutputType type=VTK::ascii)
    write output (interface might change later)
    Definition vtkwriter.hh:803
    \n-
    VertexIterator vertexBegin() const
    Definition vtkwriter.hh:508
    \n-
    std::string getTypeString() const
    Definition vtkwriter.hh:1226
    \n-
    std::string getParallelHeaderName(const std::string &name, const std::string &path, int commSize) const
    return name of a parallel header file
    Definition vtkwriter.hh:920
    \n-
    void addVertexData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the vertices of the grid to the visualization.
    Definition vtkwriter.hh:713
    \n-
    Dune::VTKFunction< GridView > VTKFunction
    Definition vtkwriter.hh:147
    \n-
    CellIterator cellEnd() const
    Definition vtkwriter.hh:402
    \n-
    std::list< VTKLocalFunction > vertexdata
    Definition vtkwriter.hh:1585
    \n-
    CornerIterator cornerBegin() const
    Definition vtkwriter.hh:613
    \n-
    std::string getSerialPieceName(const std::string &name, const std::string &path) const
    return name of a serial piece file
    Definition vtkwriter.hh:940
    \n-
    void addCellData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the cells of the grid to the visualization.
    Definition vtkwriter.hh:649
    \n-
    std::string getFormatString() const
    Definition vtkwriter.hh:1213
    \n-
    bool checkForPolyhedralCells() const
    Definition vtkwriter.hh:1441
    \n-
    void addVertexData(F &&f, VTK::FieldInfo vtkFieldInfo)
    Add a function by sampling it on the grid vertices.
    Definition vtkwriter.hh:738
    \n-
    virtual void writeCellData(VTK::VTUWriter &writer)
    write cell data
    Definition vtkwriter.hh:1333
    \n-
    virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    count the vertices, cells and corners
    Definition vtkwriter.hh:1235
    \n-
    std::string getParallelPieceName(const std::string &name, const std::string &path, int commRank, int commSize) const
    return name of a parallel piece file (or header name)
    Definition vtkwriter.hh:855
    \n-
    CellIterator cellBegin() const
    Definition vtkwriter.hh:397
    \n-
    VTK::OutputType outputtype
    Definition vtkwriter.hh:1609
    \n-
    virtual void writeGridCells(VTK::VTUWriter &writer)
    write the connectivity array
    Definition vtkwriter.hh:1385
    \n-
    GridView gridView_
    Definition vtkwriter.hh:1588
    \n-
    virtual void writeCellFaces(VTK::VTUWriter &writer)
    write the connectivity array
    Definition vtkwriter.hh:1455
    \n-
    void fillFaceVertices(CornerIterator it, const CornerIterator end, const IndexSet &indexSet, std::vector< T > &faces, std::vector< T > &faceOffsets)
    Definition vtkwriter.hh:1494
    \n-
    std::list< VTKLocalFunction > celldata
    Definition vtkwriter.hh:1584
    \n-
    std::string write(const std::string &name, VTK::OutputType type, const int commRank, const int commSize)
    write output (interface might change later)
    Definition vtkwriter.hh:965
    \n-
    VTK::Precision coordPrecision() const
    get the precision with which coordinates are written out
    Definition vtkwriter.hh:782
    \n-
    std::list< VTKLocalFunction >::const_iterator FunctionIterator
    Definition vtkwriter.hh:376
    \n-
    std::tuple< std::string, std::string > getDataNames(const T &data) const
    Definition vtkwriter.hh:1264
    \n-
    virtual void writeGridPoints(VTK::VTUWriter &writer)
    write the positions of vertices
    Definition vtkwriter.hh:1361
    \n-
    virtual void writeVertexData(VTK::VTUWriter &writer)
    write vertex data
    Definition vtkwriter.hh:1347
    \n-
    int nvertices
    Definition vtkwriter.hh:1592
    \n-
    void addCellData(F &&f, VTK::FieldInfo vtkFieldInfo)
    Add a function by sampling it on the element centers.
    Definition vtkwriter.hh:674
    \n-
    void addVertexData(const Container &v, const std::string &name, int ncomps=1, VTK::Precision prec=VTK::Precision::float32)
    Add a grid function (represented by container) that lives on the vertices of the grid to the visualiz...
    Definition vtkwriter.hh:760
    \n-
    virtual ~VTKWriter()
    destructor
    Definition vtkwriter.hh:786
    \n-
    static void fillFacesForElement(const Entity &element, const IndexSet &indexSet, const std::vector< T > &vertices, T &offset, std::vector< T > &faces, std::vector< T > &faceOffsets)
    Definition vtkwriter.hh:1535
    \n-
    void writeData(VTK::VTUWriter &writer, const Data &data, const Iterator begin, const Iterator end, int nentries)
    Definition vtkwriter.hh:1291
    \n-
    int ncells
    Definition vtkwriter.hh:1591
    \n-
    VertexIterator vertexEnd() const
    Definition vtkwriter.hh:515
    \n-
    VTKWriter(const GridView &gridView, VTK::DataMode dm=VTK::conforming, VTK::Precision coordPrecision=VTK::Precision::float32)
    Construct a VTKWriter working on a specific GridView.
    Definition vtkwriter.hh:636
    \n-
    std::string pwrite(const std::string &name, const std::string &path, const std::string &extendpath, VTK::OutputType ot, const int commRank, const int commSize)
    write output; interface might change later
    Definition vtkwriter.hh:1043
    \n-
    std::string pwrite(const std::string &name, const std::string &path, const std::string &extendpath, VTK::OutputType type=VTK::ascii)
    write output (interface might change later)
    Definition vtkwriter.hh:835
    \n-
    int ncorners
    Definition vtkwriter.hh:1593
    \n-
    Type erasure wrapper for VTK data sets.
    Definition vtkwriter.hh:156
    \n-
    void unbind() const
    Unbind the data set from the currently bound entity.
    Definition vtkwriter.hh:360
    \n-
    VTKLocalFunction(F &&f, VTK::FieldInfo fieldInfo)
    Construct a VTKLocalFunction for a dune-functions style LocalFunction.
    Definition vtkwriter.hh:307
    \n-
    std::string name() const
    Returns the name of the data set.
    Definition vtkwriter.hh:342
    \n-
    VTK::FieldInfo _fieldInfo
    Definition vtkwriter.hh:372
    \n-
    VTK::DataArrayWriter Writer
    Definition vtkwriter.hh:160
    \n-
    const VTK::FieldInfo & fieldInfo() const
    Returns the VTK::FieldInfo for the data set.
    Definition vtkwriter.hh:348
    \n-
    void bind(const Entity &e) const
    Bind the data set to grid entity e.
    Definition vtkwriter.hh:354
    \n-
    VTKLocalFunction(const std::shared_ptr< const VTKFunction > &vtkFunctionPtr)
    Construct a VTKLocalFunction for a legacy VTKFunction.
    Definition vtkwriter.hh:331
    \n-
    std::shared_ptr< FunctionWrapperBase > _f
    Definition vtkwriter.hh:371
    \n-
    void write(const Coordinate &pos, Writer &w) const
    Write the value of the data set at local coordinate pos to the writer w.
    Definition vtkwriter.hh:366
    \n-
    Base class for polymorphic container of underlying data set.
    Definition vtkwriter.hh:164
    \n-
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const =0
    Evaluate data set at local position pos inside the current entity and write result to w.
    \n-
    virtual ~FunctionWrapperBase()
    Definition vtkwriter.hh:178
    \n-
    virtual void unbind()=0
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    \n-
    virtual void bind(const Entity &e)=0
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    \n-
    Type erasure implementation for functions conforming to the dune-functions LocalFunction interface.
    Definition vtkwriter.hh:188
    \n-
    typename std::decay< F >::type Function
    Definition vtkwriter.hh:189
    \n-
    FunctionWrapper(F_ &&f)
    Definition vtkwriter.hh:192
    \n-
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const
    Evaluate data set at local position pos inside the current entity and write result to w.
    Definition vtkwriter.hh:206
    \n-
    virtual void unbind()
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    Definition vtkwriter.hh:201
    \n-
    virtual void bind(const Entity &e)
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    Definition vtkwriter.hh:196
    \n-
    Type erasure implementation for C++ functions, i.e., functions that can be evaluated in global coordi...
    Definition vtkwriter.hh:236
    \n-
    GlobalFunctionWrapper(F_ &&f)
    Definition vtkwriter.hh:240
    \n-
    virtual void unbind()
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    Definition vtkwriter.hh:250
    \n-
    typename std::decay< F >::type Function
    Definition vtkwriter.hh:237
    \n-
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const
    Evaluate data set at local position pos inside the current entity and write result to w.
    Definition vtkwriter.hh:255
    \n-
    virtual void bind(const Entity &e)
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    Definition vtkwriter.hh:245
    \n-
    Type erasure implementation for legacy VTKFunctions.
    Definition vtkwriter.hh:276
    \n-
    virtual void unbind()
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    Definition vtkwriter.hh:287
    \n-
    VTKFunctionWrapper(const std::shared_ptr< const VTKFunction > &f)
    Definition vtkwriter.hh:277
    \n-
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const
    Evaluate data set at local position pos inside the current entity and write result to w.
    Definition vtkwriter.hh:292
    \n-
    virtual void bind(const Entity &e)
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    Definition vtkwriter.hh:282
    \n-
    Iterator over the grids elements.
    Definition vtkwriter.hh:385
    \n-
    CellIterator(const GridCellIterator &x)
    construct a CellIterator from the gridview's Iterator.
    Definition vtkwriter.hh:388
    \n-
    const FieldVector< DT, n > position() const
    Definition vtkwriter.hh:391
    \n-
    Iterate over the grid's vertices.
    Definition vtkwriter.hh:424
    \n-
    VertexIterator(const GridCellIterator &x, const GridCellIterator &end, const VTK::DataMode &dm, const VertexMapper &vm)
    Definition vtkwriter.hh:457
    \n-
    void basicIncrement()
    Definition vtkwriter.hh:440
    \n-
    void increment()
    Definition vtkwriter.hh:468
    \n-
    EntityReference dereference() const
    Definition vtkwriter.hh:491
    \n-
    bool equals(const VertexIterator &cit) const
    Definition vtkwriter.hh:485
    \n-
    FieldVector< DT, n > position() const
    position of vertex inside the entity
    Definition vtkwriter.hh:501
    \n-
    int localindex() const
    index of vertex within the entity, in Dune-numbering
    Definition vtkwriter.hh:496
    \n-
    Iterate over the elements' corners.
    Definition vtkwriter.hh:539
    \n-
    void increment()
    Definition vtkwriter.hh:566
    \n-
    CornerIterator(const GridCellIterator &x, const GridCellIterator &end, const VTK::DataMode &dm, const VertexMapper &vm, const std::vector< int > &num)
    Definition vtkwriter.hh:558
    \n-
    int id() const
    Process-local consecutive zero-starting vertex id.
    Definition vtkwriter.hh:597
    \n-
    EntityReference dereference() const
    Definition vtkwriter.hh:588
    \n-
    bool equals(const CornerIterator &cit) const
    Definition vtkwriter.hh:582
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n-
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n-
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n-
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n-
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n-
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n-
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n-
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n-
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n-
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n+
    Index index(const EntityType &e) const
    Map entity to starting index in array for dof block.
    Definition mcmgmapper.hh:171
    \n+
    Write Gmsh mesh file.
    Definition gmshwriter.hh:37
    \n+
    GmshWriter(const GridView &gridView, int numDigits=6)
    Constructor expecting GridView of Grid to be written.
    Definition gmshwriter.hh:187
    \n+
    void setPrecision(int numDigits)
    Set the number of digits to be used when writing the vertices. By default is 6.
    Definition gmshwriter.hh:193
    \n+
    void write(const std::string &fileName, const std::vector< int > &physicalEntities=std::vector< int >(), const std::vector< int > &physicalBoundaries=std::vector< int >()) const
    Write given grid in Gmsh 2.0 compatible ASCII file.
    Definition gmshwriter.hh:218
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,1974 +2,292 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-vtkwriter.hh\n+gmshwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-_\b1// SPDX-FileCopyrightText: 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 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_VTKWRITER_HH\n-7#define DUNE_VTKWRITER_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_GRID_IO_FILE_GMSHWRITER_HH\n+6#define DUNE_GRID_IO_FILE_GMSHWRITER_HH\n+7\n+8#include \n+9#include \n+10#include \n 11#include \n-12#include \n-13#include \n-14#include \n-15#include \n-16#include \n-17#include \n-18#include \n-19#include \n-20\n-21#include \n-22#include \n-23#include \n-24#include \n-25#include \n-26#include \n-27#include \n-28#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-29#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-31#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-32#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-33#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-34#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n-35#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-36\n-50namespace _\bD_\bu_\bn_\be\n-51{\n-52\n-53 namespace Impl\n-54 {\n-55 // Check whether type F has a method 'bind' (see the dune-functions\n-interface)\n-56 template< class F, class E, class = void >\n-57 struct IsBindable\n-58 : std::false_type\n-59 {};\n-60\n-61 template< class F, class E >\n-62 struct IsBindable< F, E, _\bs_\bt_\bd::void_t< decltype( std::declval< F & >().bind\n-( std::declval< const E & >() ) ),\n-63 decltype( std::declval< F & >().unbind() ) > >\n-64 : std::true_type\n-65 {};\n-66\n-67 // Check whether localFunction(F) can be called (see the dune-functions\n-interface)\n-68 template< class F, class = void >\n-69 struct HasLocalFunction\n-70 : std::false_type\n-71 {};\n-72\n-73 template< class F >\n-74 struct HasLocalFunction< F, _\bs_\bt_\bd::void_t< decltype( localFunction( std::\n-declval< F& >() ) ) > >\n-75 : std::true_type\n-76 {};\n-77\n-78 } // namespace Impl\n+12#include \n+13\n+14#include \n+15#include \n+16#include \n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+19\n+20namespace _\bD_\bu_\bn_\be {\n+21\n+35 template \n+_\b3_\b6 class _\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br\n+37 {\n+38 private:\n+39 const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw gv;\n+40 int precision;\n+41\n+42 static const unsigned int dim = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+43 static const unsigned int dimWorld = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+44 static_assert( (dimWorld <= 3), \"GmshWriter requires dimWorld <= 3.\" );\n+45\n+47 template\n+48 std::size_t nodeIndexFromEntity(const _\bE_\bn_\bt_\bi_\bt_\by& entity, int i) const {\n+49 return gv._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().subIndex(entity, i, dim)+1;\n+50 }\n+51\n+55 static std::size_t translateDuneToGmshType(const GeometryType& type) {\n+56 std::size_t element_type;\n+57\n+58 if (type.isLine())\n+59 element_type = 1;\n+60 else if (type.isTriangle())\n+61 element_type = 2;\n+62 else if (type.isQuadrilateral())\n+63 element_type = 3;\n+64 else if (type.isTetrahedron())\n+65 element_type = 4;\n+66 else if (type.isHexahedron())\n+67 element_type = 5;\n+68 else if (type.isPrism())\n+69 element_type = 6;\n+70 else if (type.isPyramid())\n+71 element_type = 7;\n+72 else if (type.isVertex())\n+73 element_type = 15;\n+74 else\n+75 DUNE_THROW(Dune::IOError, \"GeometryType \" << type << \" is not supported by\n+gmsh.\");\n+76\n+77 return element_type;\n+78 }\n 79\n-80 // Forward-declaration here, so the class can be friend of VTKWriter\n-81 template \n-82 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be;\n-83 template \n-84 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br;\n-85\n-94 template< class GridView >\n-_\b9_\b5 class _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br {\n-96\n-97 // VTKSequenceWriterBase needs getSerialPieceName\n-98 // and getParallelHeaderName\n-99 friend class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>;\n-100 // VTKSequenceWriter needs the grid view, to get the MPI size and rank\n-101 friend class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>;\n-102\n-103 // extract types\n-104 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd Grid;\n-105 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be DT;\n-106 constexpr static int n = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-107 constexpr static int w = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+94 void outputElements(std::ofstream& file, const std::vector&\n+physicalEntities, const std::vector& physicalBoundaries) const {\n+95 _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> elementMapper(gv,\n+_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt());\n+96 std::size_t counter(1);\n+97 for (const auto& entity : elements(gv)) {\n+98 // Check whether the type is compatible. If not, close file and rethrow\n+exception.\n+99 try {\n+100 std::size_t element_type = translateDuneToGmshType(entity._\bt_\by_\bp_\be());\n+101\n+102 file << counter << \" \" << element_type;\n+103 // If present, set the first tag to the physical entity\n+104 if (!physicalEntities.empty())\n+105 file << \" \" << 1 << \" \" << physicalEntities[elementMapper._\bi_\bn_\bd_\be_\bx(entity)];\n+106 else\n+107 file << \" \" << 0; // \"0\" for \"I do not use any tags.\"\n 108\n-109 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Cell;\n-110 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< n >::Entity Vertex;\n-111 typedef Cell Entity;\n-112\n-113 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt IndexSet;\n-114\n-115 static const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be VTK_Partition =\n-_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn;\n-116 //static const PartitionIteratorType VTK_Partition = All_Partition;\n-117\n-118 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >\n-119 ::template Partition< VTK_Partition >::Iterator\n-120 GridCellIterator;\n-121 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< n >\n-122 ::template Partition< VTK_Partition >::Iterator\n-123 GridVertexIterator;\n-124\n-125 typedef typename GridCellIterator::Reference EntityReference;\n-126\n-127 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >\n-128 ::Entity::Geometry::LocalCoordinate Coordinate;\n-129\n-130 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b> _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br;\n+109 // Output list of nodes.\n+110 // 3, 5 and 7 got different vertex numbering compared to Dune\n+111 if (3 == element_type)\n+112 file << \" \"\n+113 << nodeIndexFromEntity(entity, 0) << \" \" << nodeIndexFromEntity(entity, 1)\n+<< \" \"\n+114 << nodeIndexFromEntity(entity, 3) << \" \" << nodeIndexFromEntity(entity, 2);\n+115 else if (5 == element_type)\n+116 file << \" \"\n+117 << nodeIndexFromEntity(entity, 0) << \" \" << nodeIndexFromEntity(entity, 1)\n+<< \" \"\n+118 << nodeIndexFromEntity(entity, 3) << \" \" << nodeIndexFromEntity(entity, 2)\n+<< \" \"\n+119 << nodeIndexFromEntity(entity, 4) << \" \" << nodeIndexFromEntity(entity, 5)\n+<< \" \"\n+120 << nodeIndexFromEntity(entity, 7) << \" \" << nodeIndexFromEntity(entity, 6);\n+121 else if (7 == element_type)\n+122 file << \" \"\n+123 << nodeIndexFromEntity(entity, 0) << \" \" << nodeIndexFromEntity(entity, 1)\n+<< \" \"\n+124 << nodeIndexFromEntity(entity, 3) << \" \" << nodeIndexFromEntity(entity, 2)\n+<< \" \"\n+125 << nodeIndexFromEntity(entity, 4);\n+126 else {\n+127 for (int k = 0; k < entity._\bg_\be_\bo_\bm_\be_\bt_\br_\by().corners(); ++k)\n+128 file << \" \" << nodeIndexFromEntity(entity, k);\n+129 }\n+130 ++counter;\n 131\n-132 // return true if entity should be skipped in Vertex and Corner iterator\n-133 static bool skipEntity( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be entityType )\n-134 {\n-135 switch( VTK_Partition )\n-136 {\n-137 // for All_Partition no entity has to be skipped\n-138 case _\bA_\bl_\bl_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn: return false;\n-139 case _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn: return ( entityType != _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by );\n-140 default: DUNE_THROW(NotImplemented,\"Add check for this partition type\");\n-141 }\n-142 return false ;\n-143 }\n-144\n-145 public:\n-146\n-_\b1_\b4_\b7 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b> _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn;\n-148\n-149 protected:\n-150\n+132 file << std::endl;\n+133\n+134 // Write boundaries\n+135 if (!physicalBoundaries.empty()) {\n+136 auto refElement = referenceElement\n+(entity._\bt_\by_\bp_\be());\n+137 for(const auto& intersection : intersections(gv, entity)) {\n+138 if(intersection.boundary()) {\n+139 const auto faceLocalIndex(intersection.indexInInside());\n+140 file << counter << \" \" << translateDuneToGmshType(intersection.type())\n+141 << \" \" << 1 << \" \" << physicalBoundaries[intersection.boundarySegmentIndex\n+()];\n+142 for (int k = 0; k < intersection.geometry().corners(); ++k)\n+143 {\n+144 const auto vtxLocalIndex(refElement.subEntity(faceLocalIndex, 1, k, dim));\n+145 file << \" \" << nodeIndexFromEntity(entity, vtxLocalIndex);\n+146 }\n+147 ++counter;\n+148 file << std::endl;\n+149 }\n+150 }\n+151 }\n 152\n-_\b1_\b5_\b5 class _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-156 {\n-157\n-158 public:\n+153 } catch(Exception& e) {\n+154 file.close();\n+155 throw;\n+156 }\n+157 }\n+158 }\n 159\n-_\b1_\b6_\b0 typedef _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br _\bW_\br_\bi_\bt_\be_\br;\n-161\n-_\b1_\b6_\b3 struct _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-164 {\n-165\n-_\b1_\b6_\b7 virtual void _\bb_\bi_\bn_\bd(const Entity& e) = 0;\n-168\n-_\b1_\b7_\b0 virtual void _\bu_\bn_\bb_\bi_\bn_\bd() = 0;\n+160\n+167 void outputNodes(std::ofstream& file) const {\n+168 for (const auto& vertex : vertices(gv)) {\n+169 const auto globalCoord = vertex.geometry().center();\n+170 const auto nodeIndex = gv._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index(vertex)+1; // Start counting\n+indices by \"1\".\n 171\n-173\n-_\b1_\b7_\b6 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n-const = 0;\n-177\n-_\b1_\b7_\b8 virtual _\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be()\n-179 {}\n+172 if (1 == dimWorld)\n+173 file << nodeIndex << \" \" << globalCoord[0] << \" \" << 0 << \" \" << 0 << std::\n+endl;\n+174 else if (2 == dimWorld)\n+175 file << nodeIndex << \" \" << globalCoord[0] << \" \" << globalCoord[1] << \" \"\n+<< 0 << std::endl;\n+176 else // (3 == dimWorld)\n+177 file << nodeIndex << \" \" << globalCoord[0] << \" \" << globalCoord[1] << \" \"\n+<< globalCoord[2] << std::endl;\n+178 }\n+179 }\n 180\n-181 };\n-182\n-184 // DUNE_PRIVATE since _f has less visibility\n-185 template\n-_\b1_\b8_\b6 struct DUNE_PRIVATE _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-187 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-188 {\n-_\b1_\b8_\b9 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn = typename std::decay::type;\n-190\n-191 template\n-_\b1_\b9_\b2 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br(F_&& f)\n-193 : _f(_\bs_\bt_\bd::forward(f))\n-194 {}\n-195\n-_\b1_\b9_\b6 virtual void _\bb_\bi_\bn_\bd(const Entity& e)\n-197 {\n-198 _f.bind(e);\n-199 }\n-200\n-_\b2_\b0_\b1 virtual void _\bu_\bn_\bb_\bi_\bn_\bd()\n-202 {\n-203 _f.unbind();\n-204 }\n-205\n-_\b2_\b0_\b6 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n-const\n-207 {\n-208 auto r = _f(pos);\n-209 // we need to do different things here depending on whether r supports\n-indexing into it or not.\n-210 do_write(w,r,count,IsIndexable());\n-211 }\n-212\n-213 private:\n-214\n-215 template\n-216 void do_write(_\bW_\br_\bi_\bt_\be_\br& w, const R& r, std::size_t count, std::true_type)\n-const\n-217 {\n-218 for (std::size_t i = 0; i < count; ++i)\n-219 w._\bw_\br_\bi_\bt_\be(r[i]);\n-220 }\n-221\n-222 template\n-223 void do_write(Writer& w, const R& r, std::size_t count, std::false_type)\n-const\n-224 {\n-225 assert(count == 1);\n-226 w.write(r);\n-227 }\n+181 public:\n+_\b1_\b8_\b7 _\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br(const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw& gridView, int numDigits=6) : gv(gridView),\n+precision(numDigits) {}\n+188\n+_\b1_\b9_\b3 void _\bs_\be_\bt_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn(int numDigits) {\n+194 precision = numDigits;\n+195 }\n+196\n+_\b2_\b1_\b8 void _\bw_\br_\bi_\bt_\be(const std::string& fileName,\n+219 const std::vector& physicalEntities=std::vector(),\n+220 const std::vector& physicalBoundaries=std::vector()) const {\n+221 // Open file\n+222 std::ofstream file(fileName.c_str());\n+223 if (!file.is_open())\n+224 DUNE_THROW(Dune::IOError, \"Could not open \" << fileName << \" with write\n+access.\");\n+225\n+226 // Set precision\n+227 file << std::setprecision( precision );\n 228\n-229 Function _f;\n-230 };\n-231\n-233 template\n-_\b2_\b3_\b4 struct _\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-235 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-236 {\n-_\b2_\b3_\b7 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn = typename std::decay::type;\n-238\n-239 template\n-_\b2_\b4_\b0 _\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br(F_&& f)\n-241 : _f(_\bs_\bt_\bd::forward(f))\n-242 , element_(nullptr)\n-243 {}\n-244\n-_\b2_\b4_\b5 virtual void _\bb_\bi_\bn_\bd(const Entity& e)\n-246 {\n-247 element_ = &e;\n-248 }\n+229 // Output Header\n+230 file << \"$MeshFormat\" << std::endl\n+231 << \"2.0 0 \" << sizeof(double) << std::endl // \"2.0\" for \"version 2.0\", \"0\"\n+for ASCII\n+232 << \"$EndMeshFormat\" << std::endl;\n+233\n+234 // Output Nodes\n+235 file << \"$Nodes\" << std::endl\n+236 << gv._\bs_\bi_\bz_\be(dim) << std::endl;\n+237\n+238 outputNodes(file);\n+239\n+240 file << \"$EndNodes\" << std::endl;\n+241\n+242 // Output Elements;\n+243 int boundariesSize(0);\n+244 if(!physicalBoundaries.empty())\n+245 for(const auto& entity : elements(gv))\n+246 for(const auto& intersection : intersections(gv, entity))\n+247 if(intersection.boundary())\n+248 ++boundariesSize;\n 249\n-_\b2_\b5_\b0 virtual void _\bu_\bn_\bb_\bi_\bn_\bd()\n-251 {\n-252 element_ = nullptr;\n-253 }\n+250 file << \"$Elements\" << std::endl\n+251 << gv._\bs_\bi_\bz_\be(0) + boundariesSize<< std::endl;\n+252\n+253 outputElements(file, physicalEntities, physicalBoundaries);\n 254\n-_\b2_\b5_\b5 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n-const\n-256 {\n-257 auto globalPos = element_->geometry().global(pos);\n-258 auto r = _f(globalPos);\n-259 if constexpr (IsIndexable()) {\n-260 for (std::size_t i = 0; i < count; ++i)\n-261 w._\bw_\br_\bi_\bt_\be(r[i]);\n-262 }\n-263 else {\n-264 assert(count == 1);\n-265 w._\bw_\br_\bi_\bt_\be(r);\n-266 }\n-267 }\n-268 private:\n-269 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn _f;\n-270 const Entity* element_;\n-271 };\n-272\n-_\b2_\b7_\b4 struct _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-275 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-276 {\n-_\b2_\b7_\b7 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br(const std::shared_ptr< const VTKFunction >& f)\n-278 : _f(f)\n-279 , _entity(nullptr)\n-280 {}\n-281\n-_\b2_\b8_\b2 virtual void _\bb_\bi_\bn_\bd(const Entity& e)\n-283 {\n-284 _entity = &e;\n-285 }\n-286\n-_\b2_\b8_\b7 virtual void _\bu_\bn_\bb_\bi_\bn_\bd()\n-288 {\n-289 _entity = nullptr;\n-290 }\n-291\n-_\b2_\b9_\b2 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n-const\n-293 {\n-294 for (std::size_t i = 0; i < count; ++i)\n-295 w._\bw_\br_\bi_\bt_\be(_f->evaluate(i,*_entity,pos));\n-296 }\n-297\n-298 private:\n-299\n-300 std::shared_ptr< const VTKFunction > _f;\n-301 const Entity* _entity;\n-302\n-303 };\n-304\n-306 template::value,\n-int> = 0>\n-_\b3_\b0_\b7 _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n-308 : _\b__\bf(_\bs_\bt_\bd::make_unique<_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br >(_\bs_\bt_\bd::forward(f)))\n-309 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n-310 {}\n-311\n-313 // That is, a function that you can create a LocalFunction for, and\n-evaluate that in element coordinates\n-314 template::\n-value && Impl::HasLocalFunction::value, int> = 0>\n-_\b3_\b1_\b5 _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n-316 : _\b__\bf(_\bs_\bt_\bd::make_unique< _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br<\n-317 typename _\bs_\bt_\bd::decay(f)))>::type\n-318 > >(localFunction(_\bs_\bt_\bd::forward(f))))\n-319 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n-320 {}\n-321\n-323 // That is, a function that can be evaluated in global coordinates of the\n-domain\n-324 template::\n-value && not Impl::HasLocalFunction::value, int> = 0>\n-_\b3_\b2_\b5 _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n-326 : _\b__\bf(_\bs_\bt_\bd::make_unique< _\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br >(_\bs_\bt_\bd::forward(f)))\n-327 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n-328 {}\n-329\n-_\b3_\b3_\b1 explicit _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const std::shared_ptr< const VTKFunction >&\n-vtkFunctionPtr)\n-332 : _\b__\bf(_\bs_\bt_\bd::make_unique<_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br>(vtkFunctionPtr))\n-333 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(\n-334 vtkFunctionPtr->_\bn_\ba_\bm_\be(),\n-335 (vtkFunctionPtr->ncomps() == 2 || vtkFunctionPtr->ncomps() == 3) ? VTK::\n-FieldInfo::Type::vector : VTK::FieldInfo::Type::scalar,\n-336 vtkFunctionPtr->ncomps(),\n-337 vtkFunctionPtr->precision()\n-338 )\n-339 {}\n-340\n-_\b3_\b4_\b2 std::string _\bn_\ba_\bm_\be() const\n-343 {\n-344 return _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo()._\bn_\ba_\bm_\be();\n-345 }\n-346\n-_\b3_\b4_\b8 const _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo& _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo() const\n-349 {\n-350 return _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo;\n-351 }\n-352\n-_\b3_\b5_\b4 void _\bb_\bi_\bn_\bd(const Entity& e) const\n-355 {\n-356 _\b__\bf->bind(e);\n-357 }\n-358\n-_\b3_\b6_\b0 void _\bu_\bn_\bb_\bi_\bn_\bd() const\n-361 {\n-362 _\b__\bf->unbind();\n-363 }\n-364\n-_\b3_\b6_\b6 void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w) const\n-367 {\n-368 _\b__\bf->write(pos,w,_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo().size());\n-369 }\n-370\n-_\b3_\b7_\b1 std::shared_ptr _\b__\bf;\n-_\b3_\b7_\b2 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo;\n-373\n-374 };\n-375\n-_\b3_\b7_\b6 typedef typename std::list::const_iterator\n-_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-377\n-379\n-_\b3_\b8_\b4 class _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br : public GridCellIterator\n-385 {\n-386 public:\n-_\b3_\b8_\b8 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridCellIterator & x) : GridCellIterator(x) {}\n-_\b3_\b9_\b1 const FieldVector _\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn() const\n-392 {\n-393 return ReferenceElements::general((*this)->type()).position(0,0);\n-394 }\n-395 };\n-396\n-_\b3_\b9_\b7 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn() const\n-398 {\n-399 return _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template begin< 0, VTK_Partition >();\n-400 }\n-401\n-_\b4_\b0_\b2 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\be_\bl_\bl_\bE_\bn_\bd() const\n-403 {\n-404 return _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >();\n-405 }\n-406\n-408\n-_\b4_\b2_\b2 class _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br :\n-423 public ForwardIteratorFacade\n-424 {\n-425 GridCellIterator git;\n-426 GridCellIterator gend;\n-427 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be datamode;\n-428 // Index of the currently visited corner within the current element.\n-429 // NOTE: this is in Dune-numbering, in contrast to CornerIterator.\n-430 int cornerIndexDune;\n-431 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vertexmapper;\n-432 std::vector visited;\n-433 // in conforming mode, for each vertex id (as obtained by vertexmapper)\n-434 // hold its number in the iteration order (VertexIterator)\n-435 int offset;\n-436\n-437 // hide operator ->\n-438 void operator->();\n-439 protected:\n-_\b4_\b4_\b0 void _\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-441 {\n-442 if( git == gend )\n-443 return;\n-444 ++cornerIndexDune;\n-445 const int numCorners = git->subEntities(n);\n-446 if( cornerIndexDune == numCorners )\n-447 {\n-448 offset += numCorners;\n-449 cornerIndexDune = 0;\n-450\n-451 ++git;\n-452 while( (git != gend) && skipEntity( git->partitionType() ) )\n-453 ++git;\n-454 }\n-455 }\n-456 public:\n-_\b4_\b5_\b7 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridCellIterator & x,\n-458 const GridCellIterator & end,\n-459 const _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be & dm,\n-460 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vm) :\n-461 git(x), gend(end), datamode(dm), cornerIndexDune(0),\n-462 vertexmapper(vm), visited(vm.size(), false),\n-463 offset(0)\n-464 {\n-465 if (datamode == _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg && git != gend)\n-466 visited[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,cornerIndexDune,n)] = true;\n-467 }\n-_\b4_\b6_\b8 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-469 {\n-470 switch (datamode)\n-471 {\n-472 case _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n-473 while(visited[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,cornerIndexDune,n)])\n-474 {\n-475 _\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n-476 if (git == gend) return;\n-477 }\n-478 visited[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,cornerIndexDune,n)] = true;\n-479 break;\n-480 case _\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n-481 _\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n-482 break;\n-483 }\n-484 }\n-_\b4_\b8_\b5 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br & cit) const\n-486 {\n-487 return git == cit.git\n-488 && cornerIndexDune == cit.cornerIndexDune\n-489 && datamode == cit.datamode;\n-490 }\n-_\b4_\b9_\b1 EntityReference _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n-492 {\n-493 return *git;\n-494 }\n-_\b4_\b9_\b6 int _\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bd_\be_\bx () const\n-497 {\n-498 return cornerIndexDune;\n-499 }\n-_\b5_\b0_\b1 FieldVector _\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn () const\n-502 {\n-503 return referenceElement(git->type())\n-504 .position(cornerIndexDune,n);\n-505 }\n-506 };\n-507\n-_\b5_\b0_\b8 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn () const\n-509 {\n-510 return _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template begin< 0, VTK_Partition >(),\n-511 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n-512 datamode, *vertexmapper );\n-513 }\n-514\n-_\b5_\b1_\b5 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd () const\n-516 {\n-517 return _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n-518 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n-519 datamode, *vertexmapper );\n-520 }\n-521\n-523\n-_\b5_\b3_\b7 class _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br :\n-538 public ForwardIteratorFacade\n-539 {\n-540 GridCellIterator git;\n-541 GridCellIterator gend;\n-542 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be datamode;\n-543 // Index of the currently visited corner within the current element.\n-544 // NOTE: this is in VTK-numbering, in contrast to VertexIterator.\n-545 int cornerIndexVTK;\n-546 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vertexmapper;\n-547 // in conforming mode, for each vertex id (as obtained by vertexmapper)\n-548 // hold its number in the iteration order of VertexIterator (*not*\n-549 // CornerIterator)\n-550 const std::vector & number;\n-551 // holds the number of corners of all the elements we have seen so far,\n-552 // excluding the current element\n-553 int offset;\n-554\n-555 // hide operator ->\n-556 void operator->();\n-557 public:\n-_\b5_\b5_\b8 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridCellIterator & x,\n-559 const GridCellIterator & end,\n-560 const _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be & dm,\n-561 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vm,\n-562 const std::vector & num) :\n-563 git(x), gend(end), datamode(dm), cornerIndexVTK(0),\n-564 vertexmapper(vm),\n-565 number(num), offset(0) {}\n-_\b5_\b6_\b6 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n-567 {\n-568 if( git == gend )\n-569 return;\n-570 ++cornerIndexVTK;\n-571 const int numCorners = git->subEntities(n);\n-572 if( cornerIndexVTK == numCorners )\n-573 {\n-574 offset += numCorners;\n-575 cornerIndexVTK = 0;\n-576\n-577 ++git;\n-578 while( (git != gend) && skipEntity( git->partitionType() ) )\n-579 ++git;\n-580 }\n-581 }\n-_\b5_\b8_\b2 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br & cit) const\n-583 {\n-584 return git == cit.git\n-585 && cornerIndexVTK == cit.cornerIndexVTK\n-586 && datamode == cit.datamode;\n-587 }\n-_\b5_\b8_\b8 EntityReference _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n-589 {\n-590 return *git;\n-591 }\n-593\n-_\b5_\b9_\b7 int _\bi_\bd () const\n-598 {\n-599 switch (datamode)\n-600 {\n-601 case _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n-602 return\n-603 number[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br(*git,cornerIndexVTK),\n-604 n)];\n-605 case _\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n-606 return offset + _\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br(*git,cornerIndexVTK);\n-607 default :\n-608 DUNE_THROW(IOError,\"VTKWriter: unsupported DataMode\" << datamode);\n-609 }\n-610 }\n-611 };\n-612\n-_\b6_\b1_\b3 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn () const\n-614 {\n-615 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template begin< 0, VTK_Partition >(),\n-616 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n-617 datamode, *vertexmapper, number );\n-618 }\n-619\n-_\b6_\b2_\b0 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd () const\n-621 {\n-622 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n-623 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n-624 datamode, *vertexmapper, number );\n-625 }\n-626\n-627 public:\n-_\b6_\b3_\b6 explicit _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br ( const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView,\n-637 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be dm = _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg,\n-638 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-639 : _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_( gridView ),\n-640 datamode( dm ),\n-641 coordPrec (_\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn),\n-642 polyhedralCellsPresent_( _\bc_\bh_\be_\bc_\bk_\bF_\bo_\br_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\ba_\bl_\bC_\be_\bl_\bl_\bs() )\n-643 { }\n-644\n-_\b6_\b4_\b9 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const std::shared_ptr< const VTKFunction > & p)\n-650 {\n-651 _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(p));\n-652 }\n-653\n-673 template\n-_\b6_\b7_\b4 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo vtkFieldInfo)\n-675 {\n-676 _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(std::forward(f),vtkFieldInfo));\n-677 }\n-678\n-694 template\n-_\b6_\b9_\b5 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const Container& v, const std::string &name, int ncomps =\n-1,\n-696 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-697 {\n-698 typedef _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b,_\b _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b> Function;\n-699 for (int c=0; c1)\n-703 compName << \"[\" << c << \"]\";\n-704 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p = new Function(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_, v, compName.str(), ncomps, c,\n-prec);\n-705 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr< const VTKFunction >(p));\n-706 }\n-707 }\n-708\n-_\b7_\b1_\b3 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const std::shared_ptr< const VTKFunction > & p)\n-714 {\n-715 _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(p));\n-716 }\n-717\n-737 template\n-_\b7_\b3_\b8 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo vtkFieldInfo)\n-739 {\n-740 _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(std::forward(f),vtkFieldInfo));\n-741 }\n-742\n-743\n-759 template\n-_\b7_\b6_\b0 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const Container& v, const std::string &name, int\n-ncomps=1,\n-761 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-762 {\n-763 typedef _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b,_\b _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b> Function;\n-764 for (int c=0; c1)\n-768 compName << \"[\" << c << \"]\";\n-769 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p = new Function(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_, v, compName.str(), ncomps, c,\n-prec);\n-770 _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(std::shared_ptr< const VTKFunction >(p));\n-771 }\n-772 }\n-773\n-_\b7_\b7_\b5 void _\bc_\bl_\be_\ba_\br ()\n-776 {\n-777 _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.clear();\n-778 _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.clear();\n-779 }\n-780\n-_\b7_\b8_\b2 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const\n-783 { return coordPrec; }\n-784\n-_\b7_\b8_\b6 virtual _\b~_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br ()\n-787 {\n-788 this->_\bc_\bl_\be_\ba_\br();\n-789 }\n-790\n-_\b8_\b0_\b3 std::string _\bw_\br_\bi_\bt_\be ( const std::string &name,\n-804 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type = _\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi )\n-805 {\n-806 return _\bw_\br_\bi_\bt_\be( name, type, _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().rank(), _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().size()\n-);\n-807 }\n-808\n-_\b8_\b3_\b5 std::string _\bp_\bw_\br_\bi_\bt_\be ( const std::string & name, const std::string & path,\n-const std::string & extendpath,\n-836 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type = _\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi )\n-837 {\n-838 return _\bp_\bw_\br_\bi_\bt_\be( name, path, extendpath, type, _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().rank(),\n-_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().size() );\n-839 }\n-840\n-841 protected:\n-843\n-_\b8_\b5_\b5 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n-856 const std::string& path,\n-857 int commRank, int commSize) const\n-858 {\n-859 std::ostringstream s;\n-860 // write path first\n-861 if(path.size() > 0)\n-862 {\n-863 s << path;\n-864 if(path[path.size()-1] != '/')\n-865 s << '/';\n-866 }\n-867\n-868 std::string fileprefix;\n-869 // check if a path was already added to name\n-870 // and if yes find filename without path\n-871 auto pos = name.rfind('/');\n-872 if( pos != std::string::npos )\n-873 {\n-874 // extract filename without path\n-875 fileprefix = name.substr( pos+1 );\n-876 // extract the path and added it before\n-877 // the magic below is added\n-878 std::string newpath = name.substr(0, pos);\n-879 s << newpath;\n-880 if(newpath[name.size()-1] != '/')\n-881 s << '/';\n-882 }\n-883 else\n-884 {\n-885 // if no path was found just copy the name\n-886 fileprefix = name;\n-887 }\n-888\n-889 s << 's' << std::setw(4) << std::setfill('0') << commSize << '-';\n-890 const bool writeHeader = commRank < 0;\n-891 if( ! writeHeader )\n-892 {\n-893 s << 'p' << std::setw(4) << std::setfill('0') << commRank << '-';\n-894 }\n-895\n-896 s << fileprefix << \".\";\n-897 // write p for header files\n-898 if( writeHeader )\n-899 s << \"p\";\n-900 s << \"vt\";\n-901\n-902 if(_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn > 1)\n-903 s << \"u\";\n-904 else\n-905 s << \"p\";\n-906 return s.str();\n-907 }\n-908\n-910\n-_\b9_\b2_\b0 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(const std::string& name,\n-921 const std::string& path,\n-922 int commSize) const\n-923 {\n-924 return _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be( name, path, -1, commSize );\n-925 }\n-926\n-928\n-_\b9_\b4_\b0 std::string _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n-941 const std::string& path) const\n-942 {\n-943 static const std::string extension =\n-944 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1 ? \".vtp\" : \".vtu\";\n-945\n-946 return concatPaths(path, name+extension);\n-947 }\n-948\n-_\b9_\b6_\b5 std::string _\bw_\br_\bi_\bt_\be ( const std::string &name,\n-966 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type,\n-967 const int commRank,\n-968 const int commSize )\n-969 {\n-970 // in the parallel case, just use pwrite, it has all the necessary\n-971 // stuff, so we don't need to reimplement it here.\n-972 if(commSize > 1)\n-973 {\n-974 std::string filename = name;\n-975 std::string path = std::string(\"\");\n-976\n-977 // check if a path was already added to name\n-978 // and if yes find filename without path\n-979 auto pos = name.rfind('/');\n-980 if( pos != std::string::npos )\n-981 {\n-982 // extract filename without path\n-983 filename = name.substr( pos+1 );\n-984\n-985 // extract the path and added it before\n-986 // the magic below is added\n-987 path = name.substr(0, pos);\n-988 }\n-989\n-990 return _\bp_\bw_\br_\bi_\bt_\be(filename, path, \"\", type, commRank, commSize);\n-991 }\n-992\n-993 // make data mode visible to private functions\n-994 _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be = type;\n-995\n-996 // generate filename for process data\n-997 std::string pieceName = _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, \"\");\n-998\n-999 // write process data\n-1000 std::ofstream file;\n-1001 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n-1002 std::ios_base::eofbit);\n-1003 // check if file can be opened\n-1004 try {\n-1005 file.open( pieceName.c_str(), std::ios::binary );\n-1006 }\n-1007 catch(...) {\n-1008 std::cerr << \"Filename: \" << pieceName << \" could not be opened\" << std::\n-endl;\n-1009 throw;\n-1010 }\n-1011 if (! file.is_open())\n-1012 DUNE_THROW(IOError, \"Could not write to piece file \" << pieceName);\n-1013 writeDataFile( file );\n-1014 file.close();\n-1015\n-1016 return pieceName;\n-1017 }\n-1018\n-1020\n-_\b1_\b0_\b4_\b3 std::string _\bp_\bw_\br_\bi_\bt_\be(const std::string& name, const std::string& path,\n-1044 const std::string& extendpath,\n-1045 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be ot, const int commRank,\n-1046 const int commSize )\n-1047 {\n-1048 // make data mode visible to private functions\n-1049 _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be=ot;\n-1050\n-1051 // do some magic because paraview can only cope with relative paths to\n-piece files\n-1052 std::ofstream file;\n-1053 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n-1054 std::ios_base::eofbit);\n-1055 std::string piecepath = concatPaths(path, extendpath);\n-1056 std::string relpiecepath = relativePath(path, piecepath);\n-1057\n-1058 // write this processes .vtu/.vtp piece file\n-1059 std::string fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, piecepath, commRank,\n-1060 commSize);\n-1061 // check if file can be opened\n-1062 try {\n-1063 file.open(fullname.c_str(),std::ios::binary);\n-1064 }\n-1065 catch(...) {\n-1066 std::cerr << \"Filename: \" << fullname << \" could not be opened\" << std::\n-endl;\n-1067 throw;\n-1068 }\n-1069 if (! file.is_open())\n-1070 DUNE_THROW(IOError, \"Could not write to piecefile file \" << fullname);\n-1071 writeDataFile(file);\n-1072 file.close();\n-1073 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().barrier();\n-1074\n-1075 // if we are rank 0, write .pvtu/.pvtp parallel header\n-1076 fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(name, path, commSize);\n-1077 if( commRank ==0 )\n-1078 {\n-1079 file.open(fullname.c_str());\n-1080 if (! file.is_open())\n-1081 DUNE_THROW(IOError, \"Could not write to parallel file \" << fullname);\n-1082 writeParallelHeader(file,name,relpiecepath, commSize );\n-1083 file.close();\n-1084 }\n-1085 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().barrier();\n-1086 return fullname;\n-1087 }\n-1088\n-1089 private:\n-1091\n-1108 void writeParallelHeader(std::ostream& s, const std::string& piecename,\n-1109 const std::string& piecepath, const int commSize)\n-1110 {\n-1111 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType =\n-1112 (n == 1) ? _\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : VTK::unstructuredGrid;\n-1113\n-1114 _\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br writer(s, fileType);\n-1115\n-1116 writer.beginMain();\n-1117\n-1118 // PPointData\n-1119 {\n-1120 std::string scalars, vectors;\n-1121 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba);\n-1122 writer.beginPointData(scalars, vectors);\n-1123 }\n-1124 for (auto it = _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.begin(),\n-1125 end = _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.end();\n-1126 it != end;\n-1127 ++it)\n-1128 {\n-1129 unsigned writecomps = it->fieldInfo().size();\n-1130 if(writecomps == 2) writecomps = 3;\n-1131 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());\n-1132 }\n-1133 writer.endPointData();\n-1134\n-1135 // PCellData\n-1136 {\n-1137 std::string scalars, vectors;\n-1138 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba);\n-1139 writer.beginCellData(scalars, vectors);\n-1140 }\n-1141 for (auto it = _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.begin(),\n-1142 end = _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.end();\n-1143 it != end;\n-1144 ++it)\n-1145 {\n-1146 unsigned writecomps = it->fieldInfo().size();\n-1147 if(writecomps == 2) writecomps = 3;\n-1148 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());\n-1149 }\n-1150 writer.endCellData();\n-1151\n-1152 // PPoints\n-1153 writer.beginPoints();\n-1154 writer.addArray(\"Coordinates\", 3, coordPrec);\n-1155 writer.endPoints();\n-1156\n-1157 // Pieces\n-1158 for( int i = 0; i < commSize; ++i )\n-1159 {\n-1160 const std::string& fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(piecename,\n-1161 piecepath, i,\n-1162 commSize);\n-1163 writer.addPiece(fullname);\n-1164 }\n-1165\n-1166 writer.endMain();\n-1167 }\n-1168\n-1170 void writeDataFile (std::ostream& s)\n-1171 {\n-1172 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType =\n-1173 (n == 1) ? _\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : VTK::_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd;\n-1174\n-1175 VTK::VTUWriter writer(s, _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be, fileType);\n-1176\n-1177 // Grid characteristics\n-1178 vertexmapper = new VertexMapper( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_, _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt() );\n-1179 if (datamode == _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg)\n-1180 {\n-1181 number.resize(vertexmapper->_\bs_\bi_\bz_\be());\n-1182 for (std::vector::size_type i=0; imap(), this iteration must be\n-1244 // in the order of Dune's numbering.\n-1245 const int subEntities = it->subEntities(n);\n-1246 for (int i=0; i_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*it,i,n);\n-1252 if (number[alpha]<0)\n-1253 number[alpha] = nvertices_++;\n-1254 }\n-1255 else\n-1256 {\n-1257 nvertices_++;\n-1258 }\n-1259 }\n-1260 }\n-1261 }\n-1262\n-1263 template\n-_\b1_\b2_\b6_\b4 std::tuple _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(const T& data) const\n-1265 {\n-1266 std::string scalars = \"\";\n-1267 for (auto it = data.begin(),\n-1268 end = data.end();\n-1269 it != end;\n-1270 ++it)\n-1271 if (it->fieldInfo().type() == _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br)\n-1272 {\n-1273 scalars = it->name();\n-1274 break;\n-1275 }\n-1276\n-1277 std::string vectors = \"\";\n-1278 for (auto it = data.begin(),\n-1279 end = data.end();\n-1280 it != end;\n-1281 ++it)\n-1282 if (it->fieldInfo().type() == _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br)\n-1283 {\n-1284 vectors = it->name();\n-1285 break;\n-1286 }\n-1287 return std::make_tuple(scalars,vectors);\n-1288 }\n-1289\n-1290 template\n-_\b1_\b2_\b9_\b1 void _\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, const Data& data, const Iterator\n-begin, const Iterator end, int nentries)\n-1292 {\n-1293 for (auto it = data.begin(),\n-1294 iend = data.end();\n-1295 it != iend;\n-1296 ++it)\n-1297 {\n-1298 const auto& f = *it;\n-1299 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo fieldInfo = f.fieldInfo();\n-1300 std::size_t writecomps = fieldInfo._\bs_\bi_\bz_\be();\n-1301 switch (fieldInfo._\bt_\by_\bp_\be())\n-1302 {\n-1303 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br:\n-1304 break;\n-1305 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br:\n-1306 // vtk file format: a vector data always should have 3 comps (with\n-1307 // 3rd comp = 0 in 2D case)\n-1308 if (writecomps > 3)\n-1309 DUNE_THROW(IOError,\"Cannot write VTK vectors with more than 3 components\n-(components was \" << writecomps << \")\");\n-1310 writecomps = 3;\n-1311 break;\n-1312 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br:\n-1313 DUNE_THROW(NotImplemented,\"VTK output for tensors not implemented yet\");\n-1314 }\n-1315 std::shared_ptr p\n-1316 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(f.name(), writecomps, nentries,\n-fieldInfo._\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn()));\n-1317 if(!p->writeIsNoop())\n-1318 for (Iterator eit = begin; eit!=end; ++eit)\n-1319 {\n-1320 const Entity & e = *eit;\n-1321 f.bind(e);\n-1322 f.write(eit.position(),*p);\n-1323 f.unbind();\n-1324 // vtk file format: a vector data always should have 3 comps\n-1325 // (with 3rd comp = 0 in 2D case)\n-1326 for (std::size_t j=fieldInfo._\bs_\bi_\bz_\be(); j < writecomps; ++j)\n-1327 p->write(0.0);\n-1328 }\n-1329 }\n-1330 }\n-1331\n-_\b1_\b3_\b3_\b3 virtual void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-1334 {\n-1335 if(_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.size() == 0)\n-1336 return;\n-1337\n-1338 std::string scalars, vectors;\n-1339 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba);\n-1340\n-1341 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(scalars, vectors);\n-1342 _\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba(writer,_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba,_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn(),_\bc_\be_\bl_\bl_\bE_\bn_\bd(),_\bn_\bc_\be_\bl_\bl_\bs);\n-1343 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n-1344 }\n-1345\n-_\b1_\b3_\b4_\b7 virtual void _\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-1348 {\n-1349 if(_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.size() == 0)\n-1350 return;\n-1351\n-1352 std::string scalars, vectors;\n-1353 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba);\n-1354\n-1355 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(scalars, vectors);\n-1356 _\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba(writer,_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba,_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn(),_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd(),_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs);\n-1357 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n-1358 }\n-1359\n-_\b1_\b3_\b6_\b1 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-1362 {\n-1363 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n-1364\n-1365 std::shared_ptr p\n-1366 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"Coordinates\", 3, _\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs, coordPrec));\n-1367 if(!p->writeIsNoop()) {\n-1368 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br vEnd = _\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd();\n-1369 for (_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br vit=_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn(); vit!=vEnd; ++vit)\n-1370 {\n-1371 int dimw=w;\n-1372 for (int j=0; jwrite((*vit).geometry().corner(vit.localindex())[j]);\n-1374 for (int j=std::min(dimw,3); j<3; j++)\n-1375 p->write(0.0);\n-1376 }\n-1377 }\n-1378 // free the VTK::DataArrayWriter before touching the stream\n-1379 p.reset();\n-1380\n-1381 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n-1382 }\n-1383\n-_\b1_\b3_\b8_\b5 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-1386 {\n-1387 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs();\n-1388\n-1389 // connectivity\n-1390 {\n-1391 std::shared_ptr p1\n-1392 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"connectivity\", 1, _\bn_\bc_\bo_\br_\bn_\be_\br_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:\n-_\bi_\bn_\bt_\b3_\b2));\n-1393 if(!p1->writeIsNoop())\n-1394 for (_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=_\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn(); it!=_\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd(); ++it)\n-1395 p1->write(it.id());\n-1396 }\n-1397\n-1398 // offsets\n-1399 {\n-1400 std::shared_ptr p2\n-1401 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"offsets\", 1, _\bn_\bc_\be_\bl_\bl_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-1402 if(!p2->writeIsNoop()) {\n-1403 int offset = 0;\n-1404 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn(); it!=_\bc_\be_\bl_\bl_\bE_\bn_\bd(); ++it)\n-1405 {\n-1406 offset += it->subEntities(n);\n-1407 p2->write(offset);\n-1408 }\n-1409 }\n-1410 }\n-1411\n-1412 // types\n-1413 if (n>1)\n-1414 {\n-1415 {\n-1416 std::shared_ptr p3\n-1417 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"types\", 1, _\bn_\bc_\be_\bl_\bl_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8));\n-1418\n-1419 if(!p3->writeIsNoop())\n-1420 {\n-1421 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn(); it!=_\bc_\be_\bl_\bl_\bE_\bn_\bd(); ++it)\n-1422 {\n-1423 int vtktype = _\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(it->type());\n-1424 p3->write(vtktype);\n-1425 }\n-1426 }\n-1427 }\n-1428\n-1429\n-1430 // if polyhedron cells found also cell faces need to be written\n-1431 if( polyhedralCellsPresent_ )\n-1432 {\n-1433 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\ba_\bc_\be_\bs( writer );\n-1434 }\n-1435 }\n-1436\n-1437 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bs();\n-1438 }\n-1439\n-1440 protected:\n-_\b1_\b4_\b4_\b1 bool _\bc_\bh_\be_\bc_\bk_\bF_\bo_\br_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\ba_\bl_\bC_\be_\bl_\bl_\bs() const\n-1442 {\n-1443 // check if polyhedron cells are present\n-1444 for( const auto& geomType : _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().types( 0 ) )\n-1445 {\n-1446 if( _\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be( geomType ) == _\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn )\n-1447 {\n-1448 return true;\n-1449 }\n-1450 }\n-1451 return false;\n-1452 }\n-1453\n-_\b1_\b4_\b5_\b5 virtual void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\ba_\bc_\be_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-1456 {\n-1457 if( ! faceVertices_ )\n-1458 {\n-1459 faceVertices_.reset( new std::pair< std::vector, std::vector >\n-() );\n-1460 // fill face vertex structure\n-1461 _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn(), _\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd(), _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt(),\n-1462 faceVertices_->first, faceVertices_->second );\n-1463 }\n-1464\n-1465 std::vector< int >& faces = faceVertices_->first;\n-1466 std::vector< int >& faceOffsets = faceVertices_->second;\n-1467 assert( int(faceOffsets.size()) == _\bn_\bc_\be_\bl_\bl_\bs );\n-1468\n-1469 {\n-1470 std::shared_ptr p4\n-1471 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"faces\", 1, faces.size(), _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-1472 if(!p4->writeIsNoop())\n-1473 {\n-1474 for( const auto& face : faces )\n-1475 p4->write( face );\n-1476 }\n-1477 }\n-1478\n-1479 {\n-1480 std::shared_ptr p5\n-1481 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"faceoffsets\", 1, _\bn_\bc_\be_\bl_\bl_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-1482 if(!p5->writeIsNoop())\n-1483 {\n-1484 for( const auto& offset : faceOffsets )\n-1485 p5->write( offset );\n-1486\n-1487 // clear face vertex structure\n-1488 faceVertices_.reset();\n-1489 }\n-1490 }\n-1491 }\n-1492\n-1493 template \n-_\b1_\b4_\b9_\b4 inline void _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it,\n-1495 const _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br end,\n-1496 const IndexSet& indexSet,\n-1497 std::vector& faces,\n-1498 std::vector& faceOffsets )\n-1499 {\n-1500 if( n == 3 && it != end )\n-1501 {\n-1502 // clear output arrays\n-1503 faces.clear();\n-1504 faces.reserve( 15 * _\bn_\bc_\be_\bl_\bl_\bs );\n-1505 faceOffsets.clear();\n-1506 faceOffsets.reserve( _\bn_\bc_\be_\bl_\bl_\bs );\n-1507\n-1508 int offset = 0;\n-1509\n-1510 Cell element = *it;\n-1511 int elIndex = indexSet.index( element );\n-1512 std::vector< T > vertices;\n-1513 vertices.reserve( 30 );\n-1514 for( ; it != end; ++it )\n-1515 {\n-1516 const Cell& cell = *it ;\n-1517 const int cellIndex = indexSet.index( cell ) ;\n-1518 if( elIndex != cellIndex )\n-1519 {\n-1520 _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt( element, indexSet, vertices, offset, faces,\n-faceOffsets );\n-1521\n-1522 vertices.clear();\n-1523 element = cell ;\n-1524 elIndex = cellIndex ;\n-1525 }\n-1526 vertices.push_back( it._\bi_\bd() );\n-1527 }\n-1528\n-1529 // fill faces for last element\n-1530 _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt( element, indexSet, vertices, offset, faces,\n-faceOffsets );\n-1531 }\n-1532 }\n-1533\n-1534 template \n-_\b1_\b5_\b3_\b5 static void _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt( const Entity& element,\n-1536 const IndexSet& indexSet,\n-1537 const std::vector& vertices,\n-1538 T& offset,\n-1539 std::vector& faces,\n-1540 std::vector& faceOffsets )\n-1541 {\n-1542 const int dim = n;\n-1543\n-1544 std::map< T, T > vxMap;\n-1545\n-1546 // get number of local faces\n-1547 const int nVertices = element.subEntities( dim );\n-1548 for( int vx = 0; vx < nVertices; ++ vx )\n-1549 {\n-1550 const int vxIdx = indexSet.subIndex( element, vx, dim );\n-1551 vxMap[ vxIdx ] = vertices[ vx ];\n-1552 }\n-1553\n-1554 // get number of local faces\n-1555 const int nFaces = element.subEntities( 1 );\n-1556 // store number of faces for current element\n-1557 faces.push_back( nFaces );\n-1558 ++offset;\n-1559 // extract each face as a set of vertex indices\n-1560 for( int fce = 0; fce < nFaces; ++ fce )\n-1561 {\n-1562 // obtain face\n-1563 const auto face = element.template subEntity< 1 > ( fce );\n-1564\n-1565 // get all vertex indices from current face\n-1566 const int nVxFace = face.subEntities( dim );\n-1567 faces.push_back( nVxFace );\n-1568 ++offset ;\n-1569 for( int i=0; i _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba;\n-_\b1_\b5_\b8_\b5 std::list _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba;\n-1586\n-1587 // the grid\n-_\b1_\b5_\b8_\b8 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_;\n-1589\n-1590 // temporary grid information\n-_\b1_\b5_\b9_\b1 int _\bn_\bc_\be_\bl_\bl_\bs;\n-_\b1_\b5_\b9_\b2 int _\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs;\n-_\b1_\b5_\b9_\b3 int _\bn_\bc_\bo_\br_\bn_\be_\br_\bs;\n-1594 private:\n-1595 _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br* vertexmapper;\n-1596 // in conforming mode, for each vertex id (as obtained by vertexmapper)\n-1597 // hold its number in the iteration order (VertexIterator)\n-1598 std::vector number;\n-1599 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be datamode;\n-1600 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn coordPrec;\n-1601\n-1602 // true if polyhedral cells are present in the grid\n-1603 const bool polyhedralCellsPresent_;\n-1604\n-1605 // pointer holding face vertex connectivity if needed\n-1606 std::shared_ptr< std::pair< std::vector, std::vector > >\n-faceVertices_;\n-1607\n-1608 protected:\n-_\b1_\b6_\b0_\b9 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be;\n-1610 };\n-1611\n-1612}\n-1613\n-1614#endif\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+255 file << \"$EndElements\" << std::endl;\n+256 }\n+257\n+258 };\n+259\n+260} // namespace Dune\n+261\n+262#endif // DUNE_GRID_IO_FILE_GMSHWRITER_HH\n _\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n Mapper for multiple codim and multiple geometry types.\n-_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-Functions for VTK output.\n-_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-Data array writers for the VTKWriter.\n-_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n-PartitionIteratorType\n-Parameter to be used for the parallel level- and leaf iterators.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType\n-Attributes used in the generic overlap model.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-@ All_Partition\n-all entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n-@ InteriorBorder_Partition\n-interior and border entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ InteriorEntity\n-all interior entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n const IndexSet & indexSet() const\n obtain the index set\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd\n-Traits::Grid Grid\n-type of the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Traits::IndexSet IndexSet\n-type of the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bo_\bm_\bm\n-const Communication & comm() const\n-obtain communication object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:280\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int codim) const\n+obtain number of entities in a given codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:197\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n static constexpr int dimension\n The dimension of the grid.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-type used for coordinates in grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:145\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n static constexpr int dimensionworld\n The dimension of the world the grid lives in.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgVertexLayout()\n-layout for vertices (dim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n-_\bs_\bt_\bd\n-STL namespace.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgElementLayout()\n+layout for elements (codim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n-@ int32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n-@ uint8\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n-@ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n-OutputType\n-How the bulk data should be stored in the file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n-@ ascii\n-Output to the file is in ascii.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw\n-@ appendedraw\n-Output is to the file is appended raw binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n-@ appendedbase64\n-Output is to the file is appended base64 binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4\n-@ base64\n-Output to the file is inline base64 binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n-int renumber(const Dune::GeometryType &t, int i)\n-renumber VTK <-> Dune\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n-FileType\n-which type of VTK file to write\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n-@ polyData\n-for .vtp files (PolyData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n-@ unstructuredGrid\n-for .vtu files (UnstructuredGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be\n-DataMode\n-Whether to produce conforming or non-conforming output.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-@ conforming\n-Output conforming data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-@ nonconforming\n-Output non-conforming data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType geometryType(const Dune::GeometryType &t)\n-mapping from GeometryType to VTKGeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn\n-@ polyhedron\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+obtain geometric realization of the entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+Return the name of the reference element. The type can be used to access the\n+Dune::ReferenceElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:146\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n Grid view abstract base class.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A struct that collects all associated types of one implementation from the\n-Traits class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n Implementation class for a multiple codim and multiple geometry type mapper.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size() const\n-Return total number of entities in the entity set managed by the mapper.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:204\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i,\n-unsigned int codim) const\n-Map subentity of codim 0 entity to starting index in array for dof block.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-Descriptor struct for VTK fields.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:328\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-The number of components in the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:364\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision precision() const\n-The precision used for the output of the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-@ tensor\n-tensor field (always 3x3)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br\n-@ vector\n-vector-valued field (always 3D, will be padded if necessary)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br\n-@ scalar\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n-Type type() const\n-The type of the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:358\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\ba_\bm_\be\n-std::string name() const\n-The name of the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:352\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-base class for data array writers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(T data)\n-write one element of data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-A base class for grid functions with any return type and dimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Take a vector and interpret it as cell data for the VTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Take a vector and interpret it as point data for the VTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n-Writer for the ouput of grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-Base class to write pvd-files which contains a list of all collected vtk-files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-Writer for the ouput of grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const Container &v, const std::string &name, int ncomps=1,\n-VTK::Precision prec=VTK::Precision::float32)\n-Add a grid function (represented by container) that lives on the cells of the\n-grid to the visualizati...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:695\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd\n-CornerIterator cornerEnd() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:620\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bl_\be_\ba_\br\n-void clear()\n-clear list of registered functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:775\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-std::string write(const std::string &name, VTK::OutputType type=VTK::ascii)\n-write output (interface might change later)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:803\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn\n-VertexIterator vertexBegin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:508\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bT_\by_\bp_\be_\bS_\bt_\br_\bi_\bn_\bg\n-std::string getTypeString() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be\n-std::string getParallelHeaderName(const std::string &name, const std::string\n-&path, int commSize) const\n-return name of a parallel header file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:920\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const std::shared_ptr< const VTKFunction > &p)\n-Add a grid function that lives on the vertices of the grid to the\n-visualization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:713\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Dune::VTKFunction< GridView > VTKFunction\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bE_\bn_\bd\n-CellIterator cellEnd() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:402\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba\n-std::list< VTKLocalFunction > vertexdata\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1585\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn\n-CornerIterator cornerBegin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:613\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n-std::string getSerialPieceName(const std::string &name, const std::string\n-&path) const\n-return name of a serial piece file\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:940\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< const VTKFunction > &p)\n-Add a grid function that lives on the cells of the grid to the visualization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:649\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\bo_\br_\bm_\ba_\bt_\bS_\bt_\br_\bi_\bn_\bg\n-std::string getFormatString() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bF_\bo_\br_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\ba_\bl_\bC_\be_\bl_\bl_\bs\n-bool checkForPolyhedralCells() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1441\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(F &&f, VTK::FieldInfo vtkFieldInfo)\n-Add a function by sampling it on the grid vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:738\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-virtual void writeCellData(VTK::VTUWriter &writer)\n-write cell data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1333\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)\n-count the vertices, cells and corners\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1235\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n-std::string getParallelPieceName(const std::string &name, const std::string\n-&path, int commRank, int commSize) const\n-return name of a parallel piece file (or header name)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:855\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn\n-CellIterator cellBegin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:397\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be\n-VTK::OutputType outputtype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1609\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs\n-virtual void writeGridCells(VTK::VTUWriter &writer)\n-write the connectivity array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_\n-GridView gridView_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1588\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\ba_\bc_\be_\bs\n-virtual void writeCellFaces(VTK::VTUWriter &writer)\n-write the connectivity array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1455\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-void fillFaceVertices(CornerIterator it, const CornerIterator end, const\n-IndexSet &indexSet, std::vector< T > &faces, std::vector< T > &faceOffsets)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1494\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba\n-std::list< VTKLocalFunction > celldata\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1584\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-std::string write(const std::string &name, VTK::OutputType type, const int\n-commRank, const int commSize)\n-write output (interface might change later)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:965\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-VTK::Precision coordPrecision() const\n-get the precision with which coordinates are written out\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:782\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-std::list< VTKLocalFunction >::const_iterator FunctionIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:376\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs\n-std::tuple< std::string, std::string > getDataNames(const T &data) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-virtual void writeGridPoints(VTK::VTUWriter &writer)\n-write the positions of vertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1361\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-virtual void writeVertexData(VTK::VTUWriter &writer)\n-write vertex data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1347\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n-int nvertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1592\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(F &&f, VTK::FieldInfo vtkFieldInfo)\n-Add a function by sampling it on the element centers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:674\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const Container &v, const std::string &name, int ncomps=1,\n-VTK::Precision prec=VTK::Precision::float32)\n-Add a grid function (represented by container) that lives on the vertices of\n-the grid to the visualiz...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:760\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-virtual ~VTKWriter()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:786\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static void fillFacesForElement(const Entity &element, const IndexSet\n-&indexSet, const std::vector< T > &vertices, T &offset, std::vector< T >\n-&faces, std::vector< T > &faceOffsets)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1535\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba\n-void writeData(VTK::VTUWriter &writer, const Data &data, const Iterator begin,\n-const Iterator end, int nentries)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1291\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\be_\bl_\bl_\bs\n-int ncells\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1591\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd\n-VertexIterator vertexEnd() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:515\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-VTKWriter(const GridView &gridView, VTK::DataMode dm=VTK::conforming, VTK::\n-Precision coordPrecision=VTK::Precision::float32)\n-Construct a VTKWriter working on a specific GridView.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:636\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bw_\br_\bi_\bt_\be\n-std::string pwrite(const std::string &name, const std::string &path, const\n-std::string &extendpath, VTK::OutputType ot, const int commRank, const int\n-commSize)\n-write output; interface might change later\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1043\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bw_\br_\bi_\bt_\be\n-std::string pwrite(const std::string &name, const std::string &path, const\n-std::string &extendpath, VTK::OutputType type=VTK::ascii)\n-write output (interface might change later)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:835\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\br_\bn_\be_\br_\bs\n-int ncorners\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1593\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Type erasure wrapper for VTK data sets.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:156\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n-void unbind() const\n-Unbind the data set from the currently bound entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:360\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-VTKLocalFunction(F &&f, VTK::FieldInfo fieldInfo)\n-Construct a VTKLocalFunction for a dune-functions style LocalFunction.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:307\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n-std::string name() const\n-Returns the name of the data set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:342\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-VTK::FieldInfo _fieldInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bW_\br_\bi_\bt_\be_\br\n-VTK::DataArrayWriter Writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-const VTK::FieldInfo & fieldInfo() const\n-Returns the VTK::FieldInfo for the data set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:348\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bi_\bn_\bd\n-void bind(const Entity &e) const\n-Bind the data set to grid entity e.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:354\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-VTKLocalFunction(const std::shared_ptr< const VTKFunction > &vtkFunctionPtr)\n-Construct a VTKLocalFunction for a legacy VTKFunction.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:331\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b__\bf\n-std::shared_ptr< FunctionWrapperBase > _f\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:371\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(const Coordinate &pos, Writer &w) const\n-Write the value of the data set at local coordinate pos to the writer w.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:366\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-Base class for polymorphic container of underlying data set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n-=0\n-Evaluate data set at local position pos inside the current entity and write\n-result to w.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n-virtual ~FunctionWrapperBase()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n-virtual void unbind()=0\n-Unbind data set from current grid entity - mostly here for performance and\n-symmetry reasons.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bi_\bn_\bd\n-virtual void bind(const Entity &e)=0\n-Bind data set to grid entity - must be called before evaluating (i.e. calling\n-write())\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-Type erasure implementation for functions conforming to the dune-functions\n-LocalFunction interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-typename std::decay< F >::type Function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-FunctionWrapper(F_ &&f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:192\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n-Evaluate data set at local position pos inside the current entity and write\n-result to w.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:206\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n-virtual void unbind()\n-Unbind data set from current grid entity - mostly here for performance and\n-symmetry reasons.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:201\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bi_\bn_\bd\n-virtual void bind(const Entity &e)\n-Bind data set to grid entity - must be called before evaluating (i.e. calling\n-write())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-Type erasure implementation for C++ functions, i.e., functions that can be\n-evaluated in global coordi...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-GlobalFunctionWrapper(F_ &&f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n-virtual void unbind()\n-Unbind data set from current grid entity - mostly here for performance and\n-symmetry reasons.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-typename std::decay< F >::type Function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:237\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n-Evaluate data set at local position pos inside the current entity and write\n-result to w.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bi_\bn_\bd\n-virtual void bind(const Entity &e)\n-Bind data set to grid entity - must be called before evaluating (i.e. calling\n-write())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:245\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-Type erasure implementation for legacy VTKFunctions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:276\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n-virtual void unbind()\n-Unbind data set from current grid entity - mostly here for performance and\n-symmetry reasons.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:287\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n-VTKFunctionWrapper(const std::shared_ptr< const VTKFunction > &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:277\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n-Evaluate data set at local position pos inside the current entity and write\n-result to w.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bi_\bn_\bd\n-virtual void bind(const Entity &e)\n-Bind data set to grid entity - must be called before evaluating (i.e. calling\n-write())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:282\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over the grids elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-CellIterator(const GridCellIterator &x)\n-construct a CellIterator from the gridview's Iterator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:388\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn\n-const FieldVector< DT, n > position() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:391\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterate over the grid's vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:424\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-VertexIterator(const GridCellIterator &x, const GridCellIterator &end, const\n-VTK::DataMode &dm, const VertexMapper &vm)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:457\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void basicIncrement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:440\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:468\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-EntityReference dereference() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:491\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const VertexIterator &cit) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:485\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn\n-FieldVector< DT, n > position() const\n-position of vertex inside the entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:501\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bd_\be_\bx\n-int localindex() const\n-index of vertex within the entity, in Dune-numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:496\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterate over the elements' corners.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:539\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-void increment()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:566\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-CornerIterator(const GridCellIterator &x, const GridCellIterator &end, const\n-VTK::DataMode &dm, const VertexMapper &vm, const std::vector< int > &num)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:558\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bd\n-int id() const\n-Process-local consecutive zero-starting vertex id.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:597\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-EntityReference dereference() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:588\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const CornerIterator &cit) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:582\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n-unsigned nitems, Precision prec)\n-acquire a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void endCellData()\n-finish CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n-void beginCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void endPointData()\n-finish PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void beginCellData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void beginPointData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-void endPoints()\n-finish section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n-void endCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-void beginPoints()\n-start section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+Index index(const EntityType &e) const\n+Map entity to starting index in array for dof block.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br\n+Write Gmsh mesh file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br\n+GmshWriter(const GridView &gridView, int numDigits=6)\n+Constructor expecting GridView of Grid to be written.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+void setPrecision(int numDigits)\n+Set the number of digits to be used when writing the vertices. By default is 6.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(const std::string &fileName, const std::vector< int >\n+&physicalEntities=std::vector< int >(), const std::vector< int >\n+&physicalBoundaries=std::vector< int >()) const\n+Write given grid in Gmsh 2.0 compatible ASCII file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshwriter.hh:218\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00959.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00959.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: streams.hh File Reference\n+dune-grid: gnuplot.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,58 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    streams.hh File Reference
    \n+
    gnuplot.hh File Reference
    \n
    \n
    \n-
    #include <ostream>
    \n-#include <dune/grid/io/file/vtk/b64enc.hh>
    \n+\n+

    Provides gnuplot output for 1D Grids. \n+More...

    \n+
    #include <vector>
    \n+#include <string>
    \n+#include <iostream>
    \n+#include <fstream>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include "gnuplot/gnuplot.cc"
    \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::Base64Stream
     class to base64 encode a stream of data More...
    class  Dune::GnuplotWriter< GridView >
     Writer for 1D grids in gnuplot format. More...
     
    class  Dune::LeafGnuplotWriter< G >
     GnuplotWriter on the leaf grid. More...
     
    class  Dune::RawStream
     write out data in binary More...
    class  Dune::LevelGnuplotWriter< G >
     GnuplotWriter on a given level grid. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    Provides gnuplot output for 1D Grids.

    \n+
    Author
    Christian Engwer
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,38 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-streams.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\b6_\b4_\be_\bn_\bc_\b._\bh_\bh>\n+gnuplot.hh File Reference\n+Provides gnuplot output for 1D Grids. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include \"_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b/_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bc_\bc\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n-\u00a0 class to base64 encode a stream of data _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Writer for 1D grids in gnuplot format. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n-\u00a0 write out data in binary _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\b _\b>\n+\u00a0 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br on the leaf grid. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\b _\b>\n+\u00a0 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br on a given level grid. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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+Provides gnuplot output for 1D Grids.\n+ Author\n+ Christian Engwer\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00959_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00959_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: streams.hh Source File\n+dune-grid: gnuplot.hh Source File\n \n \n \n \n \n \n \n@@ -70,132 +70,141 @@\n \n \n \n \n \n \n \n
    \n-
    streams.hh
    \n+
    gnuplot.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_STREAMS_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_STREAMS_HH
    \n-
    8
    \n-
    9#include <ostream>
    \n-
    10
    \n-\n-
    12
    \n-
    13namespace Dune {
    \n-
    14
    \n-
    \n-\n-
    17 std::ostream& s;
    \n-
    18 b64chunk chunk;
    \n-
    19 char obuf[4];
    \n-
    20
    \n-
    21 public:
    \n+
    5#ifndef DUNE_IO_GNUPLOT_HH
    \n+
    6#define DUNE_IO_GNUPLOT_HH
    \n+
    7
    \n+
    13#include <vector>
    \n+
    14#include <string>
    \n+
    15#include <iostream>
    \n+
    16#include <fstream>
    \n+
    17
    \n+
    18#include <dune/common/fvector.hh>
    \n+
    19
    \n+\n+
    21
    \n+
    22namespace Dune {
    \n
    23
    \n-
    \n-
    27 Base64Stream(std::ostream& s_)
    \n-
    28 : s(s_)
    \n-
    29 {
    \n-
    30 // reset chunk
    \n-
    31 chunk.reset();
    \n-
    32 }
    \n-
    \n+
    29 template<class GridView>
    \n+
    \n+\n+
    31
    \n+
    32 typedef typename GridView::Grid::ctype ctype;
    \n
    33
    \n+
    34 constexpr static int dimworld = GridView::dimensionworld;
    \n
    35
    \n-
    41 template <class X>
    \n-
    \n-
    42 void write(X & data)
    \n-
    43 {
    \n-
    44 char* p = reinterpret_cast<char*>(&data);
    \n-
    45 for (size_t len = sizeof(X); len > 0; len--,p++)
    \n-
    46 {
    \n-
    47 chunk.put(*p);
    \n-
    48 if (chunk.size == 3)
    \n-
    49 {
    \n-
    50 chunk.write(obuf);
    \n-
    51 s.write(obuf,4);
    \n-
    52 }
    \n-
    53 }
    \n+
    36 public:
    \n+
    \n+
    37 GnuplotWriter (const GridView & gv) : _is(gv.indexSet()), _gv(gv)
    \n+
    38 {
    \n+
    39 static_assert(dimworld==1 || dimworld==2, "GnuPlot export only works for worlddim==1 and worlddim==2");
    \n+
    40 // allocate _data buffer
    \n+
    41 _data.resize(_is.size(0)*2);
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    48 template <class DataContainer>
    \n+
    \n+
    49 void addCellData(const DataContainer& data, const std::string & name)
    \n+
    50 {
    \n+
    51 if (dimworld!=1)
    \n+
    52 DUNE_THROW(IOError, "Gnuplot cell data writing is only supported for grids in a 1d world!");
    \n+
    53 addData(cellData, data, name);
    \n
    54 }
    \n
    \n
    55
    \n-
    57
    \n-
    \n-
    64 void flush()
    \n-
    65 {
    \n-
    66 if (chunk.size > 0)
    \n-
    67 {
    \n-
    68 chunk.write(obuf);
    \n-
    69 s.write(obuf,4);
    \n-
    70 }
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    74
    \n-
    \n-\n-
    78 flush();
    \n-
    79 }
    \n-
    \n-
    80 };
    \n-
    \n-
    81
    \n-
    \n-\n-
    84 {
    \n-
    85 public:
    \n-
    \n-
    87 inline RawStream (std::ostream& theStream)
    \n-
    88 : s(theStream)
    \n-
    89 {}
    \n-
    \n-
    90
    \n-
    92 template<class T>
    \n-
    \n-
    93 void write (T data)
    \n-
    94 {
    \n-
    95 char* p = reinterpret_cast<char*>(&data);
    \n-
    96 s.write(p,sizeof(T));
    \n-
    97 }
    \n-
    \n-
    98 private:
    \n-
    99 std::ostream& s;
    \n-
    100 };
    \n-
    \n-
    101
    \n-
    102} // namespace Dune
    \n-
    103
    \n-
    104#endif // DUNE_GRID_IO_FILE_VTK_STREAMS_HH
    \n-
    Simple base64 encode.
    \n+
    60 template <class DataContainer>
    \n+
    \n+
    61 void addVertexData(const DataContainer& data, const std::string & name)
    \n+
    62 {
    \n+
    63 addData(vertexData, data, name);
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    69 void write(const std::string& filename) const;
    \n+
    70
    \n+
    71 private:
    \n+
    72 enum DataType { vertexData, cellData };
    \n+
    73 const typename GridView::IndexSet & _is;
    \n+
    74 const GridView _gv;
    \n+
    75 std::vector< std::vector< float > > _data;
    \n+
    76 std::vector< std::string > _names;
    \n+
    77
    \n+
    78 template <class DataContainer>
    \n+
    79 void addData(DataType t, const DataContainer& data, const std::string & name);
    \n+
    80
    \n+
    81 void writeRow(std::ostream & file,
    \n+
    82 const FieldVector<ctype, dimworld>& position,
    \n+
    83 const std::vector<float> & data) const;
    \n+
    84 };
    \n+
    \n+
    85
    \n+
    89 template<class G>
    \n+
    \n+
    90 class LeafGnuplotWriter : public GnuplotWriter<typename G::LeafGridView>
    \n+
    91 {
    \n+
    92 public:
    \n+
    \n+
    94 LeafGnuplotWriter (const G& grid)
    \n+
    95 : GnuplotWriter<typename G::LeafGridView>(grid.leafGridView())
    \n+
    96 {}
    \n+
    \n+
    97 };
    \n+
    \n+
    98
    \n+
    102 template<class G>
    \n+
    \n+
    103 class LevelGnuplotWriter : public GnuplotWriter<typename G::LevelGridView>
    \n+
    104 {
    \n+
    105 public:
    \n+
    \n+
    107 LevelGnuplotWriter (const G& grid, int level)
    \n+
    108 : GnuplotWriter<typename G::LevelGridView>(grid.levelGridView(level))
    \n+
    109 {}
    \n+
    \n+
    110 };
    \n+
    \n+
    111
    \n+
    112}
    \n+
    113
    \n+
    114#include "gnuplot/gnuplot.cc"
    \n+
    115
    \n+
    116#endif // DUNE_IO_GNUPLOT_HH
    \n+
    Implementation of gnuplot output for 1D and 2D grids.
    \n+
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n+
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n+
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    struct representing the three byte text as well as the four 6 bit chunks
    Definition b64enc.hh:34
    \n-
    void write(char *t)
    Definition b64enc.hh:60
    \n-
    size_type size
    Definition b64enc.hh:36
    \n-
    void put(const char c)
    Definition b64enc.hh:54
    \n-
    void reset()
    Definition b64enc.hh:39
    \n-
    class to base64 encode a stream of data
    Definition streams.hh:16
    \n-
    void write(X &data)
    encode a data item
    Definition streams.hh:42
    \n-
    void flush()
    flush the current unwritten data to the stream.
    Definition streams.hh:64
    \n-
    Base64Stream(std::ostream &s_)
    Construct a Base64Stream.
    Definition streams.hh:27
    \n-
    ~Base64Stream()
    destroy the object
    Definition streams.hh:77
    \n-
    write out data in binary
    Definition streams.hh:84
    \n-
    void write(T data)
    write data to stream
    Definition streams.hh:93
    \n-
    RawStream(std::ostream &theStream)
    make a new stream
    Definition streams.hh:87
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    Writer for 1D grids in gnuplot format.
    Definition gnuplot.hh:30
    \n+
    void addVertexData(const DataContainer &data, const std::string &name)
    Add vertex data.
    Definition gnuplot.hh:61
    \n+
    void addCellData(const DataContainer &data, const std::string &name)
    Add cell data.
    Definition gnuplot.hh:49
    \n+
    void write(const std::string &filename) const
    Write Gnuplot file to disk.
    Definition gnuplot.cc:19
    \n+
    GnuplotWriter(const GridView &gv)
    Definition gnuplot.hh:37
    \n+
    GnuplotWriter on the leaf grid.
    Definition gnuplot.hh:91
    \n+
    LeafGnuplotWriter(const G &grid)
    Construct a Gnuplot writer for the leaf level of a given grid.
    Definition gnuplot.hh:94
    \n+
    GnuplotWriter on a given level grid.
    Definition gnuplot.hh:104
    \n+
    LevelGnuplotWriter(const G &grid, int level)
    Construct a Gnuplot writer for a certain level of a given grid.
    Definition gnuplot.hh:107
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,143 +2,162 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-streams.hh\n+gnuplot.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_STREAMS_HH\n-7#define DUNE_GRID_IO_FILE_VTK_STREAMS_HH\n-8\n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\b6_\b4_\be_\bn_\bc_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be {\n-14\n-_\b1_\b6 class _\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm {\n-17 std::ostream& s;\n-18 _\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk chunk;\n-19 char obuf[4];\n-20\n-21 public:\n+5#ifndef DUNE_IO_GNUPLOT_HH\n+6#define DUNE_IO_GNUPLOT_HH\n+7\n+13#include \n+14#include \n+15#include \n+16#include \n+17\n+18#include \n+19\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+21\n+22namespace _\bD_\bu_\bn_\be {\n 23\n-_\b2_\b7 _\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm(std::ostream& s_)\n-28 : s(s_)\n-29 {\n-30 // reset chunk\n-31 chunk._\br_\be_\bs_\be_\bt();\n-32 }\n+29 template\n+_\b3_\b0 class _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br {\n+31\n+32 typedef typename GridView::Grid::ctype ctype;\n 33\n+34 constexpr static int dimworld = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n 35\n-41 template \n-_\b4_\b2 void _\bw_\br_\bi_\bt_\be(X & data)\n-43 {\n-44 char* p = reinterpret_cast(&data);\n-45 for (size_t len = sizeof(X); len > 0; len--,p++)\n-46 {\n-47 chunk._\bp_\bu_\bt(*p);\n-48 if (chunk._\bs_\bi_\bz_\be == 3)\n-49 {\n-50 chunk._\bw_\br_\bi_\bt_\be(obuf);\n-51 s.write(obuf,4);\n-52 }\n-53 }\n+36 public:\n+_\b3_\b7 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br (const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw & gv) : _is(gv.indexSet()), _gv(gv)\n+38 {\n+39 static_assert(dimworld==1 || dimworld==2, \"GnuPlot export only works for\n+worlddim==1 and worlddim==2\");\n+40 // allocate _data buffer\n+41 _data.resize(_is.size(0)*2);\n+42 }\n+43\n+48 template \n+_\b4_\b9 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const DataContainer& data, const std::string & name)\n+50 {\n+51 if (dimworld!=1)\n+52 DUNE_THROW(IOError, \"Gnuplot cell data writing is only supported for grids\n+in a 1d world!\");\n+53 addData(cellData, data, name);\n 54 }\n 55\n-57\n-_\b6_\b4 void _\bf_\bl_\bu_\bs_\bh()\n-65 {\n-66 if (chunk._\bs_\bi_\bz_\be > 0)\n-67 {\n-68 chunk._\bw_\br_\bi_\bt_\be(obuf);\n-69 s.write(obuf,4);\n-70 }\n-71 }\n-72\n-74\n-_\b7_\b7 _\b~_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm() {\n-78 _\bf_\bl_\bu_\bs_\bh();\n-79 }\n-80 };\n-81\n-_\b8_\b3 class _\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n-84 {\n-85 public:\n-_\b8_\b7 inline _\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm (std::ostream& theStream)\n-88 : s(theStream)\n-89 {}\n-90\n-92 template\n-_\b9_\b3 void _\bw_\br_\bi_\bt_\be (T data)\n-94 {\n-95 char* p = reinterpret_cast(&data);\n-96 s.write(p,sizeof(T));\n-97 }\n-98 private:\n-99 std::ostream& s;\n-100 };\n-101\n-102} // namespace Dune\n-103\n-104#endif // DUNE_GRID_IO_FILE_VTK_STREAMS_HH\n-_\bb_\b6_\b4_\be_\bn_\bc_\b._\bh_\bh\n-Simple base64 encode.\n+60 template \n+_\b6_\b1 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(const DataContainer& data, const std::string & name)\n+62 {\n+63 addData(vertexData, data, name);\n+64 }\n+65\n+69 void _\bw_\br_\bi_\bt_\be(const std::string& filename) const;\n+70\n+71 private:\n+72 enum DataType { vertexData, cellData };\n+73 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt & _is;\n+74 const GridView _gv;\n+75 std::vector< std::vector< float > > _data;\n+76 std::vector< std::string > _names;\n+77\n+78 template \n+79 void addData(DataType t, const DataContainer& data, const std::string &\n+name);\n+80\n+81 void writeRow(std::ostream & file,\n+82 const FieldVector& position,\n+83 const std::vector & data) const;\n+84 };\n+85\n+89 template\n+_\b9_\b0 class _\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br : public _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+91 {\n+92 public:\n+_\b9_\b4 _\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br (const G& grid)\n+95 : _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br(grid._\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw())\n+96 {}\n+97 };\n+98\n+102 template\n+_\b1_\b0_\b3 class _\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br : public _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+104 {\n+105 public:\n+_\b1_\b0_\b7 _\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br (const G& grid, int level)\n+108 : _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br(grid._\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level))\n+109 {}\n+110 };\n+111\n+112}\n+113\n+114#include \"_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b/_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bc_\bc\"\n+115\n+116#endif // DUNE_IO_GNUPLOT_HH\n+_\bg_\bn_\bu_\bp_\bl_\bo_\bt_\b._\bc_\bc\n+Implementation of gnuplot output for 1D and 2D grids.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Traits::IndexSet IndexSet\n+type of the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n+dim, dimworld, ct, GridFamily > &grid)\n+leaf grid view for the given grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:819\n+_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid<\n+dim, dimworld, ct, GridFamily > &grid, int level)\n+level grid view for the given grid and level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:802\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static constexpr int dimensionworld\n+The dimension of the world the grid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n-struct representing the three byte text as well as the four 6 bit chunks\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(char *t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bp_\bu_\bt\n-void put(const char c)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n-class to base64 encode a stream of data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(X &data)\n-encode a data item\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bf_\bl_\bu_\bs_\bh\n-void flush()\n-flush the current unwritten data to the stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n-Base64Stream(std::ostream &s_)\n-Construct a Base64Stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\b~_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n-~Base64Stream()\n-destroy the object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n-write out data in binary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(T data)\n-write data to stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n-RawStream(std::ostream &theStream)\n-make a new stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid view abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+Writer for 1D grids in gnuplot format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const DataContainer &data, const std::string &name)\n+Add vertex data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const DataContainer &data, const std::string &name)\n+Add cell data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(const std::string &filename) const\n+Write Gnuplot file to disk.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.cc:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+GnuplotWriter(const GridView &gv)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+GnuplotWriter on the leaf grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bL_\be_\ba_\bf_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+LeafGnuplotWriter(const G &grid)\n+Construct a Gnuplot writer for the leaf level of a given grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+GnuplotWriter on a given level grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+LevelGnuplotWriter(const G &grid, int level)\n+Construct a Gnuplot writer for a certain level of a given grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:107\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00962.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00962.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: b64enc.hh File Reference\n+dune-grid: printgrid.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,45 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    b64enc.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    printgrid.hh File Reference
    \n \n
    \n-\n-

    Simple base64 encode. \n-More...

    \n-
    #include <assert.h>
    \n+
    #include <fstream>
    \n+#include <string>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/grid/common/mcmgmapper.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n-Classes

    struct  Dune::b64chunk
     struct representing the three byte text as well as the four 6 bit chunks More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n

    \n-Variables

    const char Dune::base64table []
     endoing table
     

    \n+Functions

    template<typename GridType >
    void Dune::printGrid (const GridType &grid, const Dune::MPIHelper &helper, std::string output_file="printgrid", int size=2000, bool execute_plot=true, bool png=true, bool local_corner_indices=true, bool local_intersection_indices=true, bool outer_normals=true)
     Print a grid as a gnuplot for testing and development.
     
    \n-

    Detailed Description

    \n-

    Simple base64 encode.

    \n-
    Author
    Christian Engwer
    \n-

    We implement the base64 encoding (c.f. RFC 4648 https://tools.ietf.org/html/rfc4648).

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,34 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-b64enc.hh File Reference\n-Simple base64 encode. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+printgrid.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\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:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n-\u00a0 struct representing the three byte text as well as the four 6 bit\n- chunks _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n-const char\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be []\n-\u00a0 endoing table\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\bG_\br_\bi_\bd (const GridType &grid, const Dune::MPIHelper &helper,\n+ std::string output_file=\"printgrid\", int size=2000, bool\n+ execute_plot=true, bool png=true, bool local_corner_indices=true, bool\n+ local_intersection_indices=true, bool outer_normals=true)\n+\u00a0 Print a grid as a gnuplot for testing and development.\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-Simple base64 encode.\n- Author\n- Christian Engwer\n-We implement the base64 encoding (c.f. RFC 4648 _\bh_\bt_\bt_\bp_\bs_\b:_\b/_\b/_\bt_\bo_\bo_\bl_\bs_\b._\bi_\be_\bt_\bf_\b._\bo_\br_\bg_\b/_\bh_\bt_\bm_\bl_\b/\n-_\br_\bf_\bc_\b4_\b6_\b4_\b8).\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00962_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00962_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: b64enc.hh Source File\n+dune-grid: printgrid.hh Source File\n \n \n \n \n \n \n \n@@ -70,108 +70,226 @@\n \n \n \n \n \n \n \n
    \n-
    b64enc.hh
    \n+
    printgrid.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_B64ENC_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_B64ENC_HH
    \n-
    8
    \n-
    9#include <assert.h>
    \n+
    5#ifndef DUNE_PRINTGRID_HH
    \n+
    6#define DUNE_PRINTGRID_HH
    \n+
    7
    \n+
    8#include <fstream>
    \n+
    9#include <string>
    \n
    10
    \n-
    11namespace Dune {
    \n-
    12
    \n-
    \n-
    23 const char base64table[] =
    \n-
    24 {
    \n-
    25 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
    \n-
    26 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
    \n-
    27 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
    \n-
    28 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    \n-
    29 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
    \n-
    30 };
    \n-
    \n-
    31
    \n-
    \n-
    33 struct b64chunk
    \n-
    34 {
    \n-
    35 using size_type = unsigned char;
    \n-\n-
    37 char txt[3];
    \n-
    38
    \n-
    \n-
    39 void reset()
    \n-
    40 {
    \n-
    41 size = 0;
    \n-
    42 txt[0] = txt[1] = txt[2] = 0;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    45 int read(const char* t, size_type s)
    \n-
    46 {
    \n-
    47 size = s>=3 ? 3 : s;
    \n-
    48 txt[0] = s>0 ? t[0] : 0;
    \n-
    49 txt[1] = s>1 ? t[1] : 0;
    \n-
    50 txt[2] = s>2 ? t[2] : 0;
    \n-
    51 return size;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    54 void put(const char c)
    \n-
    55 {
    \n-
    56 assert (size < 3);
    \n-
    57 txt[size++] = c;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    60 void write(char* t)
    \n-
    61 {
    \n-
    62 const unsigned A = (txt[0] & 0b1111'1100) >> 2;
    \n-
    63 const unsigned B = (txt[0] & 0b0000'0011) << 4 | (txt[1] & 0b1111'0000) >> 4;
    \n-
    64 const unsigned C = (txt[1] & 0b0000'1111) << 2 | (txt[2] & 0b1100'0000) >> 6;
    \n-
    65 const unsigned D = txt[2] & 0b0011'1111;
    \n-
    66 t[0] = size>0 ? base64table[A] : '=';
    \n-
    67 t[1] = size>0 ? base64table[B] : '=';
    \n-
    68 t[2] = size>1 ? base64table[C] : '=';
    \n-
    69 t[3] = size>2 ? base64table[D] : '=';
    \n-
    70 size = 0;
    \n-
    71 }
    \n-
    \n-
    72 };
    \n-
    \n-
    73
    \n-
    76} // namespace Dune
    \n+
    11#include <dune/common/exceptions.hh>
    \n+
    12#include <dune/common/parallel/mpihelper.hh>
    \n+\n+
    14
    \n+
    15namespace Dune {
    \n+
    16
    \n+
    17 namespace {
    \n+
    18
    \n+
    19 template<int dim>
    \n+
    20 struct ElementDataLayout
    \n+
    21 {
    \n+
    22 bool contains (Dune::GeometryType gt)
    \n+
    23 {
    \n+
    24 return gt.dim()==dim;
    \n+
    25 }
    \n+
    26 };
    \n+
    27
    \n+
    28 template<int dim>
    \n+
    29 struct NodeDataLayout
    \n+
    30 {
    \n+
    31 bool contains (Dune::GeometryType gt)
    \n+
    32 {
    \n+
    33 return gt.dim()==0;
    \n+
    34 }
    \n+
    35 };
    \n+
    36
    \n+
    37 // Move a point closer to basegeo's center by factor scale (used for drawing relative to the element)
    \n+
    38 template <typename B, typename C>
    \n+
    39 C centrify (const B& basegeo, const C& coords, const double scale) {
    \n+
    40 C ret = coords;
    \n+
    41 ret -= basegeo.center();
    \n+
    42 ret *= scale;
    \n+
    43 ret += basegeo.center();
    \n+
    44 return ret;
    \n+
    45 }
    \n+
    46
    \n+
    47 // Add a line to the plotfile from p1 to p2
    \n+
    48 template <typename Coord>
    \n+
    49 void draw_line (std::ofstream &plotfile, const Coord &p1, const Coord &p2, std::string options) {
    \n+
    50 plotfile << "set object poly from ";
    \n+
    51 plotfile << p1[0] << "," << p1[1] << " to ";
    \n+
    52 plotfile << p2[0] << "," << p2[1] << " to ";
    \n+
    53 plotfile << p1[0] << "," << p1[1];
    \n+
    54 plotfile << " " << options << std::endl;
    \n+
    55 }
    \n+
    56
    \n+
    57 }
    \n+
    58
    \n+
    72 template <typename GridType>
    \n+
    \n+
    73 void printGrid (const GridType& grid, const Dune::MPIHelper& helper, std::string output_file = "printgrid",
    \n+
    74 int size = 2000, bool execute_plot = true, bool png = true, bool local_corner_indices = true,
    \n+
    75 bool local_intersection_indices = true, bool outer_normals = true)
    \n+
    76 {
    \n
    77
    \n-
    78#endif // DUNE_GRID_IO_FILE_VTK_B64ENC_HH
    \n+
    78 // Create output file
    \n+
    79 output_file = output_file + "_" + std::to_string(helper.rank());
    \n+
    80 std::string plot_file_name = output_file + ".gnuplot";
    \n+
    81 std::ofstream plotfile (plot_file_name, std::ios::out | std::ios::trunc);
    \n+
    82 if (!plotfile.is_open()) {
    \n+
    83 DUNE_THROW(Dune::IOError, "Could not create plot file " << output_file << "!");
    \n+
    84 return;
    \n+
    85 }
    \n+
    86
    \n+
    87 // Basic plot settings
    \n+
    88 plotfile << "set size ratio -1" << std::endl;
    \n+
    89 if (png) {
    \n+
    90 plotfile << "set terminal png size " << size << "," << size << std::endl;
    \n+
    91 plotfile << "set output '" << output_file << ".png'" << std::endl;
    \n+
    92 } else {
    \n+
    93 plotfile << "set terminal svg size " << size << "," << size << " enhanced background rgb 'white'" << std::endl;
    \n+
    94 plotfile << "set output '" << output_file << ".svg'" << std::endl;
    \n+
    95 }
    \n+
    96
    \n+
    97 // Get GridView
    \n+
    98 typedef typename GridType::LeafGridView GV;
    \n+
    99 const GV gv = grid.leafGridView();
    \n+
    100
    \n+
    101 // Create mappers used to retrieve indices
    \n+\n+
    103 const Mapper elementmapper(gv, mcmgElementLayout());
    \n+
    104 const Mapper nodemapper(gv, mcmgVertexLayout());
    \n+
    105
    \n+
    106 // Create iterators
    \n+
    107 typedef typename GV::template Codim<0 >::Iterator LeafIterator;
    \n+
    108 typedef typename GV::IntersectionIterator IntersectionIterator;
    \n+
    109
    \n+
    110 LeafIterator it = gv.template begin<0>();
    \n+
    111
    \n+
    112 // Will contain min/max coordinates. Needed for scaling of the plot
    \n+
    113 Dune::FieldVector<typename GridType::ctype,2> max_coord (it->geometry().center()), min_coord (max_coord);
    \n+
    114
    \n+
    115 // Iterate over elements
    \n+
    116 for (; it != gv.template end<0>(); ++it) {
    \n+
    117
    \n+
    118 const auto& entity = *it;
    \n+
    119 auto geo = entity.geometry();
    \n+
    120
    \n+
    121 // Plot element index
    \n+
    122 int element_id = elementmapper.index(entity);
    \n+
    123 plotfile << "set label at " << geo.center()[0] << "," << geo.center()[1] << " '"
    \n+
    124 << element_id << "' center" << std::endl;
    \n+
    125
    \n+
    126 for (int i = 0; i < geo.corners(); ++i) {
    \n+
    127 // Plot corner indices
    \n+
    128 const int globalNodeNumber1 = nodemapper.subIndex(entity, i, 2);
    \n+
    129 auto labelpos = centrify (geo, geo.corner(i), 0.7);
    \n+
    130 plotfile << "set label at " << labelpos[0] << "," << labelpos[1] << " '" << globalNodeNumber1;
    \n+
    131 if (local_corner_indices)
    \n+
    132 plotfile << "(" << i << ")";
    \n+
    133 plotfile << "' center" << std::endl;
    \n+
    134
    \n+
    135 // Adapt min / max coordinates
    \n+
    136 for (int dim = 0; dim < 2; ++dim) {
    \n+
    137 if (geo.corner(i)[dim] < min_coord[dim])
    \n+
    138 min_coord[dim] = geo.corner(i)[dim];
    \n+
    139 else if (geo.corner(i)[dim] > max_coord[dim])
    \n+
    140 max_coord[dim] = geo.corner(i)[dim];
    \n+
    141 }
    \n+
    142 }
    \n+
    143
    \n+
    144 // Iterate over intersections
    \n+
    145 for (IntersectionIterator is = gv.ibegin(entity); is != gv.iend(entity); ++is) {
    \n+
    146
    \n+
    147 const auto& intersection = *is;
    \n+
    148 auto igeo = intersection.geometry();
    \n+
    149
    \n+
    150 // Draw intersection line
    \n+
    151 draw_line (plotfile, igeo.corner(0), igeo.corner(1), "fs empty border 1");
    \n+
    152
    \n+
    153 // Plot local intersection index
    \n+
    154 if (local_intersection_indices) {
    \n+
    155 auto label_pos = centrify (geo, igeo.center(), 0.8);
    \n+
    156 plotfile << "set label at " << label_pos[0] << "," << label_pos[1]
    \n+
    157 << " '" << intersection.indexInInside() << "' center" << std::endl;
    \n+
    158 }
    \n+
    159
    \n+
    160 // Plot outer normal
    \n+
    161 if (outer_normals) {
    \n+
    162 auto intersection_pos = igeo.center();
    \n+
    163 auto normal = intersection.centerUnitOuterNormal();
    \n+
    164 normal *= 0.15 * igeo.volume();
    \n+
    165 auto normal_end = intersection_pos + normal;
    \n+
    166 plotfile << "set arrow from " << intersection_pos[0] << "," << intersection_pos[1]
    \n+
    167 << " to " << normal_end[0] << "," << normal_end[1] << " lt rgb \\"gray\\"" << std::endl;
    \n+
    168 }
    \n+
    169
    \n+
    170 // Get corners for inner intersection representation
    \n+
    171 auto inner_corner1 = centrify (geo, igeo.corner(0), 0.5);
    \n+
    172 auto inner_corner2 = centrify (geo, igeo.corner(1), 0.5);
    \n+
    173
    \n+
    174 // Thick line in case of boundary()
    \n+
    175 if (intersection.boundary())
    \n+
    176 draw_line (plotfile, inner_corner1, inner_corner2, "fs empty border 3 lw 4");
    \n+
    177
    \n+
    178 // Thin line with color according to neighbor()
    \n+
    179 if (intersection.neighbor())
    \n+
    180 draw_line (plotfile, inner_corner1, inner_corner2, "fs empty border 2");
    \n+
    181 else
    \n+
    182 draw_line (plotfile, inner_corner1, inner_corner2, "fs empty border 1");
    \n+
    183 }
    \n+
    184
    \n+
    185 }
    \n+
    186
    \n+
    187 // Finish plot, pass extend of the grid
    \n+
    188 Dune::FieldVector<typename GridType::ctype,2> extend (max_coord - min_coord);
    \n+
    189
    \n+
    190 extend *= 0.2;
    \n+
    191 min_coord -= extend;
    \n+
    192 max_coord += extend;
    \n+
    193 plotfile << "plot [" << min_coord[0] << ":" << max_coord[0] << "] [" << min_coord[1]
    \n+
    194 << ":" << max_coord[1] << "] NaN notitle" << std::endl;
    \n+
    195 plotfile.close();
    \n+
    196
    \n+
    197 if (execute_plot) {
    \n+
    198 std::string cmd = "gnuplot -p '" + plot_file_name + "'";
    \n+
    199 if (std::system (cmd.c_str()) != 0)
    \n+
    200 DUNE_THROW(Dune::Exception,"Error running GNUPlot: " << cmd);
    \n+
    201 }
    \n+
    202 }
    \n+
    \n+
    203
    \n+
    204}
    \n+
    205
    \n+
    206#endif // #ifndef DUNE_PRINTGRID_HH
    \n+
    Mapper for multiple codim and multiple geometry types.
    \n+
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n+
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    const char base64table[]
    endoing table
    Definition b64enc.hh:23
    \n-
    struct representing the three byte text as well as the four 6 bit chunks
    Definition b64enc.hh:34
    \n-
    char txt[3]
    Definition b64enc.hh:37
    \n-
    unsigned char size_type
    Definition b64enc.hh:35
    \n-
    void write(char *t)
    Definition b64enc.hh:60
    \n-
    size_type size
    Definition b64enc.hh:36
    \n-
    int read(const char *t, size_type s)
    Definition b64enc.hh:45
    \n-
    void put(const char c)
    Definition b64enc.hh:54
    \n-
    void reset()
    Definition b64enc.hh:39
    \n+
    void printGrid(const GridType &grid, const Dune::MPIHelper &helper, std::string output_file="printgrid", int size=2000, bool execute_plot=true, bool png=true, bool local_corner_indices=true, bool local_intersection_indices=true, bool outer_normals=true)
    Print a grid as a gnuplot for testing and development.
    Definition printgrid.hh:73
    \n+
    Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
    Definition common/intersectioniterator.hh:83
    \n+
    Mapper interface.
    Definition mapper.hh:110
    \n+
    Index index(const EntityType &e) const
    Map entity to array index.
    Definition mapper.hh:122
    \n+
    Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity i of codim cc of a codim 0 entity to array index.
    Definition mapper.hh:136
    \n+
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,111 +2,259 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-b64enc.hh\n+printgrid.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_B64ENC_HH\n-7#define DUNE_GRID_IO_FILE_VTK_B64ENC_HH\n-8\n-9#include \n+5#ifndef DUNE_PRINTGRID_HH\n+6#define DUNE_PRINTGRID_HH\n+7\n+8#include \n+9#include \n 10\n-11namespace _\bD_\bu_\bn_\be {\n-12\n-_\b2_\b3 const char _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[] =\n-24 {\n-25 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n-26 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n-27 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',\n-28 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n-29 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'\n-30 };\n-31\n-_\b3_\b3 struct _\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n-34 {\n-_\b3_\b5 using _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be = unsigned char;\n-_\b3_\b6 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be;\n-_\b3_\b7 char _\bt_\bx_\bt[3];\n-38\n-_\b3_\b9 void _\br_\be_\bs_\be_\bt()\n-40 {\n-41 _\bs_\bi_\bz_\be = 0;\n-42 _\bt_\bx_\bt[0] = _\bt_\bx_\bt[1] = _\bt_\bx_\bt[2] = 0;\n-43 }\n-44\n-_\b4_\b5 int _\br_\be_\ba_\bd(const char* t, _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be s)\n-46 {\n-47 _\bs_\bi_\bz_\be = s>=3 ? 3 : s;\n-48 _\bt_\bx_\bt[0] = s>0 ? t[0] : 0;\n-49 _\bt_\bx_\bt[1] = s>1 ? t[1] : 0;\n-50 _\bt_\bx_\bt[2] = s>2 ? t[2] : 0;\n-51 return _\bs_\bi_\bz_\be;\n-52 }\n-53\n-_\b5_\b4 void _\bp_\bu_\bt(const char c)\n-55 {\n-56 assert (_\bs_\bi_\bz_\be < 3);\n-57 _\bt_\bx_\bt[_\bs_\bi_\bz_\be++] = c;\n-58 }\n-59\n-_\b6_\b0 void _\bw_\br_\bi_\bt_\be(char* t)\n-61 {\n-62 const unsigned A = (_\bt_\bx_\bt[0] & 0b1111'1100) >> 2;\n-63 const unsigned B = (_\bt_\bx_\bt[0] & 0b0000'0011) << 4 | (_\bt_\bx_\bt[1] & 0b1111'0000) >>\n-4;\n-64 const unsigned C = (_\bt_\bx_\bt[1] & 0b0000'1111) << 2 | (_\bt_\bx_\bt[2] & 0b1100'0000) >>\n-6;\n-65 const unsigned D = _\bt_\bx_\bt[2] & 0b0011'1111;\n-66 t[0] = _\bs_\bi_\bz_\be>0 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[A] : '=';\n-67 t[1] = _\bs_\bi_\bz_\be>0 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[B] : '=';\n-68 t[2] = _\bs_\bi_\bz_\be>1 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[C] : '=';\n-69 t[3] = _\bs_\bi_\bz_\be>2 ? _\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be[D] : '=';\n-70 _\bs_\bi_\bz_\be = 0;\n-71 }\n-72 };\n-73\n-76} // namespace Dune\n+11#include \n+12#include \n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+17 namespace {\n+18\n+19 template\n+20 struct ElementDataLayout\n+21 {\n+22 bool contains (Dune::GeometryType gt)\n+23 {\n+24 return gt.dim()==dim;\n+25 }\n+26 };\n+27\n+28 template\n+29 struct NodeDataLayout\n+30 {\n+31 bool contains (Dune::GeometryType gt)\n+32 {\n+33 return gt.dim()==0;\n+34 }\n+35 };\n+36\n+37 // Move a point closer to basegeo's center by factor scale (used for drawing\n+relative to the element)\n+38 template \n+39 C centrify (const B& basegeo, const C& coords, const double scale) {\n+40 C ret = coords;\n+41 ret -= basegeo.center();\n+42 ret *= scale;\n+43 ret += basegeo.center();\n+44 return ret;\n+45 }\n+46\n+47 // Add a line to the plotfile from p1 to p2\n+48 template \n+49 void draw_line (std::ofstream &plotfile, const Coord &p1, const Coord &p2,\n+std::string options) {\n+50 plotfile << \"set object poly from \";\n+51 plotfile << p1[0] << \",\" << p1[1] << \" to \";\n+52 plotfile << p2[0] << \",\" << p2[1] << \" to \";\n+53 plotfile << p1[0] << \",\" << p1[1];\n+54 plotfile << \" \" << options << std::endl;\n+55 }\n+56\n+57 }\n+58\n+72 template \n+_\b7_\b3 void _\bp_\br_\bi_\bn_\bt_\bG_\br_\bi_\bd (const GridType& grid, const Dune::MPIHelper& helper, std::\n+string output_file = \"printgrid\",\n+74 int size = 2000, bool execute_plot = true, bool png = true, bool\n+local_corner_indices = true,\n+75 bool local_intersection_indices = true, bool outer_normals = true)\n+76 {\n 77\n-78#endif // DUNE_GRID_IO_FILE_VTK_B64ENC_HH\n+78 // Create output file\n+79 output_file = output_file + \"_\" + std::to_string(helper.rank());\n+80 std::string plot_file_name = output_file + \".gnuplot\";\n+81 std::ofstream plotfile (plot_file_name, std::ios::out | std::ios::trunc);\n+82 if (!plotfile.is_open()) {\n+83 DUNE_THROW(Dune::IOError, \"Could not create plot file \" << output_file <<\n+\"!\");\n+84 return;\n+85 }\n+86\n+87 // Basic plot settings\n+88 plotfile << \"set size ratio -1\" << std::endl;\n+89 if (png) {\n+90 plotfile << \"set terminal png size \" << size << \",\" << size << std::endl;\n+91 plotfile << \"set output '\" << output_file << \".png'\" << std::endl;\n+92 } else {\n+93 plotfile << \"set terminal svg size \" << size << \",\" << size << \" enhanced\n+background rgb 'white'\" << std::endl;\n+94 plotfile << \"set output '\" << output_file << \".svg'\" << std::endl;\n+95 }\n+96\n+97 // Get GridView\n+98 typedef typename GridType::LeafGridView GV;\n+99 const GV gv = grid.leafGridView();\n+100\n+101 // Create mappers used to retrieve indices\n+102 typedef typename _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\bV_\b> _\bM_\ba_\bp_\bp_\be_\br;\n+103 const _\bM_\ba_\bp_\bp_\be_\br elementmapper(gv, _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt());\n+104 const _\bM_\ba_\bp_\bp_\be_\br nodemapper(gv, _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt());\n+105\n+106 // Create iterators\n+107 typedef typename GV::template Codim<0 >::Iterator LeafIterator;\n+108 typedef typename GV::IntersectionIterator _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+109\n+110 LeafIterator it = gv.template begin<0>();\n+111\n+112 // Will contain min/max coordinates. Needed for scaling of the plot\n+113 Dune::FieldVector max_coord (it->geometry\n+().center()), min_coord (max_coord);\n+114\n+115 // Iterate over elements\n+116 for (; it != gv.template end<0>(); ++it) {\n+117\n+118 const auto& entity = *it;\n+119 auto geo = entity.geometry();\n+120\n+121 // Plot element index\n+122 int element_id = elementmapper._\bi_\bn_\bd_\be_\bx(entity);\n+123 plotfile << \"set label at \" << geo.center()[0] << \",\" << geo.center()[1] <<\n+\" '\"\n+124 << element_id << \"' center\" << std::endl;\n+125\n+126 for (int i = 0; i < geo.corners(); ++i) {\n+127 // Plot corner indices\n+128 const int globalNodeNumber1 = nodemapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(entity, i, 2);\n+129 auto labelpos = centrify (geo, geo.corner(i), 0.7);\n+130 plotfile << \"set label at \" << labelpos[0] << \",\" << labelpos[1] << \" '\" <<\n+globalNodeNumber1;\n+131 if (local_corner_indices)\n+132 plotfile << \"(\" << i << \")\";\n+133 plotfile << \"' center\" << std::endl;\n+134\n+135 // Adapt min / max coordinates\n+136 for (int dim = 0; dim < 2; ++dim) {\n+137 if (geo.corner(i)[dim] < min_coord[dim])\n+138 min_coord[dim] = geo.corner(i)[dim];\n+139 else if (geo.corner(i)[dim] > max_coord[dim])\n+140 max_coord[dim] = geo.corner(i)[dim];\n+141 }\n+142 }\n+143\n+144 // Iterate over intersections\n+145 for (_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br is = gv.ibegin(entity); is != gv.iend(entity);\n+++is) {\n+146\n+147 const auto& intersection = *is;\n+148 auto igeo = intersection.geometry();\n+149\n+150 // Draw intersection line\n+151 draw_line (plotfile, igeo.corner(0), igeo.corner(1), \"fs empty border 1\");\n+152\n+153 // Plot local intersection index\n+154 if (local_intersection_indices) {\n+155 auto label_pos = centrify (geo, igeo.center(), 0.8);\n+156 plotfile << \"set label at \" << label_pos[0] << \",\" << label_pos[1]\n+157 << \" '\" << intersection.indexInInside() << \"' center\" << std::endl;\n+158 }\n+159\n+160 // Plot outer normal\n+161 if (outer_normals) {\n+162 auto intersection_pos = igeo.center();\n+163 auto normal = intersection.centerUnitOuterNormal();\n+164 normal *= 0.15 * igeo.volume();\n+165 auto normal_end = intersection_pos + normal;\n+166 plotfile << \"set arrow from \" << intersection_pos[0] << \",\" <<\n+intersection_pos[1]\n+167 << \" to \" << normal_end[0] << \",\" << normal_end[1] << \" lt rgb \\\"gray\\\"\" <<\n+std::endl;\n+168 }\n+169\n+170 // Get corners for inner intersection representation\n+171 auto inner_corner1 = centrify (geo, igeo.corner(0), 0.5);\n+172 auto inner_corner2 = centrify (geo, igeo.corner(1), 0.5);\n+173\n+174 // Thick line in case of boundary()\n+175 if (intersection.boundary())\n+176 draw_line (plotfile, inner_corner1, inner_corner2, \"fs empty border 3 lw\n+4\");\n+177\n+178 // Thin line with color according to neighbor()\n+179 if (intersection.neighbor())\n+180 draw_line (plotfile, inner_corner1, inner_corner2, \"fs empty border 2\");\n+181 else\n+182 draw_line (plotfile, inner_corner1, inner_corner2, \"fs empty border 1\");\n+183 }\n+184\n+185 }\n+186\n+187 // Finish plot, pass extend of the grid\n+188 Dune::FieldVector extend (max_coord -\n+min_coord);\n+189\n+190 extend *= 0.2;\n+191 min_coord -= extend;\n+192 max_coord += extend;\n+193 plotfile << \"plot [\" << min_coord[0] << \":\" << max_coord[0] << \"] [\" <<\n+min_coord[1]\n+194 << \":\" << max_coord[1] << \"] NaN notitle\" << std::endl;\n+195 plotfile.close();\n+196\n+197 if (execute_plot) {\n+198 std::string cmd = \"gnuplot -p '\" + plot_file_name + \"'\";\n+199 if (std::system (cmd.c_str()) != 0)\n+200 DUNE_THROW(Dune::Exception,\"Error running GNUPlot: \" << cmd);\n+201 }\n+202 }\n+203\n+204}\n+205\n+206#endif // #ifndef DUNE_PRINTGRID_HH\n+_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n+Mapper for multiple codim and multiple geometry types.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgElementLayout()\n+layout for elements (codim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgVertexLayout()\n+layout for vertices (dim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4_\bt_\ba_\bb_\bl_\be\n-const char base64table[]\n-endoing table\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n-struct representing the three byte text as well as the four 6 bit chunks\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bt_\bx_\bt\n-char txt[3]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n-unsigned char size_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(char *t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\br_\be_\ba_\bd\n-int read(const char *t, size_type s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bp_\bu_\bt\n-void put(const char c)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\bG_\br_\bi_\bd\n+void printGrid(const GridType &grid, const Dune::MPIHelper &helper, std::string\n+output_file=\"printgrid\", int size=2000, bool execute_plot=true, bool png=true,\n+bool local_corner_indices=true, bool local_intersection_indices=true, bool\n+outer_normals=true)\n+Print a grid as a gnuplot for testing and development.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn printgrid.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Mesh entities of codimension 0 (\"elements\") allow to visit all intersections\n+with \"neighboring\" eleme...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersectioniterator.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br\n+Mapper interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+Index index(const EntityType &e) const\n+Map entity to array index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i,\n+unsigned int codim) const\n+Map subentity i of codim cc of a codim 0 entity to array index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+Implementation class for a multiple codim and multiple geometry type mapper.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00965.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00965.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: subsamplingvtkwriter.hh File Reference\n+dune-grid: vtk.hh File Reference\n \n \n \n \n \n \n \n@@ -65,52 +65,33 @@\n \n \n \n \n \n \n \n
    \n- \n-
    subsamplingvtkwriter.hh File Reference
    \n+
    vtk.hh File Reference
    \n
    \n
    \n \n-

    Provides subsampled file i/o for the visualization toolkit. \n+

    Convenience header which includes all available VTK writers. \n More...

    \n-
    #include <ostream>
    \n-#include <memory>
    \n-#include <dune/common/indent.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/virtualrefinement.hh>
    \n-#include <dune/grid/io/file/vtk/vtkwriter.hh>
    \n-#include <dune/grid/io/file/vtk/vtuwriter.hh>
    \n+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::SubsamplingVTKWriter< GridView >
     Writer for the output of subsampled grid functions in the vtk format. More...
     
    \n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Provides subsampled file i/o for the visualization toolkit.

    \n-
    Author
    J\u00f6 Fahlke
    \n+

    Convenience header which includes all available VTK writers.

    \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": "@@ -2,34 +2,19 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-subsamplingvtkwriter.hh File Reference\n-Provides subsampled file i/o for the visualization toolkit. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+vtk.hh File Reference\n+Convenience header which includes all available VTK writers. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \"_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+#include \"_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+#include \"_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+#include \"_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+#include \"_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bw_\br_\bi_\bt_\be_\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:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Writer for the output of subsampled grid functions in the vtk format.\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 Include standard header files.\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-Provides subsampled file i/o for the visualization toolkit.\n- Author\n- J\u00c3\u00b6 Fahlke\n+Convenience header which includes all available VTK writers.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00965_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00965_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: subsamplingvtkwriter.hh Source File\n+dune-grid: vtk.hh Source File\n \n \n \n \n \n \n \n@@ -70,408 +70,41 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    subsamplingvtkwriter.hh
    \n+
    vtk.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_SUBSAMPLINGVTKWRITER_HH
    \n-
    7#define DUNE_SUBSAMPLINGVTKWRITER_HH
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_HH
    \n
    8
    \n-
    9#include <ostream>
    \n-
    10#include <memory>
    \n-
    11
    \n-
    12#include <dune/common/indent.hh>
    \n-
    13#include <dune/geometry/type.hh>
    \n-
    14#include <dune/geometry/virtualrefinement.hh>
    \n-\n-\n-
    17
    \n-
    24namespace Dune
    \n-
    25{
    \n-
    37 template< class GridView >
    \n-
    \n-\n-
    39 : public VTKWriter<GridView>
    \n-
    40 {
    \n-\n-
    42 constexpr static int dim = GridView::dimension;
    \n-
    43 constexpr static int dimw = GridView::dimensionworld;
    \n-
    44 typedef typename GridView::Grid::ctype ctype;
    \n-
    45 typedef typename GridView::template Codim< 0 >::Entity Entity;
    \n-
    46 typedef VirtualRefinement<dim, ctype> Refinement;
    \n-
    47 typedef typename Refinement::IndexVector IndexVector;
    \n-
    48 typedef typename Refinement::ElementIterator SubElementIterator;
    \n-
    49 typedef typename Refinement::VertexIterator SubVertexIterator;
    \n-
    50
    \n-
    51 typedef typename Base::CellIterator CellIterator;
    \n-
    52 typedef typename Base::FunctionIterator FunctionIterator;
    \n-
    53 using Base::cellBegin;
    \n-
    54 using Base::cellEnd;
    \n-
    55 using Base::celldata;
    \n-
    56 using Base::ncells;
    \n-
    57 using Base::ncorners;
    \n-
    58 using Base::nvertices;
    \n-
    59 using Base::outputtype;
    \n-\n-
    61 using Base::vertexEnd;
    \n-
    62 using Base::vertexdata;
    \n-
    63
    \n-
    64 public:
    \n-
    \n-
    80 explicit SubsamplingVTKWriter (const GridView &gridView,
    \n-
    81 Dune::RefinementIntervals intervals_, bool coerceToSimplex_ = false,
    \n-\n-
    83 : Base(gridView, VTK::nonconforming, coordPrecision)
    \n-
    84 , intervals(intervals_), coerceToSimplex(coerceToSimplex_)
    \n-
    85 {
    \n-
    86 if(intervals_.intervals() < 1) {
    \n-
    87 DUNE_THROW(Dune::IOError,"SubsamplingVTKWriter: Refinement intervals must be larger than zero! (One interval means no subsampling)");
    \n-
    88 }
    \n-
    89 }
    \n-
    \n-
    90
    \n-
    91 private:
    \n-
    92 GeometryType subsampledGeometryType(GeometryType geometryType)
    \n-
    93 {
    \n-
    94 return (geometryType.isCube() && !coerceToSimplex ? geometryType : GeometryTypes::simplex(dim));
    \n-
    95 }
    \n-
    96
    \n-
    97 template<typename SubIterator>
    \n-
    98 struct IteratorSelector
    \n-
    99 {};
    \n-
    100
    \n-
    101 SubElementIterator refinementBegin(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubElementIterator>)
    \n-
    102 {
    \n-
    103 return refinement.eBegin(intervals);
    \n-
    104 }
    \n-
    105
    \n-
    106 SubVertexIterator refinementBegin(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubVertexIterator>)
    \n-
    107 {
    \n-
    108 return refinement.vBegin(intervals);
    \n-
    109 }
    \n-
    110
    \n-
    111 SubElementIterator refinementEnd(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubElementIterator>)
    \n-
    112 {
    \n-
    113 return refinement.eEnd(intervals);
    \n-
    114 }
    \n-
    115
    \n-
    116 SubVertexIterator refinementEnd(const Refinement& refinement, Dune::RefinementIntervals intervals, IteratorSelector<SubVertexIterator>)
    \n-
    117 {
    \n-
    118 return refinement.vEnd(intervals);
    \n-
    119 }
    \n-
    120
    \n-
    121 template<typename Data, typename Iterator, typename SubIterator>
    \n-
    122 void writeData(VTK::VTUWriter& writer, const Data& data, const Iterator begin, const Iterator end, int nentries, IteratorSelector<SubIterator> sis)
    \n-
    123 {
    \n-
    124 for (auto it = data.begin(),
    \n-
    125 iend = data.end();
    \n-
    126 it != iend;
    \n-
    127 ++it)
    \n-
    128 {
    \n-
    129 const auto& f = *it;
    \n-
    130 VTK::FieldInfo fieldInfo = f.fieldInfo();
    \n-
    131 std::size_t writecomps = fieldInfo.size();
    \n-
    132 switch (fieldInfo.type())
    \n-
    133 {
    \n-\n-
    135 break;
    \n-\n-
    137 // vtk file format: a vector data always should have 3 comps (with
    \n-
    138 // 3rd comp = 0 in 2D case)
    \n-
    139 if (writecomps > 3)
    \n-
    140 DUNE_THROW(IOError,"Cannot write VTK vectors with more than 3 components (components was " << writecomps << ")");
    \n-
    141 writecomps = 3;
    \n-
    142 break;
    \n-\n-
    144 DUNE_THROW(NotImplemented,"VTK output for tensors not implemented yet");
    \n-
    145 }
    \n-
    146 std::shared_ptr<VTK::DataArrayWriter> p
    \n-
    147 (writer.makeArrayWriter(f.name(), writecomps, nentries, fieldInfo.precision()));
    \n-
    148 if(!p->writeIsNoop())
    \n-
    149 for (Iterator eit = begin; eit!=end; ++eit)
    \n-
    150 {
    \n-
    151 const Entity & e = *eit;
    \n-
    152 f.bind(e);
    \n-
    153 Refinement &refinement =
    \n-
    154 buildRefinement<dim, ctype>(eit->type(),
    \n-
    155 subsampledGeometryType(eit->type()));
    \n-
    156 for(SubIterator sit = refinementBegin(refinement,intervals,sis),
    \n-
    157 send = refinementEnd(refinement,intervals,sis);
    \n-
    158 sit != send;
    \n-
    159 ++sit)
    \n-
    160 {
    \n-
    161 f.write(sit.coords(),*p);
    \n-
    162 // expand 2D-Vectors to 3D for VTK format
    \n-
    163 for(unsigned j = f.fieldInfo().size(); j < writecomps; j++)
    \n-
    164 p->write(0.0);
    \n-
    165 }
    \n-
    166 f.unbind();
    \n-
    167 }
    \n-
    168 }
    \n-
    169 }
    \n-
    170
    \n-
    171
    \n-
    172 protected:
    \n-
    174 virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_);
    \n-
    175
    \n-
    177 virtual void writeCellData(VTK::VTUWriter& writer);
    \n-
    178
    \n-
    180 virtual void writeVertexData(VTK::VTUWriter& writer);
    \n-
    181
    \n-
    183 virtual void writeGridPoints(VTK::VTUWriter& writer);
    \n-
    184
    \n-
    186 virtual void writeGridCells(VTK::VTUWriter& writer);
    \n-
    187
    \n-
    188 public:
    \n-\n-
    190 using Base::addCellData;
    \n-
    191
    \n-
    192 private:
    \n-
    193 // hide addVertexData -- adding raw data directly without a VTKFunction
    \n-
    194 // currently does not make sense for subsampled meshes, as the higher order
    \n-
    195 // information is missing. See FS#676.
    \n-
    196 template<class V>
    \n-
    197 void addVertexData (const V& v, const std::string &name, int ncomps=1);
    \n-
    198 template<class V>
    \n-
    199 void addCellData (const V& v, const std::string &name, int ncomps=1);
    \n-
    200
    \n-
    201 Dune::RefinementIntervals intervals;
    \n-
    202 bool coerceToSimplex;
    \n-
    203 };
    \n-
    \n-
    204
    \n-
    206 template <class GridView>
    \n-
    \n-
    207 void SubsamplingVTKWriter<GridView>::countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    \n-
    208 {
    \n-
    209 nvertices_ = 0;
    \n-
    210 ncells_ = 0;
    \n-
    211 ncorners_ = 0;
    \n-
    212 for (CellIterator it=this->cellBegin(); it!=cellEnd(); ++it)
    \n-
    213 {
    \n-
    214 Refinement &refinement = buildRefinement<dim, ctype>(it->type(), subsampledGeometryType(it->type()));
    \n-
    215
    \n-
    216 ncells_ += refinement.nElements(intervals);
    \n-
    217 nvertices_ += refinement.nVertices(intervals);
    \n-
    218 ncorners_ += refinement.nElements(intervals) * refinement.eBegin(intervals).vertexIndices().size();
    \n-
    219 }
    \n-
    220 }
    \n-
    \n-
    221
    \n-
    222
    \n-
    224 template <class GridView>
    \n-
    \n-\n-
    226 {
    \n-
    227 if(celldata.size() == 0)
    \n-
    228 return;
    \n-
    229
    \n-
    230 // Find the names of the first scalar and vector data fields.
    \n-
    231 // These will be marked as the default fields (the ones that ParaView shows
    \n-
    232 // when the file has just been opened).
    \n-
    233 std::string defaultScalarField, defaultVectorField;
    \n-
    234 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames(celldata);
    \n-
    235
    \n-
    236 writer.beginCellData(defaultScalarField, defaultVectorField);
    \n-
    237 writeData(writer,celldata,cellBegin(),cellEnd(),ncells,IteratorSelector<SubElementIterator>());
    \n-
    238 writer.endCellData();
    \n-
    239 }
    \n-
    \n-
    240
    \n-
    242 template <class GridView>
    \n-
    \n-\n-
    244 {
    \n-
    245 if(vertexdata.size() == 0)
    \n-
    246 return;
    \n-
    247
    \n-
    248 // Find the names of the first scalar and vector data fields.
    \n-
    249 // These will be marked as the default fields (the ones that ParaView shows
    \n-
    250 // when the file has just been opened).
    \n-
    251 std::string defaultScalarField, defaultVectorField;
    \n-
    252 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames(vertexdata);
    \n-
    253
    \n-
    254 writer.beginPointData(defaultScalarField, defaultVectorField);
    \n-
    255 writeData(writer,vertexdata,cellBegin(),cellEnd(),nvertices,IteratorSelector<SubVertexIterator>());
    \n-
    256 writer.endPointData();
    \n-
    257 }
    \n-
    \n-
    258
    \n-
    260 template <class GridView>
    \n-
    \n-\n-
    262 {
    \n-
    263 writer.beginPoints();
    \n-
    264
    \n-
    265 std::shared_ptr<VTK::DataArrayWriter> p
    \n-
    266 (writer.makeArrayWriter("Coordinates", 3, nvertices, this->coordPrecision()));
    \n-
    267 if(!p->writeIsNoop())
    \n-
    268 for (CellIterator i=cellBegin(); i!=cellEnd(); ++i)
    \n-
    269 {
    \n-
    270 Refinement &refinement =
    \n-
    271 buildRefinement<dim, ctype>(i->type(),
    \n-
    272 subsampledGeometryType(i->type()));
    \n-
    273 for(SubVertexIterator sit = refinement.vBegin(intervals),
    \n-
    274 send = refinement.vEnd(intervals);
    \n-
    275 sit != send; ++sit)
    \n-
    276 {
    \n-
    277 FieldVector<ctype, dimw> coords = i->geometry().global(sit.coords());
    \n-
    278 for (int j=0; j<std::min(int(dimw),3); j++)
    \n-
    279 p->write(coords[j]);
    \n-
    280 for (int j=std::min(int(dimw),3); j<3; j++)
    \n-
    281 p->write(0.0);
    \n-
    282 }
    \n-
    283 }
    \n-
    284 // free the VTK::DataArrayWriter before touching the stream
    \n-
    285 p.reset();
    \n-
    286
    \n-
    287 writer.endPoints();
    \n-
    288 }
    \n-
    \n-
    289
    \n-
    291 template <class GridView>
    \n-
    \n-\n-
    293 {
    \n-
    294 writer.beginCells();
    \n-
    295
    \n-
    296 // connectivity
    \n-
    297 {
    \n-
    298 std::shared_ptr<VTK::DataArrayWriter> p1
    \n-
    299 (writer.makeArrayWriter("connectivity", 1, ncorners, VTK::Precision::int32));
    \n-
    300 // The offset within the index numbering
    \n-
    301 if(!p1->writeIsNoop()) {
    \n-
    302 int offset = 0;
    \n-
    303 for (CellIterator i=cellBegin(); i!=cellEnd(); ++i)
    \n-
    304 {
    \n-
    305 GeometryType coercedToType = subsampledGeometryType(i->type());
    \n-
    306 Refinement &refinement =
    \n-
    307 buildRefinement<dim, ctype>(i->type(), coercedToType);
    \n-
    308 for(SubElementIterator sit = refinement.eBegin(intervals),
    \n-
    309 send = refinement.eEnd(intervals);
    \n-
    310 sit != send; ++sit)
    \n-
    311 {
    \n-
    312 IndexVector indices = sit.vertexIndices();
    \n-
    313 for(unsigned int ii = 0; ii < indices.size(); ++ii)
    \n-
    314 p1->write(offset+indices[VTK::renumber(coercedToType, ii)]);
    \n-
    315 }
    \n-
    316 offset += refinement.nVertices(intervals);
    \n-
    317 }
    \n-
    318 }
    \n-
    319 }
    \n-
    320
    \n-
    321 // offsets
    \n-
    322 {
    \n-
    323 std::shared_ptr<VTK::DataArrayWriter> p2
    \n-
    324 (writer.makeArrayWriter("offsets", 1, ncells, VTK::Precision::int32));
    \n-
    325 if(!p2->writeIsNoop()) {
    \n-
    326 // The offset into the connectivity array
    \n-
    327 int offset = 0;
    \n-
    328 for (CellIterator i=cellBegin(); i!=cellEnd(); ++i)
    \n-
    329 {
    \n-
    330 Refinement &refinement =
    \n-
    331 buildRefinement<dim, ctype>(i->type(),
    \n-
    332 subsampledGeometryType(i->type()));
    \n-
    333 unsigned int verticesPerCell =
    \n-
    334 refinement.eBegin(intervals).vertexIndices().size();
    \n-
    335 for(int element = 0; element < refinement.nElements(intervals);
    \n-
    336 ++element)
    \n-
    337 {
    \n-
    338 offset += verticesPerCell;
    \n-
    339 p2->write(offset);
    \n-
    340 }
    \n-
    341 }
    \n-
    342 }
    \n-
    343 }
    \n-
    344
    \n-
    345 // types
    \n-
    346 if (dim>1)
    \n-
    347 {
    \n-
    348 std::shared_ptr<VTK::DataArrayWriter> p3
    \n-
    349 (writer.makeArrayWriter("types", 1, ncells, VTK::Precision::uint8));
    \n-
    350 if(!p3->writeIsNoop())
    \n-
    351 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n-
    352 {
    \n-
    353 GeometryType coerceTo = subsampledGeometryType(it->type());
    \n-
    354 Refinement &refinement =
    \n-
    355 buildRefinement<dim, ctype>(it->type(), coerceTo);
    \n-
    356 int vtktype = VTK::geometryType(coerceTo);
    \n-
    357 for(int i = 0; i < refinement.nElements(intervals); ++i)
    \n-
    358 p3->write(vtktype);
    \n-
    359 }
    \n-
    360 }
    \n-
    361
    \n-
    362 writer.endCells();
    \n-
    363 }
    \n-
    \n-
    364}
    \n-
    365
    \n-
    366#endif // DUNE_SUBSAMPLINGVTKWRITER_HH
    \n-\n-
    Provides file i/o for the visualization toolkit.
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n-
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-\n-\n-\n-
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n-
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n-
    @ tensor
    tensor field (always 3x3)
    \n-
    @ vector
    vector-valued field (always 3D, will be padded if necessary)
    \n-\n-
    Writer for the output of subsampled grid functions in the vtk format.
    Definition subsamplingvtkwriter.hh:40
    \n-
    virtual void writeGridPoints(VTK::VTUWriter &writer)
    write the positions of vertices
    Definition subsamplingvtkwriter.hh:261
    \n-
    virtual void writeVertexData(VTK::VTUWriter &writer)
    write vertex data
    Definition subsamplingvtkwriter.hh:243
    \n-
    SubsamplingVTKWriter(const GridView &gridView, Dune::RefinementIntervals intervals_, bool coerceToSimplex_=false, VTK::Precision coordPrecision=VTK::Precision::float32)
    Construct a SubsamplingVTKWriter working on a specific GridView.
    Definition subsamplingvtkwriter.hh:80
    \n-
    virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    count the vertices, cells and corners
    Definition subsamplingvtkwriter.hh:207
    \n-
    virtual void writeCellData(VTK::VTUWriter &writer)
    write cell data
    Definition subsamplingvtkwriter.hh:225
    \n-
    virtual void writeGridCells(VTK::VTUWriter &writer)
    write the connectivity array
    Definition subsamplingvtkwriter.hh:292
    \n-
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n-
    VertexIterator vertexBegin() const
    Definition vtkwriter.hh:508
    \n-
    void addVertexData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the vertices of the grid to the visualization.
    Definition vtkwriter.hh:713
    \n-
    CellIterator cellEnd() const
    Definition vtkwriter.hh:402
    \n-
    std::list< VTKLocalFunction > vertexdata
    Definition vtkwriter.hh:1585
    \n-
    void addCellData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the cells of the grid to the visualization.
    Definition vtkwriter.hh:649
    \n-
    CellIterator cellBegin() const
    Definition vtkwriter.hh:397
    \n-
    VTK::OutputType outputtype
    Definition vtkwriter.hh:1609
    \n-
    std::list< VTKLocalFunction > celldata
    Definition vtkwriter.hh:1584
    \n-
    VTK::Precision coordPrecision() const
    get the precision with which coordinates are written out
    Definition vtkwriter.hh:782
    \n-
    std::list< VTKLocalFunction >::const_iterator FunctionIterator
    Definition vtkwriter.hh:376
    \n-
    int nvertices
    Definition vtkwriter.hh:1592
    \n-
    int ncells
    Definition vtkwriter.hh:1591
    \n-
    VertexIterator vertexEnd() const
    Definition vtkwriter.hh:515
    \n-
    int ncorners
    Definition vtkwriter.hh:1593
    \n-
    Iterator over the grids elements.
    Definition vtkwriter.hh:385
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n-
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n-
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n-
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n-
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n-
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n-
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n-
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n-
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n-
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n+
    13#include "vtk/boundarywriter.hh"
    \n+\n+\n+
    16#include "vtk/vtkwriter.hh"
    \n+
    17#include "vtk/volumewriter.hh"
    \n+
    18
    \n+
    19#endif // DUNE_GRID_IO_FILE_VTK_HH
    \n+\n+
    Provides subsampled file i/o for the visualization toolkit.
    \n+\n+
    Provides file i/o for the visualization toolkit.
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,527 +2,34 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-subsamplingvtkwriter.hh\n+vtk.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_SUBSAMPLINGVTKWRITER_HH\n-7#define DUNE_SUBSAMPLINGVTKWRITER_HH\n+6#ifndef DUNE_GRID_IO_FILE_VTK_HH\n+7#define DUNE_GRID_IO_FILE_VTK_HH\n 8\n-9#include \n-10#include \n-11\n-12#include \n-13#include \n-14#include \n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-17\n-24namespace _\bD_\bu_\bn_\be\n-25{\n-37 template< class GridView >\n-_\b3_\b8 class _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-39 : public _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-40 {\n-41 typedef _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> _\bB_\ba_\bs_\be;\n-42 constexpr static int dim = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-43 constexpr static int dimw = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-44 typedef typename GridView::Grid::ctype ctype;\n-45 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Entity;\n-46 typedef VirtualRefinement Refinement;\n-47 typedef typename Refinement::IndexVector IndexVector;\n-48 typedef typename Refinement::ElementIterator SubElementIterator;\n-49 typedef typename Refinement::VertexIterator SubVertexIterator;\n-50\n-51 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-52 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br FunctionIterator;\n-53 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn;\n-54 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bl_\bl_\bE_\bn_\bd;\n-55 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba;\n-56 using _\bB_\ba_\bs_\be_\b:_\b:_\bn_\bc_\be_\bl_\bl_\bs;\n-57 using _\bB_\ba_\bs_\be_\b:_\b:_\bn_\bc_\bo_\br_\bn_\be_\br_\bs;\n-58 using _\bB_\ba_\bs_\be_\b:_\b:_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs;\n-59 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be;\n-60 using _\bB_\ba_\bs_\be_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn;\n-61 using _\bB_\ba_\bs_\be_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd;\n-62 using _\bB_\ba_\bs_\be_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba;\n-63\n-64 public:\n-_\b8_\b0 explicit _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br (const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView,\n-81 Dune::RefinementIntervals intervals_, bool coerceToSimplex_ = false,\n-82 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-83 : _\bB_\ba_\bs_\be(gridView, VTK::nonconforming, _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn)\n-84 , intervals(intervals_), coerceToSimplex(coerceToSimplex_)\n-85 {\n-86 if(intervals_.intervals() < 1) {\n-87 DUNE_THROW(Dune::IOError,\"SubsamplingVTKWriter: Refinement intervals must be\n-larger than zero! (One interval means no subsampling)\");\n-88 }\n-89 }\n-90\n-91 private:\n-92 GeometryType subsampledGeometryType(GeometryType geometryType)\n-93 {\n-94 return (geometryType.isCube() && !coerceToSimplex ? geometryType :\n-GeometryTypes::simplex(dim));\n-95 }\n-96\n-97 template\n-98 struct IteratorSelector\n-99 {};\n-100\n-101 SubElementIterator refinementBegin(const Refinement& refinement, Dune::\n-RefinementIntervals intervals, IteratorSelector)\n-102 {\n-103 return refinement.eBegin(intervals);\n-104 }\n-105\n-106 SubVertexIterator refinementBegin(const Refinement& refinement, Dune::\n-RefinementIntervals intervals, IteratorSelector)\n-107 {\n-108 return refinement.vBegin(intervals);\n-109 }\n-110\n-111 SubElementIterator refinementEnd(const Refinement& refinement, Dune::\n-RefinementIntervals intervals, IteratorSelector)\n-112 {\n-113 return refinement.eEnd(intervals);\n-114 }\n-115\n-116 SubVertexIterator refinementEnd(const Refinement& refinement, Dune::\n-RefinementIntervals intervals, IteratorSelector)\n-117 {\n-118 return refinement.vEnd(intervals);\n-119 }\n-120\n-121 template\n-122 void writeData(VTK::VTUWriter& writer, const Data& data, const Iterator\n-begin, const Iterator end, int nentries, IteratorSelector sis)\n-123 {\n-124 for (auto it = data.begin(),\n-125 iend = data.end();\n-126 it != iend;\n-127 ++it)\n-128 {\n-129 const auto& f = *it;\n-130 VTK::FieldInfo fieldInfo = f.fieldInfo();\n-131 std::size_t writecomps = fieldInfo.size();\n-132 switch (fieldInfo.type())\n-133 {\n-134 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br:\n-135 break;\n-136 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br:\n-137 // vtk file format: a vector data always should have 3 comps (with\n-138 // 3rd comp = 0 in 2D case)\n-139 if (writecomps > 3)\n-140 DUNE_THROW(IOError,\"Cannot write VTK vectors with more than 3 components\n-(components was \" << writecomps << \")\");\n-141 writecomps = 3;\n-142 break;\n-143 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br:\n-144 DUNE_THROW(NotImplemented,\"VTK output for tensors not implemented yet\");\n-145 }\n-146 std::shared_ptr p\n-147 (writer.makeArrayWriter(f.name(), writecomps, nentries, fieldInfo.precision\n-()));\n-148 if(!p->writeIsNoop())\n-149 for (Iterator eit = begin; eit!=end; ++eit)\n-150 {\n-151 const Entity & e = *eit;\n-152 f.bind(e);\n-153 Refinement &refinement =\n-154 buildRefinement(eit->type(),\n-155 subsampledGeometryType(eit->type()));\n-156 for(SubIterator sit = refinementBegin(refinement,intervals,sis),\n-157 send = refinementEnd(refinement,intervals,sis);\n-158 sit != send;\n-159 ++sit)\n-160 {\n-161 f.write(sit.coords(),*p);\n-162 // expand 2D-Vectors to 3D for VTK format\n-163 for(unsigned j = f.fieldInfo().size(); j < writecomps; j++)\n-164 p->write(0.0);\n-165 }\n-166 f.unbind();\n-167 }\n-168 }\n-169 }\n-170\n-171\n-172 protected:\n-174 virtual void _\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs(int &nvertices_, int &ncells_, int &ncorners_);\n-175\n-177 virtual void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(VTK::VTUWriter& writer);\n-178\n-180 virtual void _\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(VTK::VTUWriter& writer);\n-181\n-183 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs(VTK::VTUWriter& writer);\n-184\n-186 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs(VTK::VTUWriter& writer);\n-187\n-188 public:\n-189 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba;\n-190 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba;\n-191\n-192 private:\n-193 // hide addVertexData -- adding raw data directly without a VTKFunction\n-194 // currently does not make sense for subsampled meshes, as the higher order\n-195 // information is missing. See FS#676.\n-196 template\n-197 void addVertexData (const V& v, const std::string &name, int ncomps=1);\n-198 template\n-199 void addCellData (const V& v, const std::string &name, int ncomps=1);\n-200\n-201 Dune::RefinementIntervals intervals;\n-202 bool coerceToSimplex;\n-203 };\n-204\n-206 template \n-_\b2_\b0_\b7 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs(int &nvertices_, int\n-&ncells_, int &ncorners_)\n-208 {\n-209 nvertices_ = 0;\n-210 ncells_ = 0;\n-211 ncorners_ = 0;\n-212 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=this->cellBegin(); it!=cellEnd(); ++it)\n-213 {\n-214 Refinement &refinement = buildRefinement(it->type(),\n-subsampledGeometryType(it->type()));\n-215\n-216 ncells_ += refinement.nElements(intervals);\n-217 nvertices_ += refinement.nVertices(intervals);\n-218 ncorners_ += refinement.nElements(intervals) * refinement.eBegin\n-(intervals).vertexIndices().size();\n-219 }\n-220 }\n-221\n-222\n-224 template \n-_\b2_\b2_\b5 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-226 {\n-227 if(celldata.size() == 0)\n-228 return;\n-229\n-230 // Find the names of the first scalar and vector data fields.\n-231 // These will be marked as the default fields (the ones that ParaView shows\n-232 // when the file has just been opened).\n-233 std::string defaultScalarField, defaultVectorField;\n-234 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames\n-(celldata);\n-235\n-236 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(defaultScalarField, defaultVectorField);\n-237 writeData(writer,celldata,cellBegin(),cellEnd\n-(),ncells,IteratorSelector());\n-238 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n-239 }\n-240\n-242 template \n-_\b2_\b4_\b3 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br&\n-writer)\n-244 {\n-245 if(vertexdata.size() == 0)\n-246 return;\n-247\n-248 // Find the names of the first scalar and vector data fields.\n-249 // These will be marked as the default fields (the ones that ParaView shows\n-250 // when the file has just been opened).\n-251 std::string defaultScalarField, defaultVectorField;\n-252 std::tie(defaultScalarField, defaultVectorField) = this->getDataNames\n-(vertexdata);\n-253\n-254 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(defaultScalarField, defaultVectorField);\n-255 writeData(writer,vertexdata,cellBegin(),cellEnd\n-(),nvertices,IteratorSelector());\n-256 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n-257 }\n-258\n-260 template \n-_\b2_\b6_\b1 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br&\n-writer)\n-262 {\n-263 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n-264\n-265 std::shared_ptr p\n-266 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"Coordinates\", 3, nvertices, this->coordPrecision\n-()));\n-267 if(!p->writeIsNoop())\n-268 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br i=cellBegin(); i!=cellEnd(); ++i)\n-269 {\n-270 Refinement &refinement =\n-271 buildRefinement(i->type(),\n-272 subsampledGeometryType(i->type()));\n-273 for(SubVertexIterator sit = refinement.vBegin(intervals),\n-274 send = refinement.vEnd(intervals);\n-275 sit != send; ++sit)\n-276 {\n-277 FieldVector coords = i->geometry().global(sit.coords());\n-278 for (int j=0; jwrite(coords[j]);\n-280 for (int j=std::min(int(dimw),3); j<3; j++)\n-281 p->write(0.0);\n-282 }\n-283 }\n-284 // free the VTK::DataArrayWriter before touching the stream\n-285 p.reset();\n-286\n-287 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n-288 }\n-289\n-291 template \n-_\b2_\b9_\b2 void _\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n-293 {\n-294 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs();\n-295\n-296 // connectivity\n-297 {\n-298 std::shared_ptr p1\n-299 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"connectivity\", 1, ncorners, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:\n-_\bi_\bn_\bt_\b3_\b2));\n-300 // The offset within the index numbering\n-301 if(!p1->writeIsNoop()) {\n-302 int offset = 0;\n-303 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br i=cellBegin(); i!=cellEnd(); ++i)\n-304 {\n-305 GeometryType coercedToType = subsampledGeometryType(i->type());\n-306 Refinement &refinement =\n-307 buildRefinement(i->type(), coercedToType);\n-308 for(SubElementIterator sit = refinement.eBegin(intervals),\n-309 send = refinement.eEnd(intervals);\n-310 sit != send; ++sit)\n-311 {\n-312 IndexVector indices = sit.vertexIndices();\n-313 for(unsigned int ii = 0; ii < indices.size(); ++ii)\n-314 p1->write(offset+indices[_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br(coercedToType, ii)]);\n-315 }\n-316 offset += refinement.nVertices(intervals);\n-317 }\n-318 }\n-319 }\n-320\n-321 // offsets\n-322 {\n-323 std::shared_ptr p2\n-324 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"offsets\", 1, ncells, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n-325 if(!p2->writeIsNoop()) {\n-326 // The offset into the connectivity array\n-327 int offset = 0;\n-328 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br i=cellBegin(); i!=cellEnd(); ++i)\n-329 {\n-330 Refinement &refinement =\n-331 buildRefinement(i->type(),\n-332 subsampledGeometryType(i->type()));\n-333 unsigned int verticesPerCell =\n-334 refinement.eBegin(intervals).vertexIndices().size();\n-335 for(int element = 0; element < refinement.nElements(intervals);\n-336 ++element)\n-337 {\n-338 offset += verticesPerCell;\n-339 p2->write(offset);\n-340 }\n-341 }\n-342 }\n-343 }\n-344\n-345 // types\n-346 if (dim>1)\n-347 {\n-348 std::shared_ptr p3\n-349 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"types\", 1, ncells, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8));\n-350 if(!p3->writeIsNoop())\n-351 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=cellBegin(); it!=cellEnd(); ++it)\n-352 {\n-353 GeometryType coerceTo = subsampledGeometryType(it->type());\n-354 Refinement &refinement =\n-355 buildRefinement(it->type(), coerceTo);\n-356 int vtktype = _\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(coerceTo);\n-357 for(int i = 0; i < refinement.nElements(intervals); ++i)\n-358 p3->write(vtktype);\n-359 }\n-360 }\n-361\n-362 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bs();\n-363 }\n-364}\n-365\n-366#endif // DUNE_SUBSAMPLINGVTKWRITER_HH\n-_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+13#include \"_\bv_\bt_\bk_\b/_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+14#include \"_\bv_\bt_\bk_\b/_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+15#include \"_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+16#include \"_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+17#include \"_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\"\n+18\n+19#endif // DUNE_GRID_IO_FILE_VTK_HH\n+_\bv_\bt_\bk_\bs_\be_\bq_\bu_\be_\bn_\bc_\be_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bs_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Provides subsampled file i/o for the visualization toolkit.\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n _\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n Provides file i/o for the visualization toolkit.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static constexpr int dimensionworld\n-The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n-@ int32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n-@ uint8\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n-@ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n-int renumber(const Dune::GeometryType &t, int i)\n-renumber VTK <-> Dune\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType geometryType(const Dune::GeometryType &t)\n-mapping from GeometryType to VTKGeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A struct that collects all associated types of one implementation from the\n-Traits class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-@ tensor\n-tensor field (always 3x3)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br\n-@ vector\n-vector-valued field (always 3D, will be padded if necessary)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br\n-@ scalar\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-Writer for the output of subsampled grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-virtual void writeGridPoints(VTK::VTUWriter &writer)\n-write the positions of vertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:261\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-virtual void writeVertexData(VTK::VTUWriter &writer)\n-write vertex data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-SubsamplingVTKWriter(const GridView &gridView, Dune::RefinementIntervals\n-intervals_, bool coerceToSimplex_=false, VTK::Precision coordPrecision=VTK::\n-Precision::float32)\n-Construct a SubsamplingVTKWriter working on a specific GridView.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)\n-count the vertices, cells and corners\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-virtual void writeCellData(VTK::VTUWriter &writer)\n-write cell data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bu_\bb_\bs_\ba_\bm_\bp_\bl_\bi_\bn_\bg_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs\n-virtual void writeGridCells(VTK::VTUWriter &writer)\n-write the connectivity array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn subsamplingvtkwriter.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-Writer for the ouput of grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn\n-VertexIterator vertexBegin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:508\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const std::shared_ptr< const VTKFunction > &p)\n-Add a grid function that lives on the vertices of the grid to the\n-visualization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:713\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bE_\bn_\bd\n-CellIterator cellEnd() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:402\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba\n-std::list< VTKLocalFunction > vertexdata\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1585\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< const VTKFunction > &p)\n-Add a grid function that lives on the cells of the grid to the visualization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:649\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn\n-CellIterator cellBegin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:397\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be\n-VTK::OutputType outputtype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1609\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba\n-std::list< VTKLocalFunction > celldata\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1584\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-VTK::Precision coordPrecision() const\n-get the precision with which coordinates are written out\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:782\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-std::list< VTKLocalFunction >::const_iterator FunctionIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:376\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n-int nvertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1592\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\be_\bl_\bl_\bs\n-int ncells\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1591\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd\n-VertexIterator vertexEnd() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:515\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\br_\bn_\be_\br_\bs\n-int ncorners\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1593\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over the grids elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n-unsigned nitems, Precision prec)\n-acquire a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void endCellData()\n-finish CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n-void beginCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void endPointData()\n-finish PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void beginCellData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start CellData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n-void beginPointData(const std::string &scalars=\"\", const std::string\n-&vectors=\"\")\n-start PointData section\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n-void endPoints()\n-finish section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n-void endCells()\n-start section for the grid cells/PolyData lines\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n-void beginPoints()\n-start section for the point coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n+_\bv_\bo_\bl_\bu_\bm_\be_\bw_\br_\bi_\bt_\be_\br_\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-grid-doc/doxygen/a00968.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00968.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: printgrid.hh File Reference\n+dune-grid: gnuplot.cc File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    printgrid.hh File Reference
    \n+Namespaces
    \n+
    gnuplot.cc File Reference
    \n \n
    \n-
    #include <fstream>
    \n-#include <string>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/common/mcmgmapper.hh>
    \n+\n+

    Implementation of gnuplot output for 1D and 2D grids. \n+More...

    \n+
    #include "../gnuplot.hh"
    \n
    \n

    Go to the source code of this file.

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

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n-\n-\n

    \n-Functions

    template<typename GridType >
    void Dune::printGrid (const GridType &grid, const Dune::MPIHelper &helper, std::string output_file="printgrid", int size=2000, bool execute_plot=true, bool png=true, bool local_corner_indices=true, bool local_intersection_indices=true, bool outer_normals=true)
     Print a grid as a gnuplot for testing and development.
     
    \n-
    \n+

    Detailed Description

    \n+

    Implementation of gnuplot output for 1D and 2D grids.

    \n+
    Author
    Christian Engwer
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,23 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-printgrid.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+ * _\bg_\bn_\bu_\bp_\bl_\bo_\bt\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+gnuplot.cc File Reference\n+Implementation of gnuplot output for 1D and 2D grids. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \"_\b._\b._\b/_\bg_\bn_\bu_\bp_\bl_\bo_\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 N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\bG_\br_\bi_\bd (const GridType &grid, const Dune::MPIHelper &helper,\n- std::string output_file=\"printgrid\", int size=2000, bool\n- execute_plot=true, bool png=true, bool local_corner_indices=true, bool\n- local_intersection_indices=true, bool outer_normals=true)\n-\u00a0 Print a grid as a gnuplot for testing and development.\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+Implementation of gnuplot output for 1D and 2D grids.\n+ Author\n+ Christian Engwer\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00968_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00968_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: printgrid.hh Source File\n+dune-grid: gnuplot.cc Source File\n \n \n \n \n \n \n \n@@ -70,226 +70,136 @@\n \n \n \n \n \n \n \n
    \n-
    printgrid.hh
    \n+
    gnuplot.cc
    \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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_PRINTGRID_HH
    \n-
    6#define DUNE_PRINTGRID_HH
    \n-
    7
    \n-
    8#include <fstream>
    \n-
    9#include <string>
    \n-
    10
    \n-
    11#include <dune/common/exceptions.hh>
    \n-
    12#include <dune/common/parallel/mpihelper.hh>
    \n-\n-
    14
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    17 namespace {
    \n-
    18
    \n-
    19 template<int dim>
    \n-
    20 struct ElementDataLayout
    \n-
    21 {
    \n-
    22 bool contains (Dune::GeometryType gt)
    \n-
    23 {
    \n-
    24 return gt.dim()==dim;
    \n-
    25 }
    \n-
    26 };
    \n-
    27
    \n-
    28 template<int dim>
    \n-
    29 struct NodeDataLayout
    \n-
    30 {
    \n-
    31 bool contains (Dune::GeometryType gt)
    \n-
    32 {
    \n-
    33 return gt.dim()==0;
    \n-
    34 }
    \n-
    35 };
    \n-
    36
    \n-
    37 // Move a point closer to basegeo's center by factor scale (used for drawing relative to the element)
    \n-
    38 template <typename B, typename C>
    \n-
    39 C centrify (const B& basegeo, const C& coords, const double scale) {
    \n-
    40 C ret = coords;
    \n-
    41 ret -= basegeo.center();
    \n-
    42 ret *= scale;
    \n-
    43 ret += basegeo.center();
    \n-
    44 return ret;
    \n-
    45 }
    \n-
    46
    \n-
    47 // Add a line to the plotfile from p1 to p2
    \n-
    48 template <typename Coord>
    \n-
    49 void draw_line (std::ofstream &plotfile, const Coord &p1, const Coord &p2, std::string options) {
    \n-
    50 plotfile << "set object poly from ";
    \n-
    51 plotfile << p1[0] << "," << p1[1] << " to ";
    \n-
    52 plotfile << p2[0] << "," << p2[1] << " to ";
    \n-
    53 plotfile << p1[0] << "," << p1[1];
    \n-
    54 plotfile << " " << options << std::endl;
    \n-
    55 }
    \n-
    56
    \n-
    57 }
    \n-
    58
    \n-
    72 template <typename GridType>
    \n-
    \n-
    73 void printGrid (const GridType& grid, const Dune::MPIHelper& helper, std::string output_file = "printgrid",
    \n-
    74 int size = 2000, bool execute_plot = true, bool png = true, bool local_corner_indices = true,
    \n-
    75 bool local_intersection_indices = true, bool outer_normals = true)
    \n-
    76 {
    \n-
    77
    \n-
    78 // Create output file
    \n-
    79 output_file = output_file + "_" + std::to_string(helper.rank());
    \n-
    80 std::string plot_file_name = output_file + ".gnuplot";
    \n-
    81 std::ofstream plotfile (plot_file_name, std::ios::out | std::ios::trunc);
    \n-
    82 if (!plotfile.is_open()) {
    \n-
    83 DUNE_THROW(Dune::IOError, "Could not create plot file " << output_file << "!");
    \n-
    84 return;
    \n-
    85 }
    \n-
    86
    \n-
    87 // Basic plot settings
    \n-
    88 plotfile << "set size ratio -1" << std::endl;
    \n-
    89 if (png) {
    \n-
    90 plotfile << "set terminal png size " << size << "," << size << std::endl;
    \n-
    91 plotfile << "set output '" << output_file << ".png'" << std::endl;
    \n-
    92 } else {
    \n-
    93 plotfile << "set terminal svg size " << size << "," << size << " enhanced background rgb 'white'" << std::endl;
    \n-
    94 plotfile << "set output '" << output_file << ".svg'" << std::endl;
    \n-
    95 }
    \n-
    96
    \n-
    97 // Get GridView
    \n-
    98 typedef typename GridType::LeafGridView GV;
    \n-
    99 const GV gv = grid.leafGridView();
    \n-
    100
    \n-
    101 // Create mappers used to retrieve indices
    \n-\n-
    103 const Mapper elementmapper(gv, mcmgElementLayout());
    \n-
    104 const Mapper nodemapper(gv, mcmgVertexLayout());
    \n-
    105
    \n-
    106 // Create iterators
    \n-
    107 typedef typename GV::template Codim<0 >::Iterator LeafIterator;
    \n-
    108 typedef typename GV::IntersectionIterator IntersectionIterator;
    \n-
    109
    \n-
    110 LeafIterator it = gv.template begin<0>();
    \n-
    111
    \n-
    112 // Will contain min/max coordinates. Needed for scaling of the plot
    \n-
    113 Dune::FieldVector<typename GridType::ctype,2> max_coord (it->geometry().center()), min_coord (max_coord);
    \n+
    10#include "../gnuplot.hh"
    \n+
    11
    \n+
    12namespace Dune {
    \n+
    13
    \n+
    17 template<class GridView>
    \n+
    18 void
    \n+
    \n+
    19 GnuplotWriter<GridView>::write(const std::string& filename) const
    \n+
    20 {
    \n+
    21 // open file
    \n+
    22 std::ofstream file(filename.c_str());
    \n+
    23 // write all column names
    \n+
    24 file << "# coord\\t";
    \n+
    25 for (size_t i=0; i<_names.size(); i++)
    \n+
    26 file << _names[i] << "\\t";
    \n+
    27 file << "\\n";
    \n+
    28
    \n+
    29 if (dimworld==1) {
    \n+
    30#if !NDEBUG
    \n+
    31 int counter = 0;
    \n+
    32#endif
    \n+
    33 typedef typename GridView::template Codim<0>::Iterator CellIterator;
    \n+
    34 CellIterator it = _gv.template begin<0>();
    \n+
    35 CellIterator end = _gv.template end<0>();
    \n+
    36 for (; it != end; ++it)
    \n+
    37 {
    \n+
    38 int i = _is.index(*it);
    \n+
    39 // check that the elements are numbered consecutively
    \n+
    40 assert (i == counter++);
    \n+
    41 // calc positions
    \n+
    42 assert(it->geometry().corners() == 2);
    \n+
    43 const FieldVector<ctype,dimworld>& left = it->geometry().corner(0);
    \n+
    44 const FieldVector<ctype,dimworld>& right = it->geometry().corner(1);
    \n+
    45 assert(left[0] < right[0]);
    \n+
    46 // write gnuplot rows for left & right vertex
    \n+
    47 writeRow(file, left, _data[2*i]);
    \n+
    48 writeRow(file, right, _data[2*i+1]);
    \n+
    49 }
    \n+
    50
    \n+
    51 } else {
    \n+
    52
    \n+
    53 typedef typename GridView::template Codim<dimworld>::Iterator VertexIterator;
    \n+
    54 VertexIterator it = _gv.template begin<dimworld>();
    \n+
    55 VertexIterator end = _gv.template end<dimworld>();
    \n+
    56 for (; it != end; ++it) {
    \n+
    57
    \n+
    58 // write gnuplot rows for vertex
    \n+
    59 writeRow(file, it->geometry().corner(0), _data[_is.index(*it)]);
    \n+
    60
    \n+
    61 }
    \n+
    62
    \n+
    63 }
    \n+
    64
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    67 template<class GridView>
    \n+
    68 void
    \n+
    \n+\n+
    70 const FieldVector<ctype,dimworld>& position,
    \n+
    71 const std::vector<float> & data) const
    \n+
    72 {
    \n+
    73 assert (data.size() == _names.size());
    \n+
    74 // write position
    \n+
    75 file << position << "\\t";
    \n+
    76 // write all data columns
    \n+
    77 for (size_t j=0; j<data.size(); j++)
    \n+
    78 file << data[j] << "\\t";
    \n+
    79 file << "\\n";
    \n+
    80 }
    \n+
    81
    \n+
    87 template<class GridView>
    \n+
    88 template<class DataContainer>
    \n+
    89 void
    \n+
    90 GnuplotWriter<GridView>::addData(DataType t, const DataContainer& data, const std::string & name)
    \n+
    91 {
    \n+
    92 assert((t == cellData && _is.size(0) == data.size())
    \n+
    93 || (t == vertexData && _is.size(GridView::dimension) == data.size()) );
    \n+
    94 _names.push_back(name);
    \n+
    95
    \n+
    96 // copy data to new container
    \n+
    97
    \n+
    98 if (dimworld==1) {
    \n+
    99
    \n+
    100 // data is transformed to nonconforming vertex data
    \n+
    101 int c = 0;
    \n+
    102 int shift = (t==vertexData ? 1 : 0);
    \n+
    103 for (size_t i=0; i<_is.size(0); i++)
    \n+
    104 {
    \n+
    105 _data[c++].push_back(data[i]);
    \n+
    106 _data[c++].push_back(data[i+shift]);
    \n+
    107 };
    \n+
    108
    \n+
    109 } else {
    \n+
    110
    \n+
    111 // 2d: only vertex data is allowed
    \n+
    112 for (size_t i=0; i<_is.size(dimworld); i++)
    \n+
    113 _data[i].push_back(data[i]);
    \n
    114
    \n-
    115 // Iterate over elements
    \n-
    116 for (; it != gv.template end<0>(); ++it) {
    \n-
    117
    \n-
    118 const auto& entity = *it;
    \n-
    119 auto geo = entity.geometry();
    \n-
    120
    \n-
    121 // Plot element index
    \n-
    122 int element_id = elementmapper.index(entity);
    \n-
    123 plotfile << "set label at " << geo.center()[0] << "," << geo.center()[1] << " '"
    \n-
    124 << element_id << "' center" << std::endl;
    \n-
    125
    \n-
    126 for (int i = 0; i < geo.corners(); ++i) {
    \n-
    127 // Plot corner indices
    \n-
    128 const int globalNodeNumber1 = nodemapper.subIndex(entity, i, 2);
    \n-
    129 auto labelpos = centrify (geo, geo.corner(i), 0.7);
    \n-
    130 plotfile << "set label at " << labelpos[0] << "," << labelpos[1] << " '" << globalNodeNumber1;
    \n-
    131 if (local_corner_indices)
    \n-
    132 plotfile << "(" << i << ")";
    \n-
    133 plotfile << "' center" << std::endl;
    \n-
    134
    \n-
    135 // Adapt min / max coordinates
    \n-
    136 for (int dim = 0; dim < 2; ++dim) {
    \n-
    137 if (geo.corner(i)[dim] < min_coord[dim])
    \n-
    138 min_coord[dim] = geo.corner(i)[dim];
    \n-
    139 else if (geo.corner(i)[dim] > max_coord[dim])
    \n-
    140 max_coord[dim] = geo.corner(i)[dim];
    \n-
    141 }
    \n-
    142 }
    \n-
    143
    \n-
    144 // Iterate over intersections
    \n-
    145 for (IntersectionIterator is = gv.ibegin(entity); is != gv.iend(entity); ++is) {
    \n-
    146
    \n-
    147 const auto& intersection = *is;
    \n-
    148 auto igeo = intersection.geometry();
    \n-
    149
    \n-
    150 // Draw intersection line
    \n-
    151 draw_line (plotfile, igeo.corner(0), igeo.corner(1), "fs empty border 1");
    \n-
    152
    \n-
    153 // Plot local intersection index
    \n-
    154 if (local_intersection_indices) {
    \n-
    155 auto label_pos = centrify (geo, igeo.center(), 0.8);
    \n-
    156 plotfile << "set label at " << label_pos[0] << "," << label_pos[1]
    \n-
    157 << " '" << intersection.indexInInside() << "' center" << std::endl;
    \n-
    158 }
    \n-
    159
    \n-
    160 // Plot outer normal
    \n-
    161 if (outer_normals) {
    \n-
    162 auto intersection_pos = igeo.center();
    \n-
    163 auto normal = intersection.centerUnitOuterNormal();
    \n-
    164 normal *= 0.15 * igeo.volume();
    \n-
    165 auto normal_end = intersection_pos + normal;
    \n-
    166 plotfile << "set arrow from " << intersection_pos[0] << "," << intersection_pos[1]
    \n-
    167 << " to " << normal_end[0] << "," << normal_end[1] << " lt rgb \\"gray\\"" << std::endl;
    \n-
    168 }
    \n-
    169
    \n-
    170 // Get corners for inner intersection representation
    \n-
    171 auto inner_corner1 = centrify (geo, igeo.corner(0), 0.5);
    \n-
    172 auto inner_corner2 = centrify (geo, igeo.corner(1), 0.5);
    \n-
    173
    \n-
    174 // Thick line in case of boundary()
    \n-
    175 if (intersection.boundary())
    \n-
    176 draw_line (plotfile, inner_corner1, inner_corner2, "fs empty border 3 lw 4");
    \n-
    177
    \n-
    178 // Thin line with color according to neighbor()
    \n-
    179 if (intersection.neighbor())
    \n-
    180 draw_line (plotfile, inner_corner1, inner_corner2, "fs empty border 2");
    \n-
    181 else
    \n-
    182 draw_line (plotfile, inner_corner1, inner_corner2, "fs empty border 1");
    \n-
    183 }
    \n-
    184
    \n-
    185 }
    \n-
    186
    \n-
    187 // Finish plot, pass extend of the grid
    \n-
    188 Dune::FieldVector<typename GridType::ctype,2> extend (max_coord - min_coord);
    \n-
    189
    \n-
    190 extend *= 0.2;
    \n-
    191 min_coord -= extend;
    \n-
    192 max_coord += extend;
    \n-
    193 plotfile << "plot [" << min_coord[0] << ":" << max_coord[0] << "] [" << min_coord[1]
    \n-
    194 << ":" << max_coord[1] << "] NaN notitle" << std::endl;
    \n-
    195 plotfile.close();
    \n-
    196
    \n-
    197 if (execute_plot) {
    \n-
    198 std::string cmd = "gnuplot -p '" + plot_file_name + "'";
    \n-
    199 if (std::system (cmd.c_str()) != 0)
    \n-
    200 DUNE_THROW(Dune::Exception,"Error running GNUPlot: " << cmd);
    \n-
    201 }
    \n-
    202 }
    \n+
    115 }
    \n+
    116
    \n+
    117 }
    \n+
    118
    \n+
    119}
    \n
    \n-
    203
    \n-
    204}
    \n-
    205
    \n-
    206#endif // #ifndef DUNE_PRINTGRID_HH
    \n-
    Mapper for multiple codim and multiple geometry types.
    \n-
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n-
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    void printGrid(const GridType &grid, const Dune::MPIHelper &helper, std::string output_file="printgrid", int size=2000, bool execute_plot=true, bool png=true, bool local_corner_indices=true, bool local_intersection_indices=true, bool outer_normals=true)
    Print a grid as a gnuplot for testing and development.
    Definition printgrid.hh:73
    \n-
    Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
    Definition common/intersectioniterator.hh:83
    \n-
    Mapper interface.
    Definition mapper.hh:110
    \n-
    Index index(const EntityType &e) const
    Map entity to array index.
    Definition mapper.hh:122
    \n-
    Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity i of codim cc of a codim 0 entity to array index.
    Definition mapper.hh:136
    \n-
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n+
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n+
    Writer for 1D grids in gnuplot format.
    Definition gnuplot.hh:30
    \n+
    void write(const std::string &filename) const
    Write Gnuplot file to disk.
    Definition gnuplot.cc:19
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,259 +2,139 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n-printgrid.hh\n+ * _\bg_\bn_\bu_\bp_\bl_\bo_\bt\n+gnuplot.cc\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_PRINTGRID_HH\n-6#define DUNE_PRINTGRID_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/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-17 namespace {\n-18\n-19 template\n-20 struct ElementDataLayout\n-21 {\n-22 bool contains (Dune::GeometryType gt)\n-23 {\n-24 return gt.dim()==dim;\n-25 }\n-26 };\n-27\n-28 template\n-29 struct NodeDataLayout\n-30 {\n-31 bool contains (Dune::GeometryType gt)\n-32 {\n-33 return gt.dim()==0;\n-34 }\n-35 };\n-36\n-37 // Move a point closer to basegeo's center by factor scale (used for drawing\n-relative to the element)\n-38 template \n-39 C centrify (const B& basegeo, const C& coords, const double scale) {\n-40 C ret = coords;\n-41 ret -= basegeo.center();\n-42 ret *= scale;\n-43 ret += basegeo.center();\n-44 return ret;\n-45 }\n-46\n-47 // Add a line to the plotfile from p1 to p2\n-48 template \n-49 void draw_line (std::ofstream &plotfile, const Coord &p1, const Coord &p2,\n-std::string options) {\n-50 plotfile << \"set object poly from \";\n-51 plotfile << p1[0] << \",\" << p1[1] << \" to \";\n-52 plotfile << p2[0] << \",\" << p2[1] << \" to \";\n-53 plotfile << p1[0] << \",\" << p1[1];\n-54 plotfile << \" \" << options << std::endl;\n-55 }\n-56\n-57 }\n-58\n-72 template \n-_\b7_\b3 void _\bp_\br_\bi_\bn_\bt_\bG_\br_\bi_\bd (const GridType& grid, const Dune::MPIHelper& helper, std::\n-string output_file = \"printgrid\",\n-74 int size = 2000, bool execute_plot = true, bool png = true, bool\n-local_corner_indices = true,\n-75 bool local_intersection_indices = true, bool outer_normals = true)\n-76 {\n-77\n-78 // Create output file\n-79 output_file = output_file + \"_\" + std::to_string(helper.rank());\n-80 std::string plot_file_name = output_file + \".gnuplot\";\n-81 std::ofstream plotfile (plot_file_name, std::ios::out | std::ios::trunc);\n-82 if (!plotfile.is_open()) {\n-83 DUNE_THROW(Dune::IOError, \"Could not create plot file \" << output_file <<\n-\"!\");\n-84 return;\n-85 }\n-86\n-87 // Basic plot settings\n-88 plotfile << \"set size ratio -1\" << std::endl;\n-89 if (png) {\n-90 plotfile << \"set terminal png size \" << size << \",\" << size << std::endl;\n-91 plotfile << \"set output '\" << output_file << \".png'\" << std::endl;\n-92 } else {\n-93 plotfile << \"set terminal svg size \" << size << \",\" << size << \" enhanced\n-background rgb 'white'\" << std::endl;\n-94 plotfile << \"set output '\" << output_file << \".svg'\" << std::endl;\n-95 }\n-96\n-97 // Get GridView\n-98 typedef typename GridType::LeafGridView GV;\n-99 const GV gv = grid.leafGridView();\n-100\n-101 // Create mappers used to retrieve indices\n-102 typedef typename _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\bV_\b> _\bM_\ba_\bp_\bp_\be_\br;\n-103 const _\bM_\ba_\bp_\bp_\be_\br elementmapper(gv, _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt());\n-104 const _\bM_\ba_\bp_\bp_\be_\br nodemapper(gv, _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt());\n-105\n-106 // Create iterators\n-107 typedef typename GV::template Codim<0 >::Iterator LeafIterator;\n-108 typedef typename GV::IntersectionIterator _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-109\n-110 LeafIterator it = gv.template begin<0>();\n-111\n-112 // Will contain min/max coordinates. Needed for scaling of the plot\n-113 Dune::FieldVector max_coord (it->geometry\n-().center()), min_coord (max_coord);\n+10#include \"../gnuplot.hh\"\n+11\n+12namespace _\bD_\bu_\bn_\be {\n+13\n+17 template\n+18 void\n+_\b1_\b9 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be(const std::string& filename) const\n+20 {\n+21 // open file\n+22 std::ofstream file(filename.c_str());\n+23 // write all column names\n+24 file << \"# coord\\t\";\n+25 for (size_t i=0; i<_names.size(); i++)\n+26 file << _names[i] << \"\\t\";\n+27 file << \"\\n\";\n+28\n+29 if (dimworld==1) {\n+30#if !NDEBUG\n+31 int counter = 0;\n+32#endif\n+33 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<0>::Iterator CellIterator;\n+34 CellIterator it = _gv.template begin<0>();\n+35 CellIterator end = _gv.template end<0>();\n+36 for (; it != end; ++it)\n+37 {\n+38 int i = _is.index(*it);\n+39 // check that the elements are numbered consecutively\n+40 assert (i == counter++);\n+41 // calc positions\n+42 assert(it->geometry().corners() == 2);\n+43 const FieldVector& left = it->geometry().corner(0);\n+44 const FieldVector& right = it->geometry().corner(1);\n+45 assert(left[0] < right[0]);\n+46 // write gnuplot rows for left & right vertex\n+47 writeRow(file, left, _data[2*i]);\n+48 writeRow(file, right, _data[2*i+1]);\n+49 }\n+50\n+51 } else {\n+52\n+53 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim::Iterator\n+VertexIterator;\n+54 VertexIterator it = _gv.template begin();\n+55 VertexIterator end = _gv.template end();\n+56 for (; it != end; ++it) {\n+57\n+58 // write gnuplot rows for vertex\n+59 writeRow(file, it->geometry().corner(0), _data[_is.index(*it)]);\n+60\n+61 }\n+62\n+63 }\n+64\n+65 }\n+66\n+67 template\n+68 void\n+_\b6_\b9 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\bw_\br_\bi_\bt_\be_\bR_\bo_\bw(std::ostream & file,\n+70 const FieldVector& position,\n+71 const std::vector & data) const\n+72 {\n+73 assert (data.size() == _names.size());\n+74 // write position\n+75 file << position << \"\\t\";\n+76 // write all data columns\n+77 for (size_t j=0; j\n+88 template\n+89 void\n+90 _\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>_\b:_\b:_\ba_\bd_\bd_\bD_\ba_\bt_\ba(DataType t, const DataContainer& data,\n+const std::string & name)\n+91 {\n+92 assert((t == cellData && _is.size(0) == data.size())\n+93 || (t == vertexData && _is.size(_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn) == data.size()) );\n+94 _names.push_back(name);\n+95\n+96 // copy data to new container\n+97\n+98 if (dimworld==1) {\n+99\n+100 // data is transformed to nonconforming vertex data\n+101 int c = 0;\n+102 int shift = (t==vertexData ? 1 : 0);\n+103 for (size_t i=0; i<_is.size(0); i++)\n+104 {\n+105 _data[c++].push_back(data[i]);\n+106 _data[c++].push_back(data[i+shift]);\n+107 };\n+108\n+109 } else {\n+110\n+111 // 2d: only vertex data is allowed\n+112 for (size_t i=0; i<_is.size(dimworld); i++)\n+113 _data[i].push_back(data[i]);\n 114\n-115 // Iterate over elements\n-116 for (; it != gv.template end<0>(); ++it) {\n-117\n-118 const auto& entity = *it;\n-119 auto geo = entity.geometry();\n-120\n-121 // Plot element index\n-122 int element_id = elementmapper._\bi_\bn_\bd_\be_\bx(entity);\n-123 plotfile << \"set label at \" << geo.center()[0] << \",\" << geo.center()[1] <<\n-\" '\"\n-124 << element_id << \"' center\" << std::endl;\n-125\n-126 for (int i = 0; i < geo.corners(); ++i) {\n-127 // Plot corner indices\n-128 const int globalNodeNumber1 = nodemapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(entity, i, 2);\n-129 auto labelpos = centrify (geo, geo.corner(i), 0.7);\n-130 plotfile << \"set label at \" << labelpos[0] << \",\" << labelpos[1] << \" '\" <<\n-globalNodeNumber1;\n-131 if (local_corner_indices)\n-132 plotfile << \"(\" << i << \")\";\n-133 plotfile << \"' center\" << std::endl;\n-134\n-135 // Adapt min / max coordinates\n-136 for (int dim = 0; dim < 2; ++dim) {\n-137 if (geo.corner(i)[dim] < min_coord[dim])\n-138 min_coord[dim] = geo.corner(i)[dim];\n-139 else if (geo.corner(i)[dim] > max_coord[dim])\n-140 max_coord[dim] = geo.corner(i)[dim];\n-141 }\n-142 }\n-143\n-144 // Iterate over intersections\n-145 for (_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br is = gv.ibegin(entity); is != gv.iend(entity);\n-++is) {\n-146\n-147 const auto& intersection = *is;\n-148 auto igeo = intersection.geometry();\n-149\n-150 // Draw intersection line\n-151 draw_line (plotfile, igeo.corner(0), igeo.corner(1), \"fs empty border 1\");\n-152\n-153 // Plot local intersection index\n-154 if (local_intersection_indices) {\n-155 auto label_pos = centrify (geo, igeo.center(), 0.8);\n-156 plotfile << \"set label at \" << label_pos[0] << \",\" << label_pos[1]\n-157 << \" '\" << intersection.indexInInside() << \"' center\" << std::endl;\n-158 }\n-159\n-160 // Plot outer normal\n-161 if (outer_normals) {\n-162 auto intersection_pos = igeo.center();\n-163 auto normal = intersection.centerUnitOuterNormal();\n-164 normal *= 0.15 * igeo.volume();\n-165 auto normal_end = intersection_pos + normal;\n-166 plotfile << \"set arrow from \" << intersection_pos[0] << \",\" <<\n-intersection_pos[1]\n-167 << \" to \" << normal_end[0] << \",\" << normal_end[1] << \" lt rgb \\\"gray\\\"\" <<\n-std::endl;\n-168 }\n-169\n-170 // Get corners for inner intersection representation\n-171 auto inner_corner1 = centrify (geo, igeo.corner(0), 0.5);\n-172 auto inner_corner2 = centrify (geo, igeo.corner(1), 0.5);\n-173\n-174 // Thick line in case of boundary()\n-175 if (intersection.boundary())\n-176 draw_line (plotfile, inner_corner1, inner_corner2, \"fs empty border 3 lw\n-4\");\n-177\n-178 // Thin line with color according to neighbor()\n-179 if (intersection.neighbor())\n-180 draw_line (plotfile, inner_corner1, inner_corner2, \"fs empty border 2\");\n-181 else\n-182 draw_line (plotfile, inner_corner1, inner_corner2, \"fs empty border 1\");\n-183 }\n-184\n-185 }\n-186\n-187 // Finish plot, pass extend of the grid\n-188 Dune::FieldVector extend (max_coord -\n-min_coord);\n-189\n-190 extend *= 0.2;\n-191 min_coord -= extend;\n-192 max_coord += extend;\n-193 plotfile << \"plot [\" << min_coord[0] << \":\" << max_coord[0] << \"] [\" <<\n-min_coord[1]\n-194 << \":\" << max_coord[1] << \"] NaN notitle\" << std::endl;\n-195 plotfile.close();\n-196\n-197 if (execute_plot) {\n-198 std::string cmd = \"gnuplot -p '\" + plot_file_name + \"'\";\n-199 if (std::system (cmd.c_str()) != 0)\n-200 DUNE_THROW(Dune::Exception,\"Error running GNUPlot: \" << cmd);\n-201 }\n-202 }\n-203\n-204}\n-205\n-206#endif // #ifndef DUNE_PRINTGRID_HH\n-_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n-Mapper for multiple codim and multiple geometry types.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgElementLayout()\n-layout for elements (codim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgVertexLayout()\n-layout for vertices (dim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n+115 }\n+116\n+117 }\n+118\n+119}\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt_\bG_\br_\bi_\bd\n-void printGrid(const GridType &grid, const Dune::MPIHelper &helper, std::string\n-output_file=\"printgrid\", int size=2000, bool execute_plot=true, bool png=true,\n-bool local_corner_indices=true, bool local_intersection_indices=true, bool\n-outer_normals=true)\n-Print a grid as a gnuplot for testing and development.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn printgrid.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Mesh entities of codimension 0 (\"elements\") allow to visit all intersections\n-with \"neighboring\" eleme...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersectioniterator.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br\n-Mapper interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-Index index(const EntityType &e) const\n-Map entity to array index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-Index subIndex(const typename G::Traits::template Codim< 0 >::Entity &e, int i,\n-unsigned int codim) const\n-Map subentity i of codim cc of a codim 0 entity to array index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-Implementation class for a multiple codim and multiple geometry type mapper.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A struct that collects all associated types of one implementation from the\n+Traits class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br\n+Writer for 1D grids in gnuplot format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bn_\bu_\bp_\bl_\bo_\bt_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(const std::string &filename) const\n+Write Gnuplot file to disk.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gnuplot.cc:19\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00974.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00974.html", "unified_diff": "@@ -85,15 +85,15 @@\n

    The UGGrid class. \n More...

    \n
    #include <memory>
    \n #include <dune/common/classname.hh>
    \n #include <dune/common/parallel/communication.hh>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/common/boundarysegment.hh>
    \n+#include <dune/grid/common/boundarysegment.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n #include <dune/grid/common/grid.hh>
    \n #include "uggrid/ugincludes.hh"
    \n #include "uggrid/ugwrapper.hh"
    \n #include "uggrid/ug_undefs.hh"
    \n #include "uggrid/uggridgeometry.hh"
    \n #include "uggrid/uggridlocalgeometry.hh"
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00974_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00974_source.html", "unified_diff": "@@ -92,15 +92,15 @@\n
    13#include <memory>
    \n
    14
    \n
    15#include <dune/common/classname.hh>
    \n
    16#include <dune/common/parallel/communication.hh>
    \n
    17#include <dune/common/exceptions.hh>
    \n
    18#include <dune/common/parallel/mpihelper.hh>
    \n
    19
    \n-\n+\n \n \n
    23
    \n
    24#if HAVE_DUNE_UGGRID || DOXYGEN
    \n
    25
    \n
    26#ifdef ModelP
    \n
    27#include <dune/common/parallel/mpicommunication.hh>
    \n@@ -660,15 +660,15 @@\n
    811
    \n
    812 }
    \n
    813
    \n
    814} // namespace Dune
    \n
    815
    \n
    816#endif // HAVE_DUNE_UGGRID || DOXYGEN
    \n
    817#endif // DUNE_UGGRID_HH
    \n-
    Base class for grid boundary segments of arbitrary geometry.
    \n+
    Base class for grid boundary segments of arbitrary geometry.
    \n
    The specialization of the generic GridFactory for UGGrid.
    \n
    CommunicationDirection
    Define a type for communication direction parameter.
    Definition gridenums.hh:170
    \n
    InterfaceType
    Parameter to be used for the communication functions.
    Definition gridenums.hh:86
    \n
    @ ForwardCommunication
    communicate as given in InterfaceType
    Definition gridenums.hh:171
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Communication< No_Comm > UGCommunication
    Definition uggrid.hh:137
    \n
    Specialize with 'true' for all codims that a grid implements entities for. (default=false)
    Definition common/capabilities.hh:58
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00977.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00977.html", "unified_diff": "@@ -82,15 +82,15 @@\n \n

    The specialization of the generic GridFactory for UGGrid. \n More...

    \n
    #include <array>
    \n #include <memory>
    \n #include <vector>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/grid/common/boundarysegment.hh>
    \n+#include <dune/grid/common/boundarysegment.hh>
    \n #include <dune/grid/common/gridfactory.hh>
    \n #include <dune/grid/uggrid.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00977_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00977_source.html", "unified_diff": "@@ -91,15 +91,15 @@\n
    8
    \n
    14#include <array>
    \n
    15#include <memory>
    \n
    16#include <vector>
    \n
    17
    \n
    18#include <dune/common/fvector.hh>
    \n
    19
    \n-\n+\n \n
    22#include <dune/grid/uggrid.hh>
    \n
    23
    \n
    24namespace Dune {
    \n
    25
    \n
    26
    \n
    162 template <int dimworld>
    \n@@ -205,15 +205,15 @@\n
    303
    \n
    304 };
    \n \n
    305
    \n
    306}
    \n
    307
    \n
    308#endif
    \n-
    Base class for grid boundary segments of arbitrary geometry.
    \n+
    Base class for grid boundary segments of arbitrary geometry.
    \n
    The UGGrid class.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Base class for classes implementing geometries of boundary segments.
    Definition boundarysegment.hh:94
    \n
    GridFamily::Traits::LeafIntersection LeafIntersection
    A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
    Definition common/grid.hh:456
    \n
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:73
    \n
    virtual unsigned int insertionIndex(const typename Codim< 0 >::Entity &entity) const
    obtain an element's insertion index
    Definition common/gridfactory.hh:220
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00980.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00980.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vertexorderfactory.hh File Reference\n+dune-grid: persistentcontainerwrapper.hh File Reference\n \n \n \n \n \n \n \n@@ -72,33 +72,25 @@\n
  • dune
  • grid
  • utility
  • \n \n \n
    \n \n-
    vertexorderfactory.hh File Reference
    \n+
    persistentcontainerwrapper.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <cstddef>
    \n-#include <functional>
    \n-#include <vector>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/generalvertexorder.hh>
    \n+\n

    Go to the source code of this file.

    \n

    \n Classes

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

    \n Classes

    class  Dune::VertexOrderByIdFactory< IdSet, Index >
     Factory for GeneralVertexOrder objects using an IdSet. More...
     
    struct  Dune::VertexOrderByIdFactory< IdSet, Index >::VertexOrder< dim >
     type of vertex order object may depend on the dimension of the element More...
    class  Dune::PersistentContainerWrapper< G, T >
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,20 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-vertexorderfactory.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n+persistentcontainerwrapper.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\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:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bI_\bn_\bd_\be_\bx_\b _\b>\n-\u00a0 Factory for GeneralVertexOrder objects using an _\bI_\bd_\bS_\be_\bt. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bI_\bn_\bd_\be_\bx_\b _\b>_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 type of vertex order object may depend on the dimension of the element\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b,_\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 \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00980_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00980_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vertexorderfactory.hh Source File\n+dune-grid: persistentcontainerwrapper.hh Source File\n \n \n \n \n \n \n \n@@ -74,82 +74,150 @@\n \n
    \n \n
    \n \n
    \n-
    vertexorderfactory.hh
    \n+
    persistentcontainerwrapper.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH
    \n-
    7#define DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH
    \n-
    8
    \n-
    9#include <algorithm>
    \n-
    10#include <cstddef>
    \n-
    11#include <functional>
    \n-
    12#include <vector>
    \n+
    5#ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH
    \n+
    6#define DUNE_PERSISTENTCONTAINERWRAPPER_HH
    \n+
    7
    \n+\n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n
    13
    \n-
    14#include <dune/geometry/referenceelements.hh>
    \n-
    15#include <dune/geometry/generalvertexorder.hh>
    \n+
    14 // PersistentContainerWrapper
    \n+
    15 // --------------------------
    \n
    16
    \n-
    17namespace Dune {
    \n-
    18
    \n-
    20
    \n-
    31 template<class IdSet, class Index = std::size_t>
    \n-
    \n-\n-
    33 const IdSet& idset;
    \n-
    34
    \n-
    35 public:
    \n-
    37 template<std::size_t dim>
    \n-
    \n-
    38 struct VertexOrder {
    \n-
    40 typedef GeneralVertexOrder<dim, Index> type;
    \n-
    41 };
    \n-
    \n-
    42
    \n-
    44
    \n-
    53 VertexOrderByIdFactory(const IdSet &idset_) : idset(idset_) { }
    \n-
    54
    \n-
    56
    \n-
    62 template<typename Element>
    \n-\n-
    \n-
    64 make(const Element &e) const {
    \n-
    65
    \n-
    66 std::size_t size = referenceElement(e.geometry()).size(Element::mydimension);
    \n-
    67
    \n-
    68 std::vector<typename IdSet::IdType> ids(size);
    \n-
    69 for(std::size_t i = 0; i < size; ++i)
    \n-
    70 ids[i] = idset.subId(e, i, Element::mydimension);
    \n-
    71 return GeneralVertexOrder<Element::mydimension, Index>
    \n-
    72 (e.type(), ids.begin(), ids.end());
    \n-
    73 }
    \n-
    \n-
    74 };
    \n+
    17 template< class G, class T >
    \n+
    \n+\n+
    19 {
    \n+\n+
    21
    \n+\n+
    23
    \n+
    24 typedef typename HostGridAccess::HostGrid HostGrid;
    \n+\n+
    26
    \n+
    27 public:
    \n+
    28 typedef G Grid;
    \n+
    29
    \n+\n+\n+
    32
    \n+\n+\n+
    35
    \n+
    \n+
    36 PersistentContainerWrapper ( const Grid &grid, int codim, const Value &value = Value() )
    \n+
    37 : hostContainer_( HostGridAccess::hostGrid( grid ), codim, value )
    \n+
    38 {}
    \n+
    \n+
    39
    \n+
    40 template< class Entity >
    \n+
    \n+
    41 const Value &operator[] ( const Entity &entity ) const
    \n+
    42 {
    \n+
    43 return hostContainer_[ HostGridAccess::hostEntity( entity ) ];
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    46 template< class Entity >
    \n+
    \n+
    47 Value &operator[] ( const Entity &entity )
    \n+
    48 {
    \n+
    49 return hostContainer_[ HostGridAccess::hostEntity( entity ) ];
    \n+
    50 }
    \n+
    \n+
    51
    \n+
    52 template< class Entity >
    \n+
    \n+
    53 const Value &operator() ( const Entity &entity, int subEntity ) const
    \n+
    54 {
    \n+
    55 return hostContainer_( HostGridAccess::hostEntity( entity ), subEntity );
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    58 template< class Entity >
    \n+
    \n+
    59 Value &operator() ( const Entity &entity, int subEntity )
    \n+
    60 {
    \n+
    61 return hostContainer_( HostGridAccess::hostEntity( entity ), subEntity );
    \n+
    62 }
    \n
    \n+
    63
    \n+
    64 Size size () const { return hostContainer_.size(); }
    \n+
    65
    \n+
    66 void resize ( const Value &value = Value() ) { hostContainer_.resize( value ); }
    \n+\n+
    68
    \n+
    69 void fill ( const Value &value = Value() ) { hostContainer_.fill( value ); }
    \n+
    70
    \n+
    71 void swap ( This &other ) { hostContainer_.swap( other.hostContainer_ ); }
    \n+
    72
    \n+
    73 ConstIterator begin () const { return hostContainer_.begin(); }
    \n+\n
    75
    \n-
    76} // namespace Dune
    \n-
    77
    \n-
    78#endif // DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH
    \n+
    76 ConstIterator end () const { return hostContainer_.end(); }
    \n+
    77 Iterator end () { return hostContainer_.end(); }
    \n+
    78
    \n+
    79 int codimension () const { return hostContainer_.codimension(); }
    \n+
    80
    \n+
    81 protected:
    \n+\n+
    83 };
    \n+
    \n+
    84
    \n+
    85} // namespace Dune
    \n+
    86
    \n+
    87#endif // #ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo) -> decltype(referenceElement(geo, geo.impl()))
    Definition common/geometry.hh:558
    \n-
    Id Set Interface.
    Definition indexidset.hh:452
    \n-
    IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Get id of subentity i of co-dimension codim of a co-dimension 0 entity.
    Definition indexidset.hh:486
    \n-
    Factory for GeneralVertexOrder objects using an IdSet.
    Definition vertexorderfactory.hh:32
    \n-
    VertexOrderByIdFactory(const IdSet &idset_)
    construct a factory object
    Definition vertexorderfactory.hh:53
    \n-
    VertexOrder< Element::mydimension >::type make(const Element &e) const
    construct a vertex ordering object
    Definition vertexorderfactory.hh:64
    \n-
    type of vertex order object may depend on the dimension of the element
    Definition vertexorderfactory.hh:38
    \n-
    GeneralVertexOrder< dim, Index > type
    type of vertex order object
    Definition vertexorderfactory.hh:40
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n+\n+
    void swap(This &other)
    Definition persistentcontainermap.hh:97
    \n+
    void fill(const Value &value)
    Definition persistentcontainermap.hh:95
    \n+
    int codimension() const
    Definition persistentcontainermap.hh:111
    \n+
    void resize(const Value &value=Value())
    Definition persistentcontainermap.hh:87
    \n+
    ConstIterator begin() const
    Definition persistentcontainermap.hh:175
    \n+
    ConstIterator end() const
    Definition persistentcontainermap.hh:190
    \n+
    Size size() const
    Definition persistentcontainermap.hh:85
    \n+
    void shrinkToFit()
    Definition persistentcontainermap.hh:93
    \n+
    Definition persistentcontainerwrapper.hh:19
    \n+
    void fill(const Value &value=Value())
    Definition persistentcontainerwrapper.hh:69
    \n+
    PersistentContainer< HostGrid, T >::ConstIterator ConstIterator
    Definition persistentcontainerwrapper.hh:34
    \n+
    Size size() const
    Definition persistentcontainerwrapper.hh:64
    \n+
    ConstIterator begin() const
    Definition persistentcontainerwrapper.hh:73
    \n+
    const Value & operator()(const Entity &entity, int subEntity) const
    Definition persistentcontainerwrapper.hh:53
    \n+
    G Grid
    Definition persistentcontainerwrapper.hh:28
    \n+
    const Value & operator[](const Entity &entity) const
    Definition persistentcontainerwrapper.hh:41
    \n+
    void resize(const Value &value=Value())
    Definition persistentcontainerwrapper.hh:66
    \n+
    PersistentContainer< HostGrid, T >::Size Size
    Definition persistentcontainerwrapper.hh:31
    \n+
    int codimension() const
    Definition persistentcontainerwrapper.hh:79
    \n+
    PersistentContainer< HostGrid, T >::Value Value
    Definition persistentcontainerwrapper.hh:30
    \n+
    void swap(This &other)
    Definition persistentcontainerwrapper.hh:71
    \n+
    ConstIterator end() const
    Definition persistentcontainerwrapper.hh:76
    \n+
    PersistentContainerWrapper(const Grid &grid, int codim, const Value &value=Value())
    Definition persistentcontainerwrapper.hh:36
    \n+
    PersistentContainer< HostGrid, T >::Iterator Iterator
    Definition persistentcontainerwrapper.hh:33
    \n+
    void shrinkToFit()
    Definition persistentcontainerwrapper.hh:67
    \n+
    Iterator begin()
    Definition persistentcontainerwrapper.hh:74
    \n+
    PersistentContainer< HostGrid, T > hostContainer_
    Definition persistentcontainerwrapper.hh:82
    \n+
    Iterator end()
    Definition persistentcontainerwrapper.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,96 +1,198 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-vertexorderfactory.hh\n+persistentcontainerwrapper.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH\n-7#define DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH\n-8\n-9#include \n-10#include \n-11#include \n-12#include \n+5#ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH\n+6#define DUNE_PERSISTENTCONTAINERWRAPPER_HH\n+7\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n 13\n-14#include \n-15#include \n+14 // PersistentContainerWrapper\n+15 // --------------------------\n 16\n-17namespace _\bD_\bu_\bn_\be {\n-18\n-20\n-31 template\n-_\b3_\b2 class _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-33 const _\bI_\bd_\bS_\be_\bt& idset;\n-34\n-35 public:\n-37 template\n-_\b3_\b8 struct _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br {\n-_\b4_\b0 typedef GeneralVertexOrder _\bt_\by_\bp_\be;\n-41 };\n-42\n-44\n-_\b5_\b3 _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by(const _\bI_\bd_\bS_\be_\bt &idset_) : idset(idset_) { }\n-54\n-56\n-62 template\n-63 typename _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b<_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b>_\b:_\b:_\bt_\by_\bp_\be\n-_\b6_\b4 _\bm_\ba_\bk_\be(const Element &e) const {\n+17 template< class G, class T >\n+_\b1_\b8 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+19 {\n+20 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b,_\b _\bT_\b _\b> _\bT_\bh_\bi_\bs;\n+21\n+22 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\b _\b> _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs;\n+23\n+24 typedef typename HostGridAccess::HostGrid HostGrid;\n+25 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b> _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n+26\n+27 public:\n+_\b2_\b8 typedef G _\bG_\br_\bi_\bd;\n+29\n+_\b3_\b0 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bV_\ba_\bl_\bu_\be _\bV_\ba_\bl_\bu_\be;\n+_\b3_\b1 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bS_\bi_\bz_\be _\bS_\bi_\bz_\be;\n+32\n+_\b3_\b3 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b3_\b4 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+35\n+_\b3_\b6 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br ( const _\bG_\br_\bi_\bd &grid, int codim, const _\bV_\ba_\bl_\bu_\be &value\n+= _\bV_\ba_\bl_\bu_\be() )\n+37 : _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs::hostGrid( grid ), codim, value )\n+38 {}\n+39\n+40 template< class Entity >\n+_\b4_\b1 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+42 {\n+43 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_[ HostGridAccess::hostEntity( entity ) ];\n+44 }\n+45\n+46 template< class Entity >\n+_\b4_\b7 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+48 {\n+49 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_[ HostGridAccess::hostEntity( entity ) ];\n+50 }\n+51\n+52 template< class Entity >\n+_\b5_\b3 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const\n+54 {\n+55 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_( HostGridAccess::hostEntity( entity ), subEntity );\n+56 }\n+57\n+58 template< class Entity >\n+_\b5_\b9 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity )\n+60 {\n+61 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_( HostGridAccess::hostEntity( entity ), subEntity );\n+62 }\n+63\n+_\b6_\b4 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bs_\bi_\bz_\be(); }\n 65\n-66 std::size_t size = _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(e.geometry()).size(Element::\n-mydimension);\n-67\n-68 std::vector ids(size);\n-69 for(std::size_t i = 0; i < size; ++i)\n-70 ids[i] = idset._\bs_\bu_\bb_\bI_\bd(e, i, Element::mydimension);\n-71 return GeneralVertexOrder\n-72 (e.type(), ids.begin(), ids.end());\n-73 }\n-74 };\n+_\b6_\b6 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() ) { _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\br_\be_\bs_\bi_\bz_\be( value\n+); }\n+_\b6_\b7 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt () { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt(); }\n+68\n+_\b6_\b9 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() ) { _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bf_\bi_\bl_\bl( value ); }\n+70\n+_\b7_\b1 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other ) { _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bs_\bw_\ba_\bp( other._\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_ ); }\n+72\n+_\b7_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bb_\be_\bg_\bi_\bn(); }\n+_\b7_\b4 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bb_\be_\bg_\bi_\bn(); }\n 75\n-76} // namespace Dune\n-77\n-78#endif // DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH\n+_\b7_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\be_\bn_\bd(); }\n+_\b7_\b7 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\be_\bn_\bd(); }\n+78\n+_\b7_\b9 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn(); }\n+80\n+81 protected:\n+_\b8_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b> _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_;\n+83 };\n+84\n+85} // namespace Dune\n+86\n+87#endif // #ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH\n+_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo)\n--> decltype(referenceElement(geo, geo.impl()))\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:558\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-Id Set Interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n-IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim)\n-const\n-Get id of subentity i of co-dimension codim of a co-dimension 0 entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:486\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for GeneralVertexOrder objects using an IdSet.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-VertexOrderByIdFactory(const IdSet &idset_)\n-construct a factory object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-VertexOrder< Element::mydimension >::type make(const Element &e) const\n-construct a vertex ordering object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br\n-type of vertex order object may depend on the dimension of the element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-GeneralVertexOrder< dim, Index > type\n-type of vertex order object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n+provides access to host grid objects from GeometryGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Value &value)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+int codimension() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Value &value=Value())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+ConstIterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\be_\bn_\bd\n+ConstIterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:190\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bi_\bz_\be\n+Size size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Value &value=Value())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+PersistentContainer< HostGrid, T >::ConstIterator ConstIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+Size size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+ConstIterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Value & operator()(const Entity &entity, int subEntity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const Value & operator[](const Entity &entity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Value &value=Value())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bS_\bi_\bz_\be\n+PersistentContainer< HostGrid, T >::Size Size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+int codimension() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+PersistentContainer< HostGrid, T >::Value Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\be_\bn_\bd\n+ConstIterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+PersistentContainerWrapper(const Grid &grid, int codim, const Value\n+&value=Value())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+PersistentContainer< HostGrid, T >::Iterator Iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_\n+PersistentContainer< HostGrid, T > hostContainer_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\be_\bn_\bd\n+Iterator end()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:77\n+_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\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-grid-doc/doxygen/a00983.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00983.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: tensorgridfactory.hh File Reference\n+dune-grid: parmetisgridpartitioner.hh File Reference\n \n \n \n \n \n \n \n@@ -69,53 +69,32 @@\n \n
    \n \n
    \n
    \n
    \n- \n-
    tensorgridfactory.hh File Reference
    \n+
    parmetisgridpartitioner.hh File Reference
    \n
    \n
    \n \n-

    This file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series. \n+

    Compute a repartitioning of a Dune grid using ParMetis. \n More...

    \n-
    #include <array>
    \n-#include <memory>
    \n+
    #include <algorithm>
    \n #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/grid/common/gridfactory.hh>
    \n-#include <dune/grid/yaspgrid.hh>
    \n-#include <dune/grid/utility/multiindex.hh>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/grid/utility/globalindexset.hh>
    \n+#include <dune/grid/common/mcmgmapper.hh>
    \n+#include <dune/grid/common/rangegenerators.hh>
    \n
    \n

    Go to the source code of this file.

    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::TensorGridFactory< Grid >
     A factory class for conveniently creating tensorproduct grids. More...
     
    class  Dune::TensorGridFactoryCreator< Grid >
     
    class  Dune::TensorGridFactoryCreator< YaspGrid< dim, TensorProductCoordinates< ctype, dim > > >
     
    \n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    This file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series.

    \n-

    The grid generation process is implemented for unstructured grids and for YaspGrid.

    \n-
    Author
    Dominic Kempf
    \n+

    Compute a repartitioning of a Dune grid using ParMetis.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,47 +1,22 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-tensorgridfactory.hh File Reference\n-This file provides a factory class for tensorproduct grids. This is a\n-collection of methods to generate monotonous sequences as needed for a\n-tensorproduct grid. Apart from easy ones for locally equidistant grids, there\n-are also more involved methods like splitting a range according to a geometric\n-series. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n+parmetisgridpartitioner.hh File Reference\n+Compute a repartitioning of a _\bD_\bu_\bn_\be grid using ParMetis. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\bl_\bo_\bb_\ba_\bl_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\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:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-\u00a0 A factory class for conveniently creating tensorproduct grids. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,\n- _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\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 Include standard header files.\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-This file provides a factory class for tensorproduct grids. This is a\n-collection of methods to generate monotonous sequences as needed for a\n-tensorproduct grid. Apart from easy ones for locally equidistant grids, there\n-are also more involved methods like splitting a range according to a geometric\n-series.\n-The grid generation process is implemented for unstructured grids and for\n-YaspGrid.\n- Author\n- Dominic Kempf\n+Compute a repartitioning of a _\bD_\bu_\bn_\be grid using ParMetis.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00983_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00983_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: tensorgridfactory.hh Source File\n+dune-grid: parmetisgridpartitioner.hh Source File\n \n \n \n \n \n \n \n@@ -74,403 +74,218 @@\n \n
    \n \n
    \n
    \n
    \n-
    tensorgridfactory.hh
    \n+
    parmetisgridpartitioner.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_GRID_UTILITY_TENSORGRIDFACTORY_HH
    \n-
    4#define DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH
    \n+
    3#ifndef DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH
    \n+
    4#define DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH
    \n
    5
    \n-
    20#include<array>
    \n-
    21#include<memory>
    \n-
    22#include<vector>
    \n+
    10#include <algorithm>
    \n+
    11#include <vector>
    \n+
    12
    \n+
    13#include <dune/common/parallel/mpihelper.hh>
    \n+
    14#include <dune/common/exceptions.hh>
    \n+
    15
    \n+
    16#include <dune/geometry/referenceelements.hh>
    \n+
    17
    \n+\n+\n+\n+
    21
    \n+
    22#if HAVE_PARMETIS
    \n
    23
    \n-
    24#include <dune/common/fvector.hh>
    \n-\n-
    26#include <dune/grid/yaspgrid.hh>
    \n-\n-
    28
    \n-
    29namespace Dune
    \n-
    30{
    \n-
    31 // forward declaration of TensorGridFactoryCreator, which is the real factory
    \n-
    32 // that should be specialized for each grid.
    \n-
    33 template<typename Grid>
    \n-
    34 class TensorGridFactoryCreator;
    \n-
    35
    \n-
    40 template<typename Grid>
    \n-
    \n-\n-
    42 {
    \n-
    43 public:
    \n-
    44 typedef typename Grid::Traits::Communication Comm;
    \n-
    45 typedef typename Grid::ctype ctype;
    \n-
    46 static const int dim = Grid::dimension;
    \n-
    47
    \n-
    \n-
    48 std::unique_ptr<Grid> createGrid(Comm comm = Comm())
    \n-
    49 {
    \n-
    50 TensorGridFactoryCreator<Grid> creator(*this);
    \n-
    51 return creator.createGrid(comm);
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    54 std::array<std::vector<ctype> , dim> coords() const
    \n-
    55 {
    \n-
    56 return _coords;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-
    60 std::vector<ctype>& operator[](std::size_t d)
    \n-
    61 {
    \n-
    62 return _coords[d];
    \n-
    63 }
    \n-
    \n+
    24#include <parmetis.h>
    \n+
    25
    \n+
    26// only enable for ParMETIS because the implementation uses functions that
    \n+
    27// are not emulated by scotch
    \n+
    28#ifdef PARMETIS_MAJOR_VERSION
    \n+
    29
    \n+
    30namespace Dune
    \n+
    31{
    \n+
    32
    \n+
    37 template<class GridView>
    \n+
    38 struct ParMetisGridPartitioner {
    \n+
    39
    \n+
    40 // define index type as provided by ParMETIS
    \n+
    41#if PARMETIS_MAJOR_VERSION > 3
    \n+
    42 typedef idx_t idx_type;
    \n+
    43 typedef ::real_t real_type;
    \n+
    44#else
    \n+
    45 typedef int idx_type;
    \n+
    46 typedef float real_type;
    \n+
    47#endif // PARMETIS_MAJOR_VERSION > 3
    \n+
    48
    \n+
    49 constexpr static int dimension = GridView::dimension;
    \n+
    50
    \n+
    51
    \n+
    62 static std::vector<unsigned> partition(const GridView& gv, const Dune::MPIHelper& mpihelper) {
    \n+
    63 const unsigned numElements = gv.size(0);
    \n
    64
    \n-
    \n-
    66 const std::vector<ctype>& operator[](std::size_t d) const
    \n-
    67 {
    \n-
    68 return _coords[d];
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    79 void setStart (int d, ctype value)
    \n-
    80 {
    \n-
    81 _coords[d].resize(1);
    \n-
    82 _coords[d][0] = value;
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    93 void fillIntervals (int d, int n, ctype h)
    \n-
    94 {
    \n-
    95 emptyCheck (d);
    \n-
    96 for (int i = 0; i < n; i++)
    \n-
    97 _coords[d].push_back (_coords[d].back () + h);
    \n-
    98 }
    \n-
    \n-
    99
    \n-
    \n-
    108 void fillRange (int d, int n, ctype end)
    \n-
    109 {
    \n-
    110 emptyCheck (d);
    \n-
    111 const ctype h = (end - _coords[d].back ()) / n;
    \n-
    112 for (int i = 0; i < n - 1; i++)
    \n-
    113 _coords[d].push_back (_coords[d].back () + h);
    \n-
    114 _coords[d].push_back (end);
    \n-
    115 }
    \n-
    \n-
    116
    \n-
    \n-
    125 void fillUntil (int d, ctype h, ctype end)
    \n-
    126 {
    \n-
    127 emptyCheck (d);
    \n-
    128 while (_coords[d].back () < end)
    \n-
    129 _coords[d].push_back (_coords[d].back () + h);
    \n-
    130 }
    \n-
    \n+
    65 std::vector<unsigned> part(numElements);
    \n+
    66
    \n+
    67 // Setup parameters for ParMETIS
    \n+
    68 idx_type wgtflag = 0; // we don't use weights
    \n+
    69 idx_type numflag = 0; // we are using C-style arrays
    \n+
    70 idx_type ncon = 1; // number of balance constraints
    \n+
    71 idx_type ncommonnodes = 2; // number of nodes elements must have in common to be considered adjacent to each other
    \n+
    72 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed, output and coupling
    \n+
    73 idx_type edgecut; // will store number of edges cut by partition
    \n+
    74 idx_type nparts = mpihelper.size(); // number of parts equals number of processes
    \n+
    75 std::vector<real_type> tpwgts(ncon*nparts, 1./nparts); // load per subdomain and weight (same load on every process)
    \n+
    76 std::vector<real_type> ubvec(ncon, 1.05); // weight tolerance (same weight tolerance for every weight there is)
    \n+
    77
    \n+
    78 // The difference elmdist[i+1] - elmdist[i] is the number of nodes that are on process i
    \n+
    79 std::vector<idx_type> elmdist(nparts+1);
    \n+
    80 elmdist[0] = 0;
    \n+
    81 std::fill(elmdist.begin()+1, elmdist.end(), gv.size(0)); // all elements are on process zero
    \n+
    82
    \n+
    83 // Create and fill arrays "eptr", where eptr[i] is the number of vertices that belong to the i-th element, and
    \n+
    84 // "eind" contains the vertex-numbers of the i-the element in eind[eptr[i]] to eind[eptr[i+1]-1]
    \n+
    85 std::vector<idx_type> eptr, eind;
    \n+
    86 int numVertices = 0;
    \n+
    87 eptr.push_back(numVertices);
    \n+
    88
    \n+
    89 for (const auto& element : elements(gv, Partitions::interior)) {
    \n+
    90 const size_t curNumVertices = referenceElement<double, dimension>(element.type()).size(dimension);
    \n+
    91
    \n+
    92 numVertices += curNumVertices;
    \n+
    93 eptr.push_back(numVertices);
    \n+
    94
    \n+
    95 for (size_t k = 0; k < curNumVertices; ++k)
    \n+
    96 eind.push_back(gv.indexSet().subIndex(element, k, dimension));
    \n+
    97 }
    \n+
    98
    \n+
    99 // Partition mesh using ParMETIS
    \n+
    100 if (0 == mpihelper.rank()) {
    \n+
    101 MPI_Comm comm = Dune::MPIHelper::getLocalCommunicator();
    \n+
    102
    \n+
    103#if PARMETIS_MAJOR_VERSION >= 4
    \n+
    104 const int OK =
    \n+
    105#endif
    \n+
    106 ParMETIS_V3_PartMeshKway(elmdist.data(), eptr.data(), eind.data(), NULL, &wgtflag, &numflag,
    \n+
    107 &ncon, &ncommonnodes, &nparts, tpwgts.data(), ubvec.data(),
    \n+
    108 options, &edgecut, reinterpret_cast<idx_type*>(part.data()), &comm);
    \n+
    109
    \n+
    110#if PARMETIS_MAJOR_VERSION >= 4
    \n+
    111 if (OK != METIS_OK)
    \n+
    112 DUNE_THROW(Dune::Exception, "ParMETIS returned an error code.");
    \n+
    113#endif
    \n+
    114 }
    \n+
    115
    \n+
    116 return part;
    \n+
    117 }
    \n+
    118
    \n+
    130 static std::vector<unsigned> repartition(const GridView& gv, const Dune::MPIHelper& mpihelper, real_type itr = 1000) {
    \n
    131
    \n-
    \n-
    144 void geometricFillIntervals (int d, int n, ctype ratio, ctype h0 =
    \n-
    145 static_cast<ctype> (0))
    \n-
    146 {
    \n-
    147 emptyCheck (d);
    \n-
    148 ctype h = h0;
    \n-
    149 if (h0 == static_cast<ctype>(0))
    \n-
    150 h = lastInterval (d) * ratio;
    \n-
    151 for (int i = 0; i < n; i++)
    \n-
    152 {
    \n-
    153 _coords[d].push_back (_coords[d].back () + h);
    \n-
    154 h *= ratio;
    \n-
    155 }
    \n-
    156 }
    \n-
    \n+
    132 // Create global index map
    \n+
    133 GlobalIndexSet<GridView> globalIndex(gv,0);
    \n+
    134
    \n+
    135 int numElements = std::distance(gv.template begin<0, Interior_Partition>(),
    \n+
    136 gv.template end<0, Interior_Partition>());
    \n+
    137
    \n+
    138 std::vector<unsigned> interiorPart(numElements);
    \n+
    139
    \n+
    140 // Setup parameters for ParMETIS
    \n+
    141 idx_type wgtflag = 0; // we don't use weights
    \n+
    142 idx_type numflag = 0; // we are using C-style arrays
    \n+
    143 idx_type ncon = 1; // number of balance constraints
    \n+
    144 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed, output and coupling
    \n+
    145 idx_type edgecut; // will store number of edges cut by partition
    \n+
    146 idx_type nparts = mpihelper.size(); // number of parts equals number of processes
    \n+
    147 std::vector<real_type> tpwgts(ncon*nparts, 1./nparts); // load per subdomain and weight (same load on every process)
    \n+
    148 std::vector<real_type> ubvec(ncon, 1.05); // weight tolerance (same weight tolerance for every weight there is)
    \n+
    149
    \n+
    150 MPI_Comm comm = Dune::MPIHelper::getCommunicator();
    \n+
    151
    \n+
    152 // Make the number of interior elements of each processor available to all processors
    \n+
    153 std::vector<int> offset(gv.comm().size());
    \n+
    154 std::fill(offset.begin(), offset.end(), 0);
    \n+
    155
    \n+
    156 gv.comm().template allgather<int>(&numElements, 1, offset.data());
    \n
    157
    \n-
    \n-
    170 void geometricFillUntil (int d, ctype ratio, ctype end, ctype h0 = static_cast<ctype> (0))
    \n-
    171 {
    \n-
    172 emptyCheck (d);
    \n-
    173 ctype h = h0;
    \n-
    174 if (h0 == static_cast<ctype>(0))
    \n-
    175 h = lastInterval (d) * ratio;
    \n-
    176 while (_coords[d].back () < end)
    \n-
    177 {
    \n-
    178 _coords[d].push_back (_coords[d].back () + h);
    \n-
    179 h *= ratio;
    \n-
    180 }
    \n-
    181 }
    \n-
    \n+
    158 // The difference vtxdist[i+1] - vtxdist[i] is the number of elements that are on process i
    \n+
    159 std::vector<idx_type> vtxdist(gv.comm().size()+1);
    \n+
    160 vtxdist[0] = 0;
    \n+
    161
    \n+
    162 for (unsigned int i=1; i<vtxdist.size(); ++i)
    \n+
    163 vtxdist[i] = vtxdist[i-1] + offset[i-1];
    \n+
    164
    \n+
    165 // Set up element adjacency lists
    \n+
    166 std::vector<idx_type> xadj, adjncy;
    \n+
    167 xadj.push_back(0);
    \n+
    168
    \n+
    169 for (const auto& element : elements(gv, Partitions::interior)) {
    \n+
    170 size_t numNeighbors = 0;
    \n+
    171
    \n+
    172 for (const auto& in : intersections(gv, element)) {
    \n+
    173 if (in.neighbor()) {
    \n+
    174 adjncy.push_back(globalIndex.index(in.outside()));
    \n+
    175
    \n+
    176 ++numNeighbors;
    \n+
    177 }
    \n+
    178 }
    \n+
    179
    \n+
    180 xadj.push_back(xadj.back() + numNeighbors);
    \n+
    181 }
    \n
    182
    \n-
    \n-
    197 void geometricFillRange (int d, int n, ctype end, ctype h =
    \n-
    198 static_cast<ctype> (0),
    \n-
    199 bool first = true)
    \n-
    200 {
    \n-
    201 emptyCheck (d);
    \n-
    202 if (h < 1e-8)
    \n-
    203 h = lastInterval (d);
    \n-
    204 ctype ratio = newton (n, _coords[d].back (), end, h);
    \n-
    205 if (!first)
    \n-
    206 {
    \n-
    207 h = h * pow (ratio, n - 1);
    \n-
    208 ratio = 1 / ratio;
    \n-
    209 }
    \n-
    210 for (int i = 0; i < n - 1; i++)
    \n-
    211 {
    \n-
    212 _coords[d].push_back (_coords[d].back () + h);
    \n-
    213 h *= ratio;
    \n-
    214 }
    \n-
    215 _coords[d].push_back (end);
    \n-
    216 }
    \n-
    \n-
    217
    \n-
    \n-
    219 void print()
    \n-
    220 {
    \n-
    221 for (int i=0; i<dim; i++)
    \n-
    222 {
    \n-
    223 std::cout << "Container in direction " << i << ":" << std::endl << "Coordinates: ";
    \n-
    224 for (auto it = _coords[i].begin(); it != _coords[i].end(); ++it)
    \n-
    225 std::cout << *it << " ";
    \n-
    226 std::cout << std::endl << "Interval lengths: ";
    \n-
    227
    \n-
    228 std::vector<ctype> meshsize;
    \n-
    229 for (auto it = _coords[i].begin(); it != _coords[i].end()-1;)
    \n-
    230 {
    \n-
    231 meshsize.push_back(-1.*(*it));
    \n-
    232 ++it;
    \n-
    233 meshsize.back() += *it;
    \n-
    234 }
    \n-
    235
    \n-
    236 for (auto it = meshsize.begin(); it != meshsize.end(); ++it)
    \n-
    237 std::cout << *it << " ";
    \n-
    238 std::cout << std::endl << "Ratios between interval lengths: ";
    \n-
    239
    \n-
    240 std::vector<ctype> ratios;
    \n-
    241 for (auto it = meshsize.begin(); it != meshsize.end() - 1 ;)
    \n-
    242 ratios.push_back((1./(*it)) * *(++it));
    \n-
    243
    \n-
    244 for (auto it = ratios.begin(); it != ratios.end(); ++it)
    \n-
    245 std::cout << *it << " ";
    \n-
    246 std::cout << std::endl << std::endl << std::endl;
    \n-
    247 }
    \n-
    248 }
    \n-
    \n-
    249
    \n-
    250 private:
    \n-
    251 // check whether the ith component is empty and add a 0.0 entry if so
    \n-
    252 void emptyCheck (int i)
    \n-
    253 {
    \n-
    254 if (_coords[i].empty ())
    \n-
    255 _coords[i].push_back (static_cast<ctype> (0));
    \n-
    256 }
    \n-
    257
    \n-
    258 // returns the last interval length in direction d
    \n-
    259 ctype lastInterval (int d)
    \n-
    260 {
    \n-
    261 if (_coords[d].size () < 2)
    \n-
    262 DUNE_THROW(
    \n-
    263 GridError,
    \n-
    264 "Not enough elements in coordinate container to deduce interval length in TensorYaspFactory");
    \n-
    265 else
    \n-
    266 return _coords[d].back () - _coords[d][_coords[d].size () - 2];
    \n-
    267 }
    \n-
    268
    \n-
    272 ctype newton (int n, ctype x_s, ctype x_e, ctype h)
    \n-
    273 {
    \n-
    274 ctype m = (x_e - x_s) / h;
    \n-
    275 ctype xold = 0.0;
    \n-
    276 ctype xnew = x_e - x_s;
    \n-
    277 while (std::abs (xnew - xold) > 1E-8)
    \n-
    278 {
    \n-
    279 xold = xnew;
    \n-
    280 xnew = xold
    \n-
    281 - (-pow (xold, n) + m * xold - m + 1)
    \n-
    282 / (-n * pow (xold, n - 1) + m);
    \n-
    283 }
    \n-
    284 if (std::abs (xnew - 1) < 1E-6)
    \n-
    285 {
    \n-
    286 xold = x_e - x_s;
    \n-
    287 xnew = 0.0;
    \n-
    288 while (std::abs (xnew - xold) > 1E-8)
    \n-
    289 {
    \n-
    290 xold = xnew;
    \n-
    291 xnew = xold
    \n-
    292 - (-pow (xold, n) + m * xold - m + 1)
    \n-
    293 / (-n * pow (xold, n - 1) + m);
    \n-
    294 }
    \n-
    295 }
    \n-
    296 return xnew;
    \n-
    297 }
    \n-
    298
    \n-
    299 std::array<std::vector<ctype>, dim> _coords;
    \n-
    300 };
    \n-
    \n-
    301
    \n-
    302 // class that implements the actual grid creation process. The default is implementing
    \n-
    303 // standard creation for unstructured grids. Provide a specialization for other grids.
    \n-
    304 template<typename Grid>
    \n-
    \n-\n-
    306 {
    \n-
    307 public:
    \n-
    308 typedef typename Grid::Traits::Communication Comm;
    \n-
    309 typedef typename Grid::ctype ctype;
    \n-
    310 static const int dim = Grid::dimension;
    \n-
    311
    \n-
    312 TensorGridFactoryCreator(const TensorGridFactory<Grid>& factory) : _factory(factory) {}
    \n-
    313
    \n-
    \n-
    314 std::unique_ptr<Grid> createGrid(Comm comm)
    \n-
    315 {
    \n-
    316 // The grid factory
    \n-\n-
    318
    \n-
    319 if (comm.rank() == 0)
    \n-
    320 {
    \n-
    321 // determine the size of the grid
    \n-
    322 std::array<unsigned int, dim> vsizes, esizes;
    \n-
    323 std::size_t size = 1;
    \n-
    324 for (std::size_t i = 0; i<dim; ++i)
    \n-
    325 {
    \n-
    326 vsizes[i] = _factory[i].size();
    \n-
    327 esizes[i] = vsizes[i] - 1;
    \n-
    328 size *= vsizes[i];
    \n-
    329 }
    \n-
    330
    \n-
    331 // insert all vertices
    \n-\n-
    333 for (std::size_t i=0; i<size; ++i, ++index)
    \n-
    334 {
    \n-
    335 Dune::FieldVector<ctype, dim> position;
    \n-
    336 for (std::size_t j = 0; j<dim; ++j)
    \n-
    337 position[j] = _factory[j][index[j]];
    \n-
    338 fac.insertVertex(position);
    \n-
    339 }
    \n-
    340
    \n-
    341 // compute the offsets
    \n-
    342 std::array<std::size_t, dim> offsets;
    \n-
    343 offsets[0] = 1;
    \n-
    344 for (std::size_t i=1; i<dim; i++)
    \n-
    345 offsets[i] = offsets[i-1] * vsizes[i-1];
    \n-
    346
    \n-
    347 // Compute an element template (the cube at (0,...,0). All
    \n-
    348 // other cubes are constructed by moving this template around
    \n-
    349 unsigned int nCorners = 1<<dim;
    \n-
    350
    \n-
    351 std::vector<unsigned int> cornersTemplate(nCorners,0);
    \n-
    352
    \n-
    353 for (size_t i=0; i<nCorners; i++)
    \n-
    354 for (int j=0; j<dim; j++)
    \n-
    355 if ( i & (1<<j) )
    \n-
    356 cornersTemplate[i] += offsets[j];
    \n-
    357
    \n-
    358 // Insert elements
    \n-\n-
    360
    \n-
    361 // Compute the total number of elements to be created
    \n-
    362 int numElements = eindex.cycle();
    \n-
    363
    \n-
    364 for (int i=0; i<numElements; i++, ++eindex)
    \n-
    365 {
    \n-
    366 // 'base' is the index of the lower left element corner
    \n-
    367 unsigned int base = 0;
    \n-
    368 for (int j=0; j<dim; j++)
    \n-
    369 base += eindex[j] * offsets[j];
    \n-
    370
    \n-
    371 // insert new element
    \n-
    372 std::vector<unsigned int> corners = cornersTemplate;
    \n-
    373 for (size_t j=0; j<corners.size(); j++)
    \n-
    374 corners[j] += base;
    \n-
    375
    \n-
    376 fac.insertElement(GeometryTypes::cube(dim), corners);
    \n-
    377 }
    \n-
    378 }
    \n-
    379
    \n-
    380 return std::unique_ptr<Grid>(fac.createGrid());
    \n-
    381 }
    \n-
    \n-
    382
    \n-
    383 private:
    \n-
    384 const TensorGridFactory<Grid>& _factory;
    \n-
    385 };
    \n-
    \n-
    386
    \n-
    387 template<typename ctype, int dim>
    \n-
    \n-\n-
    389 {
    \n-
    390 public:
    \n-\n-
    392 typedef typename Grid::Communication Comm;
    \n-
    393
    \n-
    394 TensorGridFactoryCreator(const TensorGridFactory<Grid>& factory) : _factory(factory) {}
    \n-
    395
    \n-
    \n-
    396 std::unique_ptr<Grid> createGrid(Comm comm)
    \n-
    397 {
    \n-
    398 return std::make_unique<Grid>(_factory.coords(), std::bitset<dim>(0ULL), 1, comm);
    \n-
    399 }
    \n-
    \n-
    400 private:
    \n-
    401 const TensorGridFactory<Grid>& _factory;
    \n-
    402 };
    \n-
    \n-
    403}
    \n-
    404
    \n-
    405#endif
    \n-
    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various facto...
    \n-\n+
    183#if PARMETIS_MAJOR_VERSION >= 4
    \n+
    184 const int OK =
    \n+
    185#endif
    \n+
    186 ParMETIS_V3_AdaptiveRepart(vtxdist.data(), xadj.data(), adjncy.data(), NULL, NULL, NULL,
    \n+
    187 &wgtflag, &numflag, &ncon, &nparts, tpwgts.data(), ubvec.data(),
    \n+
    188 &itr, options, &edgecut, reinterpret_cast<idx_type*>(interiorPart.data()), &comm);
    \n+
    189
    \n+
    190#if PARMETIS_MAJOR_VERSION >= 4
    \n+
    191 if (OK != METIS_OK)
    \n+
    192 DUNE_THROW(Dune::Exception, "ParMETIS returned error code " << OK);
    \n+
    193#endif
    \n+
    194
    \n+
    195 // At this point, interiorPart contains a target rank for each interior element, and they are sorted
    \n+
    196 // by the order in which the grid view traverses them. Now we need to do two things:
    \n+
    197 // a) Add additional dummy entries for the ghost elements
    \n+
    198 // b) Use the element index for the actual ordering. Since there may be different types of elements,
    \n+
    199 // we cannot use the index set directly, but have to go through a Mapper.
    \n+
    200
    \n+
    201 typedef MultipleCodimMultipleGeomTypeMapper<GridView> ElementMapper;
    \n+
    202 ElementMapper elementMapper(gv, mcmgElementLayout());
    \n+
    203
    \n+
    204 std::vector<unsigned int> part(gv.size(0));
    \n+
    205 std::fill(part.begin(), part.end(), 0);
    \n+
    206 unsigned int c = 0;
    \n+
    207 for (const auto& element : elements(gv, Partitions::interior))
    \n+
    208 part[elementMapper.index(element)] = interiorPart[c++];
    \n+
    209
    \n+
    210 return part;
    \n+
    211 }
    \n+
    212 };
    \n+
    213
    \n+
    214} // namespace Dune
    \n+
    215
    \n+
    216#else // PARMETIS_MAJOR_VERSION
    \n+
    217#warning "You seem to be using the ParMETIS emulation layer of scotch, which does not work with this file."
    \n+
    218#endif
    \n+
    219
    \n+
    220#else // HAVE_PARMETIS
    \n+
    221#warning "PARMETIS was not found, please check your configuration"
    \n+
    222#endif
    \n+
    223
    \n+
    224#endif // DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH
    \n+
    Mapper for multiple codim and multiple geometry types.
    \n+\n+
    Provides a globally unique index for all entities of a distributed Dune grid.
    \n+
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    ct ctype
    Define type used for coordinates in grid module.
    Definition common/grid.hh:532
    \n-
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n-
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)
    Insert an element into the coarse grid.
    Definition common/gridfactory.hh:346
    \n-
    virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)
    Insert a vertex into the coarse grid.
    Definition common/gridfactory.hh:335
    \n-
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n-
    Definition multiindex.hh:19
    \n-
    size_t cycle() const
    Compute how many times you can call operator++ before getting to (0,...,0) again.
    Definition multiindex.hh:48
    \n-
    Definition tensorgridfactory.hh:306
    \n-
    Grid::ctype ctype
    Definition tensorgridfactory.hh:309
    \n-
    Grid::Traits::Communication Comm
    Definition tensorgridfactory.hh:308
    \n-
    TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)
    Definition tensorgridfactory.hh:312
    \n-
    std::unique_ptr< Grid > createGrid(Comm comm)
    Definition tensorgridfactory.hh:314
    \n-
    static const int dim
    Definition tensorgridfactory.hh:310
    \n-
    A factory class for conveniently creating tensorproduct grids.
    Definition tensorgridfactory.hh:42
    \n-
    void fillRange(int d, int n, ctype end)
    fills the range to end with n intervals in direction d
    Definition tensorgridfactory.hh:108
    \n-
    void geometricFillRange(int d, int n, ctype end, ctype h=static_cast< ctype >(0), bool first=true)
    fills a coordinate range in direction d with n intervals according to a geometric series
    Definition tensorgridfactory.hh:197
    \n-
    Grid::ctype ctype
    Definition tensorgridfactory.hh:45
    \n-
    void fillUntil(int d, ctype h, ctype end)
    adds intervals in direction d until a given coordinate is reached
    Definition tensorgridfactory.hh:125
    \n-
    void geometricFillUntil(int d, ctype ratio, ctype end, ctype h0=static_cast< ctype >(0))
    adds intervals in direction d according with a given length ratio until a given coordinate is reached
    Definition tensorgridfactory.hh:170
    \n-
    static const int dim
    Definition tensorgridfactory.hh:46
    \n-
    void print()
    print the coordinate information given to the factory so far
    Definition tensorgridfactory.hh:219
    \n-
    void fillIntervals(int d, int n, ctype h)
    pushs n intervals of length h in direction d
    Definition tensorgridfactory.hh:93
    \n-
    void setStart(int d, ctype value)
    set a starting value in a given direction d
    Definition tensorgridfactory.hh:79
    \n-
    void geometricFillIntervals(int d, int n, ctype ratio, ctype h0=static_cast< ctype >(0))
    adds n intervals in direction d with a given length ratio and a given starting interval length.
    Definition tensorgridfactory.hh:144
    \n-
    std::vector< ctype > & operator[](std::size_t d)
    allow to manually tune the factory by overloading operator[] to export the coordinate vectors in the ...
    Definition tensorgridfactory.hh:60
    \n-
    const std::vector< ctype > & operator[](std::size_t d) const
    allow to manually tune the factory by overloading operator[] to export the coordinate vectors in the ...
    Definition tensorgridfactory.hh:66
    \n-
    std::unique_ptr< Grid > createGrid(Comm comm=Comm())
    Definition tensorgridfactory.hh:48
    \n-
    Grid::Traits::Communication Comm
    Definition tensorgridfactory.hh:44
    \n-
    std::array< std::vector< ctype >, dim > coords() const
    Definition tensorgridfactory.hh:54
    \n-
    std::unique_ptr< Grid > createGrid(Comm comm)
    Definition tensorgridfactory.hh:396
    \n-
    TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)
    Definition tensorgridfactory.hh:394
    \n-\n-
    YaspGrid< dim, TensorProductCoordinates< ctype, dim > > Grid
    Definition tensorgridfactory.hh:391
    \n-
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n-
    typename Base::Communication Communication
    Definition yaspgrid.hh:178
    \n-
    Coordinate container for a tensor product YaspGrid.
    Definition coordinates.hh:245
    \n-
    Provide a generic factory class for unstructured grids.
    \n+
    constexpr Interior interior
    PartitionSet for the interior partition.
    Definition partitionset.hh:272
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,481 +1,248 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-tensorgridfactory.hh\n+parmetisgridpartitioner.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3#ifndef DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH\n-4#define DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH\n+3#ifndef DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH\n+4#define DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH\n 5\n-20#include\n-21#include\n-22#include\n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15\n+16#include \n+17\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\bl_\bo_\bb_\ba_\bl_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+21\n+22#if HAVE_PARMETIS\n 23\n-24#include \n-25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-26#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-27#include<_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-28\n-29namespace _\bD_\bu_\bn_\be\n-30{\n-31 // forward declaration of TensorGridFactoryCreator, which is the real\n-factory\n-32 // that should be specialized for each grid.\n-33 template\n-34 class TensorGridFactoryCreator;\n-35\n-40 template\n-_\b4_\b1 class _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-42 {\n-43 public:\n-_\b4_\b4 typedef typename Grid::Traits::Communication _\bC_\bo_\bm_\bm;\n-_\b4_\b5 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-_\b4_\b6 static const int _\bd_\bi_\bm = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-47\n-_\b4_\b8 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(_\bC_\bo_\bm_\bm comm = _\bC_\bo_\bm_\bm())\n-49 {\n-50 _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\b> creator(*this);\n-51 return creator._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(comm);\n-52 }\n-53\n-_\b5_\b4 std::array , _\bd_\bi_\bm> _\bc_\bo_\bo_\br_\bd_\bs() const\n-55 {\n-56 return _coords;\n-57 }\n-58\n-_\b6_\b0 std::vector& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t d)\n-61 {\n-62 return _coords[d];\n-63 }\n+24#include \n+25\n+26// only enable for ParMETIS because the implementation uses functions that\n+27// are not emulated by scotch\n+28#ifdef PARMETIS_MAJOR_VERSION\n+29\n+30namespace _\bD_\bu_\bn_\be\n+31{\n+32\n+37 template\n+38 struct ParMetisGridPartitioner {\n+39\n+40 // define index type as provided by ParMETIS\n+41#if PARMETIS_MAJOR_VERSION > 3\n+42 typedef idx_t idx_type;\n+43 typedef ::real_t real_type;\n+44#else\n+45 typedef int idx_type;\n+46 typedef float real_type;\n+47#endif // PARMETIS_MAJOR_VERSION > 3\n+48\n+49 constexpr static int dimension = GridView::dimension;\n+50\n+51\n+62 static std::vector partition(const GridView& gv, const Dune::\n+MPIHelper& mpihelper) {\n+63 const unsigned numElements = gv.size(0);\n 64\n-_\b6_\b6 const std::vector& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t d) const\n-67 {\n-68 return _coords[d];\n-69 }\n-70\n-_\b7_\b9 void _\bs_\be_\bt_\bS_\bt_\ba_\br_\bt (int d, _\bc_\bt_\by_\bp_\be value)\n-80 {\n-81 _coords[d].resize(1);\n-82 _coords[d][0] = value;\n-83 }\n-84\n-_\b9_\b3 void _\bf_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs (int d, int n, _\bc_\bt_\by_\bp_\be h)\n-94 {\n-95 emptyCheck (d);\n-96 for (int i = 0; i < n; i++)\n-97 _coords[d].push_back (_coords[d].back () + h);\n-98 }\n-99\n-_\b1_\b0_\b8 void _\bf_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be (int d, int n, _\bc_\bt_\by_\bp_\be end)\n-109 {\n-110 emptyCheck (d);\n-111 const _\bc_\bt_\by_\bp_\be h = (end - _coords[d].back ()) / n;\n-112 for (int i = 0; i < n - 1; i++)\n-113 _coords[d].push_back (_coords[d].back () + h);\n-114 _coords[d].push_back (end);\n-115 }\n-116\n-_\b1_\b2_\b5 void _\bf_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl (int d, _\bc_\bt_\by_\bp_\be h, _\bc_\bt_\by_\bp_\be end)\n-126 {\n-127 emptyCheck (d);\n-128 while (_coords[d].back () < end)\n-129 _coords[d].push_back (_coords[d].back () + h);\n-130 }\n+65 std::vector part(numElements);\n+66\n+67 // Setup parameters for ParMETIS\n+68 idx_type wgtflag = 0; // we don't use weights\n+69 idx_type numflag = 0; // we are using C-style arrays\n+70 idx_type ncon = 1; // number of balance constraints\n+71 idx_type ncommonnodes = 2; // number of nodes elements must have in common\n+to be considered adjacent to each other\n+72 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed,\n+output and coupling\n+73 idx_type edgecut; // will store number of edges cut by partition\n+74 idx_type nparts = mpihelper.size(); // number of parts equals number of\n+processes\n+75 std::vector tpwgts(ncon*nparts, 1./nparts); // load per subdomain\n+and weight (same load on every process)\n+76 std::vector ubvec(ncon, 1.05); // weight tolerance (same weight\n+tolerance for every weight there is)\n+77\n+78 // The difference elmdist[i+1] - elmdist[i] is the number of nodes that are\n+on process i\n+79 std::vector elmdist(nparts+1);\n+80 elmdist[0] = 0;\n+81 std::fill(elmdist.begin()+1, elmdist.end(), gv.size(0)); // all elements are\n+on process zero\n+82\n+83 // Create and fill arrays \"eptr\", where eptr[i] is the number of vertices\n+that belong to the i-th element, and\n+84 // \"eind\" contains the vertex-numbers of the i-the element in eind[eptr[i]]\n+to eind[eptr[i+1]-1]\n+85 std::vector eptr, eind;\n+86 int numVertices = 0;\n+87 eptr.push_back(numVertices);\n+88\n+89 for (const auto& element : elements(gv, Partitions::_\bi_\bn_\bt_\be_\br_\bi_\bo_\br)) {\n+90 const size_t curNumVertices = referenceElement\n+(element.type()).size(dimension);\n+91\n+92 numVertices += curNumVertices;\n+93 eptr.push_back(numVertices);\n+94\n+95 for (size_t k = 0; k < curNumVertices; ++k)\n+96 eind.push_back(gv.indexSet().subIndex(element, k, dimension));\n+97 }\n+98\n+99 // Partition mesh using ParMETIS\n+100 if (0 == mpihelper.rank()) {\n+101 MPI_Comm comm = Dune::MPIHelper::getLocalCommunicator();\n+102\n+103#if PARMETIS_MAJOR_VERSION >= 4\n+104 const int OK =\n+105#endif\n+106 ParMETIS_V3_PartMeshKway(elmdist.data(), eptr.data(), eind.data(), NULL,\n+&wgtflag, &numflag,\n+107 &ncon, &ncommonnodes, &nparts, tpwgts.data(), ubvec.data(),\n+108 options, &edgecut, reinterpret_cast(part.data()), &comm);\n+109\n+110#if PARMETIS_MAJOR_VERSION >= 4\n+111 if (OK != METIS_OK)\n+112 DUNE_THROW(Dune::Exception, \"ParMETIS returned an error code.\");\n+113#endif\n+114 }\n+115\n+116 return part;\n+117 }\n+118\n+130 static std::vector repartition(const GridView& gv, const Dune::\n+MPIHelper& mpihelper, real_type itr = 1000) {\n 131\n-_\b1_\b4_\b4 void _\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs (int d, int n, _\bc_\bt_\by_\bp_\be ratio, _\bc_\bt_\by_\bp_\be h0 =\n-145 static_cast<_\bc_\bt_\by_\bp_\be> (0))\n-146 {\n-147 emptyCheck (d);\n-148 _\bc_\bt_\by_\bp_\be h = h0;\n-149 if (h0 == static_cast<_\bc_\bt_\by_\bp_\be>(0))\n-150 h = lastInterval (d) * ratio;\n-151 for (int i = 0; i < n; i++)\n-152 {\n-153 _coords[d].push_back (_coords[d].back () + h);\n-154 h *= ratio;\n-155 }\n-156 }\n+132 // Create global index map\n+133 GlobalIndexSet globalIndex(gv,0);\n+134\n+135 int numElements = std::distance(gv.template begin<0, Interior_Partition>(),\n+136 gv.template end<0, Interior_Partition>());\n+137\n+138 std::vector interiorPart(numElements);\n+139\n+140 // Setup parameters for ParMETIS\n+141 idx_type wgtflag = 0; // we don't use weights\n+142 idx_type numflag = 0; // we are using C-style arrays\n+143 idx_type ncon = 1; // number of balance constraints\n+144 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed,\n+output and coupling\n+145 idx_type edgecut; // will store number of edges cut by partition\n+146 idx_type nparts = mpihelper.size(); // number of parts equals number of\n+processes\n+147 std::vector tpwgts(ncon*nparts, 1./nparts); // load per\n+subdomain and weight (same load on every process)\n+148 std::vector ubvec(ncon, 1.05); // weight tolerance (same weight\n+tolerance for every weight there is)\n+149\n+150 MPI_Comm comm = Dune::MPIHelper::getCommunicator();\n+151\n+152 // Make the number of interior elements of each processor available to all\n+processors\n+153 std::vector offset(gv.comm().size());\n+154 std::fill(offset.begin(), offset.end(), 0);\n+155\n+156 gv.comm().template allgather(&numElements, 1, offset.data());\n 157\n-_\b1_\b7_\b0 void _\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl (int d, _\bc_\bt_\by_\bp_\be ratio, _\bc_\bt_\by_\bp_\be end, _\bc_\bt_\by_\bp_\be h0 =\n-static_cast<_\bc_\bt_\by_\bp_\be> (0))\n-171 {\n-172 emptyCheck (d);\n-173 _\bc_\bt_\by_\bp_\be h = h0;\n-174 if (h0 == static_cast<_\bc_\bt_\by_\bp_\be>(0))\n-175 h = lastInterval (d) * ratio;\n-176 while (_coords[d].back () < end)\n-177 {\n-178 _coords[d].push_back (_coords[d].back () + h);\n-179 h *= ratio;\n-180 }\n+158 // The difference vtxdist[i+1] - vtxdist[i] is the number of elements that\n+are on process i\n+159 std::vector vtxdist(gv.comm().size()+1);\n+160 vtxdist[0] = 0;\n+161\n+162 for (unsigned int i=1; i xadj, adjncy;\n+167 xadj.push_back(0);\n+168\n+169 for (const auto& element : elements(gv, Partitions::_\bi_\bn_\bt_\be_\br_\bi_\bo_\br)) {\n+170 size_t numNeighbors = 0;\n+171\n+172 for (const auto& in : intersections(gv, element)) {\n+173 if (in.neighbor()) {\n+174 adjncy.push_back(globalIndex.index(in.outside()));\n+175\n+176 ++numNeighbors;\n+177 }\n+178 }\n+179\n+180 xadj.push_back(xadj.back() + numNeighbors);\n 181 }\n 182\n-_\b1_\b9_\b7 void _\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be (int d, int n, _\bc_\bt_\by_\bp_\be end, _\bc_\bt_\by_\bp_\be h =\n-198 static_cast<_\bc_\bt_\by_\bp_\be> (0),\n-199 bool first = true)\n-200 {\n-201 emptyCheck (d);\n-202 if (h < 1e-8)\n-203 h = lastInterval (d);\n-204 _\bc_\bt_\by_\bp_\be ratio = newton (n, _coords[d].back (), end, h);\n-205 if (!first)\n-206 {\n-207 h = h * pow (ratio, n - 1);\n-208 ratio = 1 / ratio;\n-209 }\n-210 for (int i = 0; i < n - 1; i++)\n-211 {\n-212 _coords[d].push_back (_coords[d].back () + h);\n-213 h *= ratio;\n-214 }\n-215 _coords[d].push_back (end);\n-216 }\n-217\n-_\b2_\b1_\b9 void _\bp_\br_\bi_\bn_\bt()\n-220 {\n-221 for (int i=0; i<_\bd_\bi_\bm; i++)\n-222 {\n-223 std::cout << \"Container in direction \" << i << \":\" << std::endl <<\n-\"Coordinates: \";\n-224 for (auto it = _coords[i].begin(); it != _coords[i].end(); ++it)\n-225 std::cout << *it << \" \";\n-226 std::cout << std::endl << \"Interval lengths: \";\n-227\n-228 std::vector meshsize;\n-229 for (auto it = _coords[i].begin(); it != _coords[i].end()-1;)\n-230 {\n-231 meshsize.push_back(-1.*(*it));\n-232 ++it;\n-233 meshsize.back() += *it;\n-234 }\n-235\n-236 for (auto it = meshsize.begin(); it != meshsize.end(); ++it)\n-237 std::cout << *it << \" \";\n-238 std::cout << std::endl << \"Ratios between interval lengths: \";\n-239\n-240 std::vector ratios;\n-241 for (auto it = meshsize.begin(); it != meshsize.end() - 1 ;)\n-242 ratios.push_back((1./(*it)) * *(++it));\n-243\n-244 for (auto it = ratios.begin(); it != ratios.end(); ++it)\n-245 std::cout << *it << \" \";\n-246 std::cout << std::endl << std::endl << std::endl;\n-247 }\n-248 }\n-249\n-250 private:\n-251 // check whether the ith component is empty and add a 0.0 entry if so\n-252 void emptyCheck (int i)\n-253 {\n-254 if (_coords[i].empty ())\n-255 _coords[i].push_back (static_cast<_\bc_\bt_\by_\bp_\be> (0));\n-256 }\n-257\n-258 // returns the last interval length in direction d\n-259 _\bc_\bt_\by_\bp_\be lastInterval (int d)\n-260 {\n-261 if (_coords[d].size () < 2)\n-262 DUNE_THROW(\n-263 GridError,\n-264 \"Not enough elements in coordinate container to deduce interval length in\n-TensorYaspFactory\");\n-265 else\n-266 return _coords[d].back () - _coords[d][_coords[d].size () - 2];\n-267 }\n-268\n-272 _\bc_\bt_\by_\bp_\be newton (int n, _\bc_\bt_\by_\bp_\be x_s, _\bc_\bt_\by_\bp_\be x_e, _\bc_\bt_\by_\bp_\be h)\n-273 {\n-274 _\bc_\bt_\by_\bp_\be m = (x_e - x_s) / h;\n-275 _\bc_\bt_\by_\bp_\be xold = 0.0;\n-276 _\bc_\bt_\by_\bp_\be xnew = x_e - x_s;\n-277 while (std::abs (xnew - xold) > 1E-8)\n-278 {\n-279 xold = xnew;\n-280 xnew = xold\n-281 - (-pow (xold, n) + m * xold - m + 1)\n-282 / (-n * pow (xold, n - 1) + m);\n-283 }\n-284 if (std::abs (xnew - 1) < 1E-6)\n-285 {\n-286 xold = x_e - x_s;\n-287 xnew = 0.0;\n-288 while (std::abs (xnew - xold) > 1E-8)\n-289 {\n-290 xold = xnew;\n-291 xnew = xold\n-292 - (-pow (xold, n) + m * xold - m + 1)\n-293 / (-n * pow (xold, n - 1) + m);\n-294 }\n-295 }\n-296 return xnew;\n-297 }\n-298\n-299 std::array, _\bd_\bi_\bm> _coords;\n-300 };\n-301\n-302 // class that implements the actual grid creation process. The default is\n-implementing\n-303 // standard creation for unstructured grids. Provide a specialization for\n-other grids.\n-304 template\n-_\b3_\b0_\b5 class _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n-306 {\n-307 public:\n-_\b3_\b0_\b8 typedef typename Grid::Traits::Communication _\bC_\bo_\bm_\bm;\n-_\b3_\b0_\b9 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-_\b3_\b1_\b0 static const int _\bd_\bi_\bm = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-311\n-_\b3_\b1_\b2 _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br(const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory) : _factory\n-(factory) {}\n-313\n-_\b3_\b1_\b4 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(_\bC_\bo_\bm_\bm comm)\n-315 {\n-316 // The grid factory\n-317 _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> fac;\n-318\n-319 if (comm.rank() == 0)\n-320 {\n-321 // determine the size of the grid\n-322 std::array vsizes, esizes;\n-323 std::size_t size = 1;\n-324 for (std::size_t i = 0; i<_\bd_\bi_\bm; ++i)\n-325 {\n-326 vsizes[i] = _factory[i].size();\n-327 esizes[i] = vsizes[i] - 1;\n-328 size *= vsizes[i];\n-329 }\n-330\n-331 // insert all vertices\n-332 _\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b> index(vsizes);\n-333 for (std::size_t i=0; i position;\n-336 for (std::size_t j = 0; j<_\bd_\bi_\bm; ++j)\n-337 position[j] = _factory[j][index[j]];\n-338 fac._\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx(position);\n-339 }\n-340\n-341 // compute the offsets\n-342 std::array offsets;\n-343 offsets[0] = 1;\n-344 for (std::size_t i=1; i<_\bd_\bi_\bm; i++)\n-345 offsets[i] = offsets[i-1] * vsizes[i-1];\n-346\n-347 // Compute an element template (the cube at (0,...,0). All\n-348 // other cubes are constructed by moving this template around\n-349 unsigned int nCorners = 1<<_\bd_\bi_\bm;\n-350\n-351 std::vector cornersTemplate(nCorners,0);\n-352\n-353 for (size_t i=0; i eindex(esizes);\n-360\n-361 // Compute the total number of elements to be created\n-362 int numElements = eindex._\bc_\by_\bc_\bl_\be();\n-363\n-364 for (int i=0; i corners = cornersTemplate;\n-373 for (size_t j=0; j(fac._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd());\n-381 }\n-382\n-383 private:\n-384 const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& _factory;\n-385 };\n-386\n-387 template\n-_\b3_\b8_\b8 class _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br<_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n-389 {\n-390 public:\n-_\b3_\b9_\b1 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd;\n-_\b3_\b9_\b2 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bC_\bo_\bm_\bm;\n-393\n-_\b3_\b9_\b4 _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br(const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory) : _factory\n-(factory) {}\n-395\n-_\b3_\b9_\b6 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(_\bC_\bo_\bm_\bm comm)\n-397 {\n-398 return std::make_unique(_factory.coords(), std::bitset(0ULL), 1,\n-comm);\n-399 }\n-400 private:\n-401 const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& _factory;\n-402 };\n-403}\n-404\n-405#endif\n-_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n-Implements a multiindex with arbitrary dimension and fixed index ranges This is\n-used by various facto...\n-_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh\n+183#if PARMETIS_MAJOR_VERSION >= 4\n+184 const int OK =\n+185#endif\n+186 ParMETIS_V3_AdaptiveRepart(vtxdist.data(), xadj.data(), adjncy.data(),\n+NULL, NULL, NULL,\n+187 &wgtflag, &numflag, &ncon, &nparts, tpwgts.data(), ubvec.data(),\n+188 &itr, options, &edgecut, reinterpret_cast(interiorPart.data()),\n+&comm);\n+189\n+190#if PARMETIS_MAJOR_VERSION >= 4\n+191 if (OK != METIS_OK)\n+192 DUNE_THROW(Dune::Exception, \"ParMETIS returned error code \" << OK);\n+193#endif\n+194\n+195 // At this point, interiorPart contains a target rank for each interior\n+element, and they are sorted\n+196 // by the order in which the grid view traverses them. Now we need to do\n+two things:\n+197 // a) Add additional dummy entries for the ghost elements\n+198 // b) Use the element index for the actual ordering. Since there may be\n+different types of elements,\n+199 // we cannot use the index set directly, but have to go through a Mapper.\n+200\n+201 typedef MultipleCodimMultipleGeomTypeMapper ElementMapper;\n+202 ElementMapper elementMapper(gv, _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt());\n+203\n+204 std::vector part(gv.size(0));\n+205 std::fill(part.begin(), part.end(), 0);\n+206 unsigned int c = 0;\n+207 for (const auto& element : elements(gv, Partitions::_\bi_\bn_\bt_\be_\br_\bi_\bo_\br))\n+208 part[elementMapper.index(element)] = interiorPart[c++];\n+209\n+210 return part;\n+211 }\n+212 };\n+213\n+214} // namespace Dune\n+215\n+216#else // PARMETIS_MAJOR_VERSION\n+217#warning \"You seem to be using the ParMETIS emulation layer of scotch, which\n+does not work with this file.\"\n+218#endif\n+219\n+220#else // HAVE_PARMETIS\n+221#warning \"PARMETIS was not found, please check your configuration\"\n+222#endif\n+223\n+224#endif // DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH\n+_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n+Mapper for multiple codim and multiple geometry types.\n+_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bg_\bl_\bo_\bb_\ba_\bl_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\b._\bh_\bh\n+Provides a globally unique index for all entities of a distributed Dune grid.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgElementLayout()\n+layout for elements (codim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-Define type used for coordinates in grid module.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:532\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Provide a generic factory class for unstructured grids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n-virtual void insertElement(const GeometryType &type, const std::vector<\n-unsigned int > &vertices)\n-Insert an element into the coarse grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n-virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)\n-Insert a vertex into the coarse grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-virtual std::unique_ptr< GridType > createGrid()\n-Finalize grid creation and hand over the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bc_\by_\bc_\bl_\be\n-size_t cycle() const\n-Compute how many times you can call operator++ before getting to (0,...,0)\n-again.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:306\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:309\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bm\n-Grid::Traits::Communication Comm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:308\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n-TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-std::unique_ptr< Grid > createGrid(Comm comm)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm\n-static const int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:310\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n-A factory class for conveniently creating tensorproduct grids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be\n-void fillRange(int d, int n, ctype end)\n-fills the range to end with n intervals in direction d\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be\n-void geometricFillRange(int d, int n, ctype end, ctype h=static_cast< ctype >\n-(0), bool first=true)\n-fills a coordinate range in direction d with n intervals according to a\n-geometric series\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl\n-void fillUntil(int d, ctype h, ctype end)\n-adds intervals in direction d until a given coordinate is reached\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl\n-void geometricFillUntil(int d, ctype ratio, ctype end, ctype h0=static_cast<\n-ctype >(0))\n-adds intervals in direction d according with a given length ratio until a given\n-coordinate is reached\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm\n-static const int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print()\n-print the coordinate information given to the factory so far\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs\n-void fillIntervals(int d, int n, ctype h)\n-pushs n intervals of length h in direction d\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bS_\bt_\ba_\br_\bt\n-void setStart(int d, ctype value)\n-set a starting value in a given direction d\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs\n-void geometricFillIntervals(int d, int n, ctype ratio, ctype h0=static_cast<\n-ctype >(0))\n-adds n intervals in direction d with a given length ratio and a given starting\n-interval length.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-std::vector< ctype > & operator[](std::size_t d)\n-allow to manually tune the factory by overloading operator[] to export the\n-coordinate vectors in the ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const std::vector< ctype > & operator[](std::size_t d) const\n-allow to manually tune the factory by overloading operator[] to export the\n-coordinate vectors in the ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-std::unique_ptr< Grid > createGrid(Comm comm=Comm())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bm\n-Grid::Traits::Communication Comm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs\n-std::array< std::vector< ctype >, dim > coords() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n-_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n-std::unique_ptr< Grid > createGrid(Comm comm)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:396\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n-_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n-TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:394\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n-_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bm_\bm\n-Grid::Communication Comm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:392\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n-_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n-YaspGrid< dim, TensorProductCoordinates< ctype, dim > > Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:391\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n-[ provides Dune::Grid ]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-typename Base::Communication Communication\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n-Coordinate container for a tensor product YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:245\n-_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-Provide a generic factory class for unstructured grids.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br\n+constexpr Interior interior\n+PartitionSet for the interior partition.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:272\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00986.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00986.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainermap.hh File Reference\n+dune-grid: entitycommhelper.hh File Reference\n \n \n \n \n \n \n \n@@ -72,33 +72,32 @@\n
  • dune
  • grid
  • utility
  • \n
    \n \n
    \n \n-
    persistentcontainermap.hh File Reference
    \n+
    entitycommhelper.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <cassert>
    \n-#include <type_traits>
    \n-#include <utility>
    \n-#include <dune/common/hybridutilities.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/grid/common/capabilities.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::PersistentContainerMap< G, IdSet, Map >
     map-based implementation of the PersistentContainer More...
    struct  Dune::EntityCommHelper< InteriorBorder_InteriorBorder_Interface >
     
    class  Dune::PersistentContainerMap< G, IdSet, Map >::IteratorWrapper< value, iterator >
    struct  Dune::EntityCommHelper< InteriorBorder_All_Interface >
     
    struct  Dune::EntityCommHelper< Overlap_OverlapFront_Interface >
     
    struct  Dune::EntityCommHelper< Overlap_All_Interface >
     
    struct  Dune::EntityCommHelper< All_All_Interface >
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,29 +2,27 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-persistentcontainermap.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+entitycommhelper.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\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_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n-\u00a0 map-based implementation of the _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bv_\ba_\bl_\bu_\be_\b,\n- _\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\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 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00986_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00986_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainermap.hh Source File\n+dune-grid: entitycommhelper.hh Source File\n \n \n \n \n \n \n \n@@ -74,387 +74,169 @@\n \n
    \n \n
    \n \n
    \n-
    persistentcontainermap.hh
    \n+
    entitycommhelper.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_PERSISTENTCONTAINERMAP_HH
    \n-
    6#define DUNE_PERSISTENTCONTAINERMAP_HH
    \n+
    5#ifndef DUNE_ENTITYCOMMHELPER_HH
    \n+
    6#define DUNE_ENTITYCOMMHELPER_HH
    \n
    7
    \n-
    8#include <algorithm>
    \n-
    9#include <cassert>
    \n-
    10#include <type_traits>
    \n-
    11#include <utility>
    \n+\n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n
    12
    \n-
    13#include <dune/common/hybridutilities.hh>
    \n-
    14#include <dune/common/typetraits.hh>
    \n-\n+
    13 template< InterfaceType iftype >
    \n+\n+
    15
    \n
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    20 // PersistentContainerMap
    \n-
    21 // ----------------------
    \n-
    22
    \n-
    24 template< class G, class IdSet, class Map >
    \n-
    \n-\n-
    26 {
    \n-\n-
    28
    \n-
    29 protected:
    \n-
    30 template< class reference, class iterator >
    \n-
    31 class IteratorWrapper;
    \n+
    17 template<>
    \n+
    \n+\n+
    19 {
    \n+
    \n+
    20 static bool send ( const PartitionType p )
    \n+
    21 {
    \n+
    22 //return (p == InteriorEntity) || (p == BorderEntity);
    \n+
    23 return (p == BorderEntity);
    \n+
    24 }
    \n+
    \n+
    25
    \n+
    \n+
    26 static bool receive ( const PartitionType p )
    \n+
    27 {
    \n+
    28 //return (p == InteriorEntity) || (p == BorderEntity);
    \n+
    29 return (p == BorderEntity);
    \n+
    30 }
    \n+
    \n+
    31 };
    \n+
    \n
    32
    \n-
    33 public:
    \n-
    34 typedef G Grid;
    \n-
    35
    \n-
    36 typedef typename Map::mapped_type Value;
    \n-
    37 typedef typename Map::size_type Size;
    \n-
    38
    \n-\n-\n+
    33
    \n+
    34 template<>
    \n+
    \n+\n+
    36 {
    \n+
    \n+
    37 static bool send ( const PartitionType p )
    \n+
    38 {
    \n+
    39 return (p == InteriorEntity) || (p == BorderEntity);
    \n+
    40 }
    \n+
    \n
    41
    \n
    \n-
    42 PersistentContainerMap ( const Grid &grid, int codim, const IdSet &idSet, const Value &value )
    \n-
    43 : grid_( &grid ),
    \n-
    44 codim_( codim ),
    \n-
    45 idSet_( &idSet ),
    \n-
    46 data_()
    \n-
    47 {
    \n-
    48 resize( value );
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    51 template< class Entity >
    \n-
    \n-
    52 const Value &operator[] ( const Entity &entity ) const
    \n-
    53 {
    \n-
    54 assert( Entity::codimension == codimension() );
    \n-
    55 typename Map::const_iterator pos = data_.find( idSet().id( entity ) );
    \n-
    56 assert( pos != data_.end() );
    \n-
    57 return pos->second;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    60 template< class Entity >
    \n-
    \n-
    61 Value &operator[] ( const Entity &entity )
    \n-
    62 {
    \n-
    63 assert( Entity::codimension == codimension() );
    \n-
    64 typename Map::iterator pos = data_.find( idSet().id( entity ) );
    \n-
    65 assert( pos != data_.end() );
    \n-
    66 return pos->second;
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    69 template< class Entity >
    \n+
    42 static bool receive ( const PartitionType p )
    \n+
    43 {
    \n+
    44 //return true;
    \n+
    45 return (p != InteriorEntity);
    \n+
    46 }
    \n+
    \n+
    47 };
    \n+
    \n+
    48
    \n+
    49
    \n+
    50 template<>
    \n+
    \n+\n+
    52 {
    \n+
    \n+
    53 static bool send ( const PartitionType p )
    \n+
    54 {
    \n+
    55 //return (p == InteriorEntity) || (p == BorderEntity) || (p == OverlapEntity);
    \n+
    56 return (p != FrontEntity) && (p != GhostEntity);
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+
    59 static bool receive ( const PartitionType p )
    \n+
    60 {
    \n+
    61 //return (p == InteriorEntity) || (p == BorderEntity) || (p == OverlapEntity) || (p == FrontEntity);
    \n+
    62 return (p != GhostEntity);
    \n+
    63 }
    \n+
    \n+
    64 };
    \n+
    \n+
    65
    \n+
    66
    \n+
    67 template<>
    \n+
    \n+\n+
    69 {
    \n
    \n-
    70 const Value &operator() ( const Entity &entity, int subEntity ) const
    \n-
    71 {
    \n-
    72 typename Map::const_iterator pos = data_.find( idSet().subId( entity, subEntity, codimension() ) );
    \n-
    73 assert( pos != data_.end() );
    \n-
    74 return pos->second;
    \n-
    75 }
    \n-
    \n-
    76
    \n-
    77 template< class Entity >
    \n-
    \n-
    78 Value &operator() ( const Entity &entity, int subEntity )
    \n-
    79 {
    \n-
    80 typename Map::iterator pos = data_.find( idSet().subId( entity, subEntity, codimension() ) );
    \n-
    81 assert( pos != data_.end() );
    \n-
    82 return pos->second;
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    85 Size size () const { return data_.size(); }
    \n-
    86
    \n-
    \n-
    87 void resize ( const Value &value = Value() )
    \n-
    88 {
    \n-
    89 Hybrid::forEach( std::make_index_sequence< Grid::dimension+1 >{},
    \n-
    90 [ & ]( auto i ){ if( int(i) == this->codimension() ) this->template resize< i >( value ); } );
    \n-
    91 }
    \n-
    \n-
    92
    \n-
    93 void shrinkToFit () {}
    \n-
    94
    \n-
    95 void fill ( const Value &value ) { std::fill( begin(), end(), value ); }
    \n-
    96
    \n-
    \n-
    97 void swap ( This &other )
    \n-
    98 {
    \n-
    99 std::swap( grid_, other.grid_ );
    \n-
    100 std::swap( codim_, other.codim_ );
    \n-
    101 std::swap( idSet_, other.idSet_ );
    \n-
    102 std::swap( data_, other.data_ );
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    \n-\n-
    \n-\n-
    107
    \n-
    \n-\n-
    \n-\n-
    110
    \n-
    111 int codimension () const { return codim_; }
    \n-
    112
    \n-
    113 protected:
    \n-
    114 const Grid &grid () const { return *grid_; }
    \n-
    115
    \n-
    116 template< int codim >
    \n-
    \n-
    117 void resize ( const Value &value );
    \n-
    118
    \n-
    119 template< int codim >
    \n-
    \n-
    120 void migrateLevel ( int level, const Value &value, Map &data,
    \n-
    121 std::integral_constant< bool, true > );
    \n-
    122
    \n-
    123 template< int codim >
    \n-
    \n-
    124 void migrateLevel ( int level, const Value &value, Map &data,
    \n-
    125 std::integral_constant< bool, false > );
    \n-
    126
    \n-
    \n-
    127 static void migrateEntry ( const typename IdSet::IdType &id, const Value &value,
    \n-
    128 Map &oldData, Map &newData );
    \n-
    129
    \n-
    130 const IdSet &idSet () const { return *idSet_; }
    \n-
    131
    \n-
    132 const Grid *grid_;
    \n-\n-
    134 const IdSet *idSet_;
    \n-
    135 Map data_;
    \n-
    136 };
    \n-
    137
    \n-
    138
    \n-
    139
    \n-
    140 // PersistentContainerMap::IteratorWrapper
    \n-
    141 // ---------------------------------------
    \n-
    142
    \n-
    143 template< class G, class IdSet, class Map >
    \n-
    144 template< class value, class iterator >
    \n-
    \n-\n-
    146 : public iterator
    \n-
    147 {
    \n-\n-
    149
    \n-
    150 public:
    \n-
    151 IteratorWrapper ( const iterator &it ) : it_( it ) {}
    \n-
    152
    \n-
    153 operator ConstWrapper () const { return ConstWrapper( it_ ); }
    \n-
    154
    \n-
    155 value &operator* () { return it_->second; }
    \n-
    156 value *operator-> () { return &(it_->second); }
    \n-
    157
    \n-
    158 bool operator== ( const IteratorWrapper &other ) const { return (it_ == other.it_); }
    \n-
    159 bool operator!= ( const IteratorWrapper &other ) const { return (it_ != other.it_); }
    \n-
    160
    \n-
    161 IteratorWrapper &operator++ () { ++it_; return *this; }
    \n-
    162
    \n-
    163 private:
    \n-
    164 iterator it_;
    \n-
    165 };
    \n-
    \n-
    166
    \n-
    167
    \n-
    168
    \n-
    169
    \n-
    170 // Implementation of PersistentContainerMap
    \n-
    171 // ----------------------------------------
    \n-
    172
    \n-
    173 template< class G, class IdSet, class Map >
    \n-\n-
    \n-\n-
    176 {
    \n-
    177 return ConstIterator( data_.begin() );
    \n-
    178 }
    \n-
    \n-
    179
    \n-
    180 template< class G, class IdSet, class Map >
    \n-\n-
    \n-\n-
    183 {
    \n-
    184 return Iterator( data_.begin() );
    \n-
    185 }
    \n-
    \n-
    186
    \n-
    187
    \n-
    188 template< class G, class IdSet, class Map >
    \n-\n-
    \n-\n-
    191 {
    \n-
    192 return ConstIterator( data_.end() );
    \n-
    193 }
    \n-
    \n-
    194
    \n-
    195 template< class G, class IdSet, class Map >
    \n-\n-
    \n-\n-
    198 {
    \n-
    199 return Iterator( data_.end() );
    \n-
    200 }
    \n-
    \n-
    201
    \n-
    202
    \n-
    203 template< class G, class IdSet, class Map >
    \n-
    204 template< int codim >
    \n-
    \n-\n-
    206 {
    \n-
    207 std::integral_constant< bool, Capabilities::hasEntityIterator< Grid, codim >::v > hasEntityIterator;
    \n-
    208 assert( codim == codimension() );
    \n-
    209
    \n-
    210 // create empty map and swap it with current map (no need to copy twice)
    \n-
    211 Map data;
    \n-
    212 std::swap( data, data_ );
    \n-
    213
    \n-
    214 // copy all data from old map into new one (adding new entries, if necessary)
    \n-
    215 const int maxLevel = grid().maxLevel();
    \n-
    216 for ( int level = 0; level <= maxLevel; ++level )
    \n-
    217 migrateLevel< codim >( level, value, data, hasEntityIterator );
    \n-
    218 }
    \n-
    \n-
    219
    \n-
    220
    \n-
    221 template< class G, class IdSet, class Map >
    \n-
    222 template< int codim >
    \n-\n-
    \n-
    224 ::migrateLevel ( int level, const Value &value, Map &data,
    \n-
    225 std::integral_constant< bool, true > )
    \n-
    226 {
    \n-
    227 typedef typename Grid::LevelGridView LevelView;
    \n-
    228 typedef typename LevelView::template Codim< codim >::Iterator LevelIterator;
    \n-
    229
    \n-
    230 const LevelView levelView = grid().levelGridView( level );
    \n-
    231 const LevelIterator end = levelView.template end< codim >();
    \n-
    232 for( LevelIterator it = levelView.template begin< codim >(); it != end; ++it )
    \n-
    233 migrateEntry( idSet().id( *it ), value, data, data_ );
    \n-
    234 }
    \n-
    \n-
    235
    \n-
    236
    \n-
    237 template< class G, class IdSet, class Map >
    \n-
    238 template< int codim >
    \n-\n-
    \n-
    240 ::migrateLevel ( int level, const Value &value, Map &data,
    \n-
    241 std::integral_constant< bool, false > )
    \n-
    242 {
    \n-
    243 typedef typename Grid::LevelGridView LevelView;
    \n-
    244 typedef typename LevelView::template Codim< 0 >::Iterator LevelIterator;
    \n-
    245
    \n-
    246 const LevelView levelView = grid().levelGridView( level );
    \n-
    247 const LevelIterator end = levelView.template end< 0 >();
    \n-
    248 for( LevelIterator it = levelView.template begin< 0 >(); it != end; ++it )
    \n-
    249 {
    \n-
    250 const typename LevelIterator::Entity &entity = *it;
    \n-
    251 const int subEntities = entity.subEntities( codim );
    \n-
    252 for( int i = 0; i < subEntities; ++i )
    \n-
    253 migrateEntry( idSet().subId( entity, i, codim ), value, data, data_ );
    \n-
    254 }
    \n-
    255 }
    \n-
    \n-
    256
    \n-
    257
    \n-
    258 template< class G, class IdSet, class Map >
    \n-\n-
    \n-
    260 ::migrateEntry ( const typename IdSet::IdType &id, const Value &value,
    \n-
    261 Map &oldData, Map &newData )
    \n-
    262 {
    \n-
    263 // insert entry for id
    \n-
    264 const std::pair< typename Map::iterator, bool > inserted
    \n-
    265 = newData.insert( std::make_pair( id, value ) );
    \n-
    266
    \n-
    267 // if entry did not exist previously, copy data
    \n-
    268 if( inserted.second )
    \n-
    269 {
    \n-
    270 const typename Map::iterator pos = oldData.find( id );
    \n-
    271 if( pos != oldData.end() )
    \n-
    272 {
    \n-
    273 inserted.first->second = pos->second;
    \n-
    274 oldData.erase( pos );
    \n-
    275 }
    \n-
    276 }
    \n-
    277 }
    \n-
    \n-
    \n-
    278
    \n-
    279} // namespace Dune
    \n-
    280
    \n-
    281#endif // #ifndef DUNE_PERSISTENTCONTAINERMAP_HH
    \n-
    \n+
    70 static bool send ( const PartitionType p )
    \n+
    71 {
    \n+
    72 //return (p == InteriorEntity) || (p == BorderEntity) || (p == OverlapEntity);
    \n+
    73 return (p != FrontEntity) && (p != GhostEntity);
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    \n+
    76 static bool receive ([[maybe_unused]] const PartitionType p)
    \n+
    77 {
    \n+
    78 return true;
    \n+
    79 }
    \n+
    \n+
    80 };
    \n+
    \n+
    81
    \n+
    82
    \n+
    83 template<>
    \n+
    \n+\n+
    85 {
    \n+
    \n+
    86 static bool send ([[maybe_unused]] const PartitionType p)
    \n+
    87 {
    \n+
    88 return true;
    \n+
    89 }
    \n+
    \n+
    90
    \n+
    \n+
    91 static bool receive ([[maybe_unused]] const PartitionType p)
    \n+
    92 {
    \n+
    93 return true;
    \n+
    94 }
    \n
    \n+
    95 };
    \n
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n+
    96
    \n+
    97} // namespace Dune
    \n+
    98
    \n+
    99#endif // #ifndef DUNE_ENTITYCOMMHELPER_HH
    \n+\n+
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n+
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n+
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n+
    @ GhostEntity
    ghost entities
    Definition gridenums.hh:35
    \n+
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n+
    @ InteriorBorder_All_Interface
    send interior and border, receive all entities
    Definition gridenums.hh:88
    \n+
    @ All_All_Interface
    send all and receive all entities
    Definition gridenums.hh:91
    \n+
    @ Overlap_All_Interface
    send overlap, receive all entities
    Definition gridenums.hh:90
    \n+
    @ Overlap_OverlapFront_Interface
    send overlap, receive overlap and front entities
    Definition gridenums.hh:89
    \n+
    @ InteriorBorder_InteriorBorder_Interface
    send/receive interior and border entities
    Definition gridenums.hh:87
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n-
    Id Set Interface.
    Definition indexidset.hh:452
    \n-
    IdTypeImp IdType
    Type used to represent an id.
    Definition indexidset.hh:458
    \n-
    GridFamily::Traits::LevelGridView LevelGridView
    type of view for level grid
    Definition common/grid.hh:402
    \n-
    Export the type of the entity used as parameter in the id(...) method.
    Definition indexidset.hh:462
    \n-
    map-based implementation of the PersistentContainer
    Definition persistentcontainermap.hh:26
    \n-
    void migrateLevel(int level, const Value &value, Map &data, std::integral_constant< bool, false >)
    Definition persistentcontainermap.hh:240
    \n-
    void swap(This &other)
    Definition persistentcontainermap.hh:97
    \n-
    void fill(const Value &value)
    Definition persistentcontainermap.hh:95
    \n-
    G Grid
    Definition persistentcontainermap.hh:34
    \n-
    void resize(const Value &value)
    Definition persistentcontainermap.hh:205
    \n-
    IteratorWrapper< const Value, typename Map::const_iterator > ConstIterator
    Definition persistentcontainermap.hh:39
    \n-
    int codim_
    Definition persistentcontainermap.hh:133
    \n-
    const Grid * grid_
    Definition persistentcontainermap.hh:132
    \n-
    const Value & operator[](const Entity &entity) const
    Definition persistentcontainermap.hh:52
    \n-
    int codimension() const
    Definition persistentcontainermap.hh:111
    \n-
    void resize(const Value &value=Value())
    Definition persistentcontainermap.hh:87
    \n-
    const IdSet & idSet() const
    Definition persistentcontainermap.hh:130
    \n-
    ConstIterator begin() const
    Definition persistentcontainermap.hh:175
    \n-
    static void migrateEntry(const typename IdSet::IdType &id, const Value &value, Map &oldData, Map &newData)
    Definition persistentcontainermap.hh:260
    \n-
    Map::mapped_type Value
    Definition persistentcontainermap.hh:36
    \n-
    Iterator end()
    Definition persistentcontainermap.hh:197
    \n-
    const Grid & grid() const
    Definition persistentcontainermap.hh:114
    \n-
    const Value & operator()(const Entity &entity, int subEntity) const
    Definition persistentcontainermap.hh:70
    \n-
    PersistentContainerMap(const Grid &grid, int codim, const IdSet &idSet, const Value &value)
    Definition persistentcontainermap.hh:42
    \n-
    Iterator begin()
    Definition persistentcontainermap.hh:182
    \n-
    Map::size_type Size
    Definition persistentcontainermap.hh:37
    \n-
    ConstIterator end() const
    Definition persistentcontainermap.hh:190
    \n-
    Map data_
    Definition persistentcontainermap.hh:135
    \n-
    Size size() const
    Definition persistentcontainermap.hh:85
    \n-
    IteratorWrapper< Value, typename Map::iterator > Iterator
    Definition persistentcontainermap.hh:40
    \n-
    const IdSet * idSet_
    Definition persistentcontainermap.hh:134
    \n-
    void migrateLevel(int level, const Value &value, Map &data, std::integral_constant< bool, true >)
    Definition persistentcontainermap.hh:224
    \n-
    void shrinkToFit()
    Definition persistentcontainermap.hh:93
    \n-
    Definition persistentcontainermap.hh:147
    \n-
    IteratorWrapper(const iterator &it)
    Definition persistentcontainermap.hh:151
    \n-
    A set of traits classes to store static information about grid implementation.
    \n+
    Definition entitycommhelper.hh:14
    \n+
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:26
    \n+
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:20
    \n+
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:42
    \n+
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:37
    \n+
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:53
    \n+
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:59
    \n+
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:76
    \n+
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:70
    \n+
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:86
    \n+
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:91
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,432 +1,190 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-persistentcontainermap.hh\n+entitycommhelper.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_PERSISTENTCONTAINERMAP_HH\n-6#define DUNE_PERSISTENTCONTAINERMAP_HH\n+5#ifndef DUNE_ENTITYCOMMHELPER_HH\n+6#define DUNE_ENTITYCOMMHELPER_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n 12\n-13#include \n-14#include \n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+13 template< InterfaceType iftype >\n+_\b1_\b4 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br;\n+15\n 16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-20 // PersistentContainerMap\n-21 // ----------------------\n-22\n-24 template< class G, class IdSet, class Map >\n-_\b2_\b5 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp\n-26 {\n-27 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n-28\n-29 protected:\n-30 template< class reference, class iterator >\n-31 class _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br;\n+17 template<>\n+_\b1_\b8 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n+19 {\n+_\b2_\b0 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n+21 {\n+22 //return (p == InteriorEntity) || (p == BorderEntity);\n+23 return (p == _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by);\n+24 }\n+25\n+_\b2_\b6 static bool _\br_\be_\bc_\be_\bi_\bv_\be ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n+27 {\n+28 //return (p == InteriorEntity) || (p == BorderEntity);\n+29 return (p == _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by);\n+30 }\n+31 };\n 32\n-33 public:\n-_\b3_\b4 typedef G _\bG_\br_\bi_\bd;\n-35\n-_\b3_\b6 typedef typename Map::mapped_type _\bV_\ba_\bl_\bu_\be;\n-_\b3_\b7 typedef typename Map::size_type _\bS_\bi_\bz_\be;\n-38\n-_\b3_\b9 typedef _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bV_\ba_\bl_\bu_\be_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b4_\b0 typedef _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bV_\ba_\bl_\bu_\be_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bM_\ba_\bp_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b> _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+33\n+34 template<>\n+_\b3_\b5 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n+36 {\n+_\b3_\b7 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n+38 {\n+39 return (p == _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) || (p == _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by);\n+40 }\n 41\n-_\b4_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp ( const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd, int codim, const _\bI_\bd_\bS_\be_\bt &_\bi_\bd_\bS_\be_\bt,\n-const _\bV_\ba_\bl_\bu_\be &value )\n-43 : _\bg_\br_\bi_\bd_\b_( &_\bg_\br_\bi_\bd ),\n-44 _\bc_\bo_\bd_\bi_\bm_\b_( codim ),\n-45 _\bi_\bd_\bS_\be_\bt_\b_( &_\bi_\bd_\bS_\be_\bt ),\n-46 _\bd_\ba_\bt_\ba_\b_()\n-47 {\n-48 _\br_\be_\bs_\bi_\bz_\be( value );\n-49 }\n-50\n-51 template< class Entity >\n-_\b5_\b2 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-53 {\n-54 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-55 typename Map::const_iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().id( entity ) );\n-56 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n-57 return pos->second;\n-58 }\n-59\n-60 template< class Entity >\n-_\b6_\b1 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-62 {\n-63 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-64 typename Map::iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().id( entity ) );\n-65 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n-66 return pos->second;\n-67 }\n-68\n-69 template< class Entity >\n-_\b7_\b0 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const\n+_\b4_\b2 static bool _\br_\be_\bc_\be_\bi_\bv_\be ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n+43 {\n+44 //return true;\n+45 return (p != _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by);\n+46 }\n+47 };\n+48\n+49\n+50 template<>\n+_\b5_\b1 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n+52 {\n+_\b5_\b3 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n+54 {\n+55 //return (p == InteriorEntity) || (p == BorderEntity) || (p ==\n+OverlapEntity);\n+56 return (p != _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by) && (p != _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by);\n+57 }\n+58\n+_\b5_\b9 static bool _\br_\be_\bc_\be_\bi_\bv_\be ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n+60 {\n+61 //return (p == InteriorEntity) || (p == BorderEntity) || (p ==\n+OverlapEntity) || (p == FrontEntity);\n+62 return (p != _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by);\n+63 }\n+64 };\n+65\n+66\n+67 template<>\n+_\b6_\b8 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n+69 {\n+_\b7_\b0 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n 71 {\n-72 typename Map::const_iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().subId( entity,\n-subEntity, _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() ) );\n-73 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n-74 return pos->second;\n-75 }\n-76\n-77 template< class Entity >\n-_\b7_\b8 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity )\n-79 {\n-80 typename Map::iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().subId( entity, subEntity,\n-_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() ) );\n-81 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n-82 return pos->second;\n-83 }\n-84\n-_\b8_\b5 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const { return _\bd_\ba_\bt_\ba_\b_.size(); }\n-86\n-_\b8_\b7 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() )\n-88 {\n-89 Hybrid::forEach( std::make_index_sequence< Grid::dimension+1 >{},\n-90 [ & ]( auto i ){ if( int(i) == this->_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() ) this->template resize<\n-i >( value ); } );\n-91 }\n-92\n-_\b9_\b3 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt () {}\n-94\n-_\b9_\b5 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value ) { std::fill( _\bb_\be_\bg_\bi_\bn(), _\be_\bn_\bd(), value ); }\n+72 //return (p == InteriorEntity) || (p == BorderEntity) || (p ==\n+OverlapEntity);\n+73 return (p != _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by) && (p != _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by);\n+74 }\n+75\n+_\b7_\b6 static bool _\br_\be_\bc_\be_\bi_\bv_\be ([[maybe_unused]] const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p)\n+77 {\n+78 return true;\n+79 }\n+80 };\n+81\n+82\n+83 template<>\n+_\b8_\b4 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n+85 {\n+_\b8_\b6 static bool _\bs_\be_\bn_\bd ([[maybe_unused]] const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p)\n+87 {\n+88 return true;\n+89 }\n+90\n+_\b9_\b1 static bool _\br_\be_\bc_\be_\bi_\bv_\be ([[maybe_unused]] const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p)\n+92 {\n+93 return true;\n+94 }\n+95 };\n 96\n-_\b9_\b7 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other )\n-98 {\n-99 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bg_\br_\bi_\bd_\b_, other._\bg_\br_\bi_\bd_\b_ );\n-100 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bc_\bo_\bd_\bi_\bm_\b_, other._\bc_\bo_\bd_\bi_\bm_\b_ );\n-101 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bi_\bd_\bS_\be_\bt_\b_, other._\bi_\bd_\bS_\be_\bt_\b_ );\n-102 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bd_\ba_\bt_\ba_\b_, other._\bd_\ba_\bt_\ba_\b_ );\n-103 }\n-104\n-_\b1_\b0_\b5 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const;\n-_\b1_\b0_\b6 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn ();\n-107\n-_\b1_\b0_\b8 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const;\n-_\b1_\b0_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd ();\n-110\n-_\b1_\b1_\b1 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const { return _\bc_\bo_\bd_\bi_\bm_\b_; }\n-112\n-113 protected:\n-_\b1_\b1_\b4 const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd () const { return *_\bg_\br_\bi_\bd_\b_; }\n-115\n-116 template< int codim >\n-_\b1_\b1_\b7 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value );\n-118\n-119 template< int codim >\n-_\b1_\b2_\b0 void _\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n-121 std::integral_constant< bool, true > );\n-122\n-123 template< int codim >\n-_\b1_\b2_\b4 void _\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n-125 std::integral_constant< bool, false > );\n-126\n-_\b1_\b2_\b7 static void _\bm_\bi_\bg_\br_\ba_\bt_\be_\bE_\bn_\bt_\br_\by ( const typename _\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be &id, const _\bV_\ba_\bl_\bu_\be\n-&value,\n-128 Map &oldData, Map &newData );\n-129\n-_\b1_\b3_\b0 const _\bI_\bd_\bS_\be_\bt &_\bi_\bd_\bS_\be_\bt () const { return *_\bi_\bd_\bS_\be_\bt_\b_; }\n-131\n-_\b1_\b3_\b2 const _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd_\b_;\n-_\b1_\b3_\b3 int _\bc_\bo_\bd_\bi_\bm_\b_;\n-_\b1_\b3_\b4 const _\bI_\bd_\bS_\be_\bt *_\bi_\bd_\bS_\be_\bt_\b_;\n-_\b1_\b3_\b5 Map _\bd_\ba_\bt_\ba_\b_;\n-136 };\n-137\n-138\n-139\n-140 // PersistentContainerMap::IteratorWrapper\n-141 // ---------------------------------------\n-142\n-143 template< class G, class IdSet, class Map >\n-144 template< class value, class iterator >\n-_\b1_\b4_\b5 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n-146 : public iterator\n-147 {\n-148 typedef _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bv_\ba_\bl_\bu_\be_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n-_\bC_\bo_\bn_\bs_\bt_\bW_\br_\ba_\bp_\bp_\be_\br;\n-149\n-150 public:\n-_\b1_\b5_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br ( const iterator &it ) : it_( it ) {}\n-152\n-_\b1_\b5_\b3 operator _\bC_\bo_\bn_\bs_\bt_\bW_\br_\ba_\bp_\bp_\be_\br () const { return _\bC_\bo_\bn_\bs_\bt_\bW_\br_\ba_\bp_\bp_\be_\br( it_ ); }\n-154\n-_\b1_\b5_\b5 value &operator* () { return it_->second; }\n-_\b1_\b5_\b6 value *operator-> () { return &(it_->second); }\n-157\n-_\b1_\b5_\b8 bool operator== ( const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br &other ) const { return (it_ ==\n-other.it_); }\n-_\b1_\b5_\b9 bool operator!= ( const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br &other ) const { return (it_ !=\n-other.it_); }\n-160\n-_\b1_\b6_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br &operator++ () { ++it_; return *this; }\n-162\n-163 private:\n-164 iterator it_;\n-165 };\n-166\n-167\n-168\n-169\n-170 // Implementation of PersistentContainerMap\n-171 // ----------------------------------------\n-172\n-173 template< class G, class IdSet, class Map >\n-174 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b1_\b7_\b5 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bb_\be_\bg_\bi_\bn () const\n-176 {\n-177 return _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.begin() );\n-178 }\n-179\n-180 template< class G, class IdSet, class Map >\n-181 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b1_\b8_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bb_\be_\bg_\bi_\bn ()\n-183 {\n-184 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.begin() );\n-185 }\n-186\n-187\n-188 template< class G, class IdSet, class Map >\n-189 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b1_\b9_\b0 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\be_\bn_\bd () const\n-191 {\n-192 return _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.end() );\n-193 }\n-194\n-195 template< class G, class IdSet, class Map >\n-196 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\b1_\b9_\b7 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\be_\bn_\bd ()\n-198 {\n-199 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.end() );\n-200 }\n-201\n-202\n-203 template< class G, class IdSet, class Map >\n-204 template< int codim >\n-_\b2_\b0_\b5 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be\n-&value )\n-206 {\n-207 std::integral_constant< bool, Capabilities::hasEntityIterator< Grid, codim\n->::v > hasEntityIterator;\n-208 assert( codim == codimension() );\n-209\n-210 // create empty map and swap it with current map (no need to copy twice)\n-211 Map data;\n-212 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( data, data_ );\n-213\n-214 // copy all data from old map into new one (adding new entries, if\n-necessary)\n-215 const int maxLevel = grid().maxLevel();\n-216 for ( int level = 0; level <= maxLevel; ++level )\n-217 migrateLevel< codim >( level, value, data, hasEntityIterator );\n-218 }\n-219\n-220\n-221 template< class G, class IdSet, class Map >\n-222 template< int codim >\n-223 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n-_\b2_\b2_\b4_\b _\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n-225 std::integral_constant< bool, true > )\n-226 {\n-227 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw LevelView;\n-228 typedef typename LevelView::template Codim< codim >::Iterator\n-LevelIterator;\n-229\n-230 const LevelView levelView = grid().levelGridView( level );\n-231 const LevelIterator end = levelView.template end< codim >();\n-232 for( LevelIterator it = levelView.template begin< codim >(); it != end;\n-++it )\n-233 migrateEntry( idSet().id( *it ), value, data, data_ );\n-234 }\n-235\n-236\n-237 template< class G, class IdSet, class Map >\n-238 template< int codim >\n-239 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n-_\b2_\b4_\b0_\b _\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n-241 std::integral_constant< bool, false > )\n-242 {\n-243 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw LevelView;\n-244 typedef typename LevelView::template Codim< 0 >::Iterator LevelIterator;\n-245\n-246 const LevelView levelView = grid().levelGridView( level );\n-247 const LevelIterator end = levelView.template end< 0 >();\n-248 for( LevelIterator it = levelView.template begin< 0 >(); it != end; ++it )\n-249 {\n-250 const typename LevelIterator::Entity &entity = *it;\n-251 const int subEntities = entity.subEntities( codim );\n-252 for( int i = 0; i < subEntities; ++i )\n-253 migrateEntry( idSet().subId( entity, i, codim ), value, data, data_ );\n-254 }\n-255 }\n-256\n-257\n-258 template< class G, class IdSet, class Map >\n-259 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n-_\b2_\b6_\b0_\b _\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bE_\bn_\bt_\br_\by ( const typename _\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be &id, const _\bV_\ba_\bl_\bu_\be &value,\n-261 Map &oldData, Map &newData )\n-262 {\n-263 // insert entry for id\n-264 const std::pair< typename Map::iterator, bool > inserted\n-265 = newData.insert( std::make_pair( id, value ) );\n-266\n-267 // if entry did not exist previously, copy data\n-268 if( inserted.second )\n-269 {\n-270 const typename Map::iterator pos = oldData.find( id );\n-271 if( pos != oldData.end() )\n-272 {\n-273 inserted.first->second = pos->second;\n-274 oldData.erase( pos );\n-275 }\n-276 }\n-277 }\n-278\n-279} // namespace Dune\n-280\n-281#endif // #ifndef DUNE_PERSISTENTCONTAINERMAP_HH\n-_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n-> &b)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n+97} // namespace Dune\n+98\n+99#endif // #ifndef DUNE_ENTITYCOMMHELPER_HH\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType\n+Attributes used in the generic overlap model.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+@ FrontEntity\n+on boundary between overlap and ghost\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ InteriorEntity\n+all interior entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+@ GhostEntity\n+ghost entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ BorderEntity\n+on boundary between interior and overlap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ InteriorBorder_All_Interface\n+send interior and border, receive all entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ All_All_Interface\n+send all and receive all entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ Overlap_All_Interface\n+send overlap, receive all entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ Overlap_OverlapFront_Interface\n+send overlap, receive overlap and front entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ InteriorBorder_InteriorBorder_Interface\n+send/receive interior and border entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:87\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int codimension\n-Know your own codimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n-Id Set Interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n-IdTypeImp IdType\n-Type used to represent an id.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:458\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-GridFamily::Traits::LevelGridView LevelGridView\n-type of view for level grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:402\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-Export the type of the entity used as parameter in the id(...) method.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:462\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp\n-map-based implementation of the PersistentContainer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl\n-void migrateLevel(int level, const Value &value, Map &data, std::\n-integral_constant< bool, false >)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Value &value)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Value &value)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IteratorWrapper< const Value, typename Map::const_iterator > ConstIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\b_\n-int codim_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bg_\br_\bi_\bd_\b_\n-const Grid * grid_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const Value & operator[](const Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-int codimension() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bi_\bd_\bS_\be_\bt\n-const IdSet & idSet() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-ConstIterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bE_\bn_\bt_\br_\by\n-static void migrateEntry(const typename IdSet::IdType &id, const Value &value,\n-Map &oldData, Map &newData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:260\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-Map::mapped_type Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\be_\bn_\bd\n-Iterator end()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bg_\br_\bi_\bd\n-const Grid & grid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Value & operator()(const Entity &entity, int subEntity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp\n-PersistentContainerMap(const Grid &grid, int codim, const IdSet &idSet, const\n-Value &value)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bS_\bi_\bz_\be\n-Map::size_type Size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\be_\bn_\bd\n-ConstIterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:190\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bd_\ba_\bt_\ba_\b_\n-Map data_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bi_\bz_\be\n-Size size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-IteratorWrapper< Value, typename Map::iterator > Iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bi_\bd_\bS_\be_\bt_\b_\n-const IdSet * idSet_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl\n-void migrateLevel(int level, const Value &value, Map &data, std::\n-integral_constant< bool, true >)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n-IteratorWrapper(const iterator &it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:151\n-_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n-A set of traits classes to store static information about grid implementation.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:14\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n+static bool receive(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n+static bool send(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n+static bool receive(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n+static bool send(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n+static bool send(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n+static bool receive(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n+static bool receive(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n+static bool send(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n+static bool send(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n+static bool receive(const PartitionType p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.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-grid-doc/doxygen/a00989.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00989.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainerinterface.hh File Reference\n+dune-grid: globalindexset.hh File Reference\n \n \n \n \n \n \n \n@@ -72,32 +72,66 @@\n
  • dune
  • grid
  • utility
  • \n \n \n
    \n \n-
    persistentcontainerinterface.hh File Reference
    \n+
    globalindexset.hh File Reference
    \n
    \n
    \n \n+

    Provides a globally unique index for all entities of a distributed Dune grid. \n+More...

    \n+
    #include <vector>
    \n+#include <iostream>
    \n+#include <fstream>
    \n+#include <memory>
    \n+#include <map>
    \n+#include <utility>
    \n+#include <algorithm>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::PersistentContainerInterface< G, T >
     Persistent storage of data on all entities of a grid. More...
    class  Dune::GlobalIndexSet< GridView >
     Calculate globally unique index over all processes in a Dune grid. More...
     
    struct  Dune::GlobalIndexSet< GridView >::SubPartitionTypeProvider< Entity, Codim >
     Helper class to provide access to subentity PartitionTypes with a run-time codimension. More...
     
    struct  Dune::GlobalIndexSet< GridView >::SubPartitionTypeProvider< Entity, 0 >
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    Provides a globally unique index for all entities of a distributed Dune grid.

    \n+

    Such functionality is relevant for a number of applications:

      \n+
    • Map a degree of freedom associated with an entity to its location in a global matrix or global vector
    • \n+
    • Such indices for elements are needed as input to external mesh partitioners
    • \n+
    • Using matrix and vector routines from the PETSc or trilinos parallel linear algebra packages for distributed memory parallel computers.
    • \n+
    \n+

    Method: (1) The UniqueEntityPartition class assigns an owner process to each entity

        (2) Compute the number of entities that are owned by each process\n+\n+    (3) we communicate the index of entities that are owned by the process to processes\n+        that also contain these entities but do not own them, so that on a non-owner process\n+        we have information on the index of the entity that it got from the owner-process;\n+
    Author
    Benedikt Oswald, Patrick Leidenberger, Oliver Sander
    \n+
    Attention
    globally unique indices are ONLY provided for entities of the InteriorBorder_Partition type, NOT for the Ghost_Partition type !!!
    \n+
    Bug:
    This code will most likely not work on grids with more than one element type. Please ask on the mailing list if you need this feature.
    \n+
    Note
    The interface in this file is experimental, and may change without prior notice.
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,19 +2,70 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-persistentcontainerinterface.hh File Reference\n+globalindexset.hh File Reference\n+Provides a globally unique index for all entities of a distributed _\bD_\bu_\bn_\be grid.\n+_\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\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:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\b,_\b _\bT_\b _\b>\n-\u00a0 Persistent storage of data on all entities of a grid. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n+\u00a0 Calculate globally unique index over all processes in a _\bD_\bu_\bn_\be grid.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b,\n+ _\bC_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0 Helper class to provide access to subentity PartitionTypes with a run-\n+ time codimension. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\b0\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 Include standard header files.\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+Provides a globally unique index for all entities of a distributed _\bD_\bu_\bn_\be grid.\n+Such functionality is relevant for a number of applications:\n+ * Map a degree of freedom associated with an entity to its location in a\n+ global matrix or global vector\n+ * Such indices for elements are needed as input to external mesh\n+ partitioners\n+ * Using matrix and vector routines from the PETSc or trilinos parallel\n+ linear algebra packages for distributed memory parallel computers.\n+Method: (1) The UniqueEntityPartition class assigns an owner process to each\n+entity\n+ (2) Compute the number of entities that are owned by each process\n+\n+ (3) we communicate the index of entities that are owned by the process to\n+processes\n+ that also contain these entities but do not own them, so that on a non-\n+owner process\n+ we have information on the index of the entity that it got from the\n+owner-process;\n+ Author\n+ Benedikt Oswald, Patrick Leidenberger, Oliver Sander\n+ Attention\n+ globally unique indices are ONLY provided for entities of the\n+ InteriorBorder_Partition type, NOT for the Ghost_Partition type !!!\n+ _\bB\bB_\bu\bu_\bg\bg_\b:\b:\n+ This code will most likely not work on grids with more than one element\n+ type. Please ask on the mailing list if you need this feature.\n+ Note\n+ The interface in this file is experimental, and may change without prior\n+ notice.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00989_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00989_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainerinterface.hh Source File\n+dune-grid: globalindexset.hh Source File\n \n \n \n \n \n \n \n@@ -74,124 +74,480 @@\n \n
    \n \n
    \n \n
    \n-
    persistentcontainerinterface.hh
    \n+
    globalindexset.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH
    \n-
    6#define DUNE_PERSISTENTCONTAINERINTERFACE_HH
    \n-
    7
    \n-
    8#ifndef HEADERCHECK
    \n-
    9#error "This header exists for documentation purposes only and should never be included directly."
    \n-
    10#endif
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    53 template< class G, class T >
    \n-
    \n-\n-
    55 {
    \n-\n-
    57
    \n-
    58 struct ImplementationDefined;
    \n-
    59
    \n-
    60 public:
    \n-
    61 typedef G Grid;
    \n-
    62
    \n-
    63 typedef T Value;
    \n-
    64
    \n-
    65 typedef ImplementationDefined Size;
    \n-
    66 typedef ImplementationDefined ConstIterator;
    \n-
    67 typedef ImplementationDefined Iterator;
    \n-
    68
    \n-
    69 // construction
    \n-
    70
    \n-
    79 PersistentContainerInterface ( Grid &grid, int codim, const Value &value = Value() );
    \n-
    80
    \n-\n-
    83
    \n-
    85 const This &operator= ( const This &other );
    \n+
    5
    \n+
    35#ifndef DUNE_GRID_UTILITY_GLOBALINDEXSET_HH
    \n+
    36#define DUNE_GRID_UTILITY_GLOBALINDEXSET_HH
    \n+
    37
    \n+
    39#include <vector>
    \n+
    40#include <iostream>
    \n+
    41#include <fstream>
    \n+
    42#include <memory>
    \n+
    43#include <map>
    \n+
    44#include <utility>
    \n+
    45#include <algorithm>
    \n+
    46
    \n+\n+\n+
    50
    \n+
    52#if HAVE_MPI
    \n+
    53 #include <dune/common/parallel/mpihelper.hh>
    \n+
    54#endif
    \n+
    55
    \n+
    56namespace Dune
    \n+
    57{
    \n+
    58
    \n+
    61 template<class GridView>
    \n+
    \n+\n+
    63 {
    \n+
    64 public:
    \n+
    66 typedef int Index;
    \n+
    67
    \n+
    73 template <class Entity, int Codim>
    \n+
    \n+\n+
    75 {
    \n+
    \n+
    78 static PartitionType get(const Entity& entity, int codim, int i)
    \n+
    79 {
    \n+
    80 if (codim==Codim)
    \n+
    81 return entity.template subEntity<Codim>(i).partitionType();
    \n+
    82 else
    \n+
    83 return SubPartitionTypeProvider<Entity,Codim-1>::get(entity, codim, i);
    \n+
    84 }
    \n+
    \n+
    85 };
    \n+
    \n
    86
    \n-
    87 // element access
    \n-
    88
    \n-
    93 template< class Entity >
    \n-
    94 const Value &operator[] ( const Entity &entity ) const;
    \n+
    87 template <class Entity>
    \n+
    \n+\n+
    89 {
    \n+
    \n+
    90 static PartitionType get(const Entity& entity, int codim, int i)
    \n+
    91 {
    \n+
    92 return entity.template subEntity<0>(i).partitionType();
    \n+
    93 }
    \n+
    \n+
    94 };
    \n+
    \n
    95
    \n-
    100 template< class Entity >
    \n-
    101 Value &operator[] ( const Entity &entity );
    \n-
    102
    \n-
    108 template< class Entity >
    \n-
    109 const Value &operator() ( const Entity &entity, int subEntity ) const;
    \n-
    110
    \n-
    116 template< class Entity >
    \n-
    117 Value &operator() ( const Entity &entity, int subEntity );
    \n-
    118
    \n-
    119 // capacity
    \n-
    120
    \n-
    126 Size size () const;
    \n-
    127
    \n-
    141 void resize ( const Value &value = Value() );
    \n-
    142
    \n-
    156 void shrinkToFit ();
    \n-
    157
    \n-
    158 // modifiers
    \n-
    159
    \n-
    165 void fill ( const Value &value );
    \n-
    166
    \n-
    171 void swap ( This &other );
    \n+
    96 private:
    \n+
    98 typedef typename GridView::Grid Grid;
    \n+
    99
    \n+
    100 typedef typename GridView::Grid::GlobalIdSet GlobalIdSet;
    \n+
    101 typedef typename GridView::Grid::GlobalIdSet::IdType IdType;
    \n+
    102 typedef typename GridView::Traits::template Codim<0>::Iterator Iterator;
    \n+
    103
    \n+
    104 typedef typename Grid::Communication Communication;
    \n+
    105
    \n+
    106 typedef std::map<IdType,Index> MapId2Index;
    \n+
    107 typedef std::map<Index,Index> IndexMap;
    \n+
    108
    \n+
    109 /*********************************************************************************************/
    \n+
    110 /* calculate unique partitioning for all entities of a given codim in a given GridView, */
    \n+
    111 /* assuming they all have the same geometry, i.e. codim, type */
    \n+
    112 /*********************************************************************************************/
    \n+
    113 class UniqueEntityPartition
    \n+
    114 {
    \n+
    115 private:
    \n+
    116 /* A DataHandle class to calculate the minimum of a std::vector which is accompanied by an index set */
    \n+
    117 template<class IS, class V> // mapper type and vector type
    \n+
    118 class MinimumExchange
    \n+
    119 : public Dune::CommDataHandleIF<MinimumExchange<IS,V>,typename V::value_type>
    \n+
    120 {
    \n+
    121 public:
    \n+
    123 typedef typename V::value_type DataType;
    \n+
    124
    \n+
    126 bool contains (int dim, unsigned int codim) const
    \n+
    127 {
    \n+
    128 return codim==indexSetCodim_;
    \n+
    129 }
    \n+
    130
    \n+
    132 bool fixedSize (int dim, int codim) const
    \n+
    133 {
    \n+
    134 return true ;
    \n+
    135 }
    \n+
    136
    \n+
    140 template<class EntityType>
    \n+
    141 size_t size (EntityType& e) const
    \n+
    142 {
    \n+
    143 return 1 ;
    \n+
    144 }
    \n+
    145
    \n+
    147 template<class MessageBuffer, class EntityType>
    \n+
    148 void gather (MessageBuffer& buff, const EntityType& e) const
    \n+
    149 {
    \n+
    150 buff.write(v_[indexset_.index(e)]);
    \n+
    151 }
    \n+
    152
    \n+
    157 template<class MessageBuffer, class EntityType>
    \n+
    158 void scatter (MessageBuffer& buff, const EntityType& e, size_t n)
    \n+
    159 {
    \n+
    160 DataType x;
    \n+
    161 buff.read(x);
    \n+
    162 if (x>=0) // other is -1 means, he does not want it
    \n+
    163 v_[indexset_.index(e)] = std::min(x,v_[indexset_.index(e)]);
    \n+
    164 }
    \n+
    165
    \n+
    167 MinimumExchange (const IS& indexset, V& v, unsigned int indexSetCodim)
    \n+
    168 : indexset_(indexset),
    \n+
    169 v_(v),
    \n+
    170 indexSetCodim_(indexSetCodim)
    \n+
    171 {}
    \n
    172
    \n-
    173 // iterators
    \n-
    174
    \n-\n-\n+
    173 private:
    \n+
    174 const IS& indexset_;
    \n+
    175 V& v_;
    \n+
    176 unsigned int indexSetCodim_;
    \n+
    177 };
    \n+
    178
    \n+
    179 public:
    \n+
    182 UniqueEntityPartition (const GridView& gridview, unsigned int codim)
    \n+
    183 : assignment_(gridview.size(codim))
    \n+
    184 {
    \n+
    186 typedef typename GridView::IndexSet IndexSet;
    \n
    187
    \n-\n-\n-
    200
    \n-
    201 // information
    \n-
    202
    \n-
    204 int codimension () const;
    \n-
    205 };
    \n-
    \n-
    206
    \n-
    207} // namespace Dune
    \n-
    208
    \n-
    209#endif // #ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH
    \n+
    188 // assign own rank to entities that I might have
    \n+
    189 for (auto it = gridview.template begin<0>(); it!=gridview.template end<0>(); ++it)
    \n+
    190 for (unsigned int i=0; i<it->subEntities(codim); i++)
    \n+
    191 {
    \n+
    192 // Evil hack: I need to call subEntity, which needs the entity codimension as a static parameter.
    \n+
    193 // However, we only have it as a run-time parameter.
    \n+
    194 PartitionType subPartitionType = SubPartitionTypeProvider<typename GridView::template Codim<0>::Entity, GridView::dimension>::get(*it,codim,i);
    \n+
    195
    \n+
    196 assignment_[gridview.indexSet().subIndex(*it,i,codim)]
    \n+
    197 = ( subPartitionType==Dune::InteriorEntity or subPartitionType==Dune::BorderEntity )
    \n+
    198 ? gridview.comm().rank() // set to own rank
    \n+
    199 : - 1; // it is a ghost entity, I will not possibly own it.
    \n+
    200 }
    \n+
    201
    \n+
    203 MinimumExchange<IndexSet,std::vector<Index> > dh(gridview.indexSet(),assignment_,codim);
    \n+
    204
    \n+\n+
    206 }
    \n+
    207
    \n+
    209 int owner(size_t i)
    \n+
    210 {
    \n+
    211 return assignment_[i];
    \n+
    212 }
    \n+
    213
    \n+
    215 size_t numOwners(int rank) const
    \n+
    216 {
    \n+
    217 return std::count(assignment_.begin(), assignment_.end(), rank);
    \n+
    218 }
    \n+
    219
    \n+
    220 private:
    \n+
    221 std::vector<int> assignment_;
    \n+
    222 };
    \n+
    223
    \n+
    224 private:
    \n+
    225 /* A DataHandle class to communicate the global index from the
    \n+
    226 * owning to the non-owning entity; the class is based on the MinimumExchange
    \n+
    227 * class in the parallelsolver.hh header file.
    \n+
    228 */
    \n+
    229 class IndexExchange
    \n+
    230 : public Dune::CommDataHandleIF<IndexExchange,Index>
    \n+
    231 {
    \n+
    232 public:
    \n+
    234 bool contains (int dim, unsigned int codim) const
    \n+
    235 {
    \n+
    236 return codim==indexSetCodim_;
    \n+
    237 }
    \n+
    238
    \n+
    240 bool fixedSize (int dim, int codim) const
    \n+
    241 {
    \n+
    242 return true;
    \n+
    243 }
    \n+
    244
    \n+
    249 template<class EntityType>
    \n+
    250 size_t size (EntityType& e) const
    \n+
    251 {
    \n+
    252 return 1;
    \n+
    253 }
    \n+
    254
    \n+
    256 template<class MessageBuffer, class EntityType>
    \n+
    257 void gather (MessageBuffer& buff, const EntityType& e) const
    \n+
    258 {
    \n+
    259 IdType id=globalidset_.id(e);
    \n+
    260
    \n+
    261 if (indexSetCodim_==0)
    \n+
    262 buff.write(mapid2entity_[id]);
    \n+
    263 else
    \n+
    264 buff.write((*mapid2entity_.find(id)).second);
    \n+
    265 }
    \n+
    266
    \n+
    271 template<class MessageBuffer, class EntityType>
    \n+
    272 void scatter (MessageBuffer& buff, const EntityType& entity, size_t n)
    \n+
    273 {
    \n+
    274 Index x;
    \n+
    275 buff.read(x);
    \n+
    276
    \n+
    284 if(x >= 0) {
    \n+
    285 const IdType id = globalidset_.id(entity);
    \n+
    286
    \n+
    287 if (indexSetCodim_==0)
    \n+
    288 mapid2entity_[id] = x;
    \n+
    289 else
    \n+
    290 {
    \n+
    291 mapid2entity_.erase(id);
    \n+
    292 mapid2entity_.insert(std::make_pair(id,x));
    \n+
    293
    \n+
    294 const Index lindex = indexSet_.index(entity);
    \n+
    295 localGlobalMap_[lindex] = x;
    \n+
    296 }
    \n+
    297 }
    \n+
    298 }
    \n+
    299
    \n+
    301 IndexExchange (const GlobalIdSet& globalidset, MapId2Index& mapid2entity,
    \n+
    302 const typename GridView::IndexSet& localIndexSet, IndexMap& localGlobal,
    \n+
    303 unsigned int indexSetCodim)
    \n+
    304 : globalidset_(globalidset),
    \n+
    305 mapid2entity_(mapid2entity),
    \n+
    306 indexSet_(localIndexSet),
    \n+
    307 localGlobalMap_(localGlobal),
    \n+
    308 indexSetCodim_(indexSetCodim)
    \n+
    309 {}
    \n+
    310
    \n+
    311 private:
    \n+
    312 const GlobalIdSet& globalidset_;
    \n+
    313 MapId2Index& mapid2entity_;
    \n+
    314
    \n+
    315 const typename GridView::IndexSet& indexSet_;
    \n+
    316 IndexMap& localGlobalMap_;
    \n+
    317 unsigned int indexSetCodim_;
    \n+
    318 };
    \n+
    319
    \n+
    320 public:
    \n+
    \n+
    326 GlobalIndexSet(const GridView& gridview, int codim)
    \n+
    327 : gridview_(gridview),
    \n+
    328 codim_(codim)
    \n+
    329 {
    \n+
    330 int rank = gridview.comm().rank();
    \n+
    331 int size = gridview.comm().size();
    \n+
    332
    \n+
    333 const typename GridView::IndexSet& indexSet = gridview.indexSet();
    \n+
    334
    \n+
    335 std::unique_ptr<UniqueEntityPartition> uniqueEntityPartition;
    \n+
    336 if (codim_!=0)
    \n+
    337 uniqueEntityPartition = std::make_unique<UniqueEntityPartition>(gridview,codim_);
    \n+
    338
    \n+
    339 int nLocalEntity = (codim_==0)
    \n+
    340 ? std::distance(gridview.template begin<0, Dune::Interior_Partition>(), gridview.template end<0, Dune::Interior_Partition>())
    \n+
    341 : uniqueEntityPartition->numOwners(rank);
    \n+
    342
    \n+
    343 // Compute the global, non-redundant number of entities, i.e. the number of entities in the set
    \n+
    344 // without double, aka. redundant entities, on the interprocessor boundary via global reduce. */
    \n+
    345 nGlobalEntity_ = gridview.comm().template sum<int>(nLocalEntity);
    \n+
    346
    \n+
    347 /* communicate the number of locally owned entities to all other processes so that the respective offset
    \n+
    348 * can be calculated on the respective processor; we use the Dune mpi communication facility
    \n+
    349 * for this; first, we gather the number of locally owned entities on the root process and, second, we
    \n+
    350 * broadcast the array to all processes where the respective offset can be calculated. */
    \n+
    351
    \n+
    352 std::vector<int> offset(size);
    \n+
    353 std::fill(offset.begin(), offset.end(), 0);
    \n+
    354
    \n+
    356 gridview_.comm().template allgather<int>(&nLocalEntity, 1, offset.data());
    \n+
    357
    \n+
    358 int myoffset = 0;
    \n+
    359 for (int i=1; i<rank+1; i++)
    \n+
    360 myoffset += offset[i-1];
    \n+
    361
    \n+
    362 /* compute globally unique index over all processes; the idea of the algorithm is as follows: if
    \n+
    363 * an entity is owned by the process, it is assigned an index that is the addition of the offset
    \n+
    364 * specific for this process and a consecutively incremented counter; if the entity is not owned
    \n+
    365 * by the process, it is assigned -1, which signals that this specific entity will get its global
    \n+
    366 * unique index through communication afterwards;
    \n+
    367 *
    \n+
    368 * thus, the calculation of the globally unique index is divided into 2 stages:
    \n+
    369 *
    \n+
    370 * (1) we calculate the global index independently;
    \n+
    371 *
    \n+
    372 * (2) we achieve parallel adjustment by communicating the index
    \n+
    373 * from the owning entity to the non-owning entity.
    \n+
    374 *
    \n+
    375 */
    \n+
    376
    \n+
    377 // 1st stage of global index calculation: calculate global index for owned entities
    \n+
    378 // initialize map that stores an entity's global index via it's globally unique id as key
    \n+
    379 globalIndex_.clear();
    \n+
    380
    \n+
    381 const GlobalIdSet& globalIdSet = gridview_.grid().globalIdSet();
    \n+
    383 Index globalcontrib = 0;
    \n+
    385 if (codim_==0) // This case is simpler
    \n+
    386 {
    \n+
    387 for (Iterator iter = gridview_.template begin<0>(); iter!=gridview_.template end<0>(); ++iter)
    \n+
    388 {
    \n+
    389 const IdType id = globalIdSet.id(*iter);
    \n+
    392 if (iter->partitionType() == Dune::InteriorEntity)
    \n+
    393 {
    \n+
    394 const Index gindex = myoffset + globalcontrib;
    \n+
    396 globalIndex_[id] = gindex;
    \n+
    397 globalcontrib++;
    \n+
    398 }
    \n+
    399
    \n+
    401 else
    \n+
    402 {
    \n+
    403 globalIndex_[id] = -1;
    \n+
    404 }
    \n+
    405 }
    \n+
    406 }
    \n+
    407 else // if (codim==0) else
    \n+
    408 {
    \n+
    409 std::vector<bool> firstTime(gridview_.size(codim_));
    \n+
    410 std::fill(firstTime.begin(), firstTime.end(), true);
    \n+
    411
    \n+
    412 for(Iterator iter = gridview_.template begin<0>();iter!=gridview_.template end<0>(); ++iter)
    \n+
    413 {
    \n+
    414 for (size_t i=0; i<iter->subEntities(codim_); i++)
    \n+
    415 {
    \n+
    416 IdType id=globalIdSet.subId(*iter,i,codim_);
    \n+
    417
    \n+
    418 Index idx = gridview_.indexSet().subIndex(*iter,i,codim_);
    \n+
    419
    \n+
    420 if (!firstTime[idx] )
    \n+
    421 continue;
    \n+
    422
    \n+
    423 firstTime[idx] = false;
    \n+
    424
    \n+
    425 if (uniqueEntityPartition->owner(idx) == rank)
    \n+
    426 {
    \n+
    427 const Index gindex = myoffset + globalcontrib;
    \n+
    428 globalIndex_.insert(std::make_pair(id,gindex));
    \n+
    430 const Index lindex = idx;
    \n+
    431 localGlobalMap_[lindex] = gindex;
    \n+
    432
    \n+
    433 globalcontrib++;
    \n+
    434 }
    \n+
    435 else
    \n+
    436 {
    \n+
    437 globalIndex_.insert(std::make_pair(id,-1));
    \n+
    438 }
    \n+
    439 }
    \n+
    440
    \n+
    441 }
    \n+
    442 }
    \n+
    443
    \n+
    444 // 2nd stage of global index calculation: communicate global index for non-owned entities
    \n+
    445
    \n+
    446 // Create the data handle and communicate.
    \n+
    447 IndexExchange dataHandle(globalIdSet,globalIndex_,indexSet,localGlobalMap_,codim_);
    \n+\n+
    449 }
    \n+
    \n+
    450
    \n+
    452 template <class Entity>
    \n+
    \n+
    453 Index index(const Entity& entity) const
    \n+
    454 {
    \n+
    455 if (codim_==0)
    \n+
    456 {
    \n+
    458 const GlobalIdSet& globalIdSet = gridview_.grid().globalIdSet();
    \n+
    459 const IdType id = globalIdSet.id(entity);
    \n+
    460 const Index gindex = globalIndex_.find(id)->second;
    \n+
    462 return gindex;
    \n+
    463 }
    \n+
    464 else
    \n+
    465 return localGlobalMap_.find(gridview_.indexSet().index(entity))->second;
    \n+
    466 }
    \n+
    \n+
    467
    \n+
    473 template <class Entity>
    \n+
    \n+
    474 Index subIndex(const Entity& entity, unsigned int i, unsigned int codim) const
    \n+
    475 {
    \n+
    476 if (codim_==0)
    \n+
    477 {
    \n+
    479 const GlobalIdSet& globalIdSet = gridview_.grid().globalIdSet();
    \n+
    480 const IdType id = globalIdSet.subId(entity,i,codim);
    \n+
    481 const Index gindex = globalIndex_.find(id)->second;
    \n+
    483 return gindex;
    \n+
    484 }
    \n+
    485 else
    \n+
    486 return localGlobalMap_.find(gridview_.indexSet().subIndex(entity,i,codim))->second;
    \n+
    487 }
    \n+
    \n+
    488
    \n+
    \n+
    494 unsigned int size(unsigned int codim) const
    \n+
    495 {
    \n+
    496 return (codim_==codim) ? nGlobalEntity_ : 0;
    \n+
    497 }
    \n+
    \n+
    498
    \n+
    499 protected:
    \n+\n+
    501
    \n+
    503 unsigned int codim_;
    \n+
    504
    \n+\n+
    507
    \n+\n+
    509
    \n+
    512 MapId2Index globalIndex_;
    \n+
    513 };
    \n+
    \n+
    514
    \n+
    515} // namespace Dune
    \n+
    516
    \n+
    517#endif /* DUNE_GRID_UTILITY_GLOBALINDEXSET_HH */
    \n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+\n+
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n+
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n+
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n+
    @ ForwardCommunication
    communicate as given in InterfaceType
    Definition gridenums.hh:171
    \n+
    @ All_All_Interface
    send all and receive all entities
    Definition gridenums.hh:91
    \n+
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n+
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n+
    const Grid & grid() const
    obtain a const reference to the underlying hierarchic grid
    Definition common/gridview.hh:180
    \n+
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n+
    int size(int codim) const
    obtain number of entities in a given codimension
    Definition common/gridview.hh:197
    \n+
    auto communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
    Communicate data on this view.
    Definition common/gridview.hh:299
    \n+
    const Communication & comm() const
    obtain communication object
    Definition common/gridview.hh:280
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n+
    CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
    Definition datahandleif.hh:78
    \n+
    void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
    unpack data from message buffer to user.
    Definition datahandleif.hh:207
    \n+
    bool contains(int dim, int codim) const
    returns true if data for given valid codim should be communicated
    Definition datahandleif.hh:131
    \n+
    size_t size(const EntityType &e) const
    how many objects of type DataType have to be sent for a given entity
    Definition datahandleif.hh:182
    \n+
    void gather(MessageBufferImp &buff, const EntityType &e) const
    pack data from user to message buffer
    Definition datahandleif.hh:193
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    Persistent storage of data on all entities of a grid.
    Definition persistentcontainerinterface.hh:55
    \n-
    ImplementationDefined Size
    Definition persistentcontainerinterface.hh:65
    \n-
    PersistentContainerInterface(Grid &grid, int codim, const Value &value=Value())
    constuctor
    \n-
    const Value & operator[](const Entity &entity) const
    access the data associated with an entity
    \n-
    T Value
    Definition persistentcontainerinterface.hh:63
    \n-
    Size size() const
    number of entries in the container
    \n-
    ImplementationDefined Iterator
    Definition persistentcontainerinterface.hh:67
    \n-
    PersistentContainerInterface(const This &other)
    copy constructor
    \n-
    ImplementationDefined ConstIterator
    Definition persistentcontainerinterface.hh:66
    \n-
    ConstIterator end() const
    returns an iterator pointing to the last element of the container
    \n-
    ConstIterator begin() const
    returns an iterator pointing to the first element of the container
    \n-
    Iterator begin()
    returns an iterator pointing to the first element of the container
    \n-
    Iterator end()
    returns an iterator pointing to the last element of the container
    \n-
    void shrinkToFit()
    remove unnecessary entries from container
    \n-
    int codimension() const
    return the codimension, the container attaches data to
    \n-
    G Grid
    Definition persistentcontainerinterface.hh:61
    \n-
    void swap(This &other)
    exchange the content of the container with another one
    \n-
    void resize(const Value &value=Value())
    reserve memory for all entities in the grid
    \n-
    void fill(const Value &value)
    set all accessible entries to a given value
    \n-
    const Value & operator()(const Entity &entity, int subEntity) const
    access the data associated with a subentity
    \n-
    const This & operator=(const This &other)
    assignment operator
    \n+
    PartitionType partitionType() const
    Partition type of this entity.
    Definition common/entity.hh:127
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    Calculate globally unique index over all processes in a Dune grid.
    Definition globalindexset.hh:63
    \n+
    Index subIndex(const Entity &entity, unsigned int i, unsigned int codim) const
    Return the global index of a subentity of a given entity.
    Definition globalindexset.hh:474
    \n+
    MapId2Index globalIndex_
    Stores global index of entities with entity's globally unique id as key.
    Definition globalindexset.hh:512
    \n+
    int Index
    The number type used for global indices
    Definition globalindexset.hh:66
    \n+
    int nGlobalEntity_
    Global number of entities, i.e. number of entities without rendundant entities on interprocessor boun...
    Definition globalindexset.hh:506
    \n+
    Index index(const Entity &entity) const
    Return the global index of a given entity.
    Definition globalindexset.hh:453
    \n+
    unsigned int codim_
    Codimension of the entities that we hold indices for.
    Definition globalindexset.hh:503
    \n+
    IndexMap localGlobalMap_
    Definition globalindexset.hh:508
    \n+
    unsigned int size(unsigned int codim) const
    Return the total number of entities over all processes that we have indices for.
    Definition globalindexset.hh:494
    \n+
    GlobalIndexSet(const GridView &gridview, int codim)
    Constructor for a given GridView.
    Definition globalindexset.hh:326
    \n+
    const GridView gridview_
    Definition globalindexset.hh:500
    \n+
    Helper class to provide access to subentity PartitionTypes with a run-time codimension.
    Definition globalindexset.hh:75
    \n+
    static PartitionType get(const Entity &entity, int codim, int i)
    Get PartitionType of the i-th subentity of codimension 'codim' of entity 'entity'.
    Definition globalindexset.hh:78
    \n+
    static PartitionType get(const Entity &entity, int codim, int i)
    Definition globalindexset.hh:90
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,165 +1,602 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-persistentcontainerinterface.hh\n+globalindexset.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH\n-6#define DUNE_PERSISTENTCONTAINERINTERFACE_HH\n-7\n-8#ifndef HEADERCHECK\n-9#error \"This header exists for documentation purposes only and should never be\n-included directly.\"\n-10#endif\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-53 template< class G, class T >\n-_\b5_\b4 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-55 {\n-56 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\b,_\b _\bT_\b _\b> _\bT_\bh_\bi_\bs;\n-57\n-58 struct ImplementationDefined;\n-59\n-60 public:\n-_\b6_\b1 typedef G _\bG_\br_\bi_\bd;\n-62\n-_\b6_\b3 typedef T _\bV_\ba_\bl_\bu_\be;\n-64\n-_\b6_\b5 typedef ImplementationDefined _\bS_\bi_\bz_\be;\n-_\b6_\b6 typedef ImplementationDefined _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b6_\b7 typedef ImplementationDefined _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-68\n-69 // construction\n-70\n-_\b7_\b9 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( _\bG_\br_\bi_\bd &grid, int codim, const _\bV_\ba_\bl_\bu_\be &value =\n-_\bV_\ba_\bl_\bu_\be() );\n-80\n-_\b8_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( const _\bT_\bh_\bi_\bs &other );\n-83\n-_\b8_\b5 const _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other );\n+5\n+35#ifndef DUNE_GRID_UTILITY_GLOBALINDEXSET_HH\n+36#define DUNE_GRID_UTILITY_GLOBALINDEXSET_HH\n+37\n+39#include \n+40#include \n+41#include \n+42#include \n+43#include \n+44#include \n+45#include \n+46\n+48#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+49#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n+50\n+52#if HAVE_MPI\n+53 #include \n+54#endif\n+55\n+56namespace _\bD_\bu_\bn_\be\n+57{\n+58\n+61 template\n+_\b6_\b2 class _\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+63 {\n+64 public:\n+_\b6_\b6 typedef int _\bI_\bn_\bd_\be_\bx;\n+67\n+73 template \n+_\b7_\b4 struct _\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+75 {\n+_\b7_\b8 static _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bg_\be_\bt(const _\bE_\bn_\bt_\bi_\bt_\by& entity, int codim, int i)\n+79 {\n+80 if (codim==Codim)\n+81 return entity.template subEntity(i)._\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be();\n+82 else\n+83 return _\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bE_\bn_\bt_\bi_\bt_\by_\b,_\bC_\bo_\bd_\bi_\bm_\b-_\b1_\b>_\b:_\b:_\bg_\be_\bt(entity, codim, i);\n+84 }\n+85 };\n 86\n-87 // element access\n-88\n-93 template< class Entity >\n-_\b9_\b4 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const;\n+87 template \n+_\b8_\b8 struct _\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br<_\bE_\bn_\bt_\bi_\bt_\by,0>\n+89 {\n+_\b9_\b0 static _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bg_\be_\bt(const _\bE_\bn_\bt_\bi_\bt_\by& entity, int codim, int i)\n+91 {\n+92 return entity.template subEntity<0>(i)._\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be();\n+93 }\n+94 };\n 95\n-100 template< class Entity >\n-_\b1_\b0_\b1 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity );\n-102\n-108 template< class Entity >\n-_\b1_\b0_\b9 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const;\n-110\n-116 template< class Entity >\n-_\b1_\b1_\b7 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity );\n-118\n-119 // capacity\n-120\n-_\b1_\b2_\b6 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const;\n-127\n-_\b1_\b4_\b1 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() );\n-142\n-_\b1_\b5_\b6 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt ();\n-157\n-158 // modifiers\n-159\n-_\b1_\b6_\b5 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value );\n-166\n-_\b1_\b7_\b1 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other );\n+96 private:\n+98 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n+99\n+100 typedef typename GridView::Grid::GlobalIdSet GlobalIdSet;\n+101 typedef typename GridView::Grid::GlobalIdSet::IdType IdType;\n+102 typedef typename GridView::Traits::template Codim<0>::Iterator Iterator;\n+103\n+104 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn Communication;\n+105\n+106 typedef std::map MapId2Index;\n+107 typedef std::map IndexMap;\n+108\n+109 /\n+*********************************************************************************************/\n+110 /* calculate unique partitioning for all entities of a given codim in a\n+given GridView, */\n+111 /* assuming they all have the same geometry, i.e. codim, type */\n+112 /\n+*********************************************************************************************/\n+113 class UniqueEntityPartition\n+114 {\n+115 private:\n+116 /* A DataHandle class to calculate the minimum of a std::vector which is\n+accompanied by an index set */\n+117 template // mapper type and vector type\n+118 class MinimumExchange\n+119 : public _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF,typename V::\n+value_type>\n+120 {\n+121 public:\n+123 typedef typename V::value_type DataType;\n+124\n+126 bool contains (int dim, unsigned int codim) const\n+127 {\n+128 return codim==indexSetCodim_;\n+129 }\n+130\n+132 bool fixedSize (int dim, int codim) const\n+133 {\n+134 return true ;\n+135 }\n+136\n+140 template\n+141 size_t _\bs_\bi_\bz_\be (EntityType& e) const\n+142 {\n+143 return 1 ;\n+144 }\n+145\n+147 template\n+148 void _\bg_\ba_\bt_\bh_\be_\br (MessageBuffer& buff, const EntityType& e) const\n+149 {\n+150 buff.write(v_[indexset_.index(e)]);\n+151 }\n+152\n+157 template\n+158 void _\bs_\bc_\ba_\bt_\bt_\be_\br (MessageBuffer& buff, const EntityType& e, size_t n)\n+159 {\n+160 DataType x;\n+161 buff.read(x);\n+162 if (x>=0) // other is -1 means, he does not want it\n+163 v_[indexset_.index(e)] = std::min(x,v_[indexset_.index(e)]);\n+164 }\n+165\n+167 MinimumExchange (const IS& indexset, V& v, unsigned int indexSetCodim)\n+168 : indexset_(indexset),\n+169 v_(v),\n+170 indexSetCodim_(indexSetCodim)\n+171 {}\n 172\n-173 // iterators\n-174\n-_\b1_\b8_\b0 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const;\n-_\b1_\b8_\b6 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn ();\n+173 private:\n+174 const IS& indexset_;\n+175 V& v_;\n+176 unsigned int indexSetCodim_;\n+177 };\n+178\n+179 public:\n+182 UniqueEntityPartition (const GridView& gridview, unsigned int codim)\n+183 : assignment_(gridview._\bs_\bi_\bz_\be(codim))\n+184 {\n+186 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt IndexSet;\n 187\n-_\b1_\b9_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const;\n-_\b1_\b9_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd ();\n-200\n-201 // information\n-202\n-_\b2_\b0_\b4 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const;\n-205 };\n-206\n-207} // namespace Dune\n-208\n-209#endif // #ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH\n+188 // assign own rank to entities that I might have\n+189 for (auto it = gridview.template begin<0>(); it!=gridview.template end<0>\n+(); ++it)\n+190 for (unsigned int i=0; isubEntities(codim); i++)\n+191 {\n+192 // Evil hack: I need to call subEntity, which needs the entity codimension\n+as a static parameter.\n+193 // However, we only have it as a run-time parameter.\n+194 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be subPartitionType = SubPartitionTypeProvider::Entity, _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn>::get(*it,codim,i);\n+195\n+196 assignment_[gridview.indexSet().subIndex(*it,i,codim)]\n+197 = ( subPartitionType==_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by or subPartitionType==_\bD_\bu_\bn_\be_\b:_\b:\n+_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by )\n+198 ? gridview.comm().rank() // set to own rank\n+199 : - 1; // it is a ghost entity, I will not possibly own it.\n+200 }\n+201\n+203 MinimumExchange > dh(gridview.indexSet\n+(),assignment_,codim);\n+204\n+205 gridview.communicate(dh,_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,_\bD_\bu_\bn_\be_\b:_\b:\n+_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn);\n+206 }\n+207\n+209 int owner(size_t i)\n+210 {\n+211 return assignment_[i];\n+212 }\n+213\n+215 size_t numOwners(int rank) const\n+216 {\n+217 return std::count(assignment_.begin(), assignment_.end(), rank);\n+218 }\n+219\n+220 private:\n+221 std::vector assignment_;\n+222 };\n+223\n+224 private:\n+225 /* A DataHandle class to communicate the global index from the\n+226 * owning to the non-owning entity; the class is based on the\n+MinimumExchange\n+227 * class in the parallelsolver.hh header file.\n+228 */\n+229 class IndexExchange\n+230 : public _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF\n+231 {\n+232 public:\n+234 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (int dim, unsigned int codim) const\n+235 {\n+236 return codim==indexSetCodim_;\n+237 }\n+238\n+240 bool fixedSize (int dim, int codim) const\n+241 {\n+242 return true;\n+243 }\n+244\n+249 template\n+250 size_t _\bs_\bi_\bz_\be (EntityType& e) const\n+251 {\n+252 return 1;\n+253 }\n+254\n+256 template\n+257 void _\bg_\ba_\bt_\bh_\be_\br (MessageBuffer& buff, const EntityType& e) const\n+258 {\n+259 IdType id=globalidset_.id(e);\n+260\n+261 if (indexSetCodim_==0)\n+262 buff.write(mapid2entity_[id]);\n+263 else\n+264 buff.write((*mapid2entity_.find(id)).second);\n+265 }\n+266\n+271 template\n+272 void _\bs_\bc_\ba_\bt_\bt_\be_\br (MessageBuffer& buff, const EntityType& entity, size_t n)\n+273 {\n+274 _\bI_\bn_\bd_\be_\bx x;\n+275 buff.read(x);\n+276\n+284 if(x >= 0) {\n+285 const IdType id = globalidset_.id(entity);\n+286\n+287 if (indexSetCodim_==0)\n+288 mapid2entity_[id] = x;\n+289 else\n+290 {\n+291 mapid2entity_.erase(id);\n+292 mapid2entity_.insert(std::make_pair(id,x));\n+293\n+294 const _\bI_\bn_\bd_\be_\bx lindex = indexSet_.index(entity);\n+295 localGlobalMap_[lindex] = x;\n+296 }\n+297 }\n+298 }\n+299\n+301 IndexExchange (const GlobalIdSet& globalidset, MapId2Index& mapid2entity,\n+302 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& localIndexSet, IndexMap& localGlobal,\n+303 unsigned int indexSetCodim)\n+304 : globalidset_(globalidset),\n+305 mapid2entity_(mapid2entity),\n+306 indexSet_(localIndexSet),\n+307 localGlobalMap_(localGlobal),\n+308 indexSetCodim_(indexSetCodim)\n+309 {}\n+310\n+311 private:\n+312 const GlobalIdSet& globalidset_;\n+313 MapId2Index& mapid2entity_;\n+314\n+315 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& indexSet_;\n+316 IndexMap& localGlobalMap_;\n+317 unsigned int indexSetCodim_;\n+318 };\n+319\n+320 public:\n+_\b3_\b2_\b6 _\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw& gridview, int codim)\n+327 : _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_(gridview),\n+328 _\bc_\bo_\bd_\bi_\bm_\b_(codim)\n+329 {\n+330 int rank = gridview._\bc_\bo_\bm_\bm().rank();\n+331 int _\bs_\bi_\bz_\be = gridview._\bc_\bo_\bm_\bm().size();\n+332\n+333 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& indexSet = gridview._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt();\n+334\n+335 std::unique_ptr uniqueEntityPartition;\n+336 if (_\bc_\bo_\bd_\bi_\bm_\b_!=0)\n+337 uniqueEntityPartition = std::make_unique\n+(gridview,_\bc_\bo_\bd_\bi_\bm_\b_);\n+338\n+339 int nLocalEntity = (_\bc_\bo_\bd_\bi_\bm_\b_==0)\n+340 ? std::distance(gridview.template begin<0, Dune::Interior_Partition>(),\n+gridview.template end<0, Dune::Interior_Partition>())\n+341 : uniqueEntityPartition->numOwners(rank);\n+342\n+343 // Compute the global, non-redundant number of entities, i.e. the number of\n+entities in the set\n+344 // without double, aka. redundant entities, on the interprocessor boundary\n+via global reduce. */\n+345 _\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_ = gridview._\bc_\bo_\bm_\bm().template sum(nLocalEntity);\n+346\n+347 /* communicate the number of locally owned entities to all other processes\n+so that the respective offset\n+348 * can be calculated on the respective processor; we use the Dune mpi\n+communication facility\n+349 * for this; first, we gather the number of locally owned entities on the\n+root process and, second, we\n+350 * broadcast the array to all processes where the respective offset can be\n+calculated. */\n+351\n+352 std::vector offset(_\bs_\bi_\bz_\be);\n+353 std::fill(offset.begin(), offset.end(), 0);\n+354\n+356 _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().template allgather(&nLocalEntity, 1, offset.data());\n+357\n+358 int myoffset = 0;\n+359 for (int i=1; i();\n+iter!=_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_.template end<0>(); ++iter)\n+388 {\n+389 const IdType id = globalIdSet.id(*iter);\n+392 if (iter->partitionType() == _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by)\n+393 {\n+394 const _\bI_\bn_\bd_\be_\bx gindex = myoffset + globalcontrib;\n+396 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_[id] = gindex;\n+397 globalcontrib++;\n+398 }\n+399\n+401 else\n+402 {\n+403 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_[id] = -1;\n+404 }\n+405 }\n+406 }\n+407 else // if (codim==0) else\n+408 {\n+409 std::vector firstTime(_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bs_\bi_\bz_\be(_\bc_\bo_\bd_\bi_\bm_\b_));\n+410 std::fill(firstTime.begin(), firstTime.end(), true);\n+411\n+412 for(Iterator iter = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_.template begin<0>();iter!=_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_.template\n+end<0>(); ++iter)\n+413 {\n+414 for (size_t i=0; isubEntities(_\bc_\bo_\bd_\bi_\bm_\b_); i++)\n+415 {\n+416 IdType id=globalIdSet.subId(*iter,i,_\bc_\bo_\bd_\bi_\bm_\b_);\n+417\n+418 _\bI_\bn_\bd_\be_\bx idx = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().subIndex(*iter,i,_\bc_\bo_\bd_\bi_\bm_\b_);\n+419\n+420 if (!firstTime[idx] )\n+421 continue;\n+422\n+423 firstTime[idx] = false;\n+424\n+425 if (uniqueEntityPartition->owner(idx) == rank)\n+426 {\n+427 const _\bI_\bn_\bd_\be_\bx gindex = myoffset + globalcontrib;\n+428 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.insert(std::make_pair(id,gindex));\n+430 const _\bI_\bn_\bd_\be_\bx lindex = idx;\n+431 _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_[lindex] = gindex;\n+432\n+433 globalcontrib++;\n+434 }\n+435 else\n+436 {\n+437 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.insert(std::make_pair(id,-1));\n+438 }\n+439 }\n+440\n+441 }\n+442 }\n+443\n+444 // 2nd stage of global index calculation: communicate global index for non-\n+owned entities\n+445\n+446 // Create the data handle and communicate.\n+447 IndexExchange dataHandle\n+(globalIdSet,_\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_,indexSet,_\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_,_\bc_\bo_\bd_\bi_\bm_\b_);\n+448 _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be(dataHandle, _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be, _\bD_\bu_\bn_\be_\b:_\b:\n+_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn);\n+449 }\n+450\n+452 template \n+_\b4_\b5_\b3 _\bI_\bn_\bd_\be_\bx _\bi_\bn_\bd_\be_\bx(const _\bE_\bn_\bt_\bi_\bt_\by& entity) const\n+454 {\n+455 if (_\bc_\bo_\bd_\bi_\bm_\b_==0)\n+456 {\n+458 const GlobalIdSet& globalIdSet = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bg_\br_\bi_\bd().globalIdSet();\n+459 const IdType id = globalIdSet.id(entity);\n+460 const _\bI_\bn_\bd_\be_\bx gindex = _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.find(id)->second;\n+462 return gindex;\n+463 }\n+464 else\n+465 return _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_.find(_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index(entity))->second;\n+466 }\n+467\n+473 template \n+_\b4_\b7_\b4 _\bI_\bn_\bd_\be_\bx _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(const _\bE_\bn_\bt_\bi_\bt_\by& entity, unsigned int i, unsigned int codim)\n+const\n+475 {\n+476 if (_\bc_\bo_\bd_\bi_\bm_\b_==0)\n+477 {\n+479 const GlobalIdSet& globalIdSet = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bg_\br_\bi_\bd().globalIdSet();\n+480 const IdType id = globalIdSet.subId(entity,i,codim);\n+481 const _\bI_\bn_\bd_\be_\bx gindex = _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.find(id)->second;\n+483 return gindex;\n+484 }\n+485 else\n+486 return _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_.find(_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().subIndex(entity,i,codim))-\n+>second;\n+487 }\n+488\n+_\b4_\b9_\b4 unsigned int _\bs_\bi_\bz_\be(unsigned int codim) const\n+495 {\n+496 return (_\bc_\bo_\bd_\bi_\bm_\b_==codim) ? _\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_ : 0;\n+497 }\n+498\n+499 protected:\n+_\b5_\b0_\b0 const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_;\n+501\n+_\b5_\b0_\b3 unsigned int _\bc_\bo_\bd_\bi_\bm_\b_;\n+504\n+_\b5_\b0_\b6 int _\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n+507\n+_\b5_\b0_\b8 IndexMap _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_;\n+509\n+_\b5_\b1_\b2 MapId2Index _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_;\n+513 };\n+514\n+515} // namespace Dune\n+516\n+517#endif /* DUNE_GRID_UTILITY_GLOBALINDEXSET_HH */\n+_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n+Describes the parallel communication interface class for MessageBuffers and\n+DataHandles.\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType\n+Attributes used in the generic overlap model.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ InteriorEntity\n+all interior entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ BorderEntity\n+on boundary between interior and overlap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n+@ ForwardCommunication\n+communicate as given in InterfaceType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+@ All_All_Interface\n+send all and receive all entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n+const IndexSet & indexSet() const\n+obtain the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd\n+Traits::Grid Grid\n+type of the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bg_\br_\bi_\bd\n+const Grid & grid() const\n+obtain a const reference to the underlying hierarchic grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Traits::IndexSet IndexSet\n+type of the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int codim) const\n+obtain number of entities in a given codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be\n+auto communicate(CommDataHandleIF< DataHandleImp, DataType > &data,\n+InterfaceType iftype, CommunicationDirection dir) const\n+Communicate data on this view.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:299\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bo_\bm_\bm\n+const Communication & comm() const\n+obtain communication object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:280\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF\n+CommDataHandleIF describes the features of a data handle for communication in\n+parallel runs using the...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bM_\bi_\bn_\bi_\bm_\bu_\bm_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b<_\b _\bI_\bS_\b,_\b _\bV_\b _\b>_\b,_\b _\bV_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\bs_\bc_\ba_\bt_\bt_\be_\br\n+void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)\n+unpack data from message buffer to user.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bI_\bn_\bd_\be_\bx_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b,_\b _\bI_\bn_\bd_\be_\bx_\b _\b>_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n+bool contains(int dim, int codim) const\n+returns true if data for given valid codim should be communicated\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bM_\bi_\bn_\bi_\bm_\bu_\bm_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b<_\b _\bI_\bS_\b,_\b _\bV_\b _\b>_\b,_\b _\bV_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+size_t size(const EntityType &e) const\n+how many objects of type DataType have to be sent for a given entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bM_\bi_\bn_\bi_\bm_\bu_\bm_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b<_\b _\bI_\bS_\b,_\b _\bV_\b _\b>_\b,_\b _\bV_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\bg_\ba_\bt_\bh_\be_\br\n+void gather(MessageBufferImp &buff, const EntityType &e) const\n+pack data from user to message buffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:193\n _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n Wrapper class for entities.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Persistent storage of data on all entities of a grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\bi_\bz_\be\n-ImplementationDefined Size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-PersistentContainerInterface(Grid &grid, int codim, const Value &value=Value())\n-constuctor\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const Value & operator[](const Entity &entity) const\n-access the data associated with an entity\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-T Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n-Size size() const\n-number of entries in the container\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-ImplementationDefined Iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-PersistentContainerInterface(const This &other)\n-copy constructor\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-ImplementationDefined ConstIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bn_\bd\n-ConstIterator end() const\n-returns an iterator pointing to the last element of the container\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-ConstIterator begin() const\n-returns an iterator pointing to the first element of the container\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin()\n-returns an iterator pointing to the first element of the container\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bn_\bd\n-Iterator end()\n-returns an iterator pointing to the last element of the container\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-remove unnecessary entries from container\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-int codimension() const\n-return the codimension, the container attaches data to\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(This &other)\n-exchange the content of the container with another one\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Value &value=Value())\n-reserve memory for all entities in the grid\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Value &value)\n-set all accessible entries to a given value\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Value & operator()(const Entity &entity, int subEntity) const\n-access the data associated with a subentity\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-const This & operator=(const This &other)\n-assignment operator\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+Partition type of this entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid view abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Calculate globally unique index over all processes in a Dune grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+Index subIndex(const Entity &entity, unsigned int i, unsigned int codim) const\n+Return the global index of a subentity of a given entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:474\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_\n+MapId2Index globalIndex_\n+Stores global index of entities with entity's globally unique id as key.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:512\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+The number type used for global indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_\n+int nGlobalEntity_\n+Global number of entities, i.e. number of entities without rendundant entities\n+on interprocessor boun...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:506\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+Index index(const Entity &entity) const\n+Return the global index of a given entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:453\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\b_\n+unsigned int codim_\n+Codimension of the entities that we hold indices for.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:503\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_\n+IndexMap localGlobalMap_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:508\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size(unsigned int codim) const\n+Return the total number of entities over all processes that we have indices\n+for.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:494\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+GlobalIndexSet(const GridView &gridview, int codim)\n+Constructor for a given GridView.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:326\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_\n+const GridView gridview_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:500\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+Helper class to provide access to subentity PartitionTypes with a run-time\n+codimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bg_\be_\bt\n+static PartitionType get(const Entity &entity, int codim, int i)\n+Get PartitionType of the i-th subentity of codimension 'codim' of entity\n+'entity'.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\b0_\b _\b>_\b:_\b:_\bg_\be_\bt\n+static PartitionType get(const Entity &entity, int codim, int i)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:90\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00992.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00992.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridtype.hh File Reference\n+dune-grid: persistentcontainervector.hh File Reference\n \n \n \n \n \n \n \n@@ -69,25 +69,37 @@\n \n
    \n \n
    \n \n
    \n-
    gridtype.hh File Reference
    \n+ \n+
    persistentcontainervector.hh File Reference
    \n
    \n
    \n-\n-

    This file can be included directly following config.h to test if a grid type was correctly selected. \n-More...

    \n-\n+
    #include <algorithm>
    \n+#include <cassert>
    \n+
    \n

    Go to the source code of this file.

    \n-

    Detailed Description

    \n-

    This file can be included directly following config.h to test if a grid type was correctly selected.

    \n-
    Author
    Andreas Dedner
    \n-
    \n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::PersistentContainerVector< G, IndexSet, Vector >
     vector-based implementation of the PersistentContainer More...
     
    \n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    \n+\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,18 +1,22 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-gridtype.hh File Reference\n-This file can be included directly following config.h to test if a grid type\n-was correctly selected. _\bM_\bo_\br_\be_\b._\b._\b.\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+persistentcontainervector.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-*\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-This file can be included directly following config.h to test if a grid type\n-was correctly selected.\n- Author\n- Andreas Dedner\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n+\u00a0 vector-based implementation of the _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00992_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00992_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridtype.hh Source File\n+dune-grid: persistentcontainervector.hh Source File\n \n \n \n \n \n \n \n@@ -74,42 +74,175 @@\n \n
    \n \n
    \n \n
    \n-
    gridtype.hh
    \n+
    persistentcontainervector.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRIDTYPE_HH
    \n-
    6#define DUNE_GRIDTYPE_HH
    \n+
    5#ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH
    \n+
    6#define DUNE_PERSISTENTCONTAINERVECTOR_HH
    \n
    7
    \n-
    17#ifndef HEADERCHECK
    \n-
    18
    \n-
    19// NOGRID is used to specify that no default was set during configure
    \n-
    20// If NOGRID and HAVE_GRIDTYPE are both not set then no grid was selected
    \n-
    21// and an error is produced
    \n-
    22#if defined NOGRID
    \n-
    23 #if ! HAVE_GRIDTYPE
    \n-
    24 #error "No grid type selected, use GRIDTYPE=..."
    \n-
    25 #endif
    \n-
    26#else
    \n-
    27 #if ! HAVE_GRIDTYPE
    \n-
    28 #error "No grid type selected, typo in GRIDTYPE=...?"
    \n-
    29 #endif
    \n-
    30#endif
    \n-
    31
    \n-
    32#endif // HEADERCHECK
    \n-
    33
    \n-
    34#endif // DUNE_GRIDTYPE_HH
    \n+
    8#include <algorithm>
    \n+
    9#include <cassert>
    \n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13
    \n+
    14 // PersistentContainerVector
    \n+
    15 // -------------------------
    \n+
    16
    \n+
    49 template< class G, class IndexSet, class Vector >
    \n+
    \n+\n+
    51 {
    \n+\n+
    53
    \n+
    54 public:
    \n+
    55 typedef G Grid;
    \n+
    56
    \n+
    57 typedef typename Vector::value_type Value;
    \n+
    58 typedef typename Vector::size_type Size;
    \n+
    59 typedef typename Vector::const_iterator ConstIterator;
    \n+
    60 typedef typename Vector::iterator Iterator;
    \n+
    61
    \n+
    62 typedef typename Vector::allocator_type Allocator;
    \n+
    63
    \n+
    \n+
    64 PersistentContainerVector ( const IndexSet &indexSet, int codim, const Value &value,
    \n+
    65 const Allocator &allocator = Allocator() )
    \n+
    66 : codim_( codim ),
    \n+\n+
    68 data_( indexSet.size( codim ), value, allocator )
    \n+
    69 {}
    \n+
    \n+
    70
    \n+
    71 template< class Entity >
    \n+
    \n+
    72 const Value &operator[] ( const Entity &entity ) const
    \n+
    73 {
    \n+
    74 assert( Entity::codimension == codimension() );
    \n+
    75 const Size index = indexSet().index( entity );
    \n+
    76 assert( index < data_.size() );
    \n+
    77 return data_[ index ];
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    80 template< class Entity >
    \n+
    \n+
    81 Value &operator[] ( const Entity &entity )
    \n+
    82 {
    \n+
    83 assert( Entity::codimension == codimension() );
    \n+
    84 const Size index = indexSet().index( entity );
    \n+
    85 assert( index < data_.size() );
    \n+
    86 return data_[ index ];
    \n+
    87 }
    \n+
    \n+
    88
    \n+
    89 template< class Entity >
    \n+
    \n+
    90 const Value &operator() ( const Entity &entity, int subEntity ) const
    \n+
    91 {
    \n+
    92 const Size index = indexSet().subIndex( entity, subEntity, codimension() );
    \n+
    93 assert( index < data_.size() );
    \n+
    94 return data_[ index ];
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    97 template< class Entity >
    \n+
    \n+
    98 Value &operator() ( const Entity &entity, int subEntity )
    \n+
    99 {
    \n+
    100 const Size index = indexSet().subIndex( entity, subEntity, codimension() );
    \n+
    101 assert( index < data_.size() );
    \n+
    102 return data_[ index ];
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    105 Size size () const { return data_.size(); }
    \n+
    106
    \n+
    \n+
    107 void resize ( const Value &value = Value() )
    \n+
    108 {
    \n+
    109 const Size indexSetSize = indexSet().size( codimension() );
    \n+
    110 data_.resize( indexSetSize, value );
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    113 void shrinkToFit () {}
    \n+
    114
    \n+
    115 void fill ( const Value &value ) { std::fill( begin(), end(), value ); }
    \n+
    116
    \n+
    \n+
    117 void swap ( This &other )
    \n+
    118 {
    \n+
    119 std::swap( codim_, other.codim_ );
    \n+
    120 std::swap( indexSet_, other.indexSet_ );
    \n+
    121 std::swap( data_, other.data_ );
    \n+
    122 }
    \n+
    \n+
    123
    \n+
    124 ConstIterator begin () const { return data_.begin(); }
    \n+
    125 Iterator begin () { return data_.begin(); }
    \n+
    126
    \n+
    127 ConstIterator end () const { return data_.end(); }
    \n+
    128 Iterator end () { return data_.end(); }
    \n+
    129
    \n+
    130 int codimension () const { return codim_; }
    \n+
    131
    \n+
    132 protected:
    \n+
    133 const IndexSet &indexSet () const { return *indexSet_; }
    \n+
    134
    \n+\n+\n+
    137 Vector data_;
    \n+
    138 };
    \n+
    \n+
    139
    \n+
    140} // namespace Dune
    \n+
    141
    \n+
    142#endif // #ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH
    \n+
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n+
    Include standard header files.
    Definition agrid.hh:60
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n+
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n+
    auto size(GeometryType type) const
    Return total number of entities of given geometry type in entity set .
    Definition indexidset.hh:223
    \n+
    IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:153
    \n+
    IndexType index(const typename Traits::template Codim< cc >::Entity &e) const
    Map entity to index. The result of calling this method with an entity that is not in the index set is...
    Definition indexidset.hh:113
    \n+
    vector-based implementation of the PersistentContainer
    Definition persistentcontainervector.hh:51
    \n+
    PersistentContainerVector(const IndexSet &indexSet, int codim, const Value &value, const Allocator &allocator=Allocator())
    Definition persistentcontainervector.hh:64
    \n+
    Iterator begin()
    Definition persistentcontainervector.hh:125
    \n+
    Vector::size_type Size
    Definition persistentcontainervector.hh:58
    \n+
    Vector::value_type Value
    Definition persistentcontainervector.hh:57
    \n+
    Vector::allocator_type Allocator
    Definition persistentcontainervector.hh:62
    \n+
    void fill(const Value &value)
    Definition persistentcontainervector.hh:115
    \n+
    G Grid
    Definition persistentcontainervector.hh:55
    \n+
    const Value & operator()(const Entity &entity, int subEntity) const
    Definition persistentcontainervector.hh:90
    \n+
    const IndexSet * indexSet_
    Definition persistentcontainervector.hh:136
    \n+
    Vector::iterator Iterator
    Definition persistentcontainervector.hh:60
    \n+
    ConstIterator begin() const
    Definition persistentcontainervector.hh:124
    \n+
    ConstIterator end() const
    Definition persistentcontainervector.hh:127
    \n+
    int codim_
    Definition persistentcontainervector.hh:135
    \n+
    void shrinkToFit()
    Definition persistentcontainervector.hh:113
    \n+
    Vector::const_iterator ConstIterator
    Definition persistentcontainervector.hh:59
    \n+
    Vector data_
    Definition persistentcontainervector.hh:137
    \n+
    Iterator end()
    Definition persistentcontainervector.hh:128
    \n+
    const IndexSet & indexSet() const
    Definition persistentcontainervector.hh:133
    \n+
    int codimension() const
    Definition persistentcontainervector.hh:130
    \n+
    Size size() const
    Definition persistentcontainervector.hh:105
    \n+
    void swap(This &other)
    Definition persistentcontainervector.hh:117
    \n+
    const Value & operator[](const Entity &entity) const
    Definition persistentcontainervector.hh:72
    \n+
    void resize(const Value &value=Value())
    Definition persistentcontainervector.hh:107
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,37 +1,227 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-gridtype.hh\n+persistentcontainervector.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRIDTYPE_HH\n-6#define DUNE_GRIDTYPE_HH\n+5#ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH\n+6#define DUNE_PERSISTENTCONTAINERVECTOR_HH\n 7\n-17#ifndef HEADERCHECK\n-18\n-19// NOGRID is used to specify that no default was set during configure\n-20// If NOGRID and HAVE_GRIDTYPE are both not set then no grid was selected\n-21// and an error is produced\n-22#if defined NOGRID\n-23 #if ! HAVE_GRIDTYPE\n-24 #error \"No grid type selected, use GRIDTYPE=...\"\n-25 #endif\n-26#else\n-27 #if ! HAVE_GRIDTYPE\n-28 #error \"No grid type selected, typo in GRIDTYPE=...?\"\n-29 #endif\n-30#endif\n-31\n-32#endif // HEADERCHECK\n-33\n-34#endif // DUNE_GRIDTYPE_HH\n+8#include \n+9#include \n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+13\n+14 // PersistentContainerVector\n+15 // -------------------------\n+16\n+49 template< class G, class IndexSet, class Vector >\n+_\b5_\b0 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+51 {\n+52 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b _\b> _\bT_\bh_\bi_\bs;\n+53\n+54 public:\n+_\b5_\b5 typedef G _\bG_\br_\bi_\bd;\n+56\n+_\b5_\b7 typedef typename Vector::value_type _\bV_\ba_\bl_\bu_\be;\n+_\b5_\b8 typedef typename Vector::size_type _\bS_\bi_\bz_\be;\n+_\b5_\b9 typedef typename Vector::const_iterator _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b6_\b0 typedef typename Vector::iterator _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+61\n+_\b6_\b2 typedef typename Vector::allocator_type _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br;\n+63\n+_\b6_\b4 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br ( const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt &_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt, int codim, const _\bV_\ba_\bl_\bu_\be\n+&value,\n+65 const _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br &allocator = _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br() )\n+66 : _\bc_\bo_\bd_\bi_\bm_\b_( codim ),\n+67 _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_( &_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt ),\n+68 _\bd_\ba_\bt_\ba_\b_( _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt._\bs_\bi_\bz_\be( codim ), value, allocator )\n+69 {}\n+70\n+71 template< class Entity >\n+_\b7_\b2 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+73 {\n+74 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+75 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bi_\bn_\bd_\be_\bx( entity );\n+76 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n+77 return _\bd_\ba_\bt_\ba_\b_[ index ];\n+78 }\n+79\n+80 template< class Entity >\n+_\b8_\b1 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+82 {\n+83 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+84 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bi_\bn_\bd_\be_\bx( entity );\n+85 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n+86 return _\bd_\ba_\bt_\ba_\b_[ index ];\n+87 }\n+88\n+89 template< class Entity >\n+_\b9_\b0 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const\n+91 {\n+92 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx( entity, subEntity, _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+93 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n+94 return _\bd_\ba_\bt_\ba_\b_[ index ];\n+95 }\n+96\n+97 template< class Entity >\n+_\b9_\b8 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity )\n+99 {\n+100 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx( entity, subEntity, _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+101 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n+102 return _\bd_\ba_\bt_\ba_\b_[ index ];\n+103 }\n+104\n+_\b1_\b0_\b5 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const { return _\bd_\ba_\bt_\ba_\b_.size(); }\n+106\n+_\b1_\b0_\b7 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() )\n+108 {\n+109 const _\bS_\bi_\bz_\be indexSetSize = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bs_\bi_\bz_\be( _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+110 _\bd_\ba_\bt_\ba_\b_.resize( indexSetSize, value );\n+111 }\n+112\n+_\b1_\b1_\b3 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt () {}\n+114\n+_\b1_\b1_\b5 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value ) { std::fill( _\bb_\be_\bg_\bi_\bn(), _\be_\bn_\bd(), value ); }\n+116\n+_\b1_\b1_\b7 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other )\n+118 {\n+119 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bc_\bo_\bd_\bi_\bm_\b_, other._\bc_\bo_\bd_\bi_\bm_\b_ );\n+120 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_, other._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_ );\n+121 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bd_\ba_\bt_\ba_\b_, other._\bd_\ba_\bt_\ba_\b_ );\n+122 }\n+123\n+_\b1_\b2_\b4 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const { return _\bd_\ba_\bt_\ba_\b_.begin(); }\n+_\b1_\b2_\b5 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () { return _\bd_\ba_\bt_\ba_\b_.begin(); }\n+126\n+_\b1_\b2_\b7 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const { return _\bd_\ba_\bt_\ba_\b_.end(); }\n+_\b1_\b2_\b8 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () { return _\bd_\ba_\bt_\ba_\b_.end(); }\n+129\n+_\b1_\b3_\b0 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const { return _\bc_\bo_\bd_\bi_\bm_\b_; }\n+131\n+132 protected:\n+_\b1_\b3_\b3 const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt &_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt () const { return *_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_; }\n+134\n+_\b1_\b3_\b5 int _\bc_\bo_\bd_\bi_\bm_\b_;\n+_\b1_\b3_\b6 const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt *_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_;\n+_\b1_\b3_\b7 Vector _\bd_\ba_\bt_\ba_\b_;\n+138 };\n+139\n+140} // namespace Dune\n+141\n+142#endif // #ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH\n+_\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n+> &b)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n+_\bD_\bu_\bn_\be\n+Include standard header files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int codimension\n+Know your own codimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Index Set Interface base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+auto size(GeometryType type) const\n+Return total number of entities of given geometry type in entity set .\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int\n+i, unsigned int codim) const\n+Map a subentity to an index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+IndexType index(const typename Traits::template Codim< cc >::Entity &e) const\n+Map entity to index. The result of calling this method with an entity that is\n+not in the index set is...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+vector-based implementation of the PersistentContainer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+PersistentContainerVector(const IndexSet &indexSet, int codim, const Value\n+&value, const Allocator &allocator=Allocator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bS_\bi_\bz_\be\n+Vector::size_type Size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+Vector::value_type Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br\n+Vector::allocator_type Allocator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Value &value)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Value & operator()(const Entity &entity, int subEntity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_\n+const IndexSet * indexSet_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Vector::iterator Iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+ConstIterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\be_\bn_\bd\n+ConstIterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\b_\n+int codim_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Vector::const_iterator ConstIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bd_\ba_\bt_\ba_\b_\n+Vector data_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\be_\bn_\bd\n+Iterator end()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n+const IndexSet & indexSet() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+int codimension() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n+Size size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const Value & operator[](const Entity &entity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Value &value=Value())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:107\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00995.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00995.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entitycommhelper.hh File Reference\n+dune-grid: persistentcontainerinterface.hh File Reference\n \n \n \n \n \n \n \n@@ -72,32 +72,24 @@\n
  • dune
  • grid
  • utility
  • \n \n \n
    \n \n-
    entitycommhelper.hh File Reference
    \n+
    persistentcontainerinterface.hh File Reference
    \n
    \n
    \n-\n+\n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::EntityCommHelper< InteriorBorder_InteriorBorder_Interface >
     
    struct  Dune::EntityCommHelper< InteriorBorder_All_Interface >
     
    struct  Dune::EntityCommHelper< Overlap_OverlapFront_Interface >
     
    struct  Dune::EntityCommHelper< Overlap_All_Interface >
     
    struct  Dune::EntityCommHelper< All_All_Interface >
    class  Dune::PersistentContainerInterface< G, T >
     Persistent storage of data on all entities of a grid. More...
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,27 +2,19 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-entitycommhelper.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+persistentcontainerinterface.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-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\b,_\b _\bT_\b _\b>\n+\u00a0 Persistent storage of data on all entities of a grid. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00995_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00995_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entitycommhelper.hh Source File\n+dune-grid: persistentcontainerinterface.hh Source File\n \n \n \n \n \n \n \n@@ -74,169 +74,124 @@\n \n
    \n \n
    \n \n
    \n-
    entitycommhelper.hh
    \n+
    persistentcontainerinterface.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ENTITYCOMMHELPER_HH
    \n-
    6#define DUNE_ENTITYCOMMHELPER_HH
    \n+
    5#ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH
    \n+
    6#define DUNE_PERSISTENTCONTAINERINTERFACE_HH
    \n
    7
    \n-\n-
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    12
    \n-
    13 template< InterfaceType iftype >
    \n-\n-
    15
    \n-
    16
    \n-
    17 template<>
    \n-
    \n-\n-
    19 {
    \n-
    \n-
    20 static bool send ( const PartitionType p )
    \n-
    21 {
    \n-
    22 //return (p == InteriorEntity) || (p == BorderEntity);
    \n-
    23 return (p == BorderEntity);
    \n-
    24 }
    \n-
    \n-
    25
    \n-
    \n-
    26 static bool receive ( const PartitionType p )
    \n-
    27 {
    \n-
    28 //return (p == InteriorEntity) || (p == BorderEntity);
    \n-
    29 return (p == BorderEntity);
    \n-
    30 }
    \n-
    \n-
    31 };
    \n-
    \n-
    32
    \n-
    33
    \n-
    34 template<>
    \n-
    \n-\n-
    36 {
    \n-
    \n-
    37 static bool send ( const PartitionType p )
    \n-
    38 {
    \n-
    39 return (p == InteriorEntity) || (p == BorderEntity);
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    42 static bool receive ( const PartitionType p )
    \n-
    43 {
    \n-
    44 //return true;
    \n-
    45 return (p != InteriorEntity);
    \n-
    46 }
    \n-
    \n-
    47 };
    \n-
    \n-
    48
    \n-
    49
    \n-
    50 template<>
    \n-
    \n-\n-
    52 {
    \n-
    \n-
    53 static bool send ( const PartitionType p )
    \n-
    54 {
    \n-
    55 //return (p == InteriorEntity) || (p == BorderEntity) || (p == OverlapEntity);
    \n-
    56 return (p != FrontEntity) && (p != GhostEntity);
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-
    59 static bool receive ( const PartitionType p )
    \n-
    60 {
    \n-
    61 //return (p == InteriorEntity) || (p == BorderEntity) || (p == OverlapEntity) || (p == FrontEntity);
    \n-
    62 return (p != GhostEntity);
    \n-
    63 }
    \n-
    \n-
    64 };
    \n-
    \n-
    65
    \n-
    66
    \n-
    67 template<>
    \n-
    \n-\n-
    69 {
    \n-
    \n-
    70 static bool send ( const PartitionType p )
    \n-
    71 {
    \n-
    72 //return (p == InteriorEntity) || (p == BorderEntity) || (p == OverlapEntity);
    \n-
    73 return (p != FrontEntity) && (p != GhostEntity);
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    \n-
    76 static bool receive ([[maybe_unused]] const PartitionType p)
    \n-
    77 {
    \n-
    78 return true;
    \n-
    79 }
    \n-
    \n-
    80 };
    \n-
    \n-
    81
    \n-
    82
    \n-
    83 template<>
    \n-
    \n-\n-
    85 {
    \n-
    \n-
    86 static bool send ([[maybe_unused]] const PartitionType p)
    \n-
    87 {
    \n-
    88 return true;
    \n-
    89 }
    \n-
    \n-
    90
    \n-
    \n-
    91 static bool receive ([[maybe_unused]] const PartitionType p)
    \n-
    92 {
    \n-
    93 return true;
    \n-
    94 }
    \n-
    \n-
    95 };
    \n-
    \n-
    96
    \n-
    97} // namespace Dune
    \n-
    98
    \n-
    99#endif // #ifndef DUNE_ENTITYCOMMHELPER_HH
    \n-\n-
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n-
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n-
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n-
    @ GhostEntity
    ghost entities
    Definition gridenums.hh:35
    \n-
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n-
    @ InteriorBorder_All_Interface
    send interior and border, receive all entities
    Definition gridenums.hh:88
    \n-
    @ All_All_Interface
    send all and receive all entities
    Definition gridenums.hh:91
    \n-
    @ Overlap_All_Interface
    send overlap, receive all entities
    Definition gridenums.hh:90
    \n-
    @ Overlap_OverlapFront_Interface
    send overlap, receive overlap and front entities
    Definition gridenums.hh:89
    \n-
    @ InteriorBorder_InteriorBorder_Interface
    send/receive interior and border entities
    Definition gridenums.hh:87
    \n+
    8#ifndef HEADERCHECK
    \n+
    9#error "This header exists for documentation purposes only and should never be included directly."
    \n+
    10#endif
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    53 template< class G, class T >
    \n+
    \n+\n+
    55 {
    \n+\n+
    57
    \n+
    58 struct ImplementationDefined;
    \n+
    59
    \n+
    60 public:
    \n+
    61 typedef G Grid;
    \n+
    62
    \n+
    63 typedef T Value;
    \n+
    64
    \n+
    65 typedef ImplementationDefined Size;
    \n+
    66 typedef ImplementationDefined ConstIterator;
    \n+
    67 typedef ImplementationDefined Iterator;
    \n+
    68
    \n+
    69 // construction
    \n+
    70
    \n+
    79 PersistentContainerInterface ( Grid &grid, int codim, const Value &value = Value() );
    \n+
    80
    \n+\n+
    83
    \n+
    85 const This &operator= ( const This &other );
    \n+
    86
    \n+
    87 // element access
    \n+
    88
    \n+
    93 template< class Entity >
    \n+
    94 const Value &operator[] ( const Entity &entity ) const;
    \n+
    95
    \n+
    100 template< class Entity >
    \n+
    101 Value &operator[] ( const Entity &entity );
    \n+
    102
    \n+
    108 template< class Entity >
    \n+
    109 const Value &operator() ( const Entity &entity, int subEntity ) const;
    \n+
    110
    \n+
    116 template< class Entity >
    \n+
    117 Value &operator() ( const Entity &entity, int subEntity );
    \n+
    118
    \n+
    119 // capacity
    \n+
    120
    \n+
    126 Size size () const;
    \n+
    127
    \n+
    141 void resize ( const Value &value = Value() );
    \n+
    142
    \n+
    156 void shrinkToFit ();
    \n+
    157
    \n+
    158 // modifiers
    \n+
    159
    \n+
    165 void fill ( const Value &value );
    \n+
    166
    \n+
    171 void swap ( This &other );
    \n+
    172
    \n+
    173 // iterators
    \n+
    174
    \n+\n+\n+
    187
    \n+\n+\n+
    200
    \n+
    201 // information
    \n+
    202
    \n+
    204 int codimension () const;
    \n+
    205 };
    \n+
    \n+
    206
    \n+
    207} // namespace Dune
    \n+
    208
    \n+
    209#endif // #ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition entitycommhelper.hh:14
    \n-
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:26
    \n-
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:20
    \n-
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:42
    \n-
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:37
    \n-
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:53
    \n-
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:59
    \n-
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:76
    \n-
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:70
    \n-
    static bool send(const PartitionType p)
    Definition entitycommhelper.hh:86
    \n-
    static bool receive(const PartitionType p)
    Definition entitycommhelper.hh:91
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    Persistent storage of data on all entities of a grid.
    Definition persistentcontainerinterface.hh:55
    \n+
    ImplementationDefined Size
    Definition persistentcontainerinterface.hh:65
    \n+
    PersistentContainerInterface(Grid &grid, int codim, const Value &value=Value())
    constuctor
    \n+
    const Value & operator[](const Entity &entity) const
    access the data associated with an entity
    \n+
    T Value
    Definition persistentcontainerinterface.hh:63
    \n+
    Size size() const
    number of entries in the container
    \n+
    ImplementationDefined Iterator
    Definition persistentcontainerinterface.hh:67
    \n+
    PersistentContainerInterface(const This &other)
    copy constructor
    \n+
    ImplementationDefined ConstIterator
    Definition persistentcontainerinterface.hh:66
    \n+
    ConstIterator end() const
    returns an iterator pointing to the last element of the container
    \n+
    ConstIterator begin() const
    returns an iterator pointing to the first element of the container
    \n+
    Iterator begin()
    returns an iterator pointing to the first element of the container
    \n+
    Iterator end()
    returns an iterator pointing to the last element of the container
    \n+
    void shrinkToFit()
    remove unnecessary entries from container
    \n+
    int codimension() const
    return the codimension, the container attaches data to
    \n+
    G Grid
    Definition persistentcontainerinterface.hh:61
    \n+
    void swap(This &other)
    exchange the content of the container with another one
    \n+
    void resize(const Value &value=Value())
    reserve memory for all entities in the grid
    \n+
    void fill(const Value &value)
    set all accessible entries to a given value
    \n+
    const Value & operator()(const Entity &entity, int subEntity) const
    access the data associated with a subentity
    \n+
    const This & operator=(const This &other)
    assignment operator
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,190 +1,165 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-entitycommhelper.hh\n+persistentcontainerinterface.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ENTITYCOMMHELPER_HH\n-6#define DUNE_ENTITYCOMMHELPER_HH\n+5#ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH\n+6#define DUNE_PERSISTENTCONTAINERINTERFACE_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-12\n-13 template< InterfaceType iftype >\n-_\b1_\b4 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br;\n-15\n-16\n-17 template<>\n-_\b1_\b8 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n-19 {\n-_\b2_\b0 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-21 {\n-22 //return (p == InteriorEntity) || (p == BorderEntity);\n-23 return (p == _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by);\n-24 }\n-25\n-_\b2_\b6 static bool _\br_\be_\bc_\be_\bi_\bv_\be ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-27 {\n-28 //return (p == InteriorEntity) || (p == BorderEntity);\n-29 return (p == _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by);\n-30 }\n-31 };\n-32\n-33\n-34 template<>\n-_\b3_\b5 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n-36 {\n-_\b3_\b7 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-38 {\n-39 return (p == _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) || (p == _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by);\n-40 }\n-41\n-_\b4_\b2 static bool _\br_\be_\bc_\be_\bi_\bv_\be ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-43 {\n-44 //return true;\n-45 return (p != _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by);\n-46 }\n-47 };\n-48\n-49\n-50 template<>\n-_\b5_\b1 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n-52 {\n-_\b5_\b3 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-54 {\n-55 //return (p == InteriorEntity) || (p == BorderEntity) || (p ==\n-OverlapEntity);\n-56 return (p != _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by) && (p != _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by);\n-57 }\n-58\n-_\b5_\b9 static bool _\br_\be_\bc_\be_\bi_\bv_\be ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-60 {\n-61 //return (p == InteriorEntity) || (p == BorderEntity) || (p ==\n-OverlapEntity) || (p == FrontEntity);\n-62 return (p != _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by);\n-63 }\n-64 };\n-65\n-66\n-67 template<>\n-_\b6_\b8 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n-69 {\n-_\b7_\b0 static bool _\bs_\be_\bn_\bd ( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p )\n-71 {\n-72 //return (p == InteriorEntity) || (p == BorderEntity) || (p ==\n-OverlapEntity);\n-73 return (p != _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by) && (p != _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by);\n-74 }\n-75\n-_\b7_\b6 static bool _\br_\be_\bc_\be_\bi_\bv_\be ([[maybe_unused]] const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p)\n-77 {\n-78 return true;\n-79 }\n-80 };\n-81\n-82\n-83 template<>\n-_\b8_\b4 struct _\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br< _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be >\n-85 {\n-_\b8_\b6 static bool _\bs_\be_\bn_\bd ([[maybe_unused]] const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p)\n-87 {\n-88 return true;\n-89 }\n-90\n-_\b9_\b1 static bool _\br_\be_\bc_\be_\bi_\bv_\be ([[maybe_unused]] const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be p)\n-92 {\n-93 return true;\n-94 }\n-95 };\n-96\n-97} // namespace Dune\n-98\n-99#endif // #ifndef DUNE_ENTITYCOMMHELPER_HH\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType\n-Attributes used in the generic overlap model.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-@ FrontEntity\n-on boundary between overlap and ghost\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ InteriorEntity\n-all interior entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-@ GhostEntity\n-ghost entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ BorderEntity\n-on boundary between interior and overlap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ InteriorBorder_All_Interface\n-send interior and border, receive all entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ All_All_Interface\n-send all and receive all entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ Overlap_All_Interface\n-send overlap, receive all entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ Overlap_OverlapFront_Interface\n-send overlap, receive overlap and front entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ InteriorBorder_InteriorBorder_Interface\n-send/receive interior and border entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:87\n+8#ifndef HEADERCHECK\n+9#error \"This header exists for documentation purposes only and should never be\n+included directly.\"\n+10#endif\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+53 template< class G, class T >\n+_\b5_\b4 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+55 {\n+56 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\b,_\b _\bT_\b _\b> _\bT_\bh_\bi_\bs;\n+57\n+58 struct ImplementationDefined;\n+59\n+60 public:\n+_\b6_\b1 typedef G _\bG_\br_\bi_\bd;\n+62\n+_\b6_\b3 typedef T _\bV_\ba_\bl_\bu_\be;\n+64\n+_\b6_\b5 typedef ImplementationDefined _\bS_\bi_\bz_\be;\n+_\b6_\b6 typedef ImplementationDefined _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b6_\b7 typedef ImplementationDefined _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+68\n+69 // construction\n+70\n+_\b7_\b9 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( _\bG_\br_\bi_\bd &grid, int codim, const _\bV_\ba_\bl_\bu_\be &value =\n+_\bV_\ba_\bl_\bu_\be() );\n+80\n+_\b8_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be ( const _\bT_\bh_\bi_\bs &other );\n+83\n+_\b8_\b5 const _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other );\n+86\n+87 // element access\n+88\n+93 template< class Entity >\n+_\b9_\b4 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const;\n+95\n+100 template< class Entity >\n+_\b1_\b0_\b1 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity );\n+102\n+108 template< class Entity >\n+_\b1_\b0_\b9 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const;\n+110\n+116 template< class Entity >\n+_\b1_\b1_\b7 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity );\n+118\n+119 // capacity\n+120\n+_\b1_\b2_\b6 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const;\n+127\n+_\b1_\b4_\b1 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() );\n+142\n+_\b1_\b5_\b6 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt ();\n+157\n+158 // modifiers\n+159\n+_\b1_\b6_\b5 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value );\n+166\n+_\b1_\b7_\b1 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other );\n+172\n+173 // iterators\n+174\n+_\b1_\b8_\b0 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const;\n+_\b1_\b8_\b6 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn ();\n+187\n+_\b1_\b9_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const;\n+_\b1_\b9_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd ();\n+200\n+201 // information\n+202\n+_\b2_\b0_\b4 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const;\n+205 };\n+206\n+207} // namespace Dune\n+208\n+209#endif // #ifndef DUNE_PERSISTENTCONTAINERINTERFACE_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:14\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n-static bool receive(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n-static bool send(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n-static bool receive(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n-static bool send(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n-static bool send(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n-static bool receive(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n-static bool receive(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n-static bool send(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\bs_\be_\bn_\bd\n-static bool send(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bC_\bo_\bm_\bm_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>_\b:_\b:_\br_\be_\bc_\be_\bi_\bv_\be\n-static bool receive(const PartitionType p)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitycommhelper.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Persistent storage of data on all entities of a grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\bi_\bz_\be\n+ImplementationDefined Size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+PersistentContainerInterface(Grid &grid, int codim, const Value &value=Value())\n+constuctor\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const Value & operator[](const Entity &entity) const\n+access the data associated with an entity\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+T Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n+Size size() const\n+number of entries in the container\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+ImplementationDefined Iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+PersistentContainerInterface(const This &other)\n+copy constructor\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+ImplementationDefined ConstIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bn_\bd\n+ConstIterator end() const\n+returns an iterator pointing to the last element of the container\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+ConstIterator begin() const\n+returns an iterator pointing to the first element of the container\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin()\n+returns an iterator pointing to the first element of the container\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bn_\bd\n+Iterator end()\n+returns an iterator pointing to the last element of the container\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+remove unnecessary entries from container\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+int codimension() const\n+return the codimension, the container attaches data to\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerinterface.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(This &other)\n+exchange the content of the container with another one\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Value &value=Value())\n+reserve memory for all entities in the grid\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Value &value)\n+set all accessible entries to a given value\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Value & operator()(const Entity &entity, int subEntity) const\n+access the data associated with a subentity\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+const This & operator=(const This &other)\n+assignment operator\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00998.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00998.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hierarchicsearch.hh File Reference\n+dune-grid: gridinfo-gmsh-main.hh File Reference\n \n \n \n \n \n \n \n@@ -69,49 +69,55 @@\n \n
    \n \n
    \n \n
    \n- \n-
    hierarchicsearch.hh File Reference
    \n+
    gridinfo-gmsh-main.hh File Reference
    \n
    \n
    \n \n-

    Utility class for hierarchically searching for an Entity containing a given point. \n+

    Generic main() function for printing information about a mesh read from a .msh-file. \n More...

    \n
    #include <cstddef>
    \n+#include <cstdlib>
    \n+#include <exception>
    \n+#include <iostream>
    \n+#include <memory>
    \n+#include <ostream>
    \n #include <sstream>
    \n+#include <stdexcept>
    \n #include <string>
    \n-#include <utility>
    \n+#include <vector>
    \n #include <dune/common/classname.hh>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/grid/common/grid.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/common/parallel/mpihelper.hh>
    \n+#include <dune/grid/io/file/gmshreader.hh>
    \n+#include <dune/grid/utility/gridinfo.hh>
    \n
    \n

    Go to the source code of this file.

    \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::HierarchicSearch< Grid, IS >
     Search an IndexSet for an Entity containing a given point. More...
     
    \n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Utility class for hierarchically searching for an Entity containing a given point.

    \n+

    Generic main() function for printing information about a mesh read from a .msh-file.

    \n+
    Author
    J\u00f6 Fahlke jorri.nosp@m.t@jo.nosp@m.rrit..nosp@m.de
    \n+
    Date
    2011
    \n+

    This header contains a generic main() function. To use it for your grid, write a .cc file like this:

    #ifdef HAVE_CONFIG_H
    \n+
    #include "config.h"
    \n+
    #endif
    \n+
    \n+
    #include <string>
    \n+
    \n+
    #include <dune/grid/mygrid.hh>
    \n+
    \n+
    const std::string programName = "dune-gridinfo-gmsh-mygrid-3d";
    \n+
    typedef Dune::MyGrid<3> Grid;
    \n+
    \n+\n+
    Generic main() function for printing information about a mesh read from a .msh-file.
    \n+

    Write an automake target for your program as usual. No special libraries are needed for you program, beyond what is needed for the grid in question.

    \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,34 +1,50 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-hierarchicsearch.hh File Reference\n-Utility class for hierarchically searching for an Entity containing a given\n-point. _\bM_\bo_\br_\be_\b._\b._\b.\n+gridinfo-gmsh-main.hh File Reference\n+Generic _\bm_\ba_\bi_\bn_\b(_\b) function for printing information about a mesh read from a .msh-\n+file. _\bM_\bo_\br_\be_\b._\b._\b.\n #include \n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n+#include \n #include \n-#include \n+#include \n #include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\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_\bS_\be_\ba_\br_\bc_\bh_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bS_\b _\b>\n-\u00a0 Search an _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt for an _\bE_\bn_\bt_\bi_\bt_\by containing a given point. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0 Include standard header files.\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-Utility class for hierarchically searching for an Entity containing a given\n-point.\n+Generic _\bm_\ba_\bi_\bn_\b(_\b) function for printing information about a mesh read from a .msh-\n+file.\n+ Author\n+ J\u00c3\u00b6 Fahlke _\bj_\bo_\br_\br_\bi_\b._\bn_\bo_\bs_\bp_\b@_\bm_\b._\bt_\b@_\bj_\bo_\b._\bn_\bo_\bs_\bp_\b@_\bm_\b._\br_\br_\bi_\bt_\b._\b._\bn_\bo_\bs_\bp_\b@_\bm_\b._\bd_\be\n+ Date\n+ 2011\n+This header contains a generic _\bm_\ba_\bi_\bn_\b(_\b) function. To use it for your grid, write\n+a .cc file like this:\n+#ifdef HAVE_CONFIG_H\n+#include \"config.h\"\n+#endif\n+#include \n+#include \n+const std::string programName = \"dune-gridinfo-gmsh-mygrid-3d\";\n+typedef Dune::MyGrid<3> Grid;\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b-_\bg_\bm_\bs_\bh_\b-_\bm_\ba_\bi_\bn_\b._\bh_\bh>\n+_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b-_\bg_\bm_\bs_\bh_\b-_\bm_\ba_\bi_\bn_\b._\bh_\bh\n+Generic main() function for printing information about a mesh read from a .msh-\n+file.\n+Write an automake target for your program as usual. No special libraries are\n+needed for you program, beyond what is needed for the grid in question.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00998_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00998_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hierarchicsearch.hh Source File\n+dune-grid: gridinfo-gmsh-main.hh Source File\n \n \n \n \n \n \n \n@@ -74,184 +74,223 @@\n \n
    \n \n
    \n
    \n
    \n-
    hierarchicsearch.hh
    \n+
    gridinfo-gmsh-main.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_GRID_HIERARCHICSEARCH_HH
    \n-
    7#define DUNE_GRID_HIERARCHICSEARCH_HH
    \n+
    6#ifndef DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH
    \n+
    7#define DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH
    \n
    8
    \n-
    15#include <cstddef>
    \n-
    16#include <sstream>
    \n+
    9#include <cstddef>
    \n+
    10#include <cstdlib>
    \n+
    11#include <exception>
    \n+
    12#include <iostream>
    \n+
    13#include <memory>
    \n+
    14#include <ostream>
    \n+
    15#include <sstream>
    \n+
    16#include <stdexcept>
    \n
    17#include <string>
    \n-
    18#include <utility>
    \n+
    18#include <vector>
    \n
    19
    \n
    20#include <dune/common/classname.hh>
    \n
    21#include <dune/common/exceptions.hh>
    \n-
    22#include <dune/common/fvector.hh>
    \n+
    22#include <dune/common/parallel/mpihelper.hh>
    \n
    23
    \n-\n-\n+\n+\n
    26
    \n-
    27namespace Dune
    \n-
    28{
    \n-
    29
    \n-
    33 template<class Grid, class IS>
    \n-
    \n-\n-
    35 {
    \n-
    37 constexpr static int dim = Grid::dimension;
    \n-
    38
    \n-
    40 constexpr static int dimw = Grid::dimensionworld;
    \n-
    41
    \n-
    43 typedef typename Grid::ctype ct;
    \n-
    44
    \n-
    46 typedef typename Grid::template Codim<0>::Entity Entity;
    \n-
    47
    \n-
    49 typedef typename Grid::HierarchicIterator HierarchicIterator;
    \n-
    50
    \n-
    51 static std::string formatEntityInformation ( const Entity &e ) {
    \n-
    52 const typename Entity::Geometry &geo = e.geometry();
    \n-
    53 std::ostringstream info;
    \n-
    54 info << "level=" << e.level() << " "
    \n-
    55 << "partition=" << e.partitionType() << " "
    \n-
    56 << "center=(" << geo.center() << ") "
    \n-
    57 << "corners=[(" << geo.corner(0) << ")";
    \n-
    58 for(int i = 1; i < geo.corners(); ++i)
    \n-
    59 info << " (" << e.geometry().corner(i) << ")";
    \n-
    60 info << "]";
    \n-
    61 return info.str();
    \n-
    62 }
    \n-
    63
    \n-
    74 Entity hFindEntity ( const Entity &entity,
    \n-
    75 const FieldVector<ct,dimw>& global) const
    \n-
    76 {
    \n-
    77 // type of element geometry
    \n-
    78 typedef typename Entity::Geometry Geometry;
    \n-
    79 // type of local coordinate
    \n-
    80 typedef typename Geometry::LocalCoordinate LocalCoordinate;
    \n-
    81
    \n-
    82 const int childLevel = entity.level()+1 ;
    \n-
    83 // loop over all child Entities
    \n-
    84 const HierarchicIterator end = entity.hend( childLevel );
    \n-
    85 for( HierarchicIterator it = entity.hbegin( childLevel ); it != end; ++it )
    \n-
    86 {
    \n-
    87 Entity child = *it;
    \n-
    88 Geometry geo = child.geometry();
    \n-
    89
    \n-
    90 LocalCoordinate local = geo.local(global);
    \n-
    91 if (referenceElement( geo ).checkInside(local))
    \n-
    92 {
    \n-
    93 // return if we found the leaf, else search through the child entites
    \n-
    94 if( indexSet_.contains( child ) )
    \n-
    95 return child;
    \n-
    96 else
    \n-
    97 return hFindEntity( child, global );
    \n-
    98 }
    \n-
    99 }
    \n-
    100 std::ostringstream children;
    \n-
    101 HierarchicIterator it = entity.hbegin( childLevel );
    \n-
    102 if(it != end) {
    \n-
    103 children << "{" << formatEntityInformation(*it) << "}";
    \n-
    104 for( ++it; it != end; ++it )
    \n-
    105 children << " {" << formatEntityInformation(*it) << "}";
    \n-
    106 }
    \n-
    107 DUNE_THROW(Exception, "{" << className(*this) << "} Unexpected "
    \n-
    108 "internal Error: none of the children of the entity "
    \n-
    109 "{" << formatEntityInformation(entity) << "} contains "
    \n-
    110 "coordinate (" << global << "). Children are: "
    \n-
    111 "[" << children.str() << "].");
    \n-
    112 }
    \n+
    54#ifdef HEADERCHECK
    \n+
    55// define so headercheck will run
    \n+
    56const std::string programName = "headercheck";
    \n+
    57#endif // HEADERCHECK
    \n+
    58
    \n+
    59#ifndef DOXYGEN
    \n+
    60namespace {
    \n+
    61 // anonymous namespace so we don't freakishly conflict with another usage()
    \n+
    62 // function that may be linked in from another compilation unit.
    \n+
    63 void usage(std::ostream &stream) {
    \n+
    64 stream << "USAGE:\\n"
    \n+
    65 << " " << programName << " [-R REFINES] GRIDFILE\\n"
    \n+
    66 << "\\n"
    \n+
    67 << "PARAMETERS:\\n"
    \n+
    68 << " -R REFINES How many global refines to do after reading\\n"
    \n+
    69 << " (default: 0)\\n"
    \n+
    70 << " GRIDFILE Name of the .msh file to read the grid from.\\n"
    \n+
    71 << std::flush;
    \n+
    72 }
    \n+
    73
    \n+
    74 bool prefix_match(const std::string &prefix, const std::string &str)
    \n+
    75 {
    \n+
    76 return str.compare(0,prefix.size(), prefix) == 0;
    \n+
    77 }
    \n+
    78
    \n+
    79 void error_argument_required(const std::string &opt) {
    \n+
    80 std::cerr << "Error: option " << opt << " requires argument\\n";
    \n+
    81 usage(std::cerr);
    \n+
    82 std::exit(1);
    \n+
    83 }
    \n+
    84
    \n+
    85 void error_unknown_option(const std::string &opt) {
    \n+
    86 std::cerr << "Error: unknown option: " << opt << "\\n";
    \n+
    87 usage(std::cerr);
    \n+
    88 std::exit(1);
    \n+
    89 }
    \n+
    90
    \n+
    91 void error_parsing_optarg(const std::string &opt, const std::string &error) {
    \n+
    92 std::cerr << "Error: option " << opt << ": " << error << "\\n";
    \n+
    93 usage(std::cerr);
    \n+
    94 std::exit(1);
    \n+
    95 }
    \n+
    96
    \n+
    97 template<class T>
    \n+
    98 void parse(const std::string &arg, T &val) {
    \n+
    99 std::istringstream s(arg);
    \n+
    100 s >> val;
    \n+
    101 bool good = !s.fail();
    \n+
    102 if(good) {
    \n+
    103 char dummy;
    \n+
    104 s >> dummy;
    \n+
    105 good = s.fail() && s.eof();
    \n+
    106 }
    \n+
    107 if(!good) {
    \n+
    108 std::ostringstream s;
    \n+
    109 s << "Can't parse \\"" << arg << "\\" as a " << Dune::className(val);
    \n+
    110 throw std::runtime_error(s.str());
    \n+
    111 }
    \n+
    112 }
    \n
    113
    \n-
    114 public:
    \n-
    118 HierarchicSearch(const Grid & g, const IS & is) : grid_(g), indexSet_(is) {}
    \n-
    119
    \n-
    \n-
    127 Entity findEntity(const FieldVector<ct,dimw>& global) const
    \n-
    128 { return findEntity<All_Partition>(global); }
    \n-
    \n-
    129
    \n-
    137 template<PartitionIteratorType partition>
    \n-
    \n-
    138 Entity findEntity(const FieldVector<ct,dimw>& global) const
    \n-
    139 {
    \n-
    140 typedef typename Grid::LevelGridView LevelGV;
    \n-
    141 const LevelGV &gv = grid_.levelGridView(0);
    \n-
    142
    \n-
    144 typedef typename LevelGV::template Codim<0>::template Partition<partition>::Iterator LevelIterator;
    \n-
    145
    \n-
    146 // type of element geometry
    \n-
    147 typedef typename Entity::Geometry Geometry;
    \n-
    148 // type of local coordinate
    \n-
    149 typedef typename Geometry::LocalCoordinate LocalCoordinate;
    \n-
    150
    \n-
    151 // loop over macro level
    \n-
    152 const LevelIterator end = gv.template end<0, partition>();
    \n-
    153 for (LevelIterator it = gv.template begin<0, partition>(); it != end; ++it)
    \n-
    154 {
    \n-
    155 Entity entity = *it;
    \n-
    156 Geometry geo = entity.geometry();
    \n-
    157
    \n-
    158 LocalCoordinate local = geo.local( global );
    \n-
    159 if( !referenceElement( geo ).checkInside( local ) )
    \n-
    160 continue;
    \n-
    161
    \n-
    162 if( (int(dim) != int(dimw)) && ((geo.global( local ) - global).two_norm() > 1e-8) )
    \n-
    163 continue;
    \n-
    164
    \n-
    165 // return if we found the leaf, else search through the child entites
    \n-
    166 if( indexSet_.contains( entity ) )
    \n-
    167 return entity;
    \n-
    168 else
    \n-
    169 return hFindEntity( entity, global );
    \n-
    170 }
    \n-
    171 DUNE_THROW( GridError, "Coordinate " << global << " is outside the grid." );
    \n-
    172 }
    \n-
    \n+
    114 std::size_t refines = 0;
    \n+
    115 std::string gridFileName = "";
    \n+
    116
    \n+
    117 void parseOptions(int argc, char **argv) {
    \n+
    118 std::vector<std::string> params;
    \n+
    119 for(++argv; *argv; ++argv) {
    \n+
    120 std::string arg = *argv;
    \n+
    121 if(prefix_match("-", arg)) {
    \n+
    122 std::string opt = arg;
    \n+
    123 if(opt == "--") {
    \n+
    124 for(++argv; *argv; ++argv)
    \n+
    125 params.push_back(*argv);
    \n+
    126 break;
    \n+
    127 }
    \n+
    128 else if(prefix_match("-h", opt) || prefix_match("-?", opt) ||
    \n+
    129 opt == "--help")
    \n+
    130 {
    \n+
    131 usage(std::cout);
    \n+
    132 std::exit(0);
    \n+
    133 }
    \n+
    134 else if(opt == "-R" || opt == "--global-refines") {
    \n+
    135 ++argv;
    \n+
    136 if(!*argv) error_argument_required(opt);
    \n+
    137 try { parse(*argv, refines); }
    \n+
    138 catch(const std::runtime_error &e)
    \n+
    139 { error_parsing_optarg(opt, e.what()); }
    \n+
    140 }
    \n+
    141 else if(prefix_match("-R", opt)) {
    \n+
    142 try { parse(*argv+std::strlen("-R"), refines); }
    \n+
    143 catch(const std::runtime_error &e)
    \n+
    144 { error_parsing_optarg(opt, e.what()); }
    \n+
    145 }
    \n+
    146 else if(prefix_match("--global-refines=", opt)) {
    \n+
    147 try { parse(*argv+std::strlen("--global-refines="), refines); }
    \n+
    148 catch(const std::runtime_error &e)
    \n+
    149 { error_parsing_optarg(opt, e.what()); }
    \n+
    150 }
    \n+
    151 else
    \n+
    152 error_unknown_option(opt);
    \n+
    153 }
    \n+
    154 else
    \n+
    155 params.push_back(arg);
    \n+
    156 }
    \n+
    157 // check command line arguments
    \n+
    158 if(params.size() < 1) {
    \n+
    159 std::cerr << "Need name of a .msh file to read.\\n"
    \n+
    160 << std::endl;
    \n+
    161 usage(std::cerr);
    \n+
    162 std::exit(1);
    \n+
    163 }
    \n+
    164 if(params.size() > 1) {
    \n+
    165 std::cerr << "Too many arguments.\\n"
    \n+
    166 << std::endl;
    \n+
    167 usage(std::cerr);
    \n+
    168 std::exit(1);
    \n+
    169 }
    \n+
    170 gridFileName = params[0];
    \n+
    171 }
    \n+
    172}
    \n
    173
    \n-
    174 private:
    \n-
    175 const Grid& grid_;
    \n-
    176 const IS& indexSet_;
    \n-
    177 };
    \n-
    \n+
    174#ifndef HEADERCHECK
    \n+
    175int main(int argc, char **argv) {
    \n+
    176 try {
    \n+
    177 const Dune::MPIHelper &mpiHelper = Dune::MPIHelper::instance(argc, argv);
    \n
    178
    \n-
    179} // end namespace Dune
    \n-
    180
    \n-
    181#endif // DUNE_GRID_HIERARCHICSEARCH_HH
    \n-\n-
    Include standard header files.
    Definition agrid.hh:60
    \n-
    auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo) -> decltype(referenceElement(geo, geo.impl()))
    Definition common/geometry.hh:558
    \n-
    GridImp::template Codim< cd >::Geometry Geometry
    The corresponding geometry type.
    Definition common/entity.hh:100
    \n-
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    Wrapper class for geometries.
    Definition common/geometry.hh:71
    \n-
    GlobalCoordinate global(const LocalCoordinate &local) const
    Evaluate the map .
    Definition common/geometry.hh:228
    \n-
    FieldVector< ctype, mydim > LocalCoordinate
    type of local coordinates
    Definition common/geometry.hh:103
    \n-
    LocalCoordinate local(const GlobalCoordinate &global) const
    Evaluate the inverse map .
    Definition common/geometry.hh:237
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n-
    GridFamily::Traits::HierarchicIterator HierarchicIterator
    A type that is a model of Dune::HierarchicIterator A type of iterator that allows to examine,...
    Definition common/grid.hh:482
    \n-
    GridFamily::Traits::LevelGridView LevelGridView
    type of view for level grid
    Definition common/grid.hh:402
    \n-
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n-
    LevelGridView levelGridView(int level) const
    View for a grid level for All_Partition.
    Definition common/grid.hh:598
    \n-
    ct ctype
    Define type used for coordinates in grid module.
    Definition common/grid.hh:532
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-
    Search an IndexSet for an Entity containing a given point.
    Definition hierarchicsearch.hh:35
    \n-
    Entity findEntity(const FieldVector< ct, dimw > &global) const
    Search the IndexSet of this HierarchicSearch for an Entity containing point global.
    Definition hierarchicsearch.hh:127
    \n-
    Entity findEntity(const FieldVector< ct, dimw > &global) const
    Search the IndexSet of this HierarchicSearch for an Entity containing point global.
    Definition hierarchicsearch.hh:138
    \n-
    HierarchicSearch(const Grid &g, const IS &is)
    Construct a HierarchicSearch object from a Grid and an IndexSet.
    Definition hierarchicsearch.hh:118
    \n-
    Different resources needed by all grid implementations.
    \n+
    179 // check that we are not run through mpirun
    \n+
    180 if(mpiHelper.size() > 1) {
    \n+
    181 if(mpiHelper.rank() == 0)
    \n+
    182 std::cerr << programName << ": Sorry, this program works only in "
    \n+
    183 << "serial." << std::endl;
    \n+
    184 return 1;
    \n+
    185 }
    \n+
    186
    \n+
    187 parseOptions(argc, argv);
    \n+
    188
    \n+
    189 // read grid
    \n+
    190 typedef Dune::GmshReader<Grid> Reader;
    \n+
    191 std::shared_ptr<Grid> gridp(Reader::read(gridFileName));
    \n+
    192 gridp->globalRefine(refines);
    \n+
    193
    \n+
    194 // collect information
    \n+\n+
    196 Dune::fillGridViewInfoSerial(gridp->leafGridView(), gridViewInfo);
    \n+
    197
    \n+
    198 // print it
    \n+
    199 std::cout << gridViewInfo << std::flush;
    \n+
    200 }
    \n+
    201 catch(const std::exception &e) {
    \n+
    202 std::cerr << "Caught exception of type " << Dune::className(e)
    \n+
    203 << std::endl
    \n+
    204 << "e.what(): " << e.what() << std::endl;
    \n+
    205 throw;
    \n+
    206 }
    \n+
    207 catch(const Dune::Exception &e) {
    \n+
    208 std::cerr << "Caught exception of type " << Dune::className(e)
    \n+
    209 << std::endl
    \n+
    210 << "Exception message: " << e << std::endl;
    \n+
    211 throw;
    \n+
    212 }
    \n+
    213 catch(const std::string &s) {
    \n+
    214 std::cerr << "Caught exception of type " << Dune::className(s)
    \n+
    215 << std::endl
    \n+
    216 << "Exception message: " << s << std::endl;
    \n+
    217 throw;
    \n+
    218 }
    \n+
    219 catch(...) {
    \n+
    220 std::cerr << "Caught exception of unknown type" << std::endl;
    \n+
    221 throw;
    \n+
    222 }
    \n+
    223}
    \n+
    224#endif // !HEADERCHECK
    \n+
    225#endif // !DOXYGEN
    \n+
    226
    \n+
    227#endif // DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH
    \n+
    int main(int argc, char **argv)
    Definition recipe-integration.cc:70
    \n+\n+
    void fillGridViewInfoSerial(const GV &gv, GridViewInfo< typename GV::ctype > &gridViewInfo)
    fill a GridViewInfo structure from a serial grid
    Definition utility/gridinfo.hh:214
    \n+
    Read Gmsh mesh file.
    Definition gmshreader.hh:807
    \n+
    structure to hold information about a certain GridView.
    Definition utility/gridinfo.hh:100
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,235 +1,229 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-hierarchicsearch.hh\n+gridinfo-gmsh-main.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_GRID_HIERARCHICSEARCH_HH\n-7#define DUNE_GRID_HIERARCHICSEARCH_HH\n+6#ifndef DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH\n+7#define DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH\n 8\n-15#include \n-16#include \n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14#include \n+15#include \n+16#include \n 17#include \n-18#include \n+18#include \n 19\n 20#include \n 21#include \n-22#include \n+22#include \n 23\n-24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n-25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n 26\n-27namespace _\bD_\bu_\bn_\be\n-28{\n-29\n-33 template\n-_\b3_\b4 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh\n-35 {\n-37 constexpr static int dim = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-38\n-40 constexpr static int dimw = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n-41\n-43 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be ct;\n-44\n-46 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<0>::Entity Entity;\n-47\n-49 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br HierarchicIterator;\n-50\n-51 static std::string formatEntityInformation ( const Entity &e ) {\n-52 const typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by &geo = e.geometry();\n-53 std::ostringstream info;\n-54 info << \"level=\" << e.level() << \" \"\n-55 << \"partition=\" << e.partitionType() << \" \"\n-56 << \"center=(\" << geo.center() << \") \"\n-57 << \"corners=[(\" << geo.corner(0) << \")\";\n-58 for(int i = 1; i < geo.corners(); ++i)\n-59 info << \" (\" << e.geometry().corner(i) << \")\";\n-60 info << \"]\";\n-61 return info.str();\n-62 }\n-63\n-74 Entity hFindEntity ( const Entity &entity,\n-75 const FieldVector& global) const\n-76 {\n-77 // type of element geometry\n-78 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-79 // type of local coordinate\n-80 typedef typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be LocalCoordinate;\n-81\n-82 const int childLevel = entity.level()+1 ;\n-83 // loop over all child Entities\n-84 const HierarchicIterator end = entity.hend( childLevel );\n-85 for( HierarchicIterator it = entity.hbegin( childLevel ); it != end; ++it )\n-86 {\n-87 Entity child = *it;\n-88 _\bG_\be_\bo_\bm_\be_\bt_\br_\by geo = child.geometry();\n-89\n-90 LocalCoordinate local = geo._\bl_\bo_\bc_\ba_\bl(global);\n-91 if (_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt( geo ).checkInside(local))\n-92 {\n-93 // return if we found the leaf, else search through the child entites\n-94 if( indexSet_.contains( child ) )\n-95 return child;\n-96 else\n-97 return hFindEntity( child, global );\n-98 }\n-99 }\n-100 std::ostringstream children;\n-101 HierarchicIterator it = entity.hbegin( childLevel );\n-102 if(it != end) {\n-103 children << \"{\" << formatEntityInformation(*it) << \"}\";\n-104 for( ++it; it != end; ++it )\n-105 children << \" {\" << formatEntityInformation(*it) << \"}\";\n+54#ifdef HEADERCHECK\n+55// define so headercheck will run\n+56const std::string programName = \"headercheck\";\n+57#endif // HEADERCHECK\n+58\n+59#ifndef DOXYGEN\n+60namespace {\n+61 // anonymous namespace so we don't freakishly conflict with another usage()\n+62 // function that may be linked in from another compilation unit.\n+63 void usage(std::ostream &stream) {\n+64 stream << \"USAGE:\\n\"\n+65 << \" \" << programName << \" [-R REFINES] GRIDFILE\\n\"\n+66 << \"\\n\"\n+67 << \"PARAMETERS:\\n\"\n+68 << \" -R REFINES How many global refines to do after reading\\n\"\n+69 << \" (default: 0)\\n\"\n+70 << \" GRIDFILE Name of the .msh file to read the grid from.\\n\"\n+71 << std::flush;\n+72 }\n+73\n+74 bool prefix_match(const std::string &prefix, const std::string &str)\n+75 {\n+76 return str.compare(0,prefix.size(), prefix) == 0;\n+77 }\n+78\n+79 void error_argument_required(const std::string &opt) {\n+80 std::cerr << \"Error: option \" << opt << \" requires argument\\n\";\n+81 usage(std::cerr);\n+82 std::exit(1);\n+83 }\n+84\n+85 void error_unknown_option(const std::string &opt) {\n+86 std::cerr << \"Error: unknown option: \" << opt << \"\\n\";\n+87 usage(std::cerr);\n+88 std::exit(1);\n+89 }\n+90\n+91 void error_parsing_optarg(const std::string &opt, const std::string &error)\n+{\n+92 std::cerr << \"Error: option \" << opt << \": \" << error << \"\\n\";\n+93 usage(std::cerr);\n+94 std::exit(1);\n+95 }\n+96\n+97 template\n+98 void parse(const std::string &arg, T &val) {\n+99 std::istringstream s(arg);\n+100 s >> val;\n+101 bool good = !s.fail();\n+102 if(good) {\n+103 char dummy;\n+104 s >> dummy;\n+105 good = s.fail() && s.eof();\n 106 }\n-107 DUNE_THROW(Exception, \"{\" << className(*this) << \"} Unexpected \"\n-108 \"internal Error: none of the children of the entity \"\n-109 \"{\" << formatEntityInformation(entity) << \"} contains \"\n-110 \"coordinate (\" << global << \"). Children are: \"\n-111 \"[\" << children.str() << \"].\");\n+107 if(!good) {\n+108 std::ostringstream s;\n+109 s << \"Can't parse \\\"\" << arg << \"\\\" as a \" << Dune::className(val);\n+110 throw std::runtime_error(s.str());\n+111 }\n 112 }\n 113\n-114 public:\n-_\b1_\b1_\b8 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh(const _\bG_\br_\bi_\bd & g, const IS & is) : grid_(g), indexSet_(is)\n-{}\n-119\n-_\b1_\b2_\b7 Entity _\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by(const FieldVector& global) const\n-128 { return findEntity(global); }\n-129\n-137 template\n-_\b1_\b3_\b8 Entity _\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by(const FieldVector& global) const\n-139 {\n-140 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw LevelGV;\n-141 const LevelGV &gv = grid_._\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(0);\n-142\n-144 typedef typename LevelGV::template Codim<0>::template\n-Partition::Iterator LevelIterator;\n-145\n-146 // type of element geometry\n-147 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-148 // type of local coordinate\n-149 typedef typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be LocalCoordinate;\n-150\n-151 // loop over macro level\n-152 const LevelIterator end = gv.template end<0, partition>();\n-153 for (LevelIterator it = gv.template begin<0, partition>(); it != end; ++it)\n-154 {\n-155 Entity entity = *it;\n-156 _\bG_\be_\bo_\bm_\be_\bt_\br_\by geo = entity.geometry();\n-157\n-158 LocalCoordinate local = geo._\bl_\bo_\bc_\ba_\bl( global );\n-159 if( !_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt( geo ).checkInside( local ) )\n-160 continue;\n-161\n-162 if( (int(dim) != int(dimw)) && ((geo._\bg_\bl_\bo_\bb_\ba_\bl( local ) - global).two_norm() >\n-1e-8) )\n-163 continue;\n-164\n-165 // return if we found the leaf, else search through the child entites\n-166 if( indexSet_.contains( entity ) )\n-167 return entity;\n-168 else\n-169 return hFindEntity( entity, global );\n-170 }\n-171 DUNE_THROW( _\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Coordinate \" << global << \" is outside the grid.\"\n-);\n-172 }\n+114 std::size_t refines = 0;\n+115 std::string gridFileName = \"\";\n+116\n+117 void parseOptions(int argc, char **argv) {\n+118 std::vector params;\n+119 for(++argv; *argv; ++argv) {\n+120 std::string arg = *argv;\n+121 if(prefix_match(\"-\", arg)) {\n+122 std::string opt = arg;\n+123 if(opt == \"--\") {\n+124 for(++argv; *argv; ++argv)\n+125 params.push_back(*argv);\n+126 break;\n+127 }\n+128 else if(prefix_match(\"-h\", opt) || prefix_match(\"-?\", opt) ||\n+129 opt == \"--help\")\n+130 {\n+131 usage(std::cout);\n+132 std::exit(0);\n+133 }\n+134 else if(opt == \"-R\" || opt == \"--global-refines\") {\n+135 ++argv;\n+136 if(!*argv) error_argument_required(opt);\n+137 try { parse(*argv, refines); }\n+138 catch(const std::runtime_error &e)\n+139 { error_parsing_optarg(opt, e.what()); }\n+140 }\n+141 else if(prefix_match(\"-R\", opt)) {\n+142 try { parse(*argv+std::strlen(\"-R\"), refines); }\n+143 catch(const std::runtime_error &e)\n+144 { error_parsing_optarg(opt, e.what()); }\n+145 }\n+146 else if(prefix_match(\"--global-refines=\", opt)) {\n+147 try { parse(*argv+std::strlen(\"--global-refines=\"), refines); }\n+148 catch(const std::runtime_error &e)\n+149 { error_parsing_optarg(opt, e.what()); }\n+150 }\n+151 else\n+152 error_unknown_option(opt);\n+153 }\n+154 else\n+155 params.push_back(arg);\n+156 }\n+157 // check command line arguments\n+158 if(params.size() < 1) {\n+159 std::cerr << \"Need name of a .msh file to read.\\n\"\n+160 << std::endl;\n+161 usage(std::cerr);\n+162 std::exit(1);\n+163 }\n+164 if(params.size() > 1) {\n+165 std::cerr << \"Too many arguments.\\n\"\n+166 << std::endl;\n+167 usage(std::cerr);\n+168 std::exit(1);\n+169 }\n+170 gridFileName = params[0];\n+171 }\n+172}\n 173\n-174 private:\n-175 const _\bG_\br_\bi_\bd& grid_;\n-176 const IS& indexSet_;\n-177 };\n+174#ifndef HEADERCHECK\n+175int _\bm_\ba_\bi_\bn(int argc, char **argv) {\n+176 try {\n+177 const Dune::MPIHelper &mpiHelper = Dune::MPIHelper::instance(argc, argv);\n 178\n-179} // end namespace Dune\n-180\n-181#endif // DUNE_GRID_HIERARCHICSEARCH_HH\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo)\n--> decltype(referenceElement(geo, geo.impl()))\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:558\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< cd >::Geometry Geometry\n-The corresponding geometry type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-Base class for exceptions in Dune grid modules.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-Wrapper class for geometries.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl\n-GlobalCoordinate global(const LocalCoordinate &local) const\n-Evaluate the map .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:228\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, mydim > LocalCoordinate\n-type of local coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bl_\bo_\bc_\ba_\bl\n-LocalCoordinate local(const GlobalCoordinate &global) const\n-Evaluate the inverse map .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:237\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GridFamily::Traits::HierarchicIterator HierarchicIterator\n-A type that is a model of Dune::HierarchicIterator A type of iterator that\n-allows to examine,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:482\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-GridFamily::Traits::LevelGridView LevelGridView\n-type of view for level grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:402\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n-static constexpr int dimensionworld\n-The dimension of the world the grid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-LevelGridView levelGridView(int level) const\n-View for a grid level for All_Partition.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:598\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n-ct ctype\n-Define type used for coordinates in grid module.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:532\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh\n-Search an IndexSet for an Entity containing a given point.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh_\b:_\b:_\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-Entity findEntity(const FieldVector< ct, dimw > &global) const\n-Search the IndexSet of this HierarchicSearch for an Entity containing point\n-global.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh_\b:_\b:_\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by\n-Entity findEntity(const FieldVector< ct, dimw > &global) const\n-Search the IndexSet of this HierarchicSearch for an Entity containing point\n-global.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh\n-HierarchicSearch(const Grid &g, const IS &is)\n-Construct a HierarchicSearch object from a Grid and an IndexSet.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:118\n-_\bg_\br_\bi_\bd_\b._\bh_\bh\n-Different resources needed by all grid implementations.\n+179 // check that we are not run through mpirun\n+180 if(mpiHelper.size() > 1) {\n+181 if(mpiHelper.rank() == 0)\n+182 std::cerr << programName << \": Sorry, this program works only in \"\n+183 << \"serial.\" << std::endl;\n+184 return 1;\n+185 }\n+186\n+187 parseOptions(argc, argv);\n+188\n+189 // read grid\n+190 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b<_\bG_\br_\bi_\bd_\b> Reader;\n+191 std::shared_ptr gridp(Reader::read(gridFileName));\n+192 gridp->globalRefine(refines);\n+193\n+194 // collect information\n+195 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo_\b<_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be_\b> gridViewInfo;\n+196 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\bl_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo_\bS_\be_\br_\bi_\ba_\bl(gridp->leafGridView(), gridViewInfo);\n+197\n+198 // print it\n+199 std::cout << gridViewInfo << std::flush;\n+200 }\n+201 catch(const std::exception &e) {\n+202 std::cerr << \"Caught exception of type \" << Dune::className(e)\n+203 << std::endl\n+204 << \"e.what(): \" << e.what() << std::endl;\n+205 throw;\n+206 }\n+207 catch(const Dune::Exception &e) {\n+208 std::cerr << \"Caught exception of type \" << Dune::className(e)\n+209 << std::endl\n+210 << \"Exception message: \" << e << std::endl;\n+211 throw;\n+212 }\n+213 catch(const std::string &s) {\n+214 std::cerr << \"Caught exception of type \" << Dune::className(s)\n+215 << std::endl\n+216 << \"Exception message: \" << s << std::endl;\n+217 throw;\n+218 }\n+219 catch(...) {\n+220 std::cerr << \"Caught exception of unknown type\" << std::endl;\n+221 throw;\n+222 }\n+223}\n+224#endif // !HEADERCHECK\n+225#endif // !DOXYGEN\n+226\n+227#endif // DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH\n+_\bm_\ba_\bi_\bn\n+int main(int argc, char **argv)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn recipe-integration.cc:70\n+_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\bl_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo_\bS_\be_\br_\bi_\ba_\bl\n+void fillGridViewInfoSerial(const GV &gv, GridViewInfo< typename GV::ctype >\n+&gridViewInfo)\n+fill a GridViewInfo structure from a serial grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/gridinfo.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n+Read Gmsh mesh file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:807\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo\n+structure to hold information about a certain GridView.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/gridinfo.hh:100\n+_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\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-grid-doc/doxygen/a01001.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01001.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainerwrapper.hh File Reference\n+dune-grid: multiindex.hh File Reference\n \n \n \n \n \n \n \n@@ -72,33 +72,39 @@\n
  • dune
  • grid
  • utility
  • \n \n \n
    \n \n-
    persistentcontainerwrapper.hh File Reference
    \n+
    multiindex.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/utility/hostgridaccess.hh>
    \n-#include <dune/grid/utility/persistentcontainer.hh>
    \n+\n+

    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes. \n+More...

    \n+
    #include <array>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::PersistentContainerWrapper< G, T >
    class  Dune::FactoryUtilities::MultiIndex< dim >
     
    \n \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::FactoryUtilities
     
    \n-
    \n+

    Detailed Description

    \n+

    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,20 +2,26 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-persistentcontainerwrapper.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n+multiindex.hh File Reference\n+Implements a multiindex with arbitrary dimension and fixed index ranges This is\n+used by various factory classes. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b,_\b _\bT_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\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 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs\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+Implements a multiindex with arbitrary dimension and fixed index ranges This is\n+used by various factory classes.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01001_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01001_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainerwrapper.hh Source File\n+dune-grid: multiindex.hh Source File\n \n \n \n \n \n \n \n@@ -74,150 +74,83 @@\n \n
    \n \n
    \n \n
    \n-
    persistentcontainerwrapper.hh
    \n+
    multiindex.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH
    \n-
    6#define DUNE_PERSISTENTCONTAINERWRAPPER_HH
    \n-
    7
    \n-\n-\n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13
    \n-
    14 // PersistentContainerWrapper
    \n-
    15 // --------------------------
    \n-
    16
    \n-
    17 template< class G, class T >
    \n+
    3#ifndef DUNE_GRID_UTILITY_MULTIINDEX_HH
    \n+
    4#define DUNE_GRID_UTILITY_MULTIINDEX_HH
    \n+
    5
    \n+
    11#include<array>
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    \n+
    15 namespace FactoryUtilities
    \n+
    16 {
    \n+
    17 template<std::size_t dim>
    \n
    \n-\n+
    18 class MultiIndex : public std::array<unsigned int,dim>
    \n
    19 {
    \n-\n-
    21
    \n-\n-
    23
    \n-
    24 typedef typename HostGridAccess::HostGrid HostGrid;
    \n-\n-
    26
    \n-
    27 public:
    \n-
    28 typedef G Grid;
    \n+
    20 // The range of each component
    \n+
    21 std::array<unsigned int,dim> limits_;
    \n+
    22
    \n+
    23 public:
    \n+
    \n+
    25 MultiIndex(const std::array<unsigned int,dim>& limits) : limits_(limits)
    \n+
    26 {
    \n+
    27 std::fill(this->begin(), this->end(), 0);
    \n+
    28 }
    \n+
    \n
    29
    \n-\n-\n-
    32
    \n-\n-\n-
    35
    \n-
    \n-
    36 PersistentContainerWrapper ( const Grid &grid, int codim, const Value &value = Value() )
    \n-
    37 : hostContainer_( HostGridAccess::hostGrid( grid ), codim, value )
    \n-
    38 {}
    \n-
    \n-
    39
    \n-
    40 template< class Entity >
    \n-
    \n-
    41 const Value &operator[] ( const Entity &entity ) const
    \n-
    42 {
    \n-
    43 return hostContainer_[ HostGridAccess::hostEntity( entity ) ];
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    46 template< class Entity >
    \n-
    \n-
    47 Value &operator[] ( const Entity &entity )
    \n-
    48 {
    \n-
    49 return hostContainer_[ HostGridAccess::hostEntity( entity ) ];
    \n-
    50 }
    \n-
    \n-
    51
    \n-
    52 template< class Entity >
    \n-
    \n-
    53 const Value &operator() ( const Entity &entity, int subEntity ) const
    \n-
    54 {
    \n-
    55 return hostContainer_( HostGridAccess::hostEntity( entity ), subEntity );
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    58 template< class Entity >
    \n-
    \n-
    59 Value &operator() ( const Entity &entity, int subEntity )
    \n-
    60 {
    \n-
    61 return hostContainer_( HostGridAccess::hostEntity( entity ), subEntity );
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    64 Size size () const { return hostContainer_.size(); }
    \n-
    65
    \n-
    66 void resize ( const Value &value = Value() ) { hostContainer_.resize( value ); }
    \n-\n-
    68
    \n-
    69 void fill ( const Value &value = Value() ) { hostContainer_.fill( value ); }
    \n-
    70
    \n-
    71 void swap ( This &other ) { hostContainer_.swap( other.hostContainer_ ); }
    \n-
    72
    \n-
    73 ConstIterator begin () const { return hostContainer_.begin(); }
    \n-\n-
    75
    \n-
    76 ConstIterator end () const { return hostContainer_.end(); }
    \n-
    77 Iterator end () { return hostContainer_.end(); }
    \n-
    78
    \n-
    79 int codimension () const { return hostContainer_.codimension(); }
    \n-
    80
    \n-
    81 protected:
    \n-\n-
    83 };
    \n-
    \n-
    84
    \n-
    85} // namespace Dune
    \n-
    86
    \n-
    87#endif // #ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH
    \n-\n+
    \n+\n+
    32 {
    \n+
    33 for (std::size_t i=0; i<dim; i++)
    \n+
    34 {
    \n+
    35 // Augment digit
    \n+
    36 (*this)[i]++;
    \n+
    37
    \n+
    38 // If there is no carry-over we can stop here
    \n+
    39 if ((*this)[i]<limits_[i])
    \n+
    40 break;
    \n+
    41
    \n+
    42 (*this)[i] = 0;
    \n+
    43 }
    \n+
    44 return *this;
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+
    48 size_t cycle() const
    \n+
    49 {
    \n+
    50 size_t result = 1;
    \n+
    51 for (std::size_t i=0; i<dim; i++)
    \n+
    52 result *= limits_[i];
    \n+
    53 return result;
    \n+
    54 }
    \n+
    \n+
    55 };
    \n+
    \n+
    56 }
    \n+
    \n+
    57}
    \n+
    58
    \n+
    59#endif
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n-\n-
    void swap(This &other)
    Definition persistentcontainermap.hh:97
    \n-
    void fill(const Value &value)
    Definition persistentcontainermap.hh:95
    \n-
    int codimension() const
    Definition persistentcontainermap.hh:111
    \n-
    void resize(const Value &value=Value())
    Definition persistentcontainermap.hh:87
    \n-
    ConstIterator begin() const
    Definition persistentcontainermap.hh:175
    \n-
    ConstIterator end() const
    Definition persistentcontainermap.hh:190
    \n-
    Size size() const
    Definition persistentcontainermap.hh:85
    \n-
    void shrinkToFit()
    Definition persistentcontainermap.hh:93
    \n-
    Definition persistentcontainerwrapper.hh:19
    \n-
    void fill(const Value &value=Value())
    Definition persistentcontainerwrapper.hh:69
    \n-
    PersistentContainer< HostGrid, T >::ConstIterator ConstIterator
    Definition persistentcontainerwrapper.hh:34
    \n-
    Size size() const
    Definition persistentcontainerwrapper.hh:64
    \n-
    ConstIterator begin() const
    Definition persistentcontainerwrapper.hh:73
    \n-
    const Value & operator()(const Entity &entity, int subEntity) const
    Definition persistentcontainerwrapper.hh:53
    \n-
    G Grid
    Definition persistentcontainerwrapper.hh:28
    \n-
    const Value & operator[](const Entity &entity) const
    Definition persistentcontainerwrapper.hh:41
    \n-
    void resize(const Value &value=Value())
    Definition persistentcontainerwrapper.hh:66
    \n-
    PersistentContainer< HostGrid, T >::Size Size
    Definition persistentcontainerwrapper.hh:31
    \n-
    int codimension() const
    Definition persistentcontainerwrapper.hh:79
    \n-
    PersistentContainer< HostGrid, T >::Value Value
    Definition persistentcontainerwrapper.hh:30
    \n-
    void swap(This &other)
    Definition persistentcontainerwrapper.hh:71
    \n-
    ConstIterator end() const
    Definition persistentcontainerwrapper.hh:76
    \n-
    PersistentContainerWrapper(const Grid &grid, int codim, const Value &value=Value())
    Definition persistentcontainerwrapper.hh:36
    \n-
    PersistentContainer< HostGrid, T >::Iterator Iterator
    Definition persistentcontainerwrapper.hh:33
    \n-
    void shrinkToFit()
    Definition persistentcontainerwrapper.hh:67
    \n-
    Iterator begin()
    Definition persistentcontainerwrapper.hh:74
    \n-
    PersistentContainer< HostGrid, T > hostContainer_
    Definition persistentcontainerwrapper.hh:82
    \n-
    Iterator end()
    Definition persistentcontainerwrapper.hh:77
    \n-\n+
    Definition multiindex.hh:19
    \n+
    MultiIndex(const std::array< unsigned int, dim > &limits)
    Constructor with a given range for each digit.
    Definition multiindex.hh:25
    \n+
    MultiIndex< dim > & operator++()
    Increment the MultiIndex.
    Definition multiindex.hh:31
    \n+
    size_t cycle() const
    Compute how many times you can call operator++ before getting to (0,...,0) again.
    Definition multiindex.hh:48
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,198 +1,81 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-persistentcontainerwrapper.hh\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// SPDX-FileCopyrightText: 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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH\n-6#define DUNE_PERSISTENTCONTAINERWRAPPER_HH\n-7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-13\n-14 // PersistentContainerWrapper\n-15 // --------------------------\n-16\n-17 template< class G, class T >\n-_\b1_\b8 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+3#ifndef DUNE_GRID_UTILITY_MULTIINDEX_HH\n+4#define DUNE_GRID_UTILITY_MULTIINDEX_HH\n+5\n+11#include\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+_\b1_\b5 namespace FactoryUtilities\n+16 {\n+17 template\n+_\b1_\b8 class _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx : public std::array\n 19 {\n-20 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b,_\b _\bT_\b _\b> _\bT_\bh_\bi_\bs;\n-21\n-22 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\b _\b> _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs;\n-23\n-24 typedef typename HostGridAccess::HostGrid HostGrid;\n-25 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b> _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n-26\n-27 public:\n-_\b2_\b8 typedef G _\bG_\br_\bi_\bd;\n+20 // The range of each component\n+21 std::array limits_;\n+22\n+23 public:\n+_\b2_\b5 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(const std::array& limits) : limits_(limits)\n+26 {\n+27 std::fill(this->begin(), this->end(), 0);\n+28 }\n 29\n-_\b3_\b0 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bV_\ba_\bl_\bu_\be _\bV_\ba_\bl_\bu_\be;\n-_\b3_\b1 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bS_\bi_\bz_\be _\bS_\bi_\bz_\be;\n-32\n-_\b3_\b3 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b3_\b4 typedef typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-35\n-_\b3_\b6 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br ( const _\bG_\br_\bi_\bd &grid, int codim, const _\bV_\ba_\bl_\bu_\be &value\n-= _\bV_\ba_\bl_\bu_\be() )\n-37 : _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs::hostGrid( grid ), codim, value )\n-38 {}\n-39\n-40 template< class Entity >\n-_\b4_\b1 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-42 {\n-43 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_[ HostGridAccess::hostEntity( entity ) ];\n-44 }\n-45\n-46 template< class Entity >\n-_\b4_\b7 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-48 {\n-49 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_[ HostGridAccess::hostEntity( entity ) ];\n-50 }\n-51\n-52 template< class Entity >\n-_\b5_\b3 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const\n-54 {\n-55 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_( HostGridAccess::hostEntity( entity ), subEntity );\n+_\b3_\b1 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b>& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+()\n+32 {\n+33 for (std::size_t i=0; i\n-_\b5_\b9 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity )\n-60 {\n-61 return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_( HostGridAccess::hostEntity( entity ), subEntity );\n-62 }\n-63\n-_\b6_\b4 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bs_\bi_\bz_\be(); }\n-65\n-_\b6_\b6 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() ) { _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\br_\be_\bs_\bi_\bz_\be( value\n-); }\n-_\b6_\b7 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt () { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt(); }\n-68\n-_\b6_\b9 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() ) { _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bf_\bi_\bl_\bl( value ); }\n-70\n-_\b7_\b1 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other ) { _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bs_\bw_\ba_\bp( other._\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_ ); }\n-72\n-_\b7_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bb_\be_\bg_\bi_\bn(); }\n-_\b7_\b4 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bb_\be_\bg_\bi_\bn(); }\n-75\n-_\b7_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\be_\bn_\bd(); }\n-_\b7_\b7 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\be_\bn_\bd(); }\n-78\n-_\b7_\b9 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const { return _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_._\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn(); }\n-80\n-81 protected:\n-_\b8_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b> _\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_;\n-83 };\n-84\n-85} // namespace Dune\n-86\n-87#endif // #ifndef DUNE_PERSISTENTCONTAINERWRAPPER_HH\n-_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh\n+57}\n+58\n+59#endif\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n-provides access to host grid objects from GeometryGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bT_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Value &value)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-int codimension() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-ConstIterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\be_\bn_\bd\n-ConstIterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:190\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bi_\bz_\be\n-Size size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-PersistentContainer< HostGrid, T >::ConstIterator ConstIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-Size size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-ConstIterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Value & operator()(const Entity &entity, int subEntity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bG_\br_\bi_\bd\n-G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const Value & operator[](const Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bS_\bi_\bz_\be\n-PersistentContainer< HostGrid, T >::Size Size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-int codimension() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-PersistentContainer< HostGrid, T >::Value Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\be_\bn_\bd\n-ConstIterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n-PersistentContainerWrapper(const Grid &grid, int codim, const Value\n-&value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-PersistentContainer< HostGrid, T >::Iterator Iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bh_\bo_\bs_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_\n-PersistentContainer< HostGrid, T > hostContainer_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\be_\bn_\bd\n-Iterator end()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainerwrapper.hh:77\n-_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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 std::array< unsigned int, dim > &limits)\n+Constructor with a given range for each digit.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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+MultiIndex< dim > & operator++()\n+Increment the MultiIndex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bc_\by_\bc_\bl_\be\n+size_t cycle() const\n+Compute how many times you can call operator++ before getting to (0,...,0)\n+again.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:48\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01004.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01004.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: globalindexset.hh File Reference\n+dune-grid: gridtype.hh File Reference\n \n \n \n \n \n \n \n@@ -69,69 +69,25 @@\n \n
    \n \n
    \n \n
    \n- \n-
    globalindexset.hh File Reference
    \n+
    gridtype.hh File Reference
    \n
    \n
    \n \n-

    Provides a globally unique index for all entities of a distributed Dune grid. \n+

    This file can be included directly following config.h to test if a grid type was correctly selected. \n More...

    \n-
    #include <vector>
    \n-#include <iostream>
    \n-#include <fstream>
    \n-#include <memory>
    \n-#include <map>
    \n-#include <utility>
    \n-#include <algorithm>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-
    \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::GlobalIndexSet< GridView >
     Calculate globally unique index over all processes in a Dune grid. More...
     
    struct  Dune::GlobalIndexSet< GridView >::SubPartitionTypeProvider< Entity, Codim >
     Helper class to provide access to subentity PartitionTypes with a run-time codimension. More...
     
    struct  Dune::GlobalIndexSet< GridView >::SubPartitionTypeProvider< Entity, 0 >
     
    \n-\n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Provides a globally unique index for all entities of a distributed Dune grid.

    \n-

    Such functionality is relevant for a number of applications:

      \n-
    • Map a degree of freedom associated with an entity to its location in a global matrix or global vector
    • \n-
    • Such indices for elements are needed as input to external mesh partitioners
    • \n-
    • Using matrix and vector routines from the PETSc or trilinos parallel linear algebra packages for distributed memory parallel computers.
    • \n-
    \n-

    Method: (1) The UniqueEntityPartition class assigns an owner process to each entity

        (2) Compute the number of entities that are owned by each process\n-\n-    (3) we communicate the index of entities that are owned by the process to processes\n-        that also contain these entities but do not own them, so that on a non-owner process\n-        we have information on the index of the entity that it got from the owner-process;\n-
    Author
    Benedikt Oswald, Patrick Leidenberger, Oliver Sander
    \n-
    Attention
    globally unique indices are ONLY provided for entities of the InteriorBorder_Partition type, NOT for the Ghost_Partition type !!!
    \n-
    Bug:
    This code will most likely not work on grids with more than one element type. Please ask on the mailing list if you need this feature.
    \n-
    Note
    The interface in this file is experimental, and may change without prior notice.
    \n+

    This file can be included directly following config.h to test if a grid type was correctly selected.

    \n+
    Author
    Andreas Dedner
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,71 +1,18 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-globalindexset.hh File Reference\n-Provides a globally unique index for all entities of a distributed _\bD_\bu_\bn_\be grid.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n-#include \n+gridtype.hh File Reference\n+This file can be included directly following config.h to test if a grid type\n+was correctly selected. _\bM_\bo_\br_\be_\b._\b._\b.\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>\n-\u00a0 Calculate globally unique index over all processes in a _\bD_\bu_\bn_\be grid.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b,\n- _\bC_\bo_\bd_\bi_\bm_\b _\b>\n-\u00a0 Helper class to provide access to subentity PartitionTypes with a run-\n- time codimension. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b>_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\b0\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 Include standard header files.\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-Provides a globally unique index for all entities of a distributed _\bD_\bu_\bn_\be grid.\n-Such functionality is relevant for a number of applications:\n- * Map a degree of freedom associated with an entity to its location in a\n- global matrix or global vector\n- * Such indices for elements are needed as input to external mesh\n- partitioners\n- * Using matrix and vector routines from the PETSc or trilinos parallel\n- linear algebra packages for distributed memory parallel computers.\n-Method: (1) The UniqueEntityPartition class assigns an owner process to each\n-entity\n- (2) Compute the number of entities that are owned by each process\n-\n- (3) we communicate the index of entities that are owned by the process to\n-processes\n- that also contain these entities but do not own them, so that on a non-\n-owner process\n- we have information on the index of the entity that it got from the\n-owner-process;\n+This file can be included directly following config.h to test if a grid type\n+was correctly selected.\n Author\n- Benedikt Oswald, Patrick Leidenberger, Oliver Sander\n- Attention\n- globally unique indices are ONLY provided for entities of the\n- InteriorBorder_Partition type, NOT for the Ghost_Partition type !!!\n- _\bB\bB_\bu\bu_\bg\bg_\b:\b:\n- This code will most likely not work on grids with more than one element\n- type. Please ask on the mailing list if you need this feature.\n- Note\n- The interface in this file is experimental, and may change without prior\n- notice.\n+ Andreas Dedner\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01004_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01004_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: globalindexset.hh Source File\n+dune-grid: gridtype.hh Source File\n \n \n \n \n \n \n \n@@ -74,480 +74,42 @@\n \n
    \n \n
    \n
    \n
    \n-
    globalindexset.hh
    \n+
    gridtype.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    35#ifndef DUNE_GRID_UTILITY_GLOBALINDEXSET_HH
    \n-
    36#define DUNE_GRID_UTILITY_GLOBALINDEXSET_HH
    \n-
    37
    \n-
    39#include <vector>
    \n-
    40#include <iostream>
    \n-
    41#include <fstream>
    \n-
    42#include <memory>
    \n-
    43#include <map>
    \n-
    44#include <utility>
    \n-
    45#include <algorithm>
    \n-
    46
    \n-\n-\n-
    50
    \n-
    52#if HAVE_MPI
    \n-
    53 #include <dune/common/parallel/mpihelper.hh>
    \n-
    54#endif
    \n-
    55
    \n-
    56namespace Dune
    \n-
    57{
    \n-
    58
    \n-
    61 template<class GridView>
    \n-
    \n-\n-
    63 {
    \n-
    64 public:
    \n-
    66 typedef int Index;
    \n-
    67
    \n-
    73 template <class Entity, int Codim>
    \n-
    \n-\n-
    75 {
    \n-
    \n-
    78 static PartitionType get(const Entity& entity, int codim, int i)
    \n-
    79 {
    \n-
    80 if (codim==Codim)
    \n-
    81 return entity.template subEntity<Codim>(i).partitionType();
    \n-
    82 else
    \n-
    83 return SubPartitionTypeProvider<Entity,Codim-1>::get(entity, codim, i);
    \n-
    84 }
    \n-
    \n-
    85 };
    \n-
    \n-
    86
    \n-
    87 template <class Entity>
    \n-
    \n-\n-
    89 {
    \n-
    \n-
    90 static PartitionType get(const Entity& entity, int codim, int i)
    \n-
    91 {
    \n-
    92 return entity.template subEntity<0>(i).partitionType();
    \n-
    93 }
    \n-
    \n-
    94 };
    \n-
    \n-
    95
    \n-
    96 private:
    \n-
    98 typedef typename GridView::Grid Grid;
    \n-
    99
    \n-
    100 typedef typename GridView::Grid::GlobalIdSet GlobalIdSet;
    \n-
    101 typedef typename GridView::Grid::GlobalIdSet::IdType IdType;
    \n-
    102 typedef typename GridView::Traits::template Codim<0>::Iterator Iterator;
    \n-
    103
    \n-
    104 typedef typename Grid::Communication Communication;
    \n-
    105
    \n-
    106 typedef std::map<IdType,Index> MapId2Index;
    \n-
    107 typedef std::map<Index,Index> IndexMap;
    \n-
    108
    \n-
    109 /*********************************************************************************************/
    \n-
    110 /* calculate unique partitioning for all entities of a given codim in a given GridView, */
    \n-
    111 /* assuming they all have the same geometry, i.e. codim, type */
    \n-
    112 /*********************************************************************************************/
    \n-
    113 class UniqueEntityPartition
    \n-
    114 {
    \n-
    115 private:
    \n-
    116 /* A DataHandle class to calculate the minimum of a std::vector which is accompanied by an index set */
    \n-
    117 template<class IS, class V> // mapper type and vector type
    \n-
    118 class MinimumExchange
    \n-
    119 : public Dune::CommDataHandleIF<MinimumExchange<IS,V>,typename V::value_type>
    \n-
    120 {
    \n-
    121 public:
    \n-
    123 typedef typename V::value_type DataType;
    \n-
    124
    \n-
    126 bool contains (int dim, unsigned int codim) const
    \n-
    127 {
    \n-
    128 return codim==indexSetCodim_;
    \n-
    129 }
    \n-
    130
    \n-
    132 bool fixedSize (int dim, int codim) const
    \n-
    133 {
    \n-
    134 return true ;
    \n-
    135 }
    \n-
    136
    \n-
    140 template<class EntityType>
    \n-
    141 size_t size (EntityType& e) const
    \n-
    142 {
    \n-
    143 return 1 ;
    \n-
    144 }
    \n-
    145
    \n-
    147 template<class MessageBuffer, class EntityType>
    \n-
    148 void gather (MessageBuffer& buff, const EntityType& e) const
    \n-
    149 {
    \n-
    150 buff.write(v_[indexset_.index(e)]);
    \n-
    151 }
    \n-
    152
    \n-
    157 template<class MessageBuffer, class EntityType>
    \n-
    158 void scatter (MessageBuffer& buff, const EntityType& e, size_t n)
    \n-
    159 {
    \n-
    160 DataType x;
    \n-
    161 buff.read(x);
    \n-
    162 if (x>=0) // other is -1 means, he does not want it
    \n-
    163 v_[indexset_.index(e)] = std::min(x,v_[indexset_.index(e)]);
    \n-
    164 }
    \n-
    165
    \n-
    167 MinimumExchange (const IS& indexset, V& v, unsigned int indexSetCodim)
    \n-
    168 : indexset_(indexset),
    \n-
    169 v_(v),
    \n-
    170 indexSetCodim_(indexSetCodim)
    \n-
    171 {}
    \n-
    172
    \n-
    173 private:
    \n-
    174 const IS& indexset_;
    \n-
    175 V& v_;
    \n-
    176 unsigned int indexSetCodim_;
    \n-
    177 };
    \n-
    178
    \n-
    179 public:
    \n-
    182 UniqueEntityPartition (const GridView& gridview, unsigned int codim)
    \n-
    183 : assignment_(gridview.size(codim))
    \n-
    184 {
    \n-
    186 typedef typename GridView::IndexSet IndexSet;
    \n-
    187
    \n-
    188 // assign own rank to entities that I might have
    \n-
    189 for (auto it = gridview.template begin<0>(); it!=gridview.template end<0>(); ++it)
    \n-
    190 for (unsigned int i=0; i<it->subEntities(codim); i++)
    \n-
    191 {
    \n-
    192 // Evil hack: I need to call subEntity, which needs the entity codimension as a static parameter.
    \n-
    193 // However, we only have it as a run-time parameter.
    \n-
    194 PartitionType subPartitionType = SubPartitionTypeProvider<typename GridView::template Codim<0>::Entity, GridView::dimension>::get(*it,codim,i);
    \n-
    195
    \n-
    196 assignment_[gridview.indexSet().subIndex(*it,i,codim)]
    \n-
    197 = ( subPartitionType==Dune::InteriorEntity or subPartitionType==Dune::BorderEntity )
    \n-
    198 ? gridview.comm().rank() // set to own rank
    \n-
    199 : - 1; // it is a ghost entity, I will not possibly own it.
    \n-
    200 }
    \n-
    201
    \n-
    203 MinimumExchange<IndexSet,std::vector<Index> > dh(gridview.indexSet(),assignment_,codim);
    \n-
    204
    \n-\n-
    206 }
    \n-
    207
    \n-
    209 int owner(size_t i)
    \n-
    210 {
    \n-
    211 return assignment_[i];
    \n-
    212 }
    \n-
    213
    \n-
    215 size_t numOwners(int rank) const
    \n-
    216 {
    \n-
    217 return std::count(assignment_.begin(), assignment_.end(), rank);
    \n-
    218 }
    \n-
    219
    \n-
    220 private:
    \n-
    221 std::vector<int> assignment_;
    \n-
    222 };
    \n-
    223
    \n-
    224 private:
    \n-
    225 /* A DataHandle class to communicate the global index from the
    \n-
    226 * owning to the non-owning entity; the class is based on the MinimumExchange
    \n-
    227 * class in the parallelsolver.hh header file.
    \n-
    228 */
    \n-
    229 class IndexExchange
    \n-
    230 : public Dune::CommDataHandleIF<IndexExchange,Index>
    \n-
    231 {
    \n-
    232 public:
    \n-
    234 bool contains (int dim, unsigned int codim) const
    \n-
    235 {
    \n-
    236 return codim==indexSetCodim_;
    \n-
    237 }
    \n-
    238
    \n-
    240 bool fixedSize (int dim, int codim) const
    \n-
    241 {
    \n-
    242 return true;
    \n-
    243 }
    \n-
    244
    \n-
    249 template<class EntityType>
    \n-
    250 size_t size (EntityType& e) const
    \n-
    251 {
    \n-
    252 return 1;
    \n-
    253 }
    \n-
    254
    \n-
    256 template<class MessageBuffer, class EntityType>
    \n-
    257 void gather (MessageBuffer& buff, const EntityType& e) const
    \n-
    258 {
    \n-
    259 IdType id=globalidset_.id(e);
    \n-
    260
    \n-
    261 if (indexSetCodim_==0)
    \n-
    262 buff.write(mapid2entity_[id]);
    \n-
    263 else
    \n-
    264 buff.write((*mapid2entity_.find(id)).second);
    \n-
    265 }
    \n-
    266
    \n-
    271 template<class MessageBuffer, class EntityType>
    \n-
    272 void scatter (MessageBuffer& buff, const EntityType& entity, size_t n)
    \n-
    273 {
    \n-
    274 Index x;
    \n-
    275 buff.read(x);
    \n-
    276
    \n-
    284 if(x >= 0) {
    \n-
    285 const IdType id = globalidset_.id(entity);
    \n-
    286
    \n-
    287 if (indexSetCodim_==0)
    \n-
    288 mapid2entity_[id] = x;
    \n-
    289 else
    \n-
    290 {
    \n-
    291 mapid2entity_.erase(id);
    \n-
    292 mapid2entity_.insert(std::make_pair(id,x));
    \n-
    293
    \n-
    294 const Index lindex = indexSet_.index(entity);
    \n-
    295 localGlobalMap_[lindex] = x;
    \n-
    296 }
    \n-
    297 }
    \n-
    298 }
    \n-
    299
    \n-
    301 IndexExchange (const GlobalIdSet& globalidset, MapId2Index& mapid2entity,
    \n-
    302 const typename GridView::IndexSet& localIndexSet, IndexMap& localGlobal,
    \n-
    303 unsigned int indexSetCodim)
    \n-
    304 : globalidset_(globalidset),
    \n-
    305 mapid2entity_(mapid2entity),
    \n-
    306 indexSet_(localIndexSet),
    \n-
    307 localGlobalMap_(localGlobal),
    \n-
    308 indexSetCodim_(indexSetCodim)
    \n-
    309 {}
    \n-
    310
    \n-
    311 private:
    \n-
    312 const GlobalIdSet& globalidset_;
    \n-
    313 MapId2Index& mapid2entity_;
    \n-
    314
    \n-
    315 const typename GridView::IndexSet& indexSet_;
    \n-
    316 IndexMap& localGlobalMap_;
    \n-
    317 unsigned int indexSetCodim_;
    \n-
    318 };
    \n-
    319
    \n-
    320 public:
    \n-
    \n-
    326 GlobalIndexSet(const GridView& gridview, int codim)
    \n-
    327 : gridview_(gridview),
    \n-
    328 codim_(codim)
    \n-
    329 {
    \n-
    330 int rank = gridview.comm().rank();
    \n-
    331 int size = gridview.comm().size();
    \n-
    332
    \n-
    333 const typename GridView::IndexSet& indexSet = gridview.indexSet();
    \n-
    334
    \n-
    335 std::unique_ptr<UniqueEntityPartition> uniqueEntityPartition;
    \n-
    336 if (codim_!=0)
    \n-
    337 uniqueEntityPartition = std::make_unique<UniqueEntityPartition>(gridview,codim_);
    \n-
    338
    \n-
    339 int nLocalEntity = (codim_==0)
    \n-
    340 ? std::distance(gridview.template begin<0, Dune::Interior_Partition>(), gridview.template end<0, Dune::Interior_Partition>())
    \n-
    341 : uniqueEntityPartition->numOwners(rank);
    \n-
    342
    \n-
    343 // Compute the global, non-redundant number of entities, i.e. the number of entities in the set
    \n-
    344 // without double, aka. redundant entities, on the interprocessor boundary via global reduce. */
    \n-
    345 nGlobalEntity_ = gridview.comm().template sum<int>(nLocalEntity);
    \n-
    346
    \n-
    347 /* communicate the number of locally owned entities to all other processes so that the respective offset
    \n-
    348 * can be calculated on the respective processor; we use the Dune mpi communication facility
    \n-
    349 * for this; first, we gather the number of locally owned entities on the root process and, second, we
    \n-
    350 * broadcast the array to all processes where the respective offset can be calculated. */
    \n-
    351
    \n-
    352 std::vector<int> offset(size);
    \n-
    353 std::fill(offset.begin(), offset.end(), 0);
    \n-
    354
    \n-
    356 gridview_.comm().template allgather<int>(&nLocalEntity, 1, offset.data());
    \n-
    357
    \n-
    358 int myoffset = 0;
    \n-
    359 for (int i=1; i<rank+1; i++)
    \n-
    360 myoffset += offset[i-1];
    \n-
    361
    \n-
    362 /* compute globally unique index over all processes; the idea of the algorithm is as follows: if
    \n-
    363 * an entity is owned by the process, it is assigned an index that is the addition of the offset
    \n-
    364 * specific for this process and a consecutively incremented counter; if the entity is not owned
    \n-
    365 * by the process, it is assigned -1, which signals that this specific entity will get its global
    \n-
    366 * unique index through communication afterwards;
    \n-
    367 *
    \n-
    368 * thus, the calculation of the globally unique index is divided into 2 stages:
    \n-
    369 *
    \n-
    370 * (1) we calculate the global index independently;
    \n-
    371 *
    \n-
    372 * (2) we achieve parallel adjustment by communicating the index
    \n-
    373 * from the owning entity to the non-owning entity.
    \n-
    374 *
    \n-
    375 */
    \n-
    376
    \n-
    377 // 1st stage of global index calculation: calculate global index for owned entities
    \n-
    378 // initialize map that stores an entity's global index via it's globally unique id as key
    \n-
    379 globalIndex_.clear();
    \n-
    380
    \n-
    381 const GlobalIdSet& globalIdSet = gridview_.grid().globalIdSet();
    \n-
    383 Index globalcontrib = 0;
    \n-
    385 if (codim_==0) // This case is simpler
    \n-
    386 {
    \n-
    387 for (Iterator iter = gridview_.template begin<0>(); iter!=gridview_.template end<0>(); ++iter)
    \n-
    388 {
    \n-
    389 const IdType id = globalIdSet.id(*iter);
    \n-
    392 if (iter->partitionType() == Dune::InteriorEntity)
    \n-
    393 {
    \n-
    394 const Index gindex = myoffset + globalcontrib;
    \n-
    396 globalIndex_[id] = gindex;
    \n-
    397 globalcontrib++;
    \n-
    398 }
    \n-
    399
    \n-
    401 else
    \n-
    402 {
    \n-
    403 globalIndex_[id] = -1;
    \n-
    404 }
    \n-
    405 }
    \n-
    406 }
    \n-
    407 else // if (codim==0) else
    \n-
    408 {
    \n-
    409 std::vector<bool> firstTime(gridview_.size(codim_));
    \n-
    410 std::fill(firstTime.begin(), firstTime.end(), true);
    \n-
    411
    \n-
    412 for(Iterator iter = gridview_.template begin<0>();iter!=gridview_.template end<0>(); ++iter)
    \n-
    413 {
    \n-
    414 for (size_t i=0; i<iter->subEntities(codim_); i++)
    \n-
    415 {
    \n-
    416 IdType id=globalIdSet.subId(*iter,i,codim_);
    \n-
    417
    \n-
    418 Index idx = gridview_.indexSet().subIndex(*iter,i,codim_);
    \n-
    419
    \n-
    420 if (!firstTime[idx] )
    \n-
    421 continue;
    \n-
    422
    \n-
    423 firstTime[idx] = false;
    \n-
    424
    \n-
    425 if (uniqueEntityPartition->owner(idx) == rank)
    \n-
    426 {
    \n-
    427 const Index gindex = myoffset + globalcontrib;
    \n-
    428 globalIndex_.insert(std::make_pair(id,gindex));
    \n-
    430 const Index lindex = idx;
    \n-
    431 localGlobalMap_[lindex] = gindex;
    \n-
    432
    \n-
    433 globalcontrib++;
    \n-
    434 }
    \n-
    435 else
    \n-
    436 {
    \n-
    437 globalIndex_.insert(std::make_pair(id,-1));
    \n-
    438 }
    \n-
    439 }
    \n-
    440
    \n-
    441 }
    \n-
    442 }
    \n-
    443
    \n-
    444 // 2nd stage of global index calculation: communicate global index for non-owned entities
    \n-
    445
    \n-
    446 // Create the data handle and communicate.
    \n-
    447 IndexExchange dataHandle(globalIdSet,globalIndex_,indexSet,localGlobalMap_,codim_);
    \n-\n-
    449 }
    \n-
    \n-
    450
    \n-
    452 template <class Entity>
    \n-
    \n-
    453 Index index(const Entity& entity) const
    \n-
    454 {
    \n-
    455 if (codim_==0)
    \n-
    456 {
    \n-
    458 const GlobalIdSet& globalIdSet = gridview_.grid().globalIdSet();
    \n-
    459 const IdType id = globalIdSet.id(entity);
    \n-
    460 const Index gindex = globalIndex_.find(id)->second;
    \n-
    462 return gindex;
    \n-
    463 }
    \n-
    464 else
    \n-
    465 return localGlobalMap_.find(gridview_.indexSet().index(entity))->second;
    \n-
    466 }
    \n-
    \n-
    467
    \n-
    473 template <class Entity>
    \n-
    \n-
    474 Index subIndex(const Entity& entity, unsigned int i, unsigned int codim) const
    \n-
    475 {
    \n-
    476 if (codim_==0)
    \n-
    477 {
    \n-
    479 const GlobalIdSet& globalIdSet = gridview_.grid().globalIdSet();
    \n-
    480 const IdType id = globalIdSet.subId(entity,i,codim);
    \n-
    481 const Index gindex = globalIndex_.find(id)->second;
    \n-
    483 return gindex;
    \n-
    484 }
    \n-
    485 else
    \n-
    486 return localGlobalMap_.find(gridview_.indexSet().subIndex(entity,i,codim))->second;
    \n-
    487 }
    \n-
    \n-
    488
    \n-
    \n-
    494 unsigned int size(unsigned int codim) const
    \n-
    495 {
    \n-
    496 return (codim_==codim) ? nGlobalEntity_ : 0;
    \n-
    497 }
    \n-
    \n-
    498
    \n-
    499 protected:
    \n-\n-
    501
    \n-
    503 unsigned int codim_;
    \n-
    504
    \n-\n-
    507
    \n-\n-
    509
    \n-
    512 MapId2Index globalIndex_;
    \n-
    513 };
    \n-
    \n-
    514
    \n-
    515} // namespace Dune
    \n-
    516
    \n-
    517#endif /* DUNE_GRID_UTILITY_GLOBALINDEXSET_HH */
    \n-\n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n-
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n-
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n-
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n-
    @ ForwardCommunication
    communicate as given in InterfaceType
    Definition gridenums.hh:171
    \n-
    @ All_All_Interface
    send all and receive all entities
    Definition gridenums.hh:91
    \n-
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n-
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n-
    const Grid & grid() const
    obtain a const reference to the underlying hierarchic grid
    Definition common/gridview.hh:180
    \n-
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n-
    int size(int codim) const
    obtain number of entities in a given codimension
    Definition common/gridview.hh:197
    \n-
    auto communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
    Communicate data on this view.
    Definition common/gridview.hh:299
    \n-
    const Communication & comm() const
    obtain communication object
    Definition common/gridview.hh:280
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n-
    Include standard header files.
    Definition agrid.hh:60
    \n-
    CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
    Definition datahandleif.hh:78
    \n-
    void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
    unpack data from message buffer to user.
    Definition datahandleif.hh:207
    \n-
    bool contains(int dim, int codim) const
    returns true if data for given valid codim should be communicated
    Definition datahandleif.hh:131
    \n-
    size_t size(const EntityType &e) const
    how many objects of type DataType have to be sent for a given entity
    Definition datahandleif.hh:182
    \n-
    void gather(MessageBufferImp &buff, const EntityType &e) const
    pack data from user to message buffer
    Definition datahandleif.hh:193
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    PartitionType partitionType() const
    Partition type of this entity.
    Definition common/entity.hh:127
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    Calculate globally unique index over all processes in a Dune grid.
    Definition globalindexset.hh:63
    \n-
    Index subIndex(const Entity &entity, unsigned int i, unsigned int codim) const
    Return the global index of a subentity of a given entity.
    Definition globalindexset.hh:474
    \n-
    MapId2Index globalIndex_
    Stores global index of entities with entity's globally unique id as key.
    Definition globalindexset.hh:512
    \n-
    int Index
    The number type used for global indices
    Definition globalindexset.hh:66
    \n-
    int nGlobalEntity_
    Global number of entities, i.e. number of entities without rendundant entities on interprocessor boun...
    Definition globalindexset.hh:506
    \n-
    Index index(const Entity &entity) const
    Return the global index of a given entity.
    Definition globalindexset.hh:453
    \n-
    unsigned int codim_
    Codimension of the entities that we hold indices for.
    Definition globalindexset.hh:503
    \n-
    IndexMap localGlobalMap_
    Definition globalindexset.hh:508
    \n-
    unsigned int size(unsigned int codim) const
    Return the total number of entities over all processes that we have indices for.
    Definition globalindexset.hh:494
    \n-
    GlobalIndexSet(const GridView &gridview, int codim)
    Constructor for a given GridView.
    Definition globalindexset.hh:326
    \n-
    const GridView gridview_
    Definition globalindexset.hh:500
    \n-
    Helper class to provide access to subentity PartitionTypes with a run-time codimension.
    Definition globalindexset.hh:75
    \n-
    static PartitionType get(const Entity &entity, int codim, int i)
    Get PartitionType of the i-th subentity of codimension 'codim' of entity 'entity'.
    Definition globalindexset.hh:78
    \n-
    static PartitionType get(const Entity &entity, int codim, int i)
    Definition globalindexset.hh:90
    \n+
    5#ifndef DUNE_GRIDTYPE_HH
    \n+
    6#define DUNE_GRIDTYPE_HH
    \n+
    7
    \n+
    17#ifndef HEADERCHECK
    \n+
    18
    \n+
    19// NOGRID is used to specify that no default was set during configure
    \n+
    20// If NOGRID and HAVE_GRIDTYPE are both not set then no grid was selected
    \n+
    21// and an error is produced
    \n+
    22#if defined NOGRID
    \n+
    23 #if ! HAVE_GRIDTYPE
    \n+
    24 #error "No grid type selected, use GRIDTYPE=..."
    \n+
    25 #endif
    \n+
    26#else
    \n+
    27 #if ! HAVE_GRIDTYPE
    \n+
    28 #error "No grid type selected, typo in GRIDTYPE=...?"
    \n+
    29 #endif
    \n+
    30#endif
    \n+
    31
    \n+
    32#endif // HEADERCHECK
    \n+
    33
    \n+
    34#endif // DUNE_GRIDTYPE_HH
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,602 +1,37 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-globalindexset.hh\n+gridtype.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-35#ifndef DUNE_GRID_UTILITY_GLOBALINDEXSET_HH\n-36#define DUNE_GRID_UTILITY_GLOBALINDEXSET_HH\n-37\n-39#include \n-40#include \n-41#include \n-42#include \n-43#include \n-44#include \n-45#include \n-46\n-48#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-49#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh>\n-50\n-52#if HAVE_MPI\n-53 #include \n-54#endif\n-55\n-56namespace _\bD_\bu_\bn_\be\n-57{\n-58\n-61 template\n-_\b6_\b2 class _\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-63 {\n-64 public:\n-_\b6_\b6 typedef int _\bI_\bn_\bd_\be_\bx;\n-67\n-73 template \n-_\b7_\b4 struct _\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-75 {\n-_\b7_\b8 static _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bg_\be_\bt(const _\bE_\bn_\bt_\bi_\bt_\by& entity, int codim, int i)\n-79 {\n-80 if (codim==Codim)\n-81 return entity.template subEntity(i)._\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be();\n-82 else\n-83 return _\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bE_\bn_\bt_\bi_\bt_\by_\b,_\bC_\bo_\bd_\bi_\bm_\b-_\b1_\b>_\b:_\b:_\bg_\be_\bt(entity, codim, i);\n-84 }\n-85 };\n-86\n-87 template \n-_\b8_\b8 struct _\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br<_\bE_\bn_\bt_\bi_\bt_\by,0>\n-89 {\n-_\b9_\b0 static _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bg_\be_\bt(const _\bE_\bn_\bt_\bi_\bt_\by& entity, int codim, int i)\n-91 {\n-92 return entity.template subEntity<0>(i)._\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be();\n-93 }\n-94 };\n-95\n-96 private:\n-98 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd _\bG_\br_\bi_\bd;\n-99\n-100 typedef typename GridView::Grid::GlobalIdSet GlobalIdSet;\n-101 typedef typename GridView::Grid::GlobalIdSet::IdType IdType;\n-102 typedef typename GridView::Traits::template Codim<0>::Iterator Iterator;\n-103\n-104 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn Communication;\n-105\n-106 typedef std::map MapId2Index;\n-107 typedef std::map IndexMap;\n-108\n-109 /\n-*********************************************************************************************/\n-110 /* calculate unique partitioning for all entities of a given codim in a\n-given GridView, */\n-111 /* assuming they all have the same geometry, i.e. codim, type */\n-112 /\n-*********************************************************************************************/\n-113 class UniqueEntityPartition\n-114 {\n-115 private:\n-116 /* A DataHandle class to calculate the minimum of a std::vector which is\n-accompanied by an index set */\n-117 template // mapper type and vector type\n-118 class MinimumExchange\n-119 : public _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF,typename V::\n-value_type>\n-120 {\n-121 public:\n-123 typedef typename V::value_type DataType;\n-124\n-126 bool contains (int dim, unsigned int codim) const\n-127 {\n-128 return codim==indexSetCodim_;\n-129 }\n-130\n-132 bool fixedSize (int dim, int codim) const\n-133 {\n-134 return true ;\n-135 }\n-136\n-140 template\n-141 size_t _\bs_\bi_\bz_\be (EntityType& e) const\n-142 {\n-143 return 1 ;\n-144 }\n-145\n-147 template\n-148 void _\bg_\ba_\bt_\bh_\be_\br (MessageBuffer& buff, const EntityType& e) const\n-149 {\n-150 buff.write(v_[indexset_.index(e)]);\n-151 }\n-152\n-157 template\n-158 void _\bs_\bc_\ba_\bt_\bt_\be_\br (MessageBuffer& buff, const EntityType& e, size_t n)\n-159 {\n-160 DataType x;\n-161 buff.read(x);\n-162 if (x>=0) // other is -1 means, he does not want it\n-163 v_[indexset_.index(e)] = std::min(x,v_[indexset_.index(e)]);\n-164 }\n-165\n-167 MinimumExchange (const IS& indexset, V& v, unsigned int indexSetCodim)\n-168 : indexset_(indexset),\n-169 v_(v),\n-170 indexSetCodim_(indexSetCodim)\n-171 {}\n-172\n-173 private:\n-174 const IS& indexset_;\n-175 V& v_;\n-176 unsigned int indexSetCodim_;\n-177 };\n-178\n-179 public:\n-182 UniqueEntityPartition (const GridView& gridview, unsigned int codim)\n-183 : assignment_(gridview._\bs_\bi_\bz_\be(codim))\n-184 {\n-186 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt IndexSet;\n-187\n-188 // assign own rank to entities that I might have\n-189 for (auto it = gridview.template begin<0>(); it!=gridview.template end<0>\n-(); ++it)\n-190 for (unsigned int i=0; isubEntities(codim); i++)\n-191 {\n-192 // Evil hack: I need to call subEntity, which needs the entity codimension\n-as a static parameter.\n-193 // However, we only have it as a run-time parameter.\n-194 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be subPartitionType = SubPartitionTypeProvider::Entity, _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn>::get(*it,codim,i);\n-195\n-196 assignment_[gridview.indexSet().subIndex(*it,i,codim)]\n-197 = ( subPartitionType==_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by or subPartitionType==_\bD_\bu_\bn_\be_\b:_\b:\n-_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by )\n-198 ? gridview.comm().rank() // set to own rank\n-199 : - 1; // it is a ghost entity, I will not possibly own it.\n-200 }\n-201\n-203 MinimumExchange > dh(gridview.indexSet\n-(),assignment_,codim);\n-204\n-205 gridview.communicate(dh,_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,_\bD_\bu_\bn_\be_\b:_\b:\n-_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn);\n-206 }\n-207\n-209 int owner(size_t i)\n-210 {\n-211 return assignment_[i];\n-212 }\n-213\n-215 size_t numOwners(int rank) const\n-216 {\n-217 return std::count(assignment_.begin(), assignment_.end(), rank);\n-218 }\n-219\n-220 private:\n-221 std::vector assignment_;\n-222 };\n-223\n-224 private:\n-225 /* A DataHandle class to communicate the global index from the\n-226 * owning to the non-owning entity; the class is based on the\n-MinimumExchange\n-227 * class in the parallelsolver.hh header file.\n-228 */\n-229 class IndexExchange\n-230 : public _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF\n-231 {\n-232 public:\n-234 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (int dim, unsigned int codim) const\n-235 {\n-236 return codim==indexSetCodim_;\n-237 }\n-238\n-240 bool fixedSize (int dim, int codim) const\n-241 {\n-242 return true;\n-243 }\n-244\n-249 template\n-250 size_t _\bs_\bi_\bz_\be (EntityType& e) const\n-251 {\n-252 return 1;\n-253 }\n-254\n-256 template\n-257 void _\bg_\ba_\bt_\bh_\be_\br (MessageBuffer& buff, const EntityType& e) const\n-258 {\n-259 IdType id=globalidset_.id(e);\n-260\n-261 if (indexSetCodim_==0)\n-262 buff.write(mapid2entity_[id]);\n-263 else\n-264 buff.write((*mapid2entity_.find(id)).second);\n-265 }\n-266\n-271 template\n-272 void _\bs_\bc_\ba_\bt_\bt_\be_\br (MessageBuffer& buff, const EntityType& entity, size_t n)\n-273 {\n-274 _\bI_\bn_\bd_\be_\bx x;\n-275 buff.read(x);\n-276\n-284 if(x >= 0) {\n-285 const IdType id = globalidset_.id(entity);\n-286\n-287 if (indexSetCodim_==0)\n-288 mapid2entity_[id] = x;\n-289 else\n-290 {\n-291 mapid2entity_.erase(id);\n-292 mapid2entity_.insert(std::make_pair(id,x));\n-293\n-294 const _\bI_\bn_\bd_\be_\bx lindex = indexSet_.index(entity);\n-295 localGlobalMap_[lindex] = x;\n-296 }\n-297 }\n-298 }\n-299\n-301 IndexExchange (const GlobalIdSet& globalidset, MapId2Index& mapid2entity,\n-302 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& localIndexSet, IndexMap& localGlobal,\n-303 unsigned int indexSetCodim)\n-304 : globalidset_(globalidset),\n-305 mapid2entity_(mapid2entity),\n-306 indexSet_(localIndexSet),\n-307 localGlobalMap_(localGlobal),\n-308 indexSetCodim_(indexSetCodim)\n-309 {}\n-310\n-311 private:\n-312 const GlobalIdSet& globalidset_;\n-313 MapId2Index& mapid2entity_;\n-314\n-315 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& indexSet_;\n-316 IndexMap& localGlobalMap_;\n-317 unsigned int indexSetCodim_;\n-318 };\n-319\n-320 public:\n-_\b3_\b2_\b6 _\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt(const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw& gridview, int codim)\n-327 : _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_(gridview),\n-328 _\bc_\bo_\bd_\bi_\bm_\b_(codim)\n-329 {\n-330 int rank = gridview._\bc_\bo_\bm_\bm().rank();\n-331 int _\bs_\bi_\bz_\be = gridview._\bc_\bo_\bm_\bm().size();\n-332\n-333 const typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt& indexSet = gridview._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt();\n-334\n-335 std::unique_ptr uniqueEntityPartition;\n-336 if (_\bc_\bo_\bd_\bi_\bm_\b_!=0)\n-337 uniqueEntityPartition = std::make_unique\n-(gridview,_\bc_\bo_\bd_\bi_\bm_\b_);\n-338\n-339 int nLocalEntity = (_\bc_\bo_\bd_\bi_\bm_\b_==0)\n-340 ? std::distance(gridview.template begin<0, Dune::Interior_Partition>(),\n-gridview.template end<0, Dune::Interior_Partition>())\n-341 : uniqueEntityPartition->numOwners(rank);\n-342\n-343 // Compute the global, non-redundant number of entities, i.e. the number of\n-entities in the set\n-344 // without double, aka. redundant entities, on the interprocessor boundary\n-via global reduce. */\n-345 _\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_ = gridview._\bc_\bo_\bm_\bm().template sum(nLocalEntity);\n-346\n-347 /* communicate the number of locally owned entities to all other processes\n-so that the respective offset\n-348 * can be calculated on the respective processor; we use the Dune mpi\n-communication facility\n-349 * for this; first, we gather the number of locally owned entities on the\n-root process and, second, we\n-350 * broadcast the array to all processes where the respective offset can be\n-calculated. */\n-351\n-352 std::vector offset(_\bs_\bi_\bz_\be);\n-353 std::fill(offset.begin(), offset.end(), 0);\n-354\n-356 _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().template allgather(&nLocalEntity, 1, offset.data());\n-357\n-358 int myoffset = 0;\n-359 for (int i=1; i();\n-iter!=_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_.template end<0>(); ++iter)\n-388 {\n-389 const IdType id = globalIdSet.id(*iter);\n-392 if (iter->partitionType() == _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by)\n-393 {\n-394 const _\bI_\bn_\bd_\be_\bx gindex = myoffset + globalcontrib;\n-396 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_[id] = gindex;\n-397 globalcontrib++;\n-398 }\n-399\n-401 else\n-402 {\n-403 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_[id] = -1;\n-404 }\n-405 }\n-406 }\n-407 else // if (codim==0) else\n-408 {\n-409 std::vector firstTime(_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bs_\bi_\bz_\be(_\bc_\bo_\bd_\bi_\bm_\b_));\n-410 std::fill(firstTime.begin(), firstTime.end(), true);\n-411\n-412 for(Iterator iter = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_.template begin<0>();iter!=_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_.template\n-end<0>(); ++iter)\n-413 {\n-414 for (size_t i=0; isubEntities(_\bc_\bo_\bd_\bi_\bm_\b_); i++)\n-415 {\n-416 IdType id=globalIdSet.subId(*iter,i,_\bc_\bo_\bd_\bi_\bm_\b_);\n-417\n-418 _\bI_\bn_\bd_\be_\bx idx = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().subIndex(*iter,i,_\bc_\bo_\bd_\bi_\bm_\b_);\n-419\n-420 if (!firstTime[idx] )\n-421 continue;\n-422\n-423 firstTime[idx] = false;\n-424\n-425 if (uniqueEntityPartition->owner(idx) == rank)\n-426 {\n-427 const _\bI_\bn_\bd_\be_\bx gindex = myoffset + globalcontrib;\n-428 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.insert(std::make_pair(id,gindex));\n-430 const _\bI_\bn_\bd_\be_\bx lindex = idx;\n-431 _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_[lindex] = gindex;\n-432\n-433 globalcontrib++;\n-434 }\n-435 else\n-436 {\n-437 _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.insert(std::make_pair(id,-1));\n-438 }\n-439 }\n-440\n-441 }\n-442 }\n-443\n-444 // 2nd stage of global index calculation: communicate global index for non-\n-owned entities\n-445\n-446 // Create the data handle and communicate.\n-447 IndexExchange dataHandle\n-(globalIdSet,_\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_,indexSet,_\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_,_\bc_\bo_\bd_\bi_\bm_\b_);\n-448 _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be(dataHandle, _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be, _\bD_\bu_\bn_\be_\b:_\b:\n-_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn);\n-449 }\n-450\n-452 template \n-_\b4_\b5_\b3 _\bI_\bn_\bd_\be_\bx _\bi_\bn_\bd_\be_\bx(const _\bE_\bn_\bt_\bi_\bt_\by& entity) const\n-454 {\n-455 if (_\bc_\bo_\bd_\bi_\bm_\b_==0)\n-456 {\n-458 const GlobalIdSet& globalIdSet = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bg_\br_\bi_\bd().globalIdSet();\n-459 const IdType id = globalIdSet.id(entity);\n-460 const _\bI_\bn_\bd_\be_\bx gindex = _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.find(id)->second;\n-462 return gindex;\n-463 }\n-464 else\n-465 return _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_.find(_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().index(entity))->second;\n-466 }\n-467\n-473 template \n-_\b4_\b7_\b4 _\bI_\bn_\bd_\be_\bx _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(const _\bE_\bn_\bt_\bi_\bt_\by& entity, unsigned int i, unsigned int codim)\n-const\n-475 {\n-476 if (_\bc_\bo_\bd_\bi_\bm_\b_==0)\n-477 {\n-479 const GlobalIdSet& globalIdSet = _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bg_\br_\bi_\bd().globalIdSet();\n-480 const IdType id = globalIdSet.subId(entity,i,codim);\n-481 const _\bI_\bn_\bd_\be_\bx gindex = _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_.find(id)->second;\n-483 return gindex;\n-484 }\n-485 else\n-486 return _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_.find(_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().subIndex(entity,i,codim))-\n->second;\n-487 }\n-488\n-_\b4_\b9_\b4 unsigned int _\bs_\bi_\bz_\be(unsigned int codim) const\n-495 {\n-496 return (_\bc_\bo_\bd_\bi_\bm_\b_==codim) ? _\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_ : 0;\n-497 }\n-498\n-499 protected:\n-_\b5_\b0_\b0 const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_;\n-501\n-_\b5_\b0_\b3 unsigned int _\bc_\bo_\bd_\bi_\bm_\b_;\n-504\n-_\b5_\b0_\b6 int _\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_;\n-507\n-_\b5_\b0_\b8 IndexMap _\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_;\n-509\n-_\b5_\b1_\b2 MapId2Index _\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_;\n-513 };\n-514\n-515} // namespace Dune\n-516\n-517#endif /* DUNE_GRID_UTILITY_GLOBALINDEXSET_HH */\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n-_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n-Describes the parallel communication interface class for MessageBuffers and\n-DataHandles.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType\n-Attributes used in the generic overlap model.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ InteriorEntity\n-all interior entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ BorderEntity\n-on boundary between interior and overlap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n-@ ForwardCommunication\n-communicate as given in InterfaceType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-@ All_All_Interface\n-send all and receive all entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const IndexSet & indexSet() const\n-obtain the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd\n-Traits::Grid Grid\n-type of the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bg_\br_\bi_\bd\n-const Grid & grid() const\n-obtain a const reference to the underlying hierarchic grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:180\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Traits::IndexSet IndexSet\n-type of the index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int codim) const\n-obtain number of entities in a given codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\be\n-auto communicate(CommDataHandleIF< DataHandleImp, DataType > &data,\n-InterfaceType iftype, CommunicationDirection dir) const\n-Communicate data on this view.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:299\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bo_\bm_\bm\n-const Communication & comm() const\n-obtain communication object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:280\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n-_\bD_\bu_\bn_\be\n-Include standard header files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF\n-CommDataHandleIF describes the features of a data handle for communication in\n-parallel runs using the...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bM_\bi_\bn_\bi_\bm_\bu_\bm_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b<_\b _\bI_\bS_\b,_\b _\bV_\b _\b>_\b,_\b _\bV_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\bs_\bc_\ba_\bt_\bt_\be_\br\n-void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)\n-unpack data from message buffer to user.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bI_\bn_\bd_\be_\bx_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b,_\b _\bI_\bn_\bd_\be_\bx_\b _\b>_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(int dim, int codim) const\n-returns true if data for given valid codim should be communicated\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bM_\bi_\bn_\bi_\bm_\bu_\bm_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b<_\b _\bI_\bS_\b,_\b _\bV_\b _\b>_\b,_\b _\bV_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-size_t size(const EntityType &e) const\n-how many objects of type DataType have to be sent for a given entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bD_\ba_\bt_\ba_\bH_\ba_\bn_\bd_\bl_\be_\bI_\bF_\b<_\b _\bM_\bi_\bn_\bi_\bm_\bu_\bm_\bE_\bx_\bc_\bh_\ba_\bn_\bg_\be_\b<_\b _\bI_\bS_\b,_\b _\bV_\b _\b>_\b,_\b _\bV_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be_\b _\b>_\b:_\b:_\bg_\ba_\bt_\bh_\be_\br\n-void gather(MessageBufferImp &buff, const EntityType &e) const\n-pack data from user to message buffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn datahandleif.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-Partition type of this entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Calculate globally unique index over all processes in a Dune grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-Index subIndex(const Entity &entity, unsigned int i, unsigned int codim) const\n-Return the global index of a subentity of a given entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:474\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\b_\n-MapId2Index globalIndex_\n-Stores global index of entities with entity's globally unique id as key.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:512\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-The number type used for global indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bn_\bG_\bl_\bo_\bb_\ba_\bl_\bE_\bn_\bt_\bi_\bt_\by_\b_\n-int nGlobalEntity_\n-Global number of entities, i.e. number of entities without rendundant entities\n-on interprocessor boun...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:506\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-Index index(const Entity &entity) const\n-Return the global index of a given entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:453\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\b_\n-unsigned int codim_\n-Codimension of the entities that we hold indices for.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:503\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bp_\b_\n-IndexMap localGlobalMap_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:508\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size(unsigned int codim) const\n-Return the total number of entities over all processes that we have indices\n-for.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:494\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-GlobalIndexSet(const GridView &gridview, int codim)\n-Constructor for a given GridView.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:326\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b_\n-const GridView gridview_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:500\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-Helper class to provide access to subentity PartitionTypes with a run-time\n-codimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bg_\be_\bt\n-static PartitionType get(const Entity &entity, int codim, int i)\n-Get PartitionType of the i-th subentity of codimension 'codim' of entity\n-'entity'.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bS_\bu_\bb_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\b0_\b _\b>_\b:_\b:_\bg_\be_\bt\n-static PartitionType get(const Entity &entity, int codim, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn globalindexset.hh:90\n+5#ifndef DUNE_GRIDTYPE_HH\n+6#define DUNE_GRIDTYPE_HH\n+7\n+17#ifndef HEADERCHECK\n+18\n+19// NOGRID is used to specify that no default was set during configure\n+20// If NOGRID and HAVE_GRIDTYPE are both not set then no grid was selected\n+21// and an error is produced\n+22#if defined NOGRID\n+23 #if ! HAVE_GRIDTYPE\n+24 #error \"No grid type selected, use GRIDTYPE=...\"\n+25 #endif\n+26#else\n+27 #if ! HAVE_GRIDTYPE\n+28 #error \"No grid type selected, typo in GRIDTYPE=...?\"\n+29 #endif\n+30#endif\n+31\n+32#endif // HEADERCHECK\n+33\n+34#endif // DUNE_GRIDTYPE_HH\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01007.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01007.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridinfo-gmsh-main.hh File Reference\n+dune-grid: tensorgridfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -69,55 +69,53 @@\n \n
    \n \n
    \n \n
    \n-
    gridinfo-gmsh-main.hh File Reference
    \n+ \n+
    tensorgridfactory.hh File Reference
    \n
    \n
    \n \n-

    Generic main() function for printing information about a mesh read from a .msh-file. \n+

    This file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series. \n More...

    \n-
    #include <cstddef>
    \n-#include <cstdlib>
    \n-#include <exception>
    \n-#include <iostream>
    \n+
    #include <array>
    \n #include <memory>
    \n-#include <ostream>
    \n-#include <sstream>
    \n-#include <stdexcept>
    \n-#include <string>
    \n #include <vector>
    \n-#include <dune/common/classname.hh>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n-#include <dune/grid/io/file/gmshreader.hh>
    \n-#include <dune/grid/utility/gridinfo.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/grid/common/gridfactory.hh>
    \n+#include <dune/grid/yaspgrid.hh>
    \n+#include <dune/grid/utility/multiindex.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::TensorGridFactory< Grid >
     A factory class for conveniently creating tensorproduct grids. More...
     
    class  Dune::TensorGridFactoryCreator< Grid >
     
    class  Dune::TensorGridFactoryCreator< YaspGrid< dim, TensorProductCoordinates< ctype, dim > > >
     
    \n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Generic main() function for printing information about a mesh read from a .msh-file.

    \n-
    Author
    J\u00f6 Fahlke jorri.nosp@m.t@jo.nosp@m.rrit..nosp@m.de
    \n-
    Date
    2011
    \n-

    This header contains a generic main() function. To use it for your grid, write a .cc file like this:

    #ifdef HAVE_CONFIG_H
    \n-
    #include "config.h"
    \n-
    #endif
    \n-
    \n-
    #include <string>
    \n-
    \n-
    #include <dune/grid/mygrid.hh>
    \n-
    \n-
    const std::string programName = "dune-gridinfo-gmsh-mygrid-3d";
    \n-
    typedef Dune::MyGrid<3> Grid;
    \n-
    \n-\n-
    Generic main() function for printing information about a mesh read from a .msh-file.
    \n-

    Write an automake target for your program as usual. No special libraries are needed for you program, beyond what is needed for the grid in question.

    \n+

    This file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series.

    \n+

    The grid generation process is implemented for unstructured grids and for YaspGrid.

    \n+
    Author
    Dominic Kempf
    \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,50 +1,47 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-gridinfo-gmsh-main.hh File Reference\n-Generic _\bm_\ba_\bi_\bn_\b(_\b) function for printing information about a mesh read from a .msh-\n-file. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+tensorgridfactory.hh File Reference\n+This file provides a factory class for tensorproduct grids. This is a\n+collection of methods to generate monotonous sequences as needed for a\n+tensorproduct grid. Apart from easy ones for locally equidistant grids, there\n+are also more involved methods like splitting a range according to a geometric\n+series. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n #include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0 A factory class for conveniently creating tensorproduct grids. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,\n+ _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b _\b>_\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 Include standard header files.\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-Generic _\bm_\ba_\bi_\bn_\b(_\b) function for printing information about a mesh read from a .msh-\n-file.\n+This file provides a factory class for tensorproduct grids. This is a\n+collection of methods to generate monotonous sequences as needed for a\n+tensorproduct grid. Apart from easy ones for locally equidistant grids, there\n+are also more involved methods like splitting a range according to a geometric\n+series.\n+The grid generation process is implemented for unstructured grids and for\n+YaspGrid.\n Author\n- J\u00c3\u00b6 Fahlke _\bj_\bo_\br_\br_\bi_\b._\bn_\bo_\bs_\bp_\b@_\bm_\b._\bt_\b@_\bj_\bo_\b._\bn_\bo_\bs_\bp_\b@_\bm_\b._\br_\br_\bi_\bt_\b._\b._\bn_\bo_\bs_\bp_\b@_\bm_\b._\bd_\be\n- Date\n- 2011\n-This header contains a generic _\bm_\ba_\bi_\bn_\b(_\b) function. To use it for your grid, write\n-a .cc file like this:\n-#ifdef HAVE_CONFIG_H\n-#include \"config.h\"\n-#endif\n-#include \n-#include \n-const std::string programName = \"dune-gridinfo-gmsh-mygrid-3d\";\n-typedef Dune::MyGrid<3> Grid;\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b-_\bg_\bm_\bs_\bh_\b-_\bm_\ba_\bi_\bn_\b._\bh_\bh>\n-_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b-_\bg_\bm_\bs_\bh_\b-_\bm_\ba_\bi_\bn_\b._\bh_\bh\n-Generic main() function for printing information about a mesh read from a .msh-\n-file.\n-Write an automake target for your program as usual. No special libraries are\n-needed for you program, beyond what is needed for the grid in question.\n+ Dominic Kempf\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01007_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01007_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: gridinfo-gmsh-main.hh Source File\n+dune-grid: tensorgridfactory.hh Source File\n \n \n \n \n \n \n \n@@ -74,223 +74,403 @@\n \n
    \n \n
    \n
    \n
    \n-
    gridinfo-gmsh-main.hh
    \n+
    tensorgridfactory.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    4// vi: set et ts=4 sw=2 sts=2:
    \n+
    3#ifndef DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH
    \n+
    4#define DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH
    \n
    5
    \n-
    6#ifndef DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH
    \n-
    7#define DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n-
    10#include <cstdlib>
    \n-
    11#include <exception>
    \n-
    12#include <iostream>
    \n-
    13#include <memory>
    \n-
    14#include <ostream>
    \n-
    15#include <sstream>
    \n-
    16#include <stdexcept>
    \n-
    17#include <string>
    \n-
    18#include <vector>
    \n-
    19
    \n-
    20#include <dune/common/classname.hh>
    \n-
    21#include <dune/common/exceptions.hh>
    \n-
    22#include <dune/common/parallel/mpihelper.hh>
    \n+
    20#include<array>
    \n+
    21#include<memory>
    \n+
    22#include<vector>
    \n
    23
    \n-\n-\n-
    26
    \n-
    54#ifdef HEADERCHECK
    \n-
    55// define so headercheck will run
    \n-
    56const std::string programName = "headercheck";
    \n-
    57#endif // HEADERCHECK
    \n+
    24#include <dune/common/fvector.hh>
    \n+\n+
    26#include <dune/grid/yaspgrid.hh>
    \n+\n+
    28
    \n+
    29namespace Dune
    \n+
    30{
    \n+
    31 // forward declaration of TensorGridFactoryCreator, which is the real factory
    \n+
    32 // that should be specialized for each grid.
    \n+
    33 template<typename Grid>
    \n+
    34 class TensorGridFactoryCreator;
    \n+
    35
    \n+
    40 template<typename Grid>
    \n+
    \n+\n+
    42 {
    \n+
    43 public:
    \n+
    44 typedef typename Grid::Traits::Communication Comm;
    \n+
    45 typedef typename Grid::ctype ctype;
    \n+
    46 static const int dim = Grid::dimension;
    \n+
    47
    \n+
    \n+
    48 std::unique_ptr<Grid> createGrid(Comm comm = Comm())
    \n+
    49 {
    \n+
    50 TensorGridFactoryCreator<Grid> creator(*this);
    \n+
    51 return creator.createGrid(comm);
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    54 std::array<std::vector<ctype> , dim> coords() const
    \n+
    55 {
    \n+
    56 return _coords;
    \n+
    57 }
    \n+
    \n
    58
    \n-
    59#ifndef DOXYGEN
    \n-
    60namespace {
    \n-
    61 // anonymous namespace so we don't freakishly conflict with another usage()
    \n-
    62 // function that may be linked in from another compilation unit.
    \n-
    63 void usage(std::ostream &stream) {
    \n-
    64 stream << "USAGE:\\n"
    \n-
    65 << " " << programName << " [-R REFINES] GRIDFILE\\n"
    \n-
    66 << "\\n"
    \n-
    67 << "PARAMETERS:\\n"
    \n-
    68 << " -R REFINES How many global refines to do after reading\\n"
    \n-
    69 << " (default: 0)\\n"
    \n-
    70 << " GRIDFILE Name of the .msh file to read the grid from.\\n"
    \n-
    71 << std::flush;
    \n-
    72 }
    \n-
    73
    \n-
    74 bool prefix_match(const std::string &prefix, const std::string &str)
    \n-
    75 {
    \n-
    76 return str.compare(0,prefix.size(), prefix) == 0;
    \n-
    77 }
    \n-
    78
    \n-
    79 void error_argument_required(const std::string &opt) {
    \n-
    80 std::cerr << "Error: option " << opt << " requires argument\\n";
    \n-
    81 usage(std::cerr);
    \n-
    82 std::exit(1);
    \n-
    83 }
    \n+
    \n+
    60 std::vector<ctype>& operator[](std::size_t d)
    \n+
    61 {
    \n+
    62 return _coords[d];
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+
    66 const std::vector<ctype>& operator[](std::size_t d) const
    \n+
    67 {
    \n+
    68 return _coords[d];
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    \n+
    79 void setStart (int d, ctype value)
    \n+
    80 {
    \n+
    81 _coords[d].resize(1);
    \n+
    82 _coords[d][0] = value;
    \n+
    83 }
    \n+
    \n
    84
    \n-
    85 void error_unknown_option(const std::string &opt) {
    \n-
    86 std::cerr << "Error: unknown option: " << opt << "\\n";
    \n-
    87 usage(std::cerr);
    \n-
    88 std::exit(1);
    \n-
    89 }
    \n-
    90
    \n-
    91 void error_parsing_optarg(const std::string &opt, const std::string &error) {
    \n-
    92 std::cerr << "Error: option " << opt << ": " << error << "\\n";
    \n-
    93 usage(std::cerr);
    \n-
    94 std::exit(1);
    \n-
    95 }
    \n-
    96
    \n-
    97 template<class T>
    \n-
    98 void parse(const std::string &arg, T &val) {
    \n-
    99 std::istringstream s(arg);
    \n-
    100 s >> val;
    \n-
    101 bool good = !s.fail();
    \n-
    102 if(good) {
    \n-
    103 char dummy;
    \n-
    104 s >> dummy;
    \n-
    105 good = s.fail() && s.eof();
    \n-
    106 }
    \n-
    107 if(!good) {
    \n-
    108 std::ostringstream s;
    \n-
    109 s << "Can't parse \\"" << arg << "\\" as a " << Dune::className(val);
    \n-
    110 throw std::runtime_error(s.str());
    \n-
    111 }
    \n-
    112 }
    \n-
    113
    \n-
    114 std::size_t refines = 0;
    \n-
    115 std::string gridFileName = "";
    \n+
    \n+
    93 void fillIntervals (int d, int n, ctype h)
    \n+
    94 {
    \n+
    95 emptyCheck (d);
    \n+
    96 for (int i = 0; i < n; i++)
    \n+
    97 _coords[d].push_back (_coords[d].back () + h);
    \n+
    98 }
    \n+
    \n+
    99
    \n+
    \n+
    108 void fillRange (int d, int n, ctype end)
    \n+
    109 {
    \n+
    110 emptyCheck (d);
    \n+
    111 const ctype h = (end - _coords[d].back ()) / n;
    \n+
    112 for (int i = 0; i < n - 1; i++)
    \n+
    113 _coords[d].push_back (_coords[d].back () + h);
    \n+
    114 _coords[d].push_back (end);
    \n+
    115 }
    \n+
    \n
    116
    \n-
    117 void parseOptions(int argc, char **argv) {
    \n-
    118 std::vector<std::string> params;
    \n-
    119 for(++argv; *argv; ++argv) {
    \n-
    120 std::string arg = *argv;
    \n-
    121 if(prefix_match("-", arg)) {
    \n-
    122 std::string opt = arg;
    \n-
    123 if(opt == "--") {
    \n-
    124 for(++argv; *argv; ++argv)
    \n-
    125 params.push_back(*argv);
    \n-
    126 break;
    \n-
    127 }
    \n-
    128 else if(prefix_match("-h", opt) || prefix_match("-?", opt) ||
    \n-
    129 opt == "--help")
    \n-
    130 {
    \n-
    131 usage(std::cout);
    \n-
    132 std::exit(0);
    \n-
    133 }
    \n-
    134 else if(opt == "-R" || opt == "--global-refines") {
    \n-
    135 ++argv;
    \n-
    136 if(!*argv) error_argument_required(opt);
    \n-
    137 try { parse(*argv, refines); }
    \n-
    138 catch(const std::runtime_error &e)
    \n-
    139 { error_parsing_optarg(opt, e.what()); }
    \n-
    140 }
    \n-
    141 else if(prefix_match("-R", opt)) {
    \n-
    142 try { parse(*argv+std::strlen("-R"), refines); }
    \n-
    143 catch(const std::runtime_error &e)
    \n-
    144 { error_parsing_optarg(opt, e.what()); }
    \n-
    145 }
    \n-
    146 else if(prefix_match("--global-refines=", opt)) {
    \n-
    147 try { parse(*argv+std::strlen("--global-refines="), refines); }
    \n-
    148 catch(const std::runtime_error &e)
    \n-
    149 { error_parsing_optarg(opt, e.what()); }
    \n-
    150 }
    \n-
    151 else
    \n-
    152 error_unknown_option(opt);
    \n-
    153 }
    \n-
    154 else
    \n-
    155 params.push_back(arg);
    \n+
    \n+
    125 void fillUntil (int d, ctype h, ctype end)
    \n+
    126 {
    \n+
    127 emptyCheck (d);
    \n+
    128 while (_coords[d].back () < end)
    \n+
    129 _coords[d].push_back (_coords[d].back () + h);
    \n+
    130 }
    \n+
    \n+
    131
    \n+
    \n+
    144 void geometricFillIntervals (int d, int n, ctype ratio, ctype h0 =
    \n+
    145 static_cast<ctype> (0))
    \n+
    146 {
    \n+
    147 emptyCheck (d);
    \n+
    148 ctype h = h0;
    \n+
    149 if (h0 == static_cast<ctype>(0))
    \n+
    150 h = lastInterval (d) * ratio;
    \n+
    151 for (int i = 0; i < n; i++)
    \n+
    152 {
    \n+
    153 _coords[d].push_back (_coords[d].back () + h);
    \n+
    154 h *= ratio;
    \n+
    155 }
    \n
    156 }
    \n-
    157 // check command line arguments
    \n-
    158 if(params.size() < 1) {
    \n-
    159 std::cerr << "Need name of a .msh file to read.\\n"
    \n-
    160 << std::endl;
    \n-
    161 usage(std::cerr);
    \n-
    162 std::exit(1);
    \n-
    163 }
    \n-
    164 if(params.size() > 1) {
    \n-
    165 std::cerr << "Too many arguments.\\n"
    \n-
    166 << std::endl;
    \n-
    167 usage(std::cerr);
    \n-
    168 std::exit(1);
    \n-
    169 }
    \n-
    170 gridFileName = params[0];
    \n-
    171 }
    \n-
    172}
    \n-
    173
    \n-
    174#ifndef HEADERCHECK
    \n-
    175int main(int argc, char **argv) {
    \n-
    176 try {
    \n-
    177 const Dune::MPIHelper &mpiHelper = Dune::MPIHelper::instance(argc, argv);
    \n-
    178
    \n-
    179 // check that we are not run through mpirun
    \n-
    180 if(mpiHelper.size() > 1) {
    \n-
    181 if(mpiHelper.rank() == 0)
    \n-
    182 std::cerr << programName << ": Sorry, this program works only in "
    \n-
    183 << "serial." << std::endl;
    \n-
    184 return 1;
    \n-
    185 }
    \n-
    186
    \n-
    187 parseOptions(argc, argv);
    \n-
    188
    \n-
    189 // read grid
    \n-
    190 typedef Dune::GmshReader<Grid> Reader;
    \n-
    191 std::shared_ptr<Grid> gridp(Reader::read(gridFileName));
    \n-
    192 gridp->globalRefine(refines);
    \n-
    193
    \n-
    194 // collect information
    \n-\n-
    196 Dune::fillGridViewInfoSerial(gridp->leafGridView(), gridViewInfo);
    \n-
    197
    \n-
    198 // print it
    \n-
    199 std::cout << gridViewInfo << std::flush;
    \n-
    200 }
    \n-
    201 catch(const std::exception &e) {
    \n-
    202 std::cerr << "Caught exception of type " << Dune::className(e)
    \n-
    203 << std::endl
    \n-
    204 << "e.what(): " << e.what() << std::endl;
    \n-
    205 throw;
    \n-
    206 }
    \n-
    207 catch(const Dune::Exception &e) {
    \n-
    208 std::cerr << "Caught exception of type " << Dune::className(e)
    \n-
    209 << std::endl
    \n-
    210 << "Exception message: " << e << std::endl;
    \n-
    211 throw;
    \n-
    212 }
    \n-
    213 catch(const std::string &s) {
    \n-
    214 std::cerr << "Caught exception of type " << Dune::className(s)
    \n-
    215 << std::endl
    \n-
    216 << "Exception message: " << s << std::endl;
    \n-
    217 throw;
    \n-
    218 }
    \n-
    219 catch(...) {
    \n-
    220 std::cerr << "Caught exception of unknown type" << std::endl;
    \n-
    221 throw;
    \n-
    222 }
    \n-
    223}
    \n-
    224#endif // !HEADERCHECK
    \n-
    225#endif // !DOXYGEN
    \n-
    226
    \n-
    227#endif // DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH
    \n-
    int main(int argc, char **argv)
    Definition recipe-integration.cc:70
    \n-\n-
    void fillGridViewInfoSerial(const GV &gv, GridViewInfo< typename GV::ctype > &gridViewInfo)
    fill a GridViewInfo structure from a serial grid
    Definition utility/gridinfo.hh:214
    \n-
    Read Gmsh mesh file.
    Definition gmshreader.hh:807
    \n-
    structure to hold information about a certain GridView.
    Definition utility/gridinfo.hh:100
    \n-\n+
    \n+
    157
    \n+
    \n+
    170 void geometricFillUntil (int d, ctype ratio, ctype end, ctype h0 = static_cast<ctype> (0))
    \n+
    171 {
    \n+
    172 emptyCheck (d);
    \n+
    173 ctype h = h0;
    \n+
    174 if (h0 == static_cast<ctype>(0))
    \n+
    175 h = lastInterval (d) * ratio;
    \n+
    176 while (_coords[d].back () < end)
    \n+
    177 {
    \n+
    178 _coords[d].push_back (_coords[d].back () + h);
    \n+
    179 h *= ratio;
    \n+
    180 }
    \n+
    181 }
    \n+
    \n+
    182
    \n+
    \n+
    197 void geometricFillRange (int d, int n, ctype end, ctype h =
    \n+
    198 static_cast<ctype> (0),
    \n+
    199 bool first = true)
    \n+
    200 {
    \n+
    201 emptyCheck (d);
    \n+
    202 if (h < 1e-8)
    \n+
    203 h = lastInterval (d);
    \n+
    204 ctype ratio = newton (n, _coords[d].back (), end, h);
    \n+
    205 if (!first)
    \n+
    206 {
    \n+
    207 h = h * pow (ratio, n - 1);
    \n+
    208 ratio = 1 / ratio;
    \n+
    209 }
    \n+
    210 for (int i = 0; i < n - 1; i++)
    \n+
    211 {
    \n+
    212 _coords[d].push_back (_coords[d].back () + h);
    \n+
    213 h *= ratio;
    \n+
    214 }
    \n+
    215 _coords[d].push_back (end);
    \n+
    216 }
    \n+
    \n+
    217
    \n+
    \n+
    219 void print()
    \n+
    220 {
    \n+
    221 for (int i=0; i<dim; i++)
    \n+
    222 {
    \n+
    223 std::cout << "Container in direction " << i << ":" << std::endl << "Coordinates: ";
    \n+
    224 for (auto it = _coords[i].begin(); it != _coords[i].end(); ++it)
    \n+
    225 std::cout << *it << " ";
    \n+
    226 std::cout << std::endl << "Interval lengths: ";
    \n+
    227
    \n+
    228 std::vector<ctype> meshsize;
    \n+
    229 for (auto it = _coords[i].begin(); it != _coords[i].end()-1;)
    \n+
    230 {
    \n+
    231 meshsize.push_back(-1.*(*it));
    \n+
    232 ++it;
    \n+
    233 meshsize.back() += *it;
    \n+
    234 }
    \n+
    235
    \n+
    236 for (auto it = meshsize.begin(); it != meshsize.end(); ++it)
    \n+
    237 std::cout << *it << " ";
    \n+
    238 std::cout << std::endl << "Ratios between interval lengths: ";
    \n+
    239
    \n+
    240 std::vector<ctype> ratios;
    \n+
    241 for (auto it = meshsize.begin(); it != meshsize.end() - 1 ;)
    \n+
    242 ratios.push_back((1./(*it)) * *(++it));
    \n+
    243
    \n+
    244 for (auto it = ratios.begin(); it != ratios.end(); ++it)
    \n+
    245 std::cout << *it << " ";
    \n+
    246 std::cout << std::endl << std::endl << std::endl;
    \n+
    247 }
    \n+
    248 }
    \n+
    \n+
    249
    \n+
    250 private:
    \n+
    251 // check whether the ith component is empty and add a 0.0 entry if so
    \n+
    252 void emptyCheck (int i)
    \n+
    253 {
    \n+
    254 if (_coords[i].empty ())
    \n+
    255 _coords[i].push_back (static_cast<ctype> (0));
    \n+
    256 }
    \n+
    257
    \n+
    258 // returns the last interval length in direction d
    \n+
    259 ctype lastInterval (int d)
    \n+
    260 {
    \n+
    261 if (_coords[d].size () < 2)
    \n+
    262 DUNE_THROW(
    \n+
    263 GridError,
    \n+
    264 "Not enough elements in coordinate container to deduce interval length in TensorYaspFactory");
    \n+
    265 else
    \n+
    266 return _coords[d].back () - _coords[d][_coords[d].size () - 2];
    \n+
    267 }
    \n+
    268
    \n+
    272 ctype newton (int n, ctype x_s, ctype x_e, ctype h)
    \n+
    273 {
    \n+
    274 ctype m = (x_e - x_s) / h;
    \n+
    275 ctype xold = 0.0;
    \n+
    276 ctype xnew = x_e - x_s;
    \n+
    277 while (std::abs (xnew - xold) > 1E-8)
    \n+
    278 {
    \n+
    279 xold = xnew;
    \n+
    280 xnew = xold
    \n+
    281 - (-pow (xold, n) + m * xold - m + 1)
    \n+
    282 / (-n * pow (xold, n - 1) + m);
    \n+
    283 }
    \n+
    284 if (std::abs (xnew - 1) < 1E-6)
    \n+
    285 {
    \n+
    286 xold = x_e - x_s;
    \n+
    287 xnew = 0.0;
    \n+
    288 while (std::abs (xnew - xold) > 1E-8)
    \n+
    289 {
    \n+
    290 xold = xnew;
    \n+
    291 xnew = xold
    \n+
    292 - (-pow (xold, n) + m * xold - m + 1)
    \n+
    293 / (-n * pow (xold, n - 1) + m);
    \n+
    294 }
    \n+
    295 }
    \n+
    296 return xnew;
    \n+
    297 }
    \n+
    298
    \n+
    299 std::array<std::vector<ctype>, dim> _coords;
    \n+
    300 };
    \n+
    \n+
    301
    \n+
    302 // class that implements the actual grid creation process. The default is implementing
    \n+
    303 // standard creation for unstructured grids. Provide a specialization for other grids.
    \n+
    304 template<typename Grid>
    \n+
    \n+\n+
    306 {
    \n+
    307 public:
    \n+
    308 typedef typename Grid::Traits::Communication Comm;
    \n+
    309 typedef typename Grid::ctype ctype;
    \n+
    310 static const int dim = Grid::dimension;
    \n+
    311
    \n+
    312 TensorGridFactoryCreator(const TensorGridFactory<Grid>& factory) : _factory(factory) {}
    \n+
    313
    \n+
    \n+
    314 std::unique_ptr<Grid> createGrid(Comm comm)
    \n+
    315 {
    \n+
    316 // The grid factory
    \n+\n+
    318
    \n+
    319 if (comm.rank() == 0)
    \n+
    320 {
    \n+
    321 // determine the size of the grid
    \n+
    322 std::array<unsigned int, dim> vsizes, esizes;
    \n+
    323 std::size_t size = 1;
    \n+
    324 for (std::size_t i = 0; i<dim; ++i)
    \n+
    325 {
    \n+
    326 vsizes[i] = _factory[i].size();
    \n+
    327 esizes[i] = vsizes[i] - 1;
    \n+
    328 size *= vsizes[i];
    \n+
    329 }
    \n+
    330
    \n+
    331 // insert all vertices
    \n+\n+
    333 for (std::size_t i=0; i<size; ++i, ++index)
    \n+
    334 {
    \n+
    335 Dune::FieldVector<ctype, dim> position;
    \n+
    336 for (std::size_t j = 0; j<dim; ++j)
    \n+
    337 position[j] = _factory[j][index[j]];
    \n+
    338 fac.insertVertex(position);
    \n+
    339 }
    \n+
    340
    \n+
    341 // compute the offsets
    \n+
    342 std::array<std::size_t, dim> offsets;
    \n+
    343 offsets[0] = 1;
    \n+
    344 for (std::size_t i=1; i<dim; i++)
    \n+
    345 offsets[i] = offsets[i-1] * vsizes[i-1];
    \n+
    346
    \n+
    347 // Compute an element template (the cube at (0,...,0). All
    \n+
    348 // other cubes are constructed by moving this template around
    \n+
    349 unsigned int nCorners = 1<<dim;
    \n+
    350
    \n+
    351 std::vector<unsigned int> cornersTemplate(nCorners,0);
    \n+
    352
    \n+
    353 for (size_t i=0; i<nCorners; i++)
    \n+
    354 for (int j=0; j<dim; j++)
    \n+
    355 if ( i & (1<<j) )
    \n+
    356 cornersTemplate[i] += offsets[j];
    \n+
    357
    \n+
    358 // Insert elements
    \n+\n+
    360
    \n+
    361 // Compute the total number of elements to be created
    \n+
    362 int numElements = eindex.cycle();
    \n+
    363
    \n+
    364 for (int i=0; i<numElements; i++, ++eindex)
    \n+
    365 {
    \n+
    366 // 'base' is the index of the lower left element corner
    \n+
    367 unsigned int base = 0;
    \n+
    368 for (int j=0; j<dim; j++)
    \n+
    369 base += eindex[j] * offsets[j];
    \n+
    370
    \n+
    371 // insert new element
    \n+
    372 std::vector<unsigned int> corners = cornersTemplate;
    \n+
    373 for (size_t j=0; j<corners.size(); j++)
    \n+
    374 corners[j] += base;
    \n+
    375
    \n+
    376 fac.insertElement(GeometryTypes::cube(dim), corners);
    \n+
    377 }
    \n+
    378 }
    \n+
    379
    \n+
    380 return std::unique_ptr<Grid>(fac.createGrid());
    \n+
    381 }
    \n+
    \n+
    382
    \n+
    383 private:
    \n+
    384 const TensorGridFactory<Grid>& _factory;
    \n+
    385 };
    \n+
    \n+
    386
    \n+
    387 template<typename ctype, int dim>
    \n+
    \n+\n+
    389 {
    \n+
    390 public:
    \n+\n+
    392 typedef typename Grid::Communication Comm;
    \n+
    393
    \n+
    394 TensorGridFactoryCreator(const TensorGridFactory<Grid>& factory) : _factory(factory) {}
    \n+
    395
    \n+
    \n+
    396 std::unique_ptr<Grid> createGrid(Comm comm)
    \n+
    397 {
    \n+
    398 return std::make_unique<Grid>(_factory.coords(), std::bitset<dim>(0ULL), 1, comm);
    \n+
    399 }
    \n+
    \n+
    400 private:
    \n+
    401 const TensorGridFactory<Grid>& _factory;
    \n+
    402 };
    \n+
    \n+
    403}
    \n+
    404
    \n+
    405#endif
    \n+
    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various facto...
    \n+\n+
    Include standard header files.
    Definition agrid.hh:60
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    ct ctype
    Define type used for coordinates in grid module.
    Definition common/grid.hh:532
    \n+
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:314
    \n+
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)
    Insert an element into the coarse grid.
    Definition common/gridfactory.hh:346
    \n+
    virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)
    Insert a vertex into the coarse grid.
    Definition common/gridfactory.hh:335
    \n+
    virtual std::unique_ptr< GridType > createGrid()
    Finalize grid creation and hand over the grid.
    Definition common/gridfactory.hh:372
    \n+
    Definition multiindex.hh:19
    \n+
    size_t cycle() const
    Compute how many times you can call operator++ before getting to (0,...,0) again.
    Definition multiindex.hh:48
    \n+
    Definition tensorgridfactory.hh:306
    \n+
    Grid::ctype ctype
    Definition tensorgridfactory.hh:309
    \n+
    Grid::Traits::Communication Comm
    Definition tensorgridfactory.hh:308
    \n+
    TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)
    Definition tensorgridfactory.hh:312
    \n+
    std::unique_ptr< Grid > createGrid(Comm comm)
    Definition tensorgridfactory.hh:314
    \n+
    static const int dim
    Definition tensorgridfactory.hh:310
    \n+
    A factory class for conveniently creating tensorproduct grids.
    Definition tensorgridfactory.hh:42
    \n+
    void fillRange(int d, int n, ctype end)
    fills the range to end with n intervals in direction d
    Definition tensorgridfactory.hh:108
    \n+
    void geometricFillRange(int d, int n, ctype end, ctype h=static_cast< ctype >(0), bool first=true)
    fills a coordinate range in direction d with n intervals according to a geometric series
    Definition tensorgridfactory.hh:197
    \n+
    Grid::ctype ctype
    Definition tensorgridfactory.hh:45
    \n+
    void fillUntil(int d, ctype h, ctype end)
    adds intervals in direction d until a given coordinate is reached
    Definition tensorgridfactory.hh:125
    \n+
    void geometricFillUntil(int d, ctype ratio, ctype end, ctype h0=static_cast< ctype >(0))
    adds intervals in direction d according with a given length ratio until a given coordinate is reached
    Definition tensorgridfactory.hh:170
    \n+
    static const int dim
    Definition tensorgridfactory.hh:46
    \n+
    void print()
    print the coordinate information given to the factory so far
    Definition tensorgridfactory.hh:219
    \n+
    void fillIntervals(int d, int n, ctype h)
    pushs n intervals of length h in direction d
    Definition tensorgridfactory.hh:93
    \n+
    void setStart(int d, ctype value)
    set a starting value in a given direction d
    Definition tensorgridfactory.hh:79
    \n+
    void geometricFillIntervals(int d, int n, ctype ratio, ctype h0=static_cast< ctype >(0))
    adds n intervals in direction d with a given length ratio and a given starting interval length.
    Definition tensorgridfactory.hh:144
    \n+
    std::vector< ctype > & operator[](std::size_t d)
    allow to manually tune the factory by overloading operator[] to export the coordinate vectors in the ...
    Definition tensorgridfactory.hh:60
    \n+
    const std::vector< ctype > & operator[](std::size_t d) const
    allow to manually tune the factory by overloading operator[] to export the coordinate vectors in the ...
    Definition tensorgridfactory.hh:66
    \n+
    std::unique_ptr< Grid > createGrid(Comm comm=Comm())
    Definition tensorgridfactory.hh:48
    \n+
    Grid::Traits::Communication Comm
    Definition tensorgridfactory.hh:44
    \n+
    std::array< std::vector< ctype >, dim > coords() const
    Definition tensorgridfactory.hh:54
    \n+
    std::unique_ptr< Grid > createGrid(Comm comm)
    Definition tensorgridfactory.hh:396
    \n+
    TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)
    Definition tensorgridfactory.hh:394
    \n+\n+
    YaspGrid< dim, TensorProductCoordinates< ctype, dim > > Grid
    Definition tensorgridfactory.hh:391
    \n+
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n+
    typename Base::Communication Communication
    Definition yaspgrid.hh:178
    \n+
    Coordinate container for a tensor product YaspGrid.
    Definition coordinates.hh:245
    \n+
    Provide a generic factory class for unstructured grids.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,229 +1,481 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-gridinfo-gmsh-main.hh\n+tensorgridfactory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-4// vi: set et ts=4 sw=2 sts=2:\n+3#ifndef DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH\n+4#define DUNE_GRID_UTILITY_TENSORGRIDFACTORY_HH\n 5\n-6#ifndef DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH\n-7#define DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH\n-8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14#include \n-15#include \n-16#include \n-17#include \n-18#include \n-19\n-20#include \n-21#include \n-22#include \n+20#include\n+21#include\n+22#include\n 23\n-24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n-25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n-26\n-54#ifdef HEADERCHECK\n-55// define so headercheck will run\n-56const std::string programName = \"headercheck\";\n-57#endif // HEADERCHECK\n+24#include \n+25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+26#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+27#include<_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+28\n+29namespace _\bD_\bu_\bn_\be\n+30{\n+31 // forward declaration of TensorGridFactoryCreator, which is the real\n+factory\n+32 // that should be specialized for each grid.\n+33 template\n+34 class TensorGridFactoryCreator;\n+35\n+40 template\n+_\b4_\b1 class _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+42 {\n+43 public:\n+_\b4_\b4 typedef typename Grid::Traits::Communication _\bC_\bo_\bm_\bm;\n+_\b4_\b5 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n+_\b4_\b6 static const int _\bd_\bi_\bm = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+47\n+_\b4_\b8 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(_\bC_\bo_\bm_\bm comm = _\bC_\bo_\bm_\bm())\n+49 {\n+50 _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\b> creator(*this);\n+51 return creator._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(comm);\n+52 }\n+53\n+_\b5_\b4 std::array , _\bd_\bi_\bm> _\bc_\bo_\bo_\br_\bd_\bs() const\n+55 {\n+56 return _coords;\n+57 }\n 58\n-59#ifndef DOXYGEN\n-60namespace {\n-61 // anonymous namespace so we don't freakishly conflict with another usage()\n-62 // function that may be linked in from another compilation unit.\n-63 void usage(std::ostream &stream) {\n-64 stream << \"USAGE:\\n\"\n-65 << \" \" << programName << \" [-R REFINES] GRIDFILE\\n\"\n-66 << \"\\n\"\n-67 << \"PARAMETERS:\\n\"\n-68 << \" -R REFINES How many global refines to do after reading\\n\"\n-69 << \" (default: 0)\\n\"\n-70 << \" GRIDFILE Name of the .msh file to read the grid from.\\n\"\n-71 << std::flush;\n-72 }\n-73\n-74 bool prefix_match(const std::string &prefix, const std::string &str)\n-75 {\n-76 return str.compare(0,prefix.size(), prefix) == 0;\n-77 }\n-78\n-79 void error_argument_required(const std::string &opt) {\n-80 std::cerr << \"Error: option \" << opt << \" requires argument\\n\";\n-81 usage(std::cerr);\n-82 std::exit(1);\n+_\b6_\b0 std::vector& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t d)\n+61 {\n+62 return _coords[d];\n+63 }\n+64\n+_\b6_\b6 const std::vector& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](std::size_t d) const\n+67 {\n+68 return _coords[d];\n+69 }\n+70\n+_\b7_\b9 void _\bs_\be_\bt_\bS_\bt_\ba_\br_\bt (int d, _\bc_\bt_\by_\bp_\be value)\n+80 {\n+81 _coords[d].resize(1);\n+82 _coords[d][0] = value;\n 83 }\n 84\n-85 void error_unknown_option(const std::string &opt) {\n-86 std::cerr << \"Error: unknown option: \" << opt << \"\\n\";\n-87 usage(std::cerr);\n-88 std::exit(1);\n-89 }\n-90\n-91 void error_parsing_optarg(const std::string &opt, const std::string &error)\n-{\n-92 std::cerr << \"Error: option \" << opt << \": \" << error << \"\\n\";\n-93 usage(std::cerr);\n-94 std::exit(1);\n-95 }\n-96\n-97 template\n-98 void parse(const std::string &arg, T &val) {\n-99 std::istringstream s(arg);\n-100 s >> val;\n-101 bool good = !s.fail();\n-102 if(good) {\n-103 char dummy;\n-104 s >> dummy;\n-105 good = s.fail() && s.eof();\n-106 }\n-107 if(!good) {\n-108 std::ostringstream s;\n-109 s << \"Can't parse \\\"\" << arg << \"\\\" as a \" << Dune::className(val);\n-110 throw std::runtime_error(s.str());\n-111 }\n-112 }\n-113\n-114 std::size_t refines = 0;\n-115 std::string gridFileName = \"\";\n+_\b9_\b3 void _\bf_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs (int d, int n, _\bc_\bt_\by_\bp_\be h)\n+94 {\n+95 emptyCheck (d);\n+96 for (int i = 0; i < n; i++)\n+97 _coords[d].push_back (_coords[d].back () + h);\n+98 }\n+99\n+_\b1_\b0_\b8 void _\bf_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be (int d, int n, _\bc_\bt_\by_\bp_\be end)\n+109 {\n+110 emptyCheck (d);\n+111 const _\bc_\bt_\by_\bp_\be h = (end - _coords[d].back ()) / n;\n+112 for (int i = 0; i < n - 1; i++)\n+113 _coords[d].push_back (_coords[d].back () + h);\n+114 _coords[d].push_back (end);\n+115 }\n 116\n-117 void parseOptions(int argc, char **argv) {\n-118 std::vector params;\n-119 for(++argv; *argv; ++argv) {\n-120 std::string arg = *argv;\n-121 if(prefix_match(\"-\", arg)) {\n-122 std::string opt = arg;\n-123 if(opt == \"--\") {\n-124 for(++argv; *argv; ++argv)\n-125 params.push_back(*argv);\n-126 break;\n-127 }\n-128 else if(prefix_match(\"-h\", opt) || prefix_match(\"-?\", opt) ||\n-129 opt == \"--help\")\n-130 {\n-131 usage(std::cout);\n-132 std::exit(0);\n-133 }\n-134 else if(opt == \"-R\" || opt == \"--global-refines\") {\n-135 ++argv;\n-136 if(!*argv) error_argument_required(opt);\n-137 try { parse(*argv, refines); }\n-138 catch(const std::runtime_error &e)\n-139 { error_parsing_optarg(opt, e.what()); }\n-140 }\n-141 else if(prefix_match(\"-R\", opt)) {\n-142 try { parse(*argv+std::strlen(\"-R\"), refines); }\n-143 catch(const std::runtime_error &e)\n-144 { error_parsing_optarg(opt, e.what()); }\n-145 }\n-146 else if(prefix_match(\"--global-refines=\", opt)) {\n-147 try { parse(*argv+std::strlen(\"--global-refines=\"), refines); }\n-148 catch(const std::runtime_error &e)\n-149 { error_parsing_optarg(opt, e.what()); }\n-150 }\n-151 else\n-152 error_unknown_option(opt);\n-153 }\n-154 else\n-155 params.push_back(arg);\n+_\b1_\b2_\b5 void _\bf_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl (int d, _\bc_\bt_\by_\bp_\be h, _\bc_\bt_\by_\bp_\be end)\n+126 {\n+127 emptyCheck (d);\n+128 while (_coords[d].back () < end)\n+129 _coords[d].push_back (_coords[d].back () + h);\n+130 }\n+131\n+_\b1_\b4_\b4 void _\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs (int d, int n, _\bc_\bt_\by_\bp_\be ratio, _\bc_\bt_\by_\bp_\be h0 =\n+145 static_cast<_\bc_\bt_\by_\bp_\be> (0))\n+146 {\n+147 emptyCheck (d);\n+148 _\bc_\bt_\by_\bp_\be h = h0;\n+149 if (h0 == static_cast<_\bc_\bt_\by_\bp_\be>(0))\n+150 h = lastInterval (d) * ratio;\n+151 for (int i = 0; i < n; i++)\n+152 {\n+153 _coords[d].push_back (_coords[d].back () + h);\n+154 h *= ratio;\n+155 }\n 156 }\n-157 // check command line arguments\n-158 if(params.size() < 1) {\n-159 std::cerr << \"Need name of a .msh file to read.\\n\"\n-160 << std::endl;\n-161 usage(std::cerr);\n-162 std::exit(1);\n-163 }\n-164 if(params.size() > 1) {\n-165 std::cerr << \"Too many arguments.\\n\"\n-166 << std::endl;\n-167 usage(std::cerr);\n-168 std::exit(1);\n-169 }\n-170 gridFileName = params[0];\n-171 }\n-172}\n-173\n-174#ifndef HEADERCHECK\n-175int _\bm_\ba_\bi_\bn(int argc, char **argv) {\n-176 try {\n-177 const Dune::MPIHelper &mpiHelper = Dune::MPIHelper::instance(argc, argv);\n-178\n-179 // check that we are not run through mpirun\n-180 if(mpiHelper.size() > 1) {\n-181 if(mpiHelper.rank() == 0)\n-182 std::cerr << programName << \": Sorry, this program works only in \"\n-183 << \"serial.\" << std::endl;\n-184 return 1;\n-185 }\n-186\n-187 parseOptions(argc, argv);\n-188\n-189 // read grid\n-190 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br_\b<_\bG_\br_\bi_\bd_\b> Reader;\n-191 std::shared_ptr gridp(Reader::read(gridFileName));\n-192 gridp->globalRefine(refines);\n-193\n-194 // collect information\n-195 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo_\b<_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be_\b> gridViewInfo;\n-196 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\bl_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo_\bS_\be_\br_\bi_\ba_\bl(gridp->leafGridView(), gridViewInfo);\n-197\n-198 // print it\n-199 std::cout << gridViewInfo << std::flush;\n-200 }\n-201 catch(const std::exception &e) {\n-202 std::cerr << \"Caught exception of type \" << Dune::className(e)\n-203 << std::endl\n-204 << \"e.what(): \" << e.what() << std::endl;\n-205 throw;\n-206 }\n-207 catch(const Dune::Exception &e) {\n-208 std::cerr << \"Caught exception of type \" << Dune::className(e)\n-209 << std::endl\n-210 << \"Exception message: \" << e << std::endl;\n-211 throw;\n-212 }\n-213 catch(const std::string &s) {\n-214 std::cerr << \"Caught exception of type \" << Dune::className(s)\n-215 << std::endl\n-216 << \"Exception message: \" << s << std::endl;\n-217 throw;\n-218 }\n-219 catch(...) {\n-220 std::cerr << \"Caught exception of unknown type\" << std::endl;\n-221 throw;\n-222 }\n-223}\n-224#endif // !HEADERCHECK\n-225#endif // !DOXYGEN\n-226\n-227#endif // DUNE_GRID_UTILITY_GRIDINFO_GMSH_MAIN_HH\n-_\bm_\ba_\bi_\bn\n-int main(int argc, char **argv)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn recipe-integration.cc:70\n-_\bg_\bm_\bs_\bh_\br_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\bl_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo_\bS_\be_\br_\bi_\ba_\bl\n-void fillGridViewInfoSerial(const GV &gv, GridViewInfo< typename GV::ctype >\n-&gridViewInfo)\n-fill a GridViewInfo structure from a serial grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/gridinfo.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bm_\bs_\bh_\bR_\be_\ba_\bd_\be_\br\n-Read Gmsh mesh file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gmshreader.hh:807\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\bI_\bn_\bf_\bo\n-structure to hold information about a certain GridView.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/gridinfo.hh:100\n-_\bg_\br_\bi_\bd_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+157\n+_\b1_\b7_\b0 void _\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl (int d, _\bc_\bt_\by_\bp_\be ratio, _\bc_\bt_\by_\bp_\be end, _\bc_\bt_\by_\bp_\be h0 =\n+static_cast<_\bc_\bt_\by_\bp_\be> (0))\n+171 {\n+172 emptyCheck (d);\n+173 _\bc_\bt_\by_\bp_\be h = h0;\n+174 if (h0 == static_cast<_\bc_\bt_\by_\bp_\be>(0))\n+175 h = lastInterval (d) * ratio;\n+176 while (_coords[d].back () < end)\n+177 {\n+178 _coords[d].push_back (_coords[d].back () + h);\n+179 h *= ratio;\n+180 }\n+181 }\n+182\n+_\b1_\b9_\b7 void _\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be (int d, int n, _\bc_\bt_\by_\bp_\be end, _\bc_\bt_\by_\bp_\be h =\n+198 static_cast<_\bc_\bt_\by_\bp_\be> (0),\n+199 bool first = true)\n+200 {\n+201 emptyCheck (d);\n+202 if (h < 1e-8)\n+203 h = lastInterval (d);\n+204 _\bc_\bt_\by_\bp_\be ratio = newton (n, _coords[d].back (), end, h);\n+205 if (!first)\n+206 {\n+207 h = h * pow (ratio, n - 1);\n+208 ratio = 1 / ratio;\n+209 }\n+210 for (int i = 0; i < n - 1; i++)\n+211 {\n+212 _coords[d].push_back (_coords[d].back () + h);\n+213 h *= ratio;\n+214 }\n+215 _coords[d].push_back (end);\n+216 }\n+217\n+_\b2_\b1_\b9 void _\bp_\br_\bi_\bn_\bt()\n+220 {\n+221 for (int i=0; i<_\bd_\bi_\bm; i++)\n+222 {\n+223 std::cout << \"Container in direction \" << i << \":\" << std::endl <<\n+\"Coordinates: \";\n+224 for (auto it = _coords[i].begin(); it != _coords[i].end(); ++it)\n+225 std::cout << *it << \" \";\n+226 std::cout << std::endl << \"Interval lengths: \";\n+227\n+228 std::vector meshsize;\n+229 for (auto it = _coords[i].begin(); it != _coords[i].end()-1;)\n+230 {\n+231 meshsize.push_back(-1.*(*it));\n+232 ++it;\n+233 meshsize.back() += *it;\n+234 }\n+235\n+236 for (auto it = meshsize.begin(); it != meshsize.end(); ++it)\n+237 std::cout << *it << \" \";\n+238 std::cout << std::endl << \"Ratios between interval lengths: \";\n+239\n+240 std::vector ratios;\n+241 for (auto it = meshsize.begin(); it != meshsize.end() - 1 ;)\n+242 ratios.push_back((1./(*it)) * *(++it));\n+243\n+244 for (auto it = ratios.begin(); it != ratios.end(); ++it)\n+245 std::cout << *it << \" \";\n+246 std::cout << std::endl << std::endl << std::endl;\n+247 }\n+248 }\n+249\n+250 private:\n+251 // check whether the ith component is empty and add a 0.0 entry if so\n+252 void emptyCheck (int i)\n+253 {\n+254 if (_coords[i].empty ())\n+255 _coords[i].push_back (static_cast<_\bc_\bt_\by_\bp_\be> (0));\n+256 }\n+257\n+258 // returns the last interval length in direction d\n+259 _\bc_\bt_\by_\bp_\be lastInterval (int d)\n+260 {\n+261 if (_coords[d].size () < 2)\n+262 DUNE_THROW(\n+263 GridError,\n+264 \"Not enough elements in coordinate container to deduce interval length in\n+TensorYaspFactory\");\n+265 else\n+266 return _coords[d].back () - _coords[d][_coords[d].size () - 2];\n+267 }\n+268\n+272 _\bc_\bt_\by_\bp_\be newton (int n, _\bc_\bt_\by_\bp_\be x_s, _\bc_\bt_\by_\bp_\be x_e, _\bc_\bt_\by_\bp_\be h)\n+273 {\n+274 _\bc_\bt_\by_\bp_\be m = (x_e - x_s) / h;\n+275 _\bc_\bt_\by_\bp_\be xold = 0.0;\n+276 _\bc_\bt_\by_\bp_\be xnew = x_e - x_s;\n+277 while (std::abs (xnew - xold) > 1E-8)\n+278 {\n+279 xold = xnew;\n+280 xnew = xold\n+281 - (-pow (xold, n) + m * xold - m + 1)\n+282 / (-n * pow (xold, n - 1) + m);\n+283 }\n+284 if (std::abs (xnew - 1) < 1E-6)\n+285 {\n+286 xold = x_e - x_s;\n+287 xnew = 0.0;\n+288 while (std::abs (xnew - xold) > 1E-8)\n+289 {\n+290 xold = xnew;\n+291 xnew = xold\n+292 - (-pow (xold, n) + m * xold - m + 1)\n+293 / (-n * pow (xold, n - 1) + m);\n+294 }\n+295 }\n+296 return xnew;\n+297 }\n+298\n+299 std::array, _\bd_\bi_\bm> _coords;\n+300 };\n+301\n+302 // class that implements the actual grid creation process. The default is\n+implementing\n+303 // standard creation for unstructured grids. Provide a specialization for\n+other grids.\n+304 template\n+_\b3_\b0_\b5 class _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n+306 {\n+307 public:\n+_\b3_\b0_\b8 typedef typename Grid::Traits::Communication _\bC_\bo_\bm_\bm;\n+_\b3_\b0_\b9 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n+_\b3_\b1_\b0 static const int _\bd_\bi_\bm = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+311\n+_\b3_\b1_\b2 _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br(const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory) : _factory\n+(factory) {}\n+313\n+_\b3_\b1_\b4 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(_\bC_\bo_\bm_\bm comm)\n+315 {\n+316 // The grid factory\n+317 _\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b> fac;\n+318\n+319 if (comm.rank() == 0)\n+320 {\n+321 // determine the size of the grid\n+322 std::array vsizes, esizes;\n+323 std::size_t size = 1;\n+324 for (std::size_t i = 0; i<_\bd_\bi_\bm; ++i)\n+325 {\n+326 vsizes[i] = _factory[i].size();\n+327 esizes[i] = vsizes[i] - 1;\n+328 size *= vsizes[i];\n+329 }\n+330\n+331 // insert all vertices\n+332 _\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b> index(vsizes);\n+333 for (std::size_t i=0; i position;\n+336 for (std::size_t j = 0; j<_\bd_\bi_\bm; ++j)\n+337 position[j] = _factory[j][index[j]];\n+338 fac._\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx(position);\n+339 }\n+340\n+341 // compute the offsets\n+342 std::array offsets;\n+343 offsets[0] = 1;\n+344 for (std::size_t i=1; i<_\bd_\bi_\bm; i++)\n+345 offsets[i] = offsets[i-1] * vsizes[i-1];\n+346\n+347 // Compute an element template (the cube at (0,...,0). All\n+348 // other cubes are constructed by moving this template around\n+349 unsigned int nCorners = 1<<_\bd_\bi_\bm;\n+350\n+351 std::vector cornersTemplate(nCorners,0);\n+352\n+353 for (size_t i=0; i eindex(esizes);\n+360\n+361 // Compute the total number of elements to be created\n+362 int numElements = eindex._\bc_\by_\bc_\bl_\be();\n+363\n+364 for (int i=0; i corners = cornersTemplate;\n+373 for (size_t j=0; j(fac._\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd());\n+381 }\n+382\n+383 private:\n+384 const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& _factory;\n+385 };\n+386\n+387 template\n+_\b3_\b8_\b8 class _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br<_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd > >\n+389 {\n+390 public:\n+_\b3_\b9_\b1 typedef _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\b> > _\bG_\br_\bi_\bd;\n+_\b3_\b9_\b2 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bC_\bo_\bm_\bm;\n+393\n+_\b3_\b9_\b4 _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br(const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& factory) : _factory\n+(factory) {}\n+395\n+_\b3_\b9_\b6 std::unique_ptr _\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd(_\bC_\bo_\bm_\bm comm)\n+397 {\n+398 return std::make_unique(_factory.coords(), std::bitset(0ULL), 1,\n+comm);\n+399 }\n+400 private:\n+401 const _\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\br_\bi_\bd_\b>& _factory;\n+402 };\n+403}\n+404\n+405#endif\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+Implements a multiindex with arbitrary dimension and fixed index ranges This is\n+used by various facto...\n+_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh\n+_\bD_\bu_\bn_\be\n+Include standard header files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+Define type used for coordinates in grid module.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:532\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Provide a generic factory class for unstructured grids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n+virtual void insertElement(const GeometryType &type, const std::vector<\n+unsigned int > &vertices)\n+Insert an element into the coarse grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:346\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n+virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)\n+Insert a vertex into the coarse grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+virtual std::unique_ptr< GridType > createGrid()\n+Finalize grid creation and hand over the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridfactory.hh:372\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bc_\by_\bc_\bl_\be\n+size_t cycle() const\n+Compute how many times you can call operator++ before getting to (0,...,0)\n+again.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:306\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:309\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bm\n+Grid::Traits::Communication Comm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:308\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n+TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+std::unique_ptr< Grid > createGrid(Comm comm)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm\n+static const int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+A factory class for conveniently creating tensorproduct grids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be\n+void fillRange(int d, int n, ctype end)\n+fills the range to end with n intervals in direction d\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bR_\ba_\bn_\bg_\be\n+void geometricFillRange(int d, int n, ctype end, ctype h=static_cast< ctype >\n+(0), bool first=true)\n+fills a coordinate range in direction d with n intervals according to a\n+geometric series\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl\n+void fillUntil(int d, ctype h, ctype end)\n+adds intervals in direction d until a given coordinate is reached\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bU_\bn_\bt_\bi_\bl\n+void geometricFillUntil(int d, ctype ratio, ctype end, ctype h0=static_cast<\n+ctype >(0))\n+adds intervals in direction d according with a given length ratio until a given\n+coordinate is reached\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm\n+static const int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print()\n+print the coordinate information given to the factory so far\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs\n+void fillIntervals(int d, int n, ctype h)\n+pushs n intervals of length h in direction d\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bS_\bt_\ba_\br_\bt\n+void setStart(int d, ctype value)\n+set a starting value in a given direction d\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\bi_\bc_\bF_\bi_\bl_\bl_\bI_\bn_\bt_\be_\br_\bv_\ba_\bl_\bs\n+void geometricFillIntervals(int d, int n, ctype ratio, ctype h0=static_cast<\n+ctype >(0))\n+adds n intervals in direction d with a given length ratio and a given starting\n+interval length.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+std::vector< ctype > & operator[](std::size_t d)\n+allow to manually tune the factory by overloading operator[] to export the\n+coordinate vectors in the ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const std::vector< ctype > & operator[](std::size_t d) const\n+allow to manually tune the factory by overloading operator[] to export the\n+coordinate vectors in the ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+std::unique_ptr< Grid > createGrid(Comm comm=Comm())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bm\n+Grid::Traits::Communication Comm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs\n+std::array< std::vector< ctype >, dim > coords() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n+_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bG_\br_\bi_\bd\n+std::unique_ptr< Grid > createGrid(Comm comm)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:396\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n+_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br\n+TensorGridFactoryCreator(const TensorGridFactory< Grid > &factory)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:394\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n+_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bm_\bm\n+Grid::Communication Comm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:392\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\br_\be_\ba_\bt_\bo_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b<_\b _\bc_\bt_\by_\bp_\be_\b,\n+_\bd_\bi_\bm_\b _\b>_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n+YaspGrid< dim, TensorProductCoordinates< ctype, dim > > Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensorgridfactory.hh:391\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd\n+[ provides Dune::Grid ]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn\n+typename Base::Communication Communication\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:178\n+_\bD_\bu_\bn_\be_\b:_\b:_\bT_\be_\bn_\bs_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs\n+Coordinate container for a tensor product YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordinates.hh:245\n+_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+Provide a generic factory class for unstructured grids.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01010.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01010.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: multiindex.hh File Reference\n+dune-grid: hostgridaccess.hh File Reference\n \n \n \n \n \n \n \n@@ -72,39 +72,41 @@\n
  • dune
  • grid
  • utility
  • \n
    \n \n
    \n \n-
    multiindex.hh File Reference
    \n+
    hostgridaccess.hh File Reference
    \n
    \n
    \n-\n-

    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes. \n-More...

    \n-
    #include <array>
    \n+
    #include <string>
    \n+#include <dune/grid/geometrygrid/intersection.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::FactoryUtilities::MultiIndex< dim >
    struct  Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >
     
    struct  Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >::Codim< codim >
     A Traits struct that collects return types of class member methods. More...
     
    struct  Dune::HostGridAccess< IdentityGrid< HG > >
     
    struct  Dune::HostGridAccess< IdentityGrid< HG > >::Codim< codim >
     A Traits struct that collects return types of class member methods. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::FactoryUtilities
     
    \n-

    Detailed Description

    \n-

    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,26 +2,31 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-multiindex.hh File Reference\n-Implements a multiindex with arbitrary dimension and fixed index ranges This is\n-used by various factory classes. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n+hostgridaccess.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+ _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0 A Traits struct that collects return types of class member methods.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n+\u00a0 A Traits struct that collects return types of class member methods.\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 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs\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-Implements a multiindex with arbitrary dimension and fixed index ranges This is\n-used by various factory classes.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01010_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01010_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: multiindex.hh Source File\n+dune-grid: hostgridaccess.hh Source File\n \n \n \n \n \n \n \n@@ -74,83 +74,219 @@\n \n
    \n \n
    \n \n
    \n-
    multiindex.hh
    \n+
    hostgridaccess.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_GRID_UTILITY_MULTIINDEX_HH
    \n-
    4#define DUNE_GRID_UTILITY_MULTIINDEX_HH
    \n-
    5
    \n-
    11#include<array>
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    \n-
    15 namespace FactoryUtilities
    \n-
    16 {
    \n-
    17 template<std::size_t dim>
    \n-
    \n-
    18 class MultiIndex : public std::array<unsigned int,dim>
    \n-
    19 {
    \n-
    20 // The range of each component
    \n-
    21 std::array<unsigned int,dim> limits_;
    \n-
    22
    \n-
    23 public:
    \n-
    \n-
    25 MultiIndex(const std::array<unsigned int,dim>& limits) : limits_(limits)
    \n-
    26 {
    \n-
    27 std::fill(this->begin(), this->end(), 0);
    \n-
    28 }
    \n-
    \n-
    29
    \n-
    \n-\n-
    32 {
    \n-
    33 for (std::size_t i=0; i<dim; i++)
    \n-
    34 {
    \n-
    35 // Augment digit
    \n-
    36 (*this)[i]++;
    \n-
    37
    \n-
    38 // If there is no carry-over we can stop here
    \n-
    39 if ((*this)[i]<limits_[i])
    \n-
    40 break;
    \n-
    41
    \n-
    42 (*this)[i] = 0;
    \n-
    43 }
    \n-
    44 return *this;
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    \n-
    48 size_t cycle() const
    \n-
    49 {
    \n-
    50 size_t result = 1;
    \n-
    51 for (std::size_t i=0; i<dim; i++)
    \n-
    52 result *= limits_[i];
    \n-
    53 return result;
    \n-
    54 }
    \n-
    \n-
    55 };
    \n-
    \n-
    56 }
    \n-
    \n-
    57}
    \n-
    58
    \n-
    59#endif
    \n+
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=4 sw=2 sts=2:
    \n+
    5#ifndef DUNE_GRID_HOSTGRIDACCESS_HH
    \n+
    6#define DUNE_GRID_HOSTGRIDACCESS_HH
    \n+
    7
    \n+
    8#include <string>
    \n+
    9
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    15 // External Forward Declarations
    \n+
    16 // -----------------------------
    \n+
    17
    \n+
    18 template< class HostGrid, class CoordFunction, class Allocator >
    \n+
    19 class GeometryGrid;
    \n+
    20
    \n+
    21 template< class >
    \n+
    22 class IdentityGrid;
    \n+
    23
    \n+
    24
    \n+
    25 // HostGridAccess
    \n+
    26 // --------------
    \n+
    27
    \n+
    28 template< class Grid >
    \n+
    29 struct HostGridAccess;
    \n+
    30
    \n+
    31
    \n+
    32
    \n+
    40 template< class HG, class CoordFunction, class Allocator >
    \n+
    \n+
    41 struct HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >
    \n+
    42 {
    \n+\n+
    47
    \n+
    49 typedef typename Grid::HostGrid HostGrid;
    \n+
    50
    \n+
    57 template< int codim >
    \n+
    \n+
    58 struct Codim
    \n+
    59 {
    \n+\n+
    62
    \n+
    64 typedef typename HostGrid::template Codim< codim >::Entity HostEntity;
    \n+
    65 };
    \n+
    \n+
    66
    \n+
    68 typedef typename Grid::Traits::LeafIntersection LeafIntersection;
    \n+
    70 typedef typename Grid::Traits::LevelIntersection LevelIntersection;
    \n+
    71
    \n+
    73 typedef typename HostGrid::Traits::LeafIntersection HostLeafIntersection;
    \n+
    75 typedef typename HostGrid::Traits::LevelIntersection HostLevelIntersection;
    \n+
    76
    \n+
    \n+
    81 static const HostGrid &hostGrid ( const Grid &grid )
    \n+
    82 {
    \n+
    83 return grid.hostGrid();
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    86 template< class Entity >
    \n+
    87 static const typename Codim< Entity::codimension >::HostEntity &
    \n+
    \n+
    88 hostEntity ( const Entity &entity )
    \n+
    89 {
    \n+
    90 return hostEntity< Entity::codimension >( entity );
    \n+
    91 }
    \n+
    \n+
    92
    \n+
    93 template< int codim >
    \n+
    94 static const typename Codim< codim >::HostEntity &
    \n+
    \n+
    95 hostEntity ( const typename Codim< codim >::Entity &entity )
    \n+
    96 {
    \n+
    97 return entity.impl().hostEntity();
    \n+
    98 }
    \n+
    \n+
    99
    \n+
    100 template< class HostIntersection >
    \n+
    101 static const HostIntersection &
    \n+
    \n+\n+
    103 {
    \n+
    104 return intersection.impl().hostIntersection();
    \n+
    105 }
    \n+
    \n+
    106 };
    \n+
    \n+
    107
    \n+
    108
    \n+
    116 template< class HG >
    \n+
    \n+\n+
    118 {
    \n+\n+
    123
    \n+
    125 typedef HG HostGrid;
    \n+
    126
    \n+
    133 template< int codim >
    \n+
    \n+
    134 struct Codim
    \n+
    135 {
    \n+\n+
    138
    \n+
    140 typedef typename HostGrid::template Codim< codim >::Entity HostEntity;
    \n+
    141 };
    \n+
    \n+
    142
    \n+\n+\n+
    147
    \n+
    149 typedef typename HostGrid::Traits::LeafIntersection HostLeafIntersection;
    \n+
    151 typedef typename HostGrid::Traits::LevelIntersection HostLevelIntersection;
    \n+
    152
    \n+
    \n+
    157 static const HostGrid &hostGrid ( const Grid &grid )
    \n+
    158 {
    \n+
    159 return grid.getHostGrid();
    \n+
    160 }
    \n+
    \n+
    161
    \n+
    162 template< class Entity >
    \n+
    163 static const typename Codim< Entity::codimension >::HostEntity &
    \n+
    \n+
    164 hostEntity ( const Entity &entity )
    \n+
    165 {
    \n+
    166 return hostEntity< Entity::codimension >( entity );
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    169 template< int codim >
    \n+
    170 static const typename Codim< codim >::HostEntity &
    \n+
    \n+
    171 hostEntity ( const typename Codim< codim >::Entity &entity )
    \n+
    172 {
    \n+
    173 return *entity.impl().hostEntity_;
    \n+
    174 }
    \n+
    \n+
    175
    \n+
    176 static const HostLeafIntersection &
    \n+
    \n+
    177 hostIntersection ( const LeafIntersection &intersection )
    \n+
    178 {
    \n+
    179 return *intersection.impl().hostIterator_;
    \n+
    180 }
    \n+
    \n+
    181
    \n+
    182 static const HostLevelIntersection &
    \n+
    \n+
    183 hostIntersection ( const LevelIntersection &intersection )
    \n+
    184 {
    \n+
    185 return *intersection.impl().hostIterator_;
    \n+
    186 }
    \n+
    \n+
    187 };
    \n+
    \n+
    188
    \n+
    189} // namespace Dune
    \n+
    190
    \n+
    191#endif // #ifndef DUNE_GRID_HOSTGRIDACCESS_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition multiindex.hh:19
    \n-
    MultiIndex(const std::array< unsigned int, dim > &limits)
    Constructor with a given range for each digit.
    Definition multiindex.hh:25
    \n-
    MultiIndex< dim > & operator++()
    Increment the MultiIndex.
    Definition multiindex.hh:31
    \n-
    size_t cycle() const
    Compute how many times you can call operator++ before getting to (0,...,0) again.
    Definition multiindex.hh:48
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    GridFamily::Traits::LeafIntersection LeafIntersection
    A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
    Definition common/grid.hh:456
    \n+
    GridFamily::Traits::LevelIntersection LevelIntersection
    A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
    Definition common/grid.hh:461
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    grid wrapper replacing the geometries
    Definition geometrygrid/grid.hh:86
    \n+
    const HostGrid & hostGrid() const
    obtain constant reference to the host grid
    Definition geometrygrid/grid.hh:538
    \n+
    traits structure containing types for a codimension
    Definition geometrygrid/grid.hh:611
    \n+
    Definition geometrygrid/intersection.hh:22
    \n+
    Provides a meta grid that is identical to its host.
    Definition identitygrid.hh:88
    \n+
    HostGridType & getHostGrid() const
    Returns the hostgrid this IdentityGrid lives in.
    Definition identitygrid.hh:394
    \n+
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n+
    Grid::HostGrid HostGrid
    type of HostGrid
    Definition hostgridaccess.hh:49
    \n+
    HostGrid::Traits::LevelIntersection HostLevelIntersection
    type of the host level intersection
    Definition hostgridaccess.hh:75
    \n+
    static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
    Definition hostgridaccess.hh:88
    \n+
    static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
    Definition hostgridaccess.hh:95
    \n+
    static const HostIntersection & hostIntersection(const Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > &intersection)
    Definition hostgridaccess.hh:102
    \n+
    GeometryGrid< HG, CoordFunction, Allocator > Grid
    Definition hostgridaccess.hh:46
    \n+
    Grid::Traits::LeafIntersection LeafIntersection
    type of the GeometryGrid leaf intersection
    Definition hostgridaccess.hh:68
    \n+
    HostGrid::Traits::LeafIntersection HostLeafIntersection
    type of the host leaf intersection
    Definition hostgridaccess.hh:73
    \n+
    static const HostGrid & hostGrid(const Grid &grid)
    Get underlying HostGrid.
    Definition hostgridaccess.hh:81
    \n+
    Grid::Traits::LevelIntersection LevelIntersection
    type of the GeometryGrid level intersection
    Definition hostgridaccess.hh:70
    \n+
    HostGrid::template Codim< codim >::Entity HostEntity
    type of the host entity
    Definition hostgridaccess.hh:64
    \n+
    Grid::template Codim< codim >::Entity Entity
    type of the GeometryGrid entity
    Definition hostgridaccess.hh:61
    \n+
    Grid::Traits::LeafIntersection LeafIntersection
    type of the IdGrid leaf intersection
    Definition hostgridaccess.hh:144
    \n+
    HG HostGrid
    type of HostGrid
    Definition hostgridaccess.hh:125
    \n+
    IdentityGrid< HG > Grid
    Definition hostgridaccess.hh:122
    \n+
    static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
    Definition hostgridaccess.hh:171
    \n+
    HostGrid::Traits::LevelIntersection HostLevelIntersection
    type of the host level intersection
    Definition hostgridaccess.hh:151
    \n+
    Grid::Traits::LevelIntersection LevelIntersection
    type of the IdGrid level intersection
    Definition hostgridaccess.hh:146
    \n+
    static const HostLeafIntersection & hostIntersection(const LeafIntersection &intersection)
    Definition hostgridaccess.hh:177
    \n+
    HostGrid::Traits::LeafIntersection HostLeafIntersection
    type of the host leaf intersection
    Definition hostgridaccess.hh:149
    \n+
    static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
    Definition hostgridaccess.hh:164
    \n+
    static const HostLevelIntersection & hostIntersection(const LevelIntersection &intersection)
    Definition hostgridaccess.hh:183
    \n+
    static const HostGrid & hostGrid(const Grid &grid)
    Get underlying HostGrid.
    Definition hostgridaccess.hh:157
    \n+
    Grid::template Codim< codim >::Entity Entity
    type of the IdGrid entity
    Definition hostgridaccess.hh:137
    \n+
    HostGrid::template Codim< codim >::Entity HostEntity
    type of the host entity
    Definition hostgridaccess.hh:140
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,81 +1,303 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-multiindex.hh\n+hostgridaccess.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3#ifndef DUNE_GRID_UTILITY_MULTIINDEX_HH\n-4#define DUNE_GRID_UTILITY_MULTIINDEX_HH\n-5\n-11#include\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-_\b1_\b5 namespace FactoryUtilities\n-16 {\n-17 template\n-_\b1_\b8 class _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx : public std::array\n-19 {\n-20 // The range of each component\n-21 std::array limits_;\n-22\n-23 public:\n-_\b2_\b5 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(const std::array& limits) : limits_(limits)\n-26 {\n-27 std::fill(this->begin(), this->end(), 0);\n-28 }\n-29\n-_\b3_\b1 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b>& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+()\n-32 {\n-33 for (std::size_t i=0; i\n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+15 // External Forward Declarations\n+16 // -----------------------------\n+17\n+18 template< class HostGrid, class CoordFunction, class Allocator >\n+19 class GeometryGrid;\n+20\n+21 template< class >\n+22 class IdentityGrid;\n+23\n+24\n+25 // HostGridAccess\n+26 // --------------\n+27\n+28 template< class Grid >\n+29 struct HostGridAccess;\n+30\n+31\n+32\n+40 template< class HG, class CoordFunction, class Allocator >\n+_\b4_\b1 struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd< HG, CoordFunction, Allocator > >\n+42 {\n+_\b4_\b6 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b> _\bG_\br_\bi_\bd;\n+47\n+_\b4_\b9 typedef typename Grid::HostGrid _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n+50\n+57 template< int codim >\n+_\b5_\b8 struct Codim\n+59 {\n+_\b6_\b1 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+62\n+_\b6_\b4 typedef typename HostGrid::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+65 };\n+66\n+_\b6_\b8 typedef typename Grid::Traits::LeafIntersection _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+_\b7_\b0 typedef typename Grid::Traits::LevelIntersection _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+71\n+_\b7_\b3 typedef typename HostGrid::Traits::LeafIntersection _\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+_\b7_\b5 typedef typename HostGrid::Traits::LevelIntersection _\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+76\n+_\b8_\b1 static const _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd &_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd ( const _\bG_\br_\bi_\bd &grid )\n+82 {\n+83 return grid._\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd();\n+84 }\n+85\n+86 template< class Entity >\n+87 static const typename Codim< Entity::codimension >::HostEntity &\n+_\b8_\b8 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+89 {\n+90 return hostEntity< Entity::codimension >( entity );\n+91 }\n+92\n+93 template< int codim >\n+94 static const typename Codim< codim >::HostEntity &\n+_\b9_\b5 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const typename _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &entity )\n+96 {\n+97 return entity.impl().hostEntity();\n+98 }\n+99\n+100 template< class HostIntersection >\n+101 static const HostIntersection &\n+_\b1_\b0_\b2 _\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn< const _\bG_\br_\bi_\bd, _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<\n+_\bc_\bo_\bn_\bs_\bt_\b _\bG_\br_\bi_\bd_\b,_\b _\bH_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b _\b> > &intersection )\n+103 {\n+104 return intersection.impl().hostIntersection();\n+105 }\n+106 };\n+107\n+108\n+116 template< class HG >\n+_\b1_\b1_\b7 struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd< HG > >\n+118 {\n+_\b1_\b2_\b2 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b> _\bG_\br_\bi_\bd;\n+123\n+_\b1_\b2_\b5 typedef HG _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n+126\n+133 template< int codim >\n+_\b1_\b3_\b4 struct Codim\n+135 {\n+_\b1_\b3_\b7 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+138\n+_\b1_\b4_\b0 typedef typename HostGrid::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+141 };\n+142\n+_\b1_\b4_\b4 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+_\b1_\b4_\b6 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+147\n+_\b1_\b4_\b9 typedef typename HostGrid::Traits::LeafIntersection _\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+_\b1_\b5_\b1 typedef typename HostGrid::Traits::LevelIntersection _\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n+152\n+_\b1_\b5_\b7 static const _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd &_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd ( const _\bG_\br_\bi_\bd &grid )\n+158 {\n+159 return grid._\bg_\be_\bt_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd();\n+160 }\n+161\n+162 template< class Entity >\n+163 static const typename Codim< Entity::codimension >::HostEntity &\n+_\b1_\b6_\b4 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+165 {\n+166 return hostEntity< Entity::codimension >( entity );\n+167 }\n+168\n+169 template< int codim >\n+170 static const typename Codim< codim >::HostEntity &\n+_\b1_\b7_\b1 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const typename _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &entity )\n+172 {\n+173 return *entity.impl().hostEntity_;\n+174 }\n+175\n+176 static const HostLeafIntersection &\n+_\b1_\b7_\b7 _\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn ( const _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection )\n+178 {\n+179 return *intersection.impl().hostIterator_;\n+180 }\n+181\n+182 static const HostLevelIntersection &\n+_\b1_\b8_\b3 _\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn ( const _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection )\n+184 {\n+185 return *intersection.impl().hostIterator_;\n+186 }\n+187 };\n+188\n+189} // namespace Dune\n+190\n+191#endif // #ifndef DUNE_GRID_HOSTGRIDACCESS_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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 std::array< unsigned int, dim > &limits)\n-Constructor with a given range for each digit.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\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-MultiIndex< dim > & operator++()\n-Increment the MultiIndex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\ba_\bc_\bt_\bo_\br_\by_\bU_\bt_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bc_\by_\bc_\bl_\be\n-size_t cycle() const\n-Compute how many times you can call operator++ before getting to (0,...,0)\n-again.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+GridFamily::Traits::LeafIntersection LeafIntersection\n+A type that is a model of Dune::Intersection, an intersections of two\n+codimension 1 of two codimensio...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:456\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+GridFamily::Traits::LevelIntersection LevelIntersection\n+A type that is a model of Dune::Intersection, an intersections of two\n+codimension 1 of two codimensio...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:461\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+grid wrapper replacing the geometries\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b:_\b:_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+const HostGrid & hostGrid() const\n+obtain constant reference to the host grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:538\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+traits structure containing types for a codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:611\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/intersection.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd\n+Provides a meta grid that is identical to its host.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+HostGridType & getHostGrid() const\n+Returns the hostgrid this IdentityGrid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:394\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n+provides access to host grid objects from GeometryGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+Grid::HostGrid HostGrid\n+type of HostGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+HostGrid::Traits::LevelIntersection HostLevelIntersection\n+type of the host level intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity\n+&entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+static const Codim< codim >::HostEntity & hostEntity(const typename Codim<\n+codim >::Entity &entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+static const HostIntersection & hostIntersection(const Intersection< const\n+Grid, GeoGrid::Intersection< const Grid, HostIntersection > > &intersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n+GeometryGrid< HG, CoordFunction, Allocator > Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Grid::Traits::LeafIntersection LeafIntersection\n+type of the GeometryGrid leaf intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+HostGrid::Traits::LeafIntersection HostLeafIntersection\n+type of the host leaf intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+static const HostGrid & hostGrid(const Grid &grid)\n+Get underlying HostGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Grid::Traits::LevelIntersection LevelIntersection\n+type of the GeometryGrid level intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:\n+_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+HostGrid::template Codim< codim >::Entity HostEntity\n+type of the host entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:\n+_\bE_\bn_\bt_\bi_\bt_\by\n+Grid::template Codim< codim >::Entity Entity\n+type of the GeometryGrid entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Grid::Traits::LeafIntersection LeafIntersection\n+type of the IdGrid leaf intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+HG HostGrid\n+type of HostGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n+IdentityGrid< HG > Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+static const Codim< codim >::HostEntity & hostEntity(const typename Codim<\n+codim >::Entity &entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+HostGrid::Traits::LevelIntersection HostLevelIntersection\n+type of the host level intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Grid::Traits::LevelIntersection LevelIntersection\n+type of the IdGrid level intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+static const HostLeafIntersection & hostIntersection(const LeafIntersection\n+&intersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+HostGrid::Traits::LeafIntersection HostLeafIntersection\n+type of the host leaf intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity\n+&entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+static const HostLevelIntersection & hostIntersection(const LevelIntersection\n+&intersection)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:183\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd\n+static const HostGrid & hostGrid(const Grid &grid)\n+Get underlying HostGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Grid::template Codim< codim >::Entity Entity\n+type of the IdGrid entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+HostGrid::template Codim< codim >::Entity HostEntity\n+type of the host entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:140\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\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-grid-doc/doxygen/a01013.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01013.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainervector.hh File Reference\n+dune-grid: persistentcontainermap.hh File Reference\n \n \n \n \n \n \n \n@@ -72,26 +72,33 @@\n
  • dune
  • grid
  • utility
  • \n \n \n
    \n \n-
    persistentcontainervector.hh File Reference
    \n+
    persistentcontainermap.hh File Reference
    \n
    \n
    \n
    #include <algorithm>
    \n #include <cassert>
    \n+#include <type_traits>
    \n+#include <utility>
    \n+#include <dune/common/hybridutilities.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/grid/common/capabilities.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::PersistentContainerVector< G, IndexSet, Vector >
     vector-based implementation of the PersistentContainer More...
    class  Dune::PersistentContainerMap< G, IdSet, Map >
     map-based implementation of the PersistentContainer More...
     
    class  Dune::PersistentContainerMap< G, IdSet, Map >::IteratorWrapper< value, iterator >
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,21 +2,29 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-persistentcontainervector.hh File Reference\n+persistentcontainermap.hh File Reference\n #include \n #include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\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_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n-\u00a0 vector-based implementation of the _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n+\u00a0 map-based implementation of the _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bv_\ba_\bl_\bu_\be_\b,\n+ _\bi_\bt_\be_\br_\ba_\bt_\bo_\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 Include standard header files.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01013_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01013_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: persistentcontainervector.hh Source File\n+dune-grid: persistentcontainermap.hh Source File\n \n \n \n \n \n \n \n@@ -74,175 +74,387 @@\n \n
    \n \n
    \n \n
    \n-
    persistentcontainervector.hh
    \n+
    persistentcontainermap.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH
    \n-
    6#define DUNE_PERSISTENTCONTAINERVECTOR_HH
    \n+
    5#ifndef DUNE_PERSISTENTCONTAINERMAP_HH
    \n+
    6#define DUNE_PERSISTENTCONTAINERMAP_HH
    \n
    7
    \n
    8#include <algorithm>
    \n
    9#include <cassert>
    \n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13
    \n-
    14 // PersistentContainerVector
    \n-
    15 // -------------------------
    \n+
    10#include <type_traits>
    \n+
    11#include <utility>
    \n+
    12
    \n+
    13#include <dune/common/hybridutilities.hh>
    \n+
    14#include <dune/common/typetraits.hh>
    \n+\n
    16
    \n-
    49 template< class G, class IndexSet, class Vector >
    \n-
    \n-\n-
    51 {
    \n-\n-
    53
    \n-
    54 public:
    \n-
    55 typedef G Grid;
    \n-
    56
    \n-
    57 typedef typename Vector::value_type Value;
    \n-
    58 typedef typename Vector::size_type Size;
    \n-
    59 typedef typename Vector::const_iterator ConstIterator;
    \n-
    60 typedef typename Vector::iterator Iterator;
    \n-
    61
    \n-
    62 typedef typename Vector::allocator_type Allocator;
    \n-
    63
    \n-
    \n-
    64 PersistentContainerVector ( const IndexSet &indexSet, int codim, const Value &value,
    \n-
    65 const Allocator &allocator = Allocator() )
    \n-
    66 : codim_( codim ),
    \n-\n-
    68 data_( indexSet.size( codim ), value, allocator )
    \n-
    69 {}
    \n-
    \n-
    70
    \n-
    71 template< class Entity >
    \n-
    \n-
    72 const Value &operator[] ( const Entity &entity ) const
    \n-
    73 {
    \n-
    74 assert( Entity::codimension == codimension() );
    \n-
    75 const Size index = indexSet().index( entity );
    \n-
    76 assert( index < data_.size() );
    \n-
    77 return data_[ index ];
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    80 template< class Entity >
    \n-
    \n-
    81 Value &operator[] ( const Entity &entity )
    \n-
    82 {
    \n-
    83 assert( Entity::codimension == codimension() );
    \n-
    84 const Size index = indexSet().index( entity );
    \n-
    85 assert( index < data_.size() );
    \n-
    86 return data_[ index ];
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    89 template< class Entity >
    \n-
    \n-
    90 const Value &operator() ( const Entity &entity, int subEntity ) const
    \n-
    91 {
    \n-
    92 const Size index = indexSet().subIndex( entity, subEntity, codimension() );
    \n-
    93 assert( index < data_.size() );
    \n-
    94 return data_[ index ];
    \n-
    95 }
    \n-
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 // PersistentContainerMap
    \n+
    21 // ----------------------
    \n+
    22
    \n+
    24 template< class G, class IdSet, class Map >
    \n+
    \n+\n+
    26 {
    \n+\n+
    28
    \n+
    29 protected:
    \n+
    30 template< class reference, class iterator >
    \n+
    31 class IteratorWrapper;
    \n+
    32
    \n+
    33 public:
    \n+
    34 typedef G Grid;
    \n+
    35
    \n+
    36 typedef typename Map::mapped_type Value;
    \n+
    37 typedef typename Map::size_type Size;
    \n+
    38
    \n+\n+\n+
    41
    \n+
    \n+
    42 PersistentContainerMap ( const Grid &grid, int codim, const IdSet &idSet, const Value &value )
    \n+
    43 : grid_( &grid ),
    \n+
    44 codim_( codim ),
    \n+
    45 idSet_( &idSet ),
    \n+
    46 data_()
    \n+
    47 {
    \n+
    48 resize( value );
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    51 template< class Entity >
    \n+
    \n+
    52 const Value &operator[] ( const Entity &entity ) const
    \n+
    53 {
    \n+
    54 assert( Entity::codimension == codimension() );
    \n+
    55 typename Map::const_iterator pos = data_.find( idSet().id( entity ) );
    \n+
    56 assert( pos != data_.end() );
    \n+
    57 return pos->second;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    60 template< class Entity >
    \n+
    \n+
    61 Value &operator[] ( const Entity &entity )
    \n+
    62 {
    \n+
    63 assert( Entity::codimension == codimension() );
    \n+
    64 typename Map::iterator pos = data_.find( idSet().id( entity ) );
    \n+
    65 assert( pos != data_.end() );
    \n+
    66 return pos->second;
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    69 template< class Entity >
    \n+
    \n+
    70 const Value &operator() ( const Entity &entity, int subEntity ) const
    \n+
    71 {
    \n+
    72 typename Map::const_iterator pos = data_.find( idSet().subId( entity, subEntity, codimension() ) );
    \n+
    73 assert( pos != data_.end() );
    \n+
    74 return pos->second;
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    77 template< class Entity >
    \n+
    \n+
    78 Value &operator() ( const Entity &entity, int subEntity )
    \n+
    79 {
    \n+
    80 typename Map::iterator pos = data_.find( idSet().subId( entity, subEntity, codimension() ) );
    \n+
    81 assert( pos != data_.end() );
    \n+
    82 return pos->second;
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    85 Size size () const { return data_.size(); }
    \n+
    86
    \n+
    \n+
    87 void resize ( const Value &value = Value() )
    \n+
    88 {
    \n+
    89 Hybrid::forEach( std::make_index_sequence< Grid::dimension+1 >{},
    \n+
    90 [ & ]( auto i ){ if( int(i) == this->codimension() ) this->template resize< i >( value ); } );
    \n+
    91 }
    \n+
    \n+
    92
    \n+
    93 void shrinkToFit () {}
    \n+
    94
    \n+
    95 void fill ( const Value &value ) { std::fill( begin(), end(), value ); }
    \n
    96
    \n-
    97 template< class Entity >
    \n-
    \n-
    98 Value &operator() ( const Entity &entity, int subEntity )
    \n-
    99 {
    \n-
    100 const Size index = indexSet().subIndex( entity, subEntity, codimension() );
    \n-
    101 assert( index < data_.size() );
    \n-
    102 return data_[ index ];
    \n+
    \n+
    97 void swap ( This &other )
    \n+
    98 {
    \n+
    99 std::swap( grid_, other.grid_ );
    \n+
    100 std::swap( codim_, other.codim_ );
    \n+
    101 std::swap( idSet_, other.idSet_ );
    \n+
    102 std::swap( data_, other.data_ );
    \n
    103 }
    \n
    \n
    104
    \n-
    105 Size size () const { return data_.size(); }
    \n-
    106
    \n-
    \n-
    107 void resize ( const Value &value = Value() )
    \n-
    108 {
    \n-
    109 const Size indexSetSize = indexSet().size( codimension() );
    \n-
    110 data_.resize( indexSetSize, value );
    \n-
    111 }
    \n-
    \n+
    \n+\n+
    \n+\n+
    107
    \n+
    \n+\n+
    \n+\n+
    110
    \n+
    111 int codimension () const { return codim_; }
    \n
    112
    \n-
    113 void shrinkToFit () {}
    \n-
    114
    \n-
    115 void fill ( const Value &value ) { std::fill( begin(), end(), value ); }
    \n-
    116
    \n+
    113 protected:
    \n+
    114 const Grid &grid () const { return *grid_; }
    \n+
    115
    \n+
    116 template< int codim >
    \n
    \n-
    117 void swap ( This &other )
    \n-
    118 {
    \n-
    119 std::swap( codim_, other.codim_ );
    \n-
    120 std::swap( indexSet_, other.indexSet_ );
    \n-
    121 std::swap( data_, other.data_ );
    \n-
    122 }
    \n-
    \n-
    123
    \n-
    124 ConstIterator begin () const { return data_.begin(); }
    \n-
    125 Iterator begin () { return data_.begin(); }
    \n+
    117 void resize ( const Value &value );
    \n+
    118
    \n+
    119 template< int codim >
    \n+
    \n+
    120 void migrateLevel ( int level, const Value &value, Map &data,
    \n+
    121 std::integral_constant< bool, true > );
    \n+
    122
    \n+
    123 template< int codim >
    \n+
    \n+
    124 void migrateLevel ( int level, const Value &value, Map &data,
    \n+
    125 std::integral_constant< bool, false > );
    \n
    126
    \n-
    127 ConstIterator end () const { return data_.end(); }
    \n-
    128 Iterator end () { return data_.end(); }
    \n+
    \n+
    127 static void migrateEntry ( const typename IdSet::IdType &id, const Value &value,
    \n+
    128 Map &oldData, Map &newData );
    \n
    129
    \n-
    130 int codimension () const { return codim_; }
    \n+
    130 const IdSet &idSet () const { return *idSet_; }
    \n
    131
    \n-
    132 protected:
    \n-
    133 const IndexSet &indexSet () const { return *indexSet_; }
    \n-
    134
    \n-\n-\n-
    137 Vector data_;
    \n-
    138 };
    \n-
    \n+
    132 const Grid *grid_;
    \n+\n+
    134 const IdSet *idSet_;
    \n+
    135 Map data_;
    \n+
    136 };
    \n+
    137
    \n+
    138
    \n
    139
    \n-
    140} // namespace Dune
    \n-
    141
    \n-
    142#endif // #ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH
    \n+
    140 // PersistentContainerMap::IteratorWrapper
    \n+
    141 // ---------------------------------------
    \n+
    142
    \n+
    143 template< class G, class IdSet, class Map >
    \n+
    144 template< class value, class iterator >
    \n+
    \n+\n+
    146 : public iterator
    \n+
    147 {
    \n+\n+
    149
    \n+
    150 public:
    \n+
    151 IteratorWrapper ( const iterator &it ) : it_( it ) {}
    \n+
    152
    \n+
    153 operator ConstWrapper () const { return ConstWrapper( it_ ); }
    \n+
    154
    \n+
    155 value &operator* () { return it_->second; }
    \n+
    156 value *operator-> () { return &(it_->second); }
    \n+
    157
    \n+
    158 bool operator== ( const IteratorWrapper &other ) const { return (it_ == other.it_); }
    \n+
    159 bool operator!= ( const IteratorWrapper &other ) const { return (it_ != other.it_); }
    \n+
    160
    \n+
    161 IteratorWrapper &operator++ () { ++it_; return *this; }
    \n+
    162
    \n+
    163 private:
    \n+
    164 iterator it_;
    \n+
    165 };
    \n+
    \n+
    166
    \n+
    167
    \n+
    168
    \n+
    169
    \n+
    170 // Implementation of PersistentContainerMap
    \n+
    171 // ----------------------------------------
    \n+
    172
    \n+
    173 template< class G, class IdSet, class Map >
    \n+\n+
    \n+\n+
    176 {
    \n+
    177 return ConstIterator( data_.begin() );
    \n+
    178 }
    \n+
    \n+
    179
    \n+
    180 template< class G, class IdSet, class Map >
    \n+\n+
    \n+\n+
    183 {
    \n+
    184 return Iterator( data_.begin() );
    \n+
    185 }
    \n+
    \n+
    186
    \n+
    187
    \n+
    188 template< class G, class IdSet, class Map >
    \n+\n+
    \n+\n+
    191 {
    \n+
    192 return ConstIterator( data_.end() );
    \n+
    193 }
    \n+
    \n+
    194
    \n+
    195 template< class G, class IdSet, class Map >
    \n+\n+
    \n+\n+
    198 {
    \n+
    199 return Iterator( data_.end() );
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    202
    \n+
    203 template< class G, class IdSet, class Map >
    \n+
    204 template< int codim >
    \n+
    \n+\n+
    206 {
    \n+
    207 std::integral_constant< bool, Capabilities::hasEntityIterator< Grid, codim >::v > hasEntityIterator;
    \n+
    208 assert( codim == codimension() );
    \n+
    209
    \n+
    210 // create empty map and swap it with current map (no need to copy twice)
    \n+
    211 Map data;
    \n+
    212 std::swap( data, data_ );
    \n+
    213
    \n+
    214 // copy all data from old map into new one (adding new entries, if necessary)
    \n+
    215 const int maxLevel = grid().maxLevel();
    \n+
    216 for ( int level = 0; level <= maxLevel; ++level )
    \n+
    217 migrateLevel< codim >( level, value, data, hasEntityIterator );
    \n+
    218 }
    \n+
    \n+
    219
    \n+
    220
    \n+
    221 template< class G, class IdSet, class Map >
    \n+
    222 template< int codim >
    \n+\n+
    \n+
    224 ::migrateLevel ( int level, const Value &value, Map &data,
    \n+
    225 std::integral_constant< bool, true > )
    \n+
    226 {
    \n+
    227 typedef typename Grid::LevelGridView LevelView;
    \n+
    228 typedef typename LevelView::template Codim< codim >::Iterator LevelIterator;
    \n+
    229
    \n+
    230 const LevelView levelView = grid().levelGridView( level );
    \n+
    231 const LevelIterator end = levelView.template end< codim >();
    \n+
    232 for( LevelIterator it = levelView.template begin< codim >(); it != end; ++it )
    \n+
    233 migrateEntry( idSet().id( *it ), value, data, data_ );
    \n+
    234 }
    \n+
    \n+
    235
    \n+
    236
    \n+
    237 template< class G, class IdSet, class Map >
    \n+
    238 template< int codim >
    \n+\n+
    \n+
    240 ::migrateLevel ( int level, const Value &value, Map &data,
    \n+
    241 std::integral_constant< bool, false > )
    \n+
    242 {
    \n+
    243 typedef typename Grid::LevelGridView LevelView;
    \n+
    244 typedef typename LevelView::template Codim< 0 >::Iterator LevelIterator;
    \n+
    245
    \n+
    246 const LevelView levelView = grid().levelGridView( level );
    \n+
    247 const LevelIterator end = levelView.template end< 0 >();
    \n+
    248 for( LevelIterator it = levelView.template begin< 0 >(); it != end; ++it )
    \n+
    249 {
    \n+
    250 const typename LevelIterator::Entity &entity = *it;
    \n+
    251 const int subEntities = entity.subEntities( codim );
    \n+
    252 for( int i = 0; i < subEntities; ++i )
    \n+
    253 migrateEntry( idSet().subId( entity, i, codim ), value, data, data_ );
    \n+
    254 }
    \n+
    255 }
    \n+
    \n+
    256
    \n+
    257
    \n+
    258 template< class G, class IdSet, class Map >
    \n+\n+
    \n+
    260 ::migrateEntry ( const typename IdSet::IdType &id, const Value &value,
    \n+
    261 Map &oldData, Map &newData )
    \n+
    262 {
    \n+
    263 // insert entry for id
    \n+
    264 const std::pair< typename Map::iterator, bool > inserted
    \n+
    265 = newData.insert( std::make_pair( id, value ) );
    \n+
    266
    \n+
    267 // if entry did not exist previously, copy data
    \n+
    268 if( inserted.second )
    \n+
    269 {
    \n+
    270 const typename Map::iterator pos = oldData.find( id );
    \n+
    271 if( pos != oldData.end() )
    \n+
    272 {
    \n+
    273 inserted.first->second = pos->second;
    \n+
    274 oldData.erase( pos );
    \n+
    275 }
    \n+
    276 }
    \n+
    277 }
    \n+
    \n+
    \n+
    278
    \n+
    279} // namespace Dune
    \n+
    280
    \n+
    281#endif // #ifndef DUNE_PERSISTENTCONTAINERMAP_HH
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n
    static constexpr int codimension
    Know your own codimension.
    Definition common/entity.hh:106
    \n-
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n-
    auto size(GeometryType type) const
    Return total number of entities of given geometry type in entity set .
    Definition indexidset.hh:223
    \n-
    IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:153
    \n-
    IndexType index(const typename Traits::template Codim< cc >::Entity &e) const
    Map entity to index. The result of calling this method with an entity that is not in the index set is...
    Definition indexidset.hh:113
    \n-
    vector-based implementation of the PersistentContainer
    Definition persistentcontainervector.hh:51
    \n-
    PersistentContainerVector(const IndexSet &indexSet, int codim, const Value &value, const Allocator &allocator=Allocator())
    Definition persistentcontainervector.hh:64
    \n-
    Iterator begin()
    Definition persistentcontainervector.hh:125
    \n-
    Vector::size_type Size
    Definition persistentcontainervector.hh:58
    \n-
    Vector::value_type Value
    Definition persistentcontainervector.hh:57
    \n-
    Vector::allocator_type Allocator
    Definition persistentcontainervector.hh:62
    \n-
    void fill(const Value &value)
    Definition persistentcontainervector.hh:115
    \n-
    G Grid
    Definition persistentcontainervector.hh:55
    \n-
    const Value & operator()(const Entity &entity, int subEntity) const
    Definition persistentcontainervector.hh:90
    \n-
    const IndexSet * indexSet_
    Definition persistentcontainervector.hh:136
    \n-
    Vector::iterator Iterator
    Definition persistentcontainervector.hh:60
    \n-
    ConstIterator begin() const
    Definition persistentcontainervector.hh:124
    \n-
    ConstIterator end() const
    Definition persistentcontainervector.hh:127
    \n-
    int codim_
    Definition persistentcontainervector.hh:135
    \n-
    void shrinkToFit()
    Definition persistentcontainervector.hh:113
    \n-
    Vector::const_iterator ConstIterator
    Definition persistentcontainervector.hh:59
    \n-
    Vector data_
    Definition persistentcontainervector.hh:137
    \n-
    Iterator end()
    Definition persistentcontainervector.hh:128
    \n-
    const IndexSet & indexSet() const
    Definition persistentcontainervector.hh:133
    \n-
    int codimension() const
    Definition persistentcontainervector.hh:130
    \n-
    Size size() const
    Definition persistentcontainervector.hh:105
    \n-
    void swap(This &other)
    Definition persistentcontainervector.hh:117
    \n-
    const Value & operator[](const Entity &entity) const
    Definition persistentcontainervector.hh:72
    \n-
    void resize(const Value &value=Value())
    Definition persistentcontainervector.hh:107
    \n+
    Id Set Interface.
    Definition indexidset.hh:452
    \n+
    IdTypeImp IdType
    Type used to represent an id.
    Definition indexidset.hh:458
    \n+
    GridFamily::Traits::LevelGridView LevelGridView
    type of view for level grid
    Definition common/grid.hh:402
    \n+
    Export the type of the entity used as parameter in the id(...) method.
    Definition indexidset.hh:462
    \n+
    map-based implementation of the PersistentContainer
    Definition persistentcontainermap.hh:26
    \n+
    void migrateLevel(int level, const Value &value, Map &data, std::integral_constant< bool, false >)
    Definition persistentcontainermap.hh:240
    \n+
    void swap(This &other)
    Definition persistentcontainermap.hh:97
    \n+
    void fill(const Value &value)
    Definition persistentcontainermap.hh:95
    \n+
    G Grid
    Definition persistentcontainermap.hh:34
    \n+
    void resize(const Value &value)
    Definition persistentcontainermap.hh:205
    \n+
    IteratorWrapper< const Value, typename Map::const_iterator > ConstIterator
    Definition persistentcontainermap.hh:39
    \n+
    int codim_
    Definition persistentcontainermap.hh:133
    \n+
    const Grid * grid_
    Definition persistentcontainermap.hh:132
    \n+
    const Value & operator[](const Entity &entity) const
    Definition persistentcontainermap.hh:52
    \n+
    int codimension() const
    Definition persistentcontainermap.hh:111
    \n+
    void resize(const Value &value=Value())
    Definition persistentcontainermap.hh:87
    \n+
    const IdSet & idSet() const
    Definition persistentcontainermap.hh:130
    \n+
    ConstIterator begin() const
    Definition persistentcontainermap.hh:175
    \n+
    static void migrateEntry(const typename IdSet::IdType &id, const Value &value, Map &oldData, Map &newData)
    Definition persistentcontainermap.hh:260
    \n+
    Map::mapped_type Value
    Definition persistentcontainermap.hh:36
    \n+
    Iterator end()
    Definition persistentcontainermap.hh:197
    \n+
    const Grid & grid() const
    Definition persistentcontainermap.hh:114
    \n+
    const Value & operator()(const Entity &entity, int subEntity) const
    Definition persistentcontainermap.hh:70
    \n+
    PersistentContainerMap(const Grid &grid, int codim, const IdSet &idSet, const Value &value)
    Definition persistentcontainermap.hh:42
    \n+
    Iterator begin()
    Definition persistentcontainermap.hh:182
    \n+
    Map::size_type Size
    Definition persistentcontainermap.hh:37
    \n+
    ConstIterator end() const
    Definition persistentcontainermap.hh:190
    \n+
    Map data_
    Definition persistentcontainermap.hh:135
    \n+
    Size size() const
    Definition persistentcontainermap.hh:85
    \n+
    IteratorWrapper< Value, typename Map::iterator > Iterator
    Definition persistentcontainermap.hh:40
    \n+
    const IdSet * idSet_
    Definition persistentcontainermap.hh:134
    \n+
    void migrateLevel(int level, const Value &value, Map &data, std::integral_constant< bool, true >)
    Definition persistentcontainermap.hh:224
    \n+
    void shrinkToFit()
    Definition persistentcontainermap.hh:93
    \n+
    Definition persistentcontainermap.hh:147
    \n+
    IteratorWrapper(const iterator &it)
    Definition persistentcontainermap.hh:151
    \n+
    A set of traits classes to store static information about grid implementation.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,227 +1,432 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-persistentcontainervector.hh\n+persistentcontainermap.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH\n-6#define DUNE_PERSISTENTCONTAINERVECTOR_HH\n+5#ifndef DUNE_PERSISTENTCONTAINERMAP_HH\n+6#define DUNE_PERSISTENTCONTAINERMAP_HH\n 7\n 8#include \n 9#include \n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-13\n-14 // PersistentContainerVector\n-15 // -------------------------\n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n 16\n-49 template< class G, class IndexSet, class Vector >\n-_\b5_\b0 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-51 {\n-52 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\b,_\b _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b _\b> _\bT_\bh_\bi_\bs;\n-53\n-54 public:\n-_\b5_\b5 typedef G _\bG_\br_\bi_\bd;\n-56\n-_\b5_\b7 typedef typename Vector::value_type _\bV_\ba_\bl_\bu_\be;\n-_\b5_\b8 typedef typename Vector::size_type _\bS_\bi_\bz_\be;\n-_\b5_\b9 typedef typename Vector::const_iterator _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b6_\b0 typedef typename Vector::iterator _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-61\n-_\b6_\b2 typedef typename Vector::allocator_type _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br;\n-63\n-_\b6_\b4 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br ( const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt &_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt, int codim, const _\bV_\ba_\bl_\bu_\be\n-&value,\n-65 const _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br &allocator = _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br() )\n-66 : _\bc_\bo_\bd_\bi_\bm_\b_( codim ),\n-67 _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_( &_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt ),\n-68 _\bd_\ba_\bt_\ba_\b_( _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt._\bs_\bi_\bz_\be( codim ), value, allocator )\n-69 {}\n-70\n-71 template< class Entity >\n-_\b7_\b2 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n-73 {\n-74 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-75 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bi_\bn_\bd_\be_\bx( entity );\n-76 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n-77 return _\bd_\ba_\bt_\ba_\b_[ index ];\n-78 }\n-79\n-80 template< class Entity >\n-_\b8_\b1 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-82 {\n-83 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-84 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bi_\bn_\bd_\be_\bx( entity );\n-85 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n-86 return _\bd_\ba_\bt_\ba_\b_[ index ];\n-87 }\n-88\n-89 template< class Entity >\n-_\b9_\b0 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const\n-91 {\n-92 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx( entity, subEntity, _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-93 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n-94 return _\bd_\ba_\bt_\ba_\b_[ index ];\n-95 }\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 // PersistentContainerMap\n+21 // ----------------------\n+22\n+24 template< class G, class IdSet, class Map >\n+_\b2_\b5 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp\n+26 {\n+27 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+28\n+29 protected:\n+30 template< class reference, class iterator >\n+31 class _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br;\n+32\n+33 public:\n+_\b3_\b4 typedef G _\bG_\br_\bi_\bd;\n+35\n+_\b3_\b6 typedef typename Map::mapped_type _\bV_\ba_\bl_\bu_\be;\n+_\b3_\b7 typedef typename Map::size_type _\bS_\bi_\bz_\be;\n+38\n+_\b3_\b9 typedef _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bV_\ba_\bl_\bu_\be_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b4_\b0 typedef _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bV_\ba_\bl_\bu_\be_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bM_\ba_\bp_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b> _\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+41\n+_\b4_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp ( const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd, int codim, const _\bI_\bd_\bS_\be_\bt &_\bi_\bd_\bS_\be_\bt,\n+const _\bV_\ba_\bl_\bu_\be &value )\n+43 : _\bg_\br_\bi_\bd_\b_( &_\bg_\br_\bi_\bd ),\n+44 _\bc_\bo_\bd_\bi_\bm_\b_( codim ),\n+45 _\bi_\bd_\bS_\be_\bt_\b_( &_\bi_\bd_\bS_\be_\bt ),\n+46 _\bd_\ba_\bt_\ba_\b_()\n+47 {\n+48 _\br_\be_\bs_\bi_\bz_\be( value );\n+49 }\n+50\n+51 template< class Entity >\n+_\b5_\b2 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+53 {\n+54 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+55 typename Map::const_iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().id( entity ) );\n+56 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n+57 return pos->second;\n+58 }\n+59\n+60 template< class Entity >\n+_\b6_\b1 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+62 {\n+63 assert( _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n+64 typename Map::iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().id( entity ) );\n+65 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n+66 return pos->second;\n+67 }\n+68\n+69 template< class Entity >\n+_\b7_\b0 const _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity ) const\n+71 {\n+72 typename Map::const_iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().subId( entity,\n+subEntity, _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() ) );\n+73 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n+74 return pos->second;\n+75 }\n+76\n+77 template< class Entity >\n+_\b7_\b8 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity )\n+79 {\n+80 typename Map::iterator pos = _\bd_\ba_\bt_\ba_\b_.find( _\bi_\bd_\bS_\be_\bt().subId( entity, subEntity,\n+_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() ) );\n+81 assert( pos != _\bd_\ba_\bt_\ba_\b_.end() );\n+82 return pos->second;\n+83 }\n+84\n+_\b8_\b5 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const { return _\bd_\ba_\bt_\ba_\b_.size(); }\n+86\n+_\b8_\b7 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() )\n+88 {\n+89 Hybrid::forEach( std::make_index_sequence< Grid::dimension+1 >{},\n+90 [ & ]( auto i ){ if( int(i) == this->_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() ) this->template resize<\n+i >( value ); } );\n+91 }\n+92\n+_\b9_\b3 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt () {}\n+94\n+_\b9_\b5 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value ) { std::fill( _\bb_\be_\bg_\bi_\bn(), _\be_\bn_\bd(), value ); }\n 96\n-97 template< class Entity >\n-_\b9_\b8 _\bV_\ba_\bl_\bu_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, int subEntity )\n-99 {\n-100 const _\bS_\bi_\bz_\be index = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx( entity, subEntity, _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-101 assert( index < _\bd_\ba_\bt_\ba_\b_.size() );\n-102 return _\bd_\ba_\bt_\ba_\b_[ index ];\n+_\b9_\b7 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other )\n+98 {\n+99 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bg_\br_\bi_\bd_\b_, other._\bg_\br_\bi_\bd_\b_ );\n+100 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bc_\bo_\bd_\bi_\bm_\b_, other._\bc_\bo_\bd_\bi_\bm_\b_ );\n+101 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bi_\bd_\bS_\be_\bt_\b_, other._\bi_\bd_\bS_\be_\bt_\b_ );\n+102 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bd_\ba_\bt_\ba_\b_, other._\bd_\ba_\bt_\ba_\b_ );\n 103 }\n 104\n-_\b1_\b0_\b5 _\bS_\bi_\bz_\be _\bs_\bi_\bz_\be () const { return _\bd_\ba_\bt_\ba_\b_.size(); }\n-106\n-_\b1_\b0_\b7 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value = _\bV_\ba_\bl_\bu_\be() )\n-108 {\n-109 const _\bS_\bi_\bz_\be indexSetSize = _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt()._\bs_\bi_\bz_\be( _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn() );\n-110 _\bd_\ba_\bt_\ba_\b_.resize( indexSetSize, value );\n-111 }\n+_\b1_\b0_\b5 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const;\n+_\b1_\b0_\b6 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn ();\n+107\n+_\b1_\b0_\b8 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const;\n+_\b1_\b0_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd ();\n+110\n+_\b1_\b1_\b1 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const { return _\bc_\bo_\bd_\bi_\bm_\b_; }\n 112\n-_\b1_\b1_\b3 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt () {}\n-114\n-_\b1_\b1_\b5 void _\bf_\bi_\bl_\bl ( const _\bV_\ba_\bl_\bu_\be &value ) { std::fill( _\bb_\be_\bg_\bi_\bn(), _\be_\bn_\bd(), value ); }\n-116\n-_\b1_\b1_\b7 void _\bs_\bw_\ba_\bp ( _\bT_\bh_\bi_\bs &other )\n-118 {\n-119 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bc_\bo_\bd_\bi_\bm_\b_, other._\bc_\bo_\bd_\bi_\bm_\b_ );\n-120 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_, other._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_ );\n-121 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( _\bd_\ba_\bt_\ba_\b_, other._\bd_\ba_\bt_\ba_\b_ );\n-122 }\n-123\n-_\b1_\b2_\b4 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const { return _\bd_\ba_\bt_\ba_\b_.begin(); }\n-_\b1_\b2_\b5 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () { return _\bd_\ba_\bt_\ba_\b_.begin(); }\n+113 protected:\n+_\b1_\b1_\b4 const _\bG_\br_\bi_\bd &_\bg_\br_\bi_\bd () const { return *_\bg_\br_\bi_\bd_\b_; }\n+115\n+116 template< int codim >\n+_\b1_\b1_\b7 void _\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be &value );\n+118\n+119 template< int codim >\n+_\b1_\b2_\b0 void _\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n+121 std::integral_constant< bool, true > );\n+122\n+123 template< int codim >\n+_\b1_\b2_\b4 void _\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n+125 std::integral_constant< bool, false > );\n 126\n-_\b1_\b2_\b7 _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const { return _\bd_\ba_\bt_\ba_\b_.end(); }\n-_\b1_\b2_\b8 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () { return _\bd_\ba_\bt_\ba_\b_.end(); }\n+_\b1_\b2_\b7 static void _\bm_\bi_\bg_\br_\ba_\bt_\be_\bE_\bn_\bt_\br_\by ( const typename _\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be &id, const _\bV_\ba_\bl_\bu_\be\n+&value,\n+128 Map &oldData, Map &newData );\n 129\n-_\b1_\b3_\b0 int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn () const { return _\bc_\bo_\bd_\bi_\bm_\b_; }\n+_\b1_\b3_\b0 const _\bI_\bd_\bS_\be_\bt &_\bi_\bd_\bS_\be_\bt () const { return *_\bi_\bd_\bS_\be_\bt_\b_; }\n 131\n-132 protected:\n-_\b1_\b3_\b3 const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt &_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt () const { return *_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_; }\n-134\n-_\b1_\b3_\b5 int _\bc_\bo_\bd_\bi_\bm_\b_;\n-_\b1_\b3_\b6 const _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt *_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_;\n-_\b1_\b3_\b7 Vector _\bd_\ba_\bt_\ba_\b_;\n-138 };\n+_\b1_\b3_\b2 const _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd_\b_;\n+_\b1_\b3_\b3 int _\bc_\bo_\bd_\bi_\bm_\b_;\n+_\b1_\b3_\b4 const _\bI_\bd_\bS_\be_\bt *_\bi_\bd_\bS_\be_\bt_\b_;\n+_\b1_\b3_\b5 Map _\bd_\ba_\bt_\ba_\b_;\n+136 };\n+137\n+138\n 139\n-140} // namespace Dune\n-141\n-142#endif // #ifndef DUNE_PERSISTENTCONTAINERVECTOR_HH\n+140 // PersistentContainerMap::IteratorWrapper\n+141 // ---------------------------------------\n+142\n+143 template< class G, class IdSet, class Map >\n+144 template< class value, class iterator >\n+_\b1_\b4_\b5 class _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+146 : public iterator\n+147 {\n+148 typedef _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bv_\ba_\bl_\bu_\be_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+_\bC_\bo_\bn_\bs_\bt_\bW_\br_\ba_\bp_\bp_\be_\br;\n+149\n+150 public:\n+_\b1_\b5_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br ( const iterator &it ) : it_( it ) {}\n+152\n+_\b1_\b5_\b3 operator _\bC_\bo_\bn_\bs_\bt_\bW_\br_\ba_\bp_\bp_\be_\br () const { return _\bC_\bo_\bn_\bs_\bt_\bW_\br_\ba_\bp_\bp_\be_\br( it_ ); }\n+154\n+_\b1_\b5_\b5 value &operator* () { return it_->second; }\n+_\b1_\b5_\b6 value *operator-> () { return &(it_->second); }\n+157\n+_\b1_\b5_\b8 bool operator== ( const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br &other ) const { return (it_ ==\n+other.it_); }\n+_\b1_\b5_\b9 bool operator!= ( const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br &other ) const { return (it_ !=\n+other.it_); }\n+160\n+_\b1_\b6_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br &operator++ () { ++it_; return *this; }\n+162\n+163 private:\n+164 iterator it_;\n+165 };\n+166\n+167\n+168\n+169\n+170 // Implementation of PersistentContainerMap\n+171 // ----------------------------------------\n+172\n+173 template< class G, class IdSet, class Map >\n+174 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b1_\b7_\b5 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bb_\be_\bg_\bi_\bn () const\n+176 {\n+177 return _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.begin() );\n+178 }\n+179\n+180 template< class G, class IdSet, class Map >\n+181 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b1_\b8_\b2 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bb_\be_\bg_\bi_\bn ()\n+183 {\n+184 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.begin() );\n+185 }\n+186\n+187\n+188 template< class G, class IdSet, class Map >\n+189 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b1_\b9_\b0 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\be_\bn_\bd () const\n+191 {\n+192 return _\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.end() );\n+193 }\n+194\n+195 template< class G, class IdSet, class Map >\n+196 inline typename _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b1_\b9_\b7 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\be_\bn_\bd ()\n+198 {\n+199 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br( data_.end() );\n+200 }\n+201\n+202\n+203 template< class G, class IdSet, class Map >\n+204 template< int codim >\n+_\b2_\b0_\b5 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be ( const _\bV_\ba_\bl_\bu_\be\n+&value )\n+206 {\n+207 std::integral_constant< bool, Capabilities::hasEntityIterator< Grid, codim\n+>::v > hasEntityIterator;\n+208 assert( codim == codimension() );\n+209\n+210 // create empty map and swap it with current map (no need to copy twice)\n+211 Map data;\n+212 _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp( data, data_ );\n+213\n+214 // copy all data from old map into new one (adding new entries, if\n+necessary)\n+215 const int maxLevel = grid().maxLevel();\n+216 for ( int level = 0; level <= maxLevel; ++level )\n+217 migrateLevel< codim >( level, value, data, hasEntityIterator );\n+218 }\n+219\n+220\n+221 template< class G, class IdSet, class Map >\n+222 template< int codim >\n+223 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n+_\b2_\b2_\b4_\b _\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n+225 std::integral_constant< bool, true > )\n+226 {\n+227 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw LevelView;\n+228 typedef typename LevelView::template Codim< codim >::Iterator\n+LevelIterator;\n+229\n+230 const LevelView levelView = grid().levelGridView( level );\n+231 const LevelIterator end = levelView.template end< codim >();\n+232 for( LevelIterator it = levelView.template begin< codim >(); it != end;\n+++it )\n+233 migrateEntry( idSet().id( *it ), value, data, data_ );\n+234 }\n+235\n+236\n+237 template< class G, class IdSet, class Map >\n+238 template< int codim >\n+239 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n+_\b2_\b4_\b0_\b _\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl ( int level, const _\bV_\ba_\bl_\bu_\be &value, Map &data,\n+241 std::integral_constant< bool, false > )\n+242 {\n+243 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw LevelView;\n+244 typedef typename LevelView::template Codim< 0 >::Iterator LevelIterator;\n+245\n+246 const LevelView levelView = grid().levelGridView( level );\n+247 const LevelIterator end = levelView.template end< 0 >();\n+248 for( LevelIterator it = levelView.template begin< 0 >(); it != end; ++it )\n+249 {\n+250 const typename LevelIterator::Entity &entity = *it;\n+251 const int subEntities = entity.subEntities( codim );\n+252 for( int i = 0; i < subEntities; ++i )\n+253 migrateEntry( idSet().subId( entity, i, codim ), value, data, data_ );\n+254 }\n+255 }\n+256\n+257\n+258 template< class G, class IdSet, class Map >\n+259 inline void _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b<_\b _\bG_\b,_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bM_\ba_\bp_\b _\b>\n+_\b2_\b6_\b0_\b _\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bE_\bn_\bt_\br_\by ( const typename _\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be &id, const _\bV_\ba_\bl_\bu_\be &value,\n+261 Map &oldData, Map &newData )\n+262 {\n+263 // insert entry for id\n+264 const std::pair< typename Map::iterator, bool > inserted\n+265 = newData.insert( std::make_pair( id, value ) );\n+266\n+267 // if entry did not exist previously, copy data\n+268 if( inserted.second )\n+269 {\n+270 const typename Map::iterator pos = oldData.find( id );\n+271 if( pos != oldData.end() )\n+272 {\n+273 inserted.first->second = pos->second;\n+274 oldData.erase( pos );\n+275 }\n+276 }\n+277 }\n+278\n+279} // namespace Dune\n+280\n+281#endif // #ifndef DUNE_PERSISTENTCONTAINERMAP_HH\n _\bs_\bt_\bd_\b:_\b:_\bs_\bw_\ba_\bp\n void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T\n > &b)\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn utility/persistentcontainer.hh:83\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n Wrapper class for entities.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n static constexpr int codimension\n Know your own codimension.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Index Set Interface base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-auto size(GeometryType type) const\n-Return total number of entities of given geometry type in entity set .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int\n-i, unsigned int codim) const\n-Map a subentity to an index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-IndexType index(const typename Traits::template Codim< cc >::Entity &e) const\n-Map entity to index. The result of calling this method with an entity that is\n-not in the index set is...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-vector-based implementation of the PersistentContainer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n-PersistentContainerVector(const IndexSet &indexSet, int codim, const Value\n-&value, const Allocator &allocator=Allocator())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bS_\bi_\bz_\be\n-Vector::size_type Size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n-Vector::value_type Value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br\n-Vector::allocator_type Allocator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bf_\bi_\bl_\bl\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+Id Set Interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n+IdTypeImp IdType\n+Type used to represent an id.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:458\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+GridFamily::Traits::LevelGridView LevelGridView\n+type of view for level grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:402\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+Export the type of the entity used as parameter in the id(...) method.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:462\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp\n+map-based implementation of the PersistentContainer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl\n+void migrateLevel(int level, const Value &value, Map &data, std::\n+integral_constant< bool, false >)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bw_\ba_\bp\n+void swap(This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bf_\bi_\bl_\bl\n void fill(const Value &value)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bG_\br_\bi_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bG_\br_\bi_\bd\n G Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Value & operator()(const Entity &entity, int subEntity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt_\b_\n-const IndexSet * indexSet_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Vector::iterator Iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-ConstIterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\be_\bn_\bd\n-ConstIterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\b_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Value &value)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IteratorWrapper< const Value, typename Map::const_iterator > ConstIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\b_\n int codim_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Vector::const_iterator ConstIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bd_\ba_\bt_\ba_\b_\n-Vector data_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\be_\bn_\bd\n-Iterator end()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n-const IndexSet & indexSet() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-int codimension() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n-Size size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bw_\ba_\bp\n-void swap(This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bg_\br_\bi_\bd_\b_\n+const Grid * grid_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n const Value & operator[](const Entity &entity) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+int codimension() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n void resize(const Value &value=Value())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainervector.hh:107\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bi_\bd_\bS_\be_\bt\n+const IdSet & idSet() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+ConstIterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bE_\bn_\bt_\br_\by\n+static void migrateEntry(const typename IdSet::IdType &id, const Value &value,\n+Map &oldData, Map &newData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:260\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+Map::mapped_type Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\be_\bn_\bd\n+Iterator end()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bg_\br_\bi_\bd\n+const Grid & grid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Value & operator()(const Entity &entity, int subEntity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp\n+PersistentContainerMap(const Grid &grid, int codim, const IdSet &idSet, const\n+Value &value)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+Iterator begin()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bS_\bi_\bz_\be\n+Map::size_type Size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\be_\bn_\bd\n+ConstIterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:190\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bd_\ba_\bt_\ba_\b_\n+Map data_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bi_\bz_\be\n+Size size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+IteratorWrapper< Value, typename Map::iterator > Iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bi_\bd_\bS_\be_\bt_\b_\n+const IdSet * idSet_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bm_\bi_\bg_\br_\ba_\bt_\be_\bL_\be_\bv_\be_\bl\n+void migrateLevel(int level, const Value &value, Map &data, std::\n+integral_constant< bool, true >)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bW_\br_\ba_\bp_\bp_\be_\br\n+IteratorWrapper(const iterator &it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:151\n+_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n+A set of traits classes to store static information about grid implementation.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01016.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01016.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hostgridaccess.hh File Reference\n+dune-grid: vertexorderfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -72,33 +72,33 @@\n
  • dune
  • grid
  • utility
  • \n \n \n
    \n \n-
    hostgridaccess.hh File Reference
    \n+
    vertexorderfactory.hh File Reference
    \n
    \n
    \n-
    #include <string>
    \n-#include <dune/grid/geometrygrid/intersection.hh>
    \n+
    #include <algorithm>
    \n+#include <cstddef>
    \n+#include <functional>
    \n+#include <vector>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/generalvertexorder.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n \n-\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >
    class  Dune::VertexOrderByIdFactory< IdSet, Index >
     Factory for GeneralVertexOrder objects using an IdSet. More...
     
    struct  Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >::Codim< codim >
     A Traits struct that collects return types of class member methods. More...
     
    struct  Dune::HostGridAccess< IdentityGrid< HG > >
     
    struct  Dune::HostGridAccess< IdentityGrid< HG > >::Codim< codim >
     A Traits struct that collects return types of class member methods. More...
    struct  Dune::VertexOrderByIdFactory< IdSet, Index >::VertexOrder< dim >
     type of vertex order object may depend on the dimension of the element More...
     
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,30 +2,28 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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-hostgridaccess.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+vertexorderfactory.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bI_\bn_\bd_\be_\bx_\b _\b>\n+\u00a0 Factory for GeneralVertexOrder objects using an _\bI_\bd_\bS_\be_\bt. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n- _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n-\u00a0 A Traits struct that collects return types of class member methods.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>\n-\u00a0 A Traits struct that collects return types of class member methods.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bd_\bS_\be_\bt_\b,_\b _\bI_\bn_\bd_\be_\bx_\b _\b>_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 type of vertex order object may depend on the dimension of the element\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 Include standard header files.\n \u00a0\n ===============================================================================\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01016_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01016_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: hostgridaccess.hh Source File\n+dune-grid: vertexorderfactory.hh Source File\n \n \n \n \n \n \n \n@@ -74,219 +74,82 @@\n \n
    \n \n
    \n \n
    \n-
    hostgridaccess.hh
    \n+
    vertexorderfactory.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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_HOSTGRIDACCESS_HH
    \n-
    6#define DUNE_GRID_HOSTGRIDACCESS_HH
    \n-
    7
    \n-
    8#include <string>
    \n-
    9
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    15 // External Forward Declarations
    \n-
    16 // -----------------------------
    \n-
    17
    \n-
    18 template< class HostGrid, class CoordFunction, class Allocator >
    \n-
    19 class GeometryGrid;
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH
    \n+
    7#define DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH
    \n+
    8
    \n+
    9#include <algorithm>
    \n+
    10#include <cstddef>
    \n+
    11#include <functional>
    \n+
    12#include <vector>
    \n+
    13
    \n+
    14#include <dune/geometry/referenceelements.hh>
    \n+
    15#include <dune/geometry/generalvertexorder.hh>
    \n+
    16
    \n+
    17namespace Dune {
    \n+
    18
    \n
    20
    \n-
    21 template< class >
    \n-
    22 class IdentityGrid;
    \n-
    23
    \n-
    24
    \n-
    25 // HostGridAccess
    \n-
    26 // --------------
    \n-
    27
    \n-
    28 template< class Grid >
    \n-
    29 struct HostGridAccess;
    \n-
    30
    \n-
    31
    \n-
    32
    \n-
    40 template< class HG, class CoordFunction, class Allocator >
    \n-
    \n-
    41 struct HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >
    \n-
    42 {
    \n-\n-
    47
    \n-
    49 typedef typename Grid::HostGrid HostGrid;
    \n-
    50
    \n-
    57 template< int codim >
    \n-
    \n-
    58 struct Codim
    \n-
    59 {
    \n-\n-
    62
    \n-
    64 typedef typename HostGrid::template Codim< codim >::Entity HostEntity;
    \n-
    65 };
    \n-
    \n-
    66
    \n-
    68 typedef typename Grid::Traits::LeafIntersection LeafIntersection;
    \n-
    70 typedef typename Grid::Traits::LevelIntersection LevelIntersection;
    \n-
    71
    \n-
    73 typedef typename HostGrid::Traits::LeafIntersection HostLeafIntersection;
    \n-
    75 typedef typename HostGrid::Traits::LevelIntersection HostLevelIntersection;
    \n-
    76
    \n-
    \n-
    81 static const HostGrid &hostGrid ( const Grid &grid )
    \n-
    82 {
    \n-
    83 return grid.hostGrid();
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    86 template< class Entity >
    \n-
    87 static const typename Codim< Entity::codimension >::HostEntity &
    \n-
    \n-
    88 hostEntity ( const Entity &entity )
    \n-
    89 {
    \n-
    90 return hostEntity< Entity::codimension >( entity );
    \n-
    91 }
    \n-
    \n-
    92
    \n-
    93 template< int codim >
    \n-
    94 static const typename Codim< codim >::HostEntity &
    \n-
    \n-
    95 hostEntity ( const typename Codim< codim >::Entity &entity )
    \n-
    96 {
    \n-
    97 return entity.impl().hostEntity();
    \n-
    98 }
    \n-
    \n-
    99
    \n-
    100 template< class HostIntersection >
    \n-
    101 static const HostIntersection &
    \n-
    \n-\n-
    103 {
    \n-
    104 return intersection.impl().hostIntersection();
    \n-
    105 }
    \n-
    \n-
    106 };
    \n-
    \n-
    107
    \n-
    108
    \n-
    116 template< class HG >
    \n-
    \n-\n-
    118 {
    \n-\n-
    123
    \n-
    125 typedef HG HostGrid;
    \n-
    126
    \n-
    133 template< int codim >
    \n-
    \n-
    134 struct Codim
    \n-
    135 {
    \n-\n-
    138
    \n-
    140 typedef typename HostGrid::template Codim< codim >::Entity HostEntity;
    \n-
    141 };
    \n-
    \n-
    142
    \n-\n-\n-
    147
    \n-
    149 typedef typename HostGrid::Traits::LeafIntersection HostLeafIntersection;
    \n-
    151 typedef typename HostGrid::Traits::LevelIntersection HostLevelIntersection;
    \n-
    152
    \n-
    \n-
    157 static const HostGrid &hostGrid ( const Grid &grid )
    \n-
    158 {
    \n-
    159 return grid.getHostGrid();
    \n-
    160 }
    \n-
    \n-
    161
    \n-
    162 template< class Entity >
    \n-
    163 static const typename Codim< Entity::codimension >::HostEntity &
    \n-
    \n-
    164 hostEntity ( const Entity &entity )
    \n-
    165 {
    \n-
    166 return hostEntity< Entity::codimension >( entity );
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    169 template< int codim >
    \n-
    170 static const typename Codim< codim >::HostEntity &
    \n-
    \n-
    171 hostEntity ( const typename Codim< codim >::Entity &entity )
    \n-
    172 {
    \n-
    173 return *entity.impl().hostEntity_;
    \n-
    174 }
    \n-
    \n-
    175
    \n-
    176 static const HostLeafIntersection &
    \n-
    \n-
    177 hostIntersection ( const LeafIntersection &intersection )
    \n-
    178 {
    \n-
    179 return *intersection.impl().hostIterator_;
    \n-
    180 }
    \n-
    \n-
    181
    \n-
    182 static const HostLevelIntersection &
    \n-
    \n-
    183 hostIntersection ( const LevelIntersection &intersection )
    \n-
    184 {
    \n-
    185 return *intersection.impl().hostIterator_;
    \n-
    186 }
    \n-
    \n-
    187 };
    \n-
    \n-
    188
    \n-
    189} // namespace Dune
    \n-
    190
    \n-
    191#endif // #ifndef DUNE_GRID_HOSTGRIDACCESS_HH
    \n+
    31 template<class IdSet, class Index = std::size_t>
    \n+
    \n+\n+
    33 const IdSet& idset;
    \n+
    34
    \n+
    35 public:
    \n+
    37 template<std::size_t dim>
    \n+
    \n+
    38 struct VertexOrder {
    \n+
    40 typedef GeneralVertexOrder<dim, Index> type;
    \n+
    41 };
    \n+
    \n+
    42
    \n+
    44
    \n+
    53 VertexOrderByIdFactory(const IdSet &idset_) : idset(idset_) { }
    \n+
    54
    \n+
    56
    \n+
    62 template<typename Element>
    \n+\n+
    \n+
    64 make(const Element &e) const {
    \n+
    65
    \n+
    66 std::size_t size = referenceElement(e.geometry()).size(Element::mydimension);
    \n+
    67
    \n+
    68 std::vector<typename IdSet::IdType> ids(size);
    \n+
    69 for(std::size_t i = 0; i < size; ++i)
    \n+
    70 ids[i] = idset.subId(e, i, Element::mydimension);
    \n+
    71 return GeneralVertexOrder<Element::mydimension, Index>
    \n+
    72 (e.type(), ids.begin(), ids.end());
    \n+
    73 }
    \n+
    \n+
    74 };
    \n+
    \n+
    75
    \n+
    76} // namespace Dune
    \n+
    77
    \n+
    78#endif // DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n-
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n-
    GridFamily::Traits::LeafIntersection LeafIntersection
    A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
    Definition common/grid.hh:456
    \n-
    GridFamily::Traits::LevelIntersection LevelIntersection
    A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
    Definition common/grid.hh:461
    \n-
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n-
    grid wrapper replacing the geometries
    Definition geometrygrid/grid.hh:86
    \n-
    const HostGrid & hostGrid() const
    obtain constant reference to the host grid
    Definition geometrygrid/grid.hh:538
    \n-
    traits structure containing types for a codimension
    Definition geometrygrid/grid.hh:611
    \n-
    Definition geometrygrid/intersection.hh:22
    \n-
    Provides a meta grid that is identical to its host.
    Definition identitygrid.hh:88
    \n-
    HostGridType & getHostGrid() const
    Returns the hostgrid this IdentityGrid lives in.
    Definition identitygrid.hh:394
    \n-
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n-
    Grid::HostGrid HostGrid
    type of HostGrid
    Definition hostgridaccess.hh:49
    \n-
    HostGrid::Traits::LevelIntersection HostLevelIntersection
    type of the host level intersection
    Definition hostgridaccess.hh:75
    \n-
    static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
    Definition hostgridaccess.hh:88
    \n-
    static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
    Definition hostgridaccess.hh:95
    \n-
    static const HostIntersection & hostIntersection(const Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > &intersection)
    Definition hostgridaccess.hh:102
    \n-
    GeometryGrid< HG, CoordFunction, Allocator > Grid
    Definition hostgridaccess.hh:46
    \n-
    Grid::Traits::LeafIntersection LeafIntersection
    type of the GeometryGrid leaf intersection
    Definition hostgridaccess.hh:68
    \n-
    HostGrid::Traits::LeafIntersection HostLeafIntersection
    type of the host leaf intersection
    Definition hostgridaccess.hh:73
    \n-
    static const HostGrid & hostGrid(const Grid &grid)
    Get underlying HostGrid.
    Definition hostgridaccess.hh:81
    \n-
    Grid::Traits::LevelIntersection LevelIntersection
    type of the GeometryGrid level intersection
    Definition hostgridaccess.hh:70
    \n-
    HostGrid::template Codim< codim >::Entity HostEntity
    type of the host entity
    Definition hostgridaccess.hh:64
    \n-
    Grid::template Codim< codim >::Entity Entity
    type of the GeometryGrid entity
    Definition hostgridaccess.hh:61
    \n-
    Grid::Traits::LeafIntersection LeafIntersection
    type of the IdGrid leaf intersection
    Definition hostgridaccess.hh:144
    \n-
    HG HostGrid
    type of HostGrid
    Definition hostgridaccess.hh:125
    \n-
    IdentityGrid< HG > Grid
    Definition hostgridaccess.hh:122
    \n-
    static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
    Definition hostgridaccess.hh:171
    \n-
    HostGrid::Traits::LevelIntersection HostLevelIntersection
    type of the host level intersection
    Definition hostgridaccess.hh:151
    \n-
    Grid::Traits::LevelIntersection LevelIntersection
    type of the IdGrid level intersection
    Definition hostgridaccess.hh:146
    \n-
    static const HostLeafIntersection & hostIntersection(const LeafIntersection &intersection)
    Definition hostgridaccess.hh:177
    \n-
    HostGrid::Traits::LeafIntersection HostLeafIntersection
    type of the host leaf intersection
    Definition hostgridaccess.hh:149
    \n-
    static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
    Definition hostgridaccess.hh:164
    \n-
    static const HostLevelIntersection & hostIntersection(const LevelIntersection &intersection)
    Definition hostgridaccess.hh:183
    \n-
    static const HostGrid & hostGrid(const Grid &grid)
    Get underlying HostGrid.
    Definition hostgridaccess.hh:157
    \n-
    Grid::template Codim< codim >::Entity Entity
    type of the IdGrid entity
    Definition hostgridaccess.hh:137
    \n-
    HostGrid::template Codim< codim >::Entity HostEntity
    type of the host entity
    Definition hostgridaccess.hh:140
    \n-\n+
    auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo) -> decltype(referenceElement(geo, geo.impl()))
    Definition common/geometry.hh:558
    \n+
    Id Set Interface.
    Definition indexidset.hh:452
    \n+
    IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Get id of subentity i of co-dimension codim of a co-dimension 0 entity.
    Definition indexidset.hh:486
    \n+
    Factory for GeneralVertexOrder objects using an IdSet.
    Definition vertexorderfactory.hh:32
    \n+
    VertexOrderByIdFactory(const IdSet &idset_)
    construct a factory object
    Definition vertexorderfactory.hh:53
    \n+
    VertexOrder< Element::mydimension >::type make(const Element &e) const
    construct a vertex ordering object
    Definition vertexorderfactory.hh:64
    \n+
    type of vertex order object may depend on the dimension of the element
    Definition vertexorderfactory.hh:38
    \n+
    GeneralVertexOrder< dim, Index > type
    type of vertex order object
    Definition vertexorderfactory.hh:40
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,303 +1,96 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-hostgridaccess.hh\n+vertexorderfactory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_HOSTGRIDACCESS_HH\n-6#define DUNE_GRID_HOSTGRIDACCESS_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-15 // External Forward Declarations\n-16 // -----------------------------\n-17\n-18 template< class HostGrid, class CoordFunction, class Allocator >\n-19 class GeometryGrid;\n+5\n+6#ifndef DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH\n+7#define DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \n+13\n+14#include \n+15#include \n+16\n+17namespace _\bD_\bu_\bn_\be {\n+18\n 20\n-21 template< class >\n-22 class IdentityGrid;\n-23\n-24\n-25 // HostGridAccess\n-26 // --------------\n-27\n-28 template< class Grid >\n-29 struct HostGridAccess;\n-30\n-31\n-32\n-40 template< class HG, class CoordFunction, class Allocator >\n-_\b4_\b1 struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd< HG, CoordFunction, Allocator > >\n-42 {\n-_\b4_\b6 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b> _\bG_\br_\bi_\bd;\n-47\n-_\b4_\b9 typedef typename Grid::HostGrid _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n-50\n-57 template< int codim >\n-_\b5_\b8 struct Codim\n-59 {\n-_\b6_\b1 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-62\n-_\b6_\b4 typedef typename HostGrid::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-65 };\n-66\n-_\b6_\b8 typedef typename Grid::Traits::LeafIntersection _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-_\b7_\b0 typedef typename Grid::Traits::LevelIntersection _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-71\n-_\b7_\b3 typedef typename HostGrid::Traits::LeafIntersection _\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-_\b7_\b5 typedef typename HostGrid::Traits::LevelIntersection _\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-76\n-_\b8_\b1 static const _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd &_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd ( const _\bG_\br_\bi_\bd &grid )\n-82 {\n-83 return grid._\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd();\n-84 }\n-85\n-86 template< class Entity >\n-87 static const typename Codim< Entity::codimension >::HostEntity &\n-_\b8_\b8 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-89 {\n-90 return hostEntity< Entity::codimension >( entity );\n-91 }\n-92\n-93 template< int codim >\n-94 static const typename Codim< codim >::HostEntity &\n-_\b9_\b5 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const typename _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &entity )\n-96 {\n-97 return entity.impl().hostEntity();\n-98 }\n-99\n-100 template< class HostIntersection >\n-101 static const HostIntersection &\n-_\b1_\b0_\b2 _\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn< const _\bG_\br_\bi_\bd, _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<\n-_\bc_\bo_\bn_\bs_\bt_\b _\bG_\br_\bi_\bd_\b,_\b _\bH_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b _\b> > &intersection )\n-103 {\n-104 return intersection.impl().hostIntersection();\n-105 }\n-106 };\n-107\n-108\n-116 template< class HG >\n-_\b1_\b1_\b7 struct _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs< _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd< HG > >\n-118 {\n-_\b1_\b2_\b2 typedef _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b> _\bG_\br_\bi_\bd;\n-123\n-_\b1_\b2_\b5 typedef HG _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd;\n-126\n-133 template< int codim >\n-_\b1_\b3_\b4 struct Codim\n-135 {\n-_\b1_\b3_\b7 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-138\n-_\b1_\b4_\b0 typedef typename HostGrid::template _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-141 };\n-142\n-_\b1_\b4_\b4 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-_\b1_\b4_\b6 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-147\n-_\b1_\b4_\b9 typedef typename HostGrid::Traits::LeafIntersection _\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-_\b1_\b5_\b1 typedef typename HostGrid::Traits::LevelIntersection _\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn;\n-152\n-_\b1_\b5_\b7 static const _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd &_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd ( const _\bG_\br_\bi_\bd &grid )\n-158 {\n-159 return grid._\bg_\be_\bt_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd();\n-160 }\n-161\n-162 template< class Entity >\n-163 static const typename Codim< Entity::codimension >::HostEntity &\n-_\b1_\b6_\b4 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n-165 {\n-166 return hostEntity< Entity::codimension >( entity );\n-167 }\n-168\n-169 template< int codim >\n-170 static const typename Codim< codim >::HostEntity &\n-_\b1_\b7_\b1 _\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const typename _\bC_\bo_\bd_\bi_\bm_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by &entity )\n-172 {\n-173 return *entity.impl().hostEntity_;\n-174 }\n-175\n-176 static const HostLeafIntersection &\n-_\b1_\b7_\b7 _\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn ( const _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection )\n-178 {\n-179 return *intersection.impl().hostIterator_;\n-180 }\n-181\n-182 static const HostLevelIntersection &\n-_\b1_\b8_\b3 _\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn ( const _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection )\n-184 {\n-185 return *intersection.impl().hostIterator_;\n-186 }\n-187 };\n-188\n-189} // namespace Dune\n-190\n-191#endif // #ifndef DUNE_GRID_HOSTGRIDACCESS_HH\n+31 template\n+_\b3_\b2 class _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+33 const _\bI_\bd_\bS_\be_\bt& idset;\n+34\n+35 public:\n+37 template\n+_\b3_\b8 struct _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br {\n+_\b4_\b0 typedef GeneralVertexOrder _\bt_\by_\bp_\be;\n+41 };\n+42\n+44\n+_\b5_\b3 _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by(const _\bI_\bd_\bS_\be_\bt &idset_) : idset(idset_) { }\n+54\n+56\n+62 template\n+63 typename _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b<_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b>_\b:_\b:_\bt_\by_\bp_\be\n+_\b6_\b4 _\bm_\ba_\bk_\be(const Element &e) const {\n+65\n+66 std::size_t size = _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(e.geometry()).size(Element::\n+mydimension);\n+67\n+68 std::vector ids(size);\n+69 for(std::size_t i = 0; i < size; ++i)\n+70 ids[i] = idset._\bs_\bu_\bb_\bI_\bd(e, i, Element::mydimension);\n+71 return GeneralVertexOrder\n+72 (e.type(), ids.begin(), ids.end());\n+73 }\n+74 };\n+75\n+76} // namespace Dune\n+77\n+78#endif // DUNE_GRID_UTILITY_VERTEXORDERFACTORY_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n-element or with the d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Wrapper class for entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-GridFamily::Traits::LeafIntersection LeafIntersection\n-A type that is a model of Dune::Intersection, an intersections of two\n-codimension 1 of two codimensio...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:456\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-GridFamily::Traits::LevelIntersection LevelIntersection\n-A type that is a model of Dune::Intersection, an intersections of two\n-codimension 1 of two codimensio...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:461\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A Traits struct that collects all associated types of one implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n-grid wrapper replacing the geometries\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b:_\b:_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-const HostGrid & hostGrid() const\n-obtain constant reference to the host grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:538\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-traits structure containing types for a codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:611\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/intersection.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd\n-Provides a meta grid that is identical to its host.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b:_\b:_\bg_\be_\bt_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-HostGridType & getHostGrid() const\n-Returns the hostgrid this IdentityGrid lives in.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:394\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n-provides access to host grid objects from GeometryGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-Grid::HostGrid HostGrid\n-type of HostGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-HostGrid::Traits::LevelIntersection HostLevelIntersection\n-type of the host level intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity\n-&entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-static const Codim< codim >::HostEntity & hostEntity(const typename Codim<\n-codim >::Entity &entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-static const HostIntersection & hostIntersection(const Intersection< const\n-Grid, GeoGrid::Intersection< const Grid, HostIntersection > > &intersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n-GeometryGrid< HG, CoordFunction, Allocator > Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Grid::Traits::LeafIntersection LeafIntersection\n-type of the GeometryGrid leaf intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-HostGrid::Traits::LeafIntersection HostLeafIntersection\n-type of the host leaf intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-static const HostGrid & hostGrid(const Grid &grid)\n-Get underlying HostGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n-_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Grid::Traits::LevelIntersection LevelIntersection\n-type of the GeometryGrid level intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:\n-_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-HostGrid::template Codim< codim >::Entity HostEntity\n-type of the host entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:\n-_\bE_\bn_\bt_\bi_\bt_\by\n-Grid::template Codim< codim >::Entity Entity\n-type of the GeometryGrid entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Grid::Traits::LeafIntersection LeafIntersection\n-type of the IdGrid leaf intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-HG HostGrid\n-type of HostGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bG_\br_\bi_\bd\n-IdentityGrid< HG > Grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-static const Codim< codim >::HostEntity & hostEntity(const typename Codim<\n-codim >::Entity &entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-HostGrid::Traits::LevelIntersection HostLevelIntersection\n-type of the host level intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-Grid::Traits::LevelIntersection LevelIntersection\n-type of the IdGrid level intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-static const HostLeafIntersection & hostIntersection(const LeafIntersection\n-&intersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bH_\bo_\bs_\bt_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-HostGrid::Traits::LeafIntersection HostLeafIntersection\n-type of the host leaf intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity\n-&entity)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-static const HostLevelIntersection & hostIntersection(const LevelIntersection\n-&intersection)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:183\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bG_\br_\bi_\bd\n-static const HostGrid & hostGrid(const Grid &grid)\n-Get underlying HostGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Grid::template Codim< codim >::Entity Entity\n-type of the IdGrid entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bG_\b _\b>_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-HostGrid::template Codim< codim >::Entity HostEntity\n-type of the host entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostgridaccess.hh:140\n-_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo)\n+-> decltype(referenceElement(geo, geo.impl()))\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:558\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+Id Set Interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim)\n+const\n+Get id of subentity i of co-dimension codim of a co-dimension 0 entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:486\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for GeneralVertexOrder objects using an IdSet.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+VertexOrderByIdFactory(const IdSet &idset_)\n+construct a factory object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+VertexOrder< Element::mydimension >::type make(const Element &e) const\n+construct a vertex ordering object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br\n+type of vertex order object may depend on the dimension of the element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\bB_\by_\bI_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+GeneralVertexOrder< dim, Index > type\n+type of vertex order object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vertexorderfactory.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-grid-doc/doxygen/a01019.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01019.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: parmetisgridpartitioner.hh File Reference\n+dune-grid: hierarchicsearch.hh File Reference\n \n \n \n \n \n \n \n@@ -69,32 +69,49 @@\n \n
    \n \n
    \n \n
    \n-
    parmetisgridpartitioner.hh File Reference
    \n+ \n+
    hierarchicsearch.hh File Reference
    \n
    \n
    \n \n-

    Compute a repartitioning of a Dune grid using ParMetis. \n+

    Utility class for hierarchically searching for an Entity containing a given point. \n More...

    \n-
    #include <algorithm>
    \n-#include <vector>
    \n-#include <dune/common/parallel/mpihelper.hh>
    \n+
    #include <cstddef>
    \n+#include <sstream>
    \n+#include <string>
    \n+#include <utility>
    \n+#include <dune/common/classname.hh>
    \n #include <dune/common/exceptions.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/utility/globalindexset.hh>
    \n-#include <dune/grid/common/mcmgmapper.hh>
    \n-#include <dune/grid/common/rangegenerators.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/grid/common/grid.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n
    \n

    Go to the source code of this file.

    \n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::HierarchicSearch< Grid, IS >
     Search an IndexSet for an Entity containing a given point. More...
     
    \n+\n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     Include standard header files.
     
    \n

    Detailed Description

    \n-

    Compute a repartitioning of a Dune grid using ParMetis.

    \n+

    Utility class for hierarchically searching for an Entity containing a given point.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,34 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-parmetisgridpartitioner.hh File Reference\n-Compute a repartitioning of a _\bD_\bu_\bn_\be grid using ParMetis. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+hierarchicsearch.hh File Reference\n+Utility class for hierarchically searching for an Entity containing a given\n+point. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\bl_\bo_\bb_\ba_\bl_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\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_\bS_\be_\ba_\br_\bc_\bh_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bI_\bS_\b _\b>\n+\u00a0 Search an _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt for an _\bE_\bn_\bt_\bi_\bt_\by containing a given point. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0 Include standard header files.\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-Compute a repartitioning of a _\bD_\bu_\bn_\be grid using ParMetis.\n+Utility class for hierarchically searching for an Entity containing a given\n+point.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01019_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01019_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: parmetisgridpartitioner.hh Source File\n+dune-grid: hierarchicsearch.hh Source File\n \n \n \n \n \n \n \n@@ -74,218 +74,184 @@\n \n
    \n \n
    \n
    \n
    \n-
    parmetisgridpartitioner.hh
    \n+
    hierarchicsearch.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_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH
    \n-
    4#define DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH
    \n+
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    10#include <algorithm>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/parallel/mpihelper.hh>
    \n-
    14#include <dune/common/exceptions.hh>
    \n-
    15
    \n-
    16#include <dune/geometry/referenceelements.hh>
    \n-
    17
    \n-\n-\n-\n-
    21
    \n-
    22#if HAVE_PARMETIS
    \n+
    6#ifndef DUNE_GRID_HIERARCHICSEARCH_HH
    \n+
    7#define DUNE_GRID_HIERARCHICSEARCH_HH
    \n+
    8
    \n+
    15#include <cstddef>
    \n+
    16#include <sstream>
    \n+
    17#include <string>
    \n+
    18#include <utility>
    \n+
    19
    \n+
    20#include <dune/common/classname.hh>
    \n+
    21#include <dune/common/exceptions.hh>
    \n+
    22#include <dune/common/fvector.hh>
    \n
    23
    \n-
    24#include <parmetis.h>
    \n-
    25
    \n-
    26// only enable for ParMETIS because the implementation uses functions that
    \n-
    27// are not emulated by scotch
    \n-
    28#ifdef PARMETIS_MAJOR_VERSION
    \n+\n+\n+
    26
    \n+
    27namespace Dune
    \n+
    28{
    \n
    29
    \n-
    30namespace Dune
    \n-
    31{
    \n-
    32
    \n-
    37 template<class GridView>
    \n-
    38 struct ParMetisGridPartitioner {
    \n-
    39
    \n-
    40 // define index type as provided by ParMETIS
    \n-
    41#if PARMETIS_MAJOR_VERSION > 3
    \n-
    42 typedef idx_t idx_type;
    \n-
    43 typedef ::real_t real_type;
    \n-
    44#else
    \n-
    45 typedef int idx_type;
    \n-
    46 typedef float real_type;
    \n-
    47#endif // PARMETIS_MAJOR_VERSION > 3
    \n-
    48
    \n-
    49 constexpr static int dimension = GridView::dimension;
    \n+
    33 template<class Grid, class IS>
    \n+
    \n+\n+
    35 {
    \n+
    37 constexpr static int dim = Grid::dimension;
    \n+
    38
    \n+
    40 constexpr static int dimw = Grid::dimensionworld;
    \n+
    41
    \n+
    43 typedef typename Grid::ctype ct;
    \n+
    44
    \n+
    46 typedef typename Grid::template Codim<0>::Entity Entity;
    \n+
    47
    \n+
    49 typedef typename Grid::HierarchicIterator HierarchicIterator;
    \n
    50
    \n-
    51
    \n-
    62 static std::vector<unsigned> partition(const GridView& gv, const Dune::MPIHelper& mpihelper) {
    \n-
    63 const unsigned numElements = gv.size(0);
    \n-
    64
    \n-
    65 std::vector<unsigned> part(numElements);
    \n-
    66
    \n-
    67 // Setup parameters for ParMETIS
    \n-
    68 idx_type wgtflag = 0; // we don't use weights
    \n-
    69 idx_type numflag = 0; // we are using C-style arrays
    \n-
    70 idx_type ncon = 1; // number of balance constraints
    \n-
    71 idx_type ncommonnodes = 2; // number of nodes elements must have in common to be considered adjacent to each other
    \n-
    72 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed, output and coupling
    \n-
    73 idx_type edgecut; // will store number of edges cut by partition
    \n-
    74 idx_type nparts = mpihelper.size(); // number of parts equals number of processes
    \n-
    75 std::vector<real_type> tpwgts(ncon*nparts, 1./nparts); // load per subdomain and weight (same load on every process)
    \n-
    76 std::vector<real_type> ubvec(ncon, 1.05); // weight tolerance (same weight tolerance for every weight there is)
    \n-
    77
    \n-
    78 // The difference elmdist[i+1] - elmdist[i] is the number of nodes that are on process i
    \n-
    79 std::vector<idx_type> elmdist(nparts+1);
    \n-
    80 elmdist[0] = 0;
    \n-
    81 std::fill(elmdist.begin()+1, elmdist.end(), gv.size(0)); // all elements are on process zero
    \n-
    82
    \n-
    83 // Create and fill arrays "eptr", where eptr[i] is the number of vertices that belong to the i-th element, and
    \n-
    84 // "eind" contains the vertex-numbers of the i-the element in eind[eptr[i]] to eind[eptr[i+1]-1]
    \n-
    85 std::vector<idx_type> eptr, eind;
    \n-
    86 int numVertices = 0;
    \n-
    87 eptr.push_back(numVertices);
    \n-
    88
    \n-
    89 for (const auto& element : elements(gv, Partitions::interior)) {
    \n-
    90 const size_t curNumVertices = referenceElement<double, dimension>(element.type()).size(dimension);
    \n-
    91
    \n-
    92 numVertices += curNumVertices;
    \n-
    93 eptr.push_back(numVertices);
    \n-
    94
    \n-
    95 for (size_t k = 0; k < curNumVertices; ++k)
    \n-
    96 eind.push_back(gv.indexSet().subIndex(element, k, dimension));
    \n-
    97 }
    \n-
    98
    \n-
    99 // Partition mesh using ParMETIS
    \n-
    100 if (0 == mpihelper.rank()) {
    \n-
    101 MPI_Comm comm = Dune::MPIHelper::getLocalCommunicator();
    \n-
    102
    \n-
    103#if PARMETIS_MAJOR_VERSION >= 4
    \n-
    104 const int OK =
    \n-
    105#endif
    \n-
    106 ParMETIS_V3_PartMeshKway(elmdist.data(), eptr.data(), eind.data(), NULL, &wgtflag, &numflag,
    \n-
    107 &ncon, &ncommonnodes, &nparts, tpwgts.data(), ubvec.data(),
    \n-
    108 options, &edgecut, reinterpret_cast<idx_type*>(part.data()), &comm);
    \n-
    109
    \n-
    110#if PARMETIS_MAJOR_VERSION >= 4
    \n-
    111 if (OK != METIS_OK)
    \n-
    112 DUNE_THROW(Dune::Exception, "ParMETIS returned an error code.");
    \n-
    113#endif
    \n-
    114 }
    \n-
    115
    \n-
    116 return part;
    \n-
    117 }
    \n-
    118
    \n-
    130 static std::vector<unsigned> repartition(const GridView& gv, const Dune::MPIHelper& mpihelper, real_type itr = 1000) {
    \n-
    131
    \n-
    132 // Create global index map
    \n-
    133 GlobalIndexSet<GridView> globalIndex(gv,0);
    \n-
    134
    \n-
    135 int numElements = std::distance(gv.template begin<0, Interior_Partition>(),
    \n-
    136 gv.template end<0, Interior_Partition>());
    \n-
    137
    \n-
    138 std::vector<unsigned> interiorPart(numElements);
    \n-
    139
    \n-
    140 // Setup parameters for ParMETIS
    \n-
    141 idx_type wgtflag = 0; // we don't use weights
    \n-
    142 idx_type numflag = 0; // we are using C-style arrays
    \n-
    143 idx_type ncon = 1; // number of balance constraints
    \n-
    144 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed, output and coupling
    \n-
    145 idx_type edgecut; // will store number of edges cut by partition
    \n-
    146 idx_type nparts = mpihelper.size(); // number of parts equals number of processes
    \n-
    147 std::vector<real_type> tpwgts(ncon*nparts, 1./nparts); // load per subdomain and weight (same load on every process)
    \n-
    148 std::vector<real_type> ubvec(ncon, 1.05); // weight tolerance (same weight tolerance for every weight there is)
    \n-
    149
    \n-
    150 MPI_Comm comm = Dune::MPIHelper::getCommunicator();
    \n-
    151
    \n-
    152 // Make the number of interior elements of each processor available to all processors
    \n-
    153 std::vector<int> offset(gv.comm().size());
    \n-
    154 std::fill(offset.begin(), offset.end(), 0);
    \n-
    155
    \n-
    156 gv.comm().template allgather<int>(&numElements, 1, offset.data());
    \n+
    51 static std::string formatEntityInformation ( const Entity &e ) {
    \n+
    52 const typename Entity::Geometry &geo = e.geometry();
    \n+
    53 std::ostringstream info;
    \n+
    54 info << "level=" << e.level() << " "
    \n+
    55 << "partition=" << e.partitionType() << " "
    \n+
    56 << "center=(" << geo.center() << ") "
    \n+
    57 << "corners=[(" << geo.corner(0) << ")";
    \n+
    58 for(int i = 1; i < geo.corners(); ++i)
    \n+
    59 info << " (" << e.geometry().corner(i) << ")";
    \n+
    60 info << "]";
    \n+
    61 return info.str();
    \n+
    62 }
    \n+
    63
    \n+
    74 Entity hFindEntity ( const Entity &entity,
    \n+
    75 const FieldVector<ct,dimw>& global) const
    \n+
    76 {
    \n+
    77 // type of element geometry
    \n+
    78 typedef typename Entity::Geometry Geometry;
    \n+
    79 // type of local coordinate
    \n+
    80 typedef typename Geometry::LocalCoordinate LocalCoordinate;
    \n+
    81
    \n+
    82 const int childLevel = entity.level()+1 ;
    \n+
    83 // loop over all child Entities
    \n+
    84 const HierarchicIterator end = entity.hend( childLevel );
    \n+
    85 for( HierarchicIterator it = entity.hbegin( childLevel ); it != end; ++it )
    \n+
    86 {
    \n+
    87 Entity child = *it;
    \n+
    88 Geometry geo = child.geometry();
    \n+
    89
    \n+
    90 LocalCoordinate local = geo.local(global);
    \n+
    91 if (referenceElement( geo ).checkInside(local))
    \n+
    92 {
    \n+
    93 // return if we found the leaf, else search through the child entites
    \n+
    94 if( indexSet_.contains( child ) )
    \n+
    95 return child;
    \n+
    96 else
    \n+
    97 return hFindEntity( child, global );
    \n+
    98 }
    \n+
    99 }
    \n+
    100 std::ostringstream children;
    \n+
    101 HierarchicIterator it = entity.hbegin( childLevel );
    \n+
    102 if(it != end) {
    \n+
    103 children << "{" << formatEntityInformation(*it) << "}";
    \n+
    104 for( ++it; it != end; ++it )
    \n+
    105 children << " {" << formatEntityInformation(*it) << "}";
    \n+
    106 }
    \n+
    107 DUNE_THROW(Exception, "{" << className(*this) << "} Unexpected "
    \n+
    108 "internal Error: none of the children of the entity "
    \n+
    109 "{" << formatEntityInformation(entity) << "} contains "
    \n+
    110 "coordinate (" << global << "). Children are: "
    \n+
    111 "[" << children.str() << "].");
    \n+
    112 }
    \n+
    113
    \n+
    114 public:
    \n+
    118 HierarchicSearch(const Grid & g, const IS & is) : grid_(g), indexSet_(is) {}
    \n+
    119
    \n+
    \n+
    127 Entity findEntity(const FieldVector<ct,dimw>& global) const
    \n+
    128 { return findEntity<All_Partition>(global); }
    \n+
    \n+
    129
    \n+
    137 template<PartitionIteratorType partition>
    \n+
    \n+
    138 Entity findEntity(const FieldVector<ct,dimw>& global) const
    \n+
    139 {
    \n+
    140 typedef typename Grid::LevelGridView LevelGV;
    \n+
    141 const LevelGV &gv = grid_.levelGridView(0);
    \n+
    142
    \n+
    144 typedef typename LevelGV::template Codim<0>::template Partition<partition>::Iterator LevelIterator;
    \n+
    145
    \n+
    146 // type of element geometry
    \n+
    147 typedef typename Entity::Geometry Geometry;
    \n+
    148 // type of local coordinate
    \n+
    149 typedef typename Geometry::LocalCoordinate LocalCoordinate;
    \n+
    150
    \n+
    151 // loop over macro level
    \n+
    152 const LevelIterator end = gv.template end<0, partition>();
    \n+
    153 for (LevelIterator it = gv.template begin<0, partition>(); it != end; ++it)
    \n+
    154 {
    \n+
    155 Entity entity = *it;
    \n+
    156 Geometry geo = entity.geometry();
    \n
    157
    \n-
    158 // The difference vtxdist[i+1] - vtxdist[i] is the number of elements that are on process i
    \n-
    159 std::vector<idx_type> vtxdist(gv.comm().size()+1);
    \n-
    160 vtxdist[0] = 0;
    \n+
    158 LocalCoordinate local = geo.local( global );
    \n+
    159 if( !referenceElement( geo ).checkInside( local ) )
    \n+
    160 continue;
    \n
    161
    \n-
    162 for (unsigned int i=1; i<vtxdist.size(); ++i)
    \n-
    163 vtxdist[i] = vtxdist[i-1] + offset[i-1];
    \n+
    162 if( (int(dim) != int(dimw)) && ((geo.global( local ) - global).two_norm() > 1e-8) )
    \n+
    163 continue;
    \n
    164
    \n-
    165 // Set up element adjacency lists
    \n-
    166 std::vector<idx_type> xadj, adjncy;
    \n-
    167 xadj.push_back(0);
    \n-
    168
    \n-
    169 for (const auto& element : elements(gv, Partitions::interior)) {
    \n-
    170 size_t numNeighbors = 0;
    \n-
    171
    \n-
    172 for (const auto& in : intersections(gv, element)) {
    \n-
    173 if (in.neighbor()) {
    \n-
    174 adjncy.push_back(globalIndex.index(in.outside()));
    \n-
    175
    \n-
    176 ++numNeighbors;
    \n-
    177 }
    \n-
    178 }
    \n-
    179
    \n-
    180 xadj.push_back(xadj.back() + numNeighbors);
    \n-
    181 }
    \n-
    182
    \n-
    183#if PARMETIS_MAJOR_VERSION >= 4
    \n-
    184 const int OK =
    \n-
    185#endif
    \n-
    186 ParMETIS_V3_AdaptiveRepart(vtxdist.data(), xadj.data(), adjncy.data(), NULL, NULL, NULL,
    \n-
    187 &wgtflag, &numflag, &ncon, &nparts, tpwgts.data(), ubvec.data(),
    \n-
    188 &itr, options, &edgecut, reinterpret_cast<idx_type*>(interiorPart.data()), &comm);
    \n-
    189
    \n-
    190#if PARMETIS_MAJOR_VERSION >= 4
    \n-
    191 if (OK != METIS_OK)
    \n-
    192 DUNE_THROW(Dune::Exception, "ParMETIS returned error code " << OK);
    \n-
    193#endif
    \n-
    194
    \n-
    195 // At this point, interiorPart contains a target rank for each interior element, and they are sorted
    \n-
    196 // by the order in which the grid view traverses them. Now we need to do two things:
    \n-
    197 // a) Add additional dummy entries for the ghost elements
    \n-
    198 // b) Use the element index for the actual ordering. Since there may be different types of elements,
    \n-
    199 // we cannot use the index set directly, but have to go through a Mapper.
    \n-
    200
    \n-
    201 typedef MultipleCodimMultipleGeomTypeMapper<GridView> ElementMapper;
    \n-
    202 ElementMapper elementMapper(gv, mcmgElementLayout());
    \n-
    203
    \n-
    204 std::vector<unsigned int> part(gv.size(0));
    \n-
    205 std::fill(part.begin(), part.end(), 0);
    \n-
    206 unsigned int c = 0;
    \n-
    207 for (const auto& element : elements(gv, Partitions::interior))
    \n-
    208 part[elementMapper.index(element)] = interiorPart[c++];
    \n-
    209
    \n-
    210 return part;
    \n-
    211 }
    \n-
    212 };
    \n-
    213
    \n-
    214} // namespace Dune
    \n-
    215
    \n-
    216#else // PARMETIS_MAJOR_VERSION
    \n-
    217#warning "You seem to be using the ParMETIS emulation layer of scotch, which does not work with this file."
    \n-
    218#endif
    \n-
    219
    \n-
    220#else // HAVE_PARMETIS
    \n-
    221#warning "PARMETIS was not found, please check your configuration"
    \n-
    222#endif
    \n-
    223
    \n-
    224#endif // DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH
    \n-
    Mapper for multiple codim and multiple geometry types.
    \n-\n-
    Provides a globally unique index for all entities of a distributed Dune grid.
    \n-
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n+
    165 // return if we found the leaf, else search through the child entites
    \n+
    166 if( indexSet_.contains( entity ) )
    \n+
    167 return entity;
    \n+
    168 else
    \n+
    169 return hFindEntity( entity, global );
    \n+
    170 }
    \n+
    171 DUNE_THROW( GridError, "Coordinate " << global << " is outside the grid." );
    \n+
    172 }
    \n+
    \n+
    173
    \n+
    174 private:
    \n+
    175 const Grid& grid_;
    \n+
    176 const IS& indexSet_;
    \n+
    177 };
    \n+
    \n+
    178
    \n+
    179} // end namespace Dune
    \n+
    180
    \n+
    181#endif // DUNE_GRID_HIERARCHICSEARCH_HH
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    constexpr Interior interior
    PartitionSet for the interior partition.
    Definition partitionset.hh:272
    \n+
    auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo) -> decltype(referenceElement(geo, geo.impl()))
    Definition common/geometry.hh:558
    \n+
    GridImp::template Codim< cd >::Geometry Geometry
    The corresponding geometry type.
    Definition common/entity.hh:100
    \n+
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n+
    Wrapper class for geometries.
    Definition common/geometry.hh:71
    \n+
    GlobalCoordinate global(const LocalCoordinate &local) const
    Evaluate the map .
    Definition common/geometry.hh:228
    \n+
    FieldVector< ctype, mydim > LocalCoordinate
    type of local coordinates
    Definition common/geometry.hh:103
    \n+
    LocalCoordinate local(const GlobalCoordinate &global) const
    Evaluate the inverse map .
    Definition common/geometry.hh:237
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    GridFamily::Traits::HierarchicIterator HierarchicIterator
    A type that is a model of Dune::HierarchicIterator A type of iterator that allows to examine,...
    Definition common/grid.hh:482
    \n+
    GridFamily::Traits::LevelGridView LevelGridView
    type of view for level grid
    Definition common/grid.hh:402
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/grid.hh:390
    \n+
    LevelGridView levelGridView(int level) const
    View for a grid level for All_Partition.
    Definition common/grid.hh:598
    \n+
    ct ctype
    Define type used for coordinates in grid module.
    Definition common/grid.hh:532
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    Search an IndexSet for an Entity containing a given point.
    Definition hierarchicsearch.hh:35
    \n+
    Entity findEntity(const FieldVector< ct, dimw > &global) const
    Search the IndexSet of this HierarchicSearch for an Entity containing point global.
    Definition hierarchicsearch.hh:127
    \n+
    Entity findEntity(const FieldVector< ct, dimw > &global) const
    Search the IndexSet of this HierarchicSearch for an Entity containing point global.
    Definition hierarchicsearch.hh:138
    \n+
    HierarchicSearch(const Grid &g, const IS &is)
    Construct a HierarchicSearch object from a Grid and an IndexSet.
    Definition hierarchicsearch.hh:118
    \n+
    Different resources needed by all grid implementations.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,248 +1,235 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-parmetisgridpartitioner.hh\n+hierarchicsearch.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3#ifndef DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH\n-4#define DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH\n+3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+4// vi: set et ts=4 sw=2 sts=2:\n 5\n-10#include \n-11#include \n-12\n-13#include \n-14#include \n-15\n-16#include \n-17\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bg_\bl_\bo_\bb_\ba_\bl_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-21\n-22#if HAVE_PARMETIS\n+6#ifndef DUNE_GRID_HIERARCHICSEARCH_HH\n+7#define DUNE_GRID_HIERARCHICSEARCH_HH\n+8\n+15#include \n+16#include \n+17#include \n+18#include \n+19\n+20#include \n+21#include \n+22#include \n 23\n-24#include \n-25\n-26// only enable for ParMETIS because the implementation uses functions that\n-27// are not emulated by scotch\n-28#ifdef PARMETIS_MAJOR_VERSION\n+24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+26\n+27namespace _\bD_\bu_\bn_\be\n+28{\n 29\n-30namespace _\bD_\bu_\bn_\be\n-31{\n-32\n-37 template\n-38 struct ParMetisGridPartitioner {\n-39\n-40 // define index type as provided by ParMETIS\n-41#if PARMETIS_MAJOR_VERSION > 3\n-42 typedef idx_t idx_type;\n-43 typedef ::real_t real_type;\n-44#else\n-45 typedef int idx_type;\n-46 typedef float real_type;\n-47#endif // PARMETIS_MAJOR_VERSION > 3\n-48\n-49 constexpr static int dimension = GridView::dimension;\n+33 template\n+_\b3_\b4 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh\n+35 {\n+37 constexpr static int dim = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+38\n+40 constexpr static int dimw = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+41\n+43 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be ct;\n+44\n+46 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<0>::Entity Entity;\n+47\n+49 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br HierarchicIterator;\n 50\n-51\n-62 static std::vector partition(const GridView& gv, const Dune::\n-MPIHelper& mpihelper) {\n-63 const unsigned numElements = gv.size(0);\n-64\n-65 std::vector part(numElements);\n-66\n-67 // Setup parameters for ParMETIS\n-68 idx_type wgtflag = 0; // we don't use weights\n-69 idx_type numflag = 0; // we are using C-style arrays\n-70 idx_type ncon = 1; // number of balance constraints\n-71 idx_type ncommonnodes = 2; // number of nodes elements must have in common\n-to be considered adjacent to each other\n-72 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed,\n-output and coupling\n-73 idx_type edgecut; // will store number of edges cut by partition\n-74 idx_type nparts = mpihelper.size(); // number of parts equals number of\n-processes\n-75 std::vector tpwgts(ncon*nparts, 1./nparts); // load per subdomain\n-and weight (same load on every process)\n-76 std::vector ubvec(ncon, 1.05); // weight tolerance (same weight\n-tolerance for every weight there is)\n-77\n-78 // The difference elmdist[i+1] - elmdist[i] is the number of nodes that are\n-on process i\n-79 std::vector elmdist(nparts+1);\n-80 elmdist[0] = 0;\n-81 std::fill(elmdist.begin()+1, elmdist.end(), gv.size(0)); // all elements are\n-on process zero\n-82\n-83 // Create and fill arrays \"eptr\", where eptr[i] is the number of vertices\n-that belong to the i-th element, and\n-84 // \"eind\" contains the vertex-numbers of the i-the element in eind[eptr[i]]\n-to eind[eptr[i+1]-1]\n-85 std::vector eptr, eind;\n-86 int numVertices = 0;\n-87 eptr.push_back(numVertices);\n-88\n-89 for (const auto& element : elements(gv, Partitions::_\bi_\bn_\bt_\be_\br_\bi_\bo_\br)) {\n-90 const size_t curNumVertices = referenceElement\n-(element.type()).size(dimension);\n-91\n-92 numVertices += curNumVertices;\n-93 eptr.push_back(numVertices);\n-94\n-95 for (size_t k = 0; k < curNumVertices; ++k)\n-96 eind.push_back(gv.indexSet().subIndex(element, k, dimension));\n-97 }\n-98\n-99 // Partition mesh using ParMETIS\n-100 if (0 == mpihelper.rank()) {\n-101 MPI_Comm comm = Dune::MPIHelper::getLocalCommunicator();\n-102\n-103#if PARMETIS_MAJOR_VERSION >= 4\n-104 const int OK =\n-105#endif\n-106 ParMETIS_V3_PartMeshKway(elmdist.data(), eptr.data(), eind.data(), NULL,\n-&wgtflag, &numflag,\n-107 &ncon, &ncommonnodes, &nparts, tpwgts.data(), ubvec.data(),\n-108 options, &edgecut, reinterpret_cast(part.data()), &comm);\n-109\n-110#if PARMETIS_MAJOR_VERSION >= 4\n-111 if (OK != METIS_OK)\n-112 DUNE_THROW(Dune::Exception, \"ParMETIS returned an error code.\");\n-113#endif\n-114 }\n-115\n-116 return part;\n-117 }\n-118\n-130 static std::vector repartition(const GridView& gv, const Dune::\n-MPIHelper& mpihelper, real_type itr = 1000) {\n-131\n-132 // Create global index map\n-133 GlobalIndexSet globalIndex(gv,0);\n-134\n-135 int numElements = std::distance(gv.template begin<0, Interior_Partition>(),\n-136 gv.template end<0, Interior_Partition>());\n-137\n-138 std::vector interiorPart(numElements);\n-139\n-140 // Setup parameters for ParMETIS\n-141 idx_type wgtflag = 0; // we don't use weights\n-142 idx_type numflag = 0; // we are using C-style arrays\n-143 idx_type ncon = 1; // number of balance constraints\n-144 idx_type options[4] = {0, 0, 0, 0}; // use default values for random seed,\n-output and coupling\n-145 idx_type edgecut; // will store number of edges cut by partition\n-146 idx_type nparts = mpihelper.size(); // number of parts equals number of\n-processes\n-147 std::vector tpwgts(ncon*nparts, 1./nparts); // load per\n-subdomain and weight (same load on every process)\n-148 std::vector ubvec(ncon, 1.05); // weight tolerance (same weight\n-tolerance for every weight there is)\n-149\n-150 MPI_Comm comm = Dune::MPIHelper::getCommunicator();\n-151\n-152 // Make the number of interior elements of each processor available to all\n-processors\n-153 std::vector offset(gv.comm().size());\n-154 std::fill(offset.begin(), offset.end(), 0);\n-155\n-156 gv.comm().template allgather(&numElements, 1, offset.data());\n+51 static std::string formatEntityInformation ( const Entity &e ) {\n+52 const typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by &geo = e.geometry();\n+53 std::ostringstream info;\n+54 info << \"level=\" << e.level() << \" \"\n+55 << \"partition=\" << e.partitionType() << \" \"\n+56 << \"center=(\" << geo.center() << \") \"\n+57 << \"corners=[(\" << geo.corner(0) << \")\";\n+58 for(int i = 1; i < geo.corners(); ++i)\n+59 info << \" (\" << e.geometry().corner(i) << \")\";\n+60 info << \"]\";\n+61 return info.str();\n+62 }\n+63\n+74 Entity hFindEntity ( const Entity &entity,\n+75 const FieldVector& global) const\n+76 {\n+77 // type of element geometry\n+78 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+79 // type of local coordinate\n+80 typedef typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be LocalCoordinate;\n+81\n+82 const int childLevel = entity.level()+1 ;\n+83 // loop over all child Entities\n+84 const HierarchicIterator end = entity.hend( childLevel );\n+85 for( HierarchicIterator it = entity.hbegin( childLevel ); it != end; ++it )\n+86 {\n+87 Entity child = *it;\n+88 _\bG_\be_\bo_\bm_\be_\bt_\br_\by geo = child.geometry();\n+89\n+90 LocalCoordinate local = geo._\bl_\bo_\bc_\ba_\bl(global);\n+91 if (_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt( geo ).checkInside(local))\n+92 {\n+93 // return if we found the leaf, else search through the child entites\n+94 if( indexSet_.contains( child ) )\n+95 return child;\n+96 else\n+97 return hFindEntity( child, global );\n+98 }\n+99 }\n+100 std::ostringstream children;\n+101 HierarchicIterator it = entity.hbegin( childLevel );\n+102 if(it != end) {\n+103 children << \"{\" << formatEntityInformation(*it) << \"}\";\n+104 for( ++it; it != end; ++it )\n+105 children << \" {\" << formatEntityInformation(*it) << \"}\";\n+106 }\n+107 DUNE_THROW(Exception, \"{\" << className(*this) << \"} Unexpected \"\n+108 \"internal Error: none of the children of the entity \"\n+109 \"{\" << formatEntityInformation(entity) << \"} contains \"\n+110 \"coordinate (\" << global << \"). Children are: \"\n+111 \"[\" << children.str() << \"].\");\n+112 }\n+113\n+114 public:\n+_\b1_\b1_\b8 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh(const _\bG_\br_\bi_\bd & g, const IS & is) : grid_(g), indexSet_(is)\n+{}\n+119\n+_\b1_\b2_\b7 Entity _\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by(const FieldVector& global) const\n+128 { return findEntity(global); }\n+129\n+137 template\n+_\b1_\b3_\b8 Entity _\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by(const FieldVector& global) const\n+139 {\n+140 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw LevelGV;\n+141 const LevelGV &gv = grid_._\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(0);\n+142\n+144 typedef typename LevelGV::template Codim<0>::template\n+Partition::Iterator LevelIterator;\n+145\n+146 // type of element geometry\n+147 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+148 // type of local coordinate\n+149 typedef typename _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be LocalCoordinate;\n+150\n+151 // loop over macro level\n+152 const LevelIterator end = gv.template end<0, partition>();\n+153 for (LevelIterator it = gv.template begin<0, partition>(); it != end; ++it)\n+154 {\n+155 Entity entity = *it;\n+156 _\bG_\be_\bo_\bm_\be_\bt_\br_\by geo = entity.geometry();\n 157\n-158 // The difference vtxdist[i+1] - vtxdist[i] is the number of elements that\n-are on process i\n-159 std::vector vtxdist(gv.comm().size()+1);\n-160 vtxdist[0] = 0;\n+158 LocalCoordinate local = geo._\bl_\bo_\bc_\ba_\bl( global );\n+159 if( !_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt( geo ).checkInside( local ) )\n+160 continue;\n 161\n-162 for (unsigned int i=1; i\n+1e-8) )\n+163 continue;\n 164\n-165 // Set up element adjacency lists\n-166 std::vector xadj, adjncy;\n-167 xadj.push_back(0);\n-168\n-169 for (const auto& element : elements(gv, Partitions::_\bi_\bn_\bt_\be_\br_\bi_\bo_\br)) {\n-170 size_t numNeighbors = 0;\n-171\n-172 for (const auto& in : intersections(gv, element)) {\n-173 if (in.neighbor()) {\n-174 adjncy.push_back(globalIndex.index(in.outside()));\n-175\n-176 ++numNeighbors;\n-177 }\n-178 }\n-179\n-180 xadj.push_back(xadj.back() + numNeighbors);\n-181 }\n-182\n-183#if PARMETIS_MAJOR_VERSION >= 4\n-184 const int OK =\n-185#endif\n-186 ParMETIS_V3_AdaptiveRepart(vtxdist.data(), xadj.data(), adjncy.data(),\n-NULL, NULL, NULL,\n-187 &wgtflag, &numflag, &ncon, &nparts, tpwgts.data(), ubvec.data(),\n-188 &itr, options, &edgecut, reinterpret_cast(interiorPart.data()),\n-&comm);\n-189\n-190#if PARMETIS_MAJOR_VERSION >= 4\n-191 if (OK != METIS_OK)\n-192 DUNE_THROW(Dune::Exception, \"ParMETIS returned error code \" << OK);\n-193#endif\n-194\n-195 // At this point, interiorPart contains a target rank for each interior\n-element, and they are sorted\n-196 // by the order in which the grid view traverses them. Now we need to do\n-two things:\n-197 // a) Add additional dummy entries for the ghost elements\n-198 // b) Use the element index for the actual ordering. Since there may be\n-different types of elements,\n-199 // we cannot use the index set directly, but have to go through a Mapper.\n-200\n-201 typedef MultipleCodimMultipleGeomTypeMapper ElementMapper;\n-202 ElementMapper elementMapper(gv, _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt());\n-203\n-204 std::vector part(gv.size(0));\n-205 std::fill(part.begin(), part.end(), 0);\n-206 unsigned int c = 0;\n-207 for (const auto& element : elements(gv, Partitions::_\bi_\bn_\bt_\be_\br_\bi_\bo_\br))\n-208 part[elementMapper.index(element)] = interiorPart[c++];\n-209\n-210 return part;\n-211 }\n-212 };\n-213\n-214} // namespace Dune\n-215\n-216#else // PARMETIS_MAJOR_VERSION\n-217#warning \"You seem to be using the ParMETIS emulation layer of scotch, which\n-does not work with this file.\"\n-218#endif\n-219\n-220#else // HAVE_PARMETIS\n-221#warning \"PARMETIS was not found, please check your configuration\"\n-222#endif\n-223\n-224#endif // DUNE_GRID_UTILITY_PARMETISGRIDPARTITIONER_HH\n-_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n-Mapper for multiple codim and multiple geometry types.\n-_\br_\ba_\bn_\bg_\be_\bg_\be_\bn_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bg_\bl_\bo_\bb_\ba_\bl_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\b._\bh_\bh\n-Provides a globally unique index for all entities of a distributed Dune grid.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgElementLayout()\n-layout for elements (codim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n+165 // return if we found the leaf, else search through the child entites\n+166 if( indexSet_.contains( entity ) )\n+167 return entity;\n+168 else\n+169 return hFindEntity( entity, global );\n+170 }\n+171 DUNE_THROW( _\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Coordinate \" << global << \" is outside the grid.\"\n+);\n+172 }\n+173\n+174 private:\n+175 const _\bG_\br_\bi_\bd& grid_;\n+176 const IS& indexSet_;\n+177 };\n+178\n+179} // end namespace Dune\n+180\n+181#endif // DUNE_GRID_HIERARCHICSEARCH_HH\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br\n-constexpr Interior interior\n-PartitionSet for the interior partition.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo)\n+-> decltype(referenceElement(geo, geo.impl()))\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:558\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< cd >::Geometry Geometry\n+The corresponding geometry type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+Base class for exceptions in Dune grid modules.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+Wrapper class for geometries.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl\n+GlobalCoordinate global(const LocalCoordinate &local) const\n+Evaluate the map .\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:228\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+FieldVector< ctype, mydim > LocalCoordinate\n+type of local coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bl_\bo_\bc_\ba_\bl\n+LocalCoordinate local(const GlobalCoordinate &global) const\n+Evaluate the inverse map .\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:237\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GridFamily::Traits::HierarchicIterator HierarchicIterator\n+A type that is a model of Dune::HierarchicIterator A type of iterator that\n+allows to examine,...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:482\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+GridFamily::Traits::LevelGridView LevelGridView\n+type of view for level grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:402\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static constexpr int dimensionworld\n+The dimension of the world the grid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+LevelGridView levelGridView(int level) const\n+View for a grid level for All_Partition.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:598\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+Define type used for coordinates in grid module.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:532\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh\n+Search an IndexSet for an Entity containing a given point.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh_\b:_\b:_\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+Entity findEntity(const FieldVector< ct, dimw > &global) const\n+Search the IndexSet of this HierarchicSearch for an Entity containing point\n+global.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh_\b:_\b:_\bf_\bi_\bn_\bd_\bE_\bn_\bt_\bi_\bt_\by\n+Entity findEntity(const FieldVector< ct, dimw > &global) const\n+Search the IndexSet of this HierarchicSearch for an Entity containing point\n+global.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bS_\be_\ba_\br_\bc_\bh\n+HierarchicSearch(const Grid &g, const IS &is)\n+Construct a HierarchicSearch object from a Grid and an IndexSet.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicsearch.hh:118\n+_\bg_\br_\bi_\bd_\b._\bh_\bh\n+Different resources needed by all grid implementations.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01022.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01022.html", "unified_diff": "@@ -97,31 +97,31 @@\n #include <dune/common/math.hh>
    \n #include <dune/common/typetraits.hh>
    \n #include <dune/common/reservedvector.hh>
    \n #include <dune/common/parallel/communication.hh>
    \n #include <dune/common/parallel/mpihelper.hh>
    \n #include <dune/geometry/axisalignedcubegeometry.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/indexidset.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/grid/common/indexidset.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n #include <dune/common/parallel/mpicommunication.hh>
    \n-#include <dune/grid/yaspgrid/coordinates.hh>
    \n-#include <dune/grid/yaspgrid/torus.hh>
    \n-#include <dune/grid/yaspgrid/ygrid.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridgeometry.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridentity.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridintersection.hh>
    \n+#include <dune/grid/yaspgrid/coordinates.hh>
    \n+#include <dune/grid/yaspgrid/torus.hh>
    \n+#include <dune/grid/yaspgrid/ygrid.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridgeometry.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridentity.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridintersection.hh>
    \n #include <dune/grid/yaspgrid/yaspgridintersectioniterator.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridhierarchiciterator.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridentityseed.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridleveliterator.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridindexsets.hh>
    \n-#include <dune/grid/yaspgrid/yaspgrididset.hh>
    \n-#include <dune/grid/yaspgrid/yaspgridpersistentcontainer.hh>
    \n-#include <dune/grid/yaspgrid/structuredyaspgridfactory.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridhierarchiciterator.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridentityseed.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridleveliterator.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridindexsets.hh>
    \n+#include <dune/grid/yaspgrid/yaspgrididset.hh>
    \n+#include <dune/grid/yaspgrid/yaspgridpersistentcontainer.hh>
    \n+#include <dune/grid/yaspgrid/structuredyaspgridfactory.hh>
    \n #include <dune/grid/yaspgrid/backuprestore.hh>
    \n \n

    Go to the source code of this file.

    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01022_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01022_source.html", "unified_diff": "@@ -104,16 +104,16 @@\n
    21#include <dune/common/math.hh>
    \n
    22#include <dune/common/typetraits.hh>
    \n
    23#include <dune/common/reservedvector.hh>
    \n
    24#include <dune/common/parallel/communication.hh>
    \n
    25#include <dune/common/parallel/mpihelper.hh>
    \n
    26#include <dune/geometry/axisalignedcubegeometry.hh>
    \n
    27#include <dune/geometry/type.hh>
    \n-\n-\n+\n+\n
    30
    \n
    31
    \n
    32#if HAVE_MPI
    \n
    33#include <dune/common/parallel/mpicommunication.hh>
    \n
    34#endif
    \n
    35
    \n
    43namespace Dune {
    \n@@ -137,27 +137,27 @@\n
    61 template<class GridImp> class YaspHierarchicIterator;
    \n
    62 template<class GridImp, bool isLeafIndexSet> class YaspIndexSet;
    \n
    63 template<class GridImp> class YaspGlobalIdSet;
    \n
    64 template<class GridImp> class YaspPersistentContainerIndex;
    \n
    65
    \n
    66} // namespace Dune
    \n
    67
    \n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n
    81
    \n
    82namespace Dune {
    \n
    83
    \n
    84#if HAVE_MPI
    \n
    85 using YaspCommunication = Communication<MPI_Comm>;
    \n
    86#else
    \n
    87 using YaspCommunication = Communication<No_Comm>;
    \n@@ -2065,35 +2065,35 @@\n
    2069 };
    \n
    2070
    \n
    2071 }
    \n
    2072
    \n
    2073} // end namespace
    \n
    2074
    \n
    2075// Include the specialization of the StructuredGridFactory class for YaspGrid
    \n-\n+\n
    2077// Include the specialization of the BackupRestoreFacility class for YaspGrid
    \n \n
    2079
    \n
    2080#endif
    \n-
    level-wise, non-persistent, consecutive indices for YaspGrid
    \n-
    This file provides the infrastructure for toroidal communication in YaspGrid.
    \n-
    This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the...
    \n-
    The YaspGeometry class and its specializations.
    \n+
    level-wise, non-persistent, consecutive indices for YaspGrid
    \n+
    The YaspGeometry class and its specializations.
    \n
    The YaspIntersectionIterator class.
    \n-
    This provides a YGrid, the elemental component of the yaspgrid implementation.
    \n-
    The YaspEntitySeed class.
    \n-\n-
    The YaspLevelIterator class.
    \n-
    Specialization of the PersistentContainer for YaspGrid.
    \n-
    Specialization of the StructuredGridFactory class for YaspGrid.
    \n-
    the YaspEntity class and its specializations
    \n-\n-
    The YaspIntersection class.
    \n-
    Provides base classes for index and id sets.
    \n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+
    the YaspEntity class and its specializations
    \n+
    This file provides the infrastructure for toroidal communication in YaspGrid.
    \n+
    Specialization of the PersistentContainer for YaspGrid.
    \n+
    Specialization of the StructuredGridFactory class for YaspGrid.
    \n+
    This provides a YGrid, the elemental component of the yaspgrid implementation.
    \n+
    This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the...
    \n+\n+\n+
    The YaspEntitySeed class.
    \n+
    The YaspIntersection class.
    \n+
    The YaspLevelIterator class.
    \n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+
    Provides base classes for index and id sets.
    \n
    std::ostream & operator<<(std::ostream &out, const PartitionType &type)
    write a PartitionType to a stream
    Definition gridenums.hh:72
    \n
    CommunicationDirection
    Define a type for communication direction parameter.
    Definition gridenums.hh:170
    \n
    InterfaceType
    Parameter to be used for the communication functions.
    Definition gridenums.hh:86
    \n
    @ All_Partition
    all entities
    Definition gridenums.hh:141
    \n
    @ Interior_Partition
    only interior entities
    Definition gridenums.hh:137
    \n
    @ InteriorBorder_Partition
    interior and border entities
    Definition gridenums.hh:138
    \n
    @ Overlap_Partition
    interior, border, and overlap entities
    Definition gridenums.hh:139
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2096,44 +2096,44 @@\n 2077// Include the specialization of the BackupRestoreFacility class for\n YaspGrid\n 2078#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b/_\bb_\ba_\bc_\bk_\bu_\bp_\br_\be_\bs_\bt_\bo_\br_\be_\b._\bh_\bh>\n 2079\n 2080#endif\n _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh\n level-wise, non-persistent, consecutive indices for YaspGrid\n-_\bt_\bo_\br_\bu_\bs_\b._\bh_\bh\n-This file provides the infrastructure for toroidal communication in YaspGrid.\n-_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b._\bh_\bh\n-This provides container classes for the coordinates to be used in YaspGrid Upon\n-implementation of the...\n _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n The YaspGeometry class and its specializations.\n _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n The YaspIntersectionIterator class.\n-_\by_\bg_\br_\bi_\bd_\b._\bh_\bh\n-This provides a YGrid, the elemental component of the yaspgrid implementation.\n-_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh\n-The YaspEntitySeed class.\n-_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n-The YaspLevelIterator class.\n+_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n+the YaspEntity class and its specializations\n+_\bt_\bo_\br_\bu_\bs_\b._\bh_\bh\n+This file provides the infrastructure for toroidal communication in YaspGrid.\n _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh\n Specialization of the PersistentContainer for YaspGrid.\n _\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n Specialization of the StructuredGridFactory class for YaspGrid.\n-_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\n-the YaspEntity class and its specializations\n+_\by_\bg_\br_\bi_\bd_\b._\bh_\bh\n+This provides a YGrid, the elemental component of the yaspgrid implementation.\n+_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b._\bh_\bh\n+This provides container classes for the coordinates to be used in YaspGrid Upon\n+implementation of the...\n _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n+_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bs_\be_\be_\bd_\b._\bh_\bh\n+The YaspEntitySeed class.\n _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n The YaspIntersection class.\n-_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n-Provides base classes for index and id sets.\n+_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+The YaspLevelIterator class.\n _\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n Describes the parallel communication interface class for MessageBuffers and\n DataHandles.\n+_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n+Provides base classes for index and id sets.\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 PartitionType &type)\n write a PartitionType to a stream\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:72\n _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn_\bD_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn\n CommunicationDirection\n Define a type for communication direction parameter.\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01027.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01027.html", "unified_diff": "@@ -71,15 +71,15 @@\n
    \n
    Bug List
    \n
    \n
    \n
    \n
    Member Dune::UGGrid< dim >::loadBalance (int minlevel=0)
    \n
    The return value is always 'true'
    \n-
    File globalindexset.hh
    \n+
    File globalindexset.hh
    \n
    This code will most likely not work on grids with more than one element type. Please ask on the mailing list if you need this feature.
    \n
    \n
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01031.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01031.html", "unified_diff": "@@ -171,16 +171,16 @@\n
    \n \n \n

    \n Classes

    struct  Dune::YaspGridFamily< dim, Coordinates >
    enum Dune::CommunicationDirection
    \n
    \n \n

    Define a type for communication direction parameter.

    \n-
    \n-\n+ \n \n \n
    Enumerator
    ForwardCommunication 

    communicate as given in InterfaceType

    \n
    BackwardCommunication 

    reverse communication direction

    \n
    \n \n@@ -195,15 +195,15 @@\n \n enum Dune::InterfaceType\n \n \n
    \n \n

    Parameter to be used for the communication functions.

    \n-
    \n+ \n \n \n \n@@ -224,15 +224,15 @@\n \n \n \n
    Enumerator
    InteriorBorder_InteriorBorder_Interface 

    send/receive interior and border entities

    \n
    InteriorBorder_All_Interface 

    send interior and border, receive all entities

    \n
    Overlap_OverlapFront_Interface 

    send overlap, receive overlap and front entities

    \n
    enum Dune::PartitionIteratorType
    \n
    \n \n

    Parameter to be used for the parallel level- and leaf iterators.

    \n-
    \n+ \n \n \n \n@@ -255,15 +255,15 @@\n \n \n \n
    Enumerator
    Interior_Partition 

    only interior entities

    \n
    InteriorBorder_Partition 

    interior and border entities

    \n
    Overlap_Partition 

    interior, border, and overlap entities

    \n
    enum Dune::PartitionType
    \n
    \n \n

    Attributes used in the generic overlap model.

    \n-
    \n+

    The values are ordered intentionally in order to be able to define ranges of partition types.

    \n \n \n \n \n \n
    Enumerator
    InteriorEntity 

    all interior entities

    \n
    BorderEntity 

    on boundary between interior and overlap

    \n
    OverlapEntity 

    all entities lying in the overlap zone

    \n@@ -308,15 +308,15 @@\n
    \n inline
    \n
    \n \n

    write an InterfaceType to a stream

    \n-\n
    \n \n

    ◆ operator<<() [2/3]

    \n \n
    \n@@ -347,15 +347,15 @@\n \n inline \n \n \n
    \n \n

    write a PartitionIteratorType to a stream

    \n-\n
    \n \n

    ◆ operator<<() [3/3]

    \n \n
    \n@@ -386,15 +386,15 @@\n \n inline \n \n \n
    \n \n

    write a PartitionType to a stream

    \n-\n
    \n \n

    ◆ PartitionName()

    \n \n
    \n@@ -415,15 +415,15 @@\n \n inline \n \n \n
    \n \n

    Provide names for the partition types.

    \n-\n
    \n \n

    ◆ partitionSet()

    \n \n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01055.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01055.html", "unified_diff": "@@ -84,19 +84,19 @@\n \"\"\n \"\"\n \n
    \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n

    \n Files

    file  boundaryiterators.hh
     Functions for VTK output on the skeleton.
    file  boundaryiterators.hh
     Functions for VTK output on the skeleton.
     
    file  skeletonfunction.hh
     Functions for VTK output on the skeleton.
    file  skeletonfunction.hh
     Functions for VTK output on the skeleton.
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune::VTK
     
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01064.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01064.html", "unified_diff": "@@ -223,33 +223,33 @@\n \n \n
    struct  Twist< dim, 2 >
     
    \n \n \n \n-\n+\n \n-\n+\n \n-\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

    typedef Dune::IndexStack< int, 100000 > IndexStack
     
    typedef ALBERTA REAL Real
    typedef ALBERTA REAL Real
     
    typedef ALBERTA REAL_B LocalVector
    typedef ALBERTA REAL_B LocalVector
     
    typedef ALBERTA REAL_D GlobalVector
    typedef ALBERTA REAL_D GlobalVector
     
    typedef ALBERTA REAL_DD GlobalMatrix
    typedef ALBERTA REAL_DD GlobalMatrix
     
    typedef ALBERTA AFF_TRAFO AffineTransformation
    typedef ALBERTA AFF_TRAFO AffineTransformation
     
    typedef ALBERTA MESH Mesh
    typedef ALBERTA MESH Mesh
     
    typedef ALBERTA EL Element
    typedef ALBERTA EL Element
     
    typedef ALBERTA BNDRY_TYPE BoundaryId
    typedef ALBERTA BNDRY_TYPE BoundaryId
     
    typedef U_CHAR ElementType
     
    typedef ALBERTA FE_SPACE DofSpace
    typedef ALBERTA FE_SPACE DofSpace
     
    \n \n \n \n \n@@ -317,15 +317,15 @@\n \n \n

    \n Functions

    template<class K >
    static FieldVector< K, 3 > vectorProduct (const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v)
     
    int applyInverseTwist (int twist, int i)
     
    \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -336,57 +336,57 @@\n \n

    ◆ AffineTransformation

    \n \n
    \n
    \n

    \n Variables

    static void * adaptationDataHandler_
     
    static const int dimWorld = DIM_OF_WORLD
    static const int dimWorld = DIM_OF_WORLD
     
    static const int meshRefined = MESH_REFINED
     
    static const int meshCoarsened = MESH_COARSENED
     
    static const int InteriorBoundary = INTERIOR
     
    \n \n- \n+ \n \n
    typedef ALBERTA AFF_TRAFO Dune::Alberta::AffineTransformationtypedef ALBERTA AFF_TRAFO Dune::Alberta::AffineTransformation
    \n
    \n \n
    \n
    \n \n

    ◆ BoundaryId

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA BNDRY_TYPE Dune::Alberta::BoundaryIdtypedef ALBERTA BNDRY_TYPE Dune::Alberta::BoundaryId
    \n
    \n \n
    \n
    \n \n

    ◆ DofSpace

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA FE_SPACE Dune::Alberta::DofSpacetypedef ALBERTA FE_SPACE Dune::Alberta::DofSpace
    \n
    \n \n
    \n
    \n \n

    ◆ Element

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA EL Dune::Alberta::Elementtypedef ALBERTA EL Dune::Alberta::Element
    \n
    \n \n
    \n
    \n \n@@ -406,29 +406,29 @@\n \n

    ◆ GlobalMatrix

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA REAL_DD Dune::Alberta::GlobalMatrixtypedef ALBERTA REAL_DD Dune::Alberta::GlobalMatrix
    \n
    \n \n
    \n
    \n \n

    ◆ GlobalVector

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA REAL_D Dune::Alberta::GlobalVectortypedef ALBERTA REAL_D Dune::Alberta::GlobalVector
    \n
    \n \n
    \n
    \n \n@@ -448,43 +448,43 @@\n \n

    ◆ LocalVector

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA REAL_B Dune::Alberta::LocalVectortypedef ALBERTA REAL_B Dune::Alberta::LocalVector
    \n
    \n \n
    \n
    \n \n

    ◆ Mesh

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA MESH Dune::Alberta::Meshtypedef ALBERTA MESH Dune::Alberta::Mesh
    \n
    \n \n
    \n
    \n \n

    ◆ Real

    \n \n
    \n
    \n \n \n- \n+ \n \n
    typedef ALBERTA REAL Dune::Alberta::Realtypedef ALBERTA REAL Dune::Alberta::Real
    \n
    \n \n
    \n
    \n

    Function Documentation

    \n@@ -1271,15 +1271,15 @@\n
    \n
    \n \n \n \n \n \n
    \n \n \n- \n+ \n \n
    const int Dune::Alberta::dimWorld = DIM_OF_WORLDconst int Dune::Alberta::dimWorld = DIM_OF_WORLD
    \n
    \n static
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01075.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01075.html", "unified_diff": "@@ -261,16 +261,16 @@\n \n enum Dune::VTK::DataMode\n \n \n
    \n \n

    Whether to produce conforming or non-conforming output.

    \n-
    \n-
    Common stuff for the VTKWriter.
    \n+
    \n+
    Common stuff for the VTKWriter.
    \n

    This applies to the conformity of the data; a non-conforming grid can still be written in conforming data mode, and it is quite possible for data to be non-conforming on a conforming grid.

    \n \n \n \n \n \n
    Enumerator
    conforming 

    Output conforming data.

    \n

    Neighboring elements share common vertices and thus have a common DoF on that vertex.

    \n
    nonconforming 

    Output non-conforming data.

    \n

    Each element has its own set of vertices. The position of a vertex of one element will coincide with the position of the corresponding vertex on another element. This allows for multiple DoFs (one per element) on the \"same\" vertex.

    \n@@ -288,15 +288,15 @@\n
    enum Dune::VTK::FileType
    \n
    \n \n

    which type of VTK file to write

    \n-
    \n+ \n \n \n
    Enumerator
    polyData 

    for .vtp files (PolyData)

    \n
    unstructuredGrid 

    for .vtu files (UnstructuredGrid)

    \n
    \n \n@@ -311,15 +311,15 @@\n \n enum Dune::VTK::GeometryType\n \n \n
    \n \n

    Type representing VTK's entity geometry types.

    \n-
    \n+

    Only the types which have a corresponding Dune::GeometryType have been included here. Dune-type names have been used, this mainly makes a difference for vtkPrism, which is known by VTK as VTK_WEDGE.

    \n \n \n \n \n \n \n@@ -341,15 +341,15 @@\n \n \n \n
    Enumerator
    vertex 
    line 
    triangle 
    polygon 
    quadrilateral 
    enum Dune::VTK::OutputType
    \n
    \n \n

    How the bulk data should be stored in the file.

    \n-
    \n+ \n \n \n \n@@ -376,15 +376,15 @@\n \n \n
    Enumerator
    ascii 

    Output to the file is in ascii.

    \n
    base64 

    Output to the file is inline base64 binary.

    \n
    appendedraw 

    Output is to the file is appended raw binary.

    \n
    \n strong
    \n
    \n \n

    which precision to use when writing out data to vtk files

    \n-
    \n+ \n \n \n \n \n \n
    Enumerator
    int32 
    uint8 
    uint32 
    float32 
    float64 
    \n@@ -413,15 +413,15 @@\n \n inline \n \n \n
    \n \n

    mapping from GeometryType to VTKGeometryType

    \n-\n
    \n \n

    ◆ getEndiannessString()

    \n \n
    \n@@ -480,15 +480,15 @@\n \n inline \n \n \n
    \n \n

    renumber VTK <-> Dune

    \n-
    \n+

    Since the renumbering never does anything more complex than exchanging two indices, this method works both ways.

    \n \n
    \n
    \n \n

    ◆ renumber() [2/2]

    \n \n@@ -514,15 +514,15 @@\n )\n \n \n \n
    \n \n

    renumber VTK <-> Dune

    \n-
    \n+

    This function is just a convenience shortcut function wrapping renumber(const GeometryType&, int).

    \n
    Parameters
    \n \n \n \n
    tEntity, Intersection or Geometry to do the renumbering in. Basically, anything with a method type() returning a GeometryType should work here.
    iIndex to of corner in either Dune or VTK numbering (the result will be in the other numbering)
    \n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01894.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01894.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members
    \n
    Dune::DGFGridFactory< G > Struct Template Reference
    \n
    \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgridfactory.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgridfactory.hh>

    \n
    \n Inheritance diagram for Dune::DGFGridFactory< G >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -489,16 +489,16 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following files:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01898.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01898.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::AlbertaGrid< dim, dimworld > Class Template Reference
    \n
    \n
    \n \n

    [ provides Dune::Grid ] \n More...

    \n \n-

    #include <dune/grid/albertagrid/agrid.hh>

    \n+

    #include <dune/grid/albertagrid/agrid.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGrid< dim, dimworld >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -257,15 +257,15 @@\n  \n const GlobalIdSetglobalIdSet () const\n  return global IdSet
    \n  \n const LocalIdSetlocalIdSet () const\n  return local IdSet
    \n  \n-ALBERTA MESHgetMesh () const\n+ALBERTA MESHgetMesh () const\n  \n const MeshPointermeshPointer () const\n  \n const DofNumberingdofNumbering () const\n  \n const LevelProviderlevelProvider () const\n  \n@@ -1502,15 +1502,15 @@\n
    \n template<int dim, int dimworld = Alberta::dimWorld>
    \n \n \n \n \n
    \n \n \n- \n+ \n \n \n \n \n
    ALBERTA MESH * Dune::AlbertaGrid< dim, dimworld >::getMesh ALBERTA MESH * Dune::AlbertaGrid< dim, dimworld >::getMesh () const
    \n
    \n@@ -3049,15 +3049,15 @@\n
    \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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01910.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01910.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members
    \n
    Dune::AlbertaReader< Grid > Class Template Reference
    \n
    \n
    \n \n-

    #include <dune/grid/albertagrid/albertareader.hh>

    \n+

    #include <dune/grid/albertagrid/albertareader.hh>

    \n \n \n \n \n \n \n@@ -251,15 +251,15 @@\n \n

    \n Public Types

    typedef Dune::GridFactory< GridGridFactory
     
    typedef Grid::ctype ctype
     
    \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01950.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01950.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::CoordCache< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/coordcache.hh>

    \n+

    #include <dune/grid/albertagrid/coordcache.hh>

    \n \n \n \n \n \n \n@@ -320,15 +320,15 @@\n \n

    \n Classes

    struct  Interpolation
     
    class  LocalCaching
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a01954.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01954.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::CoordCache< dim >::LocalCaching Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/coordcache.hh>

    \n+

    #include <dune/grid/albertagrid/coordcache.hh>

    \n \n \n \n \n \n \n@@ -144,15 +144,15 @@\n \n

    \n Public Member Functions

     LocalCaching (const CoordVectorPointer &coords)
     
    void operator() (const ElementInfo &elementInfo) 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-grid-doc/doxygen/a01958.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01958.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::CoordCache< dim >::Interpolation Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/coordcache.hh>

    \n+

    #include <dune/grid/albertagrid/coordcache.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Alberta::Patch< dimensionPatch
     
    \n \n

    \n@@ -177,15 +177,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-grid-doc/doxygen/a01978.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01978.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Public Member Functions |\n List of all members \n
    Dune::Alberta::MeshPointer< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/meshpointer.hh>

    \n+

    #include <dune/grid/albertagrid/meshpointer.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::MeshPointer< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -778,16 +778,16 @@\n \n \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-grid-doc/doxygen/a01982.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01982.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::DofAccess< dim, codim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofadmin.hh>

    \n+

    #include <dune/grid/albertagrid/dofadmin.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::DofAccess< dim, codim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -435,15 +435,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-grid-doc/doxygen/a01986.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01986.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::HierarchyDofNumbering< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofadmin.hh>

    \n+

    #include <dune/grid/albertagrid/dofadmin.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::HierarchyDofNumbering< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -523,15 +523,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-grid-doc/doxygen/a01998.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a01998.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Alberta::DofVectorProvider< Dof > 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-grid-doc/doxygen/a02002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02002.html", "unified_diff": "@@ -77,19 +77,19 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::DofVectorProvider< int > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofvector.hh>

    \n+

    #include <dune/grid/albertagrid/dofvector.hh>

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

    \n Public Types

    typedef ALBERTA DOF_INT_VEC DofVector
    typedef ALBERTA DOF_INT_VEC DofVector
     
    \n \n \n \n \n@@ -103,15 +103,15 @@\n \n

    ◆ DofVector

    \n \n
    \n
    \n

    \n Static Public Member Functions

    static DofVectorget (const DofSpace *dofSpace, const std::string &name)
     
    static void free (DofVector *dofVector)
    \n \n- \n+ \n \n
    typedef ALBERTA DOF_INT_VEC Dune::Alberta::DofVectorProvider< int >::DofVectortypedef ALBERTA DOF_INT_VEC Dune::Alberta::DofVectorProvider< int >::DofVector
    \n
    \n \n
    \n \n

    Member Function Documentation

    \n@@ -252,15 +252,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-grid-doc/doxygen/a02006.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02006.html", "unified_diff": "@@ -77,19 +77,19 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::DofVectorProvider< signed char > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofvector.hh>

    \n+

    #include <dune/grid/albertagrid/dofvector.hh>

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

    \n Public Types

    typedef ALBERTA DOF_SCHAR_VEC DofVector
    typedef ALBERTA DOF_SCHAR_VEC DofVector
     
    \n \n \n \n \n@@ -103,15 +103,15 @@\n \n

    ◆ DofVector

    \n \n
    \n
    \n

    \n Static Public Member Functions

    static DofVectorget (const DofSpace *dofSpace, const std::string &name)
     
    static void free (DofVector *dofVector)
    \n \n- \n+ \n \n
    typedef ALBERTA DOF_SCHAR_VEC Dune::Alberta::DofVectorProvider< signed char >::DofVectortypedef ALBERTA DOF_SCHAR_VEC Dune::Alberta::DofVectorProvider< signed char >::DofVector
    \n
    \n \n
    \n \n

    Member Function Documentation

    \n@@ -252,15 +252,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-grid-doc/doxygen/a02010.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02010.html", "unified_diff": "@@ -77,19 +77,19 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::DofVectorProvider< unsigned char > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofvector.hh>

    \n+

    #include <dune/grid/albertagrid/dofvector.hh>

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

    \n Public Types

    typedef ALBERTA DOF_UCHAR_VEC DofVector
    typedef ALBERTA DOF_UCHAR_VEC DofVector
     
    \n \n \n \n \n@@ -103,15 +103,15 @@\n \n

    ◆ DofVector

    \n \n
    \n
    \n

    \n Static Public Member Functions

    static DofVectorget (const DofSpace *dofSpace, const std::string &name)
     
    static void free (DofVector *dofVector)
    \n \n- \n+ \n \n
    typedef ALBERTA DOF_UCHAR_VEC Dune::Alberta::DofVectorProvider< unsigned char >::DofVectortypedef ALBERTA DOF_UCHAR_VEC Dune::Alberta::DofVectorProvider< unsigned char >::DofVector
    \n
    \n \n
    \n \n

    Member Function Documentation

    \n@@ -252,15 +252,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-grid-doc/doxygen/a02014.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02014.html", "unified_diff": "@@ -77,19 +77,19 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::DofVectorProvider< Real > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofvector.hh>

    \n+

    #include <dune/grid/albertagrid/dofvector.hh>

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

    \n Public Types

    typedef ALBERTA DOF_REAL_VEC DofVector
    typedef ALBERTA DOF_REAL_VEC DofVector
     
    \n \n \n \n \n@@ -103,15 +103,15 @@\n \n

    ◆ DofVector

    \n \n
    \n
    \n

    \n Static Public Member Functions

    static DofVectorget (const DofSpace *dofSpace, const std::string &name)
     
    static void free (DofVector *dofVector)
    \n \n- \n+ \n \n
    typedef ALBERTA DOF_REAL_VEC Dune::Alberta::DofVectorProvider< Real >::DofVectortypedef ALBERTA DOF_REAL_VEC Dune::Alberta::DofVectorProvider< Real >::DofVector
    \n
    \n \n
    \n \n

    Member Function Documentation

    \n@@ -252,15 +252,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-grid-doc/doxygen/a02018.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02018.html", "unified_diff": "@@ -77,19 +77,19 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::DofVectorProvider< GlobalVector > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofvector.hh>

    \n+

    #include <dune/grid/albertagrid/dofvector.hh>

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

    \n Public Types

    typedef ALBERTA DOF_REAL_D_VEC DofVector
    typedef ALBERTA DOF_REAL_D_VEC DofVector
     
    \n \n \n \n \n@@ -103,15 +103,15 @@\n \n

    ◆ DofVector

    \n \n
    \n
    \n

    \n Static Public Member Functions

    static DofVectorget (const DofSpace *dofSpace, const std::string &name)
     
    static void free (DofVector *dofVector)
    \n \n- \n+ \n \n
    typedef ALBERTA DOF_REAL_D_VEC Dune::Alberta::DofVectorProvider< GlobalVector >::DofVectortypedef ALBERTA DOF_REAL_D_VEC Dune::Alberta::DofVectorProvider< GlobalVector >::DofVector
    \n
    \n \n
    \n \n

    Member Function Documentation

    \n@@ -252,15 +252,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-grid-doc/doxygen/a02022.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02022.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::DofVectorPointer< Dof > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/dofvector.hh>

    \n+

    #include <dune/grid/albertagrid/dofvector.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::DofVectorPointer< Dof >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -730,15 +730,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-grid-doc/doxygen/a02026.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02026.html", "unified_diff": "@@ -80,15 +80,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::ElementInfo< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n+

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::ElementInfo< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -197,24 +197,24 @@\n  \n const Elementelement () const\n  \n const Elementneighbor (int face) const\n  \n Elementel () const\n  \n-ALBERTA EL_INFO & elInfo () const\n+ALBERTA EL_INFO & elInfo () const\n  \n int type () const\n  \n \n \n \n \n-\n+\n \n

    \n Static Public Member Functions

    static ElementInfo createFake (const MeshPointer &mesh, const Element *element, int level, int type=0)
     
    static ElementInfo createFake (const ALBERTA EL_INFO &elInfo)
    static ElementInfo createFake (const ALBERTA EL_INFO &elInfo)
     
    \n \n \n \n \n@@ -613,15 +613,15 @@\n

    \n Static Public Attributes

    static const int dimension = dim
     
    static const int numVertices = NumSubEntities< dimension, dimension >::value
    \n \n \n \n@@ -743,15 +743,15 @@\n
    \n template<int dim>
    \n
    \n \n \n \n \n- \n+ \n \n \n \n
    ElementInfo< dim > Dune::Alberta::ElementInfo< dim >::createFake (const ALBERTA EL_INFO & const ALBERTA EL_INFO & elInfo)
    \n
    \n inlinestatic
    \n \n \n \n
    \n \n \n- \n+ \n \n \n \n \n
    ALBERTA EL_INFO & Dune::Alberta::ElementInfo< dim >::elInfo ALBERTA EL_INFO & Dune::Alberta::ElementInfo< dim >::elInfo () const
    \n
    \n@@ -1698,15 +1698,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-grid-doc/doxygen/a02034.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02034.html", "unified_diff": "@@ -77,24 +77,24 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::Alberta::ElementInfo< dim >::Instance Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n+

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n \n \n \n \n

    \n Public Member Functions

    InstancePtrparent ()
     
    \n \n-\n+\n \n \n \n \n \n

    \n Public Attributes

    ALBERTA EL_INFO elInfo
    ALBERTA EL_INFO elInfo
     
    unsigned int refCount
     
    Alberta::GeometryCache< dim > geometryCache
     
    \n

    Member Function Documentation

    \n@@ -131,15 +131,15 @@\n \n
    \n
    \n
    \n template<int dim>
    \n \n \n- \n+ \n \n
    ALBERTA EL_INFO Dune::Alberta::ElementInfo< dim >::Instance::elInfoALBERTA EL_INFO Dune::Alberta::ElementInfo< dim >::Instance::elInfo
    \n
    \n \n
    \n
    \n \n@@ -171,15 +171,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-grid-doc/doxygen/a02038.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02038.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ElementInfo< dim >::Stack Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n+

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n \n \n \n \n \n \n@@ -230,15 +230,15 @@\n \n

    \n Public Member Functions

     Stack ()
     
     ~Stack ()
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02042.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02042.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ElementInfo< dim >::Seed Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n+

    #include <dune/grid/albertagrid/elementinfo.hh>

    \n \n \n \n \n \n \n@@ -455,15 +455,15 @@\n \n

    \n Public Member Functions

     Seed ()
     
     Seed (const int macroIndex, const int level, const unsigned long path)
     
    \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-grid-doc/doxygen/a02046.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02046.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::AlbertaGridTreeIterator< codim, GridImp, leafIterator > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/treeiterator.hh>

    \n+

    #include <dune/grid/albertagrid/treeiterator.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGridTreeIterator< codim, GridImp, leafIterator >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -674,15 +674,15 @@\n \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-grid-doc/doxygen/a02050.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02050.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Protected Member Functions |\n List of all members \n
    Dune::AlbertaGridHierarchicIterator< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/hierarchiciterator.hh>

    \n+

    #include <dune/grid/albertagrid/hierarchiciterator.hh>

    \n \n \n \n \n \n \n@@ -541,15 +541,15 @@\n \n

    assignment operator

    \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-grid-doc/doxygen/a02054.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02054.html", "unified_diff": "@@ -1491,15 +1491,15 @@\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-grid-doc/doxygen/a02062.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02062.html", "unified_diff": "@@ -137,15 +137,15 @@\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n@@ -468,15 +468,15 @@\n
    \n template<int codim, int dim, class Grid >
    \n

    \n Public Types

    typedef GridImp::template Codim< 0 >::Entity Entity
     
    typedef GridImp::ctype ctype
     
     
    EntitySeed seed () const
     obtain entity seed
     
    unsigned int subEntities (unsigned int cd) const
     Obtain the number of subentities of a given codimension.
     
    ALBERTA EL_INFOgetElInfo () const
    ALBERTA EL_INFOgetElInfo () const
     needed for the LevelIterator and LeafIterator
     
    const ElementInfoelementInfo () const
     
    bool equals (const This &other) const
     equality of entities
     
    \n \n \n
    \n \n \n- \n+ \n \n \n \n \n
    ALBERTA EL_INFO * Dune::AlbertaGridEntity< codim, dim, Grid >::getElInfo ALBERTA EL_INFO * Dune::AlbertaGridEntity< codim, dim, Grid >::getElInfo () const
    \n
    \n@@ -867,15 +867,15 @@\n
    \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-grid-doc/doxygen/a02070.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02070.html", "unified_diff": "@@ -190,15 +190,15 @@\n  \n PartitionType partitionType () const\n  return partition type of this entity
    \n  \n bool equals (const This &i) const\n  equality of entities
    \n  \n-ALBERTA EL_INFO * getElInfo () const\n+ALBERTA EL_INFO * getElInfo () const\n  \n const ElementInfoelementInfo () const\n  \n void clearElement ()\n  \n void setElement (const ElementInfo &elementInfo, int subEntity)\n  \n@@ -689,15 +689,15 @@\n
    \n template<int dim, class Grid >
    \n \n \n \n
    \n \n \n- \n+ \n \n \n \n \n
    ALBERTA EL_INFO * Dune::AlbertaGridEntity< 0, dim, Grid >::getElInfo ALBERTA EL_INFO * Dune::AlbertaGridEntity< 0, dim, Grid >::getElInfo () const
    \n
    \n@@ -1478,15 +1478,15 @@\n
    \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-grid-doc/doxygen/a02090.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02090.html", "unified_diff": "@@ -273,15 +273,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-grid-doc/doxygen/a02094.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02094.html", "unified_diff": "@@ -273,15 +273,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-grid-doc/doxygen/a02102.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02102.html", "unified_diff": "@@ -1036,15 +1036,15 @@\n \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-grid-doc/doxygen/a02114.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02114.html", "unified_diff": "@@ -427,15 +427,15 @@\n \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-grid-doc/doxygen/a02122.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02122.html", "unified_diff": "@@ -77,32 +77,32 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::Alberta::GeometryCache< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/geometrycache.hh>

    \n+

    #include <dune/grid/albertagrid/geometrycache.hh>

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

    \n Public Types

    typedef FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed
     
    typedef FieldMatrix< Real, dim, dimWorldJacobianTransposed
     
    \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Public Member Functions

     GeometryCache ()
     
    const RealintegrationElement (const ALBERTA EL_INFO &elInfo)
    const RealintegrationElement (const ALBERTA EL_INFO &elInfo)
     
    const JacobianTransposedjacobianTransposed (const ALBERTA EL_INFO &elInfo)
    const JacobianTransposedjacobianTransposed (const ALBERTA EL_INFO &elInfo)
     
    const JacobianInverseTransposedjacobianInverseTransposed (const ALBERTA EL_INFO &elInfo)
    const JacobianInverseTransposedjacobianInverseTransposed (const ALBERTA EL_INFO &elInfo)
     
    \n

    Member Typedef Documentation

    \n \n

    ◆ JacobianInverseTransposed

    \n \n
    \n@@ -173,15 +173,15 @@\n \n \n \n \n@@ -201,15 +201,15 @@\n
    \n \n \n \n \n- \n+ \n \n \n \n
    const Real & Dune::Alberta::GeometryCache< dim >::integrationElement (const ALBERTA EL_INFO & const ALBERTA EL_INFO & elInfo)
    \n
    \n inline
    \n \n \n \n@@ -229,30 +229,30 @@\n
    \n \n \n \n \n- \n+ \n \n \n \n
    const JacobianInverseTransposed & Dune::Alberta::GeometryCache< dim >::jacobianInverseTransposed (const ALBERTA EL_INFO & const ALBERTA EL_INFO & elInfo)
    \n
    \n inline
    \n \n \n \n \n
    \n \n \n \n \n- \n+ \n \n \n \n
    const JacobianTransposed & Dune::Alberta::GeometryCache< dim >::jacobianTransposed (const ALBERTA EL_INFO & const ALBERTA EL_INFO & elInfo)
    \n
    \n inline
    \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02126.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02126.html", "unified_diff": "@@ -77,26 +77,26 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::Alberta::GeometryCacheProxy< dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/geometrycache.hh>

    \n+

    #include <dune/grid/albertagrid/geometrycache.hh>

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

    \n Public Types

    typedef FieldMatrix< Real, dimWorld, dim > JacobianInverseTransposed
     
    typedef FieldMatrix< Real, dim, dimWorldJacobianTransposed
     
    \n \n-\n+\n \n \n \n \n \n \n \n@@ -151,15 +151,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -252,15 +252,15 @@\n \n

    \n Public Member Functions

     GeometryCacheProxy (GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO &elInfo)
     GeometryCacheProxy (GeometryCache< dim > &geometryCache, const ALBERTA EL_INFO &elInfo)
     
    const RealintegrationElement ()
     
    const JacobianTransposedjacobianTransposed ()
     
    const JacobianInverseTransposedjacobianInverseTransposed ()
     
    (GeometryCache< dim > & geometryCache,
    const ALBERTA EL_INFO & const ALBERTA EL_INFO & elInfo 
    )
    \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-grid-doc/doxygen/a02130.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02130.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeometryReference< Implementation > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/geometryreference.hh>

    \n+

    #include <dune/grid/albertagrid/geometryreference.hh>

    \n
    \n Inheritance diagram for Dune::GeometryReference< Implementation >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -728,15 +728,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-grid-doc/doxygen/a02134.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02134.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::LocalGeometryReference< mydim, cdim, Grid > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/geometryreference.hh>

    \n+

    #include <dune/grid/albertagrid/geometryreference.hh>

    \n
    \n Inheritance diagram for Dune::LocalGeometryReference< mydim, cdim, Grid >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -738,15 +738,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-grid-doc/doxygen/a02154.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02154.html", "unified_diff": "@@ -916,15 +916,15 @@\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-grid-doc/doxygen/a02166.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02166.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::AlbertaGridLeafIterator< codim, pitype, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/leafiterator.hh>

    \n+

    #include <dune/grid/albertagrid/leafiterator.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGridLeafIterator< codim, pitype, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -613,15 +613,15 @@\n \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-grid-doc/doxygen/a02170.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02170.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::AlbertaGridLevelIterator< codim, pitype, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/leveliterator.hh>

    \n+

    #include <dune/grid/albertagrid/leveliterator.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGridLevelIterator< codim, pitype, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -613,15 +613,15 @@\n \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-grid-doc/doxygen/a02250.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02250.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Public Member Functions |\n List of all members \n
    Dune::IndexStack< T, length > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/indexstack.hh>

    \n+

    #include <dune/grid/albertagrid/indexstack.hh>

    \n \n \n \n \n \n \n@@ -439,15 +439,15 @@\n
    \n \n

    test stack functionality

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

    \n Public Member Functions

     IndexStack ()
     Constructor, create new IndexStack.
     
     ~IndexStack ()
    \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-grid-doc/doxygen/a02262.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02262.html", "unified_diff": "@@ -450,15 +450,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-grid-doc/doxygen/a02266.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02266.html", "unified_diff": "@@ -1018,15 +1018,15 @@\n \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-grid-doc/doxygen/a02278.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02278.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::AlbertaGridLeafIterator< codim, Ghost_Partition, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/leafiterator.hh>

    \n+

    #include <dune/grid/albertagrid/leafiterator.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGridLeafIterator< codim, Ghost_Partition, GridImp >:
    \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-grid-doc/doxygen/a02282.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02282.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::AlbertaGridLevelProvider< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/level.hh>

    \n+

    #include <dune/grid/albertagrid/level.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGridLevelProvider< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -428,15 +428,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-grid-doc/doxygen/a02290.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02290.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::AlbertaGridLevelProvider< dim >::SetLocal Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/level.hh>

    \n+

    #include <dune/grid/albertagrid/level.hh>

    \n \n \n \n \n \n \n@@ -144,15 +144,15 @@\n \n

    \n Public Member Functions

     SetLocal (const DofVectorPointer &level)
     
    void operator() (const Alberta::ElementInfo< dim > &elementInfo) 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-grid-doc/doxygen/a02294.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02294.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::AlbertaGridLevelProvider< dim >::CalcMaxLevel Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/level.hh>

    \n+

    #include <dune/grid/albertagrid/level.hh>

    \n \n \n \n \n \n \n@@ -202,15 +202,15 @@\n \n

    \n Public Member Functions

     CalcMaxLevel ()
     
    void operator() (const Level &dof)
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02298.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02298.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::AlbertaGridLevelProvider< dim >::Interpolation Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/level.hh>

    \n+

    #include <dune/grid/albertagrid/level.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Alberta::Patch< dimensionPatch
     
    \n \n

    \n@@ -177,15 +177,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-grid-doc/doxygen/a02302.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02302.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::AlbertaGridLevelIterator< codim, Ghost_Partition, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/leveliterator.hh>

    \n+

    #include <dune/grid/albertagrid/leveliterator.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaGridLevelIterator< codim, Ghost_Partition, GridImp >:
    \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-grid-doc/doxygen/a02306.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02306.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::MacroData< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/macrodata.hh>

    \n+

    #include <dune/grid/albertagrid/macrodata.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::MacroData< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -904,15 +904,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-grid-doc/doxygen/a02310.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02310.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::MacroData< dim >::Library< int > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/macrodata.hh>

    \n+

    #include <dune/grid/albertagrid/macrodata.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Alberta::MacroData< dim > MacroData
     
    \n \n

    \n@@ -308,16 +308,16 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02314.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02314.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::MacroElement< dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/macroelement.hh>

    \n+

    #include <dune/grid/albertagrid/macroelement.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::MacroElement< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,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-grid-doc/doxygen/a02322.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02322.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::Alberta::MeshPointer< dim >::MacroIterator Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/meshpointer.hh>

    \n+

    #include <dune/grid/albertagrid/meshpointer.hh>

    \n \n \n \n \n \n \n@@ -448,15 +448,15 @@\n \n

    \n Public Types

    typedef Alberta::MeshPointer< dim > MeshPointer
     
    typedef Alberta::ElementInfo< dim > ElementInfo
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02326.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02326.html", "unified_diff": "@@ -73,27 +73,27 @@\n \n \n
    \n
    Dune::AlbertaError Class Reference
    \n
    \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaError:
    \n
    \n
    \"Inheritance
    \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-grid-doc/doxygen/a02330.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02330.html", "unified_diff": "@@ -73,27 +73,27 @@\n \n \n
    \n
    Dune::AlbertaIOError Class Reference
    \n
    \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaIOError:
    \n
    \n
    \"Inheritance
    \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-grid-doc/doxygen/a02334.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02334.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Alberta::GlobalSpace Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n \n \n@@ -174,15 +174,15 @@\n \n

    \n Public Types

    typedef GlobalMatrix Matrix
     
    typedef GlobalVector Vector
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02338.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02338.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Alberta::NumSubEntities< dim, codim > 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-grid-doc/doxygen/a02342.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02342.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::NumSubEntities< dim, 0 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 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-grid-doc/doxygen/a02346.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02346.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::NumSubEntities< dim, dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = dim+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-grid-doc/doxygen/a02350.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02350.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::NumSubEntities< 0, 0 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 1
     
    \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-grid-doc/doxygen/a02354.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02354.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::NumSubEntities< 2, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 3
     
    \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-grid-doc/doxygen/a02358.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02358.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::NumSubEntities< 3, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 4
     
    \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-grid-doc/doxygen/a02362.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02362.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::NumSubEntities< 3, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 6
     
    \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-grid-doc/doxygen/a02366.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02366.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Alberta::CodimType< dim, codim > 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-grid-doc/doxygen/a02370.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02370.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::CodimType< dim, 0 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = CENTER
     
    \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-grid-doc/doxygen/a02374.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02374.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::CodimType< dim, dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = VERTEX
     
    \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-grid-doc/doxygen/a02378.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02378.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::CodimType< 2, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = EDGE
     
    \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-grid-doc/doxygen/a02382.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02382.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::CodimType< 3, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = FACE
     
    \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-grid-doc/doxygen/a02386.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02386.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::CodimType< 3, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = EDGE
     
    \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-grid-doc/doxygen/a02390.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02390.html", "unified_diff": "@@ -77,19 +77,19 @@\n Public Types |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::FillFlags< dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

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

    \n Public Types

    typedef ALBERTA FLAGS Flags
    typedef ALBERTA FLAGS Flags
     
    \n \n \n \n \n@@ -119,15 +119,15 @@\n \n
    \n
    \n
    \n template<int dim>
    \n

    \n Static Public Attributes

    static const Flags nothing = FILL_NOTHING
     
    static const Flags coords = FILL_COORDS
    \n \n- \n+ \n \n
    typedef ALBERTA FLAGS Dune::Alberta::FillFlags< dim >::Flagstypedef ALBERTA FLAGS Dune::Alberta::FillFlags< dim >::Flags
    \n
    \n \n
    \n \n

    Member Data Documentation

    \n@@ -401,15 +401,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-grid-doc/doxygen/a02394.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02394.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::RefinementEdge< dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 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-grid-doc/doxygen/a02398.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02398.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::RefinementEdge< 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int value = 2
     
    \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-grid-doc/doxygen/a02402.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02402.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::Dune2AlbertaNumbering< dim, codim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (const int i)
     
    \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-grid-doc/doxygen/a02406.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02406.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Dune2AlbertaNumbering< 3, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (const int i)
     
    \n \n

    \n@@ -140,15 +140,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-grid-doc/doxygen/a02410.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02410.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::Generic2AlbertaNumbering< dim, codim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (const int i)
     
    \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-grid-doc/doxygen/a02414.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02414.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::Generic2AlbertaNumbering< dim, 1 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (const int i)
     
    \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-grid-doc/doxygen/a02418.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02418.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::Generic2AlbertaNumbering< 1, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (const int i)
     
    \n

    Member Function Documentation

    \n@@ -111,15 +111,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-grid-doc/doxygen/a02422.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02422.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Generic2AlbertaNumbering< 3, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (const int i)
     
    \n \n

    \n@@ -140,15 +140,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-grid-doc/doxygen/a02426.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02426.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Public Member Functions |\n List of all members \n
    Dune::Alberta::NumberingMap< dim, Numbering > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n
    \n Inheritance diagram for Dune::Alberta::NumberingMap< dim, Numbering >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -267,15 +267,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-grid-doc/doxygen/a02434.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02434.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Alberta::MapVertices< dim, codim > 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-grid-doc/doxygen/a02438.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02438.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::MapVertices< dim, 0 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (int subEntity, int vertex)
     
    \n

    Member Function Documentation

    \n@@ -123,15 +123,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-grid-doc/doxygen/a02442.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02442.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::MapVertices< 2, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (int subEntity, int vertex)
     
    \n

    Member Function Documentation

    \n@@ -121,15 +121,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-grid-doc/doxygen/a02446.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02446.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::MapVertices< 3, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (int subEntity, int vertex)
     
    \n

    Member Function Documentation

    \n@@ -121,15 +121,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-grid-doc/doxygen/a02450.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02450.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::MapVertices< 3, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (int subEntity, int vertex)
     
    \n

    Member Function Documentation

    \n@@ -121,15 +121,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-grid-doc/doxygen/a02454.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02454.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::MapVertices< dim, dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int apply (int subEntity, int vertex)
     
    \n

    Member Function Documentation

    \n@@ -123,15 +123,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-grid-doc/doxygen/a02458.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02458.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Twist< dim, subdim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int twist (const Element *element, int subEntity)
     
    \n \n

    \n@@ -206,15 +206,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-grid-doc/doxygen/a02462.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02462.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Twist< dim, 1 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int twist (const Element *element, int subEntity)
     
    \n \n

    \n@@ -206,15 +206,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-grid-doc/doxygen/a02466.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02466.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Twist< 1, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int twist (const Element *element, int subEntity)
     
    \n \n

    \n@@ -174,15 +174,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-grid-doc/doxygen/a02470.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02470.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Twist< dim, 2 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int twist (const Element *element, int subEntity)
     
    \n \n

    \n@@ -206,15 +206,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-grid-doc/doxygen/a02474.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02474.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Twist< 2, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/misc.hh>

    \n+

    #include <dune/grid/albertagrid/misc.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static int twist (const Element *element, int subEntity)
     
    \n \n

    \n@@ -174,15 +174,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-grid-doc/doxygen/a02506.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02506.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Alberta::ForEachInteriorSubChild< dim, codim > 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-grid-doc/doxygen/a02510.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02510.html", "unified_diff": "@@ -78,21 +78,21 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::Patch< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

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

    \n Public Types

    typedef Alberta::ElementInfo< dimensionElementInfo
     
    typedef ALBERTA RC_LIST_EL ElementList
    typedef ALBERTA RC_LIST_EL ElementList
     
    \n \n \n \n \n@@ -144,15 +144,15 @@\n \n
    \n
    \n
    \n template<int dim>
    \n

    \n Public Member Functions

     Patch (ElementList *list, int count)
     
    Elementoperator[] (int i) const
    \n \n- \n+ \n \n
    typedef ALBERTA RC_LIST_EL Dune::Alberta::Patch< dim >::ElementListtypedef ALBERTA RC_LIST_EL Dune::Alberta::Patch< dim >::ElementList
    \n
    \n \n
    \n \n

    Constructor & Destructor Documentation

    \n@@ -512,15 +512,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-grid-doc/doxygen/a02514.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02514.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ForEachInteriorSubChild< dim, 0 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

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

    \n Static Public Member Functions

    template<class Functor >
    static void apply (Functor &functor, const Patch< dim > &patch)
     
    \n@@ -126,15 +126,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-grid-doc/doxygen/a02518.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02518.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ForEachInteriorSubChild< dim, dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

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

    \n Static Public Member Functions

    template<class Functor >
    static void apply (Functor &functor, const Patch< dim > &patch)
     
    \n@@ -126,15 +126,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-grid-doc/doxygen/a02522.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02522.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ForEachInteriorSubChild< 2, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

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

    \n Static Public Member Functions

    template<class Functor >
    static void apply (Functor &functor, const Patch< 2 > &patch)
     
    \n@@ -124,15 +124,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-grid-doc/doxygen/a02526.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02526.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ForEachInteriorSubChild< 3, 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

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

    \n Static Public Member Functions

    template<class Functor >
    static void apply (Functor &functor, const Patch< 3 > &patch)
     
    \n@@ -124,15 +124,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-grid-doc/doxygen/a02530.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02530.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Alberta::ForEachInteriorSubChild< 3, 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

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

    \n Static Public Member Functions

    template<class Functor >
    static void apply (Functor &functor, const Patch< 3 > &patch)
     
    \n@@ -124,15 +124,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-grid-doc/doxygen/a02534.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02534.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Alberta::GeometryInFather< dim > 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-grid-doc/doxygen/a02538.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02538.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::GeometryInFather< 1 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Real LocalVector[dim]
     
    \n \n

    \n@@ -177,15 +177,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-grid-doc/doxygen/a02542.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02542.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::GeometryInFather< 2 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Real LocalVector[dim]
     
    \n \n

    \n@@ -177,15 +177,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-grid-doc/doxygen/a02546.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02546.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::Alberta::GeometryInFather< 3 > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/refinement.hh>

    \n+

    #include <dune/grid/albertagrid/refinement.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Real LocalVector[dim]
     
    \n \n

    \n@@ -177,15 +177,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-grid-doc/doxygen/a02558.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02558.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::AlbertaTransformation Class Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/transformation.hh>

    \n+

    #include <dune/grid/albertagrid/transformation.hh>

    \n \n \n \n \n \n \n@@ -272,15 +272,15 @@\n \n

    \n Public Types

    typedef Alberta::Real ctype
     
    typedef FieldVector< ctype, dimensionWorldVector
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02562.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02562.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::AlbertaMarkerVector< dim, dimworld > Class Template Reference
    \n \n
    \n \n

    marker assigning subentities to one element containing them \n More...

    \n \n-

    #include <dune/grid/albertagrid/treeiterator.hh>

    \n+

    #include <dune/grid/albertagrid/treeiterator.hh>

    \n
    \n Inheritance diagram for Dune::AlbertaMarkerVector< dim, dimworld >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -377,15 +377,15 @@\n
    \n \n

    return true if marking is up to date

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02574.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02574.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::AlbertaMarkerVector< dim, dimworld >::MarkSubEntities< bool >::Codim< codim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/albertagrid/treeiterator.hh>

    \n+

    #include <dune/grid/albertagrid/treeiterator.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Alberta::ElementInfo< dimension > ElementInfo
     
    \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-grid-doc/doxygen/a02578.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02578.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Protected Member Functions |\n List of all members \n
    Dune::AdaptDataHandle< Grid, Impl > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/adaptcallback.hh>

    \n+

    #include <dune/grid/common/adaptcallback.hh>

    \n
    \n Inheritance diagram for Dune::AdaptDataHandle< Grid, Impl >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -300,15 +300,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-grid-doc/doxygen/a02582.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02582.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::AdaptDataHandleInterface< Grid, Impl > Class Template Reference
    \n \n
    \n \n

    Interface class for the Grid's adapt method where the parameter is a AdaptDataHandleInterface. \n More...

    \n \n-

    #include <dune/grid/common/adaptcallback.hh>

    \n+

    #include <dune/grid/common/adaptcallback.hh>

    \n
    \n Inheritance diagram for Dune::AdaptDataHandleInterface< Grid, Impl >:
    \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-grid-doc/doxygen/a02586.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02586.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::CombinedAdaptProlongRestrict< A, B > Class Template Reference
    \n \n
    \n \n

    class for combining 2 index sets together for adaptation process \n More...

    \n \n-

    #include <dune/grid/common/adaptcallback.hh>

    \n+

    #include <dune/grid/common/adaptcallback.hh>

    \n \n \n \n \n \n \n@@ -237,15 +237,15 @@\n
    \n \n

    restrict data to father

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02598.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02598.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::DuneBoundaryProjection< dimworld > Struct Template Referenceabstract
    \n \n
    \n \n

    Interface class for vertex projection at the boundary. \n More...

    \n \n-

    #include <dune/grid/common/boundaryprojection.hh>

    \n+

    #include <dune/grid/common/boundaryprojection.hh>

    \n
    \n Inheritance diagram for Dune::DuneBoundaryProjection< dimworld >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -559,15 +559,15 @@\n \n

    \n Public Member Functions

     CombinedAdaptProlongRestrict (A &a, B &b)
     constructor storing the two references
     
    template<class Entity >
    \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-grid-doc/doxygen/a02602.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02602.html", "unified_diff": "@@ -81,15 +81,15 @@\n Static Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::BoundaryProjectionWrapper< dimworld > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/boundaryprojection.hh>

    \n+

    #include <dune/grid/common/boundaryprojection.hh>

    \n
    \n Inheritance diagram for Dune::BoundaryProjectionWrapper< dimworld >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -634,15 +634,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-grid-doc/doxygen/a02606.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02606.html", "unified_diff": "@@ -81,15 +81,15 @@\n Protected Member Functions |\n Static Protected Member Functions |\n List of all members \n
    Dune::BoundarySegmentWrapper< dim, dimworld > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/boundaryprojection.hh>

    \n+

    #include <dune/grid/common/boundaryprojection.hh>

    \n
    \n Inheritance diagram for Dune::BoundarySegmentWrapper< dim, dimworld >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -665,15 +665,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-grid-doc/doxygen/a02610.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02610.html", "unified_diff": "@@ -81,15 +81,15 @@\n Static Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::CircleBoundaryProjection< dimworld > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/boundaryprojection.hh>

    \n+

    #include <dune/grid/common/boundaryprojection.hh>

    \n
    \n Inheritance diagram for Dune::CircleBoundaryProjection< dimworld >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -640,15 +640,15 @@\n
    \n \n

    radius of circ

    \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-grid-doc/doxygen/a02614.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02614.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::BoundarySegment< dim, dimworld, ctype > Struct Template Referenceabstract
    \n \n
    \n \n

    Base class for classes implementing geometries of boundary segments. \n More...

    \n \n-

    #include <dune/grid/common/boundarysegment.hh>

    \n+

    #include <dune/grid/common/boundarysegment.hh>

    \n
    \n Inheritance diagram for Dune::BoundarySegment< dim, dimworld, ctype >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -404,15 +404,15 @@\n \n \n
    Returns
    Object derived from BoundarySegment.
    \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-grid-doc/doxygen/a02618.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02618.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Types |\n Static Protected Member Functions |\n List of all members \n
    Dune::BoundarySegmentBackupRestore< BndSeg > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/boundarysegment.hh>

    \n+

    #include <dune/grid/common/boundarysegment.hh>

    \n
    \n Inheritance diagram for Dune::BoundarySegmentBackupRestore< BndSeg >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -265,15 +265,15 @@\n \n \n
    Returns
    Object derived from BoundarySegment.
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02706.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02706.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::MessageBufferIF< MessageBufferImp > Class Template Reference
    \n \n
    \n \n

    Communication message buffer interface. This class describes the interface for reading and writing data to the communication message buffer. As message buffers might be deeply implemented in various packages the message buffers implementations cannot be derived from this interface class. Therefore we just apply the engine concept to wrap the message buffer call and make sure that the interface is fulfilled. \n More...

    \n \n-

    #include <dune/grid/common/datahandleif.hh>

    \n+

    #include <dune/grid/common/datahandleif.hh>

    \n \n \n \n \n \n \n@@ -214,15 +214,15 @@\n

    \n Public Member Functions

     MessageBufferIF (MessageBufferImp &buff)
     stores reference to original buffer buff
     
    template<class T >
    \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-grid-doc/doxygen/a02710.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02710.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::CommDataHandleIF< DataHandleImp, DataTypeImp > Class Template Reference
    \n \n
    \n \n

    CommDataHandleIF describes the features of a data handle for communication in parallel runs using the Grid::communicate methods. Here the Barton-Nackman trick is used to interprete data handle objects as its interface. Therefore usable data handle classes need to be derived from this class. \n More...

    \n \n-

    #include <dune/grid/common/datahandleif.hh>

    \n+

    #include <dune/grid/common/datahandleif.hh>

    \n
    \n Inheritance diagram for Dune::CommDataHandleIF< DataHandleImp, DataTypeImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -526,15 +526,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-grid-doc/doxygen/a02726.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02726.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DefaultLevelGridView< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

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

    \n Classes

    struct  Codim
     Codim Structure. More...
     
    \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-grid-doc/doxygen/a02730.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02730.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DefaultLeafGridView< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

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

    \n Classes

    struct  Codim
     Codim Structure. More...
     
    \n@@ -819,15 +819,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-grid-doc/doxygen/a02734.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02734.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Attributes |\n List of all members \n
    Dune::DefaultLevelGridViewTraits< GridImp > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

    \n \n \n \n \n

    \n Classes

    struct  Codim
     
    \n \n

    \n@@ -262,15 +262,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-grid-doc/doxygen/a02738.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02738.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Public Types |\n List of all members \n
    Dune::DefaultLevelGridViewTraits< GridImp >::Codim< cd > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

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

    \n Classes

    struct  Partition
     Define types needed to iterate over entities of a given partition type. More...
     
    \n@@ -170,15 +170,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-grid-doc/doxygen/a02742.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02742.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::DefaultLevelGridViewTraits< GridImp >::Codim< cd >::Partition< pit > Struct Template Reference
    \n \n
    \n \n

    Define types needed to iterate over entities of a given partition type. \n More...

    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

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

    \n Public Types

    typedef Grid::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
     iterator over a given codim and partition type
     
    \n@@ -116,15 +116,15 @@\n
    \n \n

    iterator over a given codim and partition 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-grid-doc/doxygen/a02746.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02746.html", "unified_diff": "@@ -76,15 +76,15 @@\n
    Dune::DefaultLevelGridView< GridImp >::Codim< cd > Struct Template Reference
    \n \n
    \n \n

    Codim Structure. \n More...

    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

    \n
    \n Inheritance diagram for Dune::DefaultLevelGridView< GridImp >::Codim< cd >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -92,15 +92,15 @@\n \n
    \n

    Detailed Description

    \n
    template<class GridImp>
    \n template<int cd>
    \n struct Dune::DefaultLevelGridView< GridImp >::Codim< cd >

    Codim Structure.

    \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-grid-doc/doxygen/a02750.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02750.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Attributes |\n List of all members \n
    Dune::DefaultLeafGridViewTraits< GridImp > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

    \n \n \n \n \n

    \n Classes

    struct  Codim
     
    \n \n

    \n@@ -262,15 +262,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-grid-doc/doxygen/a02754.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02754.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Public Types |\n List of all members \n
    Dune::DefaultLeafGridViewTraits< GridImp >::Codim< cd > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

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

    \n Classes

    struct  Partition
     Define types needed to iterate over entities of a given partition type. More...
     
    \n@@ -170,15 +170,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-grid-doc/doxygen/a02758.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02758.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::DefaultLeafGridViewTraits< GridImp >::Codim< cd >::Partition< pit > Struct Template Reference
    \n \n
    \n \n

    Define types needed to iterate over entities of a given partition type. \n More...

    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

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

    \n Public Types

    typedef Grid::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
     iterator over a given codim and partition type
     
    \n@@ -116,15 +116,15 @@\n
    \n \n

    iterator over a given codim and partition 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-grid-doc/doxygen/a02762.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02762.html", "unified_diff": "@@ -76,15 +76,15 @@\n
    Dune::DefaultLeafGridView< GridImp >::Codim< cd > Struct Template Reference
    \n \n
    \n \n

    Codim Structure. \n More...

    \n \n-

    #include <dune/grid/common/defaultgridview.hh>

    \n+

    #include <dune/grid/common/defaultgridview.hh>

    \n
    \n Inheritance diagram for Dune::DefaultLeafGridView< GridImp >::Codim< cd >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -92,15 +92,15 @@\n \n
    \n

    Detailed Description

    \n
    template<class GridImp>
    \n template<int cd>
    \n struct Dune::DefaultLeafGridView< GridImp >::Codim< cd >

    Codim Structure.

    \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-grid-doc/doxygen/a02766.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02766.html", "unified_diff": "@@ -945,15 +945,15 @@\n \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-grid-doc/doxygen/a02786.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02786.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::EntityIterator< codim, Grid, IteratorImp > Class Template Reference
    \n \n
    \n \n

    interface class for an iterator over grid entities \n More...

    \n \n-

    #include <dune/grid/common/entityiterator.hh>

    \n+

    #include <dune/grid/common/entityiterator.hh>

    \n \n \n \n \n \n \n@@ -512,15 +512,15 @@\n \n

    \n Public Types

    typedef IteratorImp Implementation
     type of underlying implementation
     
    typedef Grid::template Codim< codim >::Entity Entity
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02790.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02790.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    std::iterator_traits< Dune::EntityIterator< codim, Grid, IteratorImp > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/common/entityiterator.hh>

    \n+

    #include <dune/grid/common/entityiterator.hh>

    \n \n \n \n \n \n \n@@ -173,15 +173,15 @@\n \n

    \n Public Types

    typedef ptrdiff_t difference_type
     
    typedef const IteratorImp::Entity value_type
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02798.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02798.html", "unified_diff": "@@ -76,29 +76,29 @@\n
    Dune::GridError Class Reference
    \n \n
    \n \n

    Base class for exceptions in Dune grid modules. \n More...

    \n \n-

    #include <dune/grid/common/exceptions.hh>

    \n+

    #include <dune/grid/common/exceptions.hh>

    \n
    \n Inheritance diagram for Dune::GridError:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n \"\"\n \n
    \n

    Detailed Description

    \n

    Base class for exceptions in Dune grid modules.

    \n

    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02826.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02826.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp > Class Template Reference
    \n \n
    \n \n

    Index Set Interface base class. \n More...

    \n \n-

    #include <dune/grid/common/indexidset.hh>

    \n+

    #include <dune/grid/common/indexidset.hh>

    \n
    \n Inheritance diagram for Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -751,15 +751,15 @@\n \n

    dimension of the grid (maximum allowed codimension)

    \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-grid-doc/doxygen/a02830.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02830.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::IdSet< GridImp, IdSetImp, IdTypeImp > Class Template Reference
    \n \n
    \n \n

    Id Set Interface. \n More...

    \n \n-

    #include <dune/grid/common/indexidset.hh>

    \n+

    #include <dune/grid/common/indexidset.hh>

    \n
    \n Inheritance diagram for Dune::IdSet< GridImp, IdSetImp, IdTypeImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -484,15 +484,15 @@\n \n

    dimension of the grid (maximum allowed codimension)

    \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-grid-doc/doxygen/a02882.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02882.html", "unified_diff": "@@ -303,15 +303,15 @@\n

    Detailed Description

    \n
    template<class ViewTraits>
    \n class Dune::GridView< ViewTraits >

    Grid view abstract base class.

    \n

    Interface class for a view on grids. Grids return two types of view, a view of the leaf grid and of a level grid, which both satisfy the same interface. Through the view the user has access to the iterators, the intersections and the index set.

    \n

    The interface is implemented using the engine concept.

    \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-grid-doc/doxygen/a02902.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02902.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::IndexSet< GridImp, IndexSetImp, IndexTypeImp, TypesImp >::Codim< cc > Struct Template Reference
    \n \n
    \n \n

    Export the type of the entity used as parameter in the index(...) method. \n More...

    \n \n-

    #include <dune/grid/common/indexidset.hh>

    \n+

    #include <dune/grid/common/indexidset.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Traits::template Codim< cc >::Entity Entity
     
    \n

    Detailed Description

    \n@@ -110,15 +110,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-grid-doc/doxygen/a02906.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02906.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::IndexSetDefaultImplementation< GridImp, IndexSetImp > Class Template Reference
    \n \n
    \n \n

    Provide default implementation of method if IndexSet. \n More...

    \n \n-

    #include <dune/grid/common/indexidset.hh>

    \n+

    #include <dune/grid/common/indexidset.hh>

    \n
    \n Inheritance diagram for Dune::IndexSetDefaultImplementation< GridImp, IndexSetImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -527,15 +527,15 @@\n
    \n \n

    dimension of the grid (maximum allowed codimension)

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a02910.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02910.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::IdSet< GridImp, IdSetImp, IdTypeImp >::Codim< cc > Struct Template Reference
    \n \n
    \n \n

    Export the type of the entity used as parameter in the id(...) method. \n More...

    \n \n-

    #include <dune/grid/common/indexidset.hh>

    \n+

    #include <dune/grid/common/indexidset.hh>

    \n \n \n \n \n

    \n Public Types

    using Entity = typename Traits::template Codim< cc >::Entity
     
    \n

    Detailed Description

    \n@@ -110,15 +110,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-grid-doc/doxygen/a02922.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02922.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Mapper< G, MapperImp, IndexType > Class Template Reference
    \n \n
    \n \n

    Mapper interface. \n More...

    \n \n-

    #include <dune/grid/common/mapper.hh>

    \n+

    #include <dune/grid/common/mapper.hh>

    \n
    \n Inheritance diagram for Dune::Mapper< G, MapperImp, IndexType >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -486,15 +486,15 @@\n
    \n \n

    Reinitialize mapper after grid has been modified.

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

    Implementation class for a multiple codim and multiple geometry type mapper. \n More...

    \n \n-

    #include <dune/grid/common/mcmgmapper.hh>

    \n+

    #include <dune/grid/common/mcmgmapper.hh>

    \n
    \n Inheritance diagram for Dune::MultipleCodimMultipleGeomTypeMapper< GV >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -969,15 +969,15 @@\n \n

    Recalculates indices after grid adaptation.

    \n

    After grid adaptation you need to call this to update the stored gridview and recalculate the indices.

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

    Multiple codim and multiple geometry type mapper for leaf entities. \n More...

    \n \n-

    #include <dune/grid/common/mcmgmapper.hh>

    \n+

    #include <dune/grid/common/mcmgmapper.hh>

    \n
    \n Inheritance diagram for Dune::LeafMultipleCodimMultipleGeomTypeMapper< G >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1018,15 +1018,15 @@\n
    \n \n

    Reinitialize mapper after grid has been modified.

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

    Multiple codim and multiple geometry type mapper for entities of one level. \n More...

    \n \n-

    #include <dune/grid/common/mcmgmapper.hh>

    \n+

    #include <dune/grid/common/mcmgmapper.hh>

    \n
    \n Inheritance diagram for Dune::LevelMultipleCodimMultipleGeomTypeMapper< G >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1025,15 +1025,15 @@\n
    \n \n

    Reinitialize mapper after grid has been modified.

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

    A set of PartitionType values. \n More...

    \n \n-

    #include <dune/grid/common/partitionset.hh>

    \n+

    #include <dune/grid/common/partitionset.hh>

    \n \n \n \n \n \n \n@@ -395,15 +395,15 @@\n
    \n \n

    creates a PartitionSet for the given PartitionIteratorType

    \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-grid-doc/doxygen/a02998.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a02998.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::SingleCodimSingleGeomTypeMapper< GV, c > Class Template Reference
    \n \n
    \n \n

    Implementation class for a single codim and single geometry type mapper. \n More...

    \n \n-

    #include <dune/grid/common/scsgmapper.hh>

    \n+

    #include <dune/grid/common/scsgmapper.hh>

    \n
    \n Inheritance diagram for Dune::SingleCodimSingleGeomTypeMapper< GV, c >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -704,15 +704,15 @@\n \n

    Recalculates indices after grid adaptation.

    \n

    After grid adaptation you need to call this to update the stored gridview and recalculate the indices.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03002.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LeafSingleCodimSingleGeomTypeMapper< G, c > Class Template Reference
    \n \n
    \n \n

    Single codim and single geometry type mapper for leaf entities. \n More...

    \n \n-

    #include <dune/grid/common/scsgmapper.hh>

    \n+

    #include <dune/grid/common/scsgmapper.hh>

    \n
    \n Inheritance diagram for Dune::LeafSingleCodimSingleGeomTypeMapper< G, c >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -759,15 +759,15 @@\n
    \n \n

    Reinitialize mapper after grid has been modified.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03006.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03006.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LevelSingleCodimSingleGeomTypeMapper< G, c > Class Template Reference
    \n \n
    \n \n

    Single codim and single geometry type mapper for entities of one level. \n More...

    \n \n-

    #include <dune/grid/common/scsgmapper.hh>

    \n+

    #include <dune/grid/common/scsgmapper.hh>

    \n
    \n Inheritance diagram for Dune::LevelSingleCodimSingleGeomTypeMapper< G, c >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -760,15 +760,15 @@\n
    \n \n

    Reinitialize mapper after grid has been modified.

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

    organizes the caching of sizes for one grid and one GeometryType \n More...

    \n \n-

    #include <dune/grid/common/sizecache.hh>

    \n+

    #include <dune/grid/common/sizecache.hh>

    \n
    \n Inheritance diagram for Dune::SizeCache< GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -320,15 +320,15 @@\n
    \n \n

    Return number of grid entities of a given codim on a given level in this process.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03050.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03050.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members\n
    Dune::CachedCoordFunction< HostGrid, CoordFunction > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/cachedcoordfunction.hh>

    \n+

    #include <dune/grid/geometrygrid/cachedcoordfunction.hh>

    \n
    \n Inheritance diagram for Dune::CachedCoordFunction< HostGrid, CoordFunction >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -469,15 +469,15 @@\n
    \n \n

    dimension of the range vector

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03054.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03054.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::GeoGrid::CoordCache< HostGrid, Coordinate > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/cachedcoordfunction.hh>

    \n+

    #include <dune/grid/geometrygrid/cachedcoordfunction.hh>

    \n
    \n Inheritance diagram for Dune::GeoGrid::CoordCache< HostGrid, Coordinate >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -319,15 +319,15 @@\n \n

    \n Public Member Functions

    template<unsigned int p>
    struct PartitionSet< partitions|p > constexpr operator+ (const PartitionSet< p > &) const
     Returns a new PartitionSet that also contains the partitions in set.
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03110.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03110.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::AnalyticalCoordFunction< ct, dimD, dimR, Impl > Class Template Reference
    \n \n
    \n \n

    Derive an implementation of an analytical coordinate function from this class. \n More...

    \n \n-

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n+

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n
    \n Inheritance diagram for Dune::AnalyticalCoordFunction< ct, dimD, dimR, Impl >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -583,15 +583,15 @@\n
    \n \n

    dimension of the range vector

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

    Derive an implementation of a discrete coordinate function from this class. \n More...

    \n \n-

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n+

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n
    \n Inheritance diagram for Dune::DiscreteCoordFunction< ct, dimR, Impl >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -507,15 +507,15 @@\n
    \n \n

    dimension of the range vector

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03118.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03118.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > Class Template Reference
    \n \n
    \n \n

    Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::AnalyticalCoordFunction and the evaluate method mapping \"$ has to be supplied. \n More...

    \n \n-

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n+

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n
    \n Inheritance diagram for Dune::AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -396,15 +396,15 @@\n
    \n \n

    dimension of the range vector

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03122.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03122.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::DiscreteCoordFunctionInterface< ct, dimR, Impl > Class Template Reference
    \n \n
    \n \n

    Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::DiscreteCoordinateFunction and the evaluate method taking an entity of the host grid together with the number of a vertex returns the coordinate in \"$ of that corner. The user must ensure continuity of this mapping. In addition an adapt method is provided which is called whenever adapt() is called on the Dune::GeometryGrid. \n More...

    \n \n-

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n+

    #include <dune/grid/geometrygrid/coordfunction.hh>

    \n
    \n Inheritance diagram for Dune::DiscreteCoordFunctionInterface< ct, dimR, Impl >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -386,15 +386,15 @@\n
    \n \n

    dimension of the range vector

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03154.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03154.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::GeoGrid::CoordFunctionCaller< HostEntity, CoordFunctionInterface > Class Template Reference
    \n
    \n
    \n
    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03166.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03166.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::GeoGrid::CoordVector< mydim, Grid, fake > Class Template Reference
    \n
    \n
    \n
    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03170.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03170.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::GeoGrid::CoordVector< mydim, Grid, false > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n+

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n \n \n \n \n \n \n@@ -157,15 +157,15 @@\n \n

    \n Public Member Functions

     CoordVector (const HostEntity &hostEntity, const CoordFunction &coordFunction)
     
    template<std::size_t size>
    void calculate (std::array< Coordinate, size >(&corners)) 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-grid-doc/doxygen/a03174.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03174.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::GeoGrid::CoordVector< mydim, Grid, true > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n+

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n \n \n \n \n \n \n@@ -163,15 +163,15 @@\n \n

    \n Public Member Functions

     CoordVector (const HostElement &hostElement, const unsigned int subEntity, const CoordFunction &coordFunction)
     
    template<std::size_t size>
    void calculate (std::array< Coordinate, size >(&corners)) 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-grid-doc/doxygen/a03178.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03178.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::GeoGrid::IntersectionCoordVector< Grid > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n+

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n \n \n \n \n \n \n@@ -190,15 +190,15 @@\n \n

    \n Public Member Functions

     IntersectionCoordVector (const ElementGeometryImpl &elementGeometry, const HostLocalGeometry &hostLocalGeometry)
     
    template<std::size_t size>
    void calculate (std::array< Coordinate, size >(&corners)) 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-grid-doc/doxygen/a03182.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03182.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::GeoGrid::CornerStorage< mydim, cdim, Grid > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n+

    #include <dune/grid/geometrygrid/cornerstorage.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Coords::const_iterator const_iterator
     
    \n \n

    \n@@ -258,15 +258,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-grid-doc/doxygen/a03190.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03190.html", "unified_diff": "@@ -1566,15 +1566,15 @@\n

    update grid caches

    \n

    This method has to be called whenever the underlying host grid changes.

    \n
    Note
    If you adapt the host grid through this geometry grid's adaptation or load balancing methods, update is automatically called.
    \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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03202.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03202.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::HierarchicIterator< G > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -372,15 +372,15 @@\n

    \n Public Types

    typedef Traits::Grid Grid
     
    typedef Traits::template Codim< codimension >::Entity Entity
     
    \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-grid-doc/doxygen/a03318.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03318.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::GeoGrid::HostCorners< HostEntity > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/hostcorners.hh>

    \n+

    #include <dune/grid/geometrygrid/hostcorners.hh>

    \n \n \n \n \n

    \n Public Types

    typedef HostGeometry::GlobalCoordinate Coordinate
     
    \n \n

    \n@@ -225,15 +225,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-grid-doc/doxygen/a03322.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03322.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::IdenticalCoordFunction< ctype, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/identity.hh>

    \n+

    #include <dune/grid/geometrygrid/identity.hh>

    \n
    \n Inheritance diagram for Dune::IdenticalCoordFunction< ctype, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -457,15 +457,15 @@\n
    \n \n

    dimension of the range vector

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03326.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03326.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::IdSet< Grid, HostIdSet > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/idset.hh>

    \n+

    #include <dune/grid/geometrygrid/idset.hh>

    \n
    \n Inheritance diagram for Dune::GeoGrid::IdSet< Grid, HostIdSet >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -569,15 +569,15 @@\n
    \n \n

    dimension of the grid (maximum allowed codimension)

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03338.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03338.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::GeoGrid::Iterator< HostGridView, codim, pitype, Grid, fake > Class Template Reference
    \n
    \n
    \n
    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03342.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03342.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, pitype, Grid > 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-grid-doc/doxygen/a03346.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03346.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, Interior_Partition, Grid > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -271,15 +271,15 @@\n \n

    \n Public Types

    typedef std::remove_const< Grid >::type::ctype ctype
     
    typedef std::remove_const< Grid >::type::Traits::template Codim< 0 >::Entity Element
     
    \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-grid-doc/doxygen/a03350.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03350.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, InteriorBorder_Partition, Grid > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -271,15 +271,15 @@\n \n

    \n Public Types

    typedef std::remove_const< Grid >::type::ctype ctype
     
    typedef std::remove_const< Grid >::type::Traits::template Codim< 0 >::Entity Element
     
    \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-grid-doc/doxygen/a03354.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03354.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, Overlap_Partition, Grid > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -271,15 +271,15 @@\n \n

    \n Public Types

    typedef std::remove_const< Grid >::type::ctype ctype
     
    typedef std::remove_const< Grid >::type::Traits::template Codim< 0 >::Entity Element
     
    \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-grid-doc/doxygen/a03358.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03358.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, OverlapFront_Partition, Grid > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -271,15 +271,15 @@\n \n

    \n Public Types

    typedef std::remove_const< Grid >::type::ctype ctype
     
    typedef std::remove_const< Grid >::type::Traits::template Codim< 0 >::Entity Element
     
    \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-grid-doc/doxygen/a03362.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03362.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, All_Partition, Grid > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -271,15 +271,15 @@\n \n

    \n Public Types

    typedef std::remove_const< Grid >::type::ctype ctype
     
    typedef std::remove_const< Grid >::type::Traits::template Codim< 0 >::Entity Element
     
    \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-grid-doc/doxygen/a03366.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03366.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::PartitionIteratorFilter< codim, Ghost_Partition, Grid > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -271,15 +271,15 @@\n \n

    \n Public Types

    typedef std::remove_const< Grid >::type::ctype ctype
     
    typedef std::remove_const< Grid >::type::Traits::template Codim< 0 >::Entity Element
     
    \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-grid-doc/doxygen/a03370.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03370.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::Iterator< HostGridView, codim, pitype, G, false > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -481,15 +481,15 @@\n \n

    \n Public Types

    typedef Traits::Grid Grid
     
    typedef Traits::template Codim< codimension >::Entity Entity
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03374.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03374.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::GeoGrid::Iterator< HostGridView, codim, pitype, G, true > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/geometrygrid/iterator.hh>

    \n+

    #include <dune/grid/geometrygrid/iterator.hh>

    \n \n \n \n \n \n \n@@ -467,15 +467,15 @@\n \n

    \n Public Types

    typedef Traits::Grid Grid
     
    typedef Traits::template Codim< codimension >::Entity Entity
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03386.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03386.html", "unified_diff": "@@ -76,15 +76,15 @@\n
    Dune::HostGridAccess< Grid > Class Template Reference
    \n \n
    \n \n

    provides access to host grid objects from GeometryGrid \n More...

    \n \n-

    #include <dune/grid/utility/hostgridaccess.hh>

    \n+

    #include <dune/grid/utility/hostgridaccess.hh>

    \n

    Detailed Description

    \n
    template<class Grid>
    \n class Dune::HostGridAccess< Grid >

    provides access to host grid objects from GeometryGrid

    \n

    provides access to host grid objects from IdentityGrid

    \n
    Template Parameters
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03414.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03414.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::IdentityGridEntity< codim, dim, GridImp > Class Template Reference
    \n \n
    \n \n

    The implementation of entities in a IdentityGrid. \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridentity.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridentity.hh>

    \n
    \n Inheritance diagram for Dune::IdentityGridEntity< codim, dim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -740,15 +740,15 @@\n
    \n \n

    Know dimension of the entity.

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

    Iterator over all entities of a given codimension and level of a grid. \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridleveliterator.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridleveliterator.hh>

    \n
    GeometryGrid
    \n \n \n \n

    \n Public Types

    typedef GridImp::template Codim< codim >::Entity Entity
     
    \n \n

    \n@@ -341,16 +341,16 @@\n

    \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-grid-doc/doxygen/a03422.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03422.html", "unified_diff": "@@ -276,15 +276,15 @@\n
    \n \n

    prefix increment

    \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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03426.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03426.html", "unified_diff": "@@ -280,15 +280,15 @@\n
    \n \n

    prefix increment

    \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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03430.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03430.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::IdentityGridHierarchicIterator< GridImp > Class Template Reference
    \n \n
    \n \n

    Iterator over the descendants of an entity.Mesh entities of codimension 0 (\"elements\") allow to visit all entities of codimension 0 obtained through nested, hierarchic refinement of the entity. Iteration over this set of entities is provided by the HierarchicIterator, starting from a given entity. \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridhierarchiciterator.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridhierarchiciterator.hh>

    \n \n \n \n \n

    \n Public Types

    typedef GridImp::template Codim< 0 >::Entity Entity
     
    \n \n

    \n@@ -342,16 +342,16 @@\n

    \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-grid-doc/doxygen/a03434.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03434.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::IdentityGridEntity< 0, dim, GridImp > Class Template Reference
    \n \n
    \n \n

    Specialization for codim-0-entities. \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridentity.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridentity.hh>

    \n
    \n Inheritance diagram for Dune::IdentityGridEntity< 0, dim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1267,15 +1267,15 @@\n
    \n \n

    Know dimension of the entity.

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

    The EntitySeed class provides the minimal information needed to restore an Entity using the grid. \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridentityseed.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridentityseed.hh>

    \n \n \n \n \n \n \n@@ -308,15 +308,15 @@\n \n

    \n Public Member Functions

     IdentityGridEntitySeed ()
     Construct an empty (i.e. isValid() == false) seed.
     
     IdentityGridEntitySeed (const HostEntity &hostEntity)
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03446.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03446.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::IdentityGridLevelIndexSet< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n
    \n Inheritance diagram for Dune::IdentityGridLevelIndexSet< GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -804,15 +804,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-grid-doc/doxygen/a03450.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03450.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::IdentityGridLeafIndexSet< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n
    \n Inheritance diagram for Dune::IdentityGridLeafIndexSet< GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -787,15 +787,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-grid-doc/doxygen/a03454.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03454.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::IdentityGridGlobalIdSet< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n
    \n Inheritance diagram for Dune::IdentityGridGlobalIdSet< GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -435,15 +435,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-grid-doc/doxygen/a03458.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03458.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::IdentityGridLocalIdSet< GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridindexsets.hh>

    \n
    \n Inheritance diagram for Dune::IdentityGridLocalIdSet< GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -435,15 +435,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-grid-doc/doxygen/a03462.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03462.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::IdentityGridLeafIntersection< GridImp > Class Template Reference
    \n \n
    \n \n

    An intersection with a leaf neighbor elementMesh entities of codimension 0 (\"elements\") allow to visit all neighbors, where a neighbor is an entity of codimension 0 which has a common entity of codimension 1 These neighbors are accessed via a IntersectionIterator. This allows the implement non-matching meshes. The number of neighbors may be different from the number of an element! \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridintersections.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridintersections.hh>

    \n \n \n \n \n \n \n@@ -813,15 +813,15 @@\n
    \n \n

    return unit outer normal

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03466.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03466.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members\n
    Dune::IdentityGridLevelIntersection< GridImp > Class Template Reference
    \n \n

    \n Public Types

    typedef GridImp::template Codim< 1 >::Geometry Geometry
     
    typedef GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
     
    \n \n \n \n \n \n@@ -809,15 +809,15 @@\n
    \n \n

    return unit outer normal

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

    Iterator over all entities of a given codimension and level of a grid. \n More...

    \n \n-

    #include <dune/grid/identitygrid/identitygridleafiterator.hh>

    \n+

    #include <dune/grid/identitygrid/identitygridleafiterator.hh>

    \n

    \n Public Types

    typedef GridImp::template Codim< 1 >::Geometry Geometry
     
    typedef GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
     
    \n \n \n \n

    \n Public Types

    typedef GridImp::template Codim< codim >::Entity Entity
     
    \n \n

    \n@@ -322,15 +322,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-grid-doc/doxygen/a03474.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03474.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::BasicBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/basic.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/basic.hh>

    \n
    \n Inheritance diagram for Dune::dgf::BasicBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -473,16 +473,16 @@\n \n \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-grid-doc/doxygen/a03478.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03478.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::dgf::DomainData Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>

    \n \n \n \n \n

    \n Public Types

    typedef DGFBoundaryParameter::type BoundaryParameter
     
    \n \n

    \n@@ -355,15 +355,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-grid-doc/doxygen/a03482.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03482.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::dgf::Domain Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>

    \n \n \n \n \n

    \n Public Types

    typedef DGFBoundaryParameter::type BoundaryParameter
     
    \n \n

    \n@@ -334,15 +334,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-grid-doc/doxygen/a03486.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03486.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::BoundaryDomBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>

    \n
    \n Inheritance diagram for Dune::dgf::BoundaryDomBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -655,16 +655,16 @@\n \n \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-grid-doc/doxygen/a03490.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03490.html", "unified_diff": "@@ -79,15 +79,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::BoundarySegBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/boundaryseg.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/boundaryseg.hh>

    \n
    \n Inheritance diagram for Dune::dgf::BoundarySegBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -582,16 +582,16 @@\n \n \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-grid-doc/doxygen/a03494.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03494.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::CubeBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/cube.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/cube.hh>

    \n
    \n Inheritance diagram for Dune::dgf::CubeBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -545,16 +545,16 @@\n \n \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-grid-doc/doxygen/a03498.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03498.html", "unified_diff": "@@ -79,15 +79,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::DimBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/dim.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/dim.hh>

    \n
    \n Inheritance diagram for Dune::dgf::DimBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -542,16 +542,16 @@\n \n \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-grid-doc/doxygen/a03502.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03502.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::GeneralBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/general.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/general.hh>

    \n
    \n Inheritance diagram for Dune::dgf::GeneralBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -545,16 +545,16 @@\n \n \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-grid-doc/doxygen/a03506.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03506.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::dgf::GridParameterBlock Class Reference
    \n \n
    \n \n

    Common Grid parameters. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/gridparameter.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/gridparameter.hh>

    \n
    \n Inheritance diagram for Dune::dgf::GridParameterBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -761,15 +761,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-grid-doc/doxygen/a03510.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03510.html", "unified_diff": "@@ -79,15 +79,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::IntervalBlock Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/interval.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/interval.hh>

    \n
    \n Inheritance diagram for Dune::dgf::IntervalBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -739,16 +739,16 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03514.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03514.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::dgf::IntervalBlock::Interval Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/interval.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/interval.hh>

    \n \n \n \n \n \n \n@@ -240,15 +240,15 @@\n \n

    \n Public Member Functions

     Interval ()
     
     Interval (const Interval &interval, const std::vector< int > &map)
     
    \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-grid-doc/doxygen/a03518.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03518.html", "unified_diff": "@@ -79,15 +79,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::PeriodicFaceTransformationBlock Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>

    \n
    \n Inheritance diagram for Dune::dgf::PeriodicFaceTransformationBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -506,16 +506,16 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03522.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03522.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::dgf::PeriodicFaceTransformationBlock::Matrix< T > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>

    \n
    \n Inheritance diagram for Dune::dgf::PeriodicFaceTransformationBlock::Matrix< T >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -272,15 +272,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-grid-doc/doxygen/a03526.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03526.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::dgf::PeriodicFaceTransformationBlock::AffineTransformation Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>

    \n \n \n \n \n

    \n Public Member Functions

     AffineTransformation (int dimworld)
     
    \n \n

    \n@@ -148,15 +148,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-grid-doc/doxygen/a03530.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03530.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::PolygonBlock Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/polygon.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/polygon.hh>

    \n
    \n Inheritance diagram for Dune::dgf::PolygonBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -533,15 +533,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-grid-doc/doxygen/a03534.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03534.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::PolyhedronBlock Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/polyhedron.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/polyhedron.hh>

    \n
    \n Inheritance diagram for Dune::dgf::PolyhedronBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -503,15 +503,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-grid-doc/doxygen/a03538.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03538.html", "unified_diff": "@@ -217,15 +217,15 @@\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-grid-doc/doxygen/a03542.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03542.html", "unified_diff": "@@ -160,15 +160,15 @@\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-grid-doc/doxygen/a03546.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03546.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03550.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03550.html", "unified_diff": "@@ -189,15 +189,15 @@\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-grid-doc/doxygen/a03554.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03554.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03558.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03558.html", "unified_diff": "@@ -189,15 +189,15 @@\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-grid-doc/doxygen/a03562.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03562.html", "unified_diff": "@@ -189,15 +189,15 @@\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-grid-doc/doxygen/a03566.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03566.html", "unified_diff": "@@ -189,15 +189,15 @@\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-grid-doc/doxygen/a03570.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03570.html", "unified_diff": "@@ -189,15 +189,15 @@\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-grid-doc/doxygen/a03574.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03574.html", "unified_diff": "@@ -189,15 +189,15 @@\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-grid-doc/doxygen/a03578.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03578.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03582.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03582.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03586.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03586.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03590.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03590.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03594.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03594.html", "unified_diff": "@@ -199,15 +199,15 @@\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-grid-doc/doxygen/a03598.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03598.html", "unified_diff": "@@ -848,15 +848,15 @@\n \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-grid-doc/doxygen/a03614.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03614.html", "unified_diff": "@@ -79,15 +79,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::SimplexBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/simplex.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/simplex.hh>

    \n
    \n Inheritance diagram for Dune::dgf::SimplexBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -593,16 +593,16 @@\n \n \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-grid-doc/doxygen/a03618.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03618.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::SimplexGenerationBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh>

    \n
    \n Inheritance diagram for Dune::dgf::SimplexGenerationBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -730,16 +730,16 @@\n \n \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-grid-doc/doxygen/a03622.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03622.html", "unified_diff": "@@ -78,15 +78,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::dgf::VertexBlock Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/blocks/vertex.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/blocks/vertex.hh>

    \n
    \n Inheritance diagram for Dune::dgf::VertexBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -533,16 +533,16 @@\n \n \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-grid-doc/doxygen/a03626.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03626.html", "unified_diff": "@@ -76,29 +76,29 @@\n
    Dune::DGFException Class Reference
    \n \n
    \n \n

    exception class for IO errors in the DGF parser \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfexception.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfexception.hh>

    \n
    \n Inheritance diagram for Dune::DGFException:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n \"\"\n \n
    \n

    Detailed Description

    \n

    exception class for IO errors in the DGF parser

    \n

    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03630.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03630.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Member Functions |\n List of all members \n
    Dune::DGFCoordFunction< dimD, dimR > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n
    \n Inheritance diagram for Dune::DGFCoordFunction< dimD, dimR >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -478,15 +478,15 @@\n
    \n \n

    dimension of the range vector

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03634.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03634.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, discrete > 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-grid-doc/doxygen/a03638.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03638.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, false > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static CoordFunction * create (std::istream &, const HostGrid &)
     
    \n

    Member Function Documentation

    \n@@ -123,15 +123,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-grid-doc/doxygen/a03642.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03642.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, true > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static CoordFunction * create (std::istream &, const HostGrid &hostGrid)
     
    \n

    Member Function Documentation

    \n@@ -123,15 +123,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-grid-doc/doxygen/a03646.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03646.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DGFCoordFunctionFactory< HostGrid, DGFCoordFunction< dimD, dimR >, false > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n \n \n \n \n

    \n Public Types

    typedef DGFCoordFunction< dimD, dimR > CoordFunction
     
    \n \n

    \n@@ -146,15 +146,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-grid-doc/doxygen/a03650.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03650.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DGFGridFactory< GeometryGrid< HostGrid, CoordFunction, Allocator > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n \n \n \n \n \n \n@@ -512,15 +512,15 @@\n \n

    \n Public Types

    typedef GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
     
    typedef MPIHelper::MPICommunicator MPICommunicator
     
    \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-grid-doc/doxygen/a03654.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03654.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFGridInfo< GeometryGrid< HostGrid, CoordFunction, Allocator > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfgeogrid.hh>

    \n \n \n \n \n \n \n@@ -141,15 +141,15 @@\n \n

    \n Static Public Member Functions

    static int refineStepsForHalf ()
     
    static double refineWeight ()
     
    \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-grid-doc/doxygen/a03662.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03662.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DGFGridFactory< IdentityGrid< HostGrid > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfidentitygrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfidentitygrid.hh>

    \n \n \n \n \n \n \n@@ -432,15 +432,15 @@\n \n

    \n Public Types

    typedef IdentityGrid< HostGrid > Grid
     
    typedef MPIHelper::MPICommunicator MPICommunicator
     
    \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-grid-doc/doxygen/a03666.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03666.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFGridInfo< IdentityGrid< HostGrid > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfidentitygrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfidentitygrid.hh>

    \n \n \n \n \n \n \n@@ -141,15 +141,15 @@\n \n

    \n Static Public Member Functions

    static int refineStepsForHalf ()
     
    static double refineWeight ()
     
    \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-grid-doc/doxygen/a03670.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03670.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFGridInfo< OneDGrid > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfoned.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfoned.hh>

    \n \n \n \n \n \n \n@@ -137,15 +137,15 @@\n \n

    \n Static Public Member Functions

    static int refineStepsForHalf ()
     
    static double refineWeight ()
     
    \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-grid-doc/doxygen/a03674.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03674.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DGFGridFactory< OneDGrid > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfoned.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfoned.hh>

    \n \n \n \n \n \n \n@@ -532,15 +532,15 @@\n
    \n \n

    grid dimension

    \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-grid-doc/doxygen/a03686.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03686.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members\n
    Dune::dgf::UGGridParameterBlock Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfug.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfug.hh>

    \n
    \n Inheritance diagram for Dune::dgf::UGGridParameterBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -924,16 +924,16 @@\n \n

    \n Public Types

    typedef OneDGrid Grid
     grid type
     
    typedef MPIHelper::MPICommunicator MPICommunicatorType
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03690.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03690.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFGridInfo< UGGrid< dim > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfug.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfug.hh>

    \n \n \n \n \n \n \n@@ -141,15 +141,15 @@\n \n

    \n Static Public Member Functions

    static int refineStepsForHalf ()
     
    static double refineWeight ()
     
    \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-grid-doc/doxygen/a03694.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03694.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DGFGridFactory< UGGrid< dim > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfug.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfug.hh>

    \n \n \n \n \n \n \n@@ -560,16 +560,16 @@\n
    \n \n

    grid dimension

    \n \n
    \n \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03698.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03698.html", "unified_diff": "@@ -84,15 +84,15 @@\n
    Dune::DGFWriter< GV > Class Template Reference
    \n \n
    \n \n

    write a GridView to a DGF file \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfwriter.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfwriter.hh>

    \n

    \n Public Types

    typedef UGGrid< dim > Grid
     grid type
     
    typedef MPIHelper::MPICommunicator MPICommunicatorType
    \n \n \n \n \n \n@@ -1055,15 +1055,15 @@\n \n

    \n Public Types

    typedef GV GridView
     type of grid view
     
    typedef GridView::Grid Grid
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03702.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03702.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::dgf::YaspGridParameterBlock Class Reference
    \n \n
    \n \n

    Grid parameters for YaspGrid. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n
    \n Inheritance diagram for Dune::dgf::YaspGridParameterBlock:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -826,15 +826,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-grid-doc/doxygen/a03706.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03706.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DGFGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > > Struct Template Reference
    \n \n
    \n \n

    Grid factory for YaspGrid with equidistant coordinates. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n \n \n \n \n \n \n@@ -493,15 +493,15 @@\n \n

    \n Public Types

    typedef YaspGrid< dim, EquidistantCoordinates< ctype, dim > > Grid
     
    typedef MPIHelper::MPICommunicator MPICommunicatorType
     
    \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-grid-doc/doxygen/a03710.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03710.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DGFGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > > Struct Template Reference
    \n \n
    \n \n

    Grid factory for YaspGrid with equidistant coordinates. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n \n \n \n \n \n \n@@ -493,15 +493,15 @@\n \n

    \n Public Types

    typedef YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > Grid
     
    typedef MPIHelper::MPICommunicator MPICommunicatorType
     
    \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-grid-doc/doxygen/a03714.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03714.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::DGFGridFactory< Dune::YaspGrid< dim, Dune::TensorProductCoordinates< ctype, dim > > > Class Template Reference
    \n \n
    \n \n

    Placeholder for grid factory for YaspGrid with tensor product coordinates. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n \n \n \n \n \n \n@@ -153,15 +153,15 @@\n \n

    \n Public Member Functions

    template<typename In >
     DGFGridFactory (const In &)
     
    Gridgrid ()
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03718.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03718.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFGridInfo< YaspGrid< dim, Coordinates > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/dgfyasp.hh>

    \n \n \n \n \n \n \n@@ -141,15 +141,15 @@\n \n

    \n Static Public Member Functions

    static int refineStepsForHalf ()
     
    static double refineWeight ()
     
    \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-grid-doc/doxygen/a03722.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03722.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DGFEntityKey< A > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/entitykey.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/entitykey.hh>

    \n
    \n Inheritance diagram for Dune::DGFEntityKey< A >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -456,16 +456,16 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03726.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03726.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Static Public Member Functions |\n List of all members \n
    Dune::ElementFaceUtil Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/entitykey.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/entitykey.hh>

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

    \n Public Member Functions

    template<int dim>
    DGFEntityKey< unsigned int > generateSimplexFace (const std ::vector< unsigned int > &element, int f)
     
    \n@@ -248,16 +248,16 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03730.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03730.html", "unified_diff": "@@ -85,15 +85,15 @@\n
    Dune::GridPtr< GridType > Struct Template Reference
    \n \n
    \n \n

    Class for constructing grids from DGF files. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/gridptr.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/gridptr.hh>

    \n \n \n \n \n \n \n@@ -1338,15 +1338,15 @@\n \n

    \n Classes

    struct  DataHandle
     
    class  mygrid_ptr
     
    \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-grid-doc/doxygen/a03734.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03734.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::GridPtr< GridType >::mygrid_ptr Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/gridptr.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/gridptr.hh>

    \n
    \n Inheritance diagram for Dune::GridPtr< GridType >::mygrid_ptr:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -330,15 +330,15 @@\n
    \n \n

    STL member.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03738.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03738.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::GridPtr< GridType >::DataHandle Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/gridptr.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/gridptr.hh>

    \n
    \n Inheritance diagram for Dune::GridPtr< GridType >::DataHandle:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -710,15 +710,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-grid-doc/doxygen/a03742.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03742.html", "unified_diff": "@@ -81,15 +81,15 @@\n Static Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::MacroGrid Class Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/dgfparser/macrogrid.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/macrogrid.hh>

    \n
    \n Inheritance diagram for Dune::MacroGrid:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1441,15 +1441,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-grid-doc/doxygen/a03750.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03750.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DGFBoundaryParameter Struct Reference
    \n \n
    \n \n

    Contains types for additional features. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/parser.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/parser.hh>

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

    \n Public Types

    typedef std::string type
     type of additional boundary parameters
     
    \n@@ -205,15 +205,15 @@\n
    \n \n

    delimiter

    \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-grid-doc/doxygen/a03754.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03754.html", "unified_diff": "@@ -85,15 +85,15 @@\n
    Dune::DuneGridFormatParser Class Reference
    \n \n
    \n \n

    The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures used by the MacroGrid class. \n More...

    \n \n-

    #include <dune/grid/io/file/dgfparser/parser.hh>

    \n+

    #include <dune/grid/io/file/dgfparser/parser.hh>

    \n
    \n Inheritance diagram for Dune::DuneGridFormatParser:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1325,15 +1325,15 @@\n \n
    \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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03758.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03758.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::GmshReaderOptions Struct Reference
    \n \n
    \n \n

    Options for read operation. \n More...

    \n \n-

    #include <dune/grid/io/file/gmshreader.hh>

    \n+

    #include <dune/grid/io/file/gmshreader.hh>

    \n \n \n \n \n@@ -112,15 +112,15 @@\n \n

    \n Public Types

    enum  GeometryOrder { firstOrder\n , secondOrder\n }
     
    secondOrder 

    quadratic boundary approximation.

    \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-grid-doc/doxygen/a03774.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03774.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::GmshReaderParser< GridType > Class Template Reference
    \n \n
    \n \n

    dimension independent parts for GmshReaderParser \n More...

    \n \n-

    #include <dune/grid/io/file/gmshreader.hh>

    \n+

    #include <dune/grid/io/file/gmshreader.hh>

    \n \n \n \n \n \n \n@@ -932,15 +932,15 @@\n \n

    \n Public Member Functions

     GmshReaderParser (Dune::GridFactory< GridType > &_factory, bool v, bool i)
     
    std::vector< int > & boundaryIdMap ()
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03778.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03778.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::GmshReader< GridType > Class Template Reference
    \n \n
    \n \n

    Read Gmsh mesh file. \n More...

    \n \n-

    #include <dune/grid/io/file/gmshreader.hh>

    \n+

    #include <dune/grid/io/file/gmshreader.hh>

    \n \n \n \n \n \n \n@@ -884,15 +884,15 @@\n
    \n Initial value:
    =
    \n
    Opts::verbose | Opts::insertBoundarySegments | Opts::readElementData | Opts::readBoundaryData
    \n
    \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03790.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03790.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::GmshWriter< GridView > Class Template Reference
    \n \n
    \n \n

    Write Gmsh mesh file. \n More...

    \n \n-

    #include <dune/grid/io/file/gmshwriter.hh>

    \n+

    #include <dune/grid/io/file/gmshwriter.hh>

    \n

    \n Public Types

    typedef GridType Grid
     
    using Opts = Gmsh::ReaderOptions
     
    \n \n \n \n \n \n@@ -239,15 +239,15 @@\n

    If the optional parameter physicalBoundaries is provided, also the boundaries are written on file with the corresponding physical value.

    \n

    The physicalBoundaries vector need to be sorted according to the interesection boundary segment index.

    \n

    Throws an IOError if file could not be opened or an unsupported element type is encountered.

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

    Writer for 1D grids in gnuplot format. \n More...

    \n \n-

    #include <dune/grid/io/file/gnuplot.hh>

    \n+

    #include <dune/grid/io/file/gnuplot.hh>

    \n
    \n Inheritance diagram for Dune::GnuplotWriter< GridView >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -280,16 +280,16 @@\n

    \n Public Member Functions

     GmshWriter (const GridView &gridView, int numDigits=6)
     Constructor expecting GridView of Grid to be written.
     
    void setPrecision (int numDigits)
    \n \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-grid-doc/doxygen/a03798.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03798.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::LeafGnuplotWriter< G > Class Template Reference
    \n \n
    \n \n

    GnuplotWriter on the leaf grid. \n More...

    \n \n-

    #include <dune/grid/io/file/gnuplot.hh>

    \n+

    #include <dune/grid/io/file/gnuplot.hh>

    \n
    \n Inheritance diagram for Dune::LeafGnuplotWriter< G >:
    \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-grid-doc/doxygen/a03802.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03802.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::LevelGnuplotWriter< G > Class Template Reference
    \n \n
    \n \n

    GnuplotWriter on a given level grid. \n More...

    \n \n-

    #include <dune/grid/io/file/gnuplot.hh>

    \n+

    #include <dune/grid/io/file/gnuplot.hh>

    \n
    \n Inheritance diagram for Dune::LevelGnuplotWriter< G >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -278,15 +278,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-grid-doc/doxygen/a03814.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03814.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::StarCDReader< GridType > Class Template Reference
    \n \n
    \n \n

    File reader for the Star-CD format. \n More...

    \n \n-

    #include <dune/grid/io/file/starcdreader.hh>

    \n+

    #include <dune/grid/io/file/starcdreader.hh>

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

    \n Static Public Member Functions

    static std::unique_ptr< GridType > read (const std::string &fileName, bool verbose=true)
     Read grid from a Star-CD file.
     
    \n@@ -153,15 +153,15 @@\n \n \n
    Returns
    The return type is a special pointer type that casts into std::unique_ptr<GridType>, and std::shared_ptr<GridType>. It is scheduled to be replaced by std::unique_ptr<GridType> eventually.
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03818.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03818.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::b64chunk Struct Reference
    \n \n
    \n \n

    struct representing the three byte text as well as the four 6 bit chunks \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/b64enc.hh>

    \n+

    #include <dune/grid/io/file/vtk/b64enc.hh>

    \n \n \n \n \n

    \n Public Types

    using size_type = unsigned char
     
    \n \n

    \n@@ -267,15 +267,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-grid-doc/doxygen/a03822.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03822.html", "unified_diff": "@@ -79,15 +79,15 @@\n Protected Member Functions |\n Static Protected Member Functions |\n List of all members \n
    Dune::VTK::BasicWriter< IteratorFactory > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/basicwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/basicwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::BasicWriter< IteratorFactory >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1012,15 +1012,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-grid-doc/doxygen/a03826.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03826.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::BoundaryIterator< GV > Class Template Reference
    \n \n
    \n \n

    iterate over the GridViews boundary intersections \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/boundaryiterators.hh>

    \n+

    #include <dune/grid/io/file/vtk/boundaryiterators.hh>

    \n
    \n Inheritance diagram for Dune::VTK::BoundaryIterator< GV >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -440,15 +440,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-grid-doc/doxygen/a03830.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03830.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::VTK::IntersectionIndexSet< ElementIndexSet > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/boundaryiterators.hh>

    \n+

    #include <dune/grid/io/file/vtk/boundaryiterators.hh>

    \n \n \n \n \n

    \n Public Member Functions

     IntersectionIndexSet (const ElementIndexSet &eis_)
     
    \n

    Constructor & Destructor Documentation

    \n@@ -113,15 +113,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-grid-doc/doxygen/a03834.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03834.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::VTK::NonConformingBoundaryIteratorFactory< GV > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/boundaryiterators.hh>

    \n+

    #include <dune/grid/io/file/vtk/boundaryiterators.hh>

    \n
    \n Inheritance diagram for Dune::VTK::NonConformingBoundaryIteratorFactory< GV >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -536,15 +536,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-grid-doc/doxygen/a03838.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03838.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Static Protected Member Functions |\n List of all members \n
    Dune::VTK::NonConformingBoundaryWriter< GV > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/boundarywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/boundarywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::NonConformingBoundaryWriter< GV >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1625,15 +1625,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-grid-doc/doxygen/a03842.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03842.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTK::PrintType< T > Struct Template Reference
    \n \n
    \n \n

    determine a type to safely put another type into a stream \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/common.hh>

    \n+

    #include <dune/grid/io/file/vtk/common.hh>

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

    \n Public Types

    typedef T Type
     type to convert T to before putting it into a stream with <<
     
    \n@@ -111,15 +111,15 @@\n
    \n \n

    type to convert T to before putting it into a stream with <<

    \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-grid-doc/doxygen/a03846.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03846.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::VTK::PrintType< unsigned char > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/common.hh>

    \n+

    #include <dune/grid/io/file/vtk/common.hh>

    \n \n \n \n \n

    \n Public Types

    typedef unsigned Type
     
    \n

    Member Typedef Documentation

    \n@@ -99,15 +99,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-grid-doc/doxygen/a03850.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03850.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::VTK::PrintType< signed char > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/common.hh>

    \n+

    #include <dune/grid/io/file/vtk/common.hh>

    \n \n \n \n \n

    \n Public Types

    typedef int Type
     
    \n

    Member Typedef Documentation

    \n@@ -99,15 +99,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-grid-doc/doxygen/a03854.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03854.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::VTK::PrintType< char > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/common.hh>

    \n+

    #include <dune/grid/io/file/vtk/common.hh>

    \n \n \n \n \n

    \n Public Types

    typedef std::conditional< std::numeric_limits< char >::is_signed, int, unsigned >::type Type
     
    \n

    Member Typedef Documentation

    \n@@ -99,15 +99,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-grid-doc/doxygen/a03858.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03858.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::FieldInfo Class Reference
    \n \n
    \n \n

    Descriptor struct for VTK fields. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/common.hh>

    \n+

    #include <dune/grid/io/file/vtk/common.hh>

    \n \n \n \n@@ -307,15 +307,15 @@\n
    \n \n

    The type of the data field.

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

    simple class representing a corner of a cell \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/corner.hh>

    \n+

    #include <dune/grid/io/file/vtk/corner.hh>

    \n
    \n Inheritance diagram for Dune::VTK::Corner< Cell >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -386,15 +386,15 @@\n \n

    set the index of the corner within the cell in VTK-numbering

    \n

    This requires that the cell is valid

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

    iterate over the corners of some cell range \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/corneriterator.hh>

    \n+

    #include <dune/grid/io/file/vtk/corneriterator.hh>

    \n
    \n Inheritance diagram for Dune::VTK::CornerIterator< CellIterator >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -473,15 +473,15 @@\n
    \n Initial value:
    = std::iterator_traits<CellIterator>::
    \n
    value_type::mydimension
    \n
    \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03870.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03870.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTK::DataArrayWriter Class Referenceabstract
    \n \n
    \n \n

    base class for data array writers \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::DataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -245,15 +245,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented in Dune::VTK::AppendedRawDataArrayWriter, and Dune::VTK::AppendedBase64DataArrayWriter.

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

    a streaming writer for data array tags, uses ASCII inline format \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::AsciiDataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -263,15 +263,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented in Dune::VTK::AppendedRawDataArrayWriter, and Dune::VTK::AppendedBase64DataArrayWriter.

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

    a streaming writer for data array tags, uses binary inline format \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::BinaryDataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -270,15 +270,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented in Dune::VTK::AppendedRawDataArrayWriter, and Dune::VTK::AppendedBase64DataArrayWriter.

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

    a streaming writer for data array tags, uses appended raw format \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::AppendedRawDataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -247,15 +247,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented from Dune::VTK::DataArrayWriter.

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

    a streaming writer for data array tags, uses appended base64 format \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::AppendedBase64DataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -247,15 +247,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented from Dune::VTK::DataArrayWriter.

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

    a streaming writer for appended data array tags, uses base64 format \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::NakedBase64DataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented in Dune::VTK::AppendedRawDataArrayWriter, and Dune::VTK::AppendedBase64DataArrayWriter.

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

    a streaming writer for appended data arrays, uses raw format \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::NakedRawDataArrayWriter:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n

    whether calls to write may be skipped

    \n \n

    Reimplemented in Dune::VTK::AppendedRawDataArrayWriter, and Dune::VTK::AppendedBase64DataArrayWriter.

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

    a factory for DataArrayWriters \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/dataarraywriter.hh>

    \n

    \n Public Types

    enum class  Type { scalar\n , vector\n , tensor\n }
    \n \n \n \n \n \n@@ -276,15 +276,15 @@\n \n \n

    The should never be more than one DataArrayWriter on the same stream around. The returned object should be freed with delete.

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

    A base class for grid functions with any return type and dimension. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/function.hh>

    \n+

    #include <dune/grid/io/file/vtk/function.hh>

    \n
    \n Inheritance diagram for Dune::VTKFunction< GridView >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -369,15 +369,15 @@\n \n

    \n Public Member Functions

     DataArrayWriterFactory (OutputType type_, std::ostream &stream_)
     create a DataArrayWriterFactory
     
    bool beginAppended ()
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03906.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03906.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::P0VTKFunction< GV, V > Class Template Reference
    \n \n
    \n \n

    Take a vector and interpret it as cell data for the VTKWriter. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/function.hh>

    \n+

    #include <dune/grid/io/file/vtk/function.hh>

    \n
    \n Inheritance diagram for Dune::P0VTKFunction< GV, V >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -444,15 +444,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-grid-doc/doxygen/a03910.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03910.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::P1VTKFunction< GV, V > Class Template Reference
    \n \n
    \n \n

    Take a vector and interpret it as point data for the VTKWriter. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/function.hh>

    \n+

    #include <dune/grid/io/file/vtk/function.hh>

    \n
    \n Inheritance diagram for Dune::P1VTKFunction< GV, V >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -444,15 +444,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-grid-doc/doxygen/a03914.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03914.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::FunctionWriterBase< Cell_ > Class Template Referenceabstract
    \n \n
    \n \n

    Base class for function writers. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::FunctionWriterBase< Cell_ >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -466,15 +466,15 @@\n Domain&).

    \n \n

    Reimplemented in Dune::VTK::NonConformingConnectivityWriter< Cell >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03918.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03918.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::VTKFunctionWriter< Func > Class Template Reference
    \n \n
    \n \n

    Base class for function writers. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::VTKFunctionWriter< Func >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -505,15 +505,15 @@\n
    \n \n

    write at the given position

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03922.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03922.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::CoordinatesWriter< Cell > Class Template Reference
    \n \n
    \n \n

    writer for the Coordinates array \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::CoordinatesWriter< Cell >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -497,15 +497,15 @@\n
    \n \n

    write at the given position

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03926.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03926.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::ConformingConnectivityWriter< IteratorFactory > Class Template Reference
    \n \n
    \n \n

    writer for the connectivity array in conforming mode \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::ConformingConnectivityWriter< IteratorFactory >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -499,15 +499,15 @@\n
    \n \n

    write at the given corner

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03930.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03930.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::NonConformingConnectivityWriter< Cell > Class Template Reference
    \n \n
    \n \n

    writer for the connectivity array in nonconforming mode \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::NonConformingConnectivityWriter< Cell >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -423,15 +423,15 @@\n

    write at the given corner

    \n \n

    Reimplemented from Dune::VTK::FunctionWriterBase< Cell >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03934.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03934.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::OffsetsWriter< Cell > Class Template Reference
    \n \n
    \n \n

    writer for the offsets array \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::OffsetsWriter< Cell >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -466,15 +466,15 @@\n Domain&).

    \n \n

    Reimplemented in Dune::VTK::NonConformingConnectivityWriter< Cell >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03938.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03938.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::TypesWriter< Cell > Class Template Reference
    \n \n
    \n \n

    writer for the types array \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/functionwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::TypesWriter< Cell >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -466,15 +466,15 @@\n Domain&).

    \n \n

    Reimplemented in Dune::VTK::NonConformingConnectivityWriter< Cell >.

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

    iterate over the points of some corner range \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/pointiterator.hh>

    \n+

    #include <dune/grid/io/file/vtk/pointiterator.hh>

    \n
    \n Inheritance diagram for Dune::VTK::PointIterator< CellIterator, IS >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -453,15 +453,15 @@\n
    \n Initial value:
    = std::iterator_traits<CellIterator>::
    \n
    value_type::mydimension
    \n
    \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03946.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03946.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTK::PVTUWriter Class Reference
    \n \n
    \n \n

    Dump a .vtu/.vtp files contents to a stream. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/pvtuwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/pvtuwriter.hh>

    \n \n \n \n \n \n \n@@ -590,15 +590,15 @@\n
    \n \n

    finish section for the point coordinates

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03950.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03950.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Attributes |\n List of all members\n
    Dune::VTK::SkeletonFunctionTraits< GV, RF > Struct Template Reference
    \n \n

    \n Public Member Functions

     PVTUWriter (std::ostream &stream_, FileType fileType_)
     create a PVTUWriter object
     
     ~PVTUWriter ()
    \n \n \n \n \n \n@@ -222,15 +222,15 @@\n \n

    \n Public Types

    typedef GV GridView
     
    typedef GV::Intersection Cell
     
    \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-grid-doc/doxygen/a03954.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03954.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::SkeletonFunctionInterface< GV, RF > Class Template Reference
    \n \n
    \n \n

    A prototype for VTKFunctions on the skeleton. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/skeletonfunction.hh>

    \n+

    #include <dune/grid/io/file/vtk/skeletonfunction.hh>

    \n \n \n \n \n

    \n Public Types

    typedef SkeletonFunctionTraits< GV, RF > Traits
     
    \n

    \n@@ -185,15 +185,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-grid-doc/doxygen/a03958.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03958.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTK::SkeletonFunctionWriter< Func > Class Template Reference
    \n \n
    \n \n

    function writer for skeleton functions \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/skeletonfunction.hh>

    \n+

    #include <dune/grid/io/file/vtk/skeletonfunction.hh>

    \n
    \n Inheritance diagram for Dune::VTK::SkeletonFunctionWriter< Func >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -569,15 +569,15 @@\n
    \n \n

    write at the given position

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

    class to base64 encode a stream of data \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/streams.hh>

    \n+

    #include <dune/grid/io/file/vtk/streams.hh>

    \n \n \n \n \n \n \n@@ -224,15 +224,15 @@\n \n

    encode a data item

    \n

    The result will be written to the stream, eventually. This method may be called multiple times in a row. After this method has been called, no one else may write to the underlying stream until flush() has been called or this writer object has been destroyed.

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

    write out data in binary \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/streams.hh>

    \n+

    #include <dune/grid/io/file/vtk/streams.hh>

    \n

    \n Public Member Functions

     Base64Stream (std::ostream &s_)
     Construct a Base64Stream.
     
    template<class X >
    \n \n \n \n \n \n@@ -154,15 +154,15 @@\n
    \n \n

    write data to stream

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

    Writer for the output of subsampled grid functions in the vtk format. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/subsamplingvtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/subsamplingvtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::SubsamplingVTKWriter< GridView >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1670,15 +1670,15 @@\n \n

    \n Public Member Functions

     RawStream (std::ostream &theStream)
     make a new stream
     
    template<class T >
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03978.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03978.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::VTK::ConformingVolumeIteratorFactory< GV > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/volumeiterators.hh>

    \n+

    #include <dune/grid/io/file/vtk/volumeiterators.hh>

    \n
    \n Inheritance diagram for Dune::VTK::ConformingVolumeIteratorFactory< GV >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -536,15 +536,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-grid-doc/doxygen/a03982.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03982.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::VTK::NonConformingVolumeIteratorFactory< GV > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/volumeiterators.hh>

    \n+

    #include <dune/grid/io/file/vtk/volumeiterators.hh>

    \n \n \n \n \n \n \n@@ -526,15 +526,15 @@\n \n

    \n Public Types

    typedef GV::template Codim< 0 >::Entity Cell
     
    typedef GV::template Codim< 0 >::template Partition< InteriorBorder_Partition >::Iterator CellIterator
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a03986.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03986.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Static Protected Member Functions |\n List of all members \n
    Dune::VTK::ConformingVolumeWriter< GV > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/io/file/vtk/volumewriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/volumewriter.hh>

    \n
    \n Inheritance diagram for Dune::VTK::ConformingVolumeWriter< GV >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1705,15 +1705,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-grid-doc/doxygen/a03990.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03990.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTKSequenceWriter< GridView > Class Template Reference
    \n \n
    \n \n

    Writer for the ouput of grid functions in the vtk format. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtksequencewriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtksequencewriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKSequenceWriter< GridView >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -641,15 +641,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-grid-doc/doxygen/a03994.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a03994.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTKSequenceWriterBase< GridView > Class Template Reference
    \n \n
    \n \n

    Base class to write pvd-files which contains a list of all collected vtk-files. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtksequencewriterbase.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtksequencewriterbase.hh>

    \n
    \n Inheritance diagram for Dune::VTKSequenceWriterBase< GridView >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -546,15 +546,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-grid-doc/doxygen/a04014.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04014.html", "unified_diff": "@@ -85,15 +85,15 @@\n
    Dune::VTKWriter< GridView > Class Template Reference
    \n \n
    \n \n

    Writer for the ouput of grid functions in the vtk format. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -2005,15 +2005,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-grid-doc/doxygen/a04018.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04018.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::VTKWriter< GridView >::VTKLocalFunction Class Reference
    \n \n
    \n \n

    Type erasure wrapper for VTK data sets. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n \n \n \n \n \n \n@@ -514,15 +514,15 @@\n \n

    \n Classes

    struct  FunctionWrapper
     Type erasure implementation for functions conforming to the dune-functions LocalFunction interface. More...
     
    struct  FunctionWrapperBase
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04022.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04022.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase Struct Referenceabstract
    \n \n
    \n \n

    Base class for polymorphic container of underlying data set. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase:
    \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-grid-doc/doxygen/a04026.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04026.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapper< F > Struct Template Reference
    \n \n
    \n \n

    Type erasure implementation for functions conforming to the dune-functions LocalFunction interface. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapper< F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -288,15 +288,15 @@\n

    The function must write count scalar values as determined by the VTK::FieldInfo.

    \n \n

    Implements Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase.

    \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-grid-doc/doxygen/a04030.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04030.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VTKWriter< GridView >::VTKLocalFunction::GlobalFunctionWrapper< F > Struct Template Reference
    \n \n
    \n \n

    Type erasure implementation for C++ functions, i.e., functions that can be evaluated in global coordinates. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::VTKLocalFunction::GlobalFunctionWrapper< F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -288,15 +288,15 @@\n

    The function must write count scalar values as determined by the VTK::FieldInfo.

    \n \n

    Implements Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase.

    \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-grid-doc/doxygen/a04034.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04034.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTKWriter< GridView >::VTKLocalFunction::VTKFunctionWrapper Struct Reference
    \n \n
    \n \n

    Type erasure implementation for legacy VTKFunctions. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::VTKLocalFunction::VTKFunctionWrapper:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -251,15 +251,15 @@\n

    The function must write count scalar values as determined by the VTK::FieldInfo.

    \n \n

    Implements Dune::VTKWriter< GridView >::VTKLocalFunction::FunctionWrapperBase.

    \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-grid-doc/doxygen/a04038.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04038.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VTKWriter< GridView >::CellIterator Class Reference
    \n \n
    \n \n

    Iterator over the grids elements. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::CellIterator:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -164,15 +164,15 @@\n \n
    \n

    get the position of the center of the element, in element-local coordinates

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

    Iterate over the grid's vertices. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::VertexIterator:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -339,15 +339,15 @@\n
    \n \n

    position of vertex inside the entity

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

    Iterate over the elements' corners. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtkwriter.hh>

    \n
    \n Inheritance diagram for Dune::VTKWriter< GridView >::CornerIterator:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -281,15 +281,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-grid-doc/doxygen/a04050.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04050.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::VTK::VTUWriter Class Reference
    \n \n
    \n \n

    Dump a .vtu/.vtp files contents to a stream. \n More...

    \n \n-

    #include <dune/grid/io/file/vtk/vtuwriter.hh>

    \n+

    #include <dune/grid/io/file/vtk/vtuwriter.hh>

    \n \n \n \n \n@@ -821,15 +821,15 @@\n \n

    \n Public Types

    enum  Phase { main\n , appended\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-grid-doc/doxygen/a04126.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04126.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::EntityCommHelper< iftype > 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-grid-doc/doxygen/a04130.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04130.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::EntityCommHelper< InteriorBorder_InteriorBorder_Interface > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/entitycommhelper.hh>

    \n+

    #include <dune/grid/utility/entitycommhelper.hh>

    \n \n \n \n \n \n \n@@ -139,15 +139,15 @@\n \n

    \n Static Public Member Functions

    static bool send (const PartitionType p)
     
    static bool receive (const PartitionType p)
     
    \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-grid-doc/doxygen/a04134.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04134.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::EntityCommHelper< InteriorBorder_All_Interface > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/entitycommhelper.hh>

    \n+

    #include <dune/grid/utility/entitycommhelper.hh>

    \n \n \n \n \n \n \n@@ -139,15 +139,15 @@\n \n

    \n Static Public Member Functions

    static bool send (const PartitionType p)
     
    static bool receive (const PartitionType p)
     
    \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-grid-doc/doxygen/a04138.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04138.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::EntityCommHelper< Overlap_OverlapFront_Interface > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/entitycommhelper.hh>

    \n+

    #include <dune/grid/utility/entitycommhelper.hh>

    \n \n \n \n \n \n \n@@ -139,15 +139,15 @@\n \n

    \n Static Public Member Functions

    static bool send (const PartitionType p)
     
    static bool receive (const PartitionType p)
     
    \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-grid-doc/doxygen/a04142.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04142.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::EntityCommHelper< Overlap_All_Interface > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/entitycommhelper.hh>

    \n+

    #include <dune/grid/utility/entitycommhelper.hh>

    \n \n \n \n \n \n \n@@ -139,15 +139,15 @@\n \n

    \n Static Public Member Functions

    static bool send (const PartitionType p)
     
    static bool receive (const PartitionType p)
     
    \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-grid-doc/doxygen/a04146.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04146.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::EntityCommHelper< All_All_Interface > Struct Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/entitycommhelper.hh>

    \n+

    #include <dune/grid/utility/entitycommhelper.hh>

    \n \n \n \n \n \n \n@@ -139,15 +139,15 @@\n \n

    \n Static Public Member Functions

    static bool send (const PartitionType p)
     
    static bool receive (const PartitionType p)
     
    \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-grid-doc/doxygen/a04150.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04150.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::GlobalIndexSet< GridView > Class Template Reference
    \n \n
    \n \n

    Calculate globally unique index over all processes in a Dune grid. \n More...

    \n \n-

    #include <dune/grid/utility/globalindexset.hh>

    \n+

    #include <dune/grid/utility/globalindexset.hh>

    \n \n \n \n \n \n \n@@ -472,15 +472,15 @@\n
    \n \n

    Global number of entities, i.e. number of entities without rendundant entities on interprocessor boundaries.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04154.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04154.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::GlobalIndexSet< GridView >::SubPartitionTypeProvider< Entity, Codim > Struct Template Reference
    \n \n
    \n \n

    Helper class to provide access to subentity PartitionTypes with a run-time codimension. \n More...

    \n \n-

    #include <dune/grid/utility/globalindexset.hh>

    \n+

    #include <dune/grid/utility/globalindexset.hh>

    \n

    \n Classes

    struct  SubPartitionTypeProvider
     Helper class to provide access to subentity PartitionTypes with a run-time codimension. More...
     
    struct  SubPartitionTypeProvider< Entity, 0 >
    \n \n \n \n \n

    \n Static Public Member Functions

    static PartitionType get (const Entity &entity, int codim, int i)
     Get PartitionType of the i-th subentity of codimension 'codim' of entity 'entity'.
     
    \n@@ -142,15 +142,15 @@\n
    \n \n

    Get PartitionType of the i-th subentity of codimension 'codim' of entity 'entity'.

    \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-grid-doc/doxygen/a04158.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04158.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::GlobalIndexSet< GridView >::SubPartitionTypeProvider< Entity, 0 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/globalindexset.hh>

    \n+

    #include <dune/grid/utility/globalindexset.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static PartitionType get (const Entity &entity, int codim, int i)
     
    \n

    Member Function Documentation

    \n@@ -131,15 +131,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-grid-doc/doxygen/a04186.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04186.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::HierarchicSearch< Grid, IS > Class Template Reference
    \n \n
    \n \n

    Search an IndexSet for an Entity containing a given point. \n More...

    \n \n-

    #include <dune/grid/utility/hierarchicsearch.hh>

    \n+

    #include <dune/grid/utility/hierarchicsearch.hh>

    \n \n \n \n \n \n \n@@ -215,15 +215,15 @@\n \n \n

    type of LevelIterator

    \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04190.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04190.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members\n
    Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > > Struct Template Reference
    \n \n

    \n Public Member Functions

     HierarchicSearch (const Grid &g, const IS &is)
     Construct a HierarchicSearch object from a Grid and an IndexSet.
     
    Entity findEntity (const FieldVector< ct, dimw > &global) const
    \n \n \n \n \n

    \n Classes

    struct  Codim
     A Traits struct that collects return types of class member methods. More...
     
    \n@@ -358,15 +358,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-grid-doc/doxygen/a04194.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04194.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >::Codim< codim > Struct Template Reference
    \n \n
    \n \n

    A Traits struct that collects return types of class member methods. \n More...

    \n \n-

    #include <dune/grid/utility/hostgridaccess.hh>

    \n+

    #include <dune/grid/utility/hostgridaccess.hh>

    \n \n \n \n \n \n \n@@ -142,15 +142,15 @@\n
    \n \n

    type of the host entity

    \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-grid-doc/doxygen/a04198.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04198.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members\n
    Dune::HostGridAccess< IdentityGrid< HG > > Struct Template Reference
    \n \n

    \n Public Types

    typedef Grid::template Codim< codim >::Entity Entity
     type of the GeometryGrid entity
     
    typedef HostGrid::template Codim< codim >::Entity HostEntity
    \n \n \n \n \n

    \n Classes

    struct  Codim
     A Traits struct that collects return types of class member methods. More...
     
    \n@@ -385,15 +385,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-grid-doc/doxygen/a04202.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04202.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::HostGridAccess< IdentityGrid< HG > >::Codim< codim > Struct Template Reference
    \n \n
    \n \n

    A Traits struct that collects return types of class member methods. \n More...

    \n \n-

    #include <dune/grid/utility/hostgridaccess.hh>

    \n+

    #include <dune/grid/utility/hostgridaccess.hh>

    \n \n \n \n \n \n \n@@ -142,15 +142,15 @@\n
    \n \n

    type of the host entity

    \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-grid-doc/doxygen/a04206.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04206.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members\n
    Dune::FactoryUtilities::MultiIndex< dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/multiindex.hh>

    \n+

    #include <dune/grid/utility/multiindex.hh>

    \n
    \n Inheritance diagram for Dune::FactoryUtilities::MultiIndex< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -223,15 +223,15 @@\n
    \n \n

    STL member.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04218.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04218.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::PersistentContainerInterface< G, T > Class Template Reference
    \n \n
    \n \n

    Persistent storage of data on all entities of a grid. \n More...

    \n \n-

    #include <dune/grid/utility/persistentcontainerinterface.hh>

    \n+

    #include <dune/grid/utility/persistentcontainerinterface.hh>

    \n

    \n Public Types

    typedef Grid::template Codim< codim >::Entity Entity
     type of the IdGrid entity
     
    typedef HostGrid::template Codim< codim >::Entity HostEntity
    \n \n \n \n \n \n@@ -689,15 +689,15 @@\n \n

    exchange the content of the container with another one

    \n
    Note
    std::swap is overloaded to refor to this method
    \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04222.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04222.html", "unified_diff": "@@ -84,15 +84,15 @@\n
    Dune::PersistentContainerMap< G, IdSet, Map > Class Template Reference
    \n \n
    \n \n

    map-based implementation of the PersistentContainer \n More...

    \n \n-

    #include <dune/grid/utility/persistentcontainermap.hh>

    \n+

    #include <dune/grid/utility/persistentcontainermap.hh>

    \n
    \n Inheritance diagram for Dune::PersistentContainerMap< G, IdSet, Map >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1092,15 +1092,15 @@\n \n

    \n Public Types

    typedef G Grid
     
    typedef T Value
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04226.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04226.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::PersistentContainerMap< G, IdSet, Map >::IteratorWrapper< value, iterator > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/persistentcontainermap.hh>

    \n+

    #include <dune/grid/utility/persistentcontainermap.hh>

    \n
    \n Inheritance diagram for Dune::PersistentContainerMap< G, IdSet, Map >::IteratorWrapper< value, iterator >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -314,15 +314,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-grid-doc/doxygen/a04230.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04230.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::PersistentContainerVector< G, IndexSet, Vector > Class Template Reference
    \n \n
    \n \n

    vector-based implementation of the PersistentContainer \n More...

    \n \n-

    #include <dune/grid/utility/persistentcontainervector.hh>

    \n+

    #include <dune/grid/utility/persistentcontainervector.hh>

    \n
    \n Inheritance diagram for Dune::PersistentContainerVector< G, IndexSet, Vector >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -851,15 +851,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-grid-doc/doxygen/a04234.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04234.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::PersistentContainerWrapper< G, T > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/persistentcontainerwrapper.hh>

    \n+

    #include <dune/grid/utility/persistentcontainerwrapper.hh>

    \n
    \n Inheritance diagram for Dune::PersistentContainerWrapper< G, T >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -713,15 +713,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-grid-doc/doxygen/a04238.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04238.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::TensorGridFactoryCreator< Grid > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/tensorgridfactory.hh>

    \n+

    #include <dune/grid/utility/tensorgridfactory.hh>

    \n \n \n \n \n \n \n@@ -216,15 +216,15 @@\n \n

    \n Public Types

    typedef Grid::Traits::Communication Comm
     
    typedef Grid::ctype ctype
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04242.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04242.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::TensorGridFactory< Grid > Class Template Reference
    \n \n
    \n \n

    A factory class for conveniently creating tensorproduct grids. \n More...

    \n \n-

    #include <dune/grid/utility/tensorgridfactory.hh>

    \n+

    #include <dune/grid/utility/tensorgridfactory.hh>

    \n
    \n Inheritance diagram for Dune::TensorGridFactory< Grid >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -763,15 +763,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-grid-doc/doxygen/a04246.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04246.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::TensorGridFactoryCreator< YaspGrid< dim, TensorProductCoordinates< ctype, dim > > > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/utility/tensorgridfactory.hh>

    \n+

    #include <dune/grid/utility/tensorgridfactory.hh>

    \n \n \n \n \n \n \n@@ -185,15 +185,15 @@\n \n

    \n Public Types

    typedef YaspGrid< dim, TensorProductCoordinates< ctype, dim > > Grid
     
    typedef Grid::Communication Comm
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04250.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04250.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::VertexOrderByIdFactory< IdSet, Index > Class Template Reference
    \n \n
    \n \n

    Factory for GeneralVertexOrder objects using an IdSet. \n More...

    \n \n-

    #include <dune/grid/utility/vertexorderfactory.hh>

    \n+

    #include <dune/grid/utility/vertexorderfactory.hh>

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

    \n Classes

    struct  VertexOrder
     type of vertex order object may depend on the dimension of the element More...
     
    \n@@ -189,15 +189,15 @@\n \n \n

    The returned object will remain valid even after the factory has become singular or has been destroyed.

    \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04254.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04254.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::VertexOrderByIdFactory< IdSet, Index >::VertexOrder< dim > Struct Template Reference
    \n \n
    \n \n

    type of vertex order object may depend on the dimension of the element \n More...

    \n \n-

    #include <dune/grid/utility/vertexorderfactory.hh>

    \n+

    #include <dune/grid/utility/vertexorderfactory.hh>

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

    \n Public Types

    typedef GeneralVertexOrder< dim, Index > type
     type of vertex order object
     
    \n@@ -113,15 +113,15 @@\n
    \n \n

    type of vertex order object

    \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-grid-doc/doxygen/a04262.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04262.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::YaspGeometry< mydim, cdim, GridImp > Class Template Reference
    \n \n
    \n \n

    The general version that handles all codimensions but 0 and dim. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridgeometry.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridgeometry.hh>

    \n
    \n Inheritance diagram for Dune::YaspGeometry< mydim, cdim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -182,15 +182,15 @@\n \n

    constructor from midpoint and extension and a bitset defining which unit vectors span the entity

    \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-grid-doc/doxygen/a04266.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04266.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::YaspEntity< codim, dim, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/yaspgridentity.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridentity.hh>

    \n
    \n Inheritance diagram for Dune::YaspEntity< codim, dim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -958,15 +958,15 @@\n \n

    Know dimension of the entity.

    \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-grid-doc/doxygen/a04270.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04270.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::YaspEntitySeed< codim, GridImp > Class Template Reference
    \n \n
    \n \n

    Describes the minimal information necessary to create a fully functional YaspEntity. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridentityseed.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridentityseed.hh>

    \n \n \n \n \n \n \n@@ -407,15 +407,15 @@\n \n

    codimension of entity

    \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-grid-doc/doxygen/a04274.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04274.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::YaspLevelIterator< codim, pitype, GridImp > Class Template Reference
    \n \n
    \n \n

    Iterates over entities of one grid level. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridleveliterator.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridleveliterator.hh>

    \n

    \n Public Member Functions

     YaspEntitySeed ()
     default construct an invalid entity seed
     
     YaspEntitySeed (int level, std::array< int, dim > coord, int o=0)
    \n \n \n \n \n \n@@ -356,15 +356,15 @@\n \n

    entity

    \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-grid-doc/doxygen/a04282.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04282.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::YaspIntersection< GridImp > Class Template Reference
    \n \n
    \n \n

    YaspIntersection provides data about intersection with neighboring codim 0 entities. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridintersection.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridintersection.hh>

    \n

    \n Public Types

    typedef GridImp::template Codim< codim >::Entity Entity
     
    typedef GridImp::YGridLevelIterator YGLI
     
    \n \n \n \n \n \n@@ -852,15 +852,15 @@\n

    \n Public Types

    typedef GridImp::YGridLevelIterator YGLI
     
    typedef GridImp::YGrid::Iterator I
     
    \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-grid-doc/doxygen/a04286.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04286.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::YaspHierarchicIterator< GridImp > Class Template Reference
    \n \n
    \n \n

    YaspHierarchicIterator enables iteration over son entities of codim 0. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridhierarchiciterator.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridhierarchiciterator.hh>

    \n \n \n \n \n \n \n@@ -359,15 +359,15 @@\n

    \n Public Types

    typedef GridImp::YGridLevelIterator YGLI
     
    typedef GridImp::YGrid::Iterator I
     
    \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-grid-doc/doxygen/a04290.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04290.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::YaspIndexSet< GridImp, isLeafIndexSet > Class Template Reference
    \n \n
    \n \n

    Implementation of Level- and LeafIndexSets for YaspGrid. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridindexsets.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridindexsets.hh>

    \n
    \n Inheritance diagram for Dune::YaspIndexSet< GridImp, isLeafIndexSet >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -778,15 +778,15 @@\n \n

    dimension of the grid (maximum allowed codimension)

    \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-grid-doc/doxygen/a04294.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04294.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::YaspGlobalIdSet< GridImp > Class Template Reference
    \n \n
    \n \n

    persistent, globally unique Ids \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgrididset.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgrididset.hh>

    \n
    \n Inheritance diagram for Dune::YaspGlobalIdSet< GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -391,15 +391,15 @@\n \n

    dimension of the grid (maximum allowed codimension)

    \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-grid-doc/doxygen/a04298.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04298.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::YaspPersistentContainerIndex< Grid > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/yaspgridpersistentcontainer.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridpersistentcontainer.hh>

    \n
    \n Inheritance diagram for Dune::YaspPersistentContainerIndex< Grid >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -315,15 +315,15 @@\n
    Note
    The parameter codim denotes the codimension with respect to the grid, i.e., it must satisfy cc <= codim <= dimension.
    \n
    Returns
    An index in the range 0 ... Max number of entities in set - 1.
    \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-grid-doc/doxygen/a04362.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04362.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::EquidistantCoordinates< ct, dim > Class Template Reference
    \n \n
    \n \n

    Container for equidistant coordinates in a YaspGrid. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/coordinates.hh>

    \n+

    #include <dune/grid/yaspgrid/coordinates.hh>

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

    \n Public Types

    typedef ct ctype
     export the coordinate type
     
    \n@@ -467,15 +467,15 @@\n
    \n \n

    export dimension

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

    Container for equidistant coordinates in a YaspGrid with non-trivial origin. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/coordinates.hh>

    \n+

    #include <dune/grid/yaspgrid/coordinates.hh>

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

    \n Public Types

    typedef ct ctype
     export the coordinate type
     
    \n@@ -512,15 +512,15 @@\n
    \n \n

    export dimension

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

    Coordinate container for a tensor product YaspGrid. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/coordinates.hh>

    \n+

    #include <dune/grid/yaspgrid/coordinates.hh>

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

    \n Public Types

    typedef ct ctype
     export the coordinate type
     
    \n@@ -467,15 +467,15 @@\n
    \n \n

    export dimension

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

    a base class for the yaspgrid partitioning strategy \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::Yasp::Partitioning< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -220,15 +220,15 @@\n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04378.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04378.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members\n
    Dune::Yasp::DefaultPartitioning< d > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::Yasp::DefaultPartitioning< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -180,15 +180,15 @@\n \n \n

    Implements Dune::Yasp::Partitioning< d >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04382.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04382.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Yasp::PowerDPartitioning< d > Class Template Reference
    \n \n
    \n \n

    Implement yaspgrid load balance strategy for P=x^{dim} processors. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::Yasp::PowerDPartitioning< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -206,15 +206,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04386.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04386.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Yasp::FixedSizePartitioning< d > Class Template Reference
    \n \n
    \n \n

    Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't match the number of processors, the grid should be distributed to, an exception is thrown. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::Yasp::FixedSizePartitioning< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -244,15 +244,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

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

    a base class for the yaspgrid partitioning strategy \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::YLoadBalance< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -263,15 +263,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04394.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04394.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members\n
    Dune::YLoadBalanceForward< d > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::YLoadBalanceForward< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -286,15 +286,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

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

    Implement the default load balance strategy of yaspgrid. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::YLoadBalanceDefault< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -267,15 +267,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

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

    Implement yaspgrid load balance strategy for P=x^{dim} processors. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::YLoadBalancePowerD< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -259,15 +259,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

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

    Implement partitioner that gets a fixed partitioning from an array If the given partitioning doesn't match the number of processors, the grid should be distributed to, an exception is thrown. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n+

    #include <dune/grid/yaspgrid/partitioning.hh>

    \n
    \n Inheritance diagram for Dune::YaspFixedSizePartitioner< d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -260,15 +260,15 @@\n
    \n \n

    Implements Dune::Yasp::Partitioning< d >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04410.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04410.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::StructuredGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > > Class Template Reference
    \n \n
    \n \n \n \n \n \n@@ -201,15 +201,15 @@\n \n

    Create a structured simplex grid.

    \n
    Note
    Simplices are not supported in YaspGrid, so this functions unconditionally throws a GridError.
    \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04414.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04414.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::StructuredGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > > Class Template Reference
    \n \n
    \n \n

    Specialization of the StructuredGridFactory for YaspGrid<EquidistantOffsetCoordinates> \n More...

    \n \n-

    #include <dune/grid/yaspgrid/structuredyaspgridfactory.hh>

    \n+

    #include <dune/grid/yaspgrid/structuredyaspgridfactory.hh>

    \n

    \n Static Public Member Functions

    static std::unique_ptr< GridTypecreateCubeGrid (const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
     Create a structured cube grid.
     
    static std::unique_ptr< GridTypecreateSimplexGrid (const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    \n \n \n \n \n \n@@ -199,15 +199,15 @@\n \n

    Create a structured simplex grid.

    \n
    Note
    Simplices are not supported in YaspGrid, so this functions unconditionally throws a GridError.
    \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04418.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04418.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Public Member Functions |\n List of all members\n
    Dune::Torus< Communication, d > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/torus.hh>

    \n+

    #include <dune/grid/yaspgrid/torus.hh>

    \n
    \n Inheritance diagram for Dune::Torus< Communication, d >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1136,15 +1136,15 @@\n
    \n \n

    return tag used by torus

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04430.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04430.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Torus< Communication, d >::ProcListIterator Class Reference
    \n \n

    \n Static Public Member Functions

    static std::unique_ptr< GridTypecreateCubeGrid (const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
     Create a structured cube grid.
     
    static std::unique_ptr< GridTypecreateSimplexGrid (const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    \n \n \n \n \n \n@@ -346,15 +346,15 @@\n
    \n \n

    return rank of neighboring process

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04434.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04434.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members\n
    Dune::YaspEntity< 0, dim, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/yaspgridentity.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridentity.hh>

    \n
    \n Inheritance diagram for Dune::YaspEntity< 0, dim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1463,15 +1463,15 @@\n
    \n \n

    Know dimension of the entity.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04438.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04438.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::YaspEntity< 0, dim, GridImp >::Codim< cd > Struct Template Reference
    \n \n

    \n Public Member Functions

     ProcListIterator (typename std::deque< CommPartner >::const_iterator iter)
     make an iterator
     
    int rank () const
    \n \n \n \n

    \n Public Types

    typedef GridImp::template Codim< cd >::Entity Entity
     
    \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-grid-doc/doxygen/a04442.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04442.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::YaspEntity< dim, dim, GridImp > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/yaspgridentity.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridentity.hh>

    \n
    \n Inheritance diagram for Dune::YaspEntity< dim, dim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -897,15 +897,15 @@\n
    \n \n

    Know dimension of the entity.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04446.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04446.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::YaspGeometry< mydim, mydim, GridImp > Class Template Reference
    \n \n
    \n \n

    specialize for dim=dimworld, i.e. a volume element \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridgeometry.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridgeometry.hh>

    \n
    \n Inheritance diagram for Dune::YaspGeometry< mydim, mydim, GridImp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -198,15 +198,15 @@\n
    \n \n

    copy constructor (skipping temporary variables)

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04450.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04450.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::YaspGeometry< 0, cdim, GridImp > Class Template Reference
    \n \n
    \n \n

    specialization for dim=0, this is a vertex \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridgeometry.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridgeometry.hh>

    \n
    \n Inheritance diagram for Dune::YaspGeometry< 0, cdim, GridImp >:
    \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-grid-doc/doxygen/a04458.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04458.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    Dune::PersistentContainer< YaspGrid< dim, CoordCont >, T > Class Template Reference
    \n \n
    \n \n

    Specialization of the PersistentContainer for YaspGrid. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/yaspgridpersistentcontainer.hh>

    \n+

    #include <dune/grid/yaspgrid/yaspgridpersistentcontainer.hh>

    \n
    \n Inheritance diagram for Dune::PersistentContainer< YaspGrid< dim, CoordCont >, T >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -816,15 +816,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-grid-doc/doxygen/a04462.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04462.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::YGridComponent< Coordinates > Class Template Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n+

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n \n \n \n \n

    \n Classes

    class  Iterator
     
    \n \n

    \n@@ -195,15 +195,15 @@\n

    \n

    together with an affine mapping.

    \n

    A YGrid is characterized by the following quantities:

    \n
      \n
    • The origin \"$,
    • \n
    • the size \"$,
    • \n
    • The shift \"$.
    • \n-
    • a coordinate container, that gives the mapping of the index to global coordinates (see coordinates.hh)
    • \n+
    • a coordinate container, that gives the mapping of the index to global coordinates (see coordinates.hh)
    • \n
    \n

    The shift can be used to interpret the points of a grid as midpoints of cells, faces, edges, etc.

    \n

    Here is a graphical illustration of a grid:

    \n
    \n \"\"/\n
    \n A YGrid.
    \n@@ -1197,15 +1197,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-grid-doc/doxygen/a04466.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04466.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::YGridComponent< Coordinates >::Iterator Class Reference
    \n \n
    \n \n-

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n+

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n \n \n \n \n \n \n@@ -878,15 +878,15 @@\n
    \n \n

    consecutive index in enclosing grid

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

    implements a collection of YGridComponents which form a codimension Entities of given codimension c need to be represented by d choose c YgridComponents. All entities in one such component share the same set of spanning unit vectors. A YGrid is used to iterate over the entire set of components the codimension consists of. It doesn't hold any data, but instead holds an iterator range into an array of components (which is owned by YGridLevel). \n More...

    \n \n-

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n+

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n

    \n Public Member Functions

     Iterator ()=default
     
     Iterator (const YGridComponent< Coordinates > &r)
     Make iterator pointing to first cell in a grid.
    \n \n \n \n \n

    \n Classes

    class  Iterator
     Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity in YaspGrid. More...
     
    \n@@ -528,15 +528,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-grid-doc/doxygen/a04474.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04474.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::YGrid< Coordinates >::Iterator Class Reference
    \n \n
    \n \n

    Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity in YaspGrid. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n+

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n \n \n \n \n \n \n@@ -840,15 +840,15 @@\n
    \n \n

    return the current component number

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

    implements a collection of multiple std::deque<Intersection> Intersections with neighboring processors are stored as std::deque<Intersection>. Eachsuch intersection only holds one YGridComponent. To do all communication associated with one codimension, multiple such deques have to be concatenated. YGridList manges this concatenation. As for YGrids, YGridList doesn't hold any data, but an iterator range into a data array owned by YGridLevel. \n More...

    \n \n-

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n+

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n

    \n Public Member Functions

     Iterator ()=default
     default constructor
     
     Iterator (const YGrid< Coordinates > &yg, const std::array< int, dim > &coords, int which=0)
    \n \n \n \n \n \n@@ -389,15 +389,15 @@\n \n

    \n Classes

    struct  Intersection
     type describing an intersection with a neighboring processor More...
     
    class  Iterator
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04482.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04482.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::YGridList< Coordinates >::Intersection Struct Reference
    \n \n
    \n \n

    type describing an intersection with a neighboring processor \n More...

    \n \n-

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n+

    #include <dune/grid/yaspgrid/ygrid.hh>

    \n \n \n \n \n \n \n@@ -173,15 +173,15 @@\n
    \n \n

    a YGrid stub, that acts wraps above YGrid Component and handels the index offset

    \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-grid-doc/doxygen/a04486.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04486.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::YGridList< Coordinates >::Iterator Class Reference
    \n \n

    \n Public Attributes

    YGridComponent< Coordinates > grid
     The intersection as a subgrid of the local grid.
     
    int rank
    \n \n \n \n \n \n@@ -289,15 +289,15 @@\n
    \n \n

    compare two iterators

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04491.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04491.html", "unified_diff": "@@ -89,15 +89,15 @@\n
    // dune-geometry includes
    \n
    #include<dune/geometry/referenceelements.hh>
    \n
    #include<dune/geometry/quadraturerules.hh>
    \n
    // dune-grid includes
    \n \n
    \n
    \n-
    int main(int argc, char** argv)
    \n+
    int main(int argc, char** argv)
    \n
    {
    \n
    // Maybe initialize Mpi
    \n
    [[maybe_unused]] Dune::MPIHelper& helper = Dune::MPIHelper::instance(argc, argv);
    \n
    \n
    // [set up grid]
    \n
    const int dim = 4;
    \n
    using Grid = Dune::YaspGrid<dim>;
    \n@@ -147,15 +147,15 @@\n
    {
    \n
    auto geoI = I.geometry();
    \n
    divergence += f(geoI.center())*I.centerUnitOuterNormal()*geoI.volume();
    \n
    }
    \n
    }
    \n
    std::cout << "divergence = " << divergence << std::endl;
    \n
    }
    \n-
    int main(int argc, char **argv)
    Definition recipe-integration.cc:70
    \n+
    int main(int argc, char **argv)
    Definition recipe-integration.cc:70
    \n \n
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a04492.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a04492.html", "unified_diff": "@@ -86,15 +86,15 @@\n
    #include<dune/common/parallel/mpihelper.hh>
    \n
    #include<dune/common/parametertreeparser.hh>
    \n
    #include<dune/common/timer.hh>
    \n
    // dune-grid includes
    \n \n
    \n
    \n-
    int main(int argc, char** argv)
    \n+
    int main(int argc, char** argv)
    \n
    {
    \n
    // Maybe initialize Mpi
    \n
    [[maybe_unused]] Dune::MPIHelper& helper = Dune::MPIHelper::instance(argc, argv);
    \n
    \n
    // [set up grid]
    \n
    const int dim = 4;
    \n
    using Grid = Dune::YaspGrid<dim>;
    \n@@ -122,15 +122,15 @@\n
    \n
    // [access to subentities]
    \n
    const int mycodim = 2;
    \n
    for (const auto& e : elements(gv))
    \n
    for (unsigned int i=0; i<e.subEntities(mycodim); ++i)
    \n
    [[maybe_unused]] auto v = e.template subEntity<codim>(i);
    \n
    }
    \n-
    int main(int argc, char **argv)
    Definition recipe-integration.cc:70
    \n+
    int main(int argc, char **argv)
    Definition recipe-integration.cc:70
    \n \n
    [ provides Dune::Grid ]
    Definition yaspgrid.hh:163
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07199.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07199.html", "unified_diff": "@@ -78,15 +78,15 @@\n Namespaces\n
    backuprestore.hh File Reference
    \n \n
    \n
    #include <type_traits>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/grid/common/backuprestore.hh>
    \n-#include <dune/grid/geometrygrid/declaration.hh>
    \n+#include <dune/grid/geometrygrid/declaration.hh>
    \n #include <dune/grid/geometrygrid/capabilities.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Public Member Functions

     Iterator (const YGridList< Coordinates > &ygl, bool end=false)
     return iterator to begin and end of the container
     
    Iteratoroperator++ ()
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07199_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07199_source.html", "unified_diff": "@@ -89,15 +89,15 @@\n
    6#define DUNE_GEOGRID_BACKUPRESTORE_HH
    \n
    7
    \n
    8#include <type_traits>
    \n
    9
    \n
    10#include <dune/common/exceptions.hh>
    \n \n
    12
    \n-\n+\n \n
    15
    \n
    16namespace Dune
    \n
    17{
    \n
    18
    \n
    \n
    19 namespace GeoGrid
    \n@@ -197,15 +197,15 @@\n
    99 }
    \n
    100 };
    \n
    \n
    101
    \n
    102} // namespace Dune
    \n
    103
    \n
    104#endif // #ifndef DUNE_GEOGRID_BACKUPRESTORE_HH
    \n-\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    facility for writing and reading grids
    Definition common/backuprestore.hh:43
    \n
    Grid abstract base class.
    Definition common/grid.hh:375
    \n
    Definition geometrygrid/backuprestore.hh:27
    \n
    Definition geometrygrid/backuprestore.hh:31
    \n
    const Grid & asImp() const
    Definition geometrygrid/backuprestore.hh:43
    \n
    BackupRestoreFacilities()
    Definition geometrygrid/backuprestore.hh:35
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07211.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07211.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n
    \n
    #include <cassert>
    \n #include <type_traits>
    \n #include <utility>
    \n #include <dune/common/hybridutilities.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n-#include <dune/grid/geometrygrid/declaration.hh>
    \n+#include <dune/grid/geometrygrid/declaration.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::GeoGrid::BackupRestoreFacilities< Grid, hasBackupRestoreFacilities >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07211_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07211_source.html", "unified_diff": "@@ -91,15 +91,15 @@\n
    8#include <cassert>
    \n
    9#include <type_traits>
    \n
    10#include <utility>
    \n
    11
    \n
    12#include <dune/common/hybridutilities.hh>
    \n
    13
    \n \n-\n+\n
    16
    \n
    17namespace Dune
    \n
    18{
    \n
    19
    \n
    20 // Capabilities
    \n
    21 // ------------
    \n
    22
    \n@@ -248,15 +248,15 @@\n \n
    140
    \n
    141 } // namespace Capabilities
    \n
    142
    \n
    143} // namespace Dune
    \n
    144
    \n
    145#endif // #ifndef DUNE_GEOGRID_CAPABILITIES_HH
    \n-\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Specialize with 'true' for if the codimension 0 entity of the grid has only one possible geometry typ...
    Definition common/capabilities.hh:27
    \n
    static const bool v
    Definition common/capabilities.hh:28
    \n
    static const unsigned int topologyId
    Definition common/capabilities.hh:31
    \n
    Specialize with 'true' for all codims that a grid implements entities for. (default=false)
    Definition common/capabilities.hh:58
    \n
    static const bool v
    Definition common/capabilities.hh:59
    \n
    specialize with 'true' for all codims that a grid provides an iterator for (default=hasEntity<codim>:...
    Definition common/capabilities.hh:74
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07214.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07214.html", "unified_diff": "@@ -77,18 +77,18 @@\n Classes |\n Namespaces\n
    datahandle.hh File Reference
    \n \n

    \n Classes

    struct  Dune::Capabilities::hasSingleGeometryType< GeometryGrid< HostGrid, CoordFunction, Allocator > >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07214_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07214_source.html", "unified_diff": "@@ -88,18 +88,18 @@\n
    5#ifndef DUNE_ALBERTAGRIDDATAHANDLE_HH
    \n
    6#define DUNE_ALBERTAGRIDDATAHANDLE_HH
    \n
    7
    \n
    8#include <iostream>
    \n
    9
    \n \n
    11
    \n-\n-\n-\n-\n+\n+\n+\n+\n
    16
    \n
    17#if HAVE_ALBERTA
    \n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    22 namespace Alberta
    \n@@ -154,18 +154,18 @@\n
    63 }
    \n
    64
    \n
    65}
    \n
    66
    \n
    67#endif // #if HAVE_ALBERTA
    \n
    68
    \n
    69#endif
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
    \n-\n-\n+\n+\n+
    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Definition albertagrid/datahandle.hh:27
    \n
    AdaptRestrictProlongHandler(Grid &grid, RestrictProlongOperator &rpOp)
    Definition albertagrid/datahandle.hh:42
    \n
    void restrictLocal(const Patch &patch, int i)
    Definition albertagrid/datahandle.hh:48
    \n
    void prolongLocal(const Patch &patch, int i)
    Definition albertagrid/datahandle.hh:55
    \n \n
    Definition refinement.hh:40
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -73,21 +73,21 @@\n 63 }\n 64\n 65}\n 66\n 67#endif // #if HAVE_ALBERTA\n 68\n 69#endif\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n provides a wrapper for ALBERTA's refinement patches and the corners for\n geometryInFather\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n-_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bP_\br_\bo_\bl_\bo_\bn_\bg_\bH_\ba_\bn_\bd_\bl_\be_\br\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/datahandle.hh:27\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bP_\br_\bo_\bl_\bo_\bn_\bg_\bH_\ba_\bn_\bd_\bl_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bP_\br_\bo_\bl_\bo_\bn_\bg_\bH_\ba_\bn_\bd_\bl_\be_\br\n AdaptRestrictProlongHandler(Grid &grid, RestrictProlongOperator &rpOp)\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07217.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07217.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    datahandle.hh File Reference
    \n \n

    \n Classes

    class  Dune::Alberta::AdaptRestrictProlongHandler< Grid, RestrictProlongOperator >
     
    \n \n \n

    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07217_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07217_source.html", "unified_diff": "@@ -86,15 +86,15 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GEOGRID_DATAHANDLE_HH
    \n
    6#define DUNE_GEOGRID_DATAHANDLE_HH
    \n
    7
    \n
    8#include <dune/common/typetraits.hh>
    \n
    9
    \n-\n+\n \n \n \n
    14
    \n
    15namespace Dune
    \n
    16{
    \n
    17
    \n@@ -182,15 +182,15 @@\n \n
    86
    \n
    87 } // namespace GeoGrid
    \n
    88
    \n
    89} // namespace Dune
    \n
    90
    \n
    91#endif // #ifndef DUNE_GEOGRID_DATAHANDLE_HH
    \n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
    Definition datahandleif.hh:78
    \n
    Grid abstract base class.
    Definition common/grid.hh:375
    \n
    Definition geometrygrid/capabilities.hh:116
    \n
    Definition geometrygrid/datahandle.hh:27
    \n
    bool fixedSize(int dim, int codim) const
    Definition geometrygrid/datahandle.hh:44
    \n
    bool contains(int dim, int codim) const
    Definition geometrygrid/datahandle.hh:36
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07223.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07223.html", "unified_diff": "@@ -81,15 +81,15 @@\n \n
    \n
    #include <config.h>
    \n #include <cstdio>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n #include <dune/grid/io/file/dgfparser/dgfparser.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>
    \n
    \n \n \n \n

    \n Classes

    class  Dune::DGFPrintInfo
     
    \n \n \n \n \n

    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07226.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07226.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    \n \n

    Go to the source code of this file.

    \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07226_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07226_source.html", "unified_diff": "@@ -93,15 +93,15 @@\n \n \n
    12
    \n \n \n
    15
    \n \n-\n+\n
    18
    \n
    19#if HAVE_ALBERTA
    \n
    20
    \n
    21namespace Dune
    \n
    22{
    \n
    23
    \n
    24 // External Forward Declarations
    \n@@ -297,15 +297,15 @@\n
    186
    \n
    187}
    \n
    188
    \n
    189#endif // #if HAVE_ALBERTA
    \n
    190
    \n
    191#endif // #ifndef DUNE_ALBERTA_DGFPARSER_HH
    \n \n-\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Definition dgfgridfactory.hh:38
    \n
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    int indexInInside() const
    Local index of codim 1 entity in the inside() entity where intersection is contained in.
    Definition common/intersection.hh:346
    \n
    Entity inside() const
    return Entity on the inside of this intersection. That is the Entity where we started this.
    Definition common/intersection.hh:250
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07229.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07229.html", "unified_diff": "@@ -74,19 +74,19 @@\n \n
    \n
    dgfparser.hh File Reference
    \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07229_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07229_source.html", "unified_diff": "@@ -87,25 +87,25 @@\n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_DGFPARSER_HH
    \n
    6#define DUNE_DGFPARSER_HH
    \n
    7// include dgf parser
    \n \n
    9/* include the implementations */
    \n \n-
    11#include "dgfparser/dgfug.hh"
    \n-
    12#include "dgfparser/dgfoned.hh"
    \n-
    13#include "dgfparser/dgfyasp.hh"
    \n-\n-\n+
    11#include "dgfparser/dgfug.hh"
    \n+
    12#include "dgfparser/dgfoned.hh"
    \n+
    13#include "dgfparser/dgfyasp.hh"
    \n+\n+\n
    16#endif
    \n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n \n \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -21,16 +21,16 @@\n 10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n 11#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bu_\bg_\b._\bh_\bh\"\n 12#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bo_\bn_\be_\bd_\b._\bh_\bh\"\n 13#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\by_\ba_\bs_\bp_\b._\bh_\bh\"\n 14#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bg_\be_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\"\n 15#include \"_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b._\bh_\bh\"\n 16#endif\n-_\bd_\bg_\bf_\bg_\be_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\n _\bd_\bg_\bf_\bo_\bn_\be_\bd_\b._\bh_\bh\n-_\bd_\bg_\bf_\bu_\bg_\b._\bh_\bh\n _\bd_\bg_\bf_\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\bg_\br_\bi_\bd_\b._\bh_\bh\n+_\bd_\bg_\bf_\bg_\be_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\n+_\bd_\bg_\bf_\bu_\bg_\b._\bh_\bh\n _\bd_\bg_\bf_\by_\ba_\bs_\bp_\b._\bh_\bh\n _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\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-grid-doc/doxygen/a07232.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07232.html", "unified_diff": "@@ -87,37 +87,37 @@\n #include <vector>
    \n #include <memory>
    \n #include <map>
    \n #include <assert.h>
    \n #include <cmath>
    \n #include <dune/common/parallel/mpihelper.hh>
    \n #include <dune/common/stdstreams.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n-#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n-#include <dune/grid/io/file/dgfparser/parser.hh>
    \n-#include <dune/grid/io/file/dgfparser/gridptr.hh>
    \n-#include <dune/grid/io/file/dgfparser/macrogrid.hh>
    \n-#include <dune/grid/io/file/dgfparser/dgfgridfactory.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/boundaryseg.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/cube.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/dim.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/general.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/gridparameter.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/interval.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/polygon.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/polyhedron.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
    \n+#include <dune/grid/io/file/dgfparser/entitykey.hh>
    \n+#include <dune/grid/io/file/dgfparser/parser.hh>
    \n+#include <dune/grid/io/file/dgfparser/gridptr.hh>
    \n+#include <dune/grid/io/file/dgfparser/macrogrid.hh>
    \n+#include <dune/grid/io/file/dgfparser/dgfgridfactory.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/basic.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/boundarydom.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/boundaryseg.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/cube.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/dim.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/general.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/gridparameter.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/interval.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/polygon.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/polyhedron.hh>
    \n #include <dune/grid/io/file/dgfparser/blocks/projection.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/simplex.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh>
    \n-#include <dune/grid/io/file/dgfparser/blocks/vertex.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/simplex.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh>
    \n+#include <dune/grid/io/file/dgfparser/blocks/vertex.hh>
    \n \n

    Go to the source code of this file.

    \n

    \n Classes

    struct  Dune::DGFGridFactory< AlbertaGrid< dim, dimworld > >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07232_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07232_source.html", "unified_diff": "@@ -99,40 +99,40 @@\n
    16#include <map>
    \n
    17#include <assert.h>
    \n
    18#include <cmath>
    \n
    19
    \n
    20//- Dune includes
    \n
    21#include <dune/common/parallel/mpihelper.hh>
    \n
    22#include <dune/common/stdstreams.hh>
    \n-\n-\n+\n+\n
    25
    \n-\n-\n+\n+\n
    28
    \n-\n-\n-\n-\n+\n+\n+\n+\n
    33
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n+\n+\n+\n
    49
    \n
    50namespace Dune {
    \n
    51
    \n
    54 template <class GridType>
    \n
    \n \n
    56 {
    \n@@ -147,36 +147,36 @@\n
    742 tetrahedral grid for Dune::Alberta then the bisection routine does
    \n
    743 not necessarily terminate. This problem does not occur
    \n
    744 if the grid is constructed using the \\b Interval block.
    \n
    745 */
    \n
    746
    \n
    747} // end namespace Dune
    \n
    748#endif
    \n-\n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n
    static double refineWeight()
    \n
    static int refineStepsForHalf()
    number of globalRefine steps needed to refuce h by 0.5
    \n \n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -74,38 +74,38 @@\n 742 tetrahedral grid for Dune::Alberta then the bisection routine does\n 743 not necessarily terminate. This problem does not occur\n 744 if the grid is constructed using the \\b Interval block.\n 745 */\n 746\n 747} // end namespace Dune\n 748#endif\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n _\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n Describes the parallel communication interface class for MessageBuffers and\n DataHandles.\n-_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n-_\bg_\br_\bi_\bd_\bp_\bt_\br_\b._\bh_\bh\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n _\bd_\bg_\bf_\bg_\br_\bi_\bd_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n+_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\n _\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bp_\be_\br_\bi_\bo_\bd_\bi_\bc_\bf_\ba_\bc_\be_\bt_\br_\ba_\bn_\bs_\b._\bh_\bh\n-_\bv_\be_\br_\bt_\be_\bx_\b._\bh_\bh\n _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bs_\be_\bg_\b._\bh_\bh\n-_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bd_\bo_\bm_\b._\bh_\bh\n-_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\b._\bh_\bh\n+_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bi_\bn_\bt_\be_\br_\bv_\ba_\bl_\b._\bh_\bh\n-_\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bh_\bh\n-_\bd_\bi_\bm_\b._\bh_\bh\n _\bg_\be_\bn_\be_\br_\ba_\bl_\b._\bh_\bh\n+_\bp_\bo_\bl_\by_\bg_\bo_\bn_\b._\bh_\bh\n+_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn_\b._\bh_\bh\n+_\bp_\be_\br_\bi_\bo_\bd_\bi_\bc_\bf_\ba_\bc_\be_\bt_\br_\ba_\bn_\bs_\b._\bh_\bh\n _\bg_\br_\bi_\bd_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b._\bh_\bh\n-_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n-_\bm_\ba_\bc_\br_\bo_\bg_\br_\bi_\bd_\b._\bh_\bh\n+_\bv_\be_\br_\bt_\be_\bx_\b._\bh_\bh\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bd_\bo_\bm_\b._\bh_\bh\n+_\bd_\bi_\bm_\b._\bh_\bh\n+_\bg_\br_\bi_\bd_\bp_\bt_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n Some simple static information for a given GridType.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07235.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07235.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    entity.hh File Reference
    \n \n

    \n Classes

    struct  Dune::DGFGridInfo< GridType >
     Some simple static information for a given GridType. More...
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07235_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07235_source.html", "unified_diff": "@@ -86,15 +86,15 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTA_ENTITY_HH
    \n
    6#define DUNE_ALBERTA_ENTITY_HH
    \n
    7
    \n \n
    9
    \n-\n+\n \n \n
    13
    \n
    14#if HAVE_ALBERTA
    \n
    15
    \n
    16namespace Dune
    \n
    17{
    \n@@ -189,15 +189,15 @@\n
    121 }
    \n \n
    122
    \n
    123 //***********************************************
    \n
    124 // end of interface methods
    \n
    125 //***********************************************
    \n
    126
    \n-
    128 ALBERTA EL_INFO *getElInfo () const;
    \n+
    128 ALBERTA EL_INFO *getElInfo () const;
    \n
    129
    \n
    130 const ElementInfo &elementInfo () const { return elementInfo_; }
    \n
    131
    \n
    133 bool equals ( const This &other ) const;
    \n
    134
    \n
    135 void clearElement ();
    \n
    136 void setElement ( const ElementInfo &elementInfo, int subEntity );
    \n@@ -367,15 +367,15 @@\n
    344 bool hasBoundaryIntersections () const ;
    \n
    345
    \n \n
    348
    \n
    350 bool equals ( const This &i ) const;
    \n
    351
    \n
    352 // needed for LevelIterator to compare
    \n-
    353 ALBERTA EL_INFO *getElInfo () const;
    \n+
    353 ALBERTA EL_INFO *getElInfo () const;
    \n
    354
    \n
    \n
    355 const ElementInfo &elementInfo () const
    \n
    356 {
    \n
    357 return elementInfo_;
    \n
    358 }
    \n
    \n@@ -426,16 +426,16 @@\n \n
    401
    \n
    402} // namespace Dune
    \n
    403
    \n
    404#endif // #if HAVE_ALBERTA
    \n
    405
    \n
    406#endif // #ifndef DUNE_ALBERTA_ENTITY_HH
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n \n
    Definition treeiterator.hh:189
    \n
    Definition hierarchiciterator.hh:29
    \n
    Definition albertagrid/intersection.hh:105
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -329,19 +329,19 @@\n 400 };\n 401\n 402} // namespace Dune\n 403\n 404#endif // #if HAVE_ALBERTA\n 405\n 406#endif // #ifndef DUNE_ALBERTA_ENTITY_HH\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n PartitionType\n Attributes used in the generic overlap model.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07238.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07238.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    \n
    #include <type_traits>
    \n #include <dune/common/iteratorrange.hh>
    \n #include <dune/common/typetraits.hh>
    \n #include <dune/geometry/dimension.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n #include "grid.hh"
    \n-#include "rangegenerators.hh"
    \n+#include "rangegenerators.hh"
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07238_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07238_source.html", "unified_diff": "@@ -93,15 +93,15 @@\n
    10#include <dune/common/iteratorrange.hh>
    \n
    11#include <dune/common/typetraits.hh>
    \n
    12
    \n
    13#include <dune/geometry/dimension.hh>
    \n
    14#include <dune/geometry/referenceelements.hh>
    \n
    15
    \n
    16#include "grid.hh"
    \n-
    17#include "rangegenerators.hh"
    \n+
    17#include "rangegenerators.hh"
    \n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    64 template<int cd, int dim, class GridImp, template<int,int,class> class EntityImp>
    \n
    \n
    65 class Entity
    \n@@ -484,15 +484,15 @@\n
    690 typedef typename GridImp::template Codim<cd>::Geometry Geo;
    \n
    691 return referenceElement< typename Geo::ctype, Geo::mydimension >(entity.type());
    \n
    692 }
    \n
    \n
    693}
    \n
    694
    \n
    695#endif // DUNE_GRID_COMMON_ENTITY_HH
    \n-\n+\n
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n
    const Implementation & impl() const
    access to the underlying implementation
    Definition common/entity.hh:86
    \n
    bool operator!=(const Entity &other) const
    Compares two entities for inequality.
    Definition common/entity.hh:176
    \n
    unsigned int subEntities(unsigned int codim) const
    Number of subentities for a given codimension.
    Definition common/entity.hh:159
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07241.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07241.html", "unified_diff": "@@ -78,15 +78,15 @@\n Namespaces\n
    entity.hh File Reference
    \n \n

    \n Classes

    class  Dune::Entity< cd, dim, GridImp, EntityImp >
     Wrapper class for entities. More...
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07241_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07241_source.html", "unified_diff": "@@ -88,15 +88,15 @@\n
    5#ifndef DUNE_GEOGRID_ENTITY_HH
    \n
    6#define DUNE_GEOGRID_ENTITY_HH
    \n
    7
    \n
    8#include <dune/geometry/referenceelements.hh>
    \n
    9
    \n \n \n-\n+\n
    13
    \n
    14namespace Dune
    \n
    15{
    \n
    16
    \n
    17 namespace GeoGrid
    \n
    18 {
    \n
    19
    \n@@ -823,15 +823,15 @@\n \n
    869
    \n
    870 } // namespace GeoGrid
    \n
    871
    \n
    872} // namespace Dune
    \n
    873
    \n
    874#endif // #ifndef DUNE_GEOGRID_ENTITY_HH
    \n-\n+\n
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n
    @ OverlapEntity
    all entities lying in the overlap zone
    Definition gridenums.hh:33
    \n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07244.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07244.html", "unified_diff": "@@ -75,16 +75,16 @@\n
    \n \n
    entityseed.hh File Reference
    \n
    \n

    \n Classes

    class  Dune::GeoGrid::EntityBase< codim, Grid, false >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07244_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07244_source.html", "unified_diff": "@@ -84,16 +84,16 @@\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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTA_ENTITYSEED_HH
    \n
    6#define DUNE_ALBERTA_ENTITYSEED_HH
    \n
    7
    \n-\n-\n+\n+\n
    10
    \n
    11namespace Dune
    \n
    12{
    \n
    13
    \n
    14 // Internal Forward Declarations
    \n
    15 // -----------------------------
    \n
    16
    \n@@ -211,16 +211,16 @@\n
    \n
    113
    \n
    114#endif // #if HAVE_ALBERTA
    \n
    115
    \n
    116} // end namespace Dune
    \n
    117
    \n
    118#endif // #ifndef DUNE_ALBERTA_ENTITYSEED_HH
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-
    provides a wrapper for ALBERTA's mesh structure
    \n+
    provides a wrapper for ALBERTA's mesh structure
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n \n \n
    Definition albertagrid/entityseed.hh:18
    \n
    ElementInfo elementInfo(const MeshPointer &mesh) const
    Definition albertagrid/entityseed.hh:65
    \n
    AlbertaGridEntitySeed(const ElementInfo &elementInfo, int subEntity)
    Definition albertagrid/entityseed.hh:55
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -124,18 +124,18 @@\n 112 };\n 113\n 114#endif // #if HAVE_ALBERTA\n 115\n 116} // end namespace Dune\n 117\n 118#endif // #ifndef DUNE_ALBERTA_ENTITYSEED_HH\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n _\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n provides a wrapper for ALBERTA's mesh structure\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd\n [ provides Dune::Grid ]\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:109\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07253.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07253.html", "unified_diff": "@@ -76,16 +76,16 @@\n \n
    geometry.hh File Reference
    \n \n

    \n Classes

    class  Dune::AlbertaGridEntitySeed< codim, const AlbertaGrid< dim, dimworld > >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07253_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07253_source.html", "unified_diff": "@@ -85,16 +85,16 @@\n
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTA_GEOMETRY_HH
    \n
    6#define DUNE_ALBERTA_GEOMETRY_HH
    \n
    7
    \n \n-\n-\n+\n+\n
    11
    \n
    12#if HAVE_ALBERTA
    \n
    13
    \n
    14namespace Dune
    \n
    15{
    \n
    16
    \n
    17 // Forward Declarations
    \n@@ -690,16 +690,16 @@\n \n
    589
    \n
    590} // namespace Dune
    \n
    591
    \n
    592#endif // #if HAVE_ALBERTA
    \n
    593
    \n
    594#endif // #ifndef DUNE_ALBERTA_GEOMETRY_HH
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-\n+\n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    ALBERTA REAL Real
    Definition misc.hh:48
    \n
    static K determinant(const FieldMatrix< K, 0, m > &matrix)
    Definition algebra.hh:30
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -535,17 +535,17 @@\n 588 };\n 589\n 590} // namespace Dune\n 591\n 592#endif // #if HAVE_ALBERTA\n 593\n 594#endif // #ifndef DUNE_ALBERTA_GEOMETRY_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n provides a wrapper for ALBERTA's el_info structure\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n ALBERTA REAL Real\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07259.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07259.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    \n
    #include <utility>
    \n #include <dune/common/typetraits.hh>
    \n #include <dune/geometry/multilineargeometry.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n #include <dune/geometry/type.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n-#include <dune/grid/geometrygrid/cornerstorage.hh>
    \n+#include <dune/grid/geometrygrid/cornerstorage.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    struct  Dune::AlbertaGridCoordinateReader< codim, GridImp >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07259_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07259_source.html", "unified_diff": "@@ -93,15 +93,15 @@\n
    10#include <dune/common/typetraits.hh>
    \n
    11
    \n
    12#include <dune/geometry/multilineargeometry.hh>
    \n
    13#include <dune/geometry/referenceelements.hh>
    \n
    14#include <dune/geometry/type.hh>
    \n
    15
    \n \n-\n+\n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    22 namespace GeoGrid
    \n
    23 {
    \n
    24
    \n@@ -333,15 +333,15 @@\n \n
    221
    \n
    222 } // namespace GeoGrid
    \n
    223
    \n
    224} // namespace Dune
    \n
    225
    \n
    226#endif // #ifndef DUNE_GEOGRID_GEOMETRY_HH
    \n-\n+\n
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Grid abstract base class.
    Definition common/grid.hh:375
    \n
    Definition cornerstorage.hh:22
    \n
    Definition cornerstorage.hh:174
    \n
    Definition geometrygrid/geometry.hh:30
    \n
    static const unsigned int topologyId
    Definition geometrygrid/geometry.hh:37
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07262.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07262.html", "unified_diff": "@@ -85,15 +85,15 @@\n
    #include <algorithm>
    \n #include <array>
    \n #include <limits>
    \n #include <map>
    \n #include <memory>
    \n #include <dune/geometry/referenceelements.hh>
    \n #include <dune/grid/common/gridfactory.hh>
    \n-#include <dune/grid/albertagrid/agrid.hh>
    \n+#include <dune/grid/albertagrid/agrid.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    struct  Dune::GeoGrid::InferHasSingleGeometryType< hasSingleGeometryType, dim, mydim >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07262_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07262_source.html", "unified_diff": "@@ -95,15 +95,15 @@\n
    17#include <map>
    \n
    18#include <memory>
    \n
    19
    \n
    20#include <dune/geometry/referenceelements.hh>
    \n
    21
    \n \n
    23
    \n-\n+\n
    25
    \n
    26#if HAVE_ALBERTA
    \n
    27
    \n
    28namespace Dune
    \n
    29{
    \n
    30
    \n
    48 template< int dim, int dimworld >
    \n@@ -557,15 +557,15 @@\n \n
    542
    \n
    543}
    \n
    544
    \n
    545#endif // #if HAVE_ALBERTA
    \n
    546
    \n
    547#endif // #ifndef DUNE_ALBERTA_GRIDFACTORY_HH
    \n-
    provides the AlbertaGrid class
    \n+
    provides the AlbertaGrid class
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    ALBERTA REAL_DD GlobalMatrix
    Definition misc.hh:51
    \n
    ALBERTA REAL Real
    Definition misc.hh:48
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n
    int generic2alberta(int codim, int i) const
    Definition agrid.hh:493
    \n
    GridFamily::ctype ctype
    Definition agrid.hh:143
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07265.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07265.html", "unified_diff": "@@ -86,15 +86,15 @@\n
    #include <memory>
    \n #include <vector>
    \n #include <dune/common/deprecated.hh>
    \n #include <dune/common/function.hh>
    \n #include <dune/common/fvector.hh>
    \n #include <dune/common/parallel/mpihelper.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/boundarysegment.hh>
    \n+#include <dune/grid/common/boundarysegment.hh>
    \n #include <dune/grid/common/grid.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::GridFactory< AlbertaGrid< dim, dimworld > >
     specialization of the generic GridFactory for AlbertaGrid More...
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07265_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07265_source.html", "unified_diff": "@@ -95,15 +95,15 @@\n
    16#define DUNE_FUNCTION_HH_SILENCE_DEPRECATION
    \n
    17#include <dune/common/function.hh>
    \n
    18#include <dune/common/fvector.hh>
    \n
    19#include <dune/common/parallel/mpihelper.hh>
    \n
    20
    \n
    21#include <dune/geometry/type.hh>
    \n
    22
    \n-\n+\n \n
    25
    \n
    26namespace Dune
    \n
    27{
    \n
    28
    \n
    71 template <class GridType>
    \n
    \n@@ -285,15 +285,15 @@\n
    375
    \n
    376 };
    \n
    \n
    377
    \n
    378}
    \n
    379
    \n
    380#endif
    \n-
    Base class for grid boundary segments of arbitrary geometry.
    \n+
    Base class for grid boundary segments of arbitrary geometry.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n
    Provide a generic factory class for unstructured grids.
    Definition common/gridfactory.hh:73
    \n
    virtual void insertBoundarySegment(const std::vector< unsigned int > &vertices, const std::shared_ptr< BoundarySegment< dimension, dimworld > > &boundarySegment)
    insert an arbitrarily shaped boundary segment
    Definition common/gridfactory.hh:192
    \n
    virtual unsigned int insertionIndex(const typename Codim< 0 >::Entity &entity) const
    obtain an element's insertion index
    Definition common/gridfactory.hh:220
    \n
    virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)=0
    Insert an element into the coarse grid.
    \n
    virtual std::unique_ptr< GridType > createGrid()=0
    Finalize grid creation and hand over the grid.
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07268.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07268.html", "unified_diff": "@@ -83,18 +83,18 @@\n

    provides the GridFamily for AlbertaGrid \n More...

    \n \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::GridFactoryInterface< GridType >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07268_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07268_source.html", "unified_diff": "@@ -90,19 +90,19 @@\n
    7
    \n
    13#include <dune/common/parallel/communication.hh>
    \n
    14
    \n \n \n \n \n-\n+\n
    20
    \n-\n+\n \n-\n+\n
    24
    \n
    25#if HAVE_ALBERTA
    \n
    26
    \n
    27namespace Dune
    \n
    28{
    \n
    29
    \n
    30 // External Forward Declarations
    \n@@ -239,17 +239,17 @@\n \n
    157
    \n
    158}
    \n
    159
    \n
    160#endif // #if HAVE_ALBERTA
    \n
    161
    \n
    162#endif // #ifndef DUNE_ALBERTAGRID_GRIDFAMILTY_HH
    \n-\n-
    Wrapper and interface classes for element geometries.
    \n-\n+\n+\n+
    Wrapper and interface classes for element geometries.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    ALBERTA REAL Real
    Definition misc.hh:48
    \n \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    Definition hierarchiciterator.hh:29
    \n
    Definition albertagrid/intersection.hh:105
    \n
    Definition albertagrid/intersectioniterator.hh:27
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -174,17 +174,17 @@\n 157\n 158}\n 159\n 160#endif // #if HAVE_ALBERTA\n 161\n 162#endif // #ifndef DUNE_ALBERTAGRID_GRIDFAMILTY_HH\n _\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b._\bh_\bh\n Wrapper and interface classes for element geometries.\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n ALBERTA REAL Real\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07271.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07271.html", "unified_diff": "@@ -77,23 +77,23 @@\n Classes |\n Namespaces\n
    gridfamily.hh File Reference
    \n \n

    \n Classes

    struct  Dune::AlbertaGridFamily< dim, dimworld >
     
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07271_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07271_source.html", "unified_diff": "@@ -86,23 +86,23 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GEOGRID_GRIDFAMILY_HH
    \n
    6#define DUNE_GEOGRID_GRIDFAMILY_HH
    \n
    7
    \n \n \n-\n+\n \n \n \n \n \n \n-\n-\n+\n+\n \n
    20
    \n
    21namespace Dune
    \n
    22{
    \n
    23
    \n
    27 namespace GeoGrid
    \n
    28 {
    \n@@ -209,17 +209,17 @@\n \n
    123
    \n
    124 } // namespace GeoGrid
    \n
    125
    \n
    126} // namespace Dune
    \n
    127
    \n
    128#endif // #ifndef DUNE_GEOGRID_GRIDFAMILY_HH
    \n-\n-\n-\n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n
    interface class for an iterator over grid entities
    Definition entityiterator.hh:32
    \n
    Store a reference to an entity with a minimal memory footprint.
    Definition common/entityseed.hh:26
    \n
    Wrapper class for geometries.
    Definition common/geometry.hh:71
    \n
    Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
    Definition common/intersectioniterator.hh:83
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07277.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07277.html", "unified_diff": "@@ -80,16 +80,16 @@\n \n
    \n
    #include <typeinfo>
    \n #include <dune/common/std/type_traits.hh>
    \n #include <dune/common/iteratorrange.hh>
    \n #include <dune/common/parallel/future.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n-#include <dune/grid/common/rangegenerators.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/grid/common/rangegenerators.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::GeoGrid::ExportParams< HG, CF >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07277_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07277_source.html", "unified_diff": "@@ -92,16 +92,16 @@\n
    9
    \n
    10#include <dune/common/std/type_traits.hh>
    \n
    11#include <dune/common/iteratorrange.hh>
    \n
    12#include <dune/common/parallel/future.hh>
    \n
    13
    \n
    14#include <dune/geometry/type.hh>
    \n
    15
    \n-\n-\n+\n+\n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    22 template< int, int, class, class >
    \n
    23 class GridDefaultImplementation;
    \n
    24
    \n@@ -404,16 +404,16 @@\n \n
    378 };
    \n \n
    379
    \n
    380} // namespace Dune
    \n
    381
    \n
    382#endif // #ifndef DUNE_GRID_COMMON_GRIDVIEW_HH
    \n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n-\n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+\n
    CommunicationDirection
    Define a type for communication direction parameter.
    Definition gridenums.hh:170
    \n
    InterfaceType
    Parameter to be used for the communication functions.
    Definition gridenums.hh:86
    \n
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n
    ThisType & operator=(const ThisType &other)
    assignment operator
    Definition common/gridview.hh:172
    \n
    Codim< cd >::Iterator begin() const
    obtain begin iterator for this view
    Definition common/gridview.hh:237
    \n
    const Grid & grid() const
    obtain a const reference to the underlying hierarchic grid
    Definition common/gridview.hh:180
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07280.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07280.html", "unified_diff": "@@ -83,15 +83,15 @@\n #include <dune/common/exceptions.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n #include <dune/grid/common/gridview.hh>
    \n #include <dune/grid/geometrygrid/datahandle.hh>
    \n #include <dune/grid/geometrygrid/indexsets.hh>
    \n #include <dune/grid/geometrygrid/intersection.hh>
    \n #include <dune/grid/geometrygrid/intersectioniterator.hh>
    \n-#include <dune/grid/geometrygrid/iterator.hh>
    \n+#include <dune/grid/geometrygrid/iterator.hh>
    \n \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::GridView< ViewTraits >
     Grid view abstract base class. More...
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07280_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07280_source.html", "unified_diff": "@@ -93,15 +93,15 @@\n
    10
    \n \n \n \n \n \n \n-\n+\n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    22 namespace GeoGrid
    \n
    23 {
    \n
    24
    \n@@ -376,15 +376,15 @@\n \n
    252
    \n
    253 } // namespace GeoGrid
    \n
    254
    \n
    255} // namespace Dune
    \n
    256
    \n
    257#endif // #ifndef DUNE_GEOGRID_GRIDVIEW_HH
    \n-\n+\n
    CommunicationDirection
    Define a type for communication direction parameter.
    Definition gridenums.hh:170
    \n
    InterfaceType
    Parameter to be used for the communication functions.
    Definition gridenums.hh:86
    \n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    interface class for an iterator over grid entities
    Definition entityiterator.hh:32
    \n
    Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
    Definition common/intersectioniterator.hh:83
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07283.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07283.html", "unified_diff": "@@ -81,20 +81,20 @@\n \n
    \n
    #include <array>
    \n #include <utility>
    \n #include <dune/common/hybridutilities.hh>
    \n #include <dune/common/stdstreams.hh>
    \n #include <dune/grid/common/grid.hh>
    \n-#include <dune/grid/common/indexidset.hh>
    \n-#include <dune/grid/albertagrid/indexstack.hh>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/dofadmin.hh>
    \n-#include <dune/grid/albertagrid/dofvector.hh>
    \n-#include <dune/grid/albertagrid/elementinfo.hh>
    \n+#include <dune/grid/common/indexidset.hh>
    \n+#include <dune/grid/albertagrid/indexstack.hh>
    \n+#include <dune/grid/albertagrid/misc.hh>
    \n+#include <dune/grid/albertagrid/dofadmin.hh>
    \n+#include <dune/grid/albertagrid/dofvector.hh>
    \n+#include <dune/grid/albertagrid/elementinfo.hh>
    \n #include <dune/grid/albertagrid/gridfamily.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::GeoGrid::GridViewTraits< HGV, CoordFunction, Allocator >
     
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07283_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07283_source.html", "unified_diff": "@@ -91,21 +91,21 @@\n
    8#include <array>
    \n
    9#include <utility>
    \n
    10
    \n
    11#include <dune/common/hybridutilities.hh>
    \n
    12#include <dune/common/stdstreams.hh>
    \n
    13
    \n \n-\n+\n
    16
    \n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n \n
    23
    \n
    24#if HAVE_ALBERTA
    \n
    25
    \n
    26namespace Dune
    \n
    27{
    \n
    28
    \n@@ -725,20 +725,20 @@\n \n
    602
    \n
    603} // namespace Dune
    \n
    604
    \n
    605#endif // #if HAVE_ALBERTA
    \n
    606
    \n
    607#endif // #ifndef DUNE_ALBERTAGRIDINDEXSETS_HH
    \n-
    Provides base classes for index and id sets.
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-\n-\n-\n-
    Provides an index stack that supplies indices for element numbering for a grid (i....
    \n+
    Provides base classes for index and id sets.
    \n+\n+\n+\n+
    Provides an index stack that supplies indices for element numbering for a grid (i....
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Dune::IndexStack< int, 100000 > IndexStack
    Definition albertagrid/indexsets.hh:31
    \n
    ALBERTA EL Element
    Definition misc.hh:54
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n
    static const int dimension
    Definition agrid.hh:145
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -611,22 +611,22 @@\n 603} // namespace Dune\n 604\n 605#endif // #if HAVE_ALBERTA\n 606\n 607#endif // #ifndef DUNE_ALBERTAGRIDINDEXSETS_HH\n _\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n Provides base classes for index and id sets.\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n-_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh\n-_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n _\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n+_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh\n _\bi_\bn_\bd_\be_\bx_\bs_\bt_\ba_\bc_\bk_\b._\bh_\bh\n Provides an index stack that supplies indices for element numbering for a grid\n (i....\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\bt_\ba_\bc_\bk\n Dune::IndexStack< int, 100000 > IndexStack\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/indexsets.hh:31\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07286.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07286.html", "unified_diff": "@@ -77,17 +77,17 @@\n Classes |\n Namespaces\n
    indexsets.hh File Reference
    \n \n
    \n
    #include <vector>
    \n #include <dune/common/typetraits.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/common/indexidset.hh>
    \n-#include <dune/grid/geometrygrid/declaration.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/indexidset.hh>
    \n+#include <dune/grid/geometrygrid/declaration.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::AlbertaGridHierarchicIndexSet< dim, dimworld >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07286_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07286_source.html", "unified_diff": "@@ -88,18 +88,18 @@\n
    5#ifndef DUNE_GEOGRID_INDEXSETS_HH
    \n
    6#define DUNE_GEOGRID_INDEXSETS_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n
    10#include <dune/common/typetraits.hh>
    \n
    11
    \n-\n-\n+\n+\n
    14
    \n-\n+\n
    16
    \n
    17namespace Dune
    \n
    18{
    \n
    19
    \n
    20 namespace GeoGrid
    \n
    21 {
    \n
    22
    \n@@ -207,17 +207,17 @@\n \n
    109
    \n
    110 } // namespace GeoGrid
    \n
    111
    \n
    112} // namespace Dune
    \n
    113
    \n
    114#endif // #ifndef DUNE_GEOGRID_INDEXSETS_HH
    \n-\n-
    Provides base classes for index and id sets.
    \n-\n+\n+
    Provides base classes for index and id sets.
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n
    IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:153
    \n
    IndexType index(const typename Traits::template Codim< cc >::Entity &e) const
    Map entity to index. The result of calling this method with an entity that is not in the index set is...
    Definition indexidset.hh:113
    \n
    Export the type of the entity used as parameter in the index(...) method.
    Definition indexidset.hh:87
    \n
    DUNE-conform implementation of the entity.
    Definition geometrygrid/entity.hh:694
    \n
    Definition geometrygrid/indexsets.hh:29
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07289.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07289.html", "unified_diff": "@@ -76,16 +76,16 @@\n \n
    intersection.hh File Reference
    \n \n

    \n Classes

    class  Dune::GeoGrid::IndexSet< Grid, HostIndexSet >
     
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07289_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07289_source.html", "unified_diff": "@@ -86,16 +86,16 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTA_INTERSECTION_HH
    \n
    6#define DUNE_ALBERTA_INTERSECTION_HH
    \n
    7
    \n \n
    9
    \n-\n-\n+\n+\n \n
    13
    \n
    14#if HAVE_ALBERTA
    \n
    15
    \n
    16namespace Dune
    \n
    17{
    \n
    18
    \n@@ -273,16 +273,16 @@\n \n
    185
    \n
    186} // namespace Dune
    \n
    187
    \n
    188#endif // #if HAVE_ALBERTA
    \n
    189
    \n
    190#endif // #ifndef DUNE_ALBERTA_INTERSECTION_HH
    \n-
    provides a wrapper for ALBERTA's el_info structure
    \n-\n+\n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n \n
    int twistInNeighbor(int face) const
    Definition elementinfo.hh:612
    \n
    Definition albertagrid/intersection.hh:105
    \n
    LocalGeometry geometryInOutside() const
    Definition intersection.cc:402
    \n
    GridImp::template Codim< 0 >::Entity outside() const
    Definition intersection.cc:365
    \n
    AlbertaGridLeafIntersection(const This &other)
    Definition albertagrid/intersection.hh:146
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -206,17 +206,17 @@\n 184 };\n 185\n 186} // namespace Dune\n 187\n 188#endif // #if HAVE_ALBERTA\n 189\n 190#endif // #ifndef DUNE_ALBERTA_INTERSECTION_HH\n+_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n provides a wrapper for ALBERTA's el_info structure\n-_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\bw_\bi_\bs_\bt_\bI_\bn_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br\n int twistInNeighbor(int face) const\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:612\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07295.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07295.html", "unified_diff": "@@ -75,16 +75,16 @@\n
    \n \n
    intersection.hh File Reference
    \n
    \n

    \n Classes

    class  Dune::AlbertaGridIntersectionBase< Grid >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07295_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07295_source.html", "unified_diff": "@@ -84,16 +84,16 @@\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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GEOGRID_INTERSECTION_HH
    \n
    6#define DUNE_GEOGRID_INTERSECTION_HH
    \n
    7
    \n-\n-\n+\n+\n
    10
    \n
    11namespace Dune
    \n
    12{
    \n
    13
    \n
    14 namespace GeoGrid
    \n
    15 {
    \n
    16
    \n@@ -304,16 +304,16 @@\n
    \n
    186
    \n
    187 } // namespace GeoGrid
    \n
    188
    \n
    189} // namespace Dune
    \n
    190
    \n
    191#endif // #ifndef DUNE_GEOGRID_INTERSECTION_HH
    \n-\n-\n+\n+\n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo) -> decltype(referenceElement(geo, geo.impl()))
    Definition common/geometry.hh:558
    \n
    Grid abstract base class.
    Definition common/grid.hh:375
    \n
    Definition cornerstorage.hh:123
    \n
    Definition geometrygrid/intersection.hh:22
    \n
    FieldVector< ctype, dimensionworld > integrationOuterNormal(const FieldVector< ctype, dimension-1 > &local) const
    Definition geometrygrid/intersection.hh:126
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -206,16 +206,16 @@\n 185 };\n 186\n 187 } // namespace GeoGrid\n 188\n 189} // namespace Dune\n 190\n 191#endif // #ifndef DUNE_GEOGRID_INTERSECTION_HH\n-_\bc_\bo_\br_\bn_\be_\br_\bs_\bt_\bo_\br_\ba_\bg_\be_\b._\bh_\bh\n _\bd_\be_\bc_\bl_\ba_\br_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bc_\bo_\br_\bn_\be_\br_\bs_\bt_\bo_\br_\ba_\bg_\be_\b._\bh_\bh\n _\bs_\bt_\bd\n STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n auto referenceElement(const Geometry< mydim, cdim, GridImp, GeometryImp > &geo)\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07307.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07307.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    persistentcontainer.hh File Reference
    \n \n

    \n Classes

    class  Dune::GeoGrid::Intersection< Grid, HostIntersection >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07307_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07307_source.html", "unified_diff": "@@ -87,15 +87,15 @@\n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTA_PERSISTENTCONTAINER_HH
    \n
    6#define DUNE_ALBERTA_PERSISTENTCONTAINER_HH
    \n
    7
    \n \n
    9
    \n
    10#if HAVE_ALBERTA
    \n-\n+\n
    12
    \n
    13namespace Dune
    \n
    14{
    \n
    15
    \n
    16 // PersistentContainer for AlbertaGrid
    \n
    17 // -----------------------------------
    \n
    18
    \n@@ -119,15 +119,15 @@\n \n
    33
    \n
    34} // end namespace Dune
    \n
    35
    \n
    36#endif // #if HAVE_ALBERTA
    \n
    37
    \n
    38#endif // #ifndef DUNE_ALU_PERSISTENTCONTAINER_HH
    \n-\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n
    PersistentContainer(const Grid &grid, int codim, const Value &value=Value())
    Definition albertagrid/persistentcontainer.hh:29
    \n
    Base::Grid Grid
    Definition albertagrid/persistentcontainer.hh:26
    \n
    Base::Value Value
    Definition albertagrid/persistentcontainer.hh:27
    \n
    A class for storing data during an adaptation cycle.
    Definition utility/persistentcontainer.hh:22
    \n
    Base::Value Value
    Definition utility/persistentcontainer.hh:27
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07310.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07310.html", "unified_diff": "@@ -75,17 +75,17 @@\n
    \n \n
    persistentcontainer.hh File Reference
    \n
    \n

    \n Classes

    class  Dune::PersistentContainer< AlbertaGrid< dim, dimworld >, T >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07310_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07310_source.html", "unified_diff": "@@ -84,17 +84,17 @@\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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GEOGRID_PERSISTENTCONTAINER_HH
    \n
    6#define DUNE_GEOGRID_PERSISTENTCONTAINER_HH
    \n
    7
    \n-\n+\n \n-\n+\n
    11
    \n
    12namespace Dune
    \n
    13{
    \n
    14
    \n
    15 // PersistentContainer for GeometryGrid
    \n
    16 // ------------------------------------
    \n
    17
    \n@@ -116,16 +116,16 @@\n
    \n
    31 };
    \n \n
    32
    \n
    33} // namespace Dune
    \n
    34
    \n
    35#endif // #ifndef DUNE_GEOGRID_PERSISTENTCONTAINER_HH
    \n-\n-\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    grid wrapper replacing the geometries
    Definition geometrygrid/grid.hh:86
    \n
    Base::Value Value
    Definition geometrygrid/persistentcontainer.hh:26
    \n
    Base::Grid Grid
    Definition geometrygrid/persistentcontainer.hh:25
    \n
    PersistentContainer(const Grid &grid, int codim, const Value &value=Value())
    Definition geometrygrid/persistentcontainer.hh:28
    \n
    A class for storing data during an adaptation cycle.
    Definition utility/persistentcontainer.hh:22
    \n
    Base::Value Value
    Definition utility/persistentcontainer.hh:27
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07313.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07313.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Namespaces |\n Functions\n
    persistentcontainer.hh File Reference
    \n \n

    \n Classes

    class  Dune::PersistentContainer< GeometryGrid< HostGrid, CoordFunction, Allocator >, T >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07313_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07313_source.html", "unified_diff": "@@ -86,15 +86,15 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_PERSISTENTCONTAINER_HH
    \n
    6#define DUNE_PERSISTENTCONTAINER_HH
    \n
    7
    \n
    8#include <map>
    \n
    9
    \n-\n+\n
    11
    \n
    12namespace Dune
    \n
    13{
    \n
    14
    \n
    19 template< class G, class T >
    \n
    \n \n@@ -172,15 +172,15 @@\n
    85 a.swap( b );
    \n
    86 }
    \n
    \n
    87
    \n
    88} // namespace std
    \n
    89
    \n
    90#endif // #ifndef DUNE_PERSISTENTCONTAINER_HH
    \n-\n+\n
    STL namespace.
    \n
    void swap(Dune::PersistentContainer< G, T > &a, Dune::PersistentContainer< G, T > &b)
    Definition utility/persistentcontainer.hh:83
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    A class for storing data during an adaptation cycle.
    Definition utility/persistentcontainer.hh:22
    \n
    Base::Value Value
    Definition utility/persistentcontainer.hh:27
    \n
    Base::Grid Grid
    Definition utility/persistentcontainer.hh:26
    \n
    PersistentContainer(const Grid &grid, int codim, const Value &value=Value())
    Definition utility/persistentcontainer.hh:29
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07316.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07316.html", "unified_diff": "@@ -76,17 +76,17 @@\n \n
    projection.hh File Reference
    \n \n

    \n Classes

    class  Dune::PersistentContainer< G, T >
     A class for storing data during an adaptation cycle. More...
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07316_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07316_source.html", "unified_diff": "@@ -86,18 +86,18 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_ALBERTA_NODEPROJECTION_HH
    \n
    6#define DUNE_ALBERTA_NODEPROJECTION_HH
    \n
    7
    \n
    8#include <memory>
    \n
    9
    \n-\n+\n
    11
    \n-\n-\n+\n+\n
    14
    \n
    15#if HAVE_ALBERTA
    \n
    16
    \n
    17namespace Dune
    \n
    18{
    \n
    19
    \n
    20 namespace Alberta
    \n@@ -320,15 +320,15 @@\n
    201
    \n
    202
    \n
    203 // BasicNodeProjection
    \n
    204 // -------------------
    \n
    205
    \n
    \n \n-
    207 : public ALBERTA NODE_PROJECTION
    \n+
    207 : public ALBERTA NODE_PROJECTION
    \n
    208 {
    \n
    \n
    209 explicit BasicNodeProjection ( unsigned int boundaryIndex )
    \n
    210 : boundaryIndex_( boundaryIndex )
    \n
    211 {
    \n
    212 func = 0;
    \n
    213 }
    \n@@ -401,18 +401,18 @@\n
    270 }
    \n
    271
    \n
    272}
    \n
    273
    \n
    274#endif // #if HAVE_ALBERTA
    \n
    275
    \n
    276#endif // #ifndef DUNE_ALBERTA_NODEPROJECTION_HH
    \n-\n-
    provides a wrapper for ALBERTA's el_info structure
    \n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+\n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    ALBERTA REAL_B LocalVector
    Definition misc.hh:49
    \n
    static const int dimWorld
    Definition misc.hh:46
    \n
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n \n
    static ElementInfo createFake(const MeshPointer &mesh, const Element *element, int level, int type=0)
    Definition elementinfo.hh:752
    \n
    Definition misc.hh:231
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -289,20 +289,20 @@\n 271\n 272}\n 273\n 274#endif // #if HAVE_ALBERTA\n 275\n 276#endif // #ifndef DUNE_ALBERTA_NODEPROJECTION_HH\n _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n-provides a wrapper for ALBERTA's el_info structure\n _\bm_\bi_\bs_\bc_\b._\bh_\bh\n _\bA_\bL_\bB_\bE_\bR_\bT_\bA\n #define ALBERTA\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n ALBERTA REAL_B LocalVector\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:49\n _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07319.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07319.html", "unified_diff": "@@ -77,16 +77,16 @@\n Classes |\n Namespaces |\n Functions
    \n
    projection.hh File Reference
    \n
    \n

    \n Classes

    class  Dune::Alberta::DuneBoundaryProjection< dim >
     
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07319_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07319_source.html", "unified_diff": "@@ -86,16 +86,16 @@\n
    3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_DGF_PROJECTIONBLOCK_HH
    \n
    6#define DUNE_DGF_PROJECTIONBLOCK_HH
    \n
    7
    \n
    8#include <map>
    \n
    9
    \n-\n-\n+\n+\n
    12
    \n
    13namespace Dune
    \n
    14{
    \n
    15
    \n
    16 namespace dgf
    \n
    17 {
    \n
    18
    \n@@ -353,16 +353,16 @@\n
    250 }
    \n
    251
    \n
    252 }
    \n
    253
    \n
    254}
    \n
    255
    \n
    256#endif // #ifndef DUNE_DGF_PROJECTIONBLOCK_HH
    \n-\n-\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    std::ostream & operator<<(std::ostream &out, const IntervalBlock::Interval &interval)
    Definition interval.hh:123
    \n
    Interface class for vertex projection at the boundary.
    Definition boundaryprojection.hh:33
    \n
    FieldVector< double, dimworld > CoordinateType
    type of coordinate vector
    Definition boundaryprojection.hh:42
    \n
    Definition basic.hh:31
    \n
    std::stringstream line
    Definition basic.hh:47
    \n
    Definition io/file/dgfparser/blocks/projection.hh:24
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07322.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07322.html", "unified_diff": "@@ -85,15 +85,15 @@\n
    #include <array>
    \n #include <memory>
    \n #include <vector>
    \n #include <tuple>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/common/fvector.hh>
    \n #include <dune/grid/common/gridfactory.hh>
    \n-#include <dune/grid/utility/multiindex.hh>
    \n+#include <dune/grid/utility/multiindex.hh>
    \n #include <dune/grid/utility/structuredgridfactory.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::dgf::ProjectionBlock
     
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07322_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07322_source.html", "unified_diff": "@@ -93,15 +93,15 @@\n
    15#include <memory>
    \n
    16#include <vector>
    \n
    17#include <tuple>
    \n
    18
    \n
    19#include <dune/common/exceptions.hh>
    \n
    20#include <dune/common/fvector.hh>
    \n \n-\n+\n \n
    24
    \n
    25#if HAVE_ALBERTA
    \n
    26
    \n
    27namespace Dune
    \n
    28{
    \n
    29 // Forward Declarations
    \n@@ -286,15 +286,15 @@\n \n
    225
    \n
    226} // end namespace Dune
    \n
    227
    \n
    228#endif // HAVE_ALBERTA
    \n
    229
    \n
    230#endif // DUNE_ALBERTA_STRUCTUREDGRIDFACTORY_HH
    \n-
    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various facto...
    \n+
    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various facto...
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    [ provides Dune::Grid ]
    Definition agrid.hh:109
    \n
    GridFamily::ctype ctype
    Definition agrid.hh:143
    \n
    Construct structured cube and simplex grids in unstructured grid managers.
    Definition utility/structuredgridfactory.hh:31
    \n
    static void createSimplexGrid(GridFactory< GridType > &factory, const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    insert structured simplex grid into grid factory
    Definition utility/structuredgridfactory.hh:181
    \n
    static std::array< unsigned int, dim > computeUnitOffsets(const std::array< unsigned int, dim > &vertices)
    Definition albertagrid/structuredgridfactory.hh:110
    \n
    static void createCubeGrid(GridFactory< GridType > &factory, const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Definition albertagrid/structuredgridfactory.hh:206
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07325.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07325.html", "unified_diff": "@@ -87,15 +87,15 @@\n #include <cstddef>
    \n #include <cstdlib>
    \n #include <memory>
    \n #include <dune/common/classname.hh>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/common/fvector.hh>
    \n #include <dune/grid/common/gridfactory.hh>
    \n-#include <dune/grid/utility/multiindex.hh>
    \n+#include <dune/grid/utility/multiindex.hh>
    \n \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::StructuredGridFactory< AlbertaGrid< dim, dimworld > >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07325_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07325_source.html", "unified_diff": "@@ -95,15 +95,15 @@\n
    16#include <memory>
    \n
    17
    \n
    18#include <dune/common/classname.hh>
    \n
    19#include <dune/common/exceptions.hh>
    \n
    20#include <dune/common/fvector.hh>
    \n
    21
    \n \n-\n+\n
    24
    \n
    25namespace Dune {
    \n
    26
    \n
    29 template <class GridType>
    \n
    \n \n
    31 {
    \n@@ -299,15 +299,15 @@\n
    260
    \n
    261 };
    \n
    \n
    262
    \n
    263} // namespace Dune
    \n
    264
    \n
    265#endif
    \n-
    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various facto...
    \n+
    Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various facto...
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Construct structured cube and simplex grids in unstructured grid managers.
    Definition utility/structuredgridfactory.hh:31
    \n
    static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured cube grid.
    Definition utility/structuredgridfactory.hh:157
    \n
    static void createSimplexGrid(GridFactory< GridType > &factory, const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    insert structured simplex grid into grid factory
    Definition utility/structuredgridfactory.hh:181
    \n
    static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    Create a structured simplex grid.
    Definition utility/structuredgridfactory.hh:251
    \n
    static void createCubeGrid(GridFactory< GridType > &factory, const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
    insert structured cube grid into grid factory
    Definition utility/structuredgridfactory.hh:91
    \n
    Communication comm() const
    Return the Communication used by the grid factory.
    Definition common/gridfactory.hh:297
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07328.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07328.html", "unified_diff": "@@ -86,28 +86,28 @@\n
    #include <iostream>
    \n #include <string>
    \n #include <vector>
    \n #include <dune/common/fvector.hh>
    \n #include <dune/common/typetraits.hh>
    \n #include <dune/common/typeutilities.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n-#include <dune/grid/common/exceptions.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/exceptions.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n-#include <dune/grid/common/datahandleif.hh>
    \n+#include <dune/grid/common/datahandleif.hh>
    \n #include <dune/grid/common/gridview.hh>
    \n-#include <dune/grid/common/defaultgridview.hh>
    \n+#include <dune/grid/common/defaultgridview.hh>
    \n #include <dune/grid/common/entityseed.hh>
    \n #include <dune/common/bartonnackmanifcheck.hh>
    \n #include "geometry.hh"
    \n #include "entity.hh"
    \n #include "intersection.hh"
    \n #include "intersectioniterator.hh"
    \n-#include "entityiterator.hh"
    \n-#include "indexidset.hh"
    \n+#include "entityiterator.hh"
    \n+#include "indexidset.hh"
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::StructuredGridFactory< GridType >
     Construct structured cube and simplex grids in unstructured grid managers. More...
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07328_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07328_source.html", "unified_diff": "@@ -98,20 +98,20 @@\n
    18#include <dune/common/typetraits.hh>
    \n
    19#include <dune/common/typeutilities.hh>
    \n
    20
    \n
    21// dune-geometry includes
    \n
    22#include <dune/geometry/type.hh>
    \n
    23
    \n
    24// local includes
    \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n
    32
    \n
    33// include this file after all other, because other files might undef the
    \n
    34// macros that are defined in that file
    \n
    35#include <dune/common/bartonnackmanifcheck.hh>
    \n
    36
    \n
    37namespace Dune {
    \n@@ -629,24 +629,24 @@\n \n
    1114}
    \n
    1115
    \n
    1116#include "geometry.hh"
    \n
    1117#include "entity.hh"
    \n
    1118#include "intersection.hh"
    \n
    1119#include "intersectioniterator.hh"
    \n-
    1120#include "entityiterator.hh"
    \n-
    1121#include "indexidset.hh"
    \n+
    1120#include "entityiterator.hh"
    \n+
    1121#include "indexidset.hh"
    \n
    1122
    \n
    1123#endif // #ifndef DUNE_GRID_COMMON_GRID_HH
    \n-\n-\n-\n-
    Provides base classes for index and id sets.
    \n-\n-
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+
    Describes the parallel communication interface class for MessageBuffers and DataHandles.
    \n+\n+\n+\n+\n+
    Provides base classes for index and id sets.
    \n
    InterfaceType
    Parameter to be used for the communication functions.
    Definition gridenums.hh:86
    \n
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    Definition geometryreference.hh:139
    \n
    Specialize with 'true' for all codims that a grid implements entities for. (default=false)
    Definition common/capabilities.hh:58
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -518,23 +518,23 @@\n 1117#include \"_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh\"\n 1118#include \"_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 1119#include \"_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n 1120#include \"_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\"\n 1121#include \"_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\"\n 1122\n 1123#endif // #ifndef DUNE_GRID_COMMON_GRID_HH\n-_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n+Describes the parallel communication interface class for MessageBuffers and\n+DataHandles.\n+_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bh\n _\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n _\bd_\be_\bf_\ba_\bu_\bl_\bt_\bg_\br_\bi_\bd_\bv_\bi_\be_\bw_\b._\bh_\bh\n _\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n Provides base classes for index and id sets.\n-_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bh\n-_\bd_\ba_\bt_\ba_\bh_\ba_\bn_\bd_\bl_\be_\bi_\bf_\b._\bh_\bh\n-Describes the parallel communication interface class for MessageBuffers and\n-DataHandles.\n _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bT_\by_\bp_\be\n InterfaceType\n Parameter to be used for the communication functions.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:86\n _\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n dim, dimworld, ct, GridFamily > &grid)\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07331.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07331.html", "unified_diff": "@@ -82,15 +82,15 @@\n \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::Grid< dim, dimworld, ct, GridFamily >
     Grid abstract base class. More...
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07331_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07331_source.html", "unified_diff": "@@ -94,15 +94,15 @@\n
    11
    \n \n
    13
    \n \n \n \n \n-\n+\n \n
    20
    \n
    21namespace Dune
    \n
    22{
    \n
    23
    \n
    24 // DefaultCoordFunction
    \n
    25 // --------------------
    \n@@ -498,15 +498,15 @@\n
    679
    \n
    681 };
    \n \n
    682
    \n
    683} // namespace Dune
    \n
    684
    \n
    685#endif // #ifndef DUNE_GEOGRID_GRID_HH
    \n-\n+\n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Store a reference to an entity with a minimal memory footprint.
    Definition common/entityseed.hh:26
    \n
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n
    Definition common/grid.hh:862
    \n
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n
    Definition geometrygrid/backuprestore.hh:27
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07337.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07337.html", "unified_diff": "@@ -91,15 +91,15 @@\n #include <dune/common/classname.hh>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/common/fvector.hh>
    \n #include <dune/common/hybridutilities.hh>
    \n #include <dune/geometry/multilineargeometry.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/mcmgmapper.hh>
    \n+#include <dune/grid/common/mcmgmapper.hh>
    \n \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::DefaultCoordFunction< HostGrid >
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a07337_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a07337_source.html", "unified_diff": "@@ -103,15 +103,15 @@\n
    20#include <dune/common/fvector.hh>
    \n
    21#include <dune/common/hybridutilities.hh>
    \n
    22
    \n
    23#include <dune/geometry/multilineargeometry.hh>
    \n
    24#include <dune/geometry/referenceelements.hh>
    \n
    25#include <dune/geometry/type.hh>
    \n
    26
    \n-\n+\n
    28
    \n
    29namespace Dune {
    \n
    30
    \n
    32 template<class ctype>
    \n
    \n
    33 struct EntityInfo {
    \n
    35 std::size_t count;
    \n@@ -313,15 +313,15 @@\n
    277 }
    \n
    \n
    278
    \n
    279} // namespace Dune
    \n
    280
    \n
    281
    \n
    282#endif // DUNE_GRID_UTILITY_GRIDINFO_HH
    \n-
    Mapper for multiple codim and multiple geometry types.
    \n+
    Mapper for multiple codim and multiple geometry types.
    \n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    void fillGridViewInfoSerial(const GV &gv, GridViewInfo< typename GV::ctype > &gridViewInfo)
    fill a GridViewInfo structure from a serial grid
    Definition utility/gridinfo.hh:214
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n
    GridImp::template Codim< cd >::Geometry Geometry
    The corresponding geometry type.
    Definition common/entity.hh:100
    \n
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n
    auto size(GeometryType type) const
    Return total number of entities of given geometry type in entity set .
    Definition indexidset.hh:223
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000000_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000000_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    albertagrid → common Relation

    \n Classes

    struct  Dune::EntityInfo< ctype >
     Structure to hold statistical information about one type of entity. More...
    File in dune/grid/albertagridIncludes file in dune/grid/common
    agrid.hhadaptcallback.hh
    agrid.hhcommon/grid.hh
    agrid.hhcommon/gridfactory.hh
    agrid.hhsizecache.hh
    albertagrid/backuprestore.hhcommon/backuprestore.hh
    albertagrid/capabilities.hhcommon/capabilities.hh
    albertagrid/datahandle.hhcommon/grid.hh
    albertagrid/dgfparser.hhcommon/intersection.hh
    albertagrid/entity.hhcommon/entity.hh
    albertagrid/geometry.hhcommon/geometry.hh
    albertagrid/gridfactory.hhcommon/gridfactory.hh
    albertagrid/gridfamily.hhcommon/entity.hh
    albertagrid/gridfamily.hhcommon/geometry.hh
    albertagrid/gridfamily.hhcommon/intersection.hh
    albertagrid/gridfamily.hhcommon/intersectioniterator.hh
    albertagrid/gridfamily.hhentityiterator.hh
    albertagrid/gridview.hhcommon/capabilities.hh
    albertagrid/gridview.hhcommon/gridview.hh
    albertagrid/indexsets.hhcommon/grid.hh
    albertagrid/indexsets.hhindexidset.hh
    albertagrid/intersection.hhcommon/intersection.hh
    albertagrid/intersectioniterator.hhcommon/intersectioniterator.hh
    albertagrid/projection.hhboundaryprojection.hh
    albertagrid/structuredgridfactory.hhcommon/gridfactory.hh
    albertareader.hhcommon/grid.hh
    albertareader.hhcommon/gridfactory.hh
    geometryreference.hhcommon/geometry.hh
    hierarchiciterator.hhentityiterator.hh
    leafiterator.hhentityiterator.hh
    leveliterator.hhentityiterator.hh
    macrodata.ccexceptions.hh
    \n+

    albertagrid → common Relation

    File in dune/grid/albertagridIncludes file in dune/grid/common
    agrid.hhadaptcallback.hh
    agrid.hhcommon/grid.hh
    agrid.hhcommon/gridfactory.hh
    agrid.hhsizecache.hh
    albertagrid/backuprestore.hhcommon/backuprestore.hh
    albertagrid/capabilities.hhcommon/capabilities.hh
    albertagrid/datahandle.hhcommon/grid.hh
    albertagrid/dgfparser.hhcommon/intersection.hh
    albertagrid/entity.hhcommon/entity.hh
    albertagrid/geometry.hhcommon/geometry.hh
    albertagrid/gridfactory.hhcommon/gridfactory.hh
    albertagrid/gridfamily.hhcommon/entity.hh
    albertagrid/gridfamily.hhcommon/geometry.hh
    albertagrid/gridfamily.hhcommon/intersection.hh
    albertagrid/gridfamily.hhcommon/intersectioniterator.hh
    albertagrid/gridfamily.hhentityiterator.hh
    albertagrid/gridview.hhcommon/capabilities.hh
    albertagrid/gridview.hhcommon/gridview.hh
    albertagrid/indexsets.hhcommon/grid.hh
    albertagrid/indexsets.hhindexidset.hh
    albertagrid/intersection.hhcommon/intersection.hh
    albertagrid/intersectioniterator.hhcommon/intersectioniterator.hh
    albertagrid/projection.hhboundaryprojection.hh
    albertagrid/structuredgridfactory.hhcommon/gridfactory.hh
    albertareader.hhcommon/grid.hh
    albertareader.hhcommon/gridfactory.hh
    geometryreference.hhcommon/geometry.hh
    hierarchiciterator.hhentityiterator.hh
    leafiterator.hhentityiterator.hh
    leveliterator.hhentityiterator.hh
    macrodata.ccexceptions.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000000_000012.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000000_000012.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    albertagrid → io Relation

    File in dune/grid/albertagridIncludes file in dune/grid/io
    albertagrid/dgfparser.hhfile / dgfparser / blocks / io/file/dgfparser/blocks/projection.hh
    albertagrid/dgfparser.hhfile / dgfparser / io/file/dgfparser/dgfparser.hh
    albertagrid/dgfparser.hhfile / dgfparser / parser.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000000_000015.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000000_000015.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    albertagrid → utility Relation

    File in dune/grid/albertagridIncludes file in dune/grid/utility
    albertagrid/persistentcontainer.hhpersistentcontainervector.hh
    albertagrid/persistentcontainer.hhutility/persistentcontainer.hh
    albertagrid/structuredgridfactory.hhmultiindex.hh
    albertagrid/structuredgridfactory.hhutility/structuredgridfactory.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000001_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000001_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    blocks → common Relation

    File in dune/grid/io/file/dgfparser/blocksIncludes file in dune/grid/common
    io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    \n+

    blocks → common Relation

    File in dune/grid/io/file/dgfparser/blocksIncludes file in dune/grid/common
    io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000002_000012.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000002_000012.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    common → io Relation

    File in dune/grid/commonIncludes file in dune/grid/io
    boundaryprojection.hhfile / gmshreader.hh
    \n+

    common → io Relation

    File in dune/grid/commonIncludes file in dune/grid/io
    boundaryprojection.hhfile / gmshreader.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000003_000001.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000003_000001.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    dgfparser → blocks Relation

    File in dune/grid/io/file/dgfparserIncludes file in dune/grid/io/file/dgfparser/blocks
    dgfgeogrid.hhio/file/dgfparser/blocks/projection.hh
    dgfug.hhgridparameter.hh
    io/file/dgfparser/dgfparser.ccboundarydom.hh
    io/file/dgfparser/dgfparser.hhbasic.hh
    io/file/dgfparser/dgfparser.hhboundarydom.hh
    io/file/dgfparser/dgfparser.hhboundaryseg.hh
    io/file/dgfparser/dgfparser.hhcube.hh
    io/file/dgfparser/dgfparser.hhdim.hh
    io/file/dgfparser/dgfparser.hhgeneral.hh
    io/file/dgfparser/dgfparser.hhgridparameter.hh
    io/file/dgfparser/dgfparser.hhinterval.hh
    io/file/dgfparser/dgfparser.hhio/file/dgfparser/blocks/projection.hh
    io/file/dgfparser/dgfparser.hhperiodicfacetrans.hh
    io/file/dgfparser/dgfparser.hhpolygon.hh
    io/file/dgfparser/dgfparser.hhpolyhedron.hh
    io/file/dgfparser/dgfparser.hhsimplex.hh
    io/file/dgfparser/dgfparser.hhsimplexgeneration.hh
    io/file/dgfparser/dgfparser.hhvertex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000003_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000003_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    dgfparser → common Relation

    File in dune/grid/io/file/dgfparserIncludes file in dune/grid/common
    dgfgeogrid.hhcommon/intersection.hh
    dgfgridfactory.hhcommon/intersection.hh
    dgfoned.hhcommon/intersection.hh
    dgfug.hhcommon/intersection.hh
    dgfwriter.hhcommon/grid.hh
    dgfwriter.hhrangegenerators.hh
    dgfyasp.hhcommon/intersection.hh
    gridptr.hhcommon/intersection.hh
    gridptr.hhdatahandleif.hh
    gridptr.hhgridenums.hh
    gridptr.hhpartitionset.hh
    gridptr.hhrangegenerators.hh
    blocks / io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    io/file/dgfparser/dgfparser.hhdatahandleif.hh
    io/file/dgfparser/dgfparser.hhgridenums.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000003_000015.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000003_000015.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    dgfparser → utility Relation

    File in dune/grid/io/file/dgfparserIncludes file in dune/grid/utility
    dgfgeogrid.hhhostgridaccess.hh
    dgfidentitygrid.hhhostgridaccess.hh
    \n+

    dgfparser → utility Relation

    File in dune/grid/io/file/dgfparserIncludes file in dune/grid/utility
    dgfgeogrid.hhhostgridaccess.hh
    dgfidentitygrid.hhhostgridaccess.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n \n+

    file → common Relation

    File in dune/grid/io/fileIncludes file in dune/grid/common
    dgfparser / dgfgeogrid.hhcommon/intersection.hh
    dgfparser / dgfgridfactory.hhcommon/intersection.hh
    dgfparser / dgfoned.hhcommon/intersection.hh
    dgfparser / dgfug.hhcommon/intersection.hh
    dgfparser / dgfwriter.hhcommon/grid.hh
    dgfparser / dgfwriter.hhrangegenerators.hh
    dgfparser / dgfyasp.hhcommon/intersection.hh
    gmshreader.hhboundarysegment.hh
    gmshreader.hhcommon/gridfactory.hh
    gmshwriter.hhcommon/grid.hh
    gmshwriter.hhmcmgmapper.hh
    gnuplot.hhcommon/grid.hh
    dgfparser / gridptr.hhcommon/intersection.hh
    dgfparser / gridptr.hhdatahandleif.hh
    dgfparser / gridptr.hhgridenums.hh
    dgfparser / gridptr.hhpartitionset.hh
    dgfparser / gridptr.hhrangegenerators.hh
    dgfparser / blocks / io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    dgfparser / io/file/dgfparser/dgfparser.hhdatahandleif.hh
    dgfparser / io/file/dgfparser/dgfparser.hhgridenums.hh
    printgrid.hhmcmgmapper.hh
    starcdreader.hhcommon/gridfactory.hh
    vtk / function.hhmcmgmapper.hh
    vtk / volumeiterators.hhgridenums.hh
    vtk / vtkwriter.hhmcmgmapper.hh
    vtk / vtkwriter.hhgridenums.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000003.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000003.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    file → dgfparser Relation

    File in dune/grid/io/fileIncludes file in dune/grid/io/file/dgfparser
    dgfparser / dgfgeogrid.hhblocks / io/file/dgfparser/blocks/projection.hh
    dgfparser / dgfug.hhblocks / gridparameter.hh
    io/file/dgfparser.hhdgfgeogrid.hh
    io/file/dgfparser.hhdgfidentitygrid.hh
    io/file/dgfparser.hhdgfoned.hh
    io/file/dgfparser.hhdgfug.hh
    io/file/dgfparser.hhdgfyasp.hh
    io/file/dgfparser.hhio/file/dgfparser/dgfparser.hh
    dgfparser / io/file/dgfparser/dgfparser.ccblocks / boundarydom.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / basic.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / boundarydom.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / boundaryseg.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / cube.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / dim.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / general.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / gridparameter.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / interval.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / io/file/dgfparser/blocks/projection.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / periodicfacetrans.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / polygon.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / polyhedron.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / simplex.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / simplexgeneration.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / vertex.hh
    \n+

    file → dgfparser Relation

    File in dune/grid/io/fileIncludes file in dune/grid/io/file/dgfparser
    dgfparser / dgfgeogrid.hhblocks / io/file/dgfparser/blocks/projection.hh
    dgfparser / dgfug.hhblocks / gridparameter.hh
    io/file/dgfparser.hhdgfgeogrid.hh
    io/file/dgfparser.hhdgfidentitygrid.hh
    io/file/dgfparser.hhdgfoned.hh
    io/file/dgfparser.hhdgfug.hh
    io/file/dgfparser.hhdgfyasp.hh
    io/file/dgfparser.hhio/file/dgfparser/dgfparser.hh
    dgfparser / io/file/dgfparser/dgfparser.ccblocks / boundarydom.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / basic.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / boundarydom.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / boundaryseg.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / cube.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / dim.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / general.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / gridparameter.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / interval.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / io/file/dgfparser/blocks/projection.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / periodicfacetrans.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / polygon.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / polyhedron.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / simplex.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / simplexgeneration.hh
    dgfparser / io/file/dgfparser/dgfparser.hhblocks / vertex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000009.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000009.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    file → gnuplot Relation

    File in dune/grid/io/fileIncludes file in dune/grid/io/file/gnuplot
    gnuplot.hhgnuplot.cc
    \n+

    file → gnuplot Relation

    File in dune/grid/io/fileIncludes file in dune/grid/io/file/gnuplot
    gnuplot.hhgnuplot.cc
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000015.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000015.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    file → utility Relation

    File in dune/grid/io/fileIncludes file in dune/grid/utility
    dgfparser / dgfgeogrid.hhhostgridaccess.hh
    dgfparser / dgfidentitygrid.hhhostgridaccess.hh
    \n+

    file → utility Relation

    File in dune/grid/io/fileIncludes file in dune/grid/utility
    dgfparser / dgfgeogrid.hhhostgridaccess.hh
    dgfparser / dgfidentitygrid.hhhostgridaccess.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000017.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000007_000017.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    file → vtk Relation

    File in dune/grid/io/fileIncludes file in dune/grid/io/file/vtk
    vtk.hhboundarywriter.hh
    vtk.hhsubsamplingvtkwriter.hh
    vtk.hhvolumewriter.hh
    vtk.hhvtksequencewriter.hh
    vtk.hhvtkwriter.hh
    \n+

    file → vtk Relation

    File in dune/grid/io/fileIncludes file in dune/grid/io/file/vtk
    vtk.hhboundarywriter.hh
    vtk.hhsubsamplingvtkwriter.hh
    vtk.hhvolumewriter.hh
    vtk.hhvtksequencewriter.hh
    vtk.hhvtkwriter.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000008_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000008_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    geometrygrid → common Relation

    File in dune/grid/geometrygridIncludes file in dune/grid/common
    cachedcoordfunction.hhgridenums.hh
    geometrygrid/backuprestore.hhcommon/backuprestore.hh
    geometrygrid/capabilities.hhcommon/capabilities.hh
    geometrygrid/datahandle.hhcommon/grid.hh
    geometrygrid/datahandle.hhdatahandleif.hh
    geometrygrid/entity.hhcommon/grid.hh
    geometrygrid/entityseed.hhcommon/entityseed.hh
    geometrygrid/geometry.hhcommon/capabilities.hh
    geometrygrid/grid.hhcommon/grid.hh
    geometrygrid/gridfamily.hhcommon/grid.hh
    geometrygrid/gridview.hhcommon/capabilities.hh
    geometrygrid/gridview.hhcommon/gridview.hh
    geometrygrid/indexsets.hhgridenums.hh
    geometrygrid/indexsets.hhindexidset.hh
    hostcorners.hhcommon/entity.hh
    idset.hhindexidset.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000008_000015.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000008_000015.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    geometrygrid → utility Relation

    File in dune/grid/geometrygridIncludes file in dune/grid/utility
    cachedcoordfunction.hhutility/persistentcontainer.hh
    geometrygrid/persistentcontainer.hhpersistentcontainerwrapper.hh
    geometrygrid/persistentcontainer.hhutility/persistentcontainer.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000000.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000000.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n \n+

    grid → albertagrid Relation

    File in dune/gridIncludes file in dune/grid/albertagrid
    albertagrid.hhagrid.hh
    albertagrid.hhalbertagrid/gridfactory.hh
    albertagrid.hhalbertagrid/persistentcontainer.hh
    albertagrid.hhalbertagrid/structuredgridfactory.hh
    io / file / io/file/dgfparser.hhalbertagrid/dgfparser.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    grid → common Relation

    File in dune/gridIncludes file in dune/grid/common
    albertagrid / agrid.hhadaptcallback.hh
    albertagrid / agrid.hhcommon/grid.hh
    albertagrid / agrid.hhcommon/gridfactory.hh
    albertagrid / agrid.hhsizecache.hh
    albertagrid / albertagrid/backuprestore.hhcommon/backuprestore.hh
    albertagrid / albertagrid/capabilities.hhcommon/capabilities.hh
    albertagrid / albertagrid/datahandle.hhcommon/grid.hh
    albertagrid / albertagrid/dgfparser.hhcommon/intersection.hh
    albertagrid / albertagrid/entity.hhcommon/entity.hh
    albertagrid / albertagrid/geometry.hhcommon/geometry.hh
    albertagrid / albertagrid/gridfactory.hhcommon/gridfactory.hh
    albertagrid / albertagrid/gridfamily.hhcommon/entity.hh
    albertagrid / albertagrid/gridfamily.hhcommon/geometry.hh
    albertagrid / albertagrid/gridfamily.hhcommon/intersection.hh
    albertagrid / albertagrid/gridfamily.hhcommon/intersectioniterator.hh
    albertagrid / albertagrid/gridfamily.hhentityiterator.hh
    albertagrid / albertagrid/gridview.hhcommon/capabilities.hh
    albertagrid / albertagrid/gridview.hhcommon/gridview.hh
    albertagrid / albertagrid/indexsets.hhcommon/grid.hh
    albertagrid / albertagrid/indexsets.hhindexidset.hh
    albertagrid / albertagrid/intersection.hhcommon/intersection.hh
    albertagrid / albertagrid/intersectioniterator.hhcommon/intersectioniterator.hh
    albertagrid / albertagrid/projection.hhboundaryprojection.hh
    albertagrid / albertagrid/structuredgridfactory.hhcommon/gridfactory.hh
    albertagrid / albertareader.hhcommon/grid.hh
    albertagrid / albertareader.hhcommon/gridfactory.hh
    geometrygrid / cachedcoordfunction.hhgridenums.hh
    io / file / dgfparser / dgfgeogrid.hhcommon/intersection.hh
    io / file / dgfparser / dgfgridfactory.hhcommon/intersection.hh
    io / file / dgfparser / dgfoned.hhcommon/intersection.hh
    io / file / dgfparser / dgfug.hhcommon/intersection.hh
    io / file / dgfparser / dgfwriter.hhcommon/grid.hh
    io / file / dgfparser / dgfwriter.hhrangegenerators.hh
    io / file / dgfparser / dgfyasp.hhcommon/intersection.hh
    geometrygrid / geometrygrid/backuprestore.hhcommon/backuprestore.hh
    geometrygrid / geometrygrid/capabilities.hhcommon/capabilities.hh
    geometrygrid / geometrygrid/datahandle.hhcommon/grid.hh
    geometrygrid / geometrygrid/datahandle.hhdatahandleif.hh
    geometrygrid / geometrygrid/entity.hhcommon/grid.hh
    geometrygrid / geometrygrid/entityseed.hhcommon/entityseed.hh
    geometrygrid / geometrygrid/geometry.hhcommon/capabilities.hh
    geometrygrid / geometrygrid/grid.hhcommon/grid.hh
    geometrygrid / geometrygrid/gridfamily.hhcommon/grid.hh
    geometrygrid / geometrygrid/gridview.hhcommon/capabilities.hh
    geometrygrid / geometrygrid/gridview.hhcommon/gridview.hh
    geometrygrid / geometrygrid/indexsets.hhgridenums.hh
    geometrygrid / geometrygrid/indexsets.hhindexidset.hh
    albertagrid / geometryreference.hhcommon/geometry.hh
    io / file / gmshreader.hhboundarysegment.hh
    io / file / gmshreader.hhcommon/gridfactory.hh
    io / file / gmshwriter.hhcommon/grid.hh
    io / file / gmshwriter.hhmcmgmapper.hh
    io / file / gnuplot.hhcommon/grid.hh
    io / file / dgfparser / gridptr.hhcommon/intersection.hh
    io / file / dgfparser / gridptr.hhdatahandleif.hh
    io / file / dgfparser / gridptr.hhgridenums.hh
    io / file / dgfparser / gridptr.hhpartitionset.hh
    io / file / dgfparser / gridptr.hhrangegenerators.hh
    albertagrid / hierarchiciterator.hhentityiterator.hh
    geometrygrid / hostcorners.hhcommon/entity.hh
    identitygrid.hhcommon/capabilities.hh
    identitygrid.hhcommon/grid.hh
    geometrygrid / idset.hhindexidset.hh
    io / file / dgfparser / blocks / io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    io / file / dgfparser / io/file/dgfparser/dgfparser.hhdatahandleif.hh
    io / file / dgfparser / io/file/dgfparser/dgfparser.hhgridenums.hh
    albertagrid / leafiterator.hhentityiterator.hh
    albertagrid / leveliterator.hhentityiterator.hh
    albertagrid / macrodata.ccexceptions.hh
    onedgrid.hhcommon/capabilities.hh
    onedgrid.hhcommon/grid.hh
    onedgrid.hhcommon/gridfactory.hh
    io / file / printgrid.hhmcmgmapper.hh
    io / file / starcdreader.hhcommon/gridfactory.hh
    uggrid.hhboundarysegment.hh
    uggrid.hhcommon/capabilities.hh
    uggrid.hhcommon/grid.hh
    yaspgrid.hhcommon/backuprestore.hh
    yaspgrid.hhcommon/capabilities.hh
    yaspgrid.hhcommon/grid.hh
    yaspgrid.hhdatahandleif.hh
    yaspgrid.hhindexidset.hh
    identitygrid / identitygridentity.hhcommon/grid.hh
    identitygrid / identitygridgeometry.hhcommon/geometry.hh
    identitygrid / identitygridindexsets.hhindexidset.hh
    identitygrid / identitygridintersectioniterator.hhcommon/intersection.hh
    identitygrid / identitygridleafiterator.hhgridenums.hh
    identitygrid / identitygridleveliterator.hhgridenums.hh
    uggrid / uggridfactory.hhboundarysegment.hh
    uggrid / uggridfactory.hhcommon/gridfactory.hh
    utility / entitycommhelper.hhgridenums.hh
    utility / globalindexset.hhgridenums.hh
    utility / globalindexset.hhdatahandleif.hh
    utility / utility/gridinfo.hhmcmgmapper.hh
    utility / hierarchicsearch.hhcommon/grid.hh
    utility / hierarchicsearch.hhgridenums.hh
    utility / parmetisgridpartitioner.hhmcmgmapper.hh
    utility / parmetisgridpartitioner.hhrangegenerators.hh
    utility / persistentcontainermap.hhcommon/capabilities.hh
    utility / utility/structuredgridfactory.hhcommon/gridfactory.hh
    utility / tensorgridfactory.hhcommon/gridfactory.hh
    io / file / vtk / function.hhmcmgmapper.hh
    io / file / vtk / volumeiterators.hhgridenums.hh
    io / file / vtk / vtkwriter.hhmcmgmapper.hh
    io / file / vtk / vtkwriter.hhgridenums.hh
    yaspgrid / yaspgrid/backuprestore.hhcommon/backuprestore.hh
    yaspgrid / torus.hhexceptions.hh
    \n+

    grid → common Relation

    File in dune/gridIncludes file in dune/grid/common
    albertagrid / agrid.hhadaptcallback.hh
    albertagrid / agrid.hhcommon/grid.hh
    albertagrid / agrid.hhcommon/gridfactory.hh
    albertagrid / agrid.hhsizecache.hh
    albertagrid / albertagrid/backuprestore.hhcommon/backuprestore.hh
    albertagrid / albertagrid/capabilities.hhcommon/capabilities.hh
    albertagrid / albertagrid/datahandle.hhcommon/grid.hh
    albertagrid / albertagrid/dgfparser.hhcommon/intersection.hh
    albertagrid / albertagrid/entity.hhcommon/entity.hh
    albertagrid / albertagrid/geometry.hhcommon/geometry.hh
    albertagrid / albertagrid/gridfactory.hhcommon/gridfactory.hh
    albertagrid / albertagrid/gridfamily.hhcommon/entity.hh
    albertagrid / albertagrid/gridfamily.hhcommon/geometry.hh
    albertagrid / albertagrid/gridfamily.hhcommon/intersection.hh
    albertagrid / albertagrid/gridfamily.hhcommon/intersectioniterator.hh
    albertagrid / albertagrid/gridfamily.hhentityiterator.hh
    albertagrid / albertagrid/gridview.hhcommon/capabilities.hh
    albertagrid / albertagrid/gridview.hhcommon/gridview.hh
    albertagrid / albertagrid/indexsets.hhcommon/grid.hh
    albertagrid / albertagrid/indexsets.hhindexidset.hh
    albertagrid / albertagrid/intersection.hhcommon/intersection.hh
    albertagrid / albertagrid/intersectioniterator.hhcommon/intersectioniterator.hh
    albertagrid / albertagrid/projection.hhboundaryprojection.hh
    albertagrid / albertagrid/structuredgridfactory.hhcommon/gridfactory.hh
    albertagrid / albertareader.hhcommon/grid.hh
    albertagrid / albertareader.hhcommon/gridfactory.hh
    geometrygrid / cachedcoordfunction.hhgridenums.hh
    io / file / dgfparser / dgfgeogrid.hhcommon/intersection.hh
    io / file / dgfparser / dgfgridfactory.hhcommon/intersection.hh
    io / file / dgfparser / dgfoned.hhcommon/intersection.hh
    io / file / dgfparser / dgfug.hhcommon/intersection.hh
    io / file / dgfparser / dgfwriter.hhcommon/grid.hh
    io / file / dgfparser / dgfwriter.hhrangegenerators.hh
    io / file / dgfparser / dgfyasp.hhcommon/intersection.hh
    geometrygrid / geometrygrid/backuprestore.hhcommon/backuprestore.hh
    geometrygrid / geometrygrid/capabilities.hhcommon/capabilities.hh
    geometrygrid / geometrygrid/datahandle.hhcommon/grid.hh
    geometrygrid / geometrygrid/datahandle.hhdatahandleif.hh
    geometrygrid / geometrygrid/entity.hhcommon/grid.hh
    geometrygrid / geometrygrid/entityseed.hhcommon/entityseed.hh
    geometrygrid / geometrygrid/geometry.hhcommon/capabilities.hh
    geometrygrid / geometrygrid/grid.hhcommon/grid.hh
    geometrygrid / geometrygrid/gridfamily.hhcommon/grid.hh
    geometrygrid / geometrygrid/gridview.hhcommon/capabilities.hh
    geometrygrid / geometrygrid/gridview.hhcommon/gridview.hh
    geometrygrid / geometrygrid/indexsets.hhgridenums.hh
    geometrygrid / geometrygrid/indexsets.hhindexidset.hh
    albertagrid / geometryreference.hhcommon/geometry.hh
    io / file / gmshreader.hhboundarysegment.hh
    io / file / gmshreader.hhcommon/gridfactory.hh
    io / file / gmshwriter.hhcommon/grid.hh
    io / file / gmshwriter.hhmcmgmapper.hh
    io / file / gnuplot.hhcommon/grid.hh
    io / file / dgfparser / gridptr.hhcommon/intersection.hh
    io / file / dgfparser / gridptr.hhdatahandleif.hh
    io / file / dgfparser / gridptr.hhgridenums.hh
    io / file / dgfparser / gridptr.hhpartitionset.hh
    io / file / dgfparser / gridptr.hhrangegenerators.hh
    albertagrid / hierarchiciterator.hhentityiterator.hh
    geometrygrid / hostcorners.hhcommon/entity.hh
    identitygrid.hhcommon/capabilities.hh
    identitygrid.hhcommon/grid.hh
    geometrygrid / idset.hhindexidset.hh
    io / file / dgfparser / blocks / io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    io / file / dgfparser / io/file/dgfparser/dgfparser.hhdatahandleif.hh
    io / file / dgfparser / io/file/dgfparser/dgfparser.hhgridenums.hh
    albertagrid / leafiterator.hhentityiterator.hh
    albertagrid / leveliterator.hhentityiterator.hh
    albertagrid / macrodata.ccexceptions.hh
    onedgrid.hhcommon/capabilities.hh
    onedgrid.hhcommon/grid.hh
    onedgrid.hhcommon/gridfactory.hh
    io / file / printgrid.hhmcmgmapper.hh
    io / file / starcdreader.hhcommon/gridfactory.hh
    uggrid.hhboundarysegment.hh
    uggrid.hhcommon/capabilities.hh
    uggrid.hhcommon/grid.hh
    yaspgrid.hhcommon/backuprestore.hh
    yaspgrid.hhcommon/capabilities.hh
    yaspgrid.hhcommon/grid.hh
    yaspgrid.hhdatahandleif.hh
    yaspgrid.hhindexidset.hh
    identitygrid / identitygridentity.hhcommon/grid.hh
    identitygrid / identitygridgeometry.hhcommon/geometry.hh
    identitygrid / identitygridindexsets.hhindexidset.hh
    identitygrid / identitygridintersectioniterator.hhcommon/intersection.hh
    identitygrid / identitygridleafiterator.hhgridenums.hh
    identitygrid / identitygridleveliterator.hhgridenums.hh
    uggrid / uggridfactory.hhboundarysegment.hh
    uggrid / uggridfactory.hhcommon/gridfactory.hh
    utility / entitycommhelper.hhgridenums.hh
    utility / globalindexset.hhgridenums.hh
    utility / globalindexset.hhdatahandleif.hh
    utility / utility/gridinfo.hhmcmgmapper.hh
    utility / hierarchicsearch.hhcommon/grid.hh
    utility / hierarchicsearch.hhgridenums.hh
    utility / parmetisgridpartitioner.hhmcmgmapper.hh
    utility / parmetisgridpartitioner.hhrangegenerators.hh
    utility / persistentcontainermap.hhcommon/capabilities.hh
    utility / utility/structuredgridfactory.hhcommon/gridfactory.hh
    utility / tensorgridfactory.hhcommon/gridfactory.hh
    io / file / vtk / function.hhmcmgmapper.hh
    io / file / vtk / volumeiterators.hhgridenums.hh
    io / file / vtk / vtkwriter.hhmcmgmapper.hh
    io / file / vtk / vtkwriter.hhgridenums.hh
    yaspgrid / yaspgrid/backuprestore.hhcommon/backuprestore.hh
    yaspgrid / torus.hhexceptions.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000008.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000008.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    grid → geometrygrid Relation

    File in dune/gridIncludes file in dune/grid/geometrygrid
    geometrygrid.hhgeometrygrid/grid.hh
    geometrygrid.hhgeometrygrid/persistentcontainer.hh
    utility / hostgridaccess.hhgeometrygrid/intersection.hh
    \n+

    grid → geometrygrid Relation

    File in dune/gridIncludes file in dune/grid/geometrygrid
    geometrygrid.hhgeometrygrid/grid.hh
    geometrygrid.hhgeometrygrid/persistentcontainer.hh
    utility / hostgridaccess.hhgeometrygrid/intersection.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000011.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000011.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n \n+

    grid → identitygrid Relation

    File in dune/gridIncludes file in dune/grid/identitygrid
    identitygrid.hhidentitygridentity.hh
    identitygrid.hhidentitygridentityseed.hh
    identitygrid.hhidentitygridgeometry.hh
    identitygrid.hhidentitygridhierarchiciterator.hh
    identitygrid.hhidentitygridindexsets.hh
    identitygrid.hhidentitygridintersectioniterator.hh
    identitygrid.hhidentitygridleafiterator.hh
    identitygrid.hhidentitygridleveliterator.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000018.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000010_000018.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n \n+

    grid → yaspgrid Relation

    File in dune/gridIncludes file in dune/grid/yaspgrid
    yaspgrid.hhcoordinates.hh
    yaspgrid.hhstructuredyaspgridfactory.hh
    yaspgrid.hhtorus.hh
    yaspgrid.hhyaspgrid/backuprestore.hh
    yaspgrid.hhyaspgridentity.hh
    yaspgrid.hhyaspgridentityseed.hh
    yaspgrid.hhyaspgridgeometry.hh
    yaspgrid.hhyaspgridhierarchiciterator.hh
    yaspgrid.hhyaspgrididset.hh
    yaspgrid.hhyaspgridindexsets.hh
    yaspgrid.hhyaspgridintersection.hh
    yaspgrid.hhyaspgridintersectioniterator.hh
    yaspgrid.hhyaspgridleveliterator.hh
    yaspgrid.hhyaspgridpersistentcontainer.hh
    yaspgrid.hhygrid.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000011_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000011_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    identitygrid → common Relation

    File in dune/grid/identitygridIncludes file in dune/grid/common
    identitygridentity.hhcommon/grid.hh
    identitygridgeometry.hhcommon/geometry.hh
    identitygridindexsets.hhindexidset.hh
    identitygridintersectioniterator.hhcommon/intersection.hh
    identitygridleafiterator.hhgridenums.hh
    identitygridleveliterator.hhgridenums.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000012_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000012_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n \n+

    io → common Relation

    File in dune/grid/ioIncludes file in dune/grid/common
    file / dgfparser / dgfgeogrid.hhcommon/intersection.hh
    file / dgfparser / dgfgridfactory.hhcommon/intersection.hh
    file / dgfparser / dgfoned.hhcommon/intersection.hh
    file / dgfparser / dgfug.hhcommon/intersection.hh
    file / dgfparser / dgfwriter.hhcommon/grid.hh
    file / dgfparser / dgfwriter.hhrangegenerators.hh
    file / dgfparser / dgfyasp.hhcommon/intersection.hh
    file / gmshreader.hhboundarysegment.hh
    file / gmshreader.hhcommon/gridfactory.hh
    file / gmshwriter.hhcommon/grid.hh
    file / gmshwriter.hhmcmgmapper.hh
    file / gnuplot.hhcommon/grid.hh
    file / dgfparser / gridptr.hhcommon/intersection.hh
    file / dgfparser / gridptr.hhdatahandleif.hh
    file / dgfparser / gridptr.hhgridenums.hh
    file / dgfparser / gridptr.hhpartitionset.hh
    file / dgfparser / gridptr.hhrangegenerators.hh
    file / dgfparser / blocks / io/file/dgfparser/blocks/projection.hhboundaryprojection.hh
    file / dgfparser / io/file/dgfparser/dgfparser.hhdatahandleif.hh
    file / dgfparser / io/file/dgfparser/dgfparser.hhgridenums.hh
    file / printgrid.hhmcmgmapper.hh
    file / starcdreader.hhcommon/gridfactory.hh
    file / vtk / function.hhmcmgmapper.hh
    file / vtk / volumeiterators.hhgridenums.hh
    file / vtk / vtkwriter.hhmcmgmapper.hh
    file / vtk / vtkwriter.hhgridenums.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000012_000015.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000012_000015.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    io → utility Relation

    File in dune/grid/ioIncludes file in dune/grid/utility
    file / dgfparser / dgfgeogrid.hhhostgridaccess.hh
    file / dgfparser / dgfidentitygrid.hhhostgridaccess.hh
    \n+

    io → utility Relation

    File in dune/grid/ioIncludes file in dune/grid/utility
    file / dgfparser / dgfgeogrid.hhhostgridaccess.hh
    file / dgfparser / dgfidentitygrid.hhhostgridaccess.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000013_000006.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000013_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    recipes → dune Relation

    File in doc/recipesIncludes file in dune
    recipe-integration.ccgrid / yaspgrid.hh
    recipe-iterate-over-grid.ccgrid / yaspgrid.hh
    \n+

    recipes → dune Relation

    File in doc/recipesIncludes file in dune
    recipe-integration.ccgrid / yaspgrid.hh
    recipe-iterate-over-grid.ccgrid / yaspgrid.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000014_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000014_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    uggrid → common Relation

    File in dune/grid/uggridIncludes file in dune/grid/common
    uggridfactory.hhboundarysegment.hh
    uggridfactory.hhcommon/gridfactory.hh
    \n+

    uggrid → common Relation

    File in dune/grid/uggridIncludes file in dune/grid/common
    uggridfactory.hhboundarysegment.hh
    uggridfactory.hhcommon/gridfactory.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000015_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000015_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n \n+

    utility → common Relation

    File in dune/grid/utilityIncludes file in dune/grid/common
    entitycommhelper.hhgridenums.hh
    globalindexset.hhdatahandleif.hh
    globalindexset.hhgridenums.hh
    hierarchicsearch.hhcommon/grid.hh
    hierarchicsearch.hhgridenums.hh
    parmetisgridpartitioner.hhmcmgmapper.hh
    parmetisgridpartitioner.hhrangegenerators.hh
    persistentcontainermap.hhcommon/capabilities.hh
    tensorgridfactory.hhcommon/gridfactory.hh
    utility/gridinfo.hhmcmgmapper.hh
    utility/structuredgridfactory.hhcommon/gridfactory.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000015_000008.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000015_000008.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    utility → geometrygrid Relation

    File in dune/grid/utilityIncludes file in dune/grid/geometrygrid
    hostgridaccess.hhgeometrygrid/intersection.hh
    \n+

    utility → geometrygrid Relation

    File in dune/grid/utilityIncludes file in dune/grid/geometrygrid
    hostgridaccess.hhgeometrygrid/intersection.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000015_000012.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000015_000012.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    utility → io Relation

    File in dune/grid/utilityIncludes file in dune/grid/io
    gridinfo-gmsh-main.hhfile / gmshreader.hh
    \n+

    utility → io Relation

    File in dune/grid/utilityIncludes file in dune/grid/io
    gridinfo-gmsh-main.hhfile / gmshreader.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000017_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000017_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    vtk → common Relation

    File in dune/grid/io/file/vtkIncludes file in dune/grid/common
    function.hhmcmgmapper.hh
    volumeiterators.hhgridenums.hh
    vtkwriter.hhgridenums.hh
    vtkwriter.hhmcmgmapper.hh
    \n+

    vtk → common Relation

    File in dune/grid/io/file/vtkIncludes file in dune/grid/common
    function.hhmcmgmapper.hh
    volumeiterators.hhgridenums.hh
    vtkwriter.hhgridenums.hh
    vtkwriter.hhmcmgmapper.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000018_000002.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000018_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    yaspgrid → common Relation

    File in dune/grid/yaspgridIncludes file in dune/grid/common
    torus.hhexceptions.hh
    yaspgrid/backuprestore.hhcommon/backuprestore.hh
    \n+

    yaspgrid → common Relation

    File in dune/grid/yaspgridIncludes file in dune/grid/common
    torus.hhexceptions.hh
    yaspgrid/backuprestore.hhcommon/backuprestore.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000018_000015.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_000018_000015.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    yaspgrid → utility Relation

    File in dune/grid/yaspgridIncludes file in dune/grid/utility
    structuredyaspgridfactory.hhutility/structuredgridfactory.hh
    yaspgridpersistentcontainer.hhpersistentcontainervector.hh
    yaspgridpersistentcontainer.hhutility/persistentcontainer.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_0009240fada98b921d3b7adcfc3fe68b.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_0009240fada98b921d3b7adcfc3fe68b.html", "unified_diff": "@@ -93,126 +93,126 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n \n \n \n \n-\n+\n \n \n \n-\n+\n \n-\n-\n+\n+\n \n \n \n \n \n \n \n \n \n-\n+\n \n-\n+\n \n \n \n-\n-\n+\n+\n \n-\n+\n \n \n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n \n \n \n \n-\n-\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

     agrid.hh
     provides the AlbertaGrid class
     agrid.hh
     provides the AlbertaGrid class
     
     albertagrid.cc
     
     albertaheader.hh
     albertaheader.hh
     
     albertareader.hh
     albertareader.hh
     
     algebra.hh
     algebra.hh
     
     backuprestore.hh
     
     capabilities.hh
     
     coordcache.hh
     coordcache.hh
     
     datahandle.hh
     
     dgfparser.cc
     
     dgfparser.hh
     
     dofadmin.hh
     dofadmin.hh
     
     dofvector.hh
     dofvector.hh
     
     elementinfo.cc
     provides a wrapper for ALBERTA's el_info structure
     elementinfo.cc
     provides a wrapper for ALBERTA's el_info structure
     
     elementinfo.hh
     provides a wrapper for ALBERTA's el_info structure
     elementinfo.hh
     provides a wrapper for ALBERTA's el_info structure
     
     entity.cc
     entity.cc
     
     entity.hh
     
     entityseed.hh
     
     geometry.cc
     geometry.cc
     
     geometry.hh
     
     geometrycache.hh
     geometrycache.hh
     
     geometryreference.hh
     Wrapper and interface classes for element geometries.
     geometryreference.hh
     Wrapper and interface classes for element geometries.
     
     gridfactory.hh
     specialization of the generic GridFactory for AlbertaGrid
     
     gridfamily.hh
     provides the GridFamily for AlbertaGrid
     
     gridview.hh
     
     hierarchiciterator.hh
     hierarchiciterator.hh
     
     indexsets.cc
     indexsets.cc
     
     indexsets.hh
     
     indexstack.hh
     Provides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid)
     indexstack.hh
     Provides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid)
     
     intersection.cc
     intersection.cc
     
     intersection.hh
     
     intersectioniterator.hh
     Implementation of the IntersectionIterator for AlbertaGrid.
     
     leafiterator.hh
     leafiterator.hh
     
     level.hh
     level.hh
     
     leveliterator.hh
     leveliterator.hh
     
     macrodata.cc
     provides a wrapper for ALBERTA's macro_data structure
     macrodata.cc
     provides a wrapper for ALBERTA's macro_data structure
     
     macrodata.hh
     provides a wrapper for ALBERTA's macro_data structure
     macrodata.hh
     provides a wrapper for ALBERTA's macro_data structure
     
     macroelement.hh
     macroelement.hh
     
     meshpointer.cc
     meshpointer.cc
     
     meshpointer.hh
     provides a wrapper for ALBERTA's mesh structure
     meshpointer.hh
     provides a wrapper for ALBERTA's mesh structure
     
     misc.hh
     misc.hh
     
     persistentcontainer.hh
     
     projection.hh
     
     refinement.hh
     provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
     refinement.hh
     provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
     
     structuredgridfactory.hh
     specialization of the generic StructuredGridFactory for AlbertaGrid
     
     transformation.hh
     transformation.hh
     
     treeiterator.hh
     treeiterator.hh
     
     undefine-2.0.hh
     Contains #undefs for all preprocessor macros defined by alberta.
     undefine-2.0.hh
     Contains #undefs for all preprocessor macros defined by alberta.
     
     undefine-3.0.hh
     Contains #undefs for all preprocessor macros defined by alberta.
     undefine-3.0.hh
     Contains #undefs for all preprocessor macros defined by alberta.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_3101a3055293843fecabc3e467bfc546.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_3101a3055293843fecabc3e467bfc546.html", "unified_diff": "@@ -87,69 +87,69 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\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

     basic.cc
     basic.cc
     
     basic.hh
     basic.hh
     
     boundarydom.cc
     boundarydom.cc
     
     boundarydom.hh
     boundarydom.hh
     
     boundaryseg.cc
     boundaryseg.cc
     
     boundaryseg.hh
     boundaryseg.hh
     
     cube.cc
     cube.cc
     
     cube.hh
     cube.hh
     
     dim.cc
     dim.cc
     
     dim.hh
     dim.hh
     
     general.cc
     general.cc
     
     general.hh
     general.hh
     
     gridparameter.cc
     gridparameter.cc
     
     gridparameter.hh
     gridparameter.hh
     
     interval.cc
     interval.cc
     
     interval.hh
     interval.hh
     
     periodicfacetrans.cc
     periodicfacetrans.cc
     
     periodicfacetrans.hh
     periodicfacetrans.hh
     
     polygon.hh
     polygon.hh
     
     polyhedron.hh
     polyhedron.hh
     
     projection.cc
     projection.cc
     
     projection.hh
     
     simplex.cc
     simplex.cc
     
     simplex.hh
     simplex.hh
     
     simplexgeneration.cc
     simplexgeneration.cc
     
     simplexgeneration.hh
     simplexgeneration.hh
     
     vertex.cc
     vertex.cc
     
     vertex.hh
     vertex.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_51efcf388a7f62d4a2fa1c6b4b0f3d93.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_51efcf388a7f62d4a2fa1c6b4b0f3d93.html", "unified_diff": "@@ -92,53 +92,53 @@\n \n \n \n \n \n \n-\n+\n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n \n \n-\n+\n \n \n \n \n \n \n \n \n \n \n \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

     backuprestore.hh
     
     cachedcoordfunction.hh
     cachedcoordfunction.hh
     
     capabilities.hh
     
     coordfunction.hh
     coordfunction.hh
     
     coordfunctioncaller.hh
     coordfunctioncaller.hh
     
     cornerstorage.hh
     cornerstorage.hh
     
     datahandle.hh
     
     declaration.hh
     declaration.hh
     
     entity.hh
     
     entityseed.hh
     
     geometry.hh
     
     grid.hh
     
     gridfamily.hh
     
     gridview.hh
     
     hostcorners.hh
     hostcorners.hh
     
     identity.hh
     identity.hh
     
     idset.hh
     idset.hh
     
     indexsets.hh
     
     intersection.hh
     
     intersectioniterator.hh
     
     iterator.hh
     iterator.hh
     
     persistentcontainer.hh
     
    \n \n \n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_63e32640819d3744ac1cd322c9d6003e.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_63e32640819d3744ac1cd322c9d6003e.html", "unified_diff": "@@ -92,56 +92,56 @@\n \n \n \n \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\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

     backuprestore.hh
     
     coordinates.hh
     This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here.
     coordinates.hh
     This provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here.
     
     partitioning.hh
     This file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning.
     partitioning.hh
     This file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning.
     
     structuredyaspgridfactory.hh
     Specialization of the StructuredGridFactory class for YaspGrid.
     structuredyaspgridfactory.hh
     Specialization of the StructuredGridFactory class for YaspGrid.
     
     torus.hh
     This file provides the infrastructure for toroidal communication in YaspGrid.
     torus.hh
     This file provides the infrastructure for toroidal communication in YaspGrid.
     
     yaspgridentity.hh
     the YaspEntity class and its specializations
     yaspgridentity.hh
     the YaspEntity class and its specializations
     
     yaspgridentityseed.hh
     The YaspEntitySeed class.
     yaspgridentityseed.hh
     The YaspEntitySeed class.
     
     yaspgridgeometry.hh
     The YaspGeometry class and its specializations.
     yaspgridgeometry.hh
     The YaspGeometry class and its specializations.
     
     yaspgridhierarchiciterator.hh
     yaspgridhierarchiciterator.hh
     
     yaspgrididset.hh
     yaspgrididset.hh
     
     yaspgridindexsets.hh
     level-wise, non-persistent, consecutive indices for YaspGrid
     yaspgridindexsets.hh
     level-wise, non-persistent, consecutive indices for YaspGrid
     
     yaspgridintersection.hh
     The YaspIntersection class.
     yaspgridintersection.hh
     The YaspIntersection class.
     
     yaspgridintersectioniterator.hh
     The YaspIntersectionIterator class.
     
     yaspgridleveliterator.hh
     The YaspLevelIterator class.
     yaspgridleveliterator.hh
     The YaspLevelIterator class.
     
     yaspgridpersistentcontainer.hh
     Specialization of the PersistentContainer for YaspGrid.
     yaspgridpersistentcontainer.hh
     Specialization of the PersistentContainer for YaspGrid.
     
     ygrid.hh
     This provides a YGrid, the elemental component of the yaspgrid implementation.
     ygrid.hh
     This provides a YGrid, the elemental component of the yaspgrid implementation.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_6b8c365152847b3387fb5004eec7d3cc.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_6b8c365152847b3387fb5004eec7d3cc.html", "unified_diff": "@@ -87,40 +87,40 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n \n \n \n-\n-\n+\n+\n \n-\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

     identitygridentity.hh
     The IdentityGridEntity class.
     identitygridentity.hh
     The IdentityGridEntity class.
     
     identitygridentityseed.hh
     The IdentityGridEntitySeed class.
     identitygridentityseed.hh
     The IdentityGridEntitySeed class.
     
     identitygridgeometry.hh
     The IdentityGridGeometry class and its specializations.
     
     identitygridhierarchiciterator.hh
     The IdentityGridHierarchicIterator class.
     identitygridhierarchiciterator.hh
     The IdentityGridHierarchicIterator class.
     
     identitygridindexsets.hh
     The index and id sets for the IdentityGrid class.
     identitygridindexsets.hh
     The index and id sets for the IdentityGrid class.
     
     identitygridintersectioniterator.hh
     The IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes.
     
     identitygridintersections.hh
     The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.
     identitygridintersections.hh
     The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.
     
     identitygridleafiterator.hh
     The IdentityGridLeafIterator class.
     identitygridleafiterator.hh
     The IdentityGridLeafIterator class.
     
     identitygridleveliterator.hh
     The IdentityGridLevelIterator class.
     identitygridleveliterator.hh
     The IdentityGridLevelIterator class.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_8a7c3b45c9645f41c3ea2c94b08d5fa1.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_8a7c3b45c9645f41c3ea2c94b08d5fa1.html", "unified_diff": "@@ -84,19 +84,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n

    \n Files

     dgf2dgf.cc
     a small program converting a DGF file into a DGF file
     dgf2dgf.cc
     a small program converting a DGF file into a DGF file
     
     gmsh2dgf.cc
     a small program converting a gmsh file into a DGF file
     gmsh2dgf.cc
     a small program converting a gmsh file into a DGF file
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_8d29adac9322a6a2ee0cd26fd57d5299.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_8d29adac9322a6a2ee0cd26fd57d5299.html", "unified_diff": "@@ -84,16 +84,16 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n

    \n Files

     gnuplot.cc
     Implementation of gnuplot output for 1D and 2D grids.
     gnuplot.cc
     Implementation of gnuplot output for 1D and 2D grids.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_9cbaec8e9232e242a682ff9656a6bc7e.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_9cbaec8e9232e242a682ff9656a6bc7e.html", "unified_diff": "@@ -87,17 +87,17 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n

    \n Files

     recipe-integration.cc
     recipe-integration.cc
     
     recipe-iterate-over-grid.cc
     recipe-iterate-over-grid.cc
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_afe722c9aeb4f33ba80bf13de411ce03.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_afe722c9aeb4f33ba80bf13de411ce03.html", "unified_diff": "@@ -93,55 +93,55 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n \n \n-\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

     entitycommhelper.hh
     entitycommhelper.hh
     
     globalindexset.hh
     Provides a globally unique index for all entities of a distributed Dune grid.
     globalindexset.hh
     Provides a globally unique index for all entities of a distributed Dune grid.
     
     gridinfo-gmsh-main.hh
     Generic main() function for printing information about a mesh read from a .msh-file.
     gridinfo-gmsh-main.hh
     Generic main() function for printing information about a mesh read from a .msh-file.
     
     gridinfo.hh
     
     gridtype.hh
     This file can be included directly following config.h to test if a grid type was correctly selected.
     gridtype.hh
     This file can be included directly following config.h to test if a grid type was correctly selected.
     
     hierarchicsearch.hh
     Utility class for hierarchically searching for an Entity containing a given point.
     hierarchicsearch.hh
     Utility class for hierarchically searching for an Entity containing a given point.
     
     hostgridaccess.hh
     hostgridaccess.hh
     
     multiindex.hh
     Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes.
     multiindex.hh
     Implements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes.
     
     parmetisgridpartitioner.hh
     Compute a repartitioning of a Dune grid using ParMetis.
     parmetisgridpartitioner.hh
     Compute a repartitioning of a Dune grid using ParMetis.
     
     persistentcontainer.hh
     
     persistentcontainerinterface.hh
     persistentcontainerinterface.hh
     
     persistentcontainermap.hh
     persistentcontainermap.hh
     
     persistentcontainervector.hh
     persistentcontainervector.hh
     
     persistentcontainerwrapper.hh
     persistentcontainerwrapper.hh
     
     structuredgridfactory.hh
     A class to construct structured cube and simplex grids using the grid factory.
     
     tensorgridfactory.hh
     This file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series.
     tensorgridfactory.hh
     This file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series.
     
     vertexorderfactory.hh
     vertexorderfactory.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_b770a3c3155c345f795a6741b9d3499a.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_b770a3c3155c345f795a6741b9d3499a.html", "unified_diff": "@@ -87,63 +87,63 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\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

     b64enc.hh
     Simple base64 encode.
     b64enc.hh
     Simple base64 encode.
     
     basicwriter.hh
     basicwriter.hh
     
     boundaryiterators.hh
     Functions for VTK output on the skeleton.
     boundaryiterators.hh
     Functions for VTK output on the skeleton.
     
     boundarywriter.hh
     boundarywriter.hh
     
     common.hh
     Common stuff for the VTKWriter.
     common.hh
     Common stuff for the VTKWriter.
     
     corner.hh
     corner.hh
     
     corneriterator.hh
     corneriterator.hh
     
     dataarraywriter.hh
     Data array writers for the VTKWriter.
     dataarraywriter.hh
     Data array writers for the VTKWriter.
     
     function.hh
     Functions for VTK output.
     function.hh
     Functions for VTK output.
     
     functionwriter.hh
     functionwriter.hh
     
     pointiterator.hh
     pointiterator.hh
     
     pvtuwriter.hh
     pvtuwriter.hh
     
     skeletonfunction.hh
     Functions for VTK output on the skeleton.
     skeletonfunction.hh
     Functions for VTK output on the skeleton.
     
     streams.hh
     streams.hh
     
     subsamplingvtkwriter.hh
     Provides subsampled file i/o for the visualization toolkit.
     subsamplingvtkwriter.hh
     Provides subsampled file i/o for the visualization toolkit.
     
     volumeiterators.hh
     volumeiterators.hh
     
     volumewriter.hh
     volumewriter.hh
     
     vtksequencewriter.hh
     vtksequencewriter.hh
     
     vtksequencewriterbase.hh
     vtksequencewriterbase.hh
     
     vtkwriter.hh
     Provides file i/o for the visualization toolkit.
     vtkwriter.hh
     Provides file i/o for the visualization toolkit.
     
     vtuwriter.hh
     vtuwriter.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_c7946cd8c64c74ddbfaba08069596fbe.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_c7946cd8c64c74ddbfaba08069596fbe.html", "unified_diff": "@@ -103,46 +103,46 @@\n
     blocks
     
     utils
     
    \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n \n \n \n \n-\n+\n \n-\n+\n \n-\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

     dgfexception.hh
     dgfexception.hh
     
     dgfgeogrid.hh
     dgfgeogrid.hh
     
     dgfgridfactory.hh
     dgfgridfactory.hh
     
     dgfidentitygrid.hh
     dgfidentitygrid.hh
     
     dgfoned.hh
     dgfoned.hh
     
     dgfparser.cc
     
     dgfparser.hh
     
     dgfug.cc
     dgfug.cc
     
     dgfug.hh
     dgfug.hh
     
     dgfwriter.hh
     write a GridView to a DGF file
     dgfwriter.hh
     write a GridView to a DGF file
     
     dgfyasp.hh
     dgfyasp.hh
     
     entitykey.hh
     entitykey.hh
     
     entitykey_inline.hh
     entitykey_inline.hh
     
     gridptr.hh
     gridptr.hh
     
     macrogrid.hh
     macrogrid.hh
     
     parser.hh
     parser.hh
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_e5ae0335e78259a61f16e105bf289391.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_e5ae0335e78259a61f16e105bf289391.html", "unified_diff": "@@ -117,27 +117,27 @@\n

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

     dgfparser.hh
     
     gmshreader.hh
     gmshreader.hh
     
     gmshwriter.hh
     gmshwriter.hh
     
     gnuplot.hh
     Provides gnuplot output for 1D Grids.
     gnuplot.hh
     Provides gnuplot output for 1D Grids.
     
     printgrid.hh
     printgrid.hh
     
     starcdreader.hh
     starcdreader.hh
     
     vtk.hh
     Convenience header which includes all available VTK writers.
     vtk.hh
     Convenience header which includes all available VTK writers.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dir_e674d52c20e1458e445f655f7f65f7ce.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dir_e674d52c20e1458e445f655f7f65f7ce.html", "unified_diff": "@@ -87,79 +87,79 @@\n \"\"\n \"\"\n
    \n \n \n \n-\n-\n+\n+\n \n \n \n-\n+\n \n-\n-\n+\n+\n \n \n \n \n-\n-\n+\n+\n \n-\n+\n \n \n \n-\n+\n \n \n \n \n-\n+\n \n \n \n \n \n \n \n-\n+\n \n \n \n \n \n \n \n \n \n-\n-\n+\n+\n \n \n \n \n \n-\n-\n+\n+\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

     adaptcallback.hh
     interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
     adaptcallback.hh
     interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
     
     backuprestore.hh
     
     boundaryprojection.hh
     boundaryprojection.hh
     
     boundarysegment.hh
     Base class for grid boundary segments of arbitrary geometry.
     boundarysegment.hh
     Base class for grid boundary segments of arbitrary geometry.
     
     capabilities.hh
     A set of traits classes to store static information about grid implementation.
     
     datahandleif.hh
     Describes the parallel communication interface class for MessageBuffers and DataHandles.
     datahandleif.hh
     Describes the parallel communication interface class for MessageBuffers and DataHandles.
     
     defaultgridview.hh
     defaultgridview.hh
     
     entity.hh
     
     entityiterator.hh
     entityiterator.hh
     
     entityseed.hh
     Interface class EntitySeed.
     
     exceptions.hh
     exceptions.hh
     
     geometry.hh
     Wrapper and interface classes for element geometries.
     
     grid.hh
     Different resources needed by all grid implementations.
     
     gridenums.hh
     gridenums.hh
     
     gridfactory.hh
     Provide a generic factory class for unstructured grids.
     
     gridinfo.hh
     Some functions to list information about a grid.
     
     gridview.hh
     
     indexidset.hh
     Provides base classes for index and id sets.
     indexidset.hh
     Provides base classes for index and id sets.
     
     intersection.hh
     
     intersectioniterator.hh
     
     mapper.hh
     Provides classes with basic mappers which are used to attach data to a grid.
     mapper.hh
     Provides classes with basic mappers which are used to attach data to a grid.
     
     mcmgmapper.hh
     Mapper for multiple codim and multiple geometry types.
     mcmgmapper.hh
     Mapper for multiple codim and multiple geometry types.
     
     partitionset.hh
     partitionset.hh
     
     rangegenerators.hh
     rangegenerators.hh
     
     scsgmapper.hh
     Mapper classes are used to attach data to a grid.
     scsgmapper.hh
     Mapper classes are used to attach data to a grid.
     
     sizecache.hh
     Provides size cache classes to implement the grids size method efficiently.
     sizecache.hh
     Provides size cache classes to implement the grids size method efficiently.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/dune-grid.tag.gz", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/dune-grid.tag.gz", "unified_diff": null, "details": [{"source1": "dune-grid.tag", "source2": "dune-grid.tag", "unified_diff": null, "details": [{"source1": "dune-grid.tag", "source2": "dune-grid.tag", "unified_diff": "@@ -19,162 +19,162 @@\n dune/grid/modules.txt\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n a07190.html\n \n \n recipe-integration.cc\n /build/reproducible-path/dune-grid-2.9.0/doc/recipes/\n- a00143.html\n+ a00149.html\n dune/grid/yaspgrid.hh\n \n int\n main\n- a00143.html\n+ a00149.html\n a3c04138a5bfe5d72780bb7e82a18e627\n (int argc, char **argv)\n \n \n \n recipe-iterate-over-grid.cc\n /build/reproducible-path/dune-grid-2.9.0/doc/recipes/\n- a00149.html\n+ a00146.html\n dune/grid/yaspgrid.hh\n \n int\n main\n- a00149.html\n+ a00146.html\n a3c04138a5bfe5d72780bb7e82a18e627\n (int argc, char **argv)\n \n \n \n albertagrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n a00722.html\n- albertagrid/agrid.hh\n+ albertagrid/agrid.hh\n albertagrid/gridfactory.hh\n albertagrid/structuredgridfactory.hh\n albertagrid/persistentcontainer.hh\n \n \n agrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00704.html\n+ a00671.html\n dune/grid/common/grid.hh\n dune/grid/common/gridfactory.hh\n- dune/grid/common/adaptcallback.hh\n- dune/grid/common/sizecache.hh\n- albertaheader.hh\n- dune/grid/albertagrid/misc.hh\n+ dune/grid/common/adaptcallback.hh\n+ dune/grid/common/sizecache.hh\n+ albertaheader.hh\n+ dune/grid/albertagrid/misc.hh\n dune/grid/albertagrid/capabilities.hh\n dune/grid/albertagrid/backuprestore.hh\n- dune/grid/albertagrid/coordcache.hh\n+ dune/grid/albertagrid/coordcache.hh\n dune/grid/albertagrid/gridfamily.hh\n- dune/grid/albertagrid/level.hh\n+ dune/grid/albertagrid/level.hh\n dune/grid/albertagrid/intersection.hh\n dune/grid/albertagrid/intersectioniterator.hh\n dune/grid/albertagrid/datahandle.hh\n dune/grid/albertagrid/entityseed.hh\n indexsets.hh\n geometry.hh\n entity.hh\n- hierarchiciterator.hh\n- treeiterator.hh\n- leveliterator.hh\n- leafiterator.hh\n+ hierarchiciterator.hh\n+ treeiterator.hh\n+ leveliterator.hh\n+ leafiterator.hh\n albertagrid.cc\n- dune/grid/albertagrid/undefine-3.0.hh\n+ dune/grid/albertagrid/undefine-3.0.hh\n Dune::AlbertaGrid\n Dune\n \n #define\n _ALBERTA_H_\n- a00704.html\n+ a00671.html\n a1067446415cacb23802d0f38ff2017d7\n \n \n \n \n albertagrid.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a00629.html\n- geometry.cc\n- entity.cc\n- intersection.cc\n+ geometry.cc\n+ entity.cc\n+ intersection.cc\n Dune\n Dune::Alberta\n \n #define\n DUNE_ALBERTAGRID_CC\n a00629.html\n a53133f6d063b9eb2237193ae58eef706\n \n \n \n \n albertaheader.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00710.html\n+ a00653.html\n \n #define\n DIM_OF_WORLD\n- a00710.html\n+ a00653.html\n a362e6794dc8da37bca88774ed43b8e54\n \n \n \n #define\n ALBERTA\n- a00710.html\n+ a00653.html\n a4cbe74d935d2e31c4b35398e93623f70\n \n \n \n #define\n ALBERTA_DEBUG\n- a00710.html\n+ a00653.html\n a8b7e159f2d6cd4970d240f9748cd2d2a\n \n \n \n #define\n _MAX_NOT_DEFINED_\n- a00710.html\n+ a00653.html\n a4b7aa45c1743bf41ef31a987fcd0f372\n \n \n \n #define\n _MIN_NOT_DEFINED_\n- a00710.html\n+ a00653.html\n a7d0dab8defd85e01c2f14a68a40b4f32\n \n \n \n #define\n _ABS_NOT_DEFINED_\n- a00710.html\n+ a00653.html\n a0c6debd1ce74543115f35b5661f4f48b\n \n \n \n \n albertareader.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00641.html\n+ a00650.html\n dune/grid/common/grid.hh\n dune/grid/common/gridfactory.hh\n- dune/grid/albertagrid/macrodata.hh\n+ dune/grid/albertagrid/macrodata.hh\n Dune::AlbertaReader\n Dune\n \n \n algebra.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00656.html\n+ a00644.html\n Dune\n Dune::Alberta\n \n \n albertagrid/backuprestore.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07193.html\n@@ -191,15 +191,15 @@\n Dune\n \n \n geometrygrid/backuprestore.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07199.html\n dune/grid/common/backuprestore.hh\n- dune/grid/geometrygrid/declaration.hh\n+ dune/grid/geometrygrid/declaration.hh\n dune/grid/geometrygrid/capabilities.hh\n Dune::GeoGrid::BackupRestoreFacilities\n Dune::GeoGrid::BackupRestoreFacilities< Grid, true >\n Dune::BackupRestoreFacility< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n Dune\n Dune::GeoGrid\n \n@@ -266,15 +266,15 @@\n Dune::Capabilities\n \n \n geometrygrid/capabilities.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07211.html\n dune/grid/common/capabilities.hh\n- dune/grid/geometrygrid/declaration.hh\n+ dune/grid/geometrygrid/declaration.hh\n Dune::Capabilities::hasSingleGeometryType< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n Dune::Capabilities::hasEntity< GeometryGrid< HostGrid, CoordFunction, Allocator >, codim >\n Dune::Capabilities::hasEntityIterator< GeometryGrid< HostGrid, CoordFunction, Allocator >, codim >\n Dune::Capabilities::canCommunicate< GeometryGrid< HostGrid, CoordFunction, Allocator >, codim >\n Dune::Capabilities::hasBackupRestoreFacilities< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n Dune::Capabilities::isLevelwiseConforming< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n Dune::Capabilities::isLeafwiseConforming< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n@@ -285,42 +285,42 @@\n Dune::Capabilities::CodimCache\n Dune\n Dune::Capabilities\n \n \n coordcache.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00617.html\n- dune/grid/albertagrid/meshpointer.hh\n- dune/grid/albertagrid/dofadmin.hh\n- dune/grid/albertagrid/dofvector.hh\n+ a00626.html\n+ dune/grid/albertagrid/meshpointer.hh\n+ dune/grid/albertagrid/dofadmin.hh\n+ dune/grid/albertagrid/dofvector.hh\n Dune::Alberta::CoordCache\n Dune::Alberta::CoordCache::LocalCaching\n Dune::Alberta::CoordCache::Interpolation\n Dune\n Dune::Alberta\n \n \n albertagrid/datahandle.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07214.html\n dune/grid/common/grid.hh\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/albertaheader.hh\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/albertagrid/refinement.hh\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/albertaheader.hh\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/refinement.hh\n Dune::Alberta::AdaptRestrictProlongHandler\n Dune\n Dune::Alberta\n \n \n geometrygrid/datahandle.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07217.html\n- dune/grid/common/datahandleif.hh\n+ dune/grid/common/datahandleif.hh\n dune/grid/common/grid.hh\n dune/grid/geometrygrid/capabilities.hh\n dune/grid/geometrygrid/entity.hh\n Dune::GeoGrid::CommDataHandle\n Dune\n Dune::GeoGrid\n \n@@ -339,183 +339,183 @@\n \n \n \n io/file/dgfparser/dgfparser.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n a07223.html\n dune/grid/io/file/dgfparser/dgfparser.hh\n- dune/grid/io/file/dgfparser/blocks/boundarydom.hh\n+ dune/grid/io/file/dgfparser/blocks/boundarydom.hh\n Dune::DGFPrintInfo\n Dune\n \n \n albertagrid/dgfparser.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07226.html\n dune/grid/albertagrid.hh\n dune/grid/albertagrid/gridfactory.hh\n dune/grid/io/file/dgfparser/dgfparser.hh\n dune/grid/io/file/dgfparser/blocks/projection.hh\n dune/grid/common/intersection.hh\n- dune/grid/io/file/dgfparser/parser.hh\n+ dune/grid/io/file/dgfparser/parser.hh\n Dune::DGFGridFactory< AlbertaGrid< dim, dimworld > >\n Dune::DGFGridInfo< AlbertaGrid< dim, dimworld > >\n Dune\n \n \n io/file/dgfparser.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n a07229.html\n dgfparser/dgfparser.hh\n dune/grid/albertagrid/dgfparser.hh\n- dgfparser/dgfug.hh\n- dgfparser/dgfoned.hh\n- dgfparser/dgfyasp.hh\n- dgfparser/dgfgeogrid.hh\n- dgfparser/dgfidentitygrid.hh\n+ dgfparser/dgfug.hh\n+ dgfparser/dgfoned.hh\n+ dgfparser/dgfyasp.hh\n+ dgfparser/dgfgeogrid.hh\n+ dgfparser/dgfidentitygrid.hh\n \n \n io/file/dgfparser/dgfparser.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n a07232.html\n- dune/grid/common/gridenums.hh\n- dune/grid/common/datahandleif.hh\n- dune/grid/io/file/dgfparser/dgfexception.hh\n- dune/grid/io/file/dgfparser/entitykey.hh\n- dune/grid/io/file/dgfparser/parser.hh\n- dune/grid/io/file/dgfparser/gridptr.hh\n- dune/grid/io/file/dgfparser/macrogrid.hh\n- dune/grid/io/file/dgfparser/dgfgridfactory.hh\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n- dune/grid/io/file/dgfparser/blocks/boundarydom.hh\n- dune/grid/io/file/dgfparser/blocks/boundaryseg.hh\n- dune/grid/io/file/dgfparser/blocks/cube.hh\n- dune/grid/io/file/dgfparser/blocks/dim.hh\n- dune/grid/io/file/dgfparser/blocks/general.hh\n- dune/grid/io/file/dgfparser/blocks/gridparameter.hh\n- dune/grid/io/file/dgfparser/blocks/interval.hh\n- dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh\n- dune/grid/io/file/dgfparser/blocks/polygon.hh\n- dune/grid/io/file/dgfparser/blocks/polyhedron.hh\n+ dune/grid/common/gridenums.hh\n+ dune/grid/common/datahandleif.hh\n+ dune/grid/io/file/dgfparser/dgfexception.hh\n+ dune/grid/io/file/dgfparser/entitykey.hh\n+ dune/grid/io/file/dgfparser/parser.hh\n+ dune/grid/io/file/dgfparser/gridptr.hh\n+ dune/grid/io/file/dgfparser/macrogrid.hh\n+ dune/grid/io/file/dgfparser/dgfgridfactory.hh\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n+ dune/grid/io/file/dgfparser/blocks/boundarydom.hh\n+ dune/grid/io/file/dgfparser/blocks/boundaryseg.hh\n+ dune/grid/io/file/dgfparser/blocks/cube.hh\n+ dune/grid/io/file/dgfparser/blocks/dim.hh\n+ dune/grid/io/file/dgfparser/blocks/general.hh\n+ dune/grid/io/file/dgfparser/blocks/gridparameter.hh\n+ dune/grid/io/file/dgfparser/blocks/interval.hh\n+ dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh\n+ dune/grid/io/file/dgfparser/blocks/polygon.hh\n+ dune/grid/io/file/dgfparser/blocks/polyhedron.hh\n dune/grid/io/file/dgfparser/blocks/projection.hh\n- dune/grid/io/file/dgfparser/blocks/simplex.hh\n- dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh\n- dune/grid/io/file/dgfparser/blocks/vertex.hh\n+ dune/grid/io/file/dgfparser/blocks/simplex.hh\n+ dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh\n+ dune/grid/io/file/dgfparser/blocks/vertex.hh\n Dune::DGFGridInfo\n Dune\n \n \n dofadmin.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00650.html\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ a00665.html\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/elementinfo.hh\n Dune::Alberta::DofAccess\n Dune::Alberta::HierarchyDofNumbering\n Dune\n Dune::Alberta\n \n \n dofvector.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00686.html\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/albertagrid/refinement.hh\n+ a00659.html\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/refinement.hh\n Dune::Alberta::DofVectorProvider< int >\n Dune::Alberta::DofVectorProvider< signed char >\n Dune::Alberta::DofVectorProvider< unsigned char >\n Dune::Alberta::DofVectorProvider< Real >\n Dune::Alberta::DofVectorProvider< GlobalVector >\n Dune::Alberta::DofVectorPointer\n Dune\n Dune::Alberta\n \n \n elementinfo.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00671.html\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/albertagrid/meshpointer.hh\n+ a00683.html\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/meshpointer.hh\n Dune\n Dune::Alberta\n \n \n elementinfo.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00614.html\n- dune/grid/albertagrid/geometrycache.hh\n- dune/grid/albertagrid/macroelement.hh\n+ a00719.html\n+ dune/grid/albertagrid/geometrycache.hh\n+ dune/grid/albertagrid/macroelement.hh\n Dune::Alberta::ElementInfo\n Dune::Alberta::ElementInfo::Instance\n Dune::Alberta::ElementInfo::Stack\n Dune::Alberta::ElementInfo::Seed\n Dune\n Dune::Alberta\n \n \n entity.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00665.html\n+ a00662.html\n Dune\n \n #define\n DUNE_ALBERTA_ENTITY_CC\n- a00665.html\n+ a00662.html\n a52a3d21da8af78e4568aaed1c24da792\n \n \n \n \n albertagrid/entity.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07235.html\n dune/grid/common/entity.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/elementinfo.hh\n dune/grid/albertagrid/entityseed.hh\n dune/grid/albertagrid/geometry.hh\n Dune::AlbertaGridEntity\n Dune::AlbertaGridEntity::Codim\n Dune::AlbertaGridEntity< 0, dim, Grid >\n Dune::AlbertaGridEntity< 0, dim, Grid >::Codim\n Dune\n \n \n common/entity.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n a07238.html\n grid.hh\n- rangegenerators.hh\n+ rangegenerators.hh\n Dune::Entity\n Dune::Entity< 0, dim, GridImp, EntityImp >\n Dune::Entity< 0, dim, GridImp, EntityImp >::Codim\n Dune::EntityDefaultImplementation\n Dune::EntityDefaultImplementation< 0, dim, GridImp, EntityImp >\n Dune\n \n \n geometrygrid/entity.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07241.html\n dune/grid/common/grid.hh\n dune/grid/geometrygrid/capabilities.hh\n- dune/grid/geometrygrid/cornerstorage.hh\n+ dune/grid/geometrygrid/cornerstorage.hh\n Dune::GeoGrid::EntityBase< codim, Grid, false >\n Dune::GeoGrid::EntityBase< codim, Grid, true >\n Dune::GeoGrid::Entity\n Dune::GeoGrid::Entity< 0, dim, Grid >\n Dune\n Dune::GeoGrid\n \n \n albertagrid/entityseed.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07244.html\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/albertagrid/meshpointer.hh\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/meshpointer.hh\n Dune::AlbertaGridEntitySeed< codim, const AlbertaGrid< dim, dimworld > >\n Dune::AlbertaGridEntitySeed< 0, const AlbertaGrid< dim, dimworld > >\n Dune\n \n \n common/entityseed.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n@@ -534,36 +534,36 @@\n Dune::GeoGrid::EntitySeed< codim, Grd, true >\n Dune\n Dune::GeoGrid\n \n \n geometry.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00680.html\n- dune/grid/albertagrid/algebra.hh\n+ a00641.html\n+ dune/grid/albertagrid/algebra.hh\n dune/grid/albertagrid/geometry.hh\n- dune/grid/albertagrid/refinement.hh\n+ dune/grid/albertagrid/refinement.hh\n Dune::AlbertaGridLocalGeometryProvider::GeoInFatherCoordReader\n Dune::AlbertaGridLocalGeometryProvider::FaceCoordReader\n Dune\n \n #define\n DUNE_ALBERTA_GEOMETRY_CC\n- a00680.html\n+ a00641.html\n a085bbe8bddf730dd71a187dceae4e610\n \n \n \n \n albertagrid/geometry.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07253.html\n dune/grid/common/geometry.hh\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/elementinfo.hh\n Dune::AlbertaGridCoordinateReader\n Dune::AlbertaGridGeometry\n Dune::AlbertaGridGlobalGeometry\n Dune::AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >\n Dune::AlbertaGridLocalGeometryProvider\n Dune::AlbertaGridLocalGeometryProvider::Codim\n Dune\n@@ -578,62 +578,62 @@\n Dune\n \n \n geometrygrid/geometry.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07259.html\n dune/grid/common/capabilities.hh\n- dune/grid/geometrygrid/cornerstorage.hh\n+ dune/grid/geometrygrid/cornerstorage.hh\n Dune::GeoGrid::InferHasSingleGeometryType\n Dune::GeoGrid::InferHasSingleGeometryType< hasSingleGeometryType, dim, 1 >\n Dune::GeoGrid::InferHasSingleGeometryType< hasSingleGeometryType, dim, 0 >\n Dune::GeoGrid::GeometryTraits\n Dune::GeoGrid::GeometryTraits::CornerStorage\n Dune::GeoGrid::GeometryTraits::hasSingleGeometryType\n Dune::GeoGrid::Geometry\n Dune::GeoGrid::Geometry::Mapping\n Dune\n Dune::GeoGrid\n \n \n geometrycache.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00653.html\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/algebra.hh\n+ a00668.html\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/algebra.hh\n Dune::Alberta::GeometryCache\n Dune::Alberta::GeometryCacheProxy\n Dune\n Dune::Alberta\n \n \n geometryreference.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00695.html\n+ a00620.html\n dune/grid/common/geometry.hh\n Dune::GeometryReference\n Dune::LocalGeometryReference\n Dune\n \n \n albertagrid/gridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07262.html\n dune/grid/common/gridfactory.hh\n- dune/grid/albertagrid/agrid.hh\n+ dune/grid/albertagrid/agrid.hh\n Dune::GridFactory< AlbertaGrid< dim, dimworld > >\n Dune::GridFactory< AlbertaGrid< dim, dimworld > >::Codim\n Dune::GridFactory< AlbertaGrid< dim, dimworld > >::ProjectionFactory\n Dune\n \n \n common/gridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n a07265.html\n- dune/grid/common/boundarysegment.hh\n+ dune/grid/common/boundarysegment.hh\n dune/grid/common/grid.hh\n Dune::GridFactoryInterface\n Dune::GridFactoryInterface::Codim\n Dune::GridFactory\n Dune\n \n #define\n@@ -647,39 +647,39 @@\n albertagrid/gridfamily.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07268.html\n dune/grid/common/entity.hh\n dune/grid/common/geometry.hh\n dune/grid/common/intersection.hh\n dune/grid/common/intersectioniterator.hh\n- dune/grid/common/entityiterator.hh\n- dune/grid/albertagrid/misc.hh\n+ dune/grid/common/entityiterator.hh\n+ dune/grid/albertagrid/misc.hh\n dune/grid/albertagrid/gridview.hh\n- dune/grid/albertagrid/geometryreference.hh\n+ dune/grid/albertagrid/geometryreference.hh\n Dune::AlbertaGridFamily\n Dune::AlbertaGridFamily::Traits\n Dune::AlbertaGridFamily::Traits::Codim\n Dune::AlbertaGridFamily::Traits::Codim::Partition\n Dune\n \n \n geometrygrid/gridfamily.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07271.html\n dune/grid/common/grid.hh\n dune/grid/geometrygrid/capabilities.hh\n- dune/grid/geometrygrid/declaration.hh\n+ dune/grid/geometrygrid/declaration.hh\n dune/grid/geometrygrid/entity.hh\n dune/grid/geometrygrid/entityseed.hh\n dune/grid/geometrygrid/geometry.hh\n dune/grid/geometrygrid/gridview.hh\n dune/grid/geometrygrid/intersection.hh\n dune/grid/geometrygrid/intersectioniterator.hh\n- dune/grid/geometrygrid/iterator.hh\n- dune/grid/geometrygrid/idset.hh\n+ dune/grid/geometrygrid/iterator.hh\n+ dune/grid/geometrygrid/idset.hh\n dune/grid/geometrygrid/indexsets.hh\n Dune::GeoGrid::ExportParams\n Dune::GeoGrid::GridFamily\n Dune::GeoGrid::GridFamily::Traits\n Dune::GeoGrid::GridFamily::Traits::Codim\n Dune::GeoGrid::GridFamily::Traits::Codim::Partition\n Dune\n@@ -704,16 +704,16 @@\n Dune::AlbertaLeafGridView::Codim\n Dune\n \n \n common/gridview.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n a07277.html\n- dune/grid/common/datahandleif.hh\n- dune/grid/common/rangegenerators.hh\n+ dune/grid/common/datahandleif.hh\n+ dune/grid/common/rangegenerators.hh\n Dune::GridView\n Dune::GridView::Codim\n Dune::GridView::Codim::Partition\n Dune::GridView::DeprecatedMethodEmptyFuture\n Dune::GridView::CheckIsConformingImpl\n Dune\n \n@@ -723,100 +723,100 @@\n a07280.html\n dune/grid/common/capabilities.hh\n dune/grid/common/gridview.hh\n dune/grid/geometrygrid/datahandle.hh\n dune/grid/geometrygrid/indexsets.hh\n dune/grid/geometrygrid/intersection.hh\n dune/grid/geometrygrid/intersectioniterator.hh\n- dune/grid/geometrygrid/iterator.hh\n+ dune/grid/geometrygrid/iterator.hh\n Dune::GeoGrid::GridViewTraits\n Dune::GeoGrid::GridViewTraits::Codim\n Dune::GeoGrid::GridViewTraits::Codim::Partition\n Dune::GeoGrid::GridView\n Dune::GeoGrid::GridView::Codim\n Dune\n Dune::GeoGrid\n \n \n hierarchiciterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00692.html\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/common/entityiterator.hh\n+ a00713.html\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/common/entityiterator.hh\n Dune::AlbertaGridHierarchicIterator\n Dune\n \n \n indexsets.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00674.html\n+ a00635.html\n dune/grid/albertagrid/indexsets.hh\n- dune/grid/albertagrid/agrid.hh\n+ dune/grid/albertagrid/agrid.hh\n Dune\n \n \n albertagrid/indexsets.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07283.html\n dune/grid/common/grid.hh\n- dune/grid/common/indexidset.hh\n- dune/grid/albertagrid/indexstack.hh\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/dofadmin.hh\n- dune/grid/albertagrid/dofvector.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/common/indexidset.hh\n+ dune/grid/albertagrid/indexstack.hh\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/dofadmin.hh\n+ dune/grid/albertagrid/dofvector.hh\n+ dune/grid/albertagrid/elementinfo.hh\n dune/grid/albertagrid/gridfamily.hh\n Dune::AlbertaGridHierarchicIndexSet\n Dune::AlbertaGridHierarchicIndexSet::InitEntityNumber\n Dune::AlbertaGridIndexSet\n Dune::AlbertaGridIdSet\n Dune\n Dune::Alberta\n \n \n geometrygrid/indexsets.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07286.html\n- dune/grid/common/gridenums.hh\n- dune/grid/common/indexidset.hh\n- dune/grid/geometrygrid/declaration.hh\n+ dune/grid/common/gridenums.hh\n+ dune/grid/common/indexidset.hh\n+ dune/grid/geometrygrid/declaration.hh\n Dune::GeoGrid::IndexSet\n Dune\n Dune::GeoGrid\n \n \n indexstack.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00716.html\n+ a00701.html\n Dune::IndexStack\n Dune\n \n \n intersection.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00707.html\n+ a00623.html\n dune/grid/albertagrid/intersection.hh\n Dune::AlbertaGridIntersectionBase::GlobalCoordReader\n Dune::AlbertaGridIntersectionBase::LocalCoordReader\n Dune\n \n #define\n DUNE_ALBERTA_INTERSECTION_CC\n- a00707.html\n+ a00623.html\n a8d4a192c9f43ac0db61703b46cb6a297\n \n \n \n \n albertagrid/intersection.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07289.html\n dune/grid/common/intersection.hh\n- dune/grid/albertagrid/transformation.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/transformation.hh\n+ dune/grid/albertagrid/elementinfo.hh\n dune/grid/albertagrid/geometry.hh\n Dune::AlbertaGridIntersectionBase\n Dune::AlbertaGridLeafIntersection\n Dune\n \n \n common/intersection.hh\n@@ -827,16 +827,16 @@\n Dune::IntersectionDefaultNormalVectors\n Dune\n \n \n geometrygrid/intersection.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07295.html\n- dune/grid/geometrygrid/declaration.hh\n- dune/grid/geometrygrid/cornerstorage.hh\n+ dune/grid/geometrygrid/declaration.hh\n+ dune/grid/geometrygrid/cornerstorage.hh\n Dune::GeoGrid::Intersection\n Dune\n Dune::GeoGrid\n \n \n albertagrid/intersectioniterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n@@ -866,100 +866,100 @@\n Dune::GeoGrid::IntersectionIterator\n Dune\n Dune::GeoGrid\n \n \n leafiterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00713.html\n- dune/grid/common/entityiterator.hh\n- dune/grid/albertagrid/treeiterator.hh\n+ a00638.html\n+ dune/grid/common/entityiterator.hh\n+ dune/grid/albertagrid/treeiterator.hh\n Dune::AlbertaGridLeafIterator\n Dune::AlbertaGridLeafIterator< codim, Ghost_Partition, GridImp >\n Dune\n \n \n level.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00635.html\n- dune/grid/albertagrid/meshpointer.hh\n- dune/grid/albertagrid/dofadmin.hh\n- dune/grid/albertagrid/dofvector.hh\n+ a00716.html\n+ dune/grid/albertagrid/meshpointer.hh\n+ dune/grid/albertagrid/dofadmin.hh\n+ dune/grid/albertagrid/dofvector.hh\n Dune::AlbertaGridLevelProvider\n Dune::AlbertaGridLevelProvider::SetLocal\n Dune::AlbertaGridLevelProvider::CalcMaxLevel\n Dune::AlbertaGridLevelProvider::Interpolation\n Dune\n \n \n leveliterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00689.html\n- dune/grid/common/entityiterator.hh\n- dune/grid/albertagrid/treeiterator.hh\n+ a00614.html\n+ dune/grid/common/entityiterator.hh\n+ dune/grid/albertagrid/treeiterator.hh\n Dune::AlbertaGridLevelIterator\n Dune::AlbertaGridLevelIterator< codim, Ghost_Partition, GridImp >\n Dune\n \n \n macrodata.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00659.html\n- dune/grid/common/exceptions.hh\n- dune/grid/albertagrid/macrodata.hh\n+ a00680.html\n+ dune/grid/common/exceptions.hh\n+ dune/grid/albertagrid/macrodata.hh\n Dune\n Dune::Alberta\n \n \n macrodata.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00698.html\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/algebra.hh\n- dune/grid/albertagrid/albertaheader.hh\n+ a00704.html\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/algebra.hh\n+ dune/grid/albertagrid/albertaheader.hh\n Dune::Alberta::MacroData\n Dune::Alberta::MacroData::Library\n Dune\n Dune::Alberta\n \n \n macroelement.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00662.html\n- dune/grid/albertagrid/misc.hh\n+ a00707.html\n+ dune/grid/albertagrid/misc.hh\n Dune::Alberta::MacroElement\n Dune\n Dune::Alberta\n \n \n meshpointer.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00647.html\n- dune/grid/albertagrid/meshpointer.hh\n+ a00677.html\n+ dune/grid/albertagrid/meshpointer.hh\n Dune\n Dune::Alberta\n \n \n meshpointer.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00623.html\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/albertagrid/macrodata.hh\n+ a00656.html\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/macrodata.hh\n dune/grid/albertagrid/projection.hh\n Dune::Alberta::MeshPointer\n Dune::Alberta::MeshPointer::MacroIterator\n Dune\n Dune::Alberta\n \n \n misc.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00701.html\n- dune/grid/albertagrid/albertaheader.hh\n+ a00617.html\n+ dune/grid/albertagrid/albertaheader.hh\n Dune::AlbertaError\n Dune::AlbertaIOError\n Dune::Alberta::GlobalSpace\n Dune::Alberta::NumSubEntities< dim, 0 >\n Dune::Alberta::NumSubEntities< dim, dim >\n Dune::Alberta::NumSubEntities< 0, 0 >\n Dune::Alberta::NumSubEntities< 2, 1 >\n@@ -991,81 +991,81 @@\n Dune::Alberta::Twist< dim, 2 >\n Dune::Alberta::Twist< 2, 2 >\n Dune\n Dune::Alberta\n \n #define\n DUNE_ALBERTA_CACHE_COORDINATES\n- a00701.html\n+ a00617.html\n ac7a758bde399b9ddaa1d7efc4d08c19a\n \n \n \n \n albertagrid/persistentcontainer.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07307.html\n dune/grid/utility/persistentcontainer.hh\n- dune/grid/utility/persistentcontainervector.hh\n+ dune/grid/utility/persistentcontainervector.hh\n Dune::PersistentContainer< AlbertaGrid< dim, dimworld >, T >\n Dune\n \n \n geometrygrid/persistentcontainer.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07310.html\n- dune/grid/geometrygrid/declaration.hh\n+ dune/grid/geometrygrid/declaration.hh\n dune/grid/utility/persistentcontainer.hh\n- dune/grid/utility/persistentcontainerwrapper.hh\n+ dune/grid/utility/persistentcontainerwrapper.hh\n Dune::PersistentContainer< GeometryGrid< HostGrid, CoordFunction, Allocator >, T >\n Dune\n \n \n utility/persistentcontainer.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n a07313.html\n- dune/grid/utility/persistentcontainermap.hh\n+ dune/grid/utility/persistentcontainermap.hh\n Dune::PersistentContainer\n Dune::PersistentContainer< const Grid, T >\n Dune\n std\n \n \n albertagrid/projection.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07316.html\n- dune/grid/common/boundaryprojection.hh\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/common/boundaryprojection.hh\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/elementinfo.hh\n Dune::Alberta::DuneBoundaryProjection\n Dune::Alberta::ProjectionFactoryInterface\n Dune::Alberta::ProjectionFactory\n Dune::Alberta::DuneGlobalBoundaryProjectionFactory\n Dune::Alberta::BasicNodeProjection\n Dune::Alberta::NodeProjection\n Dune\n Dune::Alberta\n \n \n io/file/dgfparser/blocks/projection.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n a07319.html\n- dune/grid/common/boundaryprojection.hh\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ dune/grid/common/boundaryprojection.hh\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::ProjectionBlock\n Dune::dgf::ProjectionBlock::Expression\n Dune\n Dune::dgf\n \n \n refinement.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00620.html\n- dune/grid/albertagrid/misc.hh\n- dune/grid/albertagrid/elementinfo.hh\n+ a00689.html\n+ dune/grid/albertagrid/misc.hh\n+ dune/grid/albertagrid/elementinfo.hh\n Dune::Alberta::Patch\n Dune::Alberta::ForEachInteriorSubChild< dim, 0 >\n Dune::Alberta::ForEachInteriorSubChild< dim, dim >\n Dune::Alberta::ForEachInteriorSubChild< 2, 1 >\n Dune::Alberta::ForEachInteriorSubChild< 3, 1 >\n Dune::Alberta::ForEachInteriorSubChild< 3, 2 >\n Dune::Alberta::GeometryInFather< 1 >\n@@ -1075,99 +1075,99 @@\n Dune::Alberta\n \n \n albertagrid/structuredgridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n a07322.html\n dune/grid/common/gridfactory.hh\n- dune/grid/utility/multiindex.hh\n+ dune/grid/utility/multiindex.hh\n dune/grid/utility/structuredgridfactory.hh\n Dune::StructuredGridFactory< AlbertaGrid< dim, dimworld > >\n Dune\n \n \n utility/structuredgridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n a07325.html\n dune/grid/common/gridfactory.hh\n- dune/grid/utility/multiindex.hh\n+ dune/grid/utility/multiindex.hh\n Dune::StructuredGridFactory\n Dune\n \n \n transformation.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00677.html\n- dune/grid/albertagrid/misc.hh\n+ a00710.html\n+ dune/grid/albertagrid/misc.hh\n Dune::AlbertaTransformation\n Dune\n \n \n treeiterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00719.html\n- dune/grid/albertagrid/elementinfo.hh\n- dune/grid/albertagrid/meshpointer.hh\n+ a00647.html\n+ dune/grid/albertagrid/elementinfo.hh\n+ dune/grid/albertagrid/meshpointer.hh\n Dune::AlbertaMarkerVector\n Dune::AlbertaMarkerVector::MarkSubEntities::Codim\n Dune::AlbertaGridTreeIterator\n Dune\n \n \n undefine-2.0.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00683.html\n+ a00686.html\n \n \n undefine-3.0.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/albertagrid/\n- a00668.html\n+ a00692.html\n \n \n adaptcallback.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00275.html\n+ a00326.html\n Dune::AdaptDataHandleInterface\n Dune::AdaptDataHandle\n Dune::CombinedAdaptProlongRestrict\n Dune\n \n \n boundaryprojection.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00236.html\n- dune/grid/common/boundarysegment.hh\n- dune/grid/common/datahandleif.hh\n- dune/grid/io/file/gmshreader.hh\n+ a00278.html\n+ dune/grid/common/boundarysegment.hh\n+ dune/grid/common/datahandleif.hh\n+ dune/grid/io/file/gmshreader.hh\n Dune::DuneBoundaryProjection\n Dune::BoundaryProjectionWrapper\n Dune::BoundarySegmentWrapper\n Dune::CircleBoundaryProjection\n Dune\n \n \n boundarysegment.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00329.html\n+ a00347.html\n Dune::BoundarySegmentBackupRestore\n Dune::BoundarySegment\n Dune\n \n \n datahandleif.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00335.html\n+ a00245.html\n Dune::MessageBufferIF\n Dune::CommDataHandleIF\n Dune\n \n \n defaultgridview.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00290.html\n+ a00308.html\n dune/grid/common/capabilities.hh\n dune/grid/common/gridview.hh\n Dune::DefaultLevelGridViewTraits\n Dune::DefaultLevelGridViewTraits::Codim\n Dune::DefaultLevelGridViewTraits::Codim::Partition\n Dune::DefaultLevelGridView\n Dune::DefaultLevelGridView::Codim\n@@ -1177,44 +1177,44 @@\n Dune::DefaultLeafGridView\n Dune::DefaultLeafGridView::Codim\n Dune\n \n \n entityiterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00278.html\n+ a00254.html\n Dune::EntityIterator\n std::iterator_traits< Dune::EntityIterator< codim, Grid, IteratorImp > >\n Dune\n std\n \n \n exceptions.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00323.html\n+ a00251.html\n Dune::GridError\n Dune\n \n \n common/grid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n a07328.html\n- dune/grid/common/gridenums.hh\n- dune/grid/common/exceptions.hh\n+ dune/grid/common/gridenums.hh\n+ dune/grid/common/exceptions.hh\n dune/grid/common/capabilities.hh\n- dune/grid/common/datahandleif.hh\n+ dune/grid/common/datahandleif.hh\n dune/grid/common/gridview.hh\n- dune/grid/common/defaultgridview.hh\n+ dune/grid/common/defaultgridview.hh\n dune/grid/common/entityseed.hh\n geometry.hh\n entity.hh\n intersection.hh\n intersectioniterator.hh\n- entityiterator.hh\n- indexidset.hh\n+ entityiterator.hh\n+ indexidset.hh\n Dune::Grid\n Dune::Grid::Codim\n Dune::Grid::Codim::Partition\n Dune::GridDefaultImplementation\n Dune::GridTraits\n Dune::GridTraits::Codim\n Dune::GridTraits::Codim::Partition\n@@ -1229,201 +1229,201 @@\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n a07331.html\n dune/grid/common/grid.hh\n dune/grid/geometrygrid/backuprestore.hh\n dune/grid/geometrygrid/capabilities.hh\n dune/grid/geometrygrid/datahandle.hh\n dune/grid/geometrygrid/gridfamily.hh\n- dune/grid/geometrygrid/identity.hh\n+ dune/grid/geometrygrid/identity.hh\n dune/grid/geometrygrid/persistentcontainer.hh\n Dune::DefaultCoordFunction\n Dune::GeometryGrid\n Dune::GeometryGrid::Codim\n Dune::GeometryGrid::Codim::Partition\n Dune\n \n \n gridenums.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00260.html\n+ a00257.html\n Dune\n \n \n common/gridinfo.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n a07334.html\n grid.hh\n Dune\n \n \n utility/gridinfo.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n a07337.html\n- dune/grid/common/mcmgmapper.hh\n+ dune/grid/common/mcmgmapper.hh\n Dune::EntityInfo\n Dune::GridViewInfoGTCompare\n Dune::GridViewInfo\n Dune\n \n \n indexidset.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00320.html\n+ a00329.html\n dune/grid/common/grid.hh\n Dune::IndexSet\n Dune::IndexSet::Codim\n Dune::IndexSetDefaultImplementation\n Dune::IdSet\n Dune::IdSet::Codim\n Dune\n \n \n mapper.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00254.html\n+ a00320.html\n Dune::Mapper\n Dune\n \n \n mcmgmapper.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00269.html\n- mapper.hh\n+ a00236.html\n+ mapper.hh\n Dune::MultipleCodimMultipleGeomTypeMapper\n Dune::LeafMultipleCodimMultipleGeomTypeMapper\n Dune::LevelMultipleCodimMultipleGeomTypeMapper\n Dune\n \n \n partitionset.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00287.html\n- dune/grid/common/gridenums.hh\n+ a00323.html\n+ dune/grid/common/gridenums.hh\n Dune::PartitionSet\n Dune\n Dune::Partitions\n \n \n rangegenerators.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00347.html\n- dune/grid/common/gridenums.hh\n- dune/grid/common/partitionset.hh\n+ a00311.html\n+ dune/grid/common/gridenums.hh\n+ dune/grid/common/partitionset.hh\n Dune\n \n \n scsgmapper.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00362.html\n- mapper.hh\n+ a00350.html\n+ mapper.hh\n dune/grid/common/grid.hh\n Dune::SingleCodimSingleGeomTypeMapper\n Dune::LeafSingleCodimSingleGeomTypeMapper\n Dune::LevelSingleCodimSingleGeomTypeMapper\n Dune\n \n \n sizecache.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/common/\n- a00299.html\n- dune/grid/common/gridenums.hh\n+ a00332.html\n+ dune/grid/common/gridenums.hh\n dune/grid/common/capabilities.hh\n Dune::SizeCache\n Dune\n \n \n geometrygrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n a00725.html\n dune/grid/geometrygrid/grid.hh\n dune/grid/geometrygrid/persistentcontainer.hh\n \n \n cachedcoordfunction.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00596.html\n- dune/grid/common/gridenums.hh\n+ a00584.html\n+ dune/grid/common/gridenums.hh\n dune/grid/geometrygrid/capabilities.hh\n- dune/grid/geometrygrid/coordfunctioncaller.hh\n+ dune/grid/geometrygrid/coordfunctioncaller.hh\n dune/grid/utility/persistentcontainer.hh\n Dune::GeoGrid::CoordCache\n Dune::CachedCoordFunction\n Dune\n Dune::GeoGrid\n \n \n coordfunction.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00578.html\n+ a00599.html\n Dune::AnalyticalCoordFunctionInterface\n Dune::AnalyticalCoordFunction\n Dune::DiscreteCoordFunctionInterface\n Dune::DiscreteCoordFunction\n Dune\n Dune::GeoGrid\n \n \n coordfunctioncaller.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00587.html\n- dune/grid/geometrygrid/hostcorners.hh\n- dune/grid/geometrygrid/coordfunction.hh\n+ a00581.html\n+ dune/grid/geometrygrid/hostcorners.hh\n+ dune/grid/geometrygrid/coordfunction.hh\n Dune\n Dune::GeoGrid\n \n \n cornerstorage.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00566.html\n- dune/grid/geometrygrid/coordfunctioncaller.hh\n+ a00605.html\n+ dune/grid/geometrygrid/coordfunctioncaller.hh\n Dune::GeoGrid::CoordVector< mydim, Grid, false >\n Dune::GeoGrid::CoordVector< mydim, Grid, true >\n Dune::GeoGrid::IntersectionCoordVector\n Dune::GeoGrid::CornerStorage\n Dune\n Dune::GeoGrid\n \n \n declaration.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00608.html\n+ a00596.html\n Dune\n \n \n hostcorners.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00581.html\n+ a00572.html\n dune/grid/common/entity.hh\n Dune::GeoGrid::HostCorners\n Dune\n Dune::GeoGrid\n \n \n identity.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00599.html\n- dune/grid/geometrygrid/coordfunction.hh\n+ a00578.html\n+ dune/grid/geometrygrid/coordfunction.hh\n Dune::IdenticalCoordFunction\n Dune\n \n \n idset.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00605.html\n- dune/grid/common/indexidset.hh\n+ a00593.html\n+ dune/grid/common/indexidset.hh\n Dune::GeoGrid::IdSet\n Dune\n Dune::GeoGrid\n \n \n iterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/geometrygrid/\n- a00569.html\n+ a00590.html\n dune/grid/geometrygrid/capabilities.hh\n- dune/grid/geometrygrid/declaration.hh\n+ dune/grid/geometrygrid/declaration.hh\n dune/grid/geometrygrid/entity.hh\n Dune::GeoGrid::PartitionIteratorFilter< codim, Interior_Partition, Grid >\n Dune::GeoGrid::PartitionIteratorFilter< codim, InteriorBorder_Partition, Grid >\n Dune::GeoGrid::PartitionIteratorFilter< codim, Overlap_Partition, Grid >\n Dune::GeoGrid::PartitionIteratorFilter< codim, OverlapFront_Partition, Grid >\n Dune::GeoGrid::PartitionIteratorFilter< codim, All_Partition, Grid >\n Dune::GeoGrid::PartitionIteratorFilter< codim, Ghost_Partition, Grid >\n@@ -1436,288 +1436,288 @@\n \n identitygrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n a00728.html\n dune/grid/common/capabilities.hh\n dune/grid/common/grid.hh\n identitygrid/identitygridgeometry.hh\n- identitygrid/identitygridentity.hh\n- identitygrid/identitygridentityseed.hh\n+ identitygrid/identitygridentity.hh\n+ identitygrid/identitygridentityseed.hh\n identitygrid/identitygridintersectioniterator.hh\n- identitygrid/identitygridleveliterator.hh\n- identitygrid/identitygridleafiterator.hh\n- identitygrid/identitygridhierarchiciterator.hh\n- identitygrid/identitygridindexsets.hh\n+ identitygrid/identitygridleveliterator.hh\n+ identitygrid/identitygridleafiterator.hh\n+ identitygrid/identitygridhierarchiciterator.hh\n+ identitygrid/identitygridindexsets.hh\n Dune::IdentityGridFamily\n Dune::IdentityGrid\n Dune\n Dune::Capabilities\n \n \n identitygridentity.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00740.html\n+ a00737.html\n dune/grid/common/grid.hh\n Dune::IdentityGridEntity\n Dune::IdentityGridEntity< 0, dim, GridImp >\n Dune\n \n \n identitygridentityseed.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00749.html\n+ a00740.html\n Dune::IdentityGridEntitySeed\n Dune\n \n \n identitygridgeometry.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n a00746.html\n dune/grid/common/geometry.hh\n Dune::IdentityGridGeometry\n Dune\n \n \n identitygridhierarchiciterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00737.html\n+ a00731.html\n Dune::IdentityGridHierarchicIterator\n Dune\n \n \n identitygridindexsets.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00752.html\n- dune/grid/common/indexidset.hh\n+ a00743.html\n+ dune/grid/common/indexidset.hh\n Dune::IdentityGridLevelIndexSet\n Dune::IdentityGridLeafIndexSet\n Dune::IdentityGridGlobalIdSet\n Dune::IdentityGridLocalIdSet\n Dune\n \n \n identitygridintersectioniterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n a00755.html\n- identitygridintersections.hh\n- identitygridentity.hh\n+ identitygridintersections.hh\n+ identitygridentity.hh\n dune/grid/common/intersection.hh\n Dune::IdentityGridLeafIntersectionIterator\n Dune::IdentityGridLevelIntersectionIterator\n Dune\n \n \n identitygridintersections.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00743.html\n- identitygridleafiterator.hh\n- dune/grid/identitygrid/identitygridentity.hh\n+ a00734.html\n+ identitygridleafiterator.hh\n+ dune/grid/identitygrid/identitygridentity.hh\n Dune::IdentityGridLeafIntersection\n Dune::IdentityGridLevelIntersection\n Dune\n \n \n identitygridleafiterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00734.html\n- dune/grid/common/gridenums.hh\n+ a00752.html\n+ dune/grid/common/gridenums.hh\n Dune::IdentityGridLeafIterator\n Dune\n \n \n identitygridleveliterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/identitygrid/\n- a00731.html\n- dune/grid/common/gridenums.hh\n+ a00749.html\n+ dune/grid/common/gridenums.hh\n Dune::IdentityGridLevelIterator\n Dune\n \n \n basic.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00824.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00866.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune\n Dune::dgf\n \n \n basic.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00866.html\n- dune/grid/io/file/dgfparser/entitykey.hh\n- dune/grid/io/file/dgfparser/dgfexception.hh\n+ a00920.html\n+ dune/grid/io/file/dgfparser/entitykey.hh\n+ dune/grid/io/file/dgfparser/dgfexception.hh\n Dune::dgf::BasicBlock\n Dune\n Dune::dgf\n \n \n boundarydom.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00815.html\n- dune/grid/io/file/dgfparser/blocks/boundarydom.hh\n+ a00935.html\n+ dune/grid/io/file/dgfparser/blocks/boundarydom.hh\n Dune\n Dune::dgf\n \n \n boundarydom.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00827.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n- dune/grid/io/file/dgfparser/parser.hh\n+ a00929.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n+ dune/grid/io/file/dgfparser/parser.hh\n Dune::dgf::DomainData\n Dune::dgf::Domain\n Dune::dgf::BoundaryDomBlock\n Dune\n Dune::dgf\n \n \n boundaryseg.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00809.html\n- dune/grid/io/file/dgfparser/blocks/boundaryseg.hh\n+ a00902.html\n+ dune/grid/io/file/dgfparser/blocks/boundaryseg.hh\n Dune\n Dune::dgf\n \n \n boundaryseg.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00821.html\n- dune/grid/io/file/dgfparser/parser.hh\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00869.html\n+ dune/grid/io/file/dgfparser/parser.hh\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::BoundarySegBlock\n Dune\n Dune::dgf\n \n \n cube.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00872.html\n- dune/grid/io/file/dgfparser/blocks/cube.hh\n+ a00923.html\n+ dune/grid/io/file/dgfparser/blocks/cube.hh\n Dune\n Dune::dgf\n \n \n cube.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00863.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00926.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::CubeBlock\n Dune\n Dune::dgf\n \n \n dim.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00839.html\n- dune/grid/io/file/dgfparser/blocks/dim.hh\n+ a00887.html\n+ dune/grid/io/file/dgfparser/blocks/dim.hh\n Dune\n Dune::dgf\n \n \n dim.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00848.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00932.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::DimBlock\n Dune\n Dune::dgf\n \n \n general.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00830.html\n- dune/grid/io/file/dgfparser/blocks/general.hh\n+ a00875.html\n+ dune/grid/io/file/dgfparser/blocks/general.hh\n Dune\n Dune::dgf\n \n \n general.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00851.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00893.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::GeneralBlock\n Dune\n Dune::dgf\n \n \n gridparameter.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00854.html\n- dune/grid/io/file/dgfparser/blocks/gridparameter.hh\n+ a00863.html\n+ dune/grid/io/file/dgfparser/blocks/gridparameter.hh\n Dune\n Dune::dgf\n \n \n gridparameter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00857.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00908.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::GridParameterBlock\n Dune\n Dune::dgf\n \n \n interval.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00818.html\n- dune/grid/io/file/dgfparser/blocks/interval.hh\n+ a00938.html\n+ dune/grid/io/file/dgfparser/blocks/interval.hh\n Dune\n Dune::dgf\n \n \n interval.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00842.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00881.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::IntervalBlock\n Dune::dgf::IntervalBlock::Interval\n Dune\n Dune::dgf\n \n \n periodicfacetrans.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00833.html\n- dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh\n+ a00872.html\n+ dune/grid/io/file/dgfparser/blocks/periodicfacetrans.hh\n Dune\n Dune::dgf\n \n \n periodicfacetrans.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00797.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00905.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::PeriodicFaceTransformationBlock\n Dune::dgf::PeriodicFaceTransformationBlock::Matrix\n Dune::dgf::PeriodicFaceTransformationBlock::AffineTransformation\n Dune\n Dune::dgf\n \n \n polygon.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00845.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00896.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::PolygonBlock\n Dune\n Dune::dgf\n \n \n polyhedron.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00836.html\n- dune/grid/io/file/dgfparser/blocks/polygon.hh\n+ a00899.html\n+ dune/grid/io/file/dgfparser/blocks/polygon.hh\n Dune::dgf::PolyhedronBlock\n Dune\n Dune::dgf\n \n \n projection.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00869.html\n+ a00941.html\n dune/grid/io/file/dgfparser/blocks/projection.hh\n Dune::dgf::Expr::ConstantExpression\n Dune::dgf::Expr::VariableExpression\n Dune::dgf::Expr::FunctionCallExpression\n Dune::dgf::Expr::VectorExpression\n Dune::dgf::Expr::BracketExpression\n Dune::dgf::Expr::MinusExpression\n@@ -1733,313 +1733,313 @@\n Dune\n Dune::dgf\n Dune::dgf::Expr\n \n \n simplex.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00806.html\n- dune/grid/io/file/dgfparser/blocks/simplex.hh\n+ a00884.html\n+ dune/grid/io/file/dgfparser/blocks/simplex.hh\n Dune\n Dune::dgf\n \n \n simplex.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00860.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00878.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::SimplexBlock\n Dune\n Dune::dgf\n \n \n simplexgeneration.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00812.html\n- dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh\n+ a00911.html\n+ dune/grid/io/file/dgfparser/blocks/simplexgeneration.hh\n Dune\n Dune::dgf\n \n \n simplexgeneration.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00875.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00914.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::SimplexGenerationBlock\n Dune\n Dune::dgf\n \n \n vertex.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00803.html\n- dune/grid/io/file/dgfparser/blocks/vertex.hh\n+ a00890.html\n+ dune/grid/io/file/dgfparser/blocks/vertex.hh\n Dune\n Dune::dgf\n \n \n vertex.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/blocks/\n- a00800.html\n- dune/grid/io/file/dgfparser/blocks/basic.hh\n+ a00917.html\n+ dune/grid/io/file/dgfparser/blocks/basic.hh\n Dune::dgf::VertexBlock\n Dune\n Dune::dgf\n \n \n dgfexception.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00794.html\n+ a00860.html\n Dune::DGFException\n Dune\n \n \n dgfgeogrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00773.html\n+ a00833.html\n dune/grid/geometrygrid.hh\n dune/grid/io/file/dgfparser/dgfparser.hh\n dune/grid/io/file/dgfparser/blocks/projection.hh\n- dune/grid/utility/hostgridaccess.hh\n+ dune/grid/utility/hostgridaccess.hh\n dune/grid/common/intersection.hh\n- dune/grid/io/file/dgfparser/parser.hh\n+ dune/grid/io/file/dgfparser/parser.hh\n Dune::DGFCoordFunction\n Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, false >\n Dune::DGFCoordFunctionFactory< HostGrid, CoordFunction, true >\n Dune::DGFCoordFunctionFactory< HostGrid, DGFCoordFunction< dimD, dimR >, false >\n Dune::DGFGridFactory< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n Dune::DGFGridInfo< GeometryGrid< HostGrid, CoordFunction, Allocator > >\n Dune\n \n \n dgfgridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00788.html\n- dune/grid/io/file/dgfparser/dgfexception.hh\n- dune/grid/io/file/dgfparser/macrogrid.hh\n- dune/grid/io/file/dgfparser/parser.hh\n+ a00821.html\n+ dune/grid/io/file/dgfparser/dgfexception.hh\n+ dune/grid/io/file/dgfparser/macrogrid.hh\n+ dune/grid/io/file/dgfparser/parser.hh\n dune/grid/common/intersection.hh\n Dune::DGFGridFactory\n Dune\n \n \n dgfidentitygrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00890.html\n+ a00830.html\n dune/grid/identitygrid.hh\n dune/grid/io/file/dgfparser/dgfparser.hh\n- dune/grid/utility/hostgridaccess.hh\n+ dune/grid/utility/hostgridaccess.hh\n Dune::DGFGridFactory< IdentityGrid< HostGrid > >\n Dune::DGFGridInfo< IdentityGrid< HostGrid > >\n Dune\n \n \n dgfoned.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00791.html\n+ a00827.html\n dune/grid/common/intersection.hh\n dune/grid/onedgrid.hh\n dgfparser.hh\n Dune::DGFGridInfo< OneDGrid >\n Dune::DGFGridFactory< OneDGrid >\n Dune\n \n \n dgfug.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00785.html\n- dune/grid/io/file/dgfparser/dgfug.hh\n+ a00851.html\n+ dune/grid/io/file/dgfparser/dgfug.hh\n Dune\n Dune::dgf\n \n \n dgfug.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00884.html\n+ a00836.html\n dune/grid/common/intersection.hh\n dune/grid/uggrid.hh\n dgfparser.hh\n- blocks/gridparameter.hh\n+ blocks/gridparameter.hh\n Dune::dgf::UGGridParameterBlock\n Dune::DGFGridInfo< UGGrid< dim > >\n Dune::DGFGridFactory< UGGrid< dim > >\n Dune\n Dune::dgf\n \n \n dgfwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00776.html\n+ a00845.html\n dune/grid/common/grid.hh\n- dune/grid/common/rangegenerators.hh\n+ dune/grid/common/rangegenerators.hh\n Dune::DGFWriter\n Dune\n \n \n dgfyasp.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00896.html\n+ a00944.html\n dune/grid/common/intersection.hh\n dune/grid/yaspgrid.hh\n dgfparser.hh\n Dune::dgf::YaspGridParameterBlock\n Dune::DGFGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > >\n Dune::DGFGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > >\n Dune::DGFGridFactory< Dune::YaspGrid< dim, Dune::TensorProductCoordinates< ctype, dim > > >\n Dune::DGFGridInfo< YaspGrid< dim, Coordinates > >\n Dune\n Dune::dgf\n \n \n entitykey.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00887.html\n- dune/grid/io/file/dgfparser/dgfexception.hh\n- entitykey_inline.hh\n+ a00848.html\n+ dune/grid/io/file/dgfparser/dgfexception.hh\n+ entitykey_inline.hh\n Dune::DGFEntityKey\n Dune::ElementFaceUtil\n Dune\n \n \n entitykey_inline.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00893.html\n- dune/grid/io/file/dgfparser/entitykey.hh\n+ a00857.html\n+ dune/grid/io/file/dgfparser/entitykey.hh\n Dune\n \n \n gridptr.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00782.html\n- dune/grid/common/gridenums.hh\n- dune/grid/common/datahandleif.hh\n+ a00947.html\n+ dune/grid/common/gridenums.hh\n+ dune/grid/common/datahandleif.hh\n dune/grid/common/intersection.hh\n- dune/grid/common/partitionset.hh\n- dune/grid/common/rangegenerators.hh\n- dune/grid/io/file/dgfparser/dgfexception.hh\n- dune/grid/io/file/dgfparser/entitykey.hh\n- dune/grid/io/file/dgfparser/parser.hh\n- dune/grid/io/file/gmshreader.hh\n+ dune/grid/common/partitionset.hh\n+ dune/grid/common/rangegenerators.hh\n+ dune/grid/io/file/dgfparser/dgfexception.hh\n+ dune/grid/io/file/dgfparser/entitykey.hh\n+ dune/grid/io/file/dgfparser/parser.hh\n+ dune/grid/io/file/gmshreader.hh\n Dune::GridPtr\n Dune::GridPtr::mygrid_ptr\n Dune::GridPtr::DataHandle\n Dune\n \n \n macrogrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00899.html\n- dune/grid/io/file/dgfparser/parser.hh\n+ a00854.html\n+ dune/grid/io/file/dgfparser/parser.hh\n Dune::MacroGrid\n Dune\n \n \n parser.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/\n- a00779.html\n- dune/grid/io/file/dgfparser/entitykey.hh\n+ a00824.html\n+ dune/grid/io/file/dgfparser/entitykey.hh\n Dune::DGFBoundaryParameter\n Dune::DuneGridFormatParser\n Dune\n \n \n dgf2dgf.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/utils/\n- a00881.html\n- dune/grid/io/file/dgfparser/dgfwriter.hh\n+ a00839.html\n+ dune/grid/io/file/dgfparser/dgfwriter.hh\n \n int\n main\n- a00881.html\n+ a00839.html\n a0ddf1224851353fc92bfbff6f499fa97\n (int argc, char *argv[])\n \n \n \n gmsh2dgf.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/dgfparser/utils/\n- a00878.html\n- dune/grid/io/file/gmshreader.hh\n- dune/grid/io/file/dgfparser/dgfwriter.hh\n+ a00842.html\n+ dune/grid/io/file/gmshreader.hh\n+ dune/grid/io/file/dgfparser/dgfwriter.hh\n \n int\n main\n- a00878.html\n+ a00842.html\n a0ddf1224851353fc92bfbff6f499fa97\n (int argc, char *argv[])\n \n \n \n gmshreader.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n- a00761.html\n- dune/grid/common/boundarysegment.hh\n+ a00950.html\n+ dune/grid/common/boundarysegment.hh\n dune/grid/common/gridfactory.hh\n Dune::GmshReaderOptions\n Dune::GmshReaderParser\n Dune::GmshReader\n Dune\n Dune::Gmsh\n \n \n gmshwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n- a00767.html\n+ a00956.html\n dune/grid/common/grid.hh\n- dune/grid/common/mcmgmapper.hh\n+ dune/grid/common/mcmgmapper.hh\n Dune::GmshWriter\n Dune\n \n \n gnuplot.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n- a00770.html\n+ a00959.html\n dune/grid/common/grid.hh\n- gnuplot/gnuplot.cc\n+ gnuplot/gnuplot.cc\n Dune::GnuplotWriter\n Dune::LeafGnuplotWriter\n Dune::LevelGnuplotWriter\n Dune\n \n \n gnuplot.cc\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/gnuplot/\n- a00764.html\n- ../gnuplot.hh\n+ a00968.html\n+ ../gnuplot.hh\n Dune\n \n \n printgrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n- a00968.html\n- dune/grid/common/mcmgmapper.hh\n+ a00962.html\n+ dune/grid/common/mcmgmapper.hh\n Dune\n \n \n starcdreader.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n- a00758.html\n+ a00953.html\n dune/grid/common/gridfactory.hh\n Dune::StarCDReader\n Dune\n \n \n vtk.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/\n- a00902.html\n- vtk/boundarywriter.hh\n- vtk/subsamplingvtkwriter.hh\n- vtk/vtksequencewriter.hh\n- vtk/vtkwriter.hh\n- vtk/volumewriter.hh\n+ a00965.html\n+ vtk/boundarywriter.hh\n+ vtk/subsamplingvtkwriter.hh\n+ vtk/vtksequencewriter.hh\n+ vtk/vtkwriter.hh\n+ vtk/volumewriter.hh\n \n \n b64enc.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00962.html\n+ a00788.html\n Dune::b64chunk\n Dune\n \n const char\n base64table\n a01063.html\n a0f8eaefa183de6150378561ac93d210a\n@@ -2052,247 +2052,247 @@\n a0f8eaefa183de6150378561ac93d210a\n []\n \n \n \n basicwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00914.html\n- dune/grid/io/file/vtk/common.hh\n- dune/grid/io/file/vtk/functionwriter.hh\n- dune/grid/io/file/vtk/pvtuwriter.hh\n- dune/grid/io/file/vtk/vtuwriter.hh\n+ a00785.html\n+ dune/grid/io/file/vtk/common.hh\n+ dune/grid/io/file/vtk/functionwriter.hh\n+ dune/grid/io/file/vtk/pvtuwriter.hh\n+ dune/grid/io/file/vtk/vtuwriter.hh\n Dune::VTK::BasicWriter\n Dune\n Dune::VTK\n \n \n boundaryiterators.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00932.html\n- dune/grid/io/file/vtk/corner.hh\n- dune/grid/io/file/vtk/corneriterator.hh\n- dune/grid/io/file/vtk/functionwriter.hh\n+ a00770.html\n+ dune/grid/io/file/vtk/corner.hh\n+ dune/grid/io/file/vtk/corneriterator.hh\n+ dune/grid/io/file/vtk/functionwriter.hh\n Dune::VTK::BoundaryIterator\n Dune::VTK::IntersectionIndexSet\n Dune::VTK::NonConformingBoundaryIteratorFactory\n Dune\n Dune::VTK\n \n \n boundarywriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00929.html\n- dune/grid/io/file/vtk/basicwriter.hh\n- dune/grid/io/file/vtk/boundaryiterators.hh\n- dune/grid/io/file/vtk/skeletonfunction.hh\n+ a00797.html\n+ dune/grid/io/file/vtk/basicwriter.hh\n+ dune/grid/io/file/vtk/boundaryiterators.hh\n+ dune/grid/io/file/vtk/skeletonfunction.hh\n Dune::VTK::NonConformingBoundaryWriter\n Dune\n Dune::VTK\n \n \n common.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00911.html\n+ a00794.html\n Dune::VTK::PrintType\n Dune::VTK::PrintType< unsigned char >\n Dune::VTK::PrintType< signed char >\n Dune::VTK::PrintType< char >\n Dune::VTK::FieldInfo\n Dune\n Dune::VTK\n \n \n corner.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00917.html\n- dune/grid/io/file/vtk/common.hh\n+ a00758.html\n+ dune/grid/io/file/vtk/common.hh\n Dune::VTK::Corner\n Dune\n Dune::VTK\n \n \n corneriterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00908.html\n- dune/grid/io/file/vtk/corner.hh\n+ a00776.html\n+ dune/grid/io/file/vtk/corner.hh\n Dune::VTK::CornerIterator\n Dune\n Dune::VTK\n \n \n dataarraywriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00950.html\n- dune/grid/io/file/vtk/streams.hh\n- dune/grid/io/file/vtk/common.hh\n+ a00761.html\n+ dune/grid/io/file/vtk/streams.hh\n+ dune/grid/io/file/vtk/common.hh\n Dune::VTK::DataArrayWriter\n Dune::VTK::AsciiDataArrayWriter\n Dune::VTK::BinaryDataArrayWriter\n Dune::VTK::AppendedRawDataArrayWriter\n Dune::VTK::AppendedBase64DataArrayWriter\n Dune::VTK::NakedBase64DataArrayWriter\n Dune::VTK::NakedRawDataArrayWriter\n Dune::VTK::DataArrayWriterFactory\n Dune\n Dune::VTK\n \n \n function.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00923.html\n- dune/grid/common/mcmgmapper.hh\n- dune/grid/io/file/vtk/common.hh\n+ a00815.html\n+ dune/grid/common/mcmgmapper.hh\n+ dune/grid/io/file/vtk/common.hh\n Dune::VTKFunction\n Dune::P0VTKFunction\n Dune::P1VTKFunction\n Dune\n \n \n functionwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00926.html\n- dune/grid/io/file/vtk/common.hh\n- dune/grid/io/file/vtk/dataarraywriter.hh\n- dune/grid/io/file/vtk/pvtuwriter.hh\n- dune/grid/io/file/vtk/vtuwriter.hh\n+ a00800.html\n+ dune/grid/io/file/vtk/common.hh\n+ dune/grid/io/file/vtk/dataarraywriter.hh\n+ dune/grid/io/file/vtk/pvtuwriter.hh\n+ dune/grid/io/file/vtk/vtuwriter.hh\n Dune::VTK::FunctionWriterBase\n Dune::VTK::VTKFunctionWriter\n Dune::VTK::CoordinatesWriter\n Dune::VTK::ConformingConnectivityWriter\n Dune::VTK::NonConformingConnectivityWriter\n Dune::VTK::OffsetsWriter\n Dune::VTK::TypesWriter\n Dune\n Dune::VTK\n \n \n pointiterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00920.html\n- dune/grid/io/file/vtk/corner.hh\n- dune/grid/io/file/vtk/corneriterator.hh\n+ a00812.html\n+ dune/grid/io/file/vtk/corner.hh\n+ dune/grid/io/file/vtk/corneriterator.hh\n Dune::VTK::PointIterator\n Dune\n Dune::VTK\n \n \n pvtuwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00944.html\n- dune/grid/io/file/vtk/common.hh\n+ a00767.html\n+ dune/grid/io/file/vtk/common.hh\n Dune::VTK::PVTUWriter\n Dune\n Dune::VTK\n \n \n skeletonfunction.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00935.html\n- dune/grid/io/file/vtk/functionwriter.hh\n- dune/grid/io/file/vtk/pvtuwriter.hh\n- dune/grid/io/file/vtk/vtuwriter.hh\n+ a00806.html\n+ dune/grid/io/file/vtk/functionwriter.hh\n+ dune/grid/io/file/vtk/pvtuwriter.hh\n+ dune/grid/io/file/vtk/vtuwriter.hh\n Dune::VTK::SkeletonFunctionTraits\n Dune::VTK::SkeletonFunctionInterface\n Dune::VTK::SkeletonFunctionWriter\n Dune\n Dune::VTK\n \n \n streams.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00959.html\n- dune/grid/io/file/vtk/b64enc.hh\n+ a00803.html\n+ dune/grid/io/file/vtk/b64enc.hh\n Dune::Base64Stream\n Dune::RawStream\n Dune\n \n \n subsamplingvtkwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00965.html\n- dune/grid/io/file/vtk/vtkwriter.hh\n- dune/grid/io/file/vtk/vtuwriter.hh\n+ a00791.html\n+ dune/grid/io/file/vtk/vtkwriter.hh\n+ dune/grid/io/file/vtk/vtuwriter.hh\n Dune::SubsamplingVTKWriter\n Dune\n \n \n volumeiterators.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00941.html\n- dune/grid/common/gridenums.hh\n- dune/grid/io/file/vtk/corner.hh\n- dune/grid/io/file/vtk/corneriterator.hh\n- dune/grid/io/file/vtk/functionwriter.hh\n- dune/grid/io/file/vtk/pointiterator.hh\n+ a00764.html\n+ dune/grid/common/gridenums.hh\n+ dune/grid/io/file/vtk/corner.hh\n+ dune/grid/io/file/vtk/corneriterator.hh\n+ dune/grid/io/file/vtk/functionwriter.hh\n+ dune/grid/io/file/vtk/pointiterator.hh\n Dune::VTK::ConformingVolumeIteratorFactory\n Dune::VTK::NonConformingVolumeIteratorFactory\n Dune\n Dune::VTK\n \n \n volumewriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00953.html\n- dune/grid/io/file/vtk/basicwriter.hh\n- dune/grid/io/file/vtk/function.hh\n- dune/grid/io/file/vtk/functionwriter.hh\n- dune/grid/io/file/vtk/volumeiterators.hh\n+ a00818.html\n+ dune/grid/io/file/vtk/basicwriter.hh\n+ dune/grid/io/file/vtk/function.hh\n+ dune/grid/io/file/vtk/functionwriter.hh\n+ dune/grid/io/file/vtk/volumeiterators.hh\n Dune::VTK::ConformingVolumeWriter\n Dune\n Dune::VTK\n \n \n vtksequencewriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00947.html\n- dune/grid/io/file/vtk/vtksequencewriterbase.hh\n- dune/grid/io/file/vtk/vtkwriter.hh\n- dune/grid/io/file/vtk/subsamplingvtkwriter.hh\n+ a00773.html\n+ dune/grid/io/file/vtk/vtksequencewriterbase.hh\n+ dune/grid/io/file/vtk/vtkwriter.hh\n+ dune/grid/io/file/vtk/subsamplingvtkwriter.hh\n Dune::VTKSequenceWriter\n Dune\n \n \n vtksequencewriterbase.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00938.html\n- dune/grid/io/file/vtk/common.hh\n- dune/grid/io/file/vtk/vtkwriter.hh\n+ a00779.html\n+ dune/grid/io/file/vtk/common.hh\n+ dune/grid/io/file/vtk/vtkwriter.hh\n Dune::VTKSequenceWriterBase\n Dune\n \n \n vtkwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00956.html\n- dune/grid/common/mcmgmapper.hh\n- dune/grid/common/gridenums.hh\n- dune/grid/io/file/vtk/common.hh\n- dune/grid/io/file/vtk/dataarraywriter.hh\n- dune/grid/io/file/vtk/function.hh\n- dune/grid/io/file/vtk/pvtuwriter.hh\n- dune/grid/io/file/vtk/streams.hh\n- dune/grid/io/file/vtk/vtuwriter.hh\n+ a00809.html\n+ dune/grid/common/mcmgmapper.hh\n+ dune/grid/common/gridenums.hh\n+ dune/grid/io/file/vtk/common.hh\n+ dune/grid/io/file/vtk/dataarraywriter.hh\n+ dune/grid/io/file/vtk/function.hh\n+ dune/grid/io/file/vtk/pvtuwriter.hh\n+ dune/grid/io/file/vtk/streams.hh\n+ dune/grid/io/file/vtk/vtuwriter.hh\n Dune::VTKWriter\n Dune::VTKWriter::VTKLocalFunction\n Dune::VTKWriter::VTKLocalFunction::FunctionWrapperBase\n Dune::VTKWriter::VTKLocalFunction::FunctionWrapper\n Dune::VTKWriter::VTKLocalFunction::GlobalFunctionWrapper\n Dune::VTKWriter::VTKLocalFunction::VTKFunctionWrapper\n Dune::VTKWriter::CellIterator\n Dune::VTKWriter::VertexIterator\n Dune::VTKWriter::CornerIterator\n Dune\n \n \n vtuwriter.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/io/file/vtk/\n- a00905.html\n- dune/grid/io/file/vtk/common.hh\n- dune/grid/io/file/vtk/dataarraywriter.hh\n+ a00782.html\n+ dune/grid/io/file/vtk/common.hh\n+ dune/grid/io/file/vtk/dataarraywriter.hh\n Dune::VTK::VTUWriter\n Dune\n Dune::VTK\n \n \n onedgrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n@@ -2310,15 +2310,15 @@\n Dune\n Dune::Capabilities\n \n \n uggrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n a00974.html\n- dune/grid/common/boundarysegment.hh\n+ dune/grid/common/boundarysegment.hh\n dune/grid/common/capabilities.hh\n dune/grid/common/grid.hh\n uggrid/uggridfactory.hh\n Dune::UGGridFamily\n Dune::UGGrid\n Dune::Capabilities::hasEntity< UGGrid< dim >, codim >\n Dune::Capabilities::hasEntityIterator< UGGrid< dim >, codim >\n@@ -2393,187 +2393,187 @@\n \n \n \n \n uggridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/uggrid/\n a00977.html\n- dune/grid/common/boundarysegment.hh\n+ dune/grid/common/boundarysegment.hh\n dune/grid/common/gridfactory.hh\n dune/grid/uggrid.hh\n Dune::GridFactory< UGGrid< dimworld > >\n Dune::GridFactory< UGGrid< dimworld > >::Codim\n Dune\n \n \n entitycommhelper.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00995.html\n- dune/grid/common/gridenums.hh\n+ a00986.html\n+ dune/grid/common/gridenums.hh\n Dune::EntityCommHelper< InteriorBorder_InteriorBorder_Interface >\n Dune::EntityCommHelper< InteriorBorder_All_Interface >\n Dune::EntityCommHelper< Overlap_OverlapFront_Interface >\n Dune::EntityCommHelper< Overlap_All_Interface >\n Dune::EntityCommHelper< All_All_Interface >\n Dune\n \n \n globalindexset.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01004.html\n- dune/grid/common/gridenums.hh\n- dune/grid/common/datahandleif.hh\n+ a00989.html\n+ dune/grid/common/gridenums.hh\n+ dune/grid/common/datahandleif.hh\n Dune::GlobalIndexSet\n Dune::GlobalIndexSet::SubPartitionTypeProvider\n Dune::GlobalIndexSet::SubPartitionTypeProvider< Entity, 0 >\n Dune\n \n \n gridinfo-gmsh-main.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01007.html\n- dune/grid/io/file/gmshreader.hh\n+ a00998.html\n+ dune/grid/io/file/gmshreader.hh\n dune/grid/utility/gridinfo.hh\n \n \n gridtype.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00992.html\n+ a01004.html\n \n \n hierarchicsearch.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00998.html\n+ a01019.html\n dune/grid/common/grid.hh\n- dune/grid/common/gridenums.hh\n+ dune/grid/common/gridenums.hh\n Dune::HierarchicSearch\n Dune\n \n \n hostgridaccess.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01016.html\n+ a01010.html\n dune/grid/geometrygrid/intersection.hh\n Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >\n Dune::HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >::Codim\n Dune::HostGridAccess< IdentityGrid< HG > >\n Dune::HostGridAccess< IdentityGrid< HG > >::Codim\n Dune\n \n \n multiindex.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01010.html\n+ a01001.html\n Dune::FactoryUtilities::MultiIndex\n Dune\n Dune::FactoryUtilities\n \n \n parmetisgridpartitioner.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01019.html\n- dune/grid/utility/globalindexset.hh\n- dune/grid/common/mcmgmapper.hh\n- dune/grid/common/rangegenerators.hh\n+ a00983.html\n+ dune/grid/utility/globalindexset.hh\n+ dune/grid/common/mcmgmapper.hh\n+ dune/grid/common/rangegenerators.hh\n \n \n persistentcontainerinterface.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00989.html\n+ a00995.html\n Dune::PersistentContainerInterface\n Dune\n \n \n persistentcontainermap.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00986.html\n+ a01013.html\n dune/grid/common/capabilities.hh\n Dune::PersistentContainerMap\n Dune::PersistentContainerMap::IteratorWrapper\n Dune\n \n \n persistentcontainervector.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01013.html\n+ a00992.html\n Dune::PersistentContainerVector\n Dune\n \n \n persistentcontainerwrapper.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a01001.html\n- dune/grid/utility/hostgridaccess.hh\n+ a00980.html\n+ dune/grid/utility/hostgridaccess.hh\n dune/grid/utility/persistentcontainer.hh\n Dune::PersistentContainerWrapper\n Dune\n \n \n tensorgridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00983.html\n+ a01007.html\n dune/grid/common/gridfactory.hh\n dune/grid/yaspgrid.hh\n- dune/grid/utility/multiindex.hh\n+ dune/grid/utility/multiindex.hh\n Dune::TensorGridFactory\n Dune::TensorGridFactoryCreator\n Dune::TensorGridFactoryCreator< YaspGrid< dim, TensorProductCoordinates< ctype, dim > > >\n Dune\n \n \n vertexorderfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/utility/\n- a00980.html\n+ a01016.html\n Dune::VertexOrderByIdFactory\n Dune::VertexOrderByIdFactory::VertexOrder\n Dune\n \n \n yaspgrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/\n a01022.html\n dune/grid/common/backuprestore.hh\n dune/grid/common/grid.hh\n dune/grid/common/capabilities.hh\n- dune/grid/common/indexidset.hh\n- dune/grid/common/datahandleif.hh\n- dune/grid/yaspgrid/coordinates.hh\n- dune/grid/yaspgrid/torus.hh\n- dune/grid/yaspgrid/ygrid.hh\n- dune/grid/yaspgrid/yaspgridgeometry.hh\n- dune/grid/yaspgrid/yaspgridentity.hh\n- dune/grid/yaspgrid/yaspgridintersection.hh\n+ dune/grid/common/indexidset.hh\n+ dune/grid/common/datahandleif.hh\n+ dune/grid/yaspgrid/coordinates.hh\n+ dune/grid/yaspgrid/torus.hh\n+ dune/grid/yaspgrid/ygrid.hh\n+ dune/grid/yaspgrid/yaspgridgeometry.hh\n+ dune/grid/yaspgrid/yaspgridentity.hh\n+ dune/grid/yaspgrid/yaspgridintersection.hh\n dune/grid/yaspgrid/yaspgridintersectioniterator.hh\n- dune/grid/yaspgrid/yaspgridhierarchiciterator.hh\n- dune/grid/yaspgrid/yaspgridentityseed.hh\n- dune/grid/yaspgrid/yaspgridleveliterator.hh\n- dune/grid/yaspgrid/yaspgridindexsets.hh\n- dune/grid/yaspgrid/yaspgrididset.hh\n- dune/grid/yaspgrid/yaspgridpersistentcontainer.hh\n- dune/grid/yaspgrid/structuredyaspgridfactory.hh\n+ dune/grid/yaspgrid/yaspgridhierarchiciterator.hh\n+ dune/grid/yaspgrid/yaspgridentityseed.hh\n+ dune/grid/yaspgrid/yaspgridleveliterator.hh\n+ dune/grid/yaspgrid/yaspgridindexsets.hh\n+ dune/grid/yaspgrid/yaspgrididset.hh\n+ dune/grid/yaspgrid/yaspgridpersistentcontainer.hh\n+ dune/grid/yaspgrid/structuredyaspgridfactory.hh\n dune/grid/yaspgrid/backuprestore.hh\n Dune::YaspGridFamily\n Dune::YaspGrid\n Dune\n Dune::Capabilities\n \n \n coordinates.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00161.html\n+ a00203.html\n Dune::EquidistantCoordinates\n Dune::EquidistantOffsetCoordinates\n Dune::TensorProductCoordinates\n Dune\n Dune::Yasp\n \n \n partitioning.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00203.html\n+ a00233.html\n Dune::Yasp::Partitioning\n Dune::Yasp::DefaultPartitioning\n Dune::Yasp::PowerDPartitioning\n Dune::Yasp::FixedSizePartitioning\n Dune::YLoadBalance\n Dune::YLoadBalanceForward\n Dune::YLoadBalanceDefault\n@@ -2581,114 +2581,114 @@\n Dune::YaspFixedSizePartitioner\n Dune\n Dune::Yasp\n \n \n structuredyaspgridfactory.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00218.html\n+ a00194.html\n dune/grid/utility/structuredgridfactory.hh\n Dune::StructuredGridFactory< YaspGrid< dim, EquidistantCoordinates< ctype, dim > > >\n Dune::StructuredGridFactory< YaspGrid< dim, EquidistantOffsetCoordinates< ctype, dim > > >\n Dune\n \n \n torus.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00158.html\n- dune/grid/common/exceptions.hh\n- partitioning.hh\n+ a00179.html\n+ dune/grid/common/exceptions.hh\n+ partitioning.hh\n Dune::Torus\n Dune::Torus::ProcListIterator\n Dune\n \n \n yaspgridentity.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00221.html\n+ a00176.html\n Dune::YaspEntity\n Dune::YaspEntity< 0, dim, GridImp >\n Dune::YaspEntity< 0, dim, GridImp >::Codim\n Dune::YaspEntity< dim, dim, GridImp >\n Dune\n Dune::Yasp\n \n \n yaspgridentityseed.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00194.html\n+ a00215.html\n Dune::YaspEntitySeed\n Dune\n \n \n yaspgridgeometry.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00164.html\n+ a00167.html\n Dune::YaspGeometry\n Dune::YaspGeometry< mydim, mydim, GridImp >\n Dune::YaspGeometry< 0, cdim, GridImp >\n Dune\n \n \n yaspgridhierarchiciterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00200.html\n+ a00212.html\n Dune::YaspHierarchicIterator\n Dune\n \n \n yaspgrididset.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00224.html\n+ a00209.html\n Dune::YaspGlobalIdSet\n Dune\n \n \n yaspgridindexsets.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00155.html\n+ a00161.html\n Dune::YaspIndexSet\n Dune\n \n \n yaspgridintersection.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00233.html\n+ a00218.html\n Dune::YaspIntersection\n Dune\n \n \n yaspgridintersectioniterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n a00170.html\n Dune::YaspIntersectionIterator\n Dune\n \n \n yaspgridleveliterator.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00209.html\n+ a00224.html\n Dune::YaspLevelIterator\n Dune\n \n \n yaspgridpersistentcontainer.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00215.html\n+ a00188.html\n dune/grid/utility/persistentcontainer.hh\n- dune/grid/utility/persistentcontainervector.hh\n+ dune/grid/utility/persistentcontainervector.hh\n ../yaspgrid.hh\n Dune::YaspPersistentContainerIndex\n Dune::PersistentContainer< YaspGrid< dim, CoordCont >, T >\n Dune\n \n \n ygrid.hh\n /build/reproducible-path/dune-grid-2.9.0/dune/grid/yaspgrid/\n- a00185.html\n+ a00200.html\n Dune::YGridComponent\n Dune::YGridComponent::Iterator\n Dune::YGrid\n Dune::YGrid::Iterator\n Dune::YGridList\n Dune::YGridList::Intersection\n Dune::YGridList::Iterator\n"}]}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/files.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/files.html", "unified_diff": "@@ -73,247 +73,247 @@\n \n
    \n
    Here is a list of all files with brief descriptions:
    \n
    [detail level 1234567]
    \n \n \n \n-\n-\n+\n+\n \n \n \n-\n+\n \n-\n-\n-\n+\n+\n+\n \n \n-\n+\n \n \n \n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n \n \n-\n+\n \n-\n-\n+\n+\n \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n-\n+\n \n-\n-\n-\n-\n+\n+\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n \n-\n+\n \n \n \n-\n+\n \n \n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n \n \n-\n+\n \n-\n-\n-\n+\n+\n+\n \n-\n+\n \n \n \n \n \n \n-\n-\n-\n+\n+\n+\n \n \n \n-\n+\n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n-\n+\n+\n+\n \n \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n+\n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n \n \n \n-\n-\n-\n+\n+\n+\n \n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n \n-\n-\n-\n-\n+\n+\n+\n+\n \n-\n-\n+\n+\n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\n-\n-\n+\n+\n+\n \n \n \n \n \n \n
      doc
     doxygen
      recipes
     recipe-integration.cc
     recipe-iterate-over-grid.cc
     recipe-integration.cc
     recipe-iterate-over-grid.cc
      dune
      grid
      albertagrid
     agrid.hhAlbertaGrid class
     agrid.hhAlbertaGrid class
     albertagrid.cc
     albertaheader.hh
     albertareader.hh
     algebra.hh
     albertaheader.hh
     albertareader.hh
     algebra.hh
     backuprestore.hh
     capabilities.hh
     coordcache.hh
     coordcache.hh
     datahandle.hh
     dgfparser.cc
     dgfparser.hh
     dofadmin.hh
     dofvector.hh
     elementinfo.ccWrapper for ALBERTA's el_info structure
     elementinfo.hhWrapper for ALBERTA's el_info structure
     entity.cc
     dofadmin.hh
     dofvector.hh
     elementinfo.ccWrapper for ALBERTA's el_info structure
     elementinfo.hhWrapper for ALBERTA's el_info structure
     entity.cc
     entity.hh
     entityseed.hh
     geometry.cc
     geometry.cc
     geometry.hh
     geometrycache.hh
     geometryreference.hhWrapper and interface classes for element geometries
     geometrycache.hh
     geometryreference.hhWrapper and interface classes for element geometries
     gridfactory.hhSpecialization of the generic GridFactory for AlbertaGrid
     gridfamily.hhGridFamily for AlbertaGrid
     gridview.hh
     hierarchiciterator.hh
     indexsets.cc
     hierarchiciterator.hh
     indexsets.cc
     indexsets.hh
     indexstack.hhProvides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid)
     intersection.cc
     indexstack.hhProvides an index stack that supplies indices for element numbering for a grid (i.e. AlbertaGrid and ALUGrid)
     intersection.cc
     intersection.hh
     intersectioniterator.hhImplementation of the IntersectionIterator for AlbertaGrid
     leafiterator.hh
     level.hh
     leveliterator.hh
     macrodata.ccWrapper for ALBERTA's macro_data structure
     macrodata.hhWrapper for ALBERTA's macro_data structure
     macroelement.hh
     meshpointer.cc
     meshpointer.hhWrapper for ALBERTA's mesh structure
     misc.hh
     leafiterator.hh
     level.hh
     leveliterator.hh
     macrodata.ccWrapper for ALBERTA's macro_data structure
     macrodata.hhWrapper for ALBERTA's macro_data structure
     macroelement.hh
     meshpointer.cc
     meshpointer.hhWrapper for ALBERTA's mesh structure
     misc.hh
     persistentcontainer.hh
     projection.hh
     refinement.hhWrapper for ALBERTA's refinement patches and the corners for geometryInFather
     refinement.hhWrapper for ALBERTA's refinement patches and the corners for geometryInFather
     structuredgridfactory.hhSpecialization of the generic StructuredGridFactory for AlbertaGrid
     transformation.hh
     treeiterator.hh
     undefine-2.0.hhContains #undefs for all preprocessor macros defined by alberta
     undefine-3.0.hhContains #undefs for all preprocessor macros defined by alberta
     transformation.hh
     treeiterator.hh
     undefine-2.0.hhContains #undefs for all preprocessor macros defined by alberta
     undefine-3.0.hhContains #undefs for all preprocessor macros defined by alberta
      common
     adaptcallback.hhInterfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
     adaptcallback.hhInterfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
     backuprestore.hh
     boundaryprojection.hh
     boundarysegment.hhBase class for grid boundary segments of arbitrary geometry
     boundaryprojection.hh
     boundarysegment.hhBase class for grid boundary segments of arbitrary geometry
     capabilities.hhA set of traits classes to store static information about grid implementation
     datahandleif.hhDescribes the parallel communication interface class for MessageBuffers and DataHandles
     defaultgridview.hh
     datahandleif.hhDescribes the parallel communication interface class for MessageBuffers and DataHandles
     defaultgridview.hh
     entity.hh
     entityiterator.hh
     entityiterator.hh
     entityseed.hhInterface class EntitySeed
     exceptions.hh
     exceptions.hh
     geometry.hhWrapper and interface classes for element geometries
     grid.hhDifferent resources needed by all grid implementations
     gridenums.hh
     gridenums.hh
     gridfactory.hhProvide a generic factory class for unstructured grids
     gridinfo.hhSome functions to list information about a grid
     gridview.hh
     indexidset.hhProvides base classes for index and id sets
     indexidset.hhProvides base classes for index and id sets
     intersection.hh
     intersectioniterator.hh
     mapper.hhProvides classes with basic mappers which are used to attach data to a grid
     mcmgmapper.hhMapper for multiple codim and multiple geometry types
     partitionset.hh
     rangegenerators.hh
     scsgmapper.hhMapper classes are used to attach data to a grid
     sizecache.hhProvides size cache classes to implement the grids size method efficiently
     mapper.hhProvides classes with basic mappers which are used to attach data to a grid
     mcmgmapper.hhMapper for multiple codim and multiple geometry types
     partitionset.hh
     rangegenerators.hh
     scsgmapper.hhMapper classes are used to attach data to a grid
     sizecache.hhProvides size cache classes to implement the grids size method efficiently
      geometrygrid
     backuprestore.hh
     cachedcoordfunction.hh
     cachedcoordfunction.hh
     capabilities.hh
     coordfunction.hh
     coordfunctioncaller.hh
     cornerstorage.hh
     coordfunction.hh
     coordfunctioncaller.hh
     cornerstorage.hh
     datahandle.hh
     declaration.hh
     declaration.hh
     entity.hh
     entityseed.hh
     geometry.hh
     grid.hh
     gridfamily.hh
     gridview.hh
     hostcorners.hh
     identity.hh
     idset.hh
     hostcorners.hh
     identity.hh
     idset.hh
     indexsets.hh
     intersection.hh
     intersectioniterator.hh
     iterator.hh
     iterator.hh
     persistentcontainer.hh
      identitygrid
     identitygridentity.hhThe IdentityGridEntity class
     identitygridentityseed.hhThe IdentityGridEntitySeed class
     identitygridentity.hhThe IdentityGridEntity class
     identitygridentityseed.hhThe IdentityGridEntitySeed class
     identitygridgeometry.hhThe IdentityGridGeometry class and its specializations
     identitygridhierarchiciterator.hhThe IdentityGridHierarchicIterator class
     identitygridindexsets.hhThe index and id sets for the IdentityGrid class
     identitygridhierarchiciterator.hhThe IdentityGridHierarchicIterator class
     identitygridindexsets.hhThe index and id sets for the IdentityGrid class
     identitygridintersectioniterator.hhThe IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes
     identitygridintersections.hhThe IdentityGridLeafIntersection and IdentityGridLevelIntersection classes
     identitygridleafiterator.hhThe IdentityGridLeafIterator class
     identitygridleveliterator.hhThe IdentityGridLevelIterator class
     identitygridintersections.hhThe IdentityGridLeafIntersection and IdentityGridLevelIntersection classes
     identitygridleafiterator.hhThe IdentityGridLeafIterator class
     identitygridleveliterator.hhThe IdentityGridLevelIterator class
      io
      file
      dgfparser
      blocks
     basic.cc
     basic.hh
     boundarydom.cc
     boundarydom.hh
     boundaryseg.cc
     boundaryseg.hh
     cube.cc
     cube.hh
     dim.cc
     dim.hh
     general.cc
     general.hh
     gridparameter.cc
     gridparameter.hh
     interval.cc
     interval.hh
     periodicfacetrans.cc
     periodicfacetrans.hh
     polygon.hh
     polyhedron.hh
     projection.cc
     basic.cc
     basic.hh
     boundarydom.cc
     boundarydom.hh
     boundaryseg.cc
     boundaryseg.hh
     cube.cc
     cube.hh
     dim.cc
     dim.hh
     general.cc
     general.hh
     gridparameter.cc
     gridparameter.hh
     interval.cc
     interval.hh
     periodicfacetrans.cc
     periodicfacetrans.hh
     polygon.hh
     polyhedron.hh
     projection.cc
     projection.hh
     simplex.cc
     simplex.hh
     simplexgeneration.cc
     simplexgeneration.hh
     vertex.cc
     vertex.hh
     simplex.cc
     simplex.hh
     simplexgeneration.cc
     simplexgeneration.hh
     vertex.cc
     vertex.hh
      utils
     dgf2dgf.ccSmall program converting a DGF file into a DGF file
     gmsh2dgf.ccSmall program converting a gmsh file into a DGF file
     dgfexception.hh
     dgfgeogrid.hh
     dgfgridfactory.hh
     dgfidentitygrid.hh
     dgfoned.hh
     dgf2dgf.ccSmall program converting a DGF file into a DGF file
     gmsh2dgf.ccSmall program converting a gmsh file into a DGF file
     dgfexception.hh
     dgfgeogrid.hh
     dgfgridfactory.hh
     dgfidentitygrid.hh
     dgfoned.hh
     dgfparser.cc
     dgfparser.hh
     dgfug.cc
     dgfug.hh
     dgfwriter.hhWrite a GridView to a DGF file
     dgfyasp.hh
     entitykey.hh
     entitykey_inline.hh
     gridptr.hh
     macrogrid.hh
     parser.hh
     dgfug.cc
     dgfug.hh
     dgfwriter.hhWrite a GridView to a DGF file
     dgfyasp.hh
     entitykey.hh
     entitykey_inline.hh
     gridptr.hh
     macrogrid.hh
     parser.hh
      gnuplot
     gnuplot.ccImplementation of gnuplot output for 1D and 2D grids
     gnuplot.ccImplementation of gnuplot output for 1D and 2D grids
      vtk
     b64enc.hhSimple base64 encode
     basicwriter.hh
     boundaryiterators.hhFunctions for VTK output on the skeleton
     boundarywriter.hh
     common.hhCommon stuff for the VTKWriter
     corner.hh
     corneriterator.hh
     dataarraywriter.hhData array writers for the VTKWriter
     function.hhFunctions for VTK output
     functionwriter.hh
     pointiterator.hh
     pvtuwriter.hh
     skeletonfunction.hhFunctions for VTK output on the skeleton
     streams.hh
     subsamplingvtkwriter.hhProvides subsampled file i/o for the visualization toolkit
     volumeiterators.hh
     volumewriter.hh
     vtksequencewriter.hh
     vtksequencewriterbase.hh
     vtkwriter.hhProvides file i/o for the visualization toolkit
     vtuwriter.hh
     b64enc.hhSimple base64 encode
     basicwriter.hh
     boundaryiterators.hhFunctions for VTK output on the skeleton
     boundarywriter.hh
     common.hhCommon stuff for the VTKWriter
     corner.hh
     corneriterator.hh
     dataarraywriter.hhData array writers for the VTKWriter
     function.hhFunctions for VTK output
     functionwriter.hh
     pointiterator.hh
     pvtuwriter.hh
     skeletonfunction.hhFunctions for VTK output on the skeleton
     streams.hh
     subsamplingvtkwriter.hhProvides subsampled file i/o for the visualization toolkit
     volumeiterators.hh
     volumewriter.hh
     vtksequencewriter.hh
     vtksequencewriterbase.hh
     vtkwriter.hhProvides file i/o for the visualization toolkit
     vtuwriter.hh
     dgfparser.hh
     gmshreader.hh
     gmshwriter.hh
     gnuplot.hhProvides gnuplot output for 1D Grids
     printgrid.hh
     starcdreader.hh
     vtk.hhConvenience header which includes all available VTK writers
     gmshreader.hh
     gmshwriter.hh
     gnuplot.hhProvides gnuplot output for 1D Grids
     printgrid.hh
     starcdreader.hh
     vtk.hhConvenience header which includes all available VTK writers
      uggrid
     uggridfactory.hhThe specialization of the generic GridFactory for UGGrid
      utility
     entitycommhelper.hh
     globalindexset.hhProvides a globally unique index for all entities of a distributed Dune grid
     gridinfo-gmsh-main.hhGeneric main() function for printing information about a mesh read from a .msh-file
     entitycommhelper.hh
     globalindexset.hhProvides a globally unique index for all entities of a distributed Dune grid
     gridinfo-gmsh-main.hhGeneric main() function for printing information about a mesh read from a .msh-file
     gridinfo.hh
     gridtype.hhThis file can be included directly following config.h to test if a grid type was correctly selected
     hierarchicsearch.hhUtility class for hierarchically searching for an Entity containing a given point
     hostgridaccess.hh
     multiindex.hhImplements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes
     parmetisgridpartitioner.hhCompute a repartitioning of a Dune grid using ParMetis
     gridtype.hhThis file can be included directly following config.h to test if a grid type was correctly selected
     hierarchicsearch.hhUtility class for hierarchically searching for an Entity containing a given point
     hostgridaccess.hh
     multiindex.hhImplements a multiindex with arbitrary dimension and fixed index ranges This is used by various factory classes
     parmetisgridpartitioner.hhCompute a repartitioning of a Dune grid using ParMetis
     persistentcontainer.hh
     persistentcontainerinterface.hh
     persistentcontainermap.hh
     persistentcontainervector.hh
     persistentcontainerwrapper.hh
     persistentcontainerinterface.hh
     persistentcontainermap.hh
     persistentcontainervector.hh
     persistentcontainerwrapper.hh
     structuredgridfactory.hhA class to construct structured cube and simplex grids using the grid factory
     tensorgridfactory.hhThis file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series
     vertexorderfactory.hh
     tensorgridfactory.hhThis file provides a factory class for tensorproduct grids. This is a collection of methods to generate monotonous sequences as needed for a tensorproduct grid. Apart from easy ones for locally equidistant grids, there are also more involved methods like splitting a range according to a geometric series
     vertexorderfactory.hh
      yaspgrid
     backuprestore.hh
     coordinates.hhThis provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here
     partitioning.hhThis file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning
     structuredyaspgridfactory.hhSpecialization of the StructuredGridFactory class for YaspGrid
     torus.hhThis file provides the infrastructure for toroidal communication in YaspGrid
     yaspgridentity.hhYaspEntity class and its specializations
     yaspgridentityseed.hhThe YaspEntitySeed class
     yaspgridgeometry.hhThe YaspGeometry class and its specializations
     yaspgridhierarchiciterator.hh
     yaspgrididset.hh
     yaspgridindexsets.hhLevel-wise, non-persistent, consecutive indices for YaspGrid
     yaspgridintersection.hhThe YaspIntersection class
     coordinates.hhThis provides container classes for the coordinates to be used in YaspGrid Upon implementation of the tensorproduct feature, the coordinate information has been encapsulated to keep performance for the equidistant grid. Containers for equidistant and tensorproduct grids are provided here
     partitioning.hhThis file provides tools to partition YaspGrids. If you want to write your own partitioner, inherit from Yasp::Partitioning and implement the partition() method. You can also browse this file for already available useful partitioners, like Yasp::FixedSizePartitioning
     structuredyaspgridfactory.hhSpecialization of the StructuredGridFactory class for YaspGrid
     torus.hhThis file provides the infrastructure for toroidal communication in YaspGrid
     yaspgridentity.hhYaspEntity class and its specializations
     yaspgridentityseed.hhThe YaspEntitySeed class
     yaspgridgeometry.hhThe YaspGeometry class and its specializations
     yaspgridhierarchiciterator.hh
     yaspgrididset.hh
     yaspgridindexsets.hhLevel-wise, non-persistent, consecutive indices for YaspGrid
     yaspgridintersection.hhThe YaspIntersection class
     yaspgridintersectioniterator.hhThe YaspIntersectionIterator class
     yaspgridleveliterator.hhThe YaspLevelIterator class
     yaspgridpersistentcontainer.hhSpecialization of the PersistentContainer for YaspGrid
     ygrid.hhThis provides a YGrid, the elemental component of the yaspgrid implementation
     yaspgridleveliterator.hhThe YaspLevelIterator class
     yaspgridpersistentcontainer.hhSpecialization of the PersistentContainer for YaspGrid
     ygrid.hhThis provides a YGrid, the elemental component of the yaspgrid implementation
     albertagrid.hh
     geometrygrid.hh
     identitygrid.hhThe IdentityGrid class
     onedgrid.hhThe OneDGrid class
     uggrid.hhThe UGGrid class
     yaspgrid.hh
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/globals.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/globals.html", "unified_diff": "@@ -69,30 +69,30 @@\n
    \n \n
    \n
    Here is a list of all file members with links to the files they belong to:
    \n
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/globals_defs.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/globals_defs.html", "unified_diff": "@@ -69,25 +69,25 @@\n
    \n \n
    \n
    Here is a list of all macros with links to the files they belong to:
    \n \n \n \n \n
    \n
    Here is a list of all functions with links to the files they belong to:
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00143.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00146.html", "comments": ["Files 91% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: recipe-integration.cc File Reference\n+dune-grid: recipe-iterate-over-grid.cc File Reference\n \n \n \n \n \n \n \n@@ -71,29 +71,27 @@\n \n \n \n
    \n \n-
    recipe-integration.cc File Reference
    \n+
    recipe-iterate-over-grid.cc File Reference
    \n
    \n
    \n
    #include <math.h>
    \n #include <iostream>
    \n #include <dune/common/parallel/mpihelper.hh>
    \n #include <dune/common/parametertreeparser.hh>
    \n #include <dune/common/timer.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n #include <dune/grid/yaspgrid.hh>
    \n
    \n \n-\n+\n \n

    \n Functions

    int main (int argc, char **argv)
    int main (int argc, char **argv)
     
    \n

    Function Documentation

    \n \n

    ◆ main()

    \n \n
    \n@@ -115,21 +113,18 @@\n \n )\n \n \n \n
    \n

    [set up grid]

    \n-

    [small vectors and matrices]

    \n-

    [a function to integrate]

    \n-

    [integration with midpoint rule]

    \n-

    [integration with quadrature rule]

    \n-

    [integrating a flux]

    \n-
    Examples
    recipe-integration.cc, and recipe-iterate-over-grid.cc.
    \n-
    \n+

    [extract gridview]

    \n+

    [iterate over codim]

    \n+

    [iterate over grid view]

    \n+

    [access to subentities]

    \n \n
    \n
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,34 +1,29 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bo_\bc\n * _\br_\be_\bc_\bi_\bp_\be_\bs\n _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-recipe-integration.cc File Reference\n+recipe-iterate-over-grid.cc File Reference\n #include \n #include \n #include \n #include \n #include \n-#include \n-#include \n #include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b._\bh_\bh>\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n int\u00a0 _\bm_\ba_\bi_\bn (int argc, char **argv)\n \u00a0\n *\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bai\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n int main ( int\u00a0 a\bar\brg\bgc\bc,\n char **\u00a0 a\bar\brg\bgv\bv\u00a0\n )\n [set up grid]\n-[small vectors and matrices]\n-[a function to integrate]\n-[integration with midpoint rule]\n-[integration with quadrature rule]\n-[integrating a flux]\n- Examples\n- _\br_\be_\bc_\bi_\bp_\be_\b-_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\b._\bc_\bc, and _\br_\be_\bc_\bi_\bp_\be_\b-_\bi_\bt_\be_\br_\ba_\bt_\be_\b-_\bo_\bv_\be_\br_\b-_\bg_\br_\bi_\bd_\b._\bc_\bc.\n+[extract gridview]\n+[iterate over codim]\n+[iterate over grid view]\n+[access to subentities]\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00155.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00251.html", "comments": ["Files 96% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridindexsets.hh File Reference\n+dune-grid: exceptions.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    yaspgridindexsets.hh File Reference
    \n+
    exceptions.hh File Reference
    \n
    \n
    \n-\n-

    level-wise, non-persistent, consecutive indices for YaspGrid \n-More...

    \n-\n-

    Go to the source code of this file.

    \n+
    #include <dune/common/exceptions.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n Classes

    class  Dune::YaspIndexSet< GridImp, isLeafIndexSet >
     Implementation of Level- and LeafIndexSets for YaspGrid. More...
    class  Dune::GridError
     Base class for exceptions in Dune grid modules. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-

    Detailed Description

    \n-

    level-wise, non-persistent, consecutive indices for YaspGrid

    \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,21 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\by_\ba_\bs_\bp_\bg_\br_\bi_\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-yaspgridindexsets.hh File Reference\n-level-wise, non-persistent, consecutive indices for YaspGrid _\bM_\bo_\br_\be_\b._\b._\b.\n+exceptions.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bi_\bs_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b _\b>\n-\u00a0 Implementation of Level- and LeafIndexSets for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+\u00a0 Base class for exceptions in _\bD_\bu_\bn_\be grid modules. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\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-level-wise, non-persistent, consecutive indices for YaspGrid\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00155_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00593_source.html", "comments": ["Files 90% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridindexsets.hh Source File\n+dune-grid: idset.hh Source File\n \n \n \n \n \n \n \n@@ -70,147 +70,136 @@\n \n \n \n \n \n \n \n
    \n-
    yaspgridindexsets.hh
    \n+
    idset.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDINDEXSET_HH
    \n-
    6#define DUNE_GRID_YASPGRIDINDEXSET_HH
    \n+
    5#ifndef DUNE_GEOGRID_IDSET_HH
    \n+
    6#define DUNE_GEOGRID_IDSET_HH
    \n
    7
    \n-
    14namespace Dune {
    \n+\n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    12
    \n+
    13 namespace GeoGrid
    \n+
    14 {
    \n
    15
    \n-
    22 template<class GridImp, bool isLeafIndexSet>
    \n-
    \n-\n-
    24 : public IndexSet< GridImp, YaspIndexSet< GridImp, isLeafIndexSet >, unsigned int >
    \n-
    25 {
    \n-\n-\n-
    28
    \n-
    29 public:
    \n-
    30 typedef typename Base::IndexType IndexType;
    \n-
    31
    \n-
    32 using Base::subIndex;
    \n-
    33
    \n-
    \n-
    35 YaspIndexSet ( const GridImp &g, int l )
    \n-
    36 : grid( g ),
    \n-
    37 level( l )
    \n-
    38 {
    \n-
    39 assert(not isLeafIndexSet);
    \n+
    16 // IdSet
    \n+
    17 // -----
    \n+
    18
    \n+
    19 template< class Grid, class HostIdSet >
    \n+
    \n+
    20 class IdSet
    \n+
    21 : public Dune::IdSet< Grid, IdSet< Grid, HostIdSet >, typename HostIdSet::IdType >
    \n+
    22 {
    \n+\n+\n+
    25
    \n+
    26 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n+
    27
    \n+
    28 public:
    \n+
    29 typedef typename HostIdSet::IdType IdType;
    \n+
    30
    \n+
    31 using Base::subId;
    \n+
    32
    \n+
    \n+\n+
    34 : hostIdSet_( 0 )
    \n+
    35 {}
    \n+
    \n+
    36
    \n+
    \n+
    37 explicit IdSet ( const HostIdSet &hostIdSet )
    \n+
    38 : hostIdSet_( &hostIdSet )
    \n+
    39 {}
    \n+
    \n
    40
    \n-
    41 // contains a single element type;
    \n-
    42 for (int codim=0; codim<=GridImp::dimension; codim++)
    \n-
    43 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-
    47 YaspIndexSet ( const GridImp &g )
    \n-
    48 : grid( g )
    \n-
    49 {
    \n-
    50 assert(isLeafIndexSet);
    \n-
    51
    \n-
    52 // contains a single element type;
    \n-
    53 for (int codim=0; codim<=GridImp::dimension; codim++)
    \n-
    54 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));
    \n-
    55 }
    \n+
    \n+
    41 IdSet ( const This &other )
    \n+
    42 : hostIdSet_( other.hostIdSet_ )
    \n+
    43 {}
    \n+
    \n+
    44
    \n+
    \n+
    45 const This &operator= ( const This &other )
    \n+
    46 {
    \n+
    47 hostIdSet_ = other.hostIdSet_;
    \n+
    48 return *this;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    51 template< int codim >
    \n+
    \n+
    52 IdType id ( const typename Traits::template Codim< codim >::Entity &entity ) const
    \n+
    53 {
    \n+
    54 return entity.impl().id( hostIdSet() );
    \n+
    55 }
    \n
    \n
    56
    \n-
    58 template<int cc>
    \n-
    \n-
    59 IndexType index (const typename std::remove_const<GridImp>::type::Traits::template Codim<cc>::Entity& e) const
    \n-
    60 {
    \n-
    61 return e.impl().compressedIndex();
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    65 template< int cc >
    \n-
    \n-
    66 IndexType subIndex ( const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e,
    \n-
    67 int i, unsigned int codim ) const
    \n-
    68 {
    \n-
    69 return e.impl().subCompressedIndex(i, codim);
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-
    73 std::size_t size (GeometryType type) const
    \n-
    74 {
    \n-
    75 return (isLeafIndexSet)
    \n-
    76 ? grid.size( type )
    \n-
    77 : grid.size( level, type );
    \n-
    78 }
    \n+
    57 template< class Entity >
    \n+
    \n+
    58 IdType id ( const Entity &entity ) const
    \n+
    59 {
    \n+
    60 return id< Entity::codimension >( entity );
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    \n+
    63 IdType subId ( const typename Traits::template Codim< 0 >::Entity &entity, int i, unsigned int codim ) const
    \n+
    64 {
    \n+
    65 return hostIdSet().subId( Grid::template getHostEntity< 0 >( entity ), i, codim );
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    68 explicit operator bool () const { return bool( hostIdSet_ ); }
    \n+
    69
    \n+
    70 private:
    \n+
    71 const HostIdSet &hostIdSet () const
    \n+
    72 {
    \n+
    73 assert( *this );
    \n+
    74 return *hostIdSet_;
    \n+
    75 }
    \n+
    76
    \n+
    77 const HostIdSet *hostIdSet_;
    \n+
    78 };
    \n
    \n
    79
    \n-
    \n-
    81 std::size_t size (int codim) const
    \n-
    82 {
    \n-
    83 return (isLeafIndexSet)
    \n-
    84 ? grid.size( codim )
    \n-
    85 : grid.size( level, codim );
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    89 template<class EntityType>
    \n-
    \n-
    90 bool contains (const EntityType& e) const
    \n-
    91 {
    \n-
    92 return (isLeafIndexSet)
    \n-
    93 ? e.level() == grid.maxLevel()
    \n-
    94 : e.level() == level;
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    97 std::vector< GeometryType > types ( int codim ) const { return mytypes[ codim ]; }
    \n-
    98
    \n-
    \n-
    100 const std::vector<GeometryType>& geomTypes (int codim) const
    \n-
    101 {
    \n-
    102 return mytypes[codim];
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    105 private:
    \n-
    106 const GridImp& grid;
    \n-
    107 int level;
    \n-
    108 std::vector<GeometryType> mytypes[std::remove_const<GridImp>::type::dimension+1];
    \n-
    109 };
    \n-
    \n-
    110
    \n-
    111} // namespace Dune
    \n-
    112
    \n-
    113#endif // DUNE_GRID_YASPGRIDINDEXSET_HH
    \n+
    80 } // namespace GeoGrid
    \n+
    81
    \n+
    82} // namespace Dune
    \n+
    83
    \n+
    84#endif // #ifndef DUNE_GEOGRID_IDSET_HH
    \n+
    Provides base classes for index and id sets.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Index Set Interface base class.
    Definition indexidset.hh:78
    \n-
    IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    Map a subentity to an index.
    Definition indexidset.hh:153
    \n-
    Export the type of the entity used as parameter in the index(...) method.
    Definition indexidset.hh:87
    \n-
    Implementation of Level- and LeafIndexSets for YaspGrid.
    Definition yaspgridindexsets.hh:25
    \n-
    const std::vector< GeometryType > & geomTypes(int codim) const
    deliver all geometry types used in this grid
    Definition yaspgridindexsets.hh:100
    \n-
    YaspIndexSet(const GridImp &g)
    Level grid view constructor stores reference to a grid and level.
    Definition yaspgridindexsets.hh:47
    \n-
    YaspIndexSet(const GridImp &g, int l)
    Level grid view constructor stores reference to a grid and level.
    Definition yaspgridindexsets.hh:35
    \n-
    IndexType index(const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e) const
    get index of an entity
    Definition yaspgridindexsets.hh:59
    \n-
    bool contains(const EntityType &e) const
    return true if the given entity is contained in .
    Definition yaspgridindexsets.hh:90
    \n-
    std::size_t size(GeometryType type) const
    get number of entities of given type and level (the level is known to the object)
    Definition yaspgridindexsets.hh:73
    \n-
    IndexType subIndex(const typename std::remove_const< GridImp >::type::Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
    get index of subentity of an entity
    Definition yaspgridindexsets.hh:66
    \n-
    std::vector< GeometryType > types(int codim) const
    Definition yaspgridindexsets.hh:97
    \n-
    std::size_t size(int codim) const
    return size of set for a given codim
    Definition yaspgridindexsets.hh:81
    \n-
    Base::IndexType IndexType
    Definition yaspgridindexsets.hh:30
    \n+
    Id Set Interface.
    Definition indexidset.hh:452
    \n+
    IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Get id of subentity i of co-dimension codim of a co-dimension 0 entity.
    Definition indexidset.hh:486
    \n+
    A Traits struct that collects all associated types of one implementation.
    Definition common/grid.hh:411
    \n+
    DUNE-conform implementation of the entity.
    Definition geometrygrid/entity.hh:694
    \n+
    Definition idset.hh:22
    \n+
    IdSet()
    Definition idset.hh:33
    \n+
    IdSet(const HostIdSet &hostIdSet)
    Definition idset.hh:37
    \n+
    IdType id(const Entity &entity) const
    Definition idset.hh:58
    \n+
    IdType subId(const typename Traits::template Codim< 0 >::Entity &entity, int i, unsigned int codim) const
    Definition idset.hh:63
    \n+
    IdType id(const typename Traits::template Codim< codim >::Entity &entity) const
    Definition idset.hh:52
    \n+
    IdSet(const This &other)
    Definition idset.hh:41
    \n+
    const This & operator=(const This &other)
    Definition idset.hh:45
    \n+
    HostIdSet::IdType IdType
    Definition idset.hh:29
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,168 +1,146 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridindexsets.hh\n+ * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n+idset.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDINDEXSET_HH\n-6#define DUNE_GRID_YASPGRIDINDEXSET_HH\n+5#ifndef DUNE_GEOGRID_IDSET_HH\n+6#define DUNE_GEOGRID_IDSET_HH\n 7\n-14namespace _\bD_\bu_\bn_\be {\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh>\n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+12\n+13 namespace GeoGrid\n+14 {\n 15\n-22 template\n-_\b2_\b3 class _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-24 : public _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt< GridImp, YaspIndexSet< GridImp, isLeafIndexSet >,\n-unsigned int >\n-25 {\n-26 typedef _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bi_\bs_\bL_\be_\ba_\bf_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b _\b> _\bT_\bh_\bi_\bs;\n-27 typedef _\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bT_\bh_\bi_\bs_\b,_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b> _\bB_\ba_\bs_\be;\n-28\n-29 public:\n-_\b3_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-31\n-32 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx;\n-33\n-_\b3_\b5 _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( const GridImp &g, int l )\n-36 : grid( g ),\n-37 level( l )\n-38 {\n-39 assert(not isLeafIndexSet);\n+16 // IdSet\n+17 // -----\n+18\n+19 template< class Grid, class HostIdSet >\n+_\b2_\b0 class _\bI_\bd_\bS_\be_\bt\n+21 : public _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt< Grid, IdSet< Grid, HostIdSet >, typename HostIdSet::\n+IdType >\n+22 {\n+23 typedef _\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bH_\bo_\bs_\bt_\bI_\bd_\bS_\be_\bt_\b _\b> _\bT_\bh_\bi_\bs;\n+24 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bT_\bh_\bi_\bs_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bH_\bo_\bs_\bt_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be_\b _\b> _\bB_\ba_\bs_\be;\n+25\n+26 typedef typename std::remove_const< Grid >::type::Traits Traits;\n+27\n+28 public:\n+_\b2_\b9 typedef typename HostIdSet::IdType _\bI_\bd_\bT_\by_\bp_\be;\n+30\n+31 using _\bB_\ba_\bs_\be_\b:_\b:_\bs_\bu_\bb_\bI_\bd;\n+32\n+_\b3_\b3 _\bI_\bd_\bS_\be_\bt ()\n+34 : hostIdSet_( 0 )\n+35 {}\n+36\n+_\b3_\b7 explicit _\bI_\bd_\bS_\be_\bt ( const HostIdSet &hostIdSet )\n+38 : hostIdSet_( &hostIdSet )\n+39 {}\n 40\n-41 // contains a single element type;\n-42 for (int codim=0; codim<=GridImp::dimension; codim++)\n-43 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));\n-44 }\n-45\n-_\b4_\b7 _\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt ( const GridImp &g )\n-48 : grid( g )\n-49 {\n-50 assert(isLeafIndexSet);\n-51\n-52 // contains a single element type;\n-53 for (int codim=0; codim<=GridImp::dimension; codim++)\n-54 mytypes[codim].push_back(GeometryTypes::cube(GridImp::dimension-codim));\n+_\b4_\b1 _\bI_\bd_\bS_\be_\bt ( const _\bT_\bh_\bi_\bs &other )\n+42 : hostIdSet_( other.hostIdSet_ )\n+43 {}\n+44\n+_\b4_\b5 const _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+46 {\n+47 hostIdSet_ = other.hostIdSet_;\n+48 return *this;\n+49 }\n+50\n+51 template< int codim >\n+_\b5_\b2 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd ( const typename Traits::template Codim< codim >::Entity &entity )\n+const\n+53 {\n+54 return entity.impl().id( hostIdSet() );\n 55 }\n 56\n-58 template\n-_\b5_\b9 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bi_\bn_\bd_\be_\bx (const typename std::remove_const::type::Traits::\n-template Codim::Entity& e) const\n-60 {\n-61 return e.impl().compressedIndex();\n-62 }\n-63\n-65 template< int cc >\n-_\b6_\b6 _\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx ( const typename std::remove_const< GridImp >::type::\n-Traits::template Codim< cc >::Entity &e,\n-67 int i, unsigned int codim ) const\n-68 {\n-69 return e.impl().subCompressedIndex(i, codim);\n-70 }\n-71\n-_\b7_\b3 std::size_t _\bs_\bi_\bz_\be (GeometryType type) const\n-74 {\n-75 return (isLeafIndexSet)\n-76 ? grid.size( type )\n-77 : grid.size( level, type );\n-78 }\n+57 template< class Entity >\n+_\b5_\b8 _\bI_\bd_\bT_\by_\bp_\be _\bi_\bd ( const _\bE_\bn_\bt_\bi_\bt_\by &entity ) const\n+59 {\n+60 return id< Entity::codimension >( entity );\n+61 }\n+62\n+_\b6_\b3 _\bI_\bd_\bT_\by_\bp_\be _\bs_\bu_\bb_\bI_\bd ( const typename Traits::template Codim< 0 >::Entity &entity,\n+int i, unsigned int codim ) const\n+64 {\n+65 return hostIdSet().subId( _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be getHostEntity< 0 >( entity ), i,\n+codim );\n+66 }\n+67\n+_\b6_\b8 explicit operator bool () const { return bool( hostIdSet_ ); }\n+69\n+70 private:\n+71 const HostIdSet &hostIdSet () const\n+72 {\n+73 assert( *this );\n+74 return *hostIdSet_;\n+75 }\n+76\n+77 const HostIdSet *hostIdSet_;\n+78 };\n 79\n-_\b8_\b1 std::size_t _\bs_\bi_\bz_\be (int codim) const\n-82 {\n-83 return (isLeafIndexSet)\n-84 ? grid.size( codim )\n-85 : grid.size( level, codim );\n-86 }\n-87\n-89 template\n-_\b9_\b0 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e) const\n-91 {\n-92 return (isLeafIndexSet)\n-93 ? e.level() == grid.maxLevel()\n-94 : e.level() == level;\n-95 }\n-96\n-_\b9_\b7 std::vector< GeometryType > _\bt_\by_\bp_\be_\bs ( int codim ) const { return mytypes\n-[ codim ]; }\n-98\n-_\b1_\b0_\b0 const std::vector& _\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs (int codim) const\n-101 {\n-102 return mytypes[codim];\n-103 }\n-104\n-105 private:\n-106 const GridImp& grid;\n-107 int level;\n-108 std::vector mytypes[std::remove_const::type::\n-dimension+1];\n-109 };\n-110\n-111} // namespace Dune\n-112\n-113#endif // DUNE_GRID_YASPGRIDINDEXSET_HH\n+80 } // namespace GeoGrid\n+81\n+82} // namespace Dune\n+83\n+84#endif // #ifndef DUNE_GEOGRID_IDSET_HH\n+_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\bt_\b._\bh_\bh\n+Provides base classes for index and id sets.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Index Set Interface base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-IndexType subIndex(const typename Traits::template Codim< cc >::Entity &e, int\n-i, unsigned int codim) const\n-Map a subentity to an index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-Export the type of the entity used as parameter in the index(...) method.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Implementation of Level- and LeafIndexSets for YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bg_\be_\bo_\bm_\bT_\by_\bp_\be_\bs\n-const std::vector< GeometryType > & geomTypes(int codim) const\n-deliver all geometry types used in this grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-YaspIndexSet(const GridImp &g)\n-Level grid view constructor stores reference to a grid and level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-YaspIndexSet(const GridImp &g, int l)\n-Level grid view constructor stores reference to a grid and level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-IndexType index(const typename std::remove_const< GridImp >::type::Traits::\n-template Codim< cc >::Entity &e) const\n-get index of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const EntityType &e) const\n-return true if the given entity is contained in .\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(GeometryType type) const\n-get number of entities of given type and level (the level is known to the\n-object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-IndexType subIndex(const typename std::remove_const< GridImp >::type::Traits::\n-template Codim< cc >::Entity &e, int i, unsigned int codim) const\n-get index of subentity of an entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bt_\by_\bp_\be_\bs\n-std::vector< GeometryType > types(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size(int codim) const\n-return size of set for a given codim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-Base::IndexType IndexType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+Id Set Interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename Codim< 0 >::Entity &e, int i, unsigned int codim)\n+const\n+Get id of subentity i of co-dimension codim of a co-dimension 0 entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn indexidset.hh:486\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A Traits struct that collects all associated types of one implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+DUNE-conform implementation of the entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/entity.hh:694\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+IdSet()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+IdSet(const HostIdSet &hostIdSet)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const Entity &entity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bb_\bI_\bd\n+IdType subId(const typename Traits::template Codim< 0 >::Entity &entity, int i,\n+unsigned int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bi_\bd\n+IdType id(const typename Traits::template Codim< codim >::Entity &entity) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bS_\be_\bt\n+IdSet(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+const This & operator=(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b:_\b:_\bI_\bd_\bT_\by_\bp_\be\n+HostIdSet::IdType IdType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn idset.hh:29\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00158.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00179.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -88,18 +88,18 @@\n #include <cmath>
    \n #include <deque>
    \n #include <iostream>
    \n #include <vector>
    \n #include <mpi.h>
    \n #include <dune/common/binaryfunctions.hh>
    \n #include <dune/common/streamoperators.hh>
    \n-#include <dune/grid/common/exceptions.hh>
    \n-#include "partitioning.hh"
    \n+#include <dune/grid/common/exceptions.hh>
    \n+#include "partitioning.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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00158_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00179_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,15 +77,15 @@\n
  • dune
  • grid
  • yaspgrid
  • \n \n \n
    \n
    torus.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_YASPGRID_TORUS_HH
    \n
    6#define DUNE_GRID_YASPGRID_TORUS_HH
    \n
    7
    \n
    8#include <array>
    \n@@ -97,17 +97,17 @@\n
    14
    \n
    15#if HAVE_MPI
    \n
    16#include <mpi.h>
    \n
    17#endif
    \n
    18
    \n
    19#include <dune/common/binaryfunctions.hh>
    \n
    20#include <dune/common/streamoperators.hh>
    \n-\n+\n
    22
    \n-
    23#include "partitioning.hh"
    \n+
    23#include "partitioning.hh"
    \n
    24
    \n
    29namespace Dune
    \n
    30{
    \n
    31
    \n
    45 template<class Communication, int d>
    \n
    \n
    46 class Torus {
    \n@@ -635,16 +635,16 @@\n
    543 t.print(s);
    \n
    544 return s;
    \n
    545 }
    \n
    \n
    546}
    \n
    547
    \n
    548#endif
    \n-
    This file provides tools to partition YaspGrids. If you want to write your own partitioner,...
    \n-\n+
    This file provides tools to partition YaspGrids. If you want to write your own partitioner,...
    \n+\n
    std::ostream & operator<<(std::ostream &out, const PartitionType &type)
    write a PartitionType to a stream
    Definition gridenums.hh:72
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    a base class for the yaspgrid partitioning strategy
    Definition partitioning.hh:39
    \n
    virtual void partition(const iTupel &, int, iTupel &, int) const =0
    \n
    Definition torus.hh:46
    \n
    Torus()
    constructor making uninitialized object
    Definition torus.hh:67
    \n
    int color(int rank) const
    assign color to given rank
    Definition torus.hh:197
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00164.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00167.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -79,15 +79,15 @@\n
    yaspgridgeometry.hh File Reference
    \n
    \n
    \n \n

    The YaspGeometry class and its specializations. \n More...

    \n \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::Torus< Communication, d >
     
    class  Dune::Torus< Communication, d >::ProcListIterator
     
    \n \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00164_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00167_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,15 +77,15 @@\n
  • dune
  • grid
  • yaspgrid
  • \n \n \n
    \n
    yaspgridgeometry.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_YASPGRIDGEOMETRY_HH
    \n
    6#define DUNE_GRID_YASPGRIDGEOMETRY_HH
    \n
    7
    \n
    23namespace Dune {
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00185.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00257.html", "comments": ["Files 83% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: ygrid.hh File Reference\n+dune-grid: gridenums.hh File Reference\n \n \n \n \n \n \n \n@@ -65,87 +65,93 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    ygrid.hh File Reference
    \n+
    gridenums.hh File Reference
    \n
    \n
    \n-\n-

    This provides a YGrid, the elemental component of the yaspgrid implementation. \n-More...

    \n-
    #include <array>
    \n-#include <vector>
    \n-#include <bitset>
    \n-#include <deque>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/common/streamoperators.hh>
    \n+
    #include <iostream>
    \n+#include <dune/common/exceptions.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::YaspGeometry< mydim, cdim, GridImp >
     The general version that handles all codimensions but 0 and dim. More...
     
    class  Dune::YaspGeometry< mydim, mydim, GridImp >
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::YGridComponent< Coordinates >
     
    class  Dune::YGridComponent< Coordinates >::Iterator
     
    class  Dune::YGrid< Coordinates >
     implements a collection of YGridComponents which form a codimension Entities of given codimension c need to be represented by d choose c YgridComponents. All entities in one such component share the same set of spanning unit vectors. A YGrid is used to iterate over the entire set of components the codimension consists of. It doesn't hold any data, but instead holds an iterator range into an array of components (which is owned by YGridLevel). More...
     
    class  Dune::YGrid< Coordinates >::Iterator
     Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity in YaspGrid. More...
     
    class  Dune::YGridList< Coordinates >
     implements a collection of multiple std::deque<Intersection> Intersections with neighboring processors are stored as std::deque<Intersection>. Eachsuch intersection only holds one YGridComponent. To do all communication associated with one codimension, multiple such deques have to be concatenated. YGridList manges this concatenation. As for YGrids, YGridList doesn't hold any data, but an iterator range into a data array owned by YGridLevel. More...
     
    struct  Dune::YGridList< Coordinates >::Intersection
     type describing an intersection with a neighboring processor More...
     
    class  Dune::YGridList< Coordinates >::Iterator
     
    \n \n \n \n \n-\n-\n+

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Yasp
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Enumerations

    enum  Dune::PartitionType {
    \n+  Dune::InteriorEntity =0\n+, Dune::BorderEntity =1\n+, Dune::OverlapEntity =2\n+, Dune::FrontEntity =3\n+,
    \n+  Dune::GhostEntity =4\n+
    \n+ }
     Attributes used in the generic overlap model. More...
     
    enum  Dune::InterfaceType {
    \n+  Dune::InteriorBorder_InteriorBorder_Interface =0\n+, Dune::InteriorBorder_All_Interface =1\n+, Dune::Overlap_OverlapFront_Interface =2\n+, Dune::Overlap_All_Interface =3\n+,
    \n+  Dune::All_All_Interface =4\n+
    \n+ }
     Parameter to be used for the communication functions. More...
     
    enum  Dune::PartitionIteratorType {
    \n+  Dune::Interior_Partition =0\n+, Dune::InteriorBorder_Partition =1\n+, Dune::Overlap_Partition =2\n+, Dune::OverlapFront_Partition =3\n+,
    \n+  Dune::All_Partition =4\n+, Dune::Ghost_Partition =5\n+
    \n+ }
     Parameter to be used for the parallel level- and leaf iterators. More...
     
    enum  Dune::CommunicationDirection { Dune::ForwardCommunication\n+, Dune::BackwardCommunication\n+ }
     Define a type for communication direction parameter. More...
     
    \n \n-\n-\n-\n-\n-\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 d, typename ct >
    std::array< int, d > Dune::Yasp::sizeArray (const std::array< std::vector< ct >, d > &v)
     
    template<class Coordinates >
    std::ostream & Dune::operator<< (std::ostream &s, YGridComponent< Coordinates > e)
     Output operator for ygrids.
     
    template<class Coordinates >
    std::ostream & Dune::operator<< (std::ostream &s, typename YGridComponent< Coordinates >::Iterator &e)
     Output operator for ygrids.
     
    template<class Coordinates >
    std::ostream & Dune::operator<< (std::ostream &s, const YGrid< Coordinates > &e)
     Output operator for ygrids.
     
    std::string Dune::PartitionName (PartitionType type)
     Provide names for the partition types.
     
    std::ostream & Dune::operator<< (std::ostream &out, const PartitionType &type)
     write a PartitionType to a stream
     
    std::ostream & Dune::operator<< (std::ostream &out, const InterfaceType &type)
     write an InterfaceType to a stream
     
    std::ostream & Dune::operator<< (std::ostream &out, const PartitionIteratorType &type)
     write a PartitionIteratorType to a stream
     
    \n-

    Detailed Description

    \n-

    This provides a YGrid, the elemental component of the yaspgrid implementation.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,82 +1,59 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\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-ygrid.hh File Reference\n-This provides a YGrid, the elemental component of the yaspgrid implementation.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\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+gridenums.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>\n- implements a collection of YGridComponents which form a codimension\n- Entities of given codimension c need to be represented by d choose c\n- YgridComponents. All entities in one such component share the same set\n-\u00a0 of spanning unit vectors. A _\bY_\bG_\br_\bi_\bd is used to iterate over the entire\n- set of components the codimension consists of. It doesn't hold any\n- data, but instead holds an iterator range into an array of components\n- (which is owned by YGridLevel). _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-\u00a0 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br over a collection o YGrids A _\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br is the heart of\n- an entity in _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>\n- implements a collection of multiple std::deque\n- Intersections with neighboring processors are stored as std::\n- deque. Eachsuch intersection only holds one\n-\u00a0 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt. To do all communication associated with one\n- codimension, multiple such deques have to be concatenated. _\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt\n- manges this concatenation. As for YGrids, _\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt doesn't hold any\n- data, but an iterator range into a data array owned by YGridLevel.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-\u00a0 type describing an intersection with a neighboring processor _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bL_\bi_\bs_\bt_\b<_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp\n+E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n+enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be {\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by =0 , _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by =1 , _\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+ =2 , _\bD_\bu_\bn_\be_\b:_\b:_\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by =3 ,\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by =4\n+ }\n+\u00a0 Attributes used in the generic overlap model. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bT_\by_\bp_\be {\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be =0 , _\bD_\bu_\bn_\be_\b:_\b:\n+ _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be =1 , _\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+ =2 , _\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be =3 ,\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bA_\bl_\bl_\b__\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be =4\n+ }\n+\u00a0 Parameter to be used for the communication functions. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be {\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn =0 , _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn =1 ,\n+ _\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn =2 , _\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn =3 ,\n+ \u00a0\u00a0_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn =4 , _\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn =5\n+ }\n+\u00a0 Parameter to be used for the parallel level- and leaf iterators. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn_\bD_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn { _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bo_\br_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn , _\bD_\bu_\bn_\be_\b:_\b:\n+ _\bB_\ba_\bc_\bk_\bw_\ba_\br_\bd_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bi_\bo_\bn }\n+\u00a0 Define a type for communication direction parameter. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-std::array< int, d >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bs_\bi_\bz_\be_\bA_\br_\br_\ba_\by (const std::array< std::vector< ct\n- >, d > &v)\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 &s, _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt<\n- Coordinates > e)\n-\u00a0 Output operator for ygrids.\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 &s, typename\n- _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt< Coordinates >::Iterator &e)\n-\u00a0 Output operator for ygrids.\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 &s, const _\bY_\bG_\br_\bi_\bd<\n- Coordinates > &e)\n-\u00a0 Output operator for ygrids.\n+ std::string\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bN_\ba_\bm_\be (_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be type)\n+\u00a0 Provide names for the partition types.\n+\u00a0\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be &type)\n+\u00a0 write a PartitionType to a stream\n+\u00a0\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bT_\by_\bp_\be &type)\n+\u00a0 write an InterfaceType to a stream\n+\u00a0\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+ _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be &type)\n+\u00a0 write a PartitionIteratorType to a stream\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-This provides a YGrid, the elemental component of the yaspgrid implementation.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00185_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00176_source.html", "comments": ["Files 96% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: ygrid.hh Source File\n+dune-grid: yaspgridentity.hh Source File\n \n \n \n \n \n \n \n@@ -74,1171 +74,1090 @@\n \n \n \n
    \n-
    ygrid.hh
    \n+
    yaspgridentity.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRID_YGRID_HH
    \n-
    6#define DUNE_GRID_YASPGRID_YGRID_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRIDENTITY_HH
    \n+
    6#define DUNE_GRID_YASPGRIDENTITY_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <vector>
    \n-
    10#include <bitset>
    \n-
    11#include <deque>
    \n-
    12
    \n-
    13#include <dune/common/fvector.hh>
    \n-
    14#include <dune/common/math.hh>
    \n-
    15#include <dune/common/streamoperators.hh>
    \n-
    16
    \n-
    21namespace Dune {
    \n-
    22
    \n-
    23 namespace Yasp {
    \n-
    28 template<int d, typename ct>
    \n-
    \n-
    29 std::array<int,d> sizeArray(const std::array<std::vector<ct>,d>& v)
    \n-
    30 {
    \n-
    31 std::array<int,d> tmp;
    \n-
    32 for (int i=0; i<d; ++i)
    \n-
    33 tmp[i] = v[i].size() - 1;
    \n-
    34 return tmp;
    \n-
    35 }
    \n-
    \n-
    36 } //namespace Yasp
    \n-
    37
    \n-
    73 template<class Coordinates>
    \n-
    \n-\n-
    75 {
    \n-
    76 public:
    \n-
    77 //extract coordinate type and dimension from the coordinate container
    \n-
    78 typedef typename Coordinates::ctype ct;
    \n-
    79 static const int d = Coordinates::dimension;
    \n-
    80
    \n-
    81 typedef std::array<int, d> iTupel;
    \n-
    82 typedef FieldVector<ct,d> fTupel;
    \n-
    83
    \n-
    \n-
    85 YGridComponent () : _shift(0ULL)
    \n-
    86 {
    \n-
    87 std::fill(_origin.begin(), _origin.end(), 0);
    \n-
    88 std::fill(_offset.begin(), _offset.end(), 0);
    \n-
    89 std::fill(_size.begin(), _size.end(), 0);
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    \n-\n-
    100 : _origin(origin), _size(size)
    \n-
    101 {}
    \n-
    \n-
    102
    \n-
    \n-\n-
    109 : _origin(origin), _shift(enclosing.shift()), _coords(enclosing.getCoords()), _size(size), _supersize(enclosing.supersize())
    \n-
    110 {
    \n-
    111 for (int i=0; i<d; i++)
    \n-
    112 _offset[i] = origin[i] - enclosing.origin(i) + enclosing.offset(i);
    \n-
    113
    \n-
    114 // compute superincrements
    \n-
    115 int inc = 1;
    \n-
    116 for (int i=0; i<d; ++i)
    \n-
    117 {
    \n-
    118 _superincrement[i] = inc;
    \n-
    119 inc *= _supersize[i];
    \n-
    120 }
    \n-
    121 }
    \n-
    \n-
    122
    \n-
    \n-
    131 YGridComponent (iTupel origin, std::bitset<d> shift, Coordinates* coords, iTupel size, iTupel offset, iTupel supersize)
    \n-
    132 : _origin(origin), _shift(shift), _coords(coords), _size(size), _offset(offset), _supersize(supersize)
    \n-
    133 {
    \n-
    134 // compute superincrements
    \n-
    135 int inc = 1;
    \n-
    136 for (int i=0; i<d; ++i)
    \n-
    137 {
    \n-
    138 _superincrement[i] = inc;
    \n-
    139 inc *= _supersize[i];
    \n-
    140 }
    \n-
    141 }
    \n-
    \n-
    142
    \n-
    \n-
    144 int origin (int i) const
    \n-
    145 {
    \n-
    146 return _origin[i];
    \n-
    147 }
    \n-
    \n-
    148
    \n-
    \n-
    150 const iTupel& origin () const
    \n-
    151 {
    \n-
    152 return _origin;
    \n-
    153 }
    \n-
    \n-
    154
    \n-
    \n-
    156 bool shift (int i) const
    \n-
    157 {
    \n-
    158 return _shift[i];
    \n-
    159 }
    \n-
    \n-
    160
    \n-
    \n-
    162 const std::bitset<d>& shift () const
    \n-
    163 {
    \n-
    164 return _shift;
    \n-
    165 }
    \n-
    \n+
    8#include <dune/common/math.hh>
    \n+
    9#include <dune/geometry/type.hh>
    \n+
    10
    \n+
    24//========================================================================
    \n+
    25
    \n+
    26
    \n+
    27
    \n+
    28
    \n+
    29namespace Dune {
    \n+
    30
    \n+
    31 namespace Yasp {
    \n+
    32
    \n+
    33#ifndef DOXYGEN
    \n+
    34
    \n+
    35 // table for quick evaluation of binomial coefficients
    \n+
    36 template<int n>
    \n+
    37 struct BinomialTable
    \n+
    38 {
    \n+
    39 // evaluation - note that in general d!=n, n is only the
    \n+
    40 // maximum value of d (in our case dimworld)
    \n+
    41 static constexpr int evaluate(int d, int c)
    \n+
    42 {
    \n+
    43 return _values[_offsets[d] + c];
    \n+
    44 }
    \n+
    45
    \n+
    46 // the actual implementation
    \n+
    47 [[deprecated("Use binomial from dune-common's math.hh")]]
    \n+
    48 static constexpr int binomial(int d, int c)
    \n+
    49 {
    \n+
    50 long binomial=1;
    \n+
    51 for (int i=d-c+1; i<=d; i++)
    \n+
    52 binomial *= i;
    \n+
    53 for (long i=2; i<=c; i++)
    \n+
    54 binomial /= i;
    \n+
    55 return binomial;
    \n+
    56 }
    \n+
    57
    \n+
    58 private:
    \n+
    59 // prevent construction
    \n+
    60 BinomialTable() = delete;
    \n+
    61
    \n+
    62 // compute binomial(r, c) and advance row `r` and column `c`
    \n+
    63 static constexpr int nextValue(int& r, int& c)
    \n+
    64 {
    \n+
    65 const auto result = Dune::binomial(r, c);
    \n+
    66
    \n+
    67 c += 1;
    \n+
    68 if (c > r) {
    \n+
    69 r += 1;
    \n+
    70 c = 0;
    \n+
    71 }
    \n+
    72
    \n+
    73 return result;
    \n+
    74 }
    \n+
    75
    \n+
    76 template<std::size_t... I>
    \n+
    77 static constexpr std::array<int, sizeof...(I)> computeValues(std::index_sequence<I...>)
    \n+
    78 {
    \n+
    79 int r = 0, c = 0;
    \n+
    80 return {{ ((void)I, nextValue(r, c))... }};
    \n+
    81 }
    \n+
    82
    \n+
    83 template<std::size_t... I>
    \n+
    84 static constexpr std::array<int, sizeof...(I)> computeOffsets(std::index_sequence<I...>)
    \n+
    85 { return {{ (I*(I+1)/2)... }}; }
    \n+
    86
    \n+
    87 static constexpr std::array<int,(n+1)*(n+2)/2> _values = computeValues(std::make_index_sequence<(n+1)*(n+2)/2>{});
    \n+
    88 static constexpr std::array<int,n+1> _offsets = computeOffsets(std::make_index_sequence<n+1>{});
    \n+
    89 };
    \n+
    90
    \n+
    91#if __cplusplus < 201703L
    \n+
    92 template<int n>
    \n+
    93 constexpr std::array<int,(n+1)*(n+2)/2> BinomialTable<n>::_values;
    \n+
    94 template<int n>
    \n+
    95 constexpr std::array<int,n+1> BinomialTable<n>::_offsets;
    \n+
    96#endif
    \n+
    97
    \n+
    104 template<int dimworld>
    \n+
    105 constexpr int subEnt(int d, int c)
    \n+
    106 {
    \n+
    107 return (d < c ? 0 : BinomialTable<dimworld>::evaluate(d,c) << c);
    \n+
    108 }
    \n+
    109
    \n+
    110 // Make a table mapping all subentities of a codim 0 entity to a value.
    \n+
    111 // F is the functor to be evaluated.
    \n+
    112 template<typename F, int dim>
    \n+
    113 struct EntityShiftTable
    \n+
    114 {
    \n+
    115 typedef std::bitset<dim> value_type;
    \n+
    116
    \n+
    117 static value_type evaluate(int i, int codim)
    \n+
    118 {
    \n+
    119 return {_values[_offsets[codim] + i]};
    \n+
    120 }
    \n+
    121
    \n+
    122 private:
    \n+
    123
    \n+
    124 // prevent construction
    \n+
    125 EntityShiftTable() = delete;
    \n+
    126
    \n+
    127 // compute offset of codimension `codim` entities and advance `offset`
    \n+
    128 static constexpr int nextOffset(int& offset, int codim)
    \n+
    129 {
    \n+
    130 if (codim == 0) {
    \n+
    131 offset = 0;
    \n+
    132 return 0;
    \n+
    133 }
    \n+
    134
    \n+
    135 offset += subEnt<dim>(dim, codim-1);
    \n+
    136 return offset;
    \n+
    137 }
    \n+
    138
    \n+
    139 template<std::size_t... I>
    \n+
    140 static constexpr std::array<int, sizeof...(I)> computeOffsets(std::index_sequence<I...>)
    \n+
    141 {
    \n+
    142 int offset = 0;
    \n+
    143 return {{ (nextOffset(offset, I))... }};
    \n+
    144 }
    \n+
    145
    \n+
    146 // compute shift table entry for (`codim`, `i`) and advance `codim`, `i`
    \n+
    147 static constexpr unsigned char nextValue(int& codim, int& i)
    \n+
    148 {
    \n+
    149 const auto result = F::evaluate(i, codim);
    \n+
    150
    \n+
    151 i += 1;
    \n+
    152 if (i >= subEnt<dim>(dim, codim)) {
    \n+
    153 codim += 1;
    \n+
    154 i = 0;
    \n+
    155 }
    \n+
    156
    \n+
    157 return result;
    \n+
    158 }
    \n+
    159
    \n+
    160 template<std::size_t... I>
    \n+
    161 static constexpr std::array<unsigned char, sizeof...(I)> computeValues(std::index_sequence<I...>)
    \n+
    162 {
    \n+
    163 int codim = 0, i = 0;
    \n+
    164 return {{ ((void)I, nextValue(codim, i))... }};
    \n+
    165 }
    \n
    166
    \n-
    \n-
    167 Coordinates* getCoords() const
    \n-
    168 {
    \n-
    169 return _coords;
    \n-
    170 }
    \n-
    \n+
    167 static constexpr std::array<int,dim+1> _offsets = computeOffsets(std::make_index_sequence<dim+1>{});
    \n+
    168 static constexpr std::array<unsigned char,Dune::power(3,dim)> _values = computeValues(std::make_index_sequence<Dune::power(3,dim)>{});
    \n+
    169
    \n+
    170 };
    \n
    171
    \n-
    \n-
    173 int offset (int i) const
    \n-
    174 {
    \n-
    175 return _offset[i];
    \n-
    176 }
    \n-
    \n-
    177
    \n-
    \n-
    179 const iTupel & offset () const
    \n-
    180 {
    \n-
    181 return _offset;
    \n-
    182 }
    \n-
    \n-
    183
    \n-
    \n-
    185 int supersize (int i) const
    \n-
    186 {
    \n-
    187 return _supersize[i];
    \n-
    188 }
    \n-
    \n-
    189
    \n-
    \n-
    191 const iTupel & supersize () const
    \n-
    192 {
    \n-
    193 return _supersize;
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    \n-
    197 int size (int i) const
    \n-
    198 {
    \n-
    199 return _size[i];
    \n-
    200 }
    \n-
    \n+
    172#if __cplusplus < 201703L
    \n+
    173 template<typename F, int dim>
    \n+
    174 constexpr std::array<int,dim+1> EntityShiftTable<F, dim>::_offsets;
    \n+
    175 template<typename F, int dim>
    \n+
    176 constexpr std::array<unsigned char,Dune::power(3,dim)> EntityShiftTable<F, dim>::_values;
    \n+
    177#endif
    \n+
    178
    \n+
    179 // functor for doing the actual entity shift calculation
    \n+
    180 template<int dim>
    \n+
    181 struct calculate_entity_shift
    \n+
    182 {
    \n+
    183 static constexpr unsigned long long evaluate(int index, int cc)
    \n+
    184 {
    \n+
    185 auto result = 0ull;
    \n+
    186 for (int d = dim; d>0; d--)
    \n+
    187 {
    \n+
    188 if (cc == d)
    \n+
    189 return result;
    \n+
    190 if (index < subEnt<dim>(d-1,cc))
    \n+
    191 result |= 1ull << (d-1);
    \n+
    192 else
    \n+
    193 {
    \n+
    194 index = (index - subEnt<dim>(d-1, cc)) % subEnt<dim>(d-1,cc-1);
    \n+
    195 cc--;
    \n+
    196 }
    \n+
    197 }
    \n+
    198 return result;
    \n+
    199 }
    \n+
    200 };
    \n
    201
    \n-
    \n-
    203 iTupel size () const
    \n-
    204 {
    \n-
    205 return _size;
    \n-
    206 }
    \n-
    \n-
    207
    \n-
    \n-
    209 int totalsize () const
    \n-
    210 {
    \n-
    211 int s=1;
    \n-
    212 for (int i=0; i<d; ++i)
    \n-
    213 s *= size(i);
    \n-
    214 return s;
    \n-
    215 }
    \n-
    \n-
    216
    \n-
    \n-
    218 int min (int i) const
    \n-
    219 {
    \n-
    220 return _origin[i];
    \n-
    221 }
    \n-
    \n-
    222
    \n-
    \n-
    224 int max (int i) const
    \n-
    225 {
    \n-
    226 return _origin[i] + size(i) - 1;
    \n-
    227 }
    \n-
    \n-
    228
    \n-
    \n-
    230 bool empty () const
    \n-
    231 {
    \n-
    232 for (int i=0; i<d; ++i)
    \n-
    233 {
    \n-
    234 if (size(i) == 0)
    \n-
    235 return true;
    \n-
    236 }
    \n-
    237 return false;
    \n-
    238 }
    \n-
    \n-
    239
    \n-
    \n-
    241 bool inside (const iTupel& coord) const
    \n-
    242 {
    \n-
    243 for (int i=0; i<d; i++)
    \n-
    244 {
    \n-
    245 if ((coord[i]<_origin[i]) || (coord[i]>=_origin[i]+_size[i]))
    \n-
    246 return false;
    \n-
    247 }
    \n-
    248 return true;
    \n-
    249 }
    \n-
    \n-
    250
    \n-
    \n-
    252 int index (const iTupel& coord) const
    \n-
    253 {
    \n-
    254 int index = (coord[d-1]-_origin[d-1]);
    \n-
    255
    \n-
    256 for (int i=d-2; i>=0; i--)
    \n-
    257 index = index*_size[i] + (coord[i]-_origin[i]);
    \n-
    258
    \n-
    259 return index;
    \n-
    260 }
    \n-
    \n-
    261
    \n-
    \n-\n-
    264 {
    \n-
    265 for (int i=0; i<d; i++)
    \n-
    266 v[i] += _origin[i];
    \n-
    267 return YGridComponent<Coordinates>(v,_size,*this);
    \n-
    268 }
    \n-
    \n+
    210 template<int dim>
    \n+
    211 std::bitset<dim> entityShift(int index, int cc)
    \n+
    212 {
    \n+
    213 return EntityShiftTable<calculate_entity_shift<dim>,dim>::evaluate(index,cc);
    \n+
    214 }
    \n+
    215
    \n+
    216 // functor for doing the actual entity move calculation
    \n+
    217 template<int dim>
    \n+
    218 struct calculate_entity_move
    \n+
    219 {
    \n+
    220 static constexpr unsigned long long evaluate(int index, int cc)
    \n+
    221 {
    \n+
    222 auto result = 0ull;
    \n+
    223 for (int d = dim; d>0; d--)
    \n+
    224 {
    \n+
    225 if (d == cc)
    \n+
    226 {
    \n+
    227 // result[d-1] = index & (1<<(d-1));
    \n+
    228 result &= ~(1ull << (d-1));
    \n+
    229 result |= index & (1ull << (d-1));
    \n+
    230
    \n+
    231 index &= ~(1<<(d-1));
    \n+
    232 }
    \n+
    233 if (index >= subEnt<dim>(d-1,cc))
    \n+
    234 {
    \n+
    235 if ((index - subEnt<dim>(d-1,cc)) / subEnt<dim>(d-1,cc-1) == 1)
    \n+
    236 {
    \n+
    237 result |= 1ull << (d-1);
    \n+
    238 }
    \n+
    239 index = (index - subEnt<dim>(d-1, cc)) % subEnt<dim>(d-1,cc-1);
    \n+
    240 cc--;
    \n+
    241 }
    \n+
    242 }
    \n+
    243 return result;
    \n+
    244 }
    \n+
    245
    \n+
    246 };
    \n+
    247
    \n+
    255 template<int dim>
    \n+
    256 std::bitset<dim> entityMove(int index, int cc)
    \n+
    257 {
    \n+
    258 return EntityShiftTable<calculate_entity_move<dim>,dim>::evaluate(index,cc);
    \n+
    259 }
    \n+
    260
    \n+
    261#endif //DOXYGEN
    \n+
    262
    \n+
    263 } // namespace Yasp.
    \n+
    264
    \n+
    265 template<int codim, int dim, class GridImp>
    \n+
    \n+\n+
    267 : public EntityDefaultImplementation <codim,dim,GridImp,YaspEntity>
    \n+
    268 {
    \n
    269
    \n-
    \n-\n-
    272 {
    \n-
    273 for (int i=0; i<d; i++)
    \n-
    274 {
    \n-
    275 //empty coordinate vectors result in empty intersections
    \n-
    276 if (empty() || r.empty())
    \n-\n-
    278 }
    \n-
    279
    \n-
    280 iTupel neworigin;
    \n-
    281 iTupel newsize;
    \n-
    282 for (int i=0; i<d; ++i)
    \n-
    283 {
    \n-
    284 neworigin[i] = std::max(origin(i),r.origin(i));
    \n-
    285 newsize[i] = std::min(max(i),r.max(i)) - neworigin[i] + 1;
    \n-
    286 }
    \n-
    287
    \n-
    288 return YGridComponent<Coordinates>(neworigin,newsize,*this);
    \n-
    289 }
    \n-
    \n-
    290
    \n-
    291
    \n-
    \n-
    298 class Iterator {
    \n-
    299 public:
    \n-
    300 // default constructor
    \n-
    301 Iterator () = default;
    \n-
    302
    \n-
    \n-\n-
    305 {
    \n-
    306 iTupel coord(r.origin());
    \n-
    307 reinit(r,coord);
    \n-
    308 }
    \n+
    270 template<int, PartitionIteratorType, typename>
    \n+
    271 friend class YaspLevelIterator;
    \n+
    272
    \n+
    273 public:
    \n+
    274 typedef typename GridImp::ctype ctype;
    \n+
    275
    \n+
    276 typedef typename GridImp::template Codim<codim>::Geometry Geometry;
    \n+
    277 typedef typename GridImp::Traits::template Codim<codim>::GeometryImpl GeometryImpl;
    \n+
    278
    \n+
    279 typedef typename GridImp::template Codim<codim>::EntitySeed EntitySeed;
    \n+
    280
    \n+
    \n+
    282 int level () const
    \n+
    283 {
    \n+
    284 return _g->level();
    \n+
    285 }
    \n+
    \n+
    286
    \n+
    \n+\n+
    291 {
    \n+
    292 return EntitySeed(YaspEntitySeed<codim,GridImp>(_g->level(), _it.coord(), _it.which()));
    \n+
    293 }
    \n+
    \n+
    294
    \n+
    \n+\n+
    297 {
    \n+
    298 GeometryImpl _geometry(_it.lowerleft(),_it.upperright(),_it.shift());
    \n+
    299 return Geometry(_geometry);
    \n+
    300 }
    \n+
    \n+
    301
    \n+
    \n+
    305 constexpr GeometryType type () const
    \n+
    306 {
    \n+
    307 return GeometryTypes::cube(Geometry::mydimension);
    \n+
    308 }
    \n
    \n
    309
    \n-
    \n-\n-
    312 {
    \n-
    313 reinit(r,coord);
    \n-
    314 }
    \n-
    \n-
    315
    \n-
    \n-\n-
    318 {
    \n-
    319 // initialize to given position in index set
    \n-
    320 for (int i=0; i<d; ++i)
    \n-
    321 _coord[i] = coord[i];
    \n-
    322
    \n-
    323 // move superindex to first cell in subgrid
    \n-
    324 _superindex = 0;
    \n-
    325 for (int i=0; i<d; ++i)
    \n-
    326 _superindex += (r.offset(i)+coord[i]-r.origin(i))*r.superincrement(i);
    \n-
    327
    \n-
    328 _grid = &r;
    \n-
    329 }
    \n-
    \n-
    330
    \n-
    \n-
    332 bool operator== (const Iterator& i) const
    \n-
    333 {
    \n-
    334 return _superindex == i._superindex;
    \n-
    335 }
    \n+
    \n+
    314 unsigned int subEntities (unsigned int cc) const
    \n+
    315 {
    \n+
    316 return Dune::Yasp::subEnt<dim>(dim-codim,cc-codim);
    \n+
    317 }
    \n+
    \n+
    318
    \n+
    \n+\n+
    321 {
    \n+
    322 if (_g->interior[codim].inside(_it.coord(),_it.shift()))
    \n+
    323 return InteriorEntity;
    \n+
    324 if (_g->interiorborder[codim].inside(_it.coord(),_it.shift()))
    \n+
    325 return BorderEntity;
    \n+
    326 if (_g->overlap[codim].inside(_it.coord(),_it.shift()))
    \n+
    327 return OverlapEntity;
    \n+
    328 if (_g->overlapfront[codim].inside(_it.coord(),_it.shift()))
    \n+
    329 return FrontEntity;
    \n+
    330 return GhostEntity;
    \n+
    331 }
    \n+
    \n+
    332
    \n+
    333 typedef typename GridImp::YGridLevelIterator YGLI;
    \n+
    334 typedef typename GridImp::YGrid::Iterator I;
    \n+
    \n+\n+
    336 {}
    \n
    \n-
    336
    \n+
    337
    \n
    \n-
    338 bool operator!= (const Iterator& i) const
    \n-
    339 {
    \n-
    340 return _superindex != i._superindex;
    \n-
    341 }
    \n-
    \n-
    342
    \n-
    \n-
    344 int superindex () const
    \n-
    345 {
    \n-
    346 return _superindex;
    \n-
    347 }
    \n-
    \n-
    348
    \n-
    \n-
    350 int coord (int i) const
    \n-
    351 {
    \n-
    352 return _coord[i];
    \n-
    353 }
    \n-
    \n-
    354
    \n-
    \n-
    356 const iTupel& coord () const
    \n-
    357 {
    \n-
    358 return _coord;
    \n-
    359 }
    \n-
    \n-
    360
    \n-
    \n-
    362 void move (int i, int dist)
    \n-
    363 {
    \n-
    364 _coord[i] += dist;
    \n-
    365 _superindex += dist*_grid->superincrement(i);
    \n-
    366 }
    \n-
    \n-
    367
    \n-
    \n-
    369 void move (const iTupel& dist)
    \n-
    370 {
    \n-
    371 for (int i = 0; i < d; ++i)
    \n-
    372 {
    \n-
    373 _coord[i] += dist[i];
    \n-
    374 _superindex += dist[i]*_grid->superincrement(i);
    \n-
    375 }
    \n-
    376 }
    \n-
    \n-
    377
    \n-
    \n-\n-
    380 {
    \n-
    381 for (int i=0; i<d; i++) // check for wrap around
    \n-
    382 {
    \n-
    383 _superindex += _grid->superincrement(i); // move on cell in direction i
    \n-
    384 if (++_coord[i] <= _grid->max(i))
    \n-
    385 return *this;
    \n-
    386 else
    \n-
    387 {
    \n-
    388 _coord[i] = _grid->origin(i); // move back to origin in direction i
    \n-
    389 _superindex -= _grid->size(i) * _grid->superincrement(i);
    \n-
    390 }
    \n-
    391 }
    \n-
    392 // if we wrapped around, back to to begin(), we must put the iterator to end()
    \n-
    393 if (_coord == _grid->origin())
    \n-
    394 {
    \n-
    395 for (int i=0; i<d; i++)
    \n-
    396 _superindex += (_grid->size(i)-1) * _grid->superincrement(i);
    \n-
    397 _superindex += _grid->superincrement(0);
    \n-
    398 }
    \n-
    399 return *this;
    \n-
    400 }
    \n-
    \n-
    401
    \n-
    \n-
    403 ct lowerleft(int i) const
    \n-
    404 {
    \n-
    405 return _grid->getCoords()->coordinate(i,_coord[i]);
    \n-
    406 }
    \n-
    \n-
    407
    \n-
    \n-\n-
    410 {
    \n-
    411 fTupel ll;
    \n-
    412 for (int i=0; i<d; i++)
    \n-
    413 ll[i] = lowerleft(i);
    \n-
    414 return ll;
    \n-
    415 }
    \n-
    \n-
    416
    \n-
    \n-
    418 ct upperright(int i) const
    \n-
    419 {
    \n-
    420 int coord = _coord[i];
    \n-
    421 if (shift(i))
    \n-
    422 coord++;
    \n-
    423 return _grid->getCoords()->coordinate(i,coord);
    \n-
    424 }
    \n-
    \n-
    425
    \n-
    \n-\n-
    428 {
    \n-
    429 fTupel ur;
    \n-
    430 for (int i=0; i<d; i++)
    \n-
    431 ur[i] = upperright(i);
    \n-
    432 return ur;
    \n-
    433 }
    \n-
    \n-
    434
    \n-
    \n-
    436 ct meshsize (int i) const
    \n-
    437 {
    \n-
    438 return _grid->getCoords()->meshsize(i,_coord[i]);
    \n-
    439 }
    \n-
    \n-
    440
    \n-
    \n-\n-
    443 {
    \n-
    444 fTupel h;
    \n-
    445 for (int i=0; i<d; i++)
    \n-
    446 h[i] = meshsize(i);
    \n-
    447 return h;
    \n-
    448 }
    \n-
    \n-
    449
    \n-
    \n-
    450 bool shift (int i) const
    \n-
    451 {
    \n-
    452 return _grid->shift(i);
    \n-
    453 }
    \n-
    \n-
    454
    \n-
    \n-
    455 std::bitset<d> shift() const
    \n-
    456 {
    \n-
    457 return _grid->shift();
    \n-
    458 }
    \n+
    338 YaspEntity (const YGLI& g, const I& it)
    \n+
    339 : _it(it), _g(g)
    \n+
    340 {}
    \n+
    \n+
    341
    \n+
    \n+
    342 YaspEntity (YGLI&& g, const I&& it)
    \n+
    343 : _it(std::move(it)), _g(std::move(g))
    \n+
    344 {}
    \n+
    \n+
    345
    \n+
    347 bool equals (const YaspEntity& e) const
    \n+
    348 {
    \n+
    349 return _it == e._it && _g == e._g;
    \n+
    350 }
    \n+
    351
    \n+
    352 // IndexSets needs access to the private index methods
    \n+
    353 friend class Dune::YaspIndexSet<GridImp,true>;
    \n+
    354 friend class Dune::YaspIndexSet<GridImp,false>;
    \n+
    355 friend class Dune::YaspGlobalIdSet<GridImp>;
    \n+
    356 typedef typename GridImp::PersistentIndexType PersistentIndexType;
    \n+
    357
    \n+
    \n+\n+
    360 {
    \n+
    361 // get size of global grid (in elements)
    \n+
    362 std::array<int,dim> size;
    \n+
    363
    \n+
    364 for (int i=0; i<dim; i++)
    \n+
    365 {
    \n+
    366 // correct size according to shift
    \n+
    367 size[i] = _g->mg->levelSize(_g->level(), i);
    \n+
    368 if (!_it.shift(i))
    \n+
    369 size[i]++;
    \n+
    370 }
    \n+
    371
    \n+
    372 // encode codim
    \n+
    373 PersistentIndexType id(_it.shift().to_ulong());
    \n+
    374
    \n+
    375 // encode level
    \n+
    376 id = id << yaspgrid_level_bits;
    \n+
    377 id = id+PersistentIndexType(_g->level());
    \n+
    378
    \n+
    379 // encode coordinates
    \n+
    380 for (int i=dim-1; i>=0; i--)
    \n+
    381 {
    \n+
    382 id = id << yaspgrid_dim_bits;
    \n+
    383 id = id+PersistentIndexType(_it.coord(i));
    \n+
    384 }
    \n+
    385
    \n+
    386 return id;
    \n+
    387 }
    \n+
    \n+
    388
    \n+
    \n+
    390 int compressedIndex () const
    \n+
    391 {
    \n+
    392 return _it.superindex();
    \n+
    393 }
    \n+
    \n+
    394
    \n+
    \n+
    396 int subCompressedIndex (int i, unsigned int cc) const
    \n+
    397 {
    \n+
    398 // get the shift of the entity and the subentity
    \n+
    399 // the subentity shift is only available in the space spanned by the entity
    \n+
    400 std::bitset<dim-codim> subent_shift = Dune::Yasp::entityShift<dim-codim>(i,cc-codim);
    \n+
    401 std::bitset<dim-codim> subent_move = Dune::Yasp::entityMove<dim-codim>(i,cc-codim);
    \n+
    402
    \n+
    403 std::bitset<dim> shift = _it.shift();
    \n+
    404 std::array<int, dim> coord = _it.coord();
    \n+
    405 for (int j=0, k=0; j<dim; j++)
    \n+
    406 {
    \n+
    407 if (!shift[j])
    \n+
    408 continue;
    \n+
    409
    \n+
    410 coord[j] += subent_move[k];
    \n+
    411 shift[j] = subent_shift[k];
    \n+
    412 k++;
    \n+
    413 }
    \n+
    414
    \n+
    415 int which = _g->overlapfront[cc].shiftmapping(shift);
    \n+
    416 return _g->overlapfront[cc].superindex(coord,which);
    \n+
    417 }
    \n+
    \n+
    418 public:
    \n+
    419 const I& transformingsubiterator() const { return _it; }
    \n+
    420 const YGLI& gridlevel() const { return _g; }
    \n+\n+
    422 YGLI& gridlevel() { return _g; }
    \n+
    423 const GridImp * yaspgrid() const { return _g->mg; }
    \n+
    424 protected:
    \n+
    425 I _it = {}; // position in the grid level
    \n+
    426 YGLI _g = {}; // access to grid level
    \n+
    427 };
    \n+
    \n+
    428
    \n+
    429
    \n+
    430 // specialization for codim=0
    \n+
    431 template<int dim, class GridImp>
    \n+
    \n+
    432 class YaspEntity<0,dim,GridImp>
    \n+
    433 : public EntityDefaultImplementation <0,dim,GridImp,YaspEntity>
    \n+
    434 {
    \n+
    435 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    436
    \n+
    437 typedef typename GridImp::Traits::template Codim< 0 >::GeometryImpl GeometryImpl;
    \n+
    438
    \n+
    439 template<int, PartitionIteratorType, typename>
    \n+
    440 friend class YaspLevelIterator;
    \n+
    441
    \n+
    442 template<typename>
    \n+\n+
    444
    \n+
    445 public:
    \n+
    446 typedef typename GridImp::ctype ctype;
    \n+
    447
    \n+
    448 typedef typename GridImp::YGridLevelIterator YGLI;
    \n+
    449 typedef typename GridImp::YGrid::Iterator I;
    \n+
    450
    \n+
    451 typedef typename GridImp::template Codim< 0 >::Geometry Geometry;
    \n+
    452 typedef typename GridImp::template Codim< 0 >::LocalGeometry LocalGeometry;
    \n+
    453
    \n+
    454 template <int cd>
    \n+
    \n+
    455 struct Codim
    \n+
    456 {
    \n+
    457 typedef typename GridImp::template Codim<cd>::Entity Entity;
    \n+
    458 };
    \n
    \n
    459
    \n-
    \n-
    460 Coordinates* coordCont() const
    \n-
    461 {
    \n-
    462 return _grid->getCoords();
    \n-
    463 }
    \n-
    \n-
    464
    \n-
    465 protected:
    \n-\n-
    467 int _superindex = 0;
    \n-\n-
    469 };
    \n-
    \n-
    470
    \n-
    471
    \n-
    \n-
    472 int superindex(iTupel coord) const
    \n-
    473 {
    \n-
    474 // move superindex to first cell in subgrid
    \n-
    475 int si = 0;
    \n-
    476 for (int i=0; i<d; ++i)
    \n-
    477 si += (offset(i)+coord[i]-origin(i))*_superincrement[i];
    \n-
    478 return si;
    \n-
    479 }
    \n+
    460 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n+
    461 typedef typename GridImp::template Codim<0>::EntitySeed EntitySeed;
    \n+
    462 typedef typename GridImp::LevelIntersectionIterator IntersectionIterator;
    \n+
    463 typedef typename GridImp::LevelIntersectionIterator LevelIntersectionIterator;
    \n+
    464 typedef typename GridImp::LeafIntersectionIterator LeafIntersectionIterator;
    \n+
    465 typedef typename GridImp::HierarchicIterator HierarchicIterator;
    \n+
    466
    \n+
    468 typedef typename GridImp::PersistentIndexType PersistentIndexType;
    \n+
    469
    \n+
    471 typedef typename GridImp::YGrid::iTupel iTupel;
    \n+
    472
    \n+
    473 // constructor
    \n+
    \n+\n+
    475 {}
    \n+
    \n+
    476
    \n+
    \n+
    477 YaspEntity (const YGLI& g, const I& it)
    \n+
    478 : _it(it), _g(g)
    \n+
    479 {}
    \n
    \n
    480
    \n
    \n-
    481 int superincrement(int i) const
    \n-
    482 {
    \n-
    483 return _superincrement[i];
    \n-
    484 }
    \n-
    \n-
    485
    \n-
    \n-\n-
    488 {
    \n-
    489 return Iterator(*this);
    \n-
    490 }
    \n-
    \n-
    491
    \n-
    \n-
    493 Iterator begin (const iTupel& co) const
    \n-
    494 {
    \n-
    495 return Iterator(*this,co);
    \n-
    496 }
    \n+
    481 YaspEntity (const YGLI& g, I&& it)
    \n+
    482 : _it(std::move(it)), _g(g)
    \n+
    483 {}
    \n+
    \n+
    484
    \n+
    \n+
    485 YaspEntity (YGLI&& g, I&& it)
    \n+
    486 : _it(std::move(it)), _g(std::move(g))
    \n+
    487 {}
    \n+
    \n+
    488
    \n+
    \n+
    490 bool equals (const YaspEntity& e) const
    \n+
    491 {
    \n+
    492 return _it == e._it && _g == e._g;
    \n+
    493 }
    \n
    \n+
    494
    \n+
    496 int level () const { return _g->level(); }
    \n
    497
    \n-
    \n-
    499 Iterator end () const
    \n-
    500 {
    \n-
    501 iTupel last;
    \n-
    502 for (int i=0; i<d; i++)
    \n-
    503 last[i] = max(i);
    \n-
    504 last[0] += 1;
    \n-
    505 return Iterator(*this,last);
    \n-
    506 }
    \n-
    \n-
    507
    \n-
    508 private:
    \n-
    509 iTupel _origin;
    \n-
    510 std::bitset<d> _shift;
    \n-
    511 Coordinates* _coords;
    \n-
    512 iTupel _size;
    \n-
    513 iTupel _offset;
    \n-
    514 iTupel _supersize;
    \n-
    515 iTupel _superincrement;
    \n-
    516
    \n-
    517 };
    \n-
    \n-
    518
    \n-
    519
    \n-
    521 template <class Coordinates>
    \n-
    \n-
    522 inline std::ostream& operator<< (std::ostream& s, YGridComponent<Coordinates> e)
    \n-
    523 {
    \n-
    524 s << "Printing YGridComponent structure:" << std::endl;
    \n-
    525 s << "Origin: " << e.origin() << std::endl;
    \n-
    526 s << "Shift: " << e.shift() << std::endl;
    \n-
    527 s << "Size: " << e.size() << std::endl;
    \n-
    528 s << "Offset: " << e.offset() << std::endl;
    \n-
    529 s << "Supersize: " << e.supersize() << std::endl;
    \n-
    530 return s;
    \n-
    531 }
    \n-
    \n-
    532
    \n-
    534 template <class Coordinates>
    \n-
    \n-
    535 inline std::ostream& operator<< (std::ostream& s, typename YGridComponent<Coordinates>::Iterator& e)
    \n-
    536 {
    \n-
    537 s << "Printing YGridComponent Iterator:" << std::endl << "Iterator at " << e.coord() << " (index ";
    \n-
    538 s << e.index() << "), position " << e.position();
    \n-
    539 return s;
    \n-
    540 }
    \n+
    \n+
    501 EntitySeed seed () const {
    \n+
    502 return EntitySeed(YaspEntitySeed<0,GridImp>(_g->level(), _it.coord()));
    \n+
    503 }
    \n+
    \n+
    504
    \n+
    \n+\n+
    507 {
    \n+
    508 if (_g->interior[0].inside(_it.coord(),_it.shift()))
    \n+
    509 return InteriorEntity;
    \n+
    510 if (_g->overlap[0].inside(_it.coord(),_it.shift()))
    \n+
    511 return OverlapEntity;
    \n+
    512 DUNE_THROW(GridError, "Impossible GhostEntity");
    \n+
    513 return GhostEntity;
    \n+
    514 }
    \n+
    \n+
    515
    \n+
    \n+\n+
    518 // the element geometry
    \n+
    519 auto ll = _it.lowerleft();
    \n+
    520 auto ur = _it.upperright();
    \n+
    521
    \n+
    522 // If on periodic overlap, transform coordinates by domain size
    \n+
    523 for (int i=0; i<dimworld; i++) {
    \n+
    524 if (gridlevel()->mg->isPeriodic(i)) {
    \n+
    525 int coord = transformingsubiterator().coord(i);
    \n+
    526 if (coord < 0) {
    \n+
    527 auto size = _g->mg->domainSize()[i];
    \n+
    528 ll[i] += size;
    \n+
    529 ur[i] += size;
    \n+
    530 } else if (coord + 1 > gridlevel()->mg->levelSize(gridlevel()->level(),i)) {
    \n+
    531 auto size = _g->mg->domainSize()[i];
    \n+
    532 ll[i] -= size;
    \n+
    533 ur[i] -= size;
    \n+
    534 }
    \n+
    535 }
    \n+
    536 }
    \n+
    537
    \n+
    538 GeometryImpl _geometry(ll,ur);
    \n+
    539 return Geometry( _geometry );
    \n+
    540 }
    \n
    \n
    541
    \n-
    549 template<class Coordinates>
    \n-
    \n-
    550 class YGrid
    \n-
    551 {
    \n-
    552 public:
    \n-
    553 static const int dim = Coordinates::dimension;
    \n-
    554
    \n-
    555 // define data array iterator
    \n-\n-
    557
    \n-
    558 typedef typename std::array<int, dim> iTupel;
    \n-
    559
    \n-
    \n-\n-
    562 {
    \n-
    563 _begin = begin;
    \n-
    564 }
    \n-
    \n-
    565
    \n-
    \n-
    567 int shiftmapping(const std::bitset<dim>& shift) const
    \n-
    568 {
    \n-
    569 return _shiftmapping[shift.to_ulong()];
    \n-
    570 }
    \n-
    \n-
    571
    \n-
    \n-\n-
    574 {
    \n-
    575 return _begin;
    \n-
    576 }
    \n-
    \n-
    577
    \n-
    \n-
    579 DAI dataEnd() const
    \n-
    580 {
    \n-
    581 return _end;
    \n-
    582 }
    \n-
    \n-
    583
    \n-
    \n-
    585 bool inside(const iTupel& coord, const std::bitset<dim>& shift = std::bitset<dim>()) const
    \n-
    586 {
    \n-
    587 return (_begin+_shiftmapping[shift.to_ulong()])->inside(coord);
    \n-
    588 }
    \n-
    \n-
    589
    \n-
    \n-\n-
    594 {
    \n-
    595 public:
    \n+
    \n+
    545 constexpr GeometryType type () const
    \n+
    546 {
    \n+
    547 return GeometryTypes::cube(Geometry::mydimension);
    \n+
    548 }
    \n+
    \n+
    549
    \n+
    \n+
    554 template<int cc> int count () const
    \n+
    555 {
    \n+
    556 return Dune::Yasp::subEnt<dim>(dim,cc);
    \n+
    557 }
    \n+
    \n+
    558
    \n+
    \n+
    563 unsigned int subEntities (unsigned int codim) const
    \n+
    564 {
    \n+
    565 return Dune::Yasp::subEnt<dim>(dim,codim);
    \n+
    566 }
    \n+
    \n+
    567
    \n+
    570 template<int cc>
    \n+
    \n+
    571 typename Codim<cc>::Entity subEntity (int i) const
    \n+
    572 {
    \n+
    573 // calculate move bitset
    \n+
    574 std::bitset<dim> move = Dune::Yasp::entityMove<dim>(i,cc);
    \n+
    575
    \n+
    576 // get the coordinate and modify it
    \n+
    577 iTupel coord = _it.coord();
    \n+
    578 for (int j=0; j<dim; j++)
    \n+
    579 if (move[j])
    \n+
    580 coord[j]++;
    \n+
    581
    \n+
    582 int which = _g->overlapfront[cc].shiftmapping(Dune::Yasp::entityShift<dim>(i,cc));
    \n+
    583 return typename Codim<cc>::Entity(YaspEntity<cc,GridImp::dimension,GridImp>(_g,_g->overlapfront[cc].begin(coord, which)));
    \n+
    584 }
    \n+
    \n+
    585
    \n+
    \n+
    587 Entity father () const
    \n+
    588 {
    \n+
    589 // check if coarse level exists
    \n+
    590 if (_g->level()<=0)
    \n+
    591 DUNE_THROW(GridError, "tried to call father on level 0");
    \n+
    592
    \n+
    593 // yes, get iterator to it
    \n+
    594 YGLI cg(_g);
    \n+
    595 --cg;
    \n
    596
    \n-
    598 Iterator () = default;
    \n+
    597 // coordinates of the cell
    \n+
    598 iTupel coord = _it.coord();
    \n
    599
    \n-
    \n-
    601 Iterator (const YGrid<Coordinates>& yg, const std::array<int,dim>& coords, int which = 0)
    \n-
    602 : _which(which), _yg(&yg)
    \n-
    603 {
    \n-
    604 _it = typename YGridComponent<Coordinates>::Iterator(*(_yg->dataBegin()+which),coords);
    \n-
    605 }
    \n-
    \n-
    606
    \n-
    \n-
    608 Iterator (const YGrid<Coordinates>& yg, bool end=false) : _yg(&yg)
    \n-
    609 {
    \n-
    610 if (end)
    \n-
    611 {
    \n-
    612 _it = _yg->_itends.back();
    \n-
    613 _which = _yg->_itends.size() - 1;
    \n-
    614 }
    \n-
    615 else
    \n-
    616 {
    \n-
    617 _it = _yg->_itbegins[0];
    \n-
    618 _which = 0;
    \n-
    619 }
    \n-
    620 }
    \n-
    \n-
    621
    \n-
    \n-
    623 void reinit(const YGrid<Coordinates>& yg, const std::array<int,dim>& coords, int which = 0)
    \n-
    624 {
    \n-
    625 _yg = &yg;
    \n-
    626 _which = which;
    \n-
    627 _it = typename YGridComponent<Coordinates>::Iterator(*(_yg->dataBegin()+which),coords);
    \n-
    628 }
    \n-
    \n-
    629
    \n-
    \n-
    631 int coord (int i) const
    \n-
    632 {
    \n-
    633 return _it.coord(i);
    \n-
    634 }
    \n-
    \n-
    635
    \n+
    600 // get coordinates on next coarser level
    \n+
    601 for (int k=0; k<dim; k++) coord[k] = coord[k]/2;
    \n+
    602
    \n+
    603 return Entity(YaspEntity<0,GridImp::dimension,GridImp>(cg,cg->overlap[0].begin(coord)));
    \n+
    604 }
    \n+
    \n+
    605
    \n+
    \n+
    607 bool hasFather () const
    \n+
    608 {
    \n+
    609 return (_g->level()>0);
    \n+
    610 }
    \n+
    \n+
    611
    \n+
    \n+\n+
    615 {
    \n+
    616 // configure one of the 2^dim transformations
    \n+
    617 FieldVector<ctype,dim> ll(0.0),ur(0.5);
    \n+
    618
    \n+
    619 for (int k=0; k<dim; k++)
    \n+
    620 {
    \n+
    621 if (_it.coord(k)%2)
    \n+
    622 {
    \n+
    623 ll[k] = 0.5;
    \n+
    624 ur[k] = 1.0;
    \n+
    625 }
    \n+
    626 }
    \n+
    627
    \n+\n+
    629 }
    \n+
    \n+
    630
    \n+
    631 const I& transformingsubiterator () const { return _it; }
    \n+
    632 const YGLI& gridlevel () const { return _g; }
    \n+\n+
    634 YGLI& gridlevel() { return _g; }
    \n+
    635 const GridImp* yaspgrid () const { return _g->mg; }
    \n+
    636
    \n
    \n-
    637 const std::array<int, dim>& coord () const
    \n-
    638 {
    \n-
    639 return _it.coord();
    \n-
    640 }
    \n+
    637 bool isLeaf() const
    \n+
    638 {
    \n+
    639 return (_g->level() == yaspgrid()->maxLevel());
    \n+
    640 }
    \n
    \n
    641
    \n-
    \n-
    642 typename Coordinates::ctype lowerleft(int i) const
    \n-
    643 {
    \n-
    644 return _it.lowerleft(i);
    \n-
    645 }
    \n-
    \n-
    646
    \n-
    \n-
    647 Dune::FieldVector<typename Coordinates::ctype,dim> lowerleft() const
    \n-
    648 {
    \n-
    649 return _it.lowerleft();
    \n-
    650 }
    \n-
    \n-
    651
    \n-
    \n-
    652 typename Coordinates::ctype upperright(int i) const
    \n-
    653 {
    \n-
    654 return _it.upperright(i);
    \n-
    655 }
    \n+
    644 bool isNew () const { return yaspgrid()->adaptRefCount > 0 && yaspgrid()->maxLevel() < _g->level() + yaspgrid()->adaptRefCount; }
    \n+
    645
    \n+
    648 bool mightVanish () const { return false; }
    \n+
    649
    \n+
    \n+\n+
    652 {
    \n+
    653 return YaspIntersectionIterator<GridImp>(*this,false);
    \n+
    654 }
    \n
    \n-
    656
    \n+
    655
    \n
    \n-
    657 Dune::FieldVector<typename Coordinates::ctype,dim> upperright() const
    \n-
    658 {
    \n-
    659 return _it.upperright();
    \n-
    660 }
    \n-
    \n-
    661
    \n-
    \n-
    663 typename Coordinates::ctype meshsize (int i) const
    \n-
    664 {
    \n-
    665 return _it.meshsize(i);
    \n-
    666 }
    \n-
    \n-
    667
    \n-
    \n-
    669 Dune::FieldVector<typename Coordinates::ctype,dim> meshsize() const
    \n-
    670 {
    \n-
    671 return _it.meshsize();
    \n-
    672 }
    \n-
    \n-
    673
    \n-
    \n-
    675 bool shift (int i) const
    \n-
    676 {
    \n-
    677 return _it.shift(i);
    \n-
    678 }
    \n-
    \n-
    679
    \n-
    \n-
    681 std::bitset<dim> shift () const
    \n-
    682 {
    \n-
    683 return _it.shift();
    \n-
    684 }
    \n-
    \n-
    685
    \n-
    \n-
    687 int superindex() const
    \n-
    688 {
    \n-
    689 // the offset of the current component has to be taken into account
    \n-
    690 return _yg->_indexOffset[_which] + _it.superindex();
    \n-
    691 }
    \n-
    \n-
    692
    \n-
    \n-\n-
    695 {
    \n-
    696 if ((++_it == _yg->_itends[_which]) && (_which < _yg->_itends.size()-1))
    \n-
    697 _it = _yg->_itbegins[++_which];
    \n-
    698 return *this;
    \n-
    699 }
    \n-
    \n-
    700
    \n-
    \n-
    702 bool operator==(const Iterator& i) const
    \n-
    703 {
    \n-
    704 if (_which != i._which)
    \n-
    705 return false;
    \n-
    706 return _it == i._it;
    \n-
    707 }
    \n-
    \n-
    708
    \n-
    \n-
    710 bool operator!=(const Iterator& i) const
    \n-
    711 {
    \n-
    712 if (_it != i._it)
    \n-
    713 return true;
    \n-
    714 return _which != i._which;
    \n-
    715 }
    \n-
    \n-
    716
    \n-
    \n-
    718 int which() const
    \n-
    719 {
    \n-
    720 return _which;
    \n-
    721 }
    \n-
    \n-
    722
    \n-
    \n-
    724 void move(int i, int dist)
    \n-
    725 {
    \n-
    726 _it.move(i,dist);
    \n-
    727 }
    \n-
    \n+\n+
    658 {
    \n+
    659 // only if entity is leaf this iterator delivers intersections
    \n+
    660 return YaspIntersectionIterator<GridImp>(*this, ! isLeaf() );
    \n+
    661 }
    \n+
    \n+
    662
    \n+
    \n+\n+
    665 {
    \n+
    666 return ibegin();
    \n+
    667 }
    \n+
    \n+
    668
    \n+
    \n+\n+
    671 {
    \n+
    672 return YaspIntersectionIterator<GridImp>(*this,true);
    \n+
    673 }
    \n+
    \n+
    674
    \n+
    \n+\n+
    677 {
    \n+
    678 return iend();
    \n+
    679 }
    \n+
    \n+
    680
    \n+
    \n+\n+
    683 {
    \n+
    684 return iend();
    \n+
    685 }
    \n+
    \n+
    686
    \n+
    \n+
    691 HierarchicIterator hbegin (int maxlevel) const
    \n+
    692 {
    \n+
    693 return YaspHierarchicIterator<GridImp>(_g,_it,maxlevel);
    \n+
    694 }
    \n+
    \n+
    695
    \n+
    697 HierarchicIterator hend (int /* maxlevel */) const
    \n+
    698 {
    \n+
    699 return YaspHierarchicIterator<GridImp>(_g,_it,_g->level());
    \n+
    700 }
    \n+
    701
    \n+
    702 private:
    \n+
    703 // IndexSets needs access to the private index methods
    \n+
    704 friend class Dune::YaspIndexSet<GridImp,true>;
    \n+
    705 friend class Dune::YaspIndexSet<GridImp,false>;
    \n+
    706 friend class Dune::YaspGlobalIdSet<GridImp>;
    \n+
    707
    \n+\n+
    710 {
    \n+
    711 // encode codim
    \n+
    712 PersistentIndexType id(_it.shift().to_ulong());
    \n+
    713
    \n+
    714 // encode level
    \n+
    715 id = id << yaspgrid_level_bits;
    \n+
    716 id = id+PersistentIndexType(_g->level());
    \n+
    717
    \n+
    718
    \n+
    719 // encode coordinates
    \n+
    720 for (int i=dim-1; i>=0; i--)
    \n+
    721 {
    \n+
    722 id = id << yaspgrid_dim_bits;
    \n+
    723 id = id+PersistentIndexType(_it.coord(i));
    \n+
    724 }
    \n+
    725
    \n+
    726 return id;
    \n+
    727 }
    \n
    728
    \n-
    \n-
    729 void move(const iTupel& dist)
    \n-
    730 {
    \n-
    731 _it.move(dist);
    \n-
    732 }
    \n-
    \n-
    733
    \n-
    \n-
    734 Coordinates* coordCont() const
    \n-
    735 {
    \n-
    736 return _it.coordCont();
    \n-
    737 }
    \n-
    \n-
    738
    \n-
    739
    \n-
    740 private:
    \n-
    741 unsigned int _which = 0;
    \n-
    742 const YGrid<Coordinates>* _yg = nullptr;
    \n-\n-
    744 };
    \n-
    \n-
    745
    \n-
    \n-\n-
    748 {
    \n-
    749 return Iterator(*this);
    \n-
    750 }
    \n-
    \n+
    730 int compressedIndex () const
    \n+
    731 {
    \n+
    732 return _it.superindex();
    \n+
    733 }
    \n+
    734
    \n+
    736 PersistentIndexType subPersistentIndex (int i, int cc) const
    \n+
    737 {
    \n+
    738 // calculate shift and move bitsets
    \n+
    739 std::bitset<dim> shift = Dune::Yasp::entityShift<dim>(i,cc);
    \n+
    740 std::bitset<dim> move = Dune::Yasp::entityMove<dim>(i,cc);
    \n+
    741
    \n+
    742 int trailing = (cc == dim) ? 1000 : 0;
    \n+
    743
    \n+
    744 std::array<int,dim> size = _g->mg->levelSize(_g->level());
    \n+
    745 std::array<int, dim> coord = _it.coord();
    \n+
    746 for (int j=0; j<dim; j++)
    \n+
    747 {
    \n+
    748 // correct size according to shift
    \n+
    749 if (!shift[j])
    \n+
    750 size[j]++;
    \n
    751
    \n-
    \n-
    753 Iterator begin(const std::array<int, dim>& coord, int which = 0) const
    \n-
    754 {
    \n-
    755 return Iterator(*this, coord, which);
    \n-
    756 }
    \n-
    \n-
    757
    \n-
    \n-
    759 Iterator end() const
    \n-
    760 {
    \n-
    761 return Iterator(*this,true);
    \n-
    762 }
    \n-
    \n-
    763
    \n-
    \n-
    764 int superindex(const iTupel& coord, int which) const
    \n-
    765 {
    \n-
    766 return _indexOffset[which] + (dataBegin()+which)->superindex(coord);
    \n-
    767 }
    \n-
    \n-
    768
    \n-
    769
    \n-
    770 // finalize the ygrid construction by storing component iterators
    \n-
    \n-
    771 void finalize(const DAI& end, int artificialOffset = 0)
    \n-
    772 {
    \n-
    773 // set the end iterator in the ygrid component array
    \n-
    774 _end = end;
    \n-
    775
    \n-
    776 _indexOffset.push_back(artificialOffset);
    \n-
    777 int k = 0;
    \n-
    778 for (DAI i=_begin; i != _end; ++i, ++k)
    \n-
    779 {
    \n-
    780 //store begin and end iterators
    \n-
    781 _itbegins.push_back(i->begin());
    \n-
    782 _itends.push_back(i->end());
    \n-
    783
    \n-
    784 // store index offset
    \n-
    785 _indexOffset.push_back(_indexOffset.back() + i->totalsize());
    \n-
    786
    \n-
    787 // store shift to component mapping
    \n-
    788 _shiftmapping[i->shift().to_ulong()] = k;
    \n-
    789 }
    \n-
    790 _indexOffset.resize(_itends.size());
    \n-
    791 }
    \n-
    \n-
    792
    \n-
    793 private:
    \n-
    794
    \n-
    795 friend class YGrid<Coordinates>::Iterator;
    \n-
    796 DAI _begin;
    \n-
    797 DAI _end;
    \n-
    798 std::array<int,Dune::power(2,dim)> _shiftmapping;
    \n-
    799 std::vector<typename YGridComponent<Coordinates>::Iterator> _itbegins;
    \n-
    800 std::vector<typename YGridComponent<Coordinates>::Iterator> _itends;
    \n-
    801 std::vector<int> _indexOffset;
    \n-
    802 };
    \n-
    \n+
    752 // move the coordinates to the cell on which the entity lives
    \n+
    753 if (move[j])
    \n+
    754 coord[j]++;
    \n+
    755 }
    \n+
    756
    \n+
    757 for (int j=0; j<dim; j++)
    \n+
    758 {
    \n+
    759 // in the codim==dim case, count trailing zeroes.
    \n+
    760 if (cc == dim)
    \n+
    761 {
    \n+
    762 int zeroes = 0;
    \n+
    763 for (int k=0; k<_g->level(); k++)
    \n+
    764 if (coord[j] & (1<<k))
    \n+
    765 break;
    \n+
    766 else
    \n+
    767 zeroes++;
    \n+
    768 trailing = std::min(trailing,zeroes);
    \n+
    769 }
    \n+
    770 }
    \n+
    771
    \n+
    772 // encode codim
    \n+
    773 PersistentIndexType id(shift.to_ulong());
    \n+
    774
    \n+
    775 // encode level
    \n+
    776 id = id << yaspgrid_level_bits;
    \n+
    777 id = id+PersistentIndexType(_g->level()-trailing);
    \n+
    778
    \n+
    779 // encode coordinates
    \n+
    780 for (int j=dim-1; j>=0; j--)
    \n+
    781 {
    \n+
    782 id = id << yaspgrid_dim_bits;
    \n+
    783 id = id+PersistentIndexType(coord[j]>>trailing);
    \n+
    784 }
    \n+
    785
    \n+
    786 return id;
    \n+
    787 }
    \n+
    788
    \n+
    790 int subCompressedIndex (int i, int cc) const
    \n+
    791 {
    \n+
    792 // get shift and move of the subentity in question
    \n+
    793 std::bitset<dim> shift = Dune::Yasp::entityShift<dim>(i,cc);
    \n+
    794 std::bitset<dim> move = Dune::Yasp::entityMove<dim>(i,cc);
    \n+
    795
    \n+
    796 std::array<int, dim> coord = _it.coord();
    \n+
    797 for (int j=0; j<dim; j++)
    \n+
    798 coord[j] += move[j];
    \n+
    799
    \n+
    800 int which = _g->overlapfront[cc].shiftmapping(shift);
    \n+
    801 return _g->overlapfront[cc].superindex(coord,which);
    \n+
    802 }
    \n
    803
    \n-
    805 template <class Coordinates>
    \n-
    \n-
    806 inline std::ostream& operator<< (std::ostream& s, const YGrid<Coordinates>& e)
    \n-
    807 {
    \n-
    808 s << "Printing YGrid structure:" << std::endl;
    \n-
    809 for (auto it = e.dataBegin(); it != e.dataEnd(); ++it)
    \n-
    810 s << *it << std::endl;
    \n-
    811 return s;
    \n-
    812 }
    \n-
    \n-
    813
    \n-
    821 template<class Coordinates>
    \n-
    \n-
    822 class YGridList
    \n-
    823 {
    \n-
    824 public:
    \n-
    825 static const int dim = Coordinates::dimension;
    \n+
    804 I _it = {}; // position in the grid level
    \n+
    805 YGLI _g = {}; // access to grid level
    \n+
    806 };
    \n+
    \n+
    807
    \n+
    808
    \n+
    809 // specialization for codim=dim (vertex)
    \n+
    810 template<int dim, class GridImp>
    \n+
    \n+
    811 class YaspEntity<dim,dim,GridImp>
    \n+
    812 : public EntityDefaultImplementation <dim,dim,GridImp,YaspEntity>
    \n+
    813 {
    \n+
    814 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    815
    \n+
    816 template<int, PartitionIteratorType, typename>
    \n+
    817 friend class YaspLevelIterator;
    \n+
    818
    \n+
    819 typedef typename GridImp::Traits::template Codim<dim>::GeometryImpl GeometryImpl;
    \n+
    820
    \n+
    821 public:
    \n+
    822 typedef typename GridImp::ctype ctype;
    \n+
    823
    \n+
    824 typedef typename GridImp::YGridLevelIterator YGLI;
    \n+
    825 typedef typename GridImp::YGrid::Iterator I;
    \n
    826
    \n-
    \n-
    828 struct Intersection
    \n-
    829 {
    \n-
    831 YGridComponent<Coordinates> grid;
    \n-
    833 int rank;
    \n-
    835 int distance;
    \n-
    837 YGrid<Coordinates> yg;
    \n-
    838 };
    \n-
    \n-
    839
    \n-
    840 // define data array iterator type
    \n-
    841 typedef typename std::array<std::deque<Intersection>, Dune::power(2,dim)>::iterator DAI;
    \n-
    842
    \n-
    843 // iterator that allows to iterate over a concatenation of deques. namely those
    \n-
    844 // that belong to the same codimension.
    \n-
    \n-
    845 class Iterator
    \n-
    846 {
    \n-
    847 public:
    \n+
    827 typedef typename GridImp::template Codim<dim>::Geometry Geometry;
    \n+
    828
    \n+
    829 typedef typename GridImp::template Codim<dim>::EntitySeed EntitySeed;
    \n+
    830
    \n+
    832 typedef typename GridImp::PersistentIndexType PersistentIndexType;
    \n+
    833
    \n+
    835 typedef typename GridImp::YGrid::iTupel iTupel;
    \n+
    836
    \n+
    837 // constructor
    \n+
    \n+\n+
    839 {}
    \n+
    \n+
    840
    \n+
    \n+
    841 YaspEntity (const YGLI& g, const I& it)
    \n+
    842 : _it(it), _g(g)
    \n+
    843 {}
    \n+
    \n+
    844
    \n+
    \n+
    845 YaspEntity (YGLI&& g, I&& it)
    \n+
    846 : _it(std::move(it)), _g(std::move(g))
    \n+
    847 {}
    \n+
    \n
    848
    \n
    \n-
    850 Iterator(const YGridList<Coordinates>& ygl, bool end=false) : _end(ygl.dataEnd()), _which(ygl.dataBegin())
    \n-
    851 {
    \n-
    852 _it = _which->begin();
    \n-
    853
    \n-
    854 // advance the iterator to the first element that exists.
    \n-
    855 // some deques might be empty and should be skipped
    \n-
    856 while ((_which != _end) && (_it == _which->end()))
    \n-
    857 {
    \n-
    858 ++_which;
    \n-
    859 if (_which != _end)
    \n-
    860 _it = _which->begin();
    \n-
    861 }
    \n-
    862 // the iterator is at the end if and only if _which==_end
    \n-
    863 if (end)
    \n-
    864 {
    \n-
    865 _which = _end;
    \n-
    866 }
    \n-
    867 }
    \n-
    \n-
    868
    \n-
    \n-
    870 Iterator& operator++ ()
    \n-
    871 {
    \n-
    872 ++_it;
    \n-
    873 // advance the iterator to the next element that exists.
    \n-
    874 // some deques might be empty and should be skipped
    \n-
    875 while ((_which != _end) && (_it == _which->end()))
    \n-
    876 {
    \n-
    877 ++_which;
    \n-
    878 if (_which != _end)
    \n-
    879 _it = _which->begin();
    \n-
    880 }
    \n-
    881 return *this;
    \n-
    882 }
    \n-
    \n-
    883
    \n-
    \n-
    885 typename std::deque<Intersection>::iterator operator->() const
    \n-
    886 {
    \n-
    887 return _it;
    \n-
    888 }
    \n-
    \n-
    889
    \n-
    \n-
    891 typename std::deque<Intersection>::iterator operator*() const
    \n-
    892 {
    \n-
    893 return _it;
    \n-
    894 }
    \n-
    \n-
    895
    \n-
    \n-
    897 bool operator== (const Iterator& i) const
    \n-
    898 {
    \n-
    899 if (_which != i._which)
    \n-
    900 return false;
    \n-
    901 if (_which == _end)
    \n-
    902 return true;
    \n-
    903 return _it == i._it;
    \n-
    904 }
    \n-
    \n-
    905
    \n-
    \n-
    907 bool operator!= (const Iterator& i) const
    \n-
    908 {
    \n-
    909 if (_which != i._which)
    \n-
    910 return true;
    \n-
    911 if (_which == _end)
    \n-
    912 return false;
    \n-
    913 return _it != i._it;
    \n-
    914 }
    \n-
    \n-
    915
    \n-
    916 private:
    \n-
    917 typename std::deque<Intersection>::iterator _it;
    \n-
    918 DAI _end;
    \n-
    919 DAI _which;
    \n-
    920 };
    \n-
    \n-
    921
    \n-
    \n-
    923 Iterator begin() const
    \n-
    924 {
    \n-
    925 return Iterator(*this);
    \n-
    926 }
    \n-
    \n-
    927
    \n-
    \n-
    929 Iterator end() const
    \n-
    930 {
    \n-
    931 return Iterator(*this,true);
    \n-
    932 }
    \n-
    \n-
    933
    \n-
    \n-
    935 void setBegin(typename std::array<std::deque<Intersection>, Dune::power(2,dim)>::iterator begin)
    \n-
    936 {
    \n-
    937 _begin = begin;
    \n-
    938 }
    \n-
    \n+
    850 bool equals (const YaspEntity& e) const
    \n+
    851 {
    \n+
    852 return _it == e._it && _g == e._g;
    \n+
    853 }
    \n+
    \n+
    854
    \n+
    856 int level () const {return _g->level();}
    \n+
    857
    \n+
    \n+
    861 EntitySeed seed () const {
    \n+
    862 return EntitySeed(YaspEntitySeed<dim,GridImp>(_g->level(), _it.coord(), _it.which()));
    \n+
    863 }
    \n+
    \n+
    864
    \n+
    \n+
    869 unsigned int subEntities (unsigned int cc) const
    \n+
    870 {
    \n+
    871 return Dune::Yasp::subEnt<dim>(dim-dim,cc-dim);
    \n+
    872 }
    \n+
    \n+
    873
    \n+
    \n+\n+
    876 GeometryImpl _geometry((_it).lowerleft());
    \n+
    877 return Geometry( _geometry );
    \n+
    878 }
    \n+
    \n+
    879
    \n+
    \n+
    883 constexpr GeometryType type () const
    \n+
    884 {
    \n+
    885 return GeometryTypes::cube(Geometry::mydimension);
    \n+
    886 }
    \n+
    \n+
    887
    \n+
    \n+\n+
    890 {
    \n+
    891 if (_g->interior[dim].inside(_it.coord(),_it.shift()))
    \n+
    892 return InteriorEntity;
    \n+
    893 if (_g->interiorborder[dim].inside(_it.coord(),_it.shift()))
    \n+
    894 return BorderEntity;
    \n+
    895 if (_g->overlap[dim].inside(_it.coord(),_it.shift()))
    \n+
    896 return OverlapEntity;
    \n+
    897 if (_g->overlapfront[dim].inside(_it.coord(),_it.shift()))
    \n+
    898 return FrontEntity;
    \n+
    899 return GhostEntity;
    \n+
    900 }
    \n+
    \n+
    901
    \n+
    903 int subCompressedIndex (int, unsigned int ) const
    \n+
    904 {
    \n+
    905 return compressedIndex();
    \n+
    906 }
    \n+
    907
    \n+
    908 private:
    \n+
    909 // IndexSets needs access to the private index methods
    \n+
    910 friend class Dune::YaspIndexSet<GridImp,true>;
    \n+
    911 friend class Dune::YaspIndexSet<GridImp,false>;
    \n+
    912 friend class Dune::YaspGlobalIdSet<GridImp>;
    \n+
    913
    \n+\n+
    916 {
    \n+
    917 // get coordinate and size of global grid
    \n+
    918 iTupel size = _g->mg->levelSize(_g->level());
    \n+
    919
    \n+
    920 for (int i=0; i<dim; i++)
    \n+
    921 {
    \n+
    922 // we have vertices, add 1 size to all directions
    \n+
    923 size[i]++;
    \n+
    924 }
    \n+
    925
    \n+
    926 // determine min number of trailing zeroes
    \n+
    927 int trailing = 1000;
    \n+
    928 for (int i=0; i<dim; i++)
    \n+
    929 {
    \n+
    930 // count trailing zeros
    \n+
    931 int zeros = 0;
    \n+
    932 for (int j=0; j<_g->level(); j++)
    \n+
    933 if (_it.coord(i)&(1<<j))
    \n+
    934 break;
    \n+
    935 else
    \n+
    936 zeros++;
    \n+
    937 trailing = std::min(trailing,zeros);
    \n+
    938 }
    \n
    939
    \n-
    \n-
    941 DAI dataBegin() const
    \n-
    942 {
    \n-
    943 return _begin;
    \n-
    944 }
    \n-
    \n+
    940 // determine the level of this vertex
    \n+
    941 int level = _g->level()-trailing;
    \n+
    942
    \n+
    943 // encode codim: shift vector of vertices is 0.
    \n+\n
    945
    \n-
    \n-
    947 DAI dataEnd() const
    \n-
    948 {
    \n-
    949 return _end;
    \n-
    950 }
    \n-
    \n-
    951
    \n-
    \n-
    953 int size() const
    \n-
    954 {
    \n-
    955 int count = 0;
    \n-
    956 for (DAI it = _begin; it != _end; ++it)
    \n-
    957 count += it->size();
    \n-
    958 return count;
    \n-
    959 }
    \n-
    \n-
    960
    \n-
    \n-
    962 void finalize(DAI end, const YGrid<Coordinates>& ygrid)
    \n-
    963 {
    \n-
    964 // Instead of directly iterating over the intersection deques, this code
    \n-
    965 // iterates over the components of an associated ygrid and works its way
    \n-
    966 // through the list of intersection deques in parallel.
    \n-
    967 // The reason for this convoluted iteration technique is that there are not
    \n-
    968 // necessarily intersections for all possible shifts, but we have to make
    \n-
    969 // sure that we stop at each shift to update the per-component index shift.
    \n-
    970 // This is ensured by iterating over the ygrid, which is guaranteed to have
    \n-
    971 // a component for each shift vector.
    \n-
    972
    \n-
    973 // set end iterator in the data array
    \n-
    974 _end = end;
    \n-
    975
    \n-
    977 int offset = 0;
    \n-
    978
    \n-
    979 DAI i = _begin;
    \n-
    980
    \n-
    981 // make sure that we have a valid deque (i.e. a non-empty one)
    \n-
    982 while (i != _end && i->begin() == i->end())
    \n-
    983 ++i;
    \n-
    984
    \n-
    985 for (auto yit = ygrid.dataBegin(); yit != ygrid.dataEnd(); ++yit)
    \n-
    986 {
    \n-
    987 if (i == _end)
    \n-
    988 break;
    \n-
    989 auto it = i->begin();
    \n-
    990 if (it->grid.shift() == yit->shift())
    \n-
    991 {
    \n-
    992 // iterate over the intersections in the deque and set the offset
    \n-
    993 for (; it != i->end(); ++it)
    \n-
    994 {
    \n-
    995 it->yg.setBegin(&(it->grid));
    \n-
    996 it->yg.finalize(&(it->grid)+1, offset);
    \n-
    997 }
    \n-
    998
    \n-
    999 // advance to next non-empty deque
    \n-
    1000 ++i;
    \n-
    1001 while (i != _end && i->begin() == i->end())
    \n-
    1002 ++i;
    \n-
    1003 }
    \n-
    1004
    \n-
    1005 // update the offset from the ygrid component
    \n-
    1006 int add = 1;
    \n-
    1007 for (int j=0; j<dim; j++)
    \n-
    1008 add *= yit->supersize(j);
    \n-
    1009 offset += add;
    \n-
    1010 }
    \n-
    1011 assert (i == end);
    \n-
    1012 }
    \n-
    \n-
    1013
    \n-
    1014 private:
    \n-
    1015 DAI _begin;
    \n-
    1016 DAI _end;
    \n-
    1017 };
    \n-
    \n-
    1018
    \n-
    1019} // namespace Dune
    \n-
    1020
    \n-
    1021#endif
    \n-
    std::ostream & operator<<(std::ostream &out, const PartitionType &type)
    write a PartitionType to a stream
    Definition gridenums.hh:72
    \n+
    946 // encode level
    \n+
    947 id = id << yaspgrid_level_bits;
    \n+
    948 id = id+PersistentIndexType(level);
    \n+
    949
    \n+
    950 // encode coordinates
    \n+
    951 for (int i=dim-1; i>=0; i--)
    \n+
    952 {
    \n+
    953 id = id << yaspgrid_dim_bits;
    \n+
    954 id = id+PersistentIndexType(_it.coord(i)>>trailing);
    \n+
    955 }
    \n+
    956
    \n+
    957 return id;
    \n+
    958 }
    \n+
    959
    \n+
    961 int compressedIndex () const { return _it.superindex();}
    \n+
    962
    \n+
    963 public:
    \n+
    964 const I& transformingsubiterator() const { return _it; }
    \n+
    965 const YGLI& gridlevel() const { return _g; }
    \n+\n+
    967 YGLI& gridlevel() { return _g; }
    \n+
    968
    \n+
    969 const GridImp * yaspgrid() const { return _g->mg; }
    \n+
    970 protected:
    \n+
    971 I _it = {}; // position in the grid level
    \n+
    972 YGLI _g = {}; // access to grid level
    \n+
    973 };
    \n+
    \n+
    974
    \n+
    975} // namespace Dune
    \n+
    976
    \n+
    977#endif // DUNE_GRID_YASPGRIDENTITY_HH
    \n+
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n+
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n+
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n+
    @ GhostEntity
    ghost entities
    Definition gridenums.hh:35
    \n+
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n+
    @ OverlapEntity
    all entities lying in the overlap zone
    Definition gridenums.hh:33
    \n+
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    std::array< int, d > sizeArray(const std::array< std::vector< ct >, d > &v)
    Definition ygrid.hh:29
    \n-
    Definition ygrid.hh:75
    \n-
    int index(const iTupel &coord) const
    given a tupel compute its index in the lexicographic numbering
    Definition ygrid.hh:252
    \n-
    int offset(int i) const
    Return offset to origin of enclosing grid.
    Definition ygrid.hh:173
    \n-
    std::array< int, d > iTupel
    Definition ygrid.hh:81
    \n-
    YGridComponent< Coordinates > move(iTupel v) const
    return grid moved by the vector v
    Definition ygrid.hh:263
    \n-
    iTupel size() const
    retrun size
    Definition ygrid.hh:203
    \n-
    static const int d
    Definition ygrid.hh:79
    \n-
    YGridComponent< Coordinates > intersection(const YGridComponent< Coordinates > &r) const
    Return YGridComponent of supergrid of self which is the intersection of self and another YGridCompone...
    Definition ygrid.hh:271
    \n-
    Coordinates::ctype ct
    Definition ygrid.hh:78
    \n-
    Coordinates * getCoords() const
    Definition ygrid.hh:167
    \n-
    int min(int i) const
    Return minimum index in direction i.
    Definition ygrid.hh:218
    \n-
    YGridComponent(iTupel origin, iTupel size)
    make ygrid without coordinate information
    Definition ygrid.hh:99
    \n-
    int totalsize() const
    Return total size of index set which is the product of all size per direction.
    Definition ygrid.hh:209
    \n-
    YGridComponent(iTupel origin, iTupel size, const YGridComponent< Coordinates > &enclosing)
    make a subgrid by taking coordinates from a larger grid
    Definition ygrid.hh:108
    \n-
    const iTupel & supersize() const
    return size of enclosing grid
    Definition ygrid.hh:191
    \n-
    YGridComponent(iTupel origin, std::bitset< d > shift, Coordinates *coords, iTupel size, iTupel offset, iTupel supersize)
    Make YGridComponent by giving all parameters.
    Definition ygrid.hh:131
    \n-
    int superindex(iTupel coord) const
    Definition ygrid.hh:472
    \n-
    Iterator begin() const
    return iterator to first element of index set
    Definition ygrid.hh:487
    \n-
    FieldVector< ct, d > fTupel
    Definition ygrid.hh:82
    \n-
    Iterator begin(const iTupel &co) const
    return iterator to given element of index set
    Definition ygrid.hh:493
    \n-
    YGridComponent()
    make uninitialized ygrid
    Definition ygrid.hh:85
    \n-
    int origin(int i) const
    Return origin in direction i.
    Definition ygrid.hh:144
    \n-
    int supersize(int i) const
    return size of enclosing grid
    Definition ygrid.hh:185
    \n-
    int size(int i) const
    return size in direction i
    Definition ygrid.hh:197
    \n-
    int max(int i) const
    Return maximum index in direction i.
    Definition ygrid.hh:224
    \n-
    const std::bitset< d > & shift() const
    Return shift tupel.
    Definition ygrid.hh:162
    \n-
    int superincrement(int i) const
    Definition ygrid.hh:481
    \n-
    bool shift(int i) const
    Return shift in direction i.
    Definition ygrid.hh:156
    \n-
    Iterator end() const
    return subiterator to last element of index set
    Definition ygrid.hh:499
    \n-
    bool inside(const iTupel &coord) const
    given a coordinate, return true if it is in the grid
    Definition ygrid.hh:241
    \n-
    bool empty() const
    Return true if YGrid is empty, i.e. has size 0 in all directions.
    Definition ygrid.hh:230
    \n-
    const iTupel & offset() const
    Return offset to origin of enclosing grid.
    Definition ygrid.hh:179
    \n-
    const iTupel & origin() const
    return reference to origin
    Definition ygrid.hh:150
    \n-
    Definition ygrid.hh:298
    \n-
    Iterator & operator++()
    Increment iterator to next cell with position.
    Definition ygrid.hh:379
    \n-
    int superindex() const
    Return consecutive index in enclosing grid.
    Definition ygrid.hh:344
    \n-
    bool operator!=(const Iterator &i) const
    Return true when two iterators over the same grid are not equal (!).
    Definition ygrid.hh:338
    \n-
    ct lowerleft(int i) const
    Return ith component of lower left corner of the entity associated with the current coordinates and s...
    Definition ygrid.hh:403
    \n-
    std::bitset< d > shift() const
    Definition ygrid.hh:455
    \n-\n-
    ct meshsize(int i) const
    Return meshsize in direction i.
    Definition ygrid.hh:436
    \n-
    bool shift(int i) const
    Definition ygrid.hh:450
    \n-
    const YGridComponent< Coordinates > * _grid
    Definition ygrid.hh:468
    \n-
    void reinit(const YGridComponent< Coordinates > &r, const iTupel &coord)
    reinitialize iterator to given position
    Definition ygrid.hh:317
    \n-
    void move(const iTupel &dist)
    move this iterator dist cells in direction i
    Definition ygrid.hh:369
    \n-
    fTupel meshsize() const
    Return meshsize of current cell as reference.
    Definition ygrid.hh:442
    \n-
    fTupel lowerleft() const
    Return lower left corner of the entity associated with the current coordinates and shift.
    Definition ygrid.hh:409
    \n-
    Coordinates * coordCont() const
    Definition ygrid.hh:460
    \n-
    iTupel _coord
    current position in index set
    Definition ygrid.hh:466
    \n-
    const iTupel & coord() const
    Return coordinate of the cell as reference (do not modify).
    Definition ygrid.hh:356
    \n-
    void move(int i, int dist)
    move this iterator dist cells in direction i
    Definition ygrid.hh:362
    \n-
    Iterator(const YGridComponent< Coordinates > &r)
    Make iterator pointing to first cell in a grid.
    Definition ygrid.hh:304
    \n-
    ct upperright(int i) const
    Return ith component of upper right corder of the entity associated with the current coordinates and ...
    Definition ygrid.hh:418
    \n-
    int coord(int i) const
    Return coordinate of the cell in direction i.
    Definition ygrid.hh:350
    \n-
    fTupel upperright() const
    Return upper right corder of the entity associated with the current coordinates and shift.
    Definition ygrid.hh:427
    \n-
    bool operator==(const Iterator &i) const
    Return true when two iterators over the same grid are equal (!).
    Definition ygrid.hh:332
    \n-
    Iterator(const YGridComponent< Coordinates > &r, const iTupel &coord)
    Make iterator pointing to given cell in a grid.
    Definition ygrid.hh:311
    \n-
    int _superindex
    consecutive index in enclosing grid
    Definition ygrid.hh:467
    \n-
    implements a collection of YGridComponents which form a codimension Entities of given codimension c n...
    Definition ygrid.hh:551
    \n-
    int shiftmapping(const std::bitset< dim > &shift) const
    get which component belongs to a given shift vector
    Definition ygrid.hh:567
    \n-
    DAI dataBegin() const
    get start iterator in the data array
    Definition ygrid.hh:573
    \n-
    Iterator begin() const
    return begin iterator for the codimension and partition the ygrid represents
    Definition ygrid.hh:747
    \n-
    DAI dataEnd() const
    get end iterator in the data array
    Definition ygrid.hh:579
    \n-
    std::array< int, dim > iTupel
    Definition ygrid.hh:558
    \n-
    static const int dim
    Definition ygrid.hh:553
    \n-
    void setBegin(DAI begin)
    set start iterator in the data array
    Definition ygrid.hh:561
    \n-
    bool inside(const iTupel &coord, const std::bitset< dim > &shift=std::bitset< dim >()) const
    decide whether a coordinate is in the grid (depending on the component)
    Definition ygrid.hh:585
    \n-
    int superindex(const iTupel &coord, int which) const
    Definition ygrid.hh:764
    \n-
    Iterator begin(const std::array< int, dim > &coord, int which=0) const
    return iterator pointint to a specified position
    Definition ygrid.hh:753
    \n-
    YGridComponent< Coordinates > * DAI
    Definition ygrid.hh:556
    \n-
    void finalize(const DAI &end, int artificialOffset=0)
    Definition ygrid.hh:771
    \n-
    Iterator end() const
    return end iterator for the codimension and partition the ygrid represents
    Definition ygrid.hh:759
    \n-
    Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity in YaspGrid.
    Definition ygrid.hh:594
    \n-
    Iterator()=default
    default constructor
    \n-
    int which() const
    return the current component number
    Definition ygrid.hh:718
    \n-
    void move(int i, int dist)
    move the grid, this is only done and needed for codim 0
    Definition ygrid.hh:724
    \n-
    bool operator==(const Iterator &i) const
    compare two iterators: component has to match
    Definition ygrid.hh:702
    \n-
    Coordinates::ctype lowerleft(int i) const
    Definition ygrid.hh:642
    \n-
    Dune::FieldVector< typename Coordinates::ctype, dim > meshsize() const
    return the current meshsize vector
    Definition ygrid.hh:669
    \n-
    Iterator(const YGrid< Coordinates > &yg, const std::array< int, dim > &coords, int which=0)
    construct an iterator from coordinates and component
    Definition ygrid.hh:601
    \n-
    Coordinates * coordCont() const
    Definition ygrid.hh:734
    \n-
    Coordinates::ctype upperright(int i) const
    Definition ygrid.hh:652
    \n-
    std::bitset< dim > shift() const
    return the shift vector
    Definition ygrid.hh:681
    \n-
    bool shift(int i) const
    return the shift in direction i
    Definition ygrid.hh:675
    \n-
    bool operator!=(const Iterator &i) const
    compare two iterators: component has to match
    Definition ygrid.hh:710
    \n-
    void move(const iTupel &dist)
    Definition ygrid.hh:729
    \n-
    Dune::FieldVector< typename Coordinates::ctype, dim > upperright() const
    Definition ygrid.hh:657
    \n-
    const std::array< int, dim > & coord() const
    return coordinate array at the current position
    Definition ygrid.hh:637
    \n-
    Iterator & operator++()
    increment to the next entity jumping to next component if necessary
    Definition ygrid.hh:694
    \n-
    Coordinates::ctype meshsize(int i) const
    return the current meshsize in direction i
    Definition ygrid.hh:663
    \n-
    int coord(int i) const
    return coordinate at the current position (direction i)
    Definition ygrid.hh:631
    \n-
    Iterator(const YGrid< Coordinates > &yg, bool end=false)
    create an iterator to start or end of the codimension
    Definition ygrid.hh:608
    \n-
    Dune::FieldVector< typename Coordinates::ctype, dim > lowerleft() const
    Definition ygrid.hh:647
    \n-
    int superindex() const
    return the superindex
    Definition ygrid.hh:687
    \n-
    void reinit(const YGrid< Coordinates > &yg, const std::array< int, dim > &coords, int which=0)
    reinitializes an iterator, as if it was just constructed.
    Definition ygrid.hh:623
    \n+
    const int yaspgrid_level_bits
    Definition yaspgrid.hh:48
    \n+
    const int yaspgrid_dim_bits
    Definition yaspgrid.hh:47
    \n+
    Default Implementations for EntityImp.
    Definition common/entity.hh:542
    \n+
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n+
    static constexpr int mydimension
    geometry dimension
    Definition common/geometry.hh:94
    \n+
    The general version that handles all codimensions but 0 and dim.
    Definition yaspgridgeometry.hh:31
    \n+
    Definition yaspgridentity.hh:268
    \n+
    int level() const
    level of this element
    Definition yaspgridentity.hh:282
    \n+
    Geometry geometry() const
    geometry of this entity
    Definition yaspgridentity.hh:296
    \n+
    GridImp::ctype ctype
    Definition yaspgridentity.hh:274
    \n+
    constexpr GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition yaspgridentity.hh:305
    \n+
    PersistentIndexType persistentIndex() const
    globally unique, persistent index
    Definition yaspgridentity.hh:359
    \n+
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:420
    \n+
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:419
    \n+
    YGLI _g
    Definition yaspgridentity.hh:426
    \n+
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:347
    \n+
    PartitionType partitionType() const
    return partition type attribute
    Definition yaspgridentity.hh:320
    \n+
    GridImp::Traits::template Codim< codim >::GeometryImpl GeometryImpl
    Definition yaspgridentity.hh:277
    \n+
    YGLI & gridlevel()
    Definition yaspgridentity.hh:422
    \n+
    int subCompressedIndex(int i, unsigned int cc) const
    subentity compressed index
    Definition yaspgridentity.hh:396
    \n+
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridentity.hh:333
    \n+
    GridImp::YGrid::Iterator I
    Definition yaspgridentity.hh:334
    \n+
    const GridImp * yaspgrid() const
    Definition yaspgridentity.hh:423
    \n+
    GridImp::template Codim< codim >::EntitySeed EntitySeed
    Definition yaspgridentity.hh:279
    \n+
    YaspEntity(YGLI &&g, const I &&it)
    Definition yaspgridentity.hh:342
    \n+
    EntitySeed seed() const
    Return the entity seed which contains sufficient information to generate the entity again and uses as...
    Definition yaspgridentity.hh:290
    \n+
    int compressedIndex() const
    consecutive, codim-wise, level-wise index
    Definition yaspgridentity.hh:390
    \n+
    YaspEntity(const YGLI &g, const I &it)
    Definition yaspgridentity.hh:338
    \n+
    I _it
    Definition yaspgridentity.hh:425
    \n+
    YaspEntity()
    Definition yaspgridentity.hh:335
    \n+
    GridImp::template Codim< codim >::Geometry Geometry
    Definition yaspgridentity.hh:276
    \n+
    GridImp::PersistentIndexType PersistentIndexType
    Definition yaspgridentity.hh:356
    \n+
    unsigned int subEntities(unsigned int cc) const
    Definition yaspgridentity.hh:314
    \n+
    I & transformingsubiterator()
    Definition yaspgridentity.hh:421
    \n+
    Describes the minimal information necessary to create a fully functional YaspEntity.
    Definition yaspgridentityseed.hh:18
    \n+
    Iterates over entities of one grid level.
    Definition yaspgridleveliterator.hh:19
    \n+
    YaspIntersectionIterator enables iteration over intersections with neighboring codim 0 entities.
    Definition yaspgridintersectioniterator.hh:22
    \n+
    YaspHierarchicIterator enables iteration over son entities of codim 0.
    Definition yaspgridhierarchiciterator.hh:20
    \n+
    Implementation of Level- and LeafIndexSets for YaspGrid.
    Definition yaspgridindexsets.hh:25
    \n+
    persistent, globally unique Ids
    Definition yaspgrididset.hh:25
    \n+
    LeafIntersectionIterator ileafbegin() const
    returns intersection iterator for first intersection
    Definition yaspgridentity.hh:657
    \n+
    GridImp::template Codim< 0 >::LocalGeometry LocalGeometry
    Definition yaspgridentity.hh:452
    \n+
    Codim< cc >::Entity subEntity(int i) const
    Definition yaspgridentity.hh:571
    \n+
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:490
    \n+
    YaspEntity(const YGLI &g, I &&it)
    Definition yaspgridentity.hh:481
    \n+
    int count() const
    Definition yaspgridentity.hh:554
    \n+
    GridImp::template Codim< 0 >::EntitySeed EntitySeed
    Definition yaspgridentity.hh:461
    \n+
    GridImp::PersistentIndexType PersistentIndexType
    define the type used for persistent indices
    Definition yaspgridentity.hh:468
    \n+
    GridImp::YGrid::iTupel iTupel
    define type used for coordinates in grid module
    Definition yaspgridentity.hh:471
    \n+
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:632
    \n+
    IntersectionIterator iend() const
    Reference to one past the last neighbor.
    Definition yaspgridentity.hh:670
    \n+
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:631
    \n+
    GridImp::ctype ctype
    Definition yaspgridentity.hh:446
    \n+
    YGLI & gridlevel()
    Definition yaspgridentity.hh:634
    \n+
    YaspEntity(const YGLI &g, const I &it)
    Definition yaspgridentity.hh:477
    \n+
    const GridImp * yaspgrid() const
    Definition yaspgridentity.hh:635
    \n+
    int level() const
    level of this element
    Definition yaspgridentity.hh:496
    \n+
    GridImp::LeafIntersectionIterator LeafIntersectionIterator
    Definition yaspgridentity.hh:464
    \n+
    YaspEntity(YGLI &&g, I &&it)
    Definition yaspgridentity.hh:485
    \n+
    PartitionType partitionType() const
    return partition type attribute
    Definition yaspgridentity.hh:506
    \n+
    LevelIntersectionIterator ilevelend() const
    Reference to one past the last neighbor.
    Definition yaspgridentity.hh:682
    \n+
    bool mightVanish() const
    Returns true, if entity might disappear during the next call to adapt()
    Definition yaspgridentity.hh:648
    \n+
    GridImp::HierarchicIterator HierarchicIterator
    Definition yaspgridentity.hh:465
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition yaspgridentity.hh:460
    \n+
    LevelIntersectionIterator ilevelbegin() const
    returns intersection iterator for first intersection
    Definition yaspgridentity.hh:664
    \n+
    LeafIntersectionIterator ileafend() const
    Reference to one past the last neighbor.
    Definition yaspgridentity.hh:676
    \n+
    YaspEntity()
    Definition yaspgridentity.hh:474
    \n+
    GridImp::YGrid::Iterator I
    Definition yaspgridentity.hh:449
    \n+
    GridImp::template Codim< 0 >::Geometry Geometry
    Definition yaspgridentity.hh:451
    \n+
    Geometry geometry() const
    geometry of this entity
    Definition yaspgridentity.hh:517
    \n+
    Entity father() const
    Inter-level access to father element on coarser grid. Assumes that meshes are nested.
    Definition yaspgridentity.hh:587
    \n+
    bool isNew() const
    Returns true, if the entity has been created during the last call to adapt()
    Definition yaspgridentity.hh:644
    \n+
    constexpr GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition yaspgridentity.hh:545
    \n+
    EntitySeed seed() const
    Return the entity seed which contains sufficient information to generate the entity again and uses as...
    Definition yaspgridentity.hh:501
    \n+
    HierarchicIterator hbegin(int maxlevel) const
    Definition yaspgridentity.hh:691
    \n+
    IntersectionIterator ibegin() const
    returns intersection iterator for first intersection
    Definition yaspgridentity.hh:651
    \n+
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridentity.hh:448
    \n+
    unsigned int subEntities(unsigned int codim) const
    Definition yaspgridentity.hh:563
    \n+
    LocalGeometry geometryInFather() const
    Definition yaspgridentity.hh:614
    \n+
    GridImp::LevelIntersectionIterator IntersectionIterator
    Definition yaspgridentity.hh:462
    \n+
    GridImp::LevelIntersectionIterator LevelIntersectionIterator
    Definition yaspgridentity.hh:463
    \n+
    I & transformingsubiterator()
    Definition yaspgridentity.hh:633
    \n+
    bool isLeaf() const
    Definition yaspgridentity.hh:637
    \n+
    bool hasFather() const
    returns true if father entity exists
    Definition yaspgridentity.hh:607
    \n+
    GridImp::template Codim< cd >::Entity Entity
    Definition yaspgridentity.hh:457
    \n+
    int level() const
    level of this element
    Definition yaspgridentity.hh:856
    \n+
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:850
    \n+
    YGLI & gridlevel()
    Definition yaspgridentity.hh:967
    \n+
    Geometry geometry() const
    geometry of this entity
    Definition yaspgridentity.hh:875
    \n+
    YaspEntity(const YGLI &g, const I &it)
    Definition yaspgridentity.hh:841
    \n+
    unsigned int subEntities(unsigned int cc) const
    Definition yaspgridentity.hh:869
    \n+
    PartitionType partitionType() const
    return partition type attribute
    Definition yaspgridentity.hh:889
    \n+
    GridImp::ctype ctype
    Definition yaspgridentity.hh:822
    \n+
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridentity.hh:824
    \n+
    GridImp::PersistentIndexType PersistentIndexType
    define the type used for persistent indices
    Definition yaspgridentity.hh:832
    \n+
    EntitySeed seed() const
    Return the entity seed which contains sufficient information to generate the entity again and uses as...
    Definition yaspgridentity.hh:861
    \n+
    const GridImp * yaspgrid() const
    Definition yaspgridentity.hh:969
    \n+
    constexpr GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition yaspgridentity.hh:883
    \n+
    GridImp::YGrid::Iterator I
    Definition yaspgridentity.hh:825
    \n+
    I & transformingsubiterator()
    Definition yaspgridentity.hh:966
    \n+
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:964
    \n+
    GridImp::YGrid::iTupel iTupel
    define type used for coordinates in grid module
    Definition yaspgridentity.hh:835
    \n+
    GridImp::template Codim< dim >::Geometry Geometry
    Definition yaspgridentity.hh:827
    \n+
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:965
    \n+
    YaspEntity(YGLI &&g, I &&it)
    Definition yaspgridentity.hh:845
    \n+
    YaspEntity()
    Definition yaspgridentity.hh:838
    \n+
    GridImp::template Codim< dim >::EntitySeed EntitySeed
    Definition yaspgridentity.hh:829
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1253 +1,1293 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-ygrid.hh\n+yaspgridentity.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRID_YGRID_HH\n-6#define DUNE_GRID_YASPGRID_YGRID_HH\n+5#ifndef DUNE_GRID_YASPGRIDENTITY_HH\n+6#define DUNE_GRID_YASPGRIDENTITY_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\n-21namespace _\bD_\bu_\bn_\be {\n-22\n-23 namespace Yasp {\n-28 template\n-_\b2_\b9 std::array _\bs_\bi_\bz_\be_\bA_\br_\br_\ba_\by(const std::array,d>& v)\n-30 {\n-31 std::array tmp;\n-32 for (int i=0; i\n-_\b7_\b4 class _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n-75 {\n-76 public:\n-77 //extract coordinate type and dimension from the coordinate container\n-_\b7_\b8 typedef typename Coordinates::ctype _\bc_\bt;\n-_\b7_\b9 static const int _\bd = Coordinates::dimension;\n-80\n-_\b8_\b1 typedef std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-_\b8_\b2 typedef FieldVector _\bf_\bT_\bu_\bp_\be_\bl;\n-83\n-_\b8_\b5 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt () : _shift(0ULL)\n-86 {\n-87 std::fill(_origin.begin(), _origin.end(), 0);\n-88 std::fill(_offset.begin(), _offset.end(), 0);\n-89 std::fill(_size.begin(), _size.end(), 0);\n-90 }\n-91\n-_\b9_\b9 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt(_\bi_\bT_\bu_\bp_\be_\bl _\bo_\br_\bi_\bg_\bi_\bn, _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be)\n-100 : _origin(_\bo_\br_\bi_\bg_\bi_\bn), _size(_\bs_\bi_\bz_\be)\n-101 {}\n-102\n-_\b1_\b0_\b8 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt (_\bi_\bT_\bu_\bp_\be_\bl _\bo_\br_\bi_\bg_\bi_\bn, _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be, const\n-_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& enclosing)\n-109 : _origin(_\bo_\br_\bi_\bg_\bi_\bn), _shift(enclosing._\bs_\bh_\bi_\bf_\bt()), _coords(enclosing._\bg_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs\n-()), _size(_\bs_\bi_\bz_\be), _supersize(enclosing._\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be())\n-110 {\n-111 for (int i=0; i<_\bd; i++)\n-112 _offset[i] = _\bo_\br_\bi_\bg_\bi_\bn[i] - enclosing._\bo_\br_\bi_\bg_\bi_\bn(i) + enclosing._\bo_\bf_\bf_\bs_\be_\bt(i);\n-113\n-114 // compute superincrements\n-115 int inc = 1;\n-116 for (int i=0; i<_\bd; ++i)\n-117 {\n-118 _superincrement[i] = inc;\n-119 inc *= _supersize[i];\n+8#include \n+9#include \n+10\n+24//========================================================================\n+25\n+26\n+27\n+28\n+29namespace _\bD_\bu_\bn_\be {\n+30\n+31 namespace Yasp {\n+32\n+33#ifndef DOXYGEN\n+34\n+35 // table for quick evaluation of binomial coefficients\n+36 template\n+37 struct BinomialTable\n+38 {\n+39 // evaluation - note that in general d!=n, n is only the\n+40 // maximum value of d (in our case dimworld)\n+41 static constexpr int evaluate(int d, int c)\n+42 {\n+43 return _values[_offsets[d] + c];\n+44 }\n+45\n+46 // the actual implementation\n+47 [[deprecated(\"Use binomial from dune-common's math.hh\")]]\n+48 static constexpr int binomial(int d, int c)\n+49 {\n+50 long binomial=1;\n+51 for (int i=d-c+1; i<=d; i++)\n+52 binomial *= i;\n+53 for (long i=2; i<=c; i++)\n+54 binomial /= i;\n+55 return binomial;\n+56 }\n+57\n+58 private:\n+59 // prevent construction\n+60 BinomialTable() = delete;\n+61\n+62 // compute binomial(r, c) and advance row `r` and column `c`\n+63 static constexpr int nextValue(int& r, int& c)\n+64 {\n+65 const auto result = Dune::binomial(r, c);\n+66\n+67 c += 1;\n+68 if (c > r) {\n+69 r += 1;\n+70 c = 0;\n+71 }\n+72\n+73 return result;\n+74 }\n+75\n+76 template\n+77 static constexpr std::array computeValues(std::\n+index_sequence)\n+78 {\n+79 int r = 0, c = 0;\n+80 return {{ ((void)I, nextValue(r, c))... }};\n+81 }\n+82\n+83 template\n+84 static constexpr std::array computeOffsets(std::\n+index_sequence)\n+85 { return {{ (I*(I+1)/2)... }}; }\n+86\n+87 static constexpr std::array _values = computeValues(std::\n+make_index_sequence<(n+1)*(n+2)/2>{});\n+88 static constexpr std::array _offsets = computeOffsets(std::\n+make_index_sequence{});\n+89 };\n+90\n+91#if __cplusplus < 201703L\n+92 template\n+93 constexpr std::array BinomialTable::_values;\n+94 template\n+95 constexpr std::array BinomialTable::_offsets;\n+96#endif\n+97\n+104 template\n+105 constexpr int subEnt(int d, int c)\n+106 {\n+107 return (d < c ? 0 : BinomialTable::evaluate(d,c) << c);\n+108 }\n+109\n+110 // Make a table mapping all subentities of a codim 0 entity to a value.\n+111 // F is the functor to be evaluated.\n+112 template\n+113 struct EntityShiftTable\n+114 {\n+115 typedef std::bitset value_type;\n+116\n+117 static value_type evaluate(int i, int codim)\n+118 {\n+119 return {_values[_offsets[codim] + i]};\n 120 }\n-121 }\n-122\n-_\b1_\b3_\b1 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt (_\bi_\bT_\bu_\bp_\be_\bl _\bo_\br_\bi_\bg_\bi_\bn, std::bitset _\bs_\bh_\bi_\bf_\bt, Coordinates* coords,\n-_\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be, _\bi_\bT_\bu_\bp_\be_\bl _\bo_\bf_\bf_\bs_\be_\bt, _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be)\n-132 : _origin(_\bo_\br_\bi_\bg_\bi_\bn), _shift(_\bs_\bh_\bi_\bf_\bt), _coords(coords), _size(_\bs_\bi_\bz_\be), _offset\n-(_\bo_\bf_\bf_\bs_\be_\bt), _supersize(_\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be)\n-133 {\n-134 // compute superincrements\n-135 int inc = 1;\n-136 for (int i=0; i<_\bd; ++i)\n-137 {\n-138 _superincrement[i] = inc;\n-139 inc *= _supersize[i];\n-140 }\n-141 }\n-142\n-_\b1_\b4_\b4 int _\bo_\br_\bi_\bg_\bi_\bn (int i) const\n-145 {\n-146 return _origin[i];\n-147 }\n-148\n-_\b1_\b5_\b0 const _\bi_\bT_\bu_\bp_\be_\bl& _\bo_\br_\bi_\bg_\bi_\bn () const\n-151 {\n-152 return _origin;\n-153 }\n-154\n-_\b1_\b5_\b6 bool _\bs_\bh_\bi_\bf_\bt (int i) const\n-157 {\n-158 return _shift[i];\n-159 }\n-160\n-_\b1_\b6_\b2 const std::bitset& _\bs_\bh_\bi_\bf_\bt () const\n-163 {\n-164 return _shift;\n+121\n+122 private:\n+123\n+124 // prevent construction\n+125 EntityShiftTable() = delete;\n+126\n+127 // compute offset of codimension `codim` entities and advance `offset`\n+128 static constexpr int nextOffset(int& offset, int codim)\n+129 {\n+130 if (codim == 0) {\n+131 offset = 0;\n+132 return 0;\n+133 }\n+134\n+135 offset += subEnt(dim, codim-1);\n+136 return offset;\n+137 }\n+138\n+139 template\n+140 static constexpr std::array computeOffsets(std::\n+index_sequence)\n+141 {\n+142 int offset = 0;\n+143 return {{ (nextOffset(offset, I))... }};\n+144 }\n+145\n+146 // compute shift table entry for (`codim`, `i`) and advance `codim`, `i`\n+147 static constexpr unsigned char nextValue(int& codim, int& i)\n+148 {\n+149 const auto result = F::evaluate(i, codim);\n+150\n+151 i += 1;\n+152 if (i >= subEnt(dim, codim)) {\n+153 codim += 1;\n+154 i = 0;\n+155 }\n+156\n+157 return result;\n+158 }\n+159\n+160 template\n+161 static constexpr std::array computeValues\n+(std::index_sequence)\n+162 {\n+163 int codim = 0, i = 0;\n+164 return {{ ((void)I, nextValue(codim, i))... }};\n 165 }\n 166\n-_\b1_\b6_\b7 Coordinates* _\bg_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs() const\n-168 {\n-169 return _coords;\n-170 }\n+167 static constexpr std::array _offsets = computeOffsets(std::\n+make_index_sequence{});\n+168 static constexpr std::array _values =\n+computeValues(std::make_index_sequence{});\n+169\n+170 };\n 171\n-_\b1_\b7_\b3 int _\bo_\bf_\bf_\bs_\be_\bt (int i) const\n-174 {\n-175 return _offset[i];\n-176 }\n-177\n-_\b1_\b7_\b9 const _\bi_\bT_\bu_\bp_\be_\bl & _\bo_\bf_\bf_\bs_\be_\bt () const\n-180 {\n-181 return _offset;\n-182 }\n-183\n-_\b1_\b8_\b5 int _\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be (int i) const\n-186 {\n-187 return _supersize[i];\n-188 }\n-189\n-_\b1_\b9_\b1 const _\bi_\bT_\bu_\bp_\be_\bl & _\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be () const\n-192 {\n-193 return _supersize;\n-194 }\n-195\n-_\b1_\b9_\b7 int _\bs_\bi_\bz_\be (int i) const\n-198 {\n-199 return _size[i];\n-200 }\n+172#if __cplusplus < 201703L\n+173 template\n+174 constexpr std::array EntityShiftTable::_offsets;\n+175 template\n+176 constexpr std::array EntityShiftTable::_values;\n+177#endif\n+178\n+179 // functor for doing the actual entity shift calculation\n+180 template\n+181 struct calculate_entity_shift\n+182 {\n+183 static constexpr unsigned long long evaluate(int index, int cc)\n+184 {\n+185 auto result = 0ull;\n+186 for (int d = dim; d>0; d--)\n+187 {\n+188 if (cc == d)\n+189 return result;\n+190 if (index < subEnt(d-1,cc))\n+191 result |= 1ull << (d-1);\n+192 else\n+193 {\n+194 index = (index - subEnt(d-1, cc)) % subEnt(d-1,cc-1);\n+195 cc--;\n+196 }\n+197 }\n+198 return result;\n+199 }\n+200 };\n 201\n-_\b2_\b0_\b3 _\bi_\bT_\bu_\bp_\be_\bl _\bs_\bi_\bz_\be () const\n-204 {\n-205 return _size;\n-206 }\n-207\n-_\b2_\b0_\b9 int _\bt_\bo_\bt_\ba_\bl_\bs_\bi_\bz_\be () const\n-210 {\n-211 int s=1;\n-212 for (int i=0; i<_\bd; ++i)\n-213 s *= _\bs_\bi_\bz_\be(i);\n-214 return s;\n-215 }\n-216\n-_\b2_\b1_\b8 int _\bm_\bi_\bn (int i) const\n+210 template\n+211 std::bitset entityShift(int index, int cc)\n+212 {\n+213 return EntityShiftTable,dim>::evaluate\n+(index,cc);\n+214 }\n+215\n+216 // functor for doing the actual entity move calculation\n+217 template\n+218 struct calculate_entity_move\n 219 {\n-220 return _origin[i];\n-221 }\n-222\n-_\b2_\b2_\b4 int _\bm_\ba_\bx (int i) const\n-225 {\n-226 return _origin[i] + _\bs_\bi_\bz_\be(i) - 1;\n-227 }\n-228\n-_\b2_\b3_\b0 bool _\be_\bm_\bp_\bt_\by () const\n-231 {\n-232 for (int i=0; i<_\bd; ++i)\n-233 {\n-234 if (_\bs_\bi_\bz_\be(i) == 0)\n-235 return true;\n-236 }\n-237 return false;\n+220 static constexpr unsigned long long evaluate(int index, int cc)\n+221 {\n+222 auto result = 0ull;\n+223 for (int d = dim; d>0; d--)\n+224 {\n+225 if (d == cc)\n+226 {\n+227 // result[d-1] = index & (1<<(d-1));\n+228 result &= ~(1ull << (d-1));\n+229 result |= index & (1ull << (d-1));\n+230\n+231 index &= ~(1<<(d-1));\n+232 }\n+233 if (index >= subEnt(d-1,cc))\n+234 {\n+235 if ((index - subEnt(d-1,cc)) / subEnt(d-1,cc-1) == 1)\n+236 {\n+237 result |= 1ull << (d-1);\n 238 }\n-239\n-_\b2_\b4_\b1 bool _\bi_\bn_\bs_\bi_\bd_\be (const _\bi_\bT_\bu_\bp_\be_\bl& coord) const\n-242 {\n-243 for (int i=0; i<_\bd; i++)\n-244 {\n-245 if ((coord[i]<_origin[i]) || (coord[i]>=_origin[i]+_size[i]))\n-246 return false;\n-247 }\n-248 return true;\n-249 }\n-250\n-_\b2_\b5_\b2 int _\bi_\bn_\bd_\be_\bx (const _\bi_\bT_\bu_\bp_\be_\bl& coord) const\n-253 {\n-254 int _\bi_\bn_\bd_\be_\bx = (coord[_\bd-1]-_origin[_\bd-1]);\n-255\n-256 for (int i=_\bd-2; i>=0; i--)\n-257 _\bi_\bn_\bd_\be_\bx = _\bi_\bn_\bd_\be_\bx*_size[i] + (coord[i]-_origin[i]);\n-258\n-259 return _\bi_\bn_\bd_\be_\bx;\n-260 }\n-261\n-_\b2_\b6_\b3 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b> _\bm_\bo_\bv_\be (_\bi_\bT_\bu_\bp_\be_\bl v) const\n-264 {\n-265 for (int i=0; i<_\bd; i++)\n-266 v[i] += _origin[i];\n-267 return _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>(v,_size,*this);\n-268 }\n+239 index = (index - subEnt(d-1, cc)) % subEnt(d-1,cc-1);\n+240 cc--;\n+241 }\n+242 }\n+243 return result;\n+244 }\n+245\n+246 };\n+247\n+255 template\n+256 std::bitset entityMove(int index, int cc)\n+257 {\n+258 return EntityShiftTable,dim>::evaluate\n+(index,cc);\n+259 }\n+260\n+261#endif //DOXYGEN\n+262\n+263 } // namespace Yasp.\n+264\n+265 template\n+_\b2_\b6_\b6 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+267 : public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn \n+268 {\n 269\n-_\b2_\b7_\b1 _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b> _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn (const\n-_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r) const\n-272 {\n-273 for (int i=0; i<_\bd; i++)\n-274 {\n-275 //empty coordinate vectors result in empty intersections\n-276 if (_\be_\bm_\bp_\bt_\by() || r._\be_\bm_\bp_\bt_\by())\n-277 return _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>();\n-278 }\n-279\n-280 _\bi_\bT_\bu_\bp_\be_\bl neworigin;\n-281 _\bi_\bT_\bu_\bp_\be_\bl newsize;\n-282 for (int i=0; i<_\bd; ++i)\n+270 template\n+_\b2_\b7_\b1 friend class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+272\n+273 public:\n+_\b2_\b7_\b4 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n+275\n+_\b2_\b7_\b6 typedef typename GridImp::template Codim::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b2_\b7_\b7 typedef typename GridImp::Traits::template Codim::GeometryImpl\n+_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl;\n+278\n+_\b2_\b7_\b9 typedef typename GridImp::template Codim::EntitySeed _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n+280\n+_\b2_\b8_\b2 int _\bl_\be_\bv_\be_\bl () const\n 283 {\n-284 neworigin[i] = std::max(_\bo_\br_\bi_\bg_\bi_\bn(i),r._\bo_\br_\bi_\bg_\bi_\bn(i));\n-285 newsize[i] = std::min(_\bm_\ba_\bx(i),r._\bm_\ba_\bx(i)) - neworigin[i] + 1;\n-286 }\n-287\n-288 return _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>(neworigin,newsize,*this);\n-289 }\n-290\n-291\n-_\b2_\b9_\b8 class _\bI_\bt_\be_\br_\ba_\bt_\bo_\br {\n-299 public:\n-300 // default constructor\n-_\b3_\b0_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br () = default;\n-302\n-_\b3_\b0_\b4 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r) : _\b__\bg_\br_\bi_\bd(&r)\n-305 {\n-306 _\bi_\bT_\bu_\bp_\be_\bl _\bc_\bo_\bo_\br_\bd(r._\bo_\br_\bi_\bg_\bi_\bn());\n-307 _\br_\be_\bi_\bn_\bi_\bt(r,_\bc_\bo_\bo_\br_\bd);\n+284 return _\b__\bg->level();\n+285 }\n+286\n+_\b2_\b9_\b0 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd() const\n+291 {\n+292 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\bc_\bo_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg->level(), _\b__\bi_\bt.coord(),\n+_\b__\bi_\bt.which()));\n+293 }\n+294\n+_\b2_\b9_\b6 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n+297 {\n+298 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl _geometry(_\b__\bi_\bt.lowerleft(),_\b__\bi_\bt.upperright(),_\b__\bi_\bt.shift());\n+299 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by(_geometry);\n+300 }\n+301\n+_\b3_\b0_\b5 constexpr GeometryType _\bt_\by_\bp_\be () const\n+306 {\n+307 return GeometryTypes::cube(_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n 308 }\n 309\n-_\b3_\b1_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r, const _\bi_\bT_\bu_\bp_\be_\bl& _\bc_\bo_\bo_\br_\bd)\n-312 {\n-313 _\br_\be_\bi_\bn_\bi_\bt(r,_\bc_\bo_\bo_\br_\bd);\n-314 }\n-315\n-_\b3_\b1_\b7 void _\br_\be_\bi_\bn_\bi_\bt (const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& r, const _\bi_\bT_\bu_\bp_\be_\bl& _\bc_\bo_\bo_\br_\bd)\n-318 {\n-319 // initialize to given position in index set\n-320 for (int i=0; i<_\bd; ++i)\n-321 _\b__\bc_\bo_\bo_\br_\bd[i] = _\bc_\bo_\bo_\br_\bd[i];\n-322\n-323 // move superindex to first cell in subgrid\n-324 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx = 0;\n-325 for (int i=0; i<_\bd; ++i)\n-326 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += (r._\bo_\bf_\bf_\bs_\be_\bt(i)+_\bc_\bo_\bo_\br_\bd[i]-r._\bo_\br_\bi_\bg_\bi_\bn(i))*r._\bs_\bu_\bp_\be_\br_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt(i);\n-327\n-328 _\b__\bg_\br_\bi_\bd = &r;\n-329 }\n-330\n-_\b3_\b3_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b (const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n-333 {\n-334 return _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx == i._\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx;\n-335 }\n-336\n-_\b3_\b3_\b8 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b (const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n-339 {\n-340 return _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx != i._\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx;\n-341 }\n-342\n-_\b3_\b4_\b4 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx () const\n-345 {\n-346 return _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx;\n-347 }\n-348\n-_\b3_\b5_\b0 int _\bc_\bo_\bo_\br_\bd (int i) const\n-351 {\n-352 return _\b__\bc_\bo_\bo_\br_\bd[i];\n-353 }\n-354\n-_\b3_\b5_\b6 const _\bi_\bT_\bu_\bp_\be_\bl& _\bc_\bo_\bo_\br_\bd () const\n-357 {\n-358 return _\b__\bc_\bo_\bo_\br_\bd;\n-359 }\n-360\n-_\b3_\b6_\b2 void _\bm_\bo_\bv_\be (int i, int dist)\n-363 {\n-364 _\b__\bc_\bo_\bo_\br_\bd[i] += dist;\n-365 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += dist*_\b__\bg_\br_\bi_\bd->superincrement(i);\n-366 }\n-367\n-_\b3_\b6_\b9 void _\bm_\bo_\bv_\be (const _\bi_\bT_\bu_\bp_\be_\bl& dist)\n-370 {\n-371 for (int i = 0; i < _\bd; ++i)\n-372 {\n-373 _\b__\bc_\bo_\bo_\br_\bd[i] += dist[i];\n-374 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += dist[i]*_\b__\bg_\br_\bi_\bd->superincrement(i);\n-375 }\n-376 }\n-377\n-_\b3_\b7_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b ()\n-380 {\n-381 for (int i=0; i<_\bd; i++) // check for wrap around\n-382 {\n-383 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += _\b__\bg_\br_\bi_\bd->superincrement(i); // move on cell in direction i\n-384 if (++_\b__\bc_\bo_\bo_\br_\bd[i] <= _\b__\bg_\br_\bi_\bd->max(i))\n-385 return *this;\n-386 else\n-387 {\n-388 _\b__\bc_\bo_\bo_\br_\bd[i] = _\b__\bg_\br_\bi_\bd->origin(i); // move back to origin in direction i\n-389 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx -= _\b__\bg_\br_\bi_\bd->size(i) * _\b__\bg_\br_\bi_\bd->superincrement(i);\n-390 }\n-391 }\n-392 // if we wrapped around, back to to begin(), we must put the iterator to\n-end()\n-393 if (_\b__\bc_\bo_\bo_\br_\bd == _\b__\bg_\br_\bi_\bd->origin())\n-394 {\n-395 for (int i=0; i<_\bd; i++)\n-396 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += (_\b__\bg_\br_\bi_\bd->size(i)-1) * _\b__\bg_\br_\bi_\bd->superincrement(i);\n-397 _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx += _\b__\bg_\br_\bi_\bd->superincrement(0);\n-398 }\n-399 return *this;\n-400 }\n-401\n-_\b4_\b0_\b3 _\bc_\bt _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(int i) const\n-404 {\n-405 return _\b__\bg_\br_\bi_\bd->getCoords()->coordinate(i,_\b__\bc_\bo_\bo_\br_\bd[i]);\n-406 }\n-407\n-_\b4_\b0_\b9 _\bf_\bT_\bu_\bp_\be_\bl _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt() const\n-410 {\n-411 _\bf_\bT_\bu_\bp_\be_\bl ll;\n-412 for (int i=0; i<_\bd; i++)\n-413 ll[i] = _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(i);\n-414 return ll;\n-415 }\n-416\n-_\b4_\b1_\b8 _\bc_\bt _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(int i) const\n-419 {\n-420 int _\bc_\bo_\bo_\br_\bd = _\b__\bc_\bo_\bo_\br_\bd[i];\n-421 if (_\bs_\bh_\bi_\bf_\bt(i))\n-422 _\bc_\bo_\bo_\br_\bd++;\n-423 return _\b__\bg_\br_\bi_\bd->getCoords()->coordinate(i,_\bc_\bo_\bo_\br_\bd);\n-424 }\n-425\n-_\b4_\b2_\b7 _\bf_\bT_\bu_\bp_\be_\bl _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt() const\n-428 {\n-429 _\bf_\bT_\bu_\bp_\be_\bl ur;\n-430 for (int i=0; i<_\bd; i++)\n-431 ur[i] = _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(i);\n-432 return ur;\n-433 }\n-434\n-_\b4_\b3_\b6 _\bc_\bt _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be (int i) const\n-437 {\n-438 return _\b__\bg_\br_\bi_\bd->getCoords()->meshsize(i,_\b__\bc_\bo_\bo_\br_\bd[i]);\n-439 }\n-440\n-_\b4_\b4_\b2 _\bf_\bT_\bu_\bp_\be_\bl _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be () const\n-443 {\n-444 _\bf_\bT_\bu_\bp_\be_\bl h;\n-445 for (int i=0; i<_\bd; i++)\n-446 h[i] = _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(i);\n-447 return h;\n-448 }\n-449\n-_\b4_\b5_\b0 bool _\bs_\bh_\bi_\bf_\bt (int i) const\n-451 {\n-452 return _\b__\bg_\br_\bi_\bd->shift(i);\n-453 }\n-454\n-_\b4_\b5_\b5 std::bitset _\bs_\bh_\bi_\bf_\bt() const\n+_\b3_\b1_\b4 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int cc) const\n+315 {\n+316 return Dune::Yasp::subEnt(dim-codim,cc-codim);\n+317 }\n+318\n+_\b3_\b2_\b0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n+321 {\n+322 if (_\b__\bg->interior[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+323 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+324 if (_\b__\bg->interiorborder[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+325 return _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+326 if (_\b__\bg->overlap[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+327 return _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by;\n+328 if (_\b__\bg->overlapfront[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+329 return _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+330 return _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+331 }\n+332\n+_\b3_\b3_\b3 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n+_\b3_\b3_\b4 typedef typename GridImp::YGrid::Iterator _\bI;\n+_\b3_\b3_\b5 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by ()\n+336 {}\n+337\n+_\b3_\b3_\b8 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, const _\bI& it)\n+339 : _\b__\bi_\bt(it), _\b__\bg(g)\n+340 {}\n+341\n+_\b3_\b4_\b2 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (_\bY_\bG_\bL_\bI&& g, const _\bI&& it)\n+343 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(_\bs_\bt_\bd::move(g))\n+344 {}\n+345\n+_\b3_\b4_\b7 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by& e) const\n+348 {\n+349 return _\b__\bi_\bt == e._\b__\bi_\bt && _\b__\bg == e._\b__\bg;\n+350 }\n+351\n+352 // IndexSets needs access to the private index methods\n+353 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+354 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+355 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n+_\b3_\b5_\b6 typedef typename GridImp::PersistentIndexType _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n+357\n+_\b3_\b5_\b9 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx () const\n+360 {\n+361 // get size of global grid (in elements)\n+362 std::array size;\n+363\n+364 for (int i=0; img->levelSize(_\b__\bg->level(), i);\n+368 if (!_\b__\bi_\bt.shift(i))\n+369 size[i]++;\n+370 }\n+371\n+372 // encode codim\n+373 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be id(_\b__\bi_\bt.shift().to_ulong());\n+374\n+375 // encode level\n+376 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs;\n+377 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bg->level());\n+378\n+379 // encode coordinates\n+380 for (int i=dim-1; i>=0; i--)\n+381 {\n+382 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n+383 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bi_\bt.coord(i));\n+384 }\n+385\n+386 return id;\n+387 }\n+388\n+_\b3_\b9_\b0 int _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx () const\n+391 {\n+392 return _\b__\bi_\bt.superindex();\n+393 }\n+394\n+_\b3_\b9_\b6 int _\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx (int i, unsigned int cc) const\n+397 {\n+398 // get the shift of the entity and the subentity\n+399 // the subentity shift is only available in the space spanned by the entity\n+400 std::bitset subent_shift = Dune::Yasp::entityShift\n+(i,cc-codim);\n+401 std::bitset subent_move = Dune::Yasp::entityMove\n+(i,cc-codim);\n+402\n+403 std::bitset shift = _\b__\bi_\bt.shift();\n+404 std::array coord = _\b__\bi_\bt.coord();\n+405 for (int j=0, k=0; joverlapfront[cc].shiftmapping(shift);\n+416 return _\b__\bg->overlapfront[cc].superindex(coord,which);\n+417 }\n+418 public:\n+_\b4_\b1_\b9 const _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() const { return _\b__\bi_\bt; }\n+_\b4_\b2_\b0 const _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() const { return _\b__\bg; }\n+_\b4_\b2_\b1 _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() { return _\b__\bi_\bt; }\n+_\b4_\b2_\b2 _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() { return _\b__\bg; }\n+_\b4_\b2_\b3 const GridImp * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd() const { return _\b__\bg->mg; }\n+424 protected:\n+_\b4_\b2_\b5 _\bI _\b__\bi_\bt = {}; // position in the grid level\n+_\b4_\b2_\b6 _\bY_\bG_\bL_\bI _\b__\bg = {}; // access to grid level\n+427 };\n+428\n+429\n+430 // specialization for codim=0\n+431 template\n+_\b4_\b3_\b2 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by<0,dim,GridImp>\n+433 : public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn <0,dim,GridImp,YaspEntity>\n+434 {\n+435 constexpr static int dimworld = GridImp::dimensionworld;\n+436\n+437 typedef typename GridImp::Traits::template Codim< 0 >::GeometryImpl\n+_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl;\n+438\n+439 template\n+_\b4_\b4_\b0 friend class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+441\n+442 template\n+_\b4_\b4_\b3 friend class _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+444\n+445 public:\n+_\b4_\b4_\b6 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n+447\n+_\b4_\b4_\b8 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n+_\b4_\b4_\b9 typedef typename GridImp::YGrid::Iterator _\bI;\n+450\n+_\b4_\b5_\b1 typedef typename GridImp::template Codim< 0 >::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+_\b4_\b5_\b2 typedef typename GridImp::template Codim< 0 >::LocalGeometry _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+453\n+454 template \n+_\b4_\b5_\b5 struct Codim\n 456 {\n-457 return _\b__\bg_\br_\bi_\bd->shift();\n-458 }\n+_\b4_\b5_\b7 typedef typename GridImp::template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bd_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+458 };\n 459\n-_\b4_\b6_\b0 Coordinates* _\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt() const\n-461 {\n-462 return _\b__\bg_\br_\bi_\bd->getCoords();\n-463 }\n-464\n-465 protected:\n-_\b4_\b6_\b6 _\bi_\bT_\bu_\bp_\be_\bl _\b__\bc_\bo_\bo_\br_\bd;\n-_\b4_\b6_\b7 int _\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx = 0;\n-_\b4_\b6_\b8 const _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>* _\b__\bg_\br_\bi_\bd = nullptr;\n-469 };\n-470\n-471\n-_\b4_\b7_\b2 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx(_\bi_\bT_\bu_\bp_\be_\bl coord) const\n-473 {\n-474 // move superindex to first cell in subgrid\n-475 int si = 0;\n-476 for (int i=0; i<_\bd; ++i)\n-477 si += (_\bo_\bf_\bf_\bs_\be_\bt(i)+coord[i]-_\bo_\br_\bi_\bg_\bi_\bn(i))*_superincrement[i];\n-478 return si;\n-479 }\n+_\b4_\b6_\b0 typedef typename GridImp::template _\bC_\bo_\bd_\bi_\bm_\b<_\b0_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b4_\b6_\b1 typedef typename GridImp::template Codim<0>::EntitySeed _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n+_\b4_\b6_\b2 typedef typename GridImp::LevelIntersectionIterator _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b4_\b6_\b3 typedef typename GridImp::LevelIntersectionIterator\n+_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b4_\b6_\b4 typedef typename GridImp::LeafIntersectionIterator\n+_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b4_\b6_\b5 typedef typename GridImp::HierarchicIterator _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+466\n+_\b4_\b6_\b8 typedef typename GridImp::PersistentIndexType _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n+469\n+_\b4_\b7_\b1 typedef typename GridImp::YGrid::iTupel _\bi_\bT_\bu_\bp_\be_\bl;\n+472\n+473 // constructor\n+_\b4_\b7_\b4 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by ()\n+475 {}\n+476\n+_\b4_\b7_\b7 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, const _\bI& it)\n+478 : _\b__\bi_\bt(it), _\b__\bg(g)\n+479 {}\n 480\n-_\b4_\b8_\b1 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt(int i) const\n-482 {\n-483 return _superincrement[i];\n-484 }\n-485\n-_\b4_\b8_\b7 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const\n-488 {\n-489 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this);\n-490 }\n-491\n-_\b4_\b9_\b3 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn (const _\bi_\bT_\bu_\bp_\be_\bl& co) const\n-494 {\n-495 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this,co);\n-496 }\n+_\b4_\b8_\b1 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, _\bI&& it)\n+482 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(g)\n+483 {}\n+484\n+_\b4_\b8_\b5 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (_\bY_\bG_\bL_\bI&& g, _\bI&& it)\n+486 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(_\bs_\bt_\bd::move(g))\n+487 {}\n+488\n+_\b4_\b9_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by& e) const\n+491 {\n+492 return _\b__\bi_\bt == e._\b__\bi_\bt && _\b__\bg == e._\b__\bg;\n+493 }\n+494\n+_\b4_\b9_\b6 int _\bl_\be_\bv_\be_\bl () const { return _\b__\bg->level(); }\n 497\n-_\b4_\b9_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const\n-500 {\n-501 _\bi_\bT_\bu_\bp_\be_\bl last;\n-502 for (int i=0; i<_\bd; i++)\n-503 last[i] = _\bm_\ba_\bx(i);\n-504 last[0] += 1;\n-505 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this,last);\n-506 }\n-507\n-508 private:\n-509 _\bi_\bT_\bu_\bp_\be_\bl _origin;\n-510 std::bitset _shift;\n-511 Coordinates* _coords;\n-512 _\bi_\bT_\bu_\bp_\be_\bl _size;\n-513 _\bi_\bT_\bu_\bp_\be_\bl _offset;\n-514 _\bi_\bT_\bu_\bp_\be_\bl _supersize;\n-515 _\bi_\bT_\bu_\bp_\be_\bl _superincrement;\n-516\n-517 };\n-518\n-519\n-521 template \n-_\b5_\b2_\b2 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s,\n-_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b> e)\n-523 {\n-524 s << \"Printing YGridComponent structure:\" << std::endl;\n-525 s << \"Origin: \" << e._\bo_\br_\bi_\bg_\bi_\bn() << std::endl;\n-526 s << \"Shift: \" << e._\bs_\bh_\bi_\bf_\bt() << std::endl;\n-527 s << \"Size: \" << e._\bs_\bi_\bz_\be() << std::endl;\n-528 s << \"Offset: \" << e._\bo_\bf_\bf_\bs_\be_\bt() << std::endl;\n-529 s << \"Supersize: \" << e._\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be() << std::endl;\n-530 return s;\n-531 }\n-532\n-534 template \n-_\b5_\b3_\b5 inline std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s, typename\n-_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& e)\n-536 {\n-537 s << \"Printing YGridComponent Iterator:\" << std::endl << \"Iterator at \" <<\n-e._\bc_\bo_\bo_\br_\bd() << \" (index \";\n-538 s << e.index() << \"), position \" << e.position();\n-539 return s;\n+_\b5_\b0_\b1 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const {\n+502 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg->level(), _\b__\bi_\bt.coord()));\n+503 }\n+504\n+_\b5_\b0_\b6 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n+507 {\n+508 if (_\b__\bg->interior[0].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+509 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+510 if (_\b__\bg->overlap[0].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+511 return _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by;\n+512 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Impossible GhostEntity\");\n+513 return _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+514 }\n+515\n+_\b5_\b1_\b7 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const {\n+518 // the element geometry\n+519 auto ll = _\b__\bi_\bt.lowerleft();\n+520 auto ur = _\b__\bi_\bt.upperright();\n+521\n+522 // If on periodic overlap, transform coordinates by domain size\n+523 for (int i=0; img->isPeriodic(i)) {\n+525 int coord = _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(i);\n+526 if (coord < 0) {\n+527 auto size = _\b__\bg->mg->domainSize()[i];\n+528 ll[i] += size;\n+529 ur[i] += size;\n+530 } else if (coord + 1 > _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize(_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->_\bl_\be_\bv_\be_\bl(),i))\n+{\n+531 auto size = _\b__\bg->mg->domainSize()[i];\n+532 ll[i] -= size;\n+533 ur[i] -= size;\n+534 }\n+535 }\n+536 }\n+537\n+538 GeometryImpl _geometry(ll,ur);\n+539 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _geometry );\n 540 }\n 541\n-549 template\n-_\b5_\b5_\b0 class _\bY_\bG_\br_\bi_\bd\n-551 {\n-552 public:\n-_\b5_\b5_\b3 static const int _\bd_\bi_\bm = Coordinates::dimension;\n-554\n-555 // define data array iterator\n-_\b5_\b5_\b6 typedef _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>* _\bD_\bA_\bI;\n-557\n-_\b5_\b5_\b8 typedef typename std::array _\bi_\bT_\bu_\bp_\be_\bl;\n-559\n-_\b5_\b6_\b1 void _\bs_\be_\bt_\bB_\be_\bg_\bi_\bn(_\bD_\bA_\bI _\bb_\be_\bg_\bi_\bn)\n-562 {\n-563 _begin = _\bb_\be_\bg_\bi_\bn;\n-564 }\n-565\n-_\b5_\b6_\b7 int _\bs_\bh_\bi_\bf_\bt_\bm_\ba_\bp_\bp_\bi_\bn_\bg(const std::bitset& shift) const\n-568 {\n-569 return _shiftmapping[shift.to_ulong()];\n-570 }\n-571\n-_\b5_\b7_\b3 _\bD_\bA_\bI _\bd_\ba_\bt_\ba_\bB_\be_\bg_\bi_\bn() const\n-574 {\n-575 return _begin;\n-576 }\n-577\n-_\b5_\b7_\b9 _\bD_\bA_\bI _\bd_\ba_\bt_\ba_\bE_\bn_\bd() const\n-580 {\n-581 return _end;\n-582 }\n-583\n-_\b5_\b8_\b5 bool _\bi_\bn_\bs_\bi_\bd_\be(const _\bi_\bT_\bu_\bp_\be_\bl& coord, const std::bitset& shift = std::\n-bitset()) const\n-586 {\n-587 return (_begin+_shiftmapping[shift.to_ulong()])->inside(coord);\n-588 }\n-589\n-_\b5_\b9_\b3 class _\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-594 {\n-595 public:\n+_\b5_\b4_\b5 constexpr GeometryType _\bt_\by_\bp_\be () const\n+546 {\n+547 return GeometryTypes::cube(_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+548 }\n+549\n+_\b5_\b5_\b4 template int _\bc_\bo_\bu_\bn_\bt () const\n+555 {\n+556 return Dune::Yasp::subEnt(dim,cc);\n+557 }\n+558\n+_\b5_\b6_\b3 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int codim) const\n+564 {\n+565 return Dune::Yasp::subEnt(dim,codim);\n+566 }\n+567\n+570 template\n+_\b5_\b7_\b1 typename _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by (int i) const\n+572 {\n+573 // calculate move bitset\n+574 std::bitset move = Dune::Yasp::entityMove(i,cc);\n+575\n+576 // get the coordinate and modify it\n+577 _\bi_\bT_\bu_\bp_\be_\bl coord = _\b__\bi_\bt.coord();\n+578 for (int j=0; joverlapfront[cc].shiftmapping(Dune::Yasp::entityShift\n+(i,cc));\n+583 return typename _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\bc_\bc_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n+(_\b__\bg,_\b__\bg->overlapfront[cc].begin(coord, which)));\n+584 }\n+585\n+_\b5_\b8_\b7 _\bE_\bn_\bt_\bi_\bt_\by _\bf_\ba_\bt_\bh_\be_\br () const\n+588 {\n+589 // check if coarse level exists\n+590 if (_\b__\bg->level()<=0)\n+591 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"tried to call father on level 0\");\n+592\n+593 // yes, get iterator to it\n+594 _\bY_\bG_\bL_\bI cg(_\b__\bg);\n+595 --cg;\n 596\n-_\b5_\b9_\b8 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br () = default;\n+597 // coordinates of the cell\n+598 _\bi_\bT_\bu_\bp_\be_\bl coord = _\b__\bi_\bt.coord();\n 599\n-_\b6_\b0_\b1 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& yg, const std::array& coords,\n-int _\bw_\bh_\bi_\bc_\bh = 0)\n-602 : _which(_\bw_\bh_\bi_\bc_\bh), _yg(&yg)\n-603 {\n-604 _it = typename _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*(_yg->dataBegin\n-()+_\bw_\bh_\bi_\bc_\bh),coords);\n-605 }\n-606\n-_\b6_\b0_\b8 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& yg, bool _\be_\bn_\bd=false) : _yg(&yg)\n-609 {\n-610 if (_\be_\bn_\bd)\n-611 {\n-612 _it = _yg->_itends.back();\n-613 _which = _yg->_itends.size() - 1;\n-614 }\n-615 else\n-616 {\n-617 _it = _yg->_itbegins[0];\n-618 _which = 0;\n-619 }\n-620 }\n-621\n-_\b6_\b2_\b3 void _\br_\be_\bi_\bn_\bi_\bt(const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>& yg, const std::array&\n-coords, int _\bw_\bh_\bi_\bc_\bh = 0)\n-624 {\n-625 _yg = &yg;\n-626 _which = _\bw_\bh_\bi_\bc_\bh;\n-627 _it = typename _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*(_yg->dataBegin\n-()+_\bw_\bh_\bi_\bc_\bh),coords);\n-628 }\n-629\n-_\b6_\b3_\b1 int _\bc_\bo_\bo_\br_\bd (int i) const\n-632 {\n-633 return _it._\bc_\bo_\bo_\br_\bd(i);\n-634 }\n-635\n-_\b6_\b3_\b7 const std::array& _\bc_\bo_\bo_\br_\bd () const\n+600 // get coordinates on next coarser level\n+601 for (int k=0; k(cg,cg->overlap\n+[0].begin(coord)));\n+604 }\n+605\n+_\b6_\b0_\b7 bool _\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br () const\n+608 {\n+609 return (_\b__\bg->level()>0);\n+610 }\n+611\n+_\b6_\b1_\b4 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const\n+615 {\n+616 // configure one of the 2^dim transformations\n+617 FieldVector ll(0.0),ur(0.5);\n+618\n+619 for (int k=0; k(ll,ur) );\n+629 }\n+630\n+_\b6_\b3_\b1 const _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br () const { return _\b__\bi_\bt; }\n+_\b6_\b3_\b2 const _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl () const { return _\b__\bg; }\n+_\b6_\b3_\b3 _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() { return _\b__\bi_\bt; }\n+_\b6_\b3_\b4 _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() { return _\b__\bg; }\n+_\b6_\b3_\b5 const GridImp* _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd () const { return _\b__\bg->mg; }\n+636\n+_\b6_\b3_\b7 bool _\bi_\bs_\bL_\be_\ba_\bf() const\n 638 {\n-639 return _it._\bc_\bo_\bo_\br_\bd();\n+639 return (_\b__\bg->level() == _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()->maxLevel());\n 640 }\n 641\n-_\b6_\b4_\b2 typename Coordinates::ctype _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(int i) const\n-643 {\n-644 return _it._\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt(i);\n-645 }\n-646\n-_\b6_\b4_\b7 Dune::FieldVector _\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt() const\n-648 {\n-649 return _it._\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt();\n-650 }\n-651\n-_\b6_\b5_\b2 typename Coordinates::ctype _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(int i) const\n-653 {\n-654 return _it._\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt(i);\n-655 }\n-656\n-_\b6_\b5_\b7 Dune::FieldVector _\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt() const\n+_\b6_\b4_\b4 bool _\bi_\bs_\bN_\be_\bw () const { return _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()->adaptRefCount > 0 && _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()-\n+>maxLevel() < _\b__\bg->level() + _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()->adaptRefCount; }\n+645\n+_\b6_\b4_\b8 bool _\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const { return false; }\n+649\n+_\b6_\b5_\b1 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bb_\be_\bg_\bi_\bn () const\n+652 {\n+653 return _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(*this,false);\n+654 }\n+655\n+_\b6_\b5_\b7 _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn () const\n 658 {\n-659 return _it._\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt();\n-660 }\n-661\n-_\b6_\b6_\b3 typename Coordinates::ctype _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be (int i) const\n-664 {\n-665 return _it._\bm_\be_\bs_\bh_\bs_\bi_\bz_\be(i);\n-666 }\n-667\n-_\b6_\b6_\b9 Dune::FieldVector _\bm_\be_\bs_\bh_\bs_\bi_\bz_\be() const\n-670 {\n-671 return _it._\bm_\be_\bs_\bh_\bs_\bi_\bz_\be();\n-672 }\n-673\n-_\b6_\b7_\b5 bool _\bs_\bh_\bi_\bf_\bt (int i) const\n-676 {\n-677 return _it._\bs_\bh_\bi_\bf_\bt(i);\n-678 }\n-679\n-_\b6_\b8_\b1 std::bitset _\bs_\bh_\bi_\bf_\bt () const\n-682 {\n-683 return _it._\bs_\bh_\bi_\bf_\bt();\n-684 }\n-685\n-_\b6_\b8_\b7 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx() const\n-688 {\n-689 // the offset of the current component has to be taken into account\n-690 return _yg->_indexOffset[_which] + _it._\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx();\n-691 }\n-692\n-_\b6_\b9_\b4 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+_\b ()\n-695 {\n-696 if ((++_it == _yg->_itends[_which]) && (_which < _yg->_itends.size()-1))\n-697 _it = _yg->_itbegins[++_which];\n-698 return *this;\n-699 }\n-700\n-_\b7_\b0_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n-703 {\n-704 if (_which != i._which)\n-705 return false;\n-706 return _it == i._it;\n-707 }\n-708\n-_\b7_\b1_\b0 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(const _\bI_\bt_\be_\br_\ba_\bt_\bo_\br& i) const\n-711 {\n-712 if (_it != i._it)\n-713 return true;\n-714 return _which != i._which;\n-715 }\n-716\n-_\b7_\b1_\b8 int _\bw_\bh_\bi_\bc_\bh() const\n-719 {\n-720 return _which;\n-721 }\n-722\n-_\b7_\b2_\b4 void _\bm_\bo_\bv_\be(int i, int dist)\n-725 {\n-726 _it._\bm_\bo_\bv_\be(i,dist);\n+659 // only if entity is leaf this iterator delivers intersections\n+660 return _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(*this, ! isLeaf() );\n+661 }\n+662\n+_\b6_\b6_\b4 _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn () const\n+665 {\n+666 return ibegin();\n+667 }\n+668\n+_\b6_\b7_\b0 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\be_\bn_\bd () const\n+671 {\n+672 return _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(*this,true);\n+673 }\n+674\n+_\b6_\b7_\b6 _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\ba_\bf_\be_\bn_\bd () const\n+677 {\n+678 return iend();\n+679 }\n+680\n+_\b6_\b8_\b2 _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd () const\n+683 {\n+684 return iend();\n+685 }\n+686\n+_\b6_\b9_\b1 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bh_\bb_\be_\bg_\bi_\bn (int maxlevel) const\n+692 {\n+693 return _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg,_\b__\bi_\bt,maxlevel);\n+694 }\n+695\n+_\b6_\b9_\b7 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br hend (int /* maxlevel */) const\n+698 {\n+699 return _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg,_\b__\bi_\bt,_\b__\bg->level());\n+700 }\n+701\n+702 private:\n+703 // IndexSets needs access to the private index methods\n+704 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+705 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+706 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n+707\n+709 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx () const\n+710 {\n+711 // encode codim\n+712 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be id(_\b__\bi_\bt.shift().to_ulong());\n+713\n+714 // encode level\n+715 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs;\n+716 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bg->level());\n+717\n+718\n+719 // encode coordinates\n+720 for (int i=dim-1; i>=0; i--)\n+721 {\n+722 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n+723 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bi_\bt.coord(i));\n+724 }\n+725\n+726 return id;\n 727 }\n 728\n-_\b7_\b2_\b9 void _\bm_\bo_\bv_\be(const _\bi_\bT_\bu_\bp_\be_\bl& dist)\n-730 {\n-731 _it._\bm_\bo_\bv_\be(dist);\n-732 }\n-733\n-_\b7_\b3_\b4 Coordinates* _\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt() const\n-735 {\n-736 return _it._\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt();\n-737 }\n-738\n-739\n-740 private:\n-741 unsigned int _which = 0;\n-742 const _\bY_\bG_\br_\bi_\bd_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>* _yg = nullptr;\n-743 typename _\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b<_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _it;\n-744 };\n-745\n-_\b7_\b4_\b7 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn() const\n-748 {\n-749 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this);\n-750 }\n+730 int _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx () const\n+731 {\n+732 return _\b__\bi_\bt.superindex();\n+733 }\n+734\n+736 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be subPersistentIndex (int i, int cc) const\n+737 {\n+738 // calculate shift and move bitsets\n+739 std::bitset shift = Dune::Yasp::entityShift(i,cc);\n+740 std::bitset move = Dune::Yasp::entityMove(i,cc);\n+741\n+742 int trailing = (cc == dim) ? 1000 : 0;\n+743\n+744 std::array size = _\b__\bg->mg->levelSize(_\b__\bg->level());\n+745 std::array coord = _\b__\bi_\bt.coord();\n+746 for (int j=0; j& coord, int which = 0) const\n-754 {\n-755 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this, coord, which);\n-756 }\n-757\n-_\b7_\b5_\b9 _\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd() const\n-760 {\n-761 return _\bI_\bt_\be_\br_\ba_\bt_\bo_\br(*this,true);\n-762 }\n-763\n-_\b7_\b6_\b4 int _\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx(const _\bi_\bT_\bu_\bp_\be_\bl& coord, int which) const\n-765 {\n-766 return _indexOffset[which] + (_\bd_\ba_\bt_\ba_\bB_\be_\bg_\bi_\bn()+which)->_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx(coord);\n-767 }\n-768\n-769\n-770 // finalize the ygrid construction by storing component iterators\n-_\b7_\b7_\b1 void _\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be(const _\bD_\bA_\bI& _\be_\bn_\bd, int artificialOffset = 0)\n-772 {\n-773 // set the end iterator in the ygrid component array\n-774 _end = _\be_\bn_\bd;\n-775\n-776 _indexOffset.push_back(artificialOffset);\n-777 int k = 0;\n-778 for (_\bD_\bA_\bI i=_begin; i != _end; ++i, ++k)\n-779 {\n-780 //store begin and end iterators\n-781 _itbegins.push_back(i->begin());\n-782 _itends.push_back(i->end());\n-783\n-784 // store index offset\n-785 _indexOffset.push_back(_indexOffset.back() + i->totalsize());\n-786\n-787 // store shift to component mapping\n-788 _shiftmapping[i->shift().to_ulong()] = k;\n-789 }\n-790 _indexOffset.resize(_itends.size());\n-791 }\n-792\n-793 private:\n-794\n-_\b7_\b9_\b5 friend class _\bY_\bG_\br_\bi_\bd::_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-796 _\bD_\bA_\bI _begin;\n-797 _\bD_\bA_\bI _end;\n-798 std::array _shiftmapping;\n-799 std::vector::Iterator> _itbegins;\n-800 std::vector::Iterator> _itends;\n-801 std::vector _indexOffset;\n-802 };\n+752 // move the coordinates to the cell on which the entity lives\n+753 if (move[j])\n+754 coord[j]++;\n+755 }\n+756\n+757 for (int j=0; jlevel(); k++)\n+764 if (coord[j] & (1<level()-trailing);\n+778\n+779 // encode coordinates\n+780 for (int j=dim-1; j>=0; j--)\n+781 {\n+782 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n+783 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(coord[j]>>trailing);\n+784 }\n+785\n+786 return id;\n+787 }\n+788\n+790 int _\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx (int i, int cc) const\n+791 {\n+792 // get shift and move of the subentity in question\n+793 std::bitset shift = Dune::Yasp::entityShift(i,cc);\n+794 std::bitset move = Dune::Yasp::entityMove(i,cc);\n+795\n+796 std::array coord = _\b__\bi_\bt.coord();\n+797 for (int j=0; joverlapfront[cc].shiftmapping(shift);\n+801 return _\b__\bg->overlapfront[cc].superindex(coord,which);\n+802 }\n 803\n-805 template \n-_\b8_\b0_\b6 inline std::ostream& operator<< (std::ostream& s, const YGrid&\n-e)\n-807 {\n-808 s << \"Printing YGrid structure:\" << std::endl;\n-809 for (auto it = e.dataBegin(); it != e.dataEnd(); ++it)\n-810 s << *it << std::endl;\n-811 return s;\n-812 }\n-813\n-821 template\n-_\b8_\b2_\b2 class YGridList\n-823 {\n-824 public:\n-_\b8_\b2_\b5 static const int dim = Coordinates::dimension;\n+804 _\bI _\b__\bi_\bt = {}; // position in the grid level\n+805 _\bY_\bG_\bL_\bI _\b__\bg = {}; // access to grid level\n+806 };\n+807\n+808\n+809 // specialization for codim=dim (vertex)\n+810 template\n+_\b8_\b1_\b1 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+812 : public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn \n+813 {\n+814 constexpr static int dimworld = GridImp::dimensionworld;\n+815\n+816 template\n+_\b8_\b1_\b7 friend class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+818\n+819 typedef typename GridImp::Traits::template Codim::GeometryImpl\n+_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl;\n+820\n+821 public:\n+_\b8_\b2_\b2 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n+823\n+_\b8_\b2_\b4 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n+_\b8_\b2_\b5 typedef typename GridImp::YGrid::Iterator _\bI;\n 826\n-_\b8_\b2_\b8 struct Intersection\n-829 {\n-_\b8_\b3_\b1 YGridComponent grid;\n-_\b8_\b3_\b3 int rank;\n-_\b8_\b3_\b5 int distance;\n-_\b8_\b3_\b7 YGrid yg;\n-838 };\n-839\n-840 // define data array iterator type\n-_\b8_\b4_\b1 typedef typename std::array, Dune::power(2,dim)>::\n-iterator DAI;\n-842\n-843 // iterator that allows to iterate over a concatenation of deques. namely\n-those\n-844 // that belong to the same codimension.\n-_\b8_\b4_\b5 class Iterator\n-846 {\n-847 public:\n+_\b8_\b2_\b7 typedef typename GridImp::template Codim::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n+828\n+_\b8_\b2_\b9 typedef typename GridImp::template Codim::EntitySeed _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n+830\n+_\b8_\b3_\b2 typedef typename GridImp::PersistentIndexType _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n+833\n+_\b8_\b3_\b5 typedef typename GridImp::YGrid::iTupel _\bi_\bT_\bu_\bp_\be_\bl;\n+836\n+837 // constructor\n+_\b8_\b3_\b8 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by ()\n+839 {}\n+840\n+_\b8_\b4_\b1 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, const _\bI& it)\n+842 : _\b__\bi_\bt(it), _\b__\bg(g)\n+843 {}\n+844\n+_\b8_\b4_\b5 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (_\bY_\bG_\bL_\bI&& g, _\bI&& it)\n+846 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(_\bs_\bt_\bd::move(g))\n+847 {}\n 848\n-_\b8_\b5_\b0 Iterator(const YGridList& ygl, bool end=false) : _end\n-(ygl.dataEnd()), _which(ygl.dataBegin())\n+_\b8_\b5_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by& e) const\n 851 {\n-852 _it = _which->begin();\n-853\n-854 // advance the iterator to the first element that exists.\n-855 // some deques might be empty and should be skipped\n-856 while ((_which != _end) && (_it == _which->end()))\n-857 {\n-858 ++_which;\n-859 if (_which != _end)\n-860 _it = _which->begin();\n-861 }\n-862 // the iterator is at the end if and only if _which==_end\n-863 if (end)\n-864 {\n-865 _which = _end;\n-866 }\n-867 }\n-868\n-_\b8_\b7_\b0 Iterator& operator++ ()\n-871 {\n-872 ++_it;\n-873 // advance the iterator to the next element that exists.\n-874 // some deques might be empty and should be skipped\n-875 while ((_which != _end) && (_it == _which->end()))\n-876 {\n-877 ++_which;\n-878 if (_which != _end)\n-879 _it = _which->begin();\n-880 }\n-881 return *this;\n-882 }\n-883\n-_\b8_\b8_\b5 typename std::deque::iterator operator->() const\n-886 {\n-887 return _it;\n-888 }\n-889\n-_\b8_\b9_\b1 typename std::deque::iterator operator*() const\n-892 {\n-893 return _it;\n-894 }\n-895\n-_\b8_\b9_\b7 bool operator== (const Iterator& i) const\n-898 {\n-899 if (_which != i._which)\n-900 return false;\n-901 if (_which == _end)\n-902 return true;\n-903 return _it == i._it;\n-904 }\n-905\n-_\b9_\b0_\b7 bool operator!= (const Iterator& i) const\n-908 {\n-909 if (_which != i._which)\n-910 return true;\n-911 if (_which == _end)\n-912 return false;\n-913 return _it != i._it;\n-914 }\n-915\n-916 private:\n-917 typename std::deque::iterator _it;\n-918 DAI _end;\n-919 DAI _which;\n-920 };\n-921\n-_\b9_\b2_\b3 Iterator begin() const\n-924 {\n-925 return Iterator(*this);\n-926 }\n-927\n-_\b9_\b2_\b9 Iterator end() const\n-930 {\n-931 return Iterator(*this,true);\n-932 }\n-933\n-_\b9_\b3_\b5 void setBegin(typename std::array, Dune::power\n-(2,dim)>::iterator begin)\n-936 {\n-937 _begin = begin;\n+852 return _\b__\bi_\bt == e._\b__\bi_\bt && _\b__\bg == e._\b__\bg;\n+853 }\n+854\n+_\b8_\b5_\b6 int _\bl_\be_\bv_\be_\bl () const {return _\b__\bg->level();}\n+857\n+_\b8_\b6_\b1 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const {\n+862 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg->level(), _\b__\bi_\bt.coord(),\n+_\b__\bi_\bt.which()));\n+863 }\n+864\n+_\b8_\b6_\b9 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int cc) const\n+870 {\n+871 return Dune::Yasp::subEnt(dim-dim,cc-dim);\n+872 }\n+873\n+_\b8_\b7_\b5 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const {\n+876 GeometryImpl _geometry((_\b__\bi_\bt).lowerleft());\n+877 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _geometry );\n+878 }\n+879\n+_\b8_\b8_\b3 constexpr GeometryType _\bt_\by_\bp_\be () const\n+884 {\n+885 return GeometryTypes::cube(_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+886 }\n+887\n+_\b8_\b8_\b9 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n+890 {\n+891 if (_\b__\bg->interior[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+892 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+893 if (_\b__\bg->interiorborder[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+894 return _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by;\n+895 if (_\b__\bg->overlap[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+896 return _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by;\n+897 if (_\b__\bg->overlapfront[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n+898 return _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+899 return _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n+900 }\n+901\n+_\b9_\b0_\b3 int _\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx (int, unsigned int ) const\n+904 {\n+905 return _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx();\n+906 }\n+907\n+908 private:\n+909 // IndexSets needs access to the private index methods\n+910 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+911 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n+912 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n+913\n+915 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx () const\n+916 {\n+917 // get coordinate and size of global grid\n+918 iTupel size = _\b__\bg->mg->levelSize(_\b__\bg->level());\n+919\n+920 for (int i=0; ilevel(); j++)\n+933 if (_\b__\bi_\bt.coord(i)&(1<level()-trailing;\n+942\n+943 // encode codim: shift vector of vertices is 0.\n+944 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be id(0);\n 945\n-_\b9_\b4_\b7 DAI dataEnd() const\n-948 {\n-949 return _end;\n-950 }\n-951\n-_\b9_\b5_\b3 int size() const\n-954 {\n-955 int count = 0;\n-956 for (DAI it = _begin; it != _end; ++it)\n-957 count += it->size();\n-958 return count;\n-959 }\n-960\n-_\b9_\b6_\b2 void finalize(DAI end, const YGrid& ygrid)\n-963 {\n-964 // Instead of directly iterating over the intersection deques, this code\n-965 // iterates over the components of an associated ygrid and works its way\n-966 // through the list of intersection deques in parallel.\n-967 // The reason for this convoluted iteration technique is that there are not\n-968 // necessarily intersections for all possible shifts, but we have to make\n-969 // sure that we stop at each shift to update the per-component index shift.\n-970 // This is ensured by iterating over the ygrid, which is guaranteed to have\n-971 // a component for each shift vector.\n-972\n-973 // set end iterator in the data array\n-974 _end = end;\n-975\n-977 int offset = 0;\n-978\n-979 DAI i = _begin;\n-980\n-981 // make sure that we have a valid deque (i.e. a non-empty one)\n-982 while (i != _end && i->begin() == i->end())\n-983 ++i;\n-984\n-985 for (auto yit = ygrid.dataBegin(); yit != ygrid.dataEnd(); ++yit)\n-986 {\n-987 if (i == _end)\n-988 break;\n-989 auto it = i->_\bb_\be_\bg_\bi_\bn();\n-990 if (it->grid.shift() == yit->shift())\n-991 {\n-992 // iterate over the intersections in the deque and set the offset\n-993 for (; it != i->end(); ++it)\n-994 {\n-995 it->yg.setBegin(&(it->grid));\n-996 it->yg.finalize(&(it->grid)+1, offset);\n-997 }\n-998\n-999 // advance to next non-empty deque\n-1000 ++i;\n-1001 while (i != _end && i->begin() == i->end())\n-1002 ++i;\n-1003 }\n-1004\n-1005 // update the offset from the ygrid component\n-1006 int add = 1;\n-1007 for (int j=0; j<_\bd_\bi_\bm; j++)\n-1008 add *= yit->supersize(j);\n-1009 offset += add;\n-1010 }\n-1011 assert (i == end);\n-1012 }\n-1013\n-1014 private:\n-1015 DAI _begin;\n-1016 DAI _end;\n-1017 };\n-1018\n-1019} // namespace Dune\n-1020\n-1021#endif\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 PartitionType &type)\n-write a PartitionType to a stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:72\n+946 // encode level\n+947 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs;\n+948 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\bl_\be_\bv_\be_\bl);\n+949\n+950 // encode coordinates\n+951 for (int i=dim-1; i>=0; i--)\n+952 {\n+953 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n+954 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bi_\bt.coord(i)>>trailing);\n+955 }\n+956\n+957 return id;\n+958 }\n+959\n+961 int _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx () const { return _\b__\bi_\bt.superindex();}\n+962\n+963 public:\n+_\b9_\b6_\b4 const _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() const { return _\b__\bi_\bt; }\n+_\b9_\b6_\b5 const _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() const { return _\b__\bg; }\n+_\b9_\b6_\b6 _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() { return _\b__\bi_\bt; }\n+_\b9_\b6_\b7 _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() { return _\b__\bg; }\n+968\n+_\b9_\b6_\b9 const GridImp * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd() const { return _\b__\bg->mg; }\n+970 protected:\n+_\b9_\b7_\b1 _\bI _\b__\bi_\bt = {}; // position in the grid level\n+_\b9_\b7_\b2 _\bY_\bG_\bL_\bI _\b__\bg = {}; // access to grid level\n+973 };\n+974\n+975} // namespace Dune\n+976\n+977#endif // DUNE_GRID_YASPGRIDENTITY_HH\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType\n+Attributes used in the generic overlap model.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+@ FrontEntity\n+on boundary between overlap and ghost\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ InteriorEntity\n+all interior entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+@ GhostEntity\n+ghost entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n+@ BorderEntity\n+on boundary between interior and overlap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+@ OverlapEntity\n+all entities lying in the overlap zone\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:33\n+_\bs_\bt_\bd\n+STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\b:_\b:_\bs_\bi_\bz_\be_\bA_\br_\br_\ba_\by\n-std::array< int, d > sizeArray(const std::array< std::vector< ct >, d > &v)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-int index(const iTupel &coord) const\n-given a tupel compute its index in the lexicographic numbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n-int offset(int i) const\n-Return offset to origin of enclosing grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:173\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, d > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bm_\bo_\bv_\be\n-YGridComponent< Coordinates > move(iTupel v) const\n-return grid moved by the vector v\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:263\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-iTupel size() const\n-retrun size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:203\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bd\n-static const int d\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n-YGridComponent< Coordinates > intersection(const YGridComponent< Coordinates >\n-&r) const\n-Return YGridComponent of supergrid of self which is the intersection of self\n-and another YGridCompone...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bc_\bt\n-Coordinates::ctype ct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bg_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs\n-Coordinates * getCoords() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bm_\bi_\bn\n-int min(int i) const\n-Return minimum index in direction i.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n-YGridComponent(iTupel origin, iTupel size)\n-make ygrid without coordinate information\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bt_\bo_\bt_\ba_\bl_\bs_\bi_\bz_\be\n-int totalsize() const\n-Return total size of index set which is the product of all size per direction.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n-YGridComponent(iTupel origin, iTupel size, const YGridComponent< Coordinates >\n-&enclosing)\n-make a subgrid by taking coordinates from a larger grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be\n-const iTupel & supersize() const\n-return size of enclosing grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n-YGridComponent(iTupel origin, std::bitset< d > shift, Coordinates *coords,\n-iTupel size, iTupel offset, iTupel supersize)\n-Make YGridComponent by giving all parameters.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n-int superindex(iTupel coord) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:472\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin() const\n-return iterator to first element of index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:487\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bf_\bT_\bu_\bp_\be_\bl\n-FieldVector< ct, d > fTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin(const iTupel &co) const\n-return iterator to given element of index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:493\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt\n-YGridComponent()\n-make uninitialized ygrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\br_\bi_\bg_\bi_\bn\n-int origin(int i) const\n-Return origin in direction i.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bs_\bi_\bz_\be\n-int supersize(int i) const\n-return size of enclosing grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int i) const\n-return size in direction i\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bm_\ba_\bx\n-int max(int i) const\n-Return maximum index in direction i.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-const std::bitset< d > & shift() const\n-Return shift tupel.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n-int superincrement(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:481\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-bool shift(int i) const\n-Return shift in direction i.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:156\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\be_\bn_\bd\n-Iterator end() const\n-return subiterator to last element of index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:499\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n-bool inside(const iTupel &coord) const\n-given a coordinate, return true if it is in the grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:241\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\be_\bm_\bp_\bt_\by\n-bool empty() const\n-Return true if YGrid is empty, i.e. has size 0 in all directions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n-const iTupel & offset() const\n-Return offset to origin of enclosing grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bo_\br_\bi_\bg_\bi_\bn\n-const iTupel & origin() const\n-return reference to origin\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:298\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n-Iterator & operator++()\n-Increment iterator to next cell with position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:379\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n-int superindex() const\n-Return consecutive index in enclosing grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:344\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n-bool operator!=(const Iterator &i) const\n-Return true when two iterators over the same grid are not equal (!).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:338\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n-ct lowerleft(int i) const\n-Return ith component of lower left corner of the entity associated with the\n-current coordinates and s...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:403\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-std::bitset< d > shift() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:455\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-ct meshsize(int i) const\n-Return meshsize in direction i.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:436\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-bool shift(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:450\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\bg_\br_\bi_\bd\n-const YGridComponent< Coordinates > * _grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:468\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\bi_\bn_\bi_\bt\n-void reinit(const YGridComponent< Coordinates > &r, const iTupel &coord)\n-reinitialize iterator to given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:317\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n-void move(const iTupel &dist)\n-move this iterator dist cells in direction i\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:369\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-fTupel meshsize() const\n-Return meshsize of current cell as reference.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:442\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n-fTupel lowerleft() const\n-Return lower left corner of the entity associated with the current coordinates\n-and shift.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:409\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt\n-Coordinates * coordCont() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:460\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\bc_\bo_\bo_\br_\bd\n-iTupel _coord\n-current position in index set\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:466\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n-const iTupel & coord() const\n-Return coordinate of the cell as reference (do not modify).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:356\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n-void move(int i, int dist)\n-move this iterator dist cells in direction i\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:362\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator(const YGridComponent< Coordinates > &r)\n-Make iterator pointing to first cell in a grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:304\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n-ct upperright(int i) const\n-Return ith component of upper right corder of the entity associated with the\n-current coordinates and ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:418\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n-int coord(int i) const\n-Return coordinate of the cell in direction i.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:350\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n-fTupel upperright() const\n-Return upper right corder of the entity associated with the current coordinates\n-and shift.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:427\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(const Iterator &i) const\n+_\bD_\bu_\bn_\be_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs\n+const int yaspgrid_level_bits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs\n+const int yaspgrid_dim_bits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+Default Implementations for EntityImp.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:542\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+Base class for exceptions in Dune grid modules.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int mydimension\n+geometry dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+The general version that handles all codimensions but 0 and dim.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridgeometry.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+level of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:282\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+geometry of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:296\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bt_\by_\bp_\be\n+GridImp::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n+constexpr GeometryType type() const\n+Return the name of the reference element. The type can be used to access the\n+Dune::ReferenceElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:305\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n+PersistentIndexType persistentIndex() const\n+globally unique, persistent index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:359\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+const YGLI & gridlevel() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:420\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+const I & transformingsubiterator() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:419\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bg\n+YGLI _g\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspEntity &e) const\n Return true when two iterators over the same grid are equal (!).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:332\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator(const YGridComponent< Coordinates > &r, const iTupel &coord)\n-Make iterator pointing to given cell in a grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:311\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\b__\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n-int _superindex\n-consecutive index in enclosing grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:467\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd\n-implements a collection of YGridComponents which form a codimension Entities of\n-given codimension c n...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:551\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bs_\bh_\bi_\bf_\bt_\bm_\ba_\bp_\bp_\bi_\bn_\bg\n-int shiftmapping(const std::bitset< dim > &shift) const\n-get which component belongs to a given shift vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:567\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bd_\ba_\bt_\ba_\bB_\be_\bg_\bi_\bn\n-DAI dataBegin() const\n-get start iterator in the data array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:573\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin() const\n-return begin iterator for the codimension and partition the ygrid represents\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:747\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bd_\ba_\bt_\ba_\bE_\bn_\bd\n-DAI dataEnd() const\n-get end iterator in the data array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:579\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-std::array< int, dim > iTupel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:558\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm\n-static const int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:553\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bs_\be_\bt_\bB_\be_\bg_\bi_\bn\n-void setBegin(DAI begin)\n-set start iterator in the data array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:561\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bi_\bn_\bs_\bi_\bd_\be\n-bool inside(const iTupel &coord, const std::bitset< dim > &shift=std::bitset<\n-dim >()) const\n-decide whether a coordinate is in the grid (depending on the component)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:585\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n-int superindex(const iTupel &coord, int which) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:764\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-Iterator begin(const std::array< int, dim > &coord, int which=0) const\n-return iterator pointint to a specified position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:753\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bD_\bA_\bI\n-YGridComponent< Coordinates > * DAI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:556\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be\n-void finalize(const DAI &end, int artificialOffset=0)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:771\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\be_\bn_\bd\n-Iterator end() const\n-return end iterator for the codimension and partition the ygrid represents\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:759\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator over a collection o YGrids A YGrid::Iterator is the heart of an entity\n-in YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:594\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator()=default\n-default constructor\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bw_\bh_\bi_\bc_\bh\n-int which() const\n-return the current component number\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:718\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n-void move(int i, int dist)\n-move the grid, this is only done and needed for codim 0\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:724\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(const Iterator &i) const\n-compare two iterators: component has to match\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:702\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n-Coordinates::ctype lowerleft(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:642\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-Dune::FieldVector< typename Coordinates::ctype, dim > meshsize() const\n-return the current meshsize vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:669\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator(const YGrid< Coordinates > &yg, const std::array< int, dim > &coords,\n-int which=0)\n-construct an iterator from coordinates and component\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:601\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt\n-Coordinates * coordCont() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:734\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n-Coordinates::ctype upperright(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:652\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-std::bitset< dim > shift() const\n-return the shift vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:681\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bh_\bi_\bf_\bt\n-bool shift(int i) const\n-return the shift in direction i\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:675\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n-bool operator!=(const Iterator &i) const\n-compare two iterators: component has to match\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:710\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\bo_\bv_\be\n-void move(const iTupel &dist)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:729\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bu_\bp_\bp_\be_\br_\br_\bi_\bg_\bh_\bt\n-Dune::FieldVector< typename Coordinates::ctype, dim > upperright() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:657\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n-const std::array< int, dim > & coord() const\n-return coordinate array at the current position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:637\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n-Iterator & operator++()\n-increment to the next entity jumping to next component if necessary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:694\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\be_\bs_\bh_\bs_\bi_\bz_\be\n-Coordinates::ctype meshsize(int i) const\n-return the current meshsize in direction i\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:663\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd\n-int coord(int i) const\n-return coordinate at the current position (direction i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:631\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterator(const YGrid< Coordinates > &yg, bool end=false)\n-create an iterator to start or end of the codimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:608\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bw_\be_\br_\bl_\be_\bf_\bt\n-Dune::FieldVector< typename Coordinates::ctype, dim > lowerleft() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:647\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bu_\bp_\be_\br_\bi_\bn_\bd_\be_\bx\n-int superindex() const\n-return the superindex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:687\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\bi_\bn_\bi_\bt\n-void reinit(const YGrid< Coordinates > &yg, const std::array< int, dim >\n-&coords, int which=0)\n-reinitializes an iterator, as if it was just constructed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn ygrid.hh:623\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:347\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+return partition type attribute\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl\n+GridImp::Traits::template Codim< codim >::GeometryImpl GeometryImpl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:277\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+YGLI & gridlevel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:422\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx\n+int subCompressedIndex(int i, unsigned int cc) const\n+subentity compressed index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:396\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\bG_\bL_\bI\n+GridImp::YGridLevelIterator YGLI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:333\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI\n+GridImp::YGrid::Iterator I\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:334\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n+const GridImp * yaspgrid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:423\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+GridImp::template Codim< codim >::EntitySeed EntitySeed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:279\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(YGLI &&g, const I &&it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:342\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\be_\bd\n+EntitySeed seed() const\n+Return the entity seed which contains sufficient information to generate the\n+entity again and uses as...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:290\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx\n+int compressedIndex() const\n+consecutive, codim-wise, level-wise index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(const YGLI &g, const I &it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:338\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bi_\bt\n+I _it\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:425\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< codim >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:276\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+GridImp::PersistentIndexType PersistentIndexType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:356\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+unsigned int subEntities(unsigned int cc) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:314\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+I & transformingsubiterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:421\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+Describes the minimal information necessary to create a fully functional\n+YaspEntity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterates over entities of one grid level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspIntersectionIterator enables iteration over intersections with neighboring\n+codim 0 entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersectioniterator.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspHierarchicIterator enables iteration over son entities of codim 0.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Implementation of Level- and LeafIndexSets for YaspGrid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n+persistent, globally unique Ids\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn\n+LeafIntersectionIterator ileafbegin() const\n+returns intersection iterator for first intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:657\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 0 >::LocalGeometry LocalGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:452\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n+Codim< cc >::Entity subEntity(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:571\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspEntity &e) const\n+Return true when two iterators over the same grid are equal (!).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:490\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(const YGLI &g, I &&it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:481\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bc_\bo_\bu_\bn_\bt\n+int count() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:554\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+GridImp::template Codim< 0 >::EntitySeed EntitySeed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:461\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+GridImp::PersistentIndexType PersistentIndexType\n+define the type used for persistent indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:468\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+GridImp::YGrid::iTupel iTupel\n+define type used for coordinates in grid module\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:471\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+const YGLI & gridlevel() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:632\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\be_\bn_\bd\n+IntersectionIterator iend() const\n+Reference to one past the last neighbor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:670\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+const I & transformingsubiterator() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:631\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bc_\bt_\by_\bp_\be\n+GridImp::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:446\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+YGLI & gridlevel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:634\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(const YGLI &g, const I &it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:477\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n+const GridImp * yaspgrid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:635\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+level of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:496\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GridImp::LeafIntersectionIterator LeafIntersectionIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:464\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(YGLI &&g, I &&it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:485\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+return partition type attribute\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:506\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd\n+LevelIntersectionIterator ilevelend() const\n+Reference to one past the last neighbor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:682\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh\n+bool mightVanish() const\n+Returns true, if entity might disappear during the next call to adapt()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:648\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GridImp::HierarchicIterator HierarchicIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:465\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:460\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn\n+LevelIntersectionIterator ilevelbegin() const\n+returns intersection iterator for first intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:664\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\be_\bn_\bd\n+LeafIntersectionIterator ileafend() const\n+Reference to one past the last neighbor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:676\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:474\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI\n+GridImp::YGrid::Iterator I\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:449\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< 0 >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:451\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+geometry of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:517\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n+Entity father() const\n+Inter-level access to father element on coarser grid. Assumes that meshes are\n+nested.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:587\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bs_\bN_\be_\bw\n+bool isNew() const\n+Returns true, if the entity has been created during the last call to adapt()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:644\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+constexpr GeometryType type() const\n+Return the name of the reference element. The type can be used to access the\n+Dune::ReferenceElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:545\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\be_\be_\bd\n+EntitySeed seed() const\n+Return the entity seed which contains sufficient information to generate the\n+entity again and uses as...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:501\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\bb_\be_\bg_\bi_\bn\n+HierarchicIterator hbegin(int maxlevel) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:691\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bb_\be_\bg_\bi_\bn\n+IntersectionIterator ibegin() const\n+returns intersection iterator for first intersection\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:651\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\bG_\bL_\bI\n+GridImp::YGridLevelIterator YGLI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:448\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+unsigned int subEntities(unsigned int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:563\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n+LocalGeometry geometryInFather() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:614\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GridImp::LevelIntersectionIterator IntersectionIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:462\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+GridImp::LevelIntersectionIterator LevelIntersectionIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:463\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+I & transformingsubiterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:633\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+bool isLeaf() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:637\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br\n+bool hasFather() const\n+returns true if father entity exists\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:607\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< cd >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:457\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+level of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:856\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspEntity &e) const\n+Return true when two iterators over the same grid are equal (!).\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:850\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+YGLI & gridlevel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:967\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+Geometry geometry() const\n+geometry of this entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:875\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(const YGLI &g, const I &it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:841\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+unsigned int subEntities(unsigned int cc) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:869\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+PartitionType partitionType() const\n+return partition type attribute\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:889\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bc_\bt_\by_\bp_\be\n+GridImp::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:822\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\bG_\bL_\bI\n+GridImp::YGridLevelIterator YGLI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:824\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n+GridImp::PersistentIndexType PersistentIndexType\n+define the type used for persistent indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:832\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\be_\be_\bd\n+EntitySeed seed() const\n+Return the entity seed which contains sufficient information to generate the\n+entity again and uses as...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:861\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n+const GridImp * yaspgrid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:969\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+constexpr GeometryType type() const\n+Return the name of the reference element. The type can be used to access the\n+Dune::ReferenceElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:883\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI\n+GridImp::YGrid::Iterator I\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:825\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+I & transformingsubiterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:966\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+const I & transformingsubiterator() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:964\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n+GridImp::YGrid::iTupel iTupel\n+define type used for coordinates in grid module\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:835\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+GridImp::template Codim< dim >::Geometry Geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:827\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n+const YGLI & gridlevel() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:965\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity(YGLI &&g, I &&it)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:845\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+YaspEntity()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:838\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n+GridImp::template Codim< dim >::EntitySeed EntitySeed\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:829\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00221.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00176.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -81,15 +81,15 @@\n
    \n \n

    the YaspEntity class and its specializations \n More...

    \n
    #include <dune/common/math.hh>
    \n #include <dune/geometry/type.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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00221_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00809_source.html", "comments": ["Files 84% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: yaspgridentity.hh Source File\n+dune-grid: vtkwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,1094 +70,1657 @@\n \n \n \n \n \n \n \n
    \n-
    yaspgridentity.hh
    \n+
    vtkwriter.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_YASPGRIDENTITY_HH
    \n-
    6#define DUNE_GRID_YASPGRIDENTITY_HH
    \n-
    7
    \n-
    8#include <dune/common/math.hh>
    \n-
    9#include <dune/geometry/type.hh>
    \n-
    10
    \n-
    24//========================================================================
    \n-
    25
    \n-
    26
    \n-
    27
    \n-
    28
    \n-
    29namespace Dune {
    \n-
    30
    \n-
    31 namespace Yasp {
    \n-
    32
    \n-
    33#ifndef DOXYGEN
    \n-
    34
    \n-
    35 // table for quick evaluation of binomial coefficients
    \n-
    36 template<int n>
    \n-
    37 struct BinomialTable
    \n-
    38 {
    \n-
    39 // evaluation - note that in general d!=n, n is only the
    \n-
    40 // maximum value of d (in our case dimworld)
    \n-
    41 static constexpr int evaluate(int d, int c)
    \n-
    42 {
    \n-
    43 return _values[_offsets[d] + c];
    \n-
    44 }
    \n-
    45
    \n-
    46 // the actual implementation
    \n-
    47 [[deprecated("Use binomial from dune-common's math.hh")]]
    \n-
    48 static constexpr int binomial(int d, int c)
    \n-
    49 {
    \n-
    50 long binomial=1;
    \n-
    51 for (int i=d-c+1; i<=d; i++)
    \n-
    52 binomial *= i;
    \n-
    53 for (long i=2; i<=c; i++)
    \n-
    54 binomial /= i;
    \n-
    55 return binomial;
    \n-
    56 }
    \n-
    57
    \n-
    58 private:
    \n-
    59 // prevent construction
    \n-
    60 BinomialTable() = delete;
    \n-
    61
    \n-
    62 // compute binomial(r, c) and advance row `r` and column `c`
    \n-
    63 static constexpr int nextValue(int& r, int& c)
    \n-
    64 {
    \n-
    65 const auto result = Dune::binomial(r, c);
    \n+
    5
    \n+
    6#ifndef DUNE_VTKWRITER_HH
    \n+
    7#define DUNE_VTKWRITER_HH
    \n+
    8
    \n+
    9#include <cstring>
    \n+
    10#include <iostream>
    \n+
    11#include <string>
    \n+
    12#include <fstream>
    \n+
    13#include <sstream>
    \n+
    14#include <iomanip>
    \n+
    15#include <memory>
    \n+
    16#include <type_traits>
    \n+
    17#include <vector>
    \n+
    18#include <list>
    \n+
    19#include <map>
    \n+
    20
    \n+
    21#include <dune/common/visibility.hh>
    \n+
    22#include <dune/common/typetraits.hh>
    \n+
    23#include <dune/common/exceptions.hh>
    \n+
    24#include <dune/common/indent.hh>
    \n+
    25#include <dune/common/iteratorfacades.hh>
    \n+
    26#include <dune/common/path.hh>
    \n+
    27#include <dune/geometry/referenceelements.hh>
    \n+\n+\n+\n+\n+\n+\n+\n+\n+
    36
    \n+
    50namespace Dune
    \n+
    51{
    \n+
    52
    \n+
    53 namespace Impl
    \n+
    54 {
    \n+
    55 // Check whether type F has a method 'bind' (see the dune-functions interface)
    \n+
    56 template< class F, class E, class = void >
    \n+
    57 struct IsBindable
    \n+
    58 : std::false_type
    \n+
    59 {};
    \n+
    60
    \n+
    61 template< class F, class E >
    \n+
    62 struct IsBindable< F, E, std::void_t< decltype( std::declval< F & >().bind( std::declval< const E & >() ) ),
    \n+
    63 decltype( std::declval< F & >().unbind() ) > >
    \n+
    64 : std::true_type
    \n+
    65 {};
    \n
    66
    \n-
    67 c += 1;
    \n-
    68 if (c > r) {
    \n-
    69 r += 1;
    \n-
    70 c = 0;
    \n-
    71 }
    \n+
    67 // Check whether localFunction(F) can be called (see the dune-functions interface)
    \n+
    68 template< class F, class = void >
    \n+
    69 struct HasLocalFunction
    \n+
    70 : std::false_type
    \n+
    71 {};
    \n
    72
    \n-
    73 return result;
    \n-
    74 }
    \n-
    75
    \n-
    76 template<std::size_t... I>
    \n-
    77 static constexpr std::array<int, sizeof...(I)> computeValues(std::index_sequence<I...>)
    \n-
    78 {
    \n-
    79 int r = 0, c = 0;
    \n-
    80 return {{ ((void)I, nextValue(r, c))... }};
    \n-
    81 }
    \n-
    82
    \n-
    83 template<std::size_t... I>
    \n-
    84 static constexpr std::array<int, sizeof...(I)> computeOffsets(std::index_sequence<I...>)
    \n-
    85 { return {{ (I*(I+1)/2)... }}; }
    \n-
    86
    \n-
    87 static constexpr std::array<int,(n+1)*(n+2)/2> _values = computeValues(std::make_index_sequence<(n+1)*(n+2)/2>{});
    \n-
    88 static constexpr std::array<int,n+1> _offsets = computeOffsets(std::make_index_sequence<n+1>{});
    \n-
    89 };
    \n-
    90
    \n-
    91#if __cplusplus < 201703L
    \n-
    92 template<int n>
    \n-
    93 constexpr std::array<int,(n+1)*(n+2)/2> BinomialTable<n>::_values;
    \n-
    94 template<int n>
    \n-
    95 constexpr std::array<int,n+1> BinomialTable<n>::_offsets;
    \n-
    96#endif
    \n-
    97
    \n-
    104 template<int dimworld>
    \n-
    105 constexpr int subEnt(int d, int c)
    \n-
    106 {
    \n-
    107 return (d < c ? 0 : BinomialTable<dimworld>::evaluate(d,c) << c);
    \n-
    108 }
    \n-
    109
    \n-
    110 // Make a table mapping all subentities of a codim 0 entity to a value.
    \n-
    111 // F is the functor to be evaluated.
    \n-
    112 template<typename F, int dim>
    \n-
    113 struct EntityShiftTable
    \n-
    114 {
    \n-
    115 typedef std::bitset<dim> value_type;
    \n-
    116
    \n-
    117 static value_type evaluate(int i, int codim)
    \n-
    118 {
    \n-
    119 return {_values[_offsets[codim] + i]};
    \n-
    120 }
    \n-
    121
    \n-
    122 private:
    \n-
    123
    \n-
    124 // prevent construction
    \n-
    125 EntityShiftTable() = delete;
    \n+
    73 template< class F >
    \n+
    74 struct HasLocalFunction< F, std::void_t< decltype( localFunction( std::declval< F& >() ) ) > >
    \n+
    75 : std::true_type
    \n+
    76 {};
    \n+
    77
    \n+
    78 } // namespace Impl
    \n+
    79
    \n+
    80 // Forward-declaration here, so the class can be friend of VTKWriter
    \n+
    81 template <class GridView>
    \n+\n+
    83 template <class GridView>
    \n+\n+
    85
    \n+
    94 template< class GridView >
    \n+
    \n+
    95 class VTKWriter {
    \n+
    96
    \n+
    97 // VTKSequenceWriterBase needs getSerialPieceName
    \n+
    98 // and getParallelHeaderName
    \n+
    99 friend class VTKSequenceWriterBase<GridView>;
    \n+
    100 // VTKSequenceWriter needs the grid view, to get the MPI size and rank
    \n+
    101 friend class VTKSequenceWriter<GridView>;
    \n+
    102
    \n+
    103 // extract types
    \n+
    104 typedef typename GridView::Grid Grid;
    \n+
    105 typedef typename GridView::ctype DT;
    \n+
    106 constexpr static int n = GridView::dimension;
    \n+
    107 constexpr static int w = GridView::dimensionworld;
    \n+
    108
    \n+
    109 typedef typename GridView::template Codim< 0 >::Entity Cell;
    \n+
    110 typedef typename GridView::template Codim< n >::Entity Vertex;
    \n+
    111 typedef Cell Entity;
    \n+
    112
    \n+
    113 typedef typename GridView::IndexSet IndexSet;
    \n+
    114
    \n+
    115 static const PartitionIteratorType VTK_Partition = InteriorBorder_Partition;
    \n+
    116 //static const PartitionIteratorType VTK_Partition = All_Partition;
    \n+
    117
    \n+
    118 typedef typename GridView::template Codim< 0 >
    \n+
    119 ::template Partition< VTK_Partition >::Iterator
    \n+
    120 GridCellIterator;
    \n+
    121 typedef typename GridView::template Codim< n >
    \n+
    122 ::template Partition< VTK_Partition >::Iterator
    \n+
    123 GridVertexIterator;
    \n+
    124
    \n+
    125 typedef typename GridCellIterator::Reference EntityReference;
    \n
    126
    \n-
    127 // compute offset of codimension `codim` entities and advance `offset`
    \n-
    128 static constexpr int nextOffset(int& offset, int codim)
    \n-
    129 {
    \n-
    130 if (codim == 0) {
    \n-
    131 offset = 0;
    \n-
    132 return 0;
    \n-
    133 }
    \n-
    134
    \n-
    135 offset += subEnt<dim>(dim, codim-1);
    \n-
    136 return offset;
    \n-
    137 }
    \n-
    138
    \n-
    139 template<std::size_t... I>
    \n-
    140 static constexpr std::array<int, sizeof...(I)> computeOffsets(std::index_sequence<I...>)
    \n-
    141 {
    \n-
    142 int offset = 0;
    \n-
    143 return {{ (nextOffset(offset, I))... }};
    \n-
    144 }
    \n-
    145
    \n-
    146 // compute shift table entry for (`codim`, `i`) and advance `codim`, `i`
    \n-
    147 static constexpr unsigned char nextValue(int& codim, int& i)
    \n-
    148 {
    \n-
    149 const auto result = F::evaluate(i, codim);
    \n+
    127 typedef typename GridView::template Codim< 0 >
    \n+
    128 ::Entity::Geometry::LocalCoordinate Coordinate;
    \n+
    129
    \n+\n+
    131
    \n+
    132 // return true if entity should be skipped in Vertex and Corner iterator
    \n+
    133 static bool skipEntity( const PartitionType entityType )
    \n+
    134 {
    \n+
    135 switch( VTK_Partition )
    \n+
    136 {
    \n+
    137 // for All_Partition no entity has to be skipped
    \n+
    138 case All_Partition: return false;
    \n+
    139 case InteriorBorder_Partition: return ( entityType != InteriorEntity );
    \n+
    140 default: DUNE_THROW(NotImplemented,"Add check for this partition type");
    \n+
    141 }
    \n+
    142 return false ;
    \n+
    143 }
    \n+
    144
    \n+
    145 public:
    \n+
    146
    \n+\n+
    148
    \n+
    149 protected:
    \n
    150
    \n-
    151 i += 1;
    \n-
    152 if (i >= subEnt<dim>(dim, codim)) {
    \n-
    153 codim += 1;
    \n-
    154 i = 0;
    \n-
    155 }
    \n-
    156
    \n-
    157 return result;
    \n-
    158 }
    \n+
    152
    \n+
    \n+\n+
    156 {
    \n+
    157
    \n+
    158 public:
    \n
    159
    \n-
    160 template<std::size_t... I>
    \n-
    161 static constexpr std::array<unsigned char, sizeof...(I)> computeValues(std::index_sequence<I...>)
    \n-
    162 {
    \n-
    163 int codim = 0, i = 0;
    \n-
    164 return {{ ((void)I, nextValue(codim, i))... }};
    \n-
    165 }
    \n-
    166
    \n-
    167 static constexpr std::array<int,dim+1> _offsets = computeOffsets(std::make_index_sequence<dim+1>{});
    \n-
    168 static constexpr std::array<unsigned char,Dune::power(3,dim)> _values = computeValues(std::make_index_sequence<Dune::power(3,dim)>{});
    \n-
    169
    \n-
    170 };
    \n+\n+
    161
    \n+
    \n+\n+
    164 {
    \n+
    165
    \n+
    167 virtual void bind(const Entity& e) = 0;
    \n+
    168
    \n+
    170 virtual void unbind() = 0;
    \n
    171
    \n-
    172#if __cplusplus < 201703L
    \n-
    173 template<typename F, int dim>
    \n-
    174 constexpr std::array<int,dim+1> EntityShiftTable<F, dim>::_offsets;
    \n-
    175 template<typename F, int dim>
    \n-
    176 constexpr std::array<unsigned char,Dune::power(3,dim)> EntityShiftTable<F, dim>::_values;
    \n-
    177#endif
    \n-
    178
    \n-
    179 // functor for doing the actual entity shift calculation
    \n-
    180 template<int dim>
    \n-
    181 struct calculate_entity_shift
    \n-
    182 {
    \n-
    183 static constexpr unsigned long long evaluate(int index, int cc)
    \n-
    184 {
    \n-
    185 auto result = 0ull;
    \n-
    186 for (int d = dim; d>0; d--)
    \n-
    187 {
    \n-
    188 if (cc == d)
    \n-
    189 return result;
    \n-
    190 if (index < subEnt<dim>(d-1,cc))
    \n-
    191 result |= 1ull << (d-1);
    \n-
    192 else
    \n-
    193 {
    \n-
    194 index = (index - subEnt<dim>(d-1, cc)) % subEnt<dim>(d-1,cc-1);
    \n-
    195 cc--;
    \n-
    196 }
    \n-
    197 }
    \n-
    198 return result;
    \n-
    199 }
    \n-
    200 };
    \n-
    201
    \n-
    210 template<int dim>
    \n-
    211 std::bitset<dim> entityShift(int index, int cc)
    \n-
    212 {
    \n-
    213 return EntityShiftTable<calculate_entity_shift<dim>,dim>::evaluate(index,cc);
    \n-
    214 }
    \n-
    215
    \n-
    216 // functor for doing the actual entity move calculation
    \n-
    217 template<int dim>
    \n-
    218 struct calculate_entity_move
    \n-
    219 {
    \n-
    220 static constexpr unsigned long long evaluate(int index, int cc)
    \n-
    221 {
    \n-
    222 auto result = 0ull;
    \n-
    223 for (int d = dim; d>0; d--)
    \n-
    224 {
    \n-
    225 if (d == cc)
    \n-
    226 {
    \n-
    227 // result[d-1] = index & (1<<(d-1));
    \n-
    228 result &= ~(1ull << (d-1));
    \n-
    229 result |= index & (1ull << (d-1));
    \n-
    230
    \n-
    231 index &= ~(1<<(d-1));
    \n-
    232 }
    \n-
    233 if (index >= subEnt<dim>(d-1,cc))
    \n-
    234 {
    \n-
    235 if ((index - subEnt<dim>(d-1,cc)) / subEnt<dim>(d-1,cc-1) == 1)
    \n-
    236 {
    \n-
    237 result |= 1ull << (d-1);
    \n-
    238 }
    \n-
    239 index = (index - subEnt<dim>(d-1, cc)) % subEnt<dim>(d-1,cc-1);
    \n-
    240 cc--;
    \n-
    241 }
    \n-
    242 }
    \n-
    243 return result;
    \n-
    244 }
    \n-
    245
    \n-
    246 };
    \n-
    247
    \n-
    255 template<int dim>
    \n-
    256 std::bitset<dim> entityMove(int index, int cc)
    \n-
    257 {
    \n-
    258 return EntityShiftTable<calculate_entity_move<dim>,dim>::evaluate(index,cc);
    \n-
    259 }
    \n-
    260
    \n-
    261#endif //DOXYGEN
    \n-
    262
    \n-
    263 } // namespace Yasp.
    \n-
    264
    \n-
    265 template<int codim, int dim, class GridImp>
    \n-
    \n-\n-
    267 : public EntityDefaultImplementation <codim,dim,GridImp,YaspEntity>
    \n-
    268 {
    \n-
    269
    \n-
    270 template<int, PartitionIteratorType, typename>
    \n-
    271 friend class YaspLevelIterator;
    \n+
    173
    \n+
    176 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const = 0;
    \n+
    177
    \n+
    \n+\n+
    179 {}
    \n+
    \n+
    180
    \n+
    181 };
    \n+
    \n+
    182
    \n+
    184 // DUNE_PRIVATE since _f has less visibility
    \n+
    185 template<typename F>
    \n+
    \n+
    186 struct DUNE_PRIVATE FunctionWrapper
    \n+
    187 : public FunctionWrapperBase
    \n+
    188 {
    \n+
    189 using Function = typename std::decay<F>::type;
    \n+
    190
    \n+
    191 template<typename F_>
    \n+
    \n+\n+
    193 : _f(std::forward<F_>(f))
    \n+
    194 {}
    \n+
    \n+
    195
    \n+
    \n+
    196 virtual void bind(const Entity& e)
    \n+
    197 {
    \n+
    198 _f.bind(e);
    \n+
    199 }
    \n+
    \n+
    200
    \n+
    \n+
    201 virtual void unbind()
    \n+
    202 {
    \n+
    203 _f.unbind();
    \n+
    204 }
    \n+
    \n+
    205
    \n+
    \n+
    206 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const
    \n+
    207 {
    \n+
    208 auto r = _f(pos);
    \n+
    209 // we need to do different things here depending on whether r supports indexing into it or not.
    \n+
    210 do_write(w,r,count,IsIndexable<decltype(r)>());
    \n+
    211 }
    \n+
    \n+
    212
    \n+
    213 private:
    \n+
    214
    \n+
    215 template<typename R>
    \n+
    216 void do_write(Writer& w, const R& r, std::size_t count, std::true_type) const
    \n+
    217 {
    \n+
    218 for (std::size_t i = 0; i < count; ++i)
    \n+
    219 w.write(r[i]);
    \n+
    220 }
    \n+
    221
    \n+
    222 template<typename R>
    \n+
    223 void do_write(Writer& w, const R& r, std::size_t count, std::false_type) const
    \n+
    224 {
    \n+
    225 assert(count == 1);
    \n+
    226 w.write(r);
    \n+
    227 }
    \n+
    228
    \n+
    229 Function _f;
    \n+
    230 };
    \n+
    \n+
    231
    \n+
    233 template<typename F>
    \n+
    \n+\n+
    235 : public FunctionWrapperBase
    \n+
    236 {
    \n+
    237 using Function = typename std::decay<F>::type;
    \n+
    238
    \n+
    239 template<typename F_>
    \n+
    \n+\n+
    241 : _f(std::forward<F_>(f))
    \n+
    242 , element_(nullptr)
    \n+
    243 {}
    \n+
    \n+
    244
    \n+
    \n+
    245 virtual void bind(const Entity& e)
    \n+
    246 {
    \n+
    247 element_ = &e;
    \n+
    248 }
    \n+
    \n+
    249
    \n+
    \n+
    250 virtual void unbind()
    \n+
    251 {
    \n+
    252 element_ = nullptr;
    \n+
    253 }
    \n+
    \n+
    254
    \n+
    \n+
    255 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const
    \n+
    256 {
    \n+
    257 auto globalPos = element_->geometry().global(pos);
    \n+
    258 auto r = _f(globalPos);
    \n+
    259 if constexpr (IsIndexable<decltype(r)>()) {
    \n+
    260 for (std::size_t i = 0; i < count; ++i)
    \n+
    261 w.write(r[i]);
    \n+
    262 }
    \n+
    263 else {
    \n+
    264 assert(count == 1);
    \n+
    265 w.write(r);
    \n+
    266 }
    \n+
    267 }
    \n+
    \n+
    268 private:
    \n+
    269 Function _f;
    \n+
    270 const Entity* element_;
    \n+
    271 };
    \n+
    \n
    272
    \n-
    273 public:
    \n-
    274 typedef typename GridImp::ctype ctype;
    \n-
    275
    \n-
    276 typedef typename GridImp::template Codim<codim>::Geometry Geometry;
    \n-
    277 typedef typename GridImp::Traits::template Codim<codim>::GeometryImpl GeometryImpl;
    \n-
    278
    \n-
    279 typedef typename GridImp::template Codim<codim>::EntitySeed EntitySeed;
    \n-
    280
    \n+
    \n+\n+
    275 : public FunctionWrapperBase
    \n+
    276 {
    \n+
    \n+
    277 VTKFunctionWrapper(const std::shared_ptr< const VTKFunction >& f)
    \n+
    278 : _f(f)
    \n+
    279 , _entity(nullptr)
    \n+
    280 {}
    \n+
    \n+
    281
    \n
    \n-
    282 int level () const
    \n-
    283 {
    \n-
    284 return _g->level();
    \n-
    285 }
    \n+
    282 virtual void bind(const Entity& e)
    \n+
    283 {
    \n+
    284 _entity = &e;
    \n+
    285 }
    \n
    \n
    286
    \n-
    \n-\n-
    291 {
    \n-
    292 return EntitySeed(YaspEntitySeed<codim,GridImp>(_g->level(), _it.coord(), _it.which()));
    \n-
    293 }
    \n-
    \n-
    294
    \n-
    \n-\n-
    297 {
    \n-
    298 GeometryImpl _geometry(_it.lowerleft(),_it.upperright(),_it.shift());
    \n-
    299 return Geometry(_geometry);
    \n-
    300 }
    \n-
    \n-
    301
    \n-
    \n-
    305 constexpr GeometryType type () const
    \n-
    306 {
    \n-
    307 return GeometryTypes::cube(Geometry::mydimension);
    \n-
    308 }
    \n-
    \n-
    309
    \n-
    \n-
    314 unsigned int subEntities (unsigned int cc) const
    \n-
    315 {
    \n-
    316 return Dune::Yasp::subEnt<dim>(dim-codim,cc-codim);
    \n-
    317 }
    \n-
    \n-
    318
    \n-
    \n-\n-
    321 {
    \n-
    322 if (_g->interior[codim].inside(_it.coord(),_it.shift()))
    \n-
    323 return InteriorEntity;
    \n-
    324 if (_g->interiorborder[codim].inside(_it.coord(),_it.shift()))
    \n-
    325 return BorderEntity;
    \n-
    326 if (_g->overlap[codim].inside(_it.coord(),_it.shift()))
    \n-
    327 return OverlapEntity;
    \n-
    328 if (_g->overlapfront[codim].inside(_it.coord(),_it.shift()))
    \n-
    329 return FrontEntity;
    \n-
    330 return GhostEntity;
    \n-
    331 }
    \n-
    \n-
    332
    \n-
    333 typedef typename GridImp::YGridLevelIterator YGLI;
    \n-
    334 typedef typename GridImp::YGrid::Iterator I;
    \n-
    \n-\n-
    336 {}
    \n-
    \n-
    337
    \n-
    \n-
    338 YaspEntity (const YGLI& g, const I& it)
    \n-
    339 : _it(it), _g(g)
    \n-
    340 {}
    \n+
    \n+
    287 virtual void unbind()
    \n+
    288 {
    \n+
    289 _entity = nullptr;
    \n+
    290 }
    \n+
    \n+
    291
    \n+
    \n+
    292 virtual void write(const Coordinate& pos, Writer& w, std::size_t count) const
    \n+
    293 {
    \n+
    294 for (std::size_t i = 0; i < count; ++i)
    \n+
    295 w.write(_f->evaluate(i,*_entity,pos));
    \n+
    296 }
    \n+
    \n+
    297
    \n+
    298 private:
    \n+
    299
    \n+
    300 std::shared_ptr< const VTKFunction > _f;
    \n+
    301 const Entity* _entity;
    \n+
    302
    \n+
    303 };
    \n+
    \n+
    304
    \n+
    306 template<typename F, std::enable_if_t<Impl::IsBindable<F, Entity>::value, int> = 0>
    \n+
    \n+\n+
    308 : _f(std::make_unique<FunctionWrapper<F> >(std::forward<F>(f)))
    \n+\n+
    310 {}
    \n+
    \n+
    311
    \n+
    313 // That is, a function that you can create a LocalFunction for, and evaluate that in element coordinates
    \n+
    314 template<typename F, std::enable_if_t<not Impl::IsBindable<F, Entity>::value && Impl::HasLocalFunction<F>::value, int> = 0>
    \n+
    \n+\n+
    316 : _f(std::make_unique< FunctionWrapper<
    \n+
    317 typename std::decay<decltype(localFunction(std::forward<F>(f)))>::type
    \n+
    318 > >(localFunction(std::forward<F>(f))))
    \n+\n+
    320 {}
    \n+
    \n+
    321
    \n+
    323 // That is, a function that can be evaluated in global coordinates of the domain
    \n+
    324 template<typename F, std::enable_if_t<not Impl::IsBindable<F, Entity>::value && not Impl::HasLocalFunction<F>::value, int> = 0>
    \n+
    \n+\n+
    326 : _f(std::make_unique< GlobalFunctionWrapper<F> >(std::forward<F>(f)))
    \n+\n+
    328 {}
    \n+
    \n+
    329
    \n+
    \n+
    331 explicit VTKLocalFunction (const std::shared_ptr< const VTKFunction >& vtkFunctionPtr)
    \n+
    332 : _f(std::make_unique<VTKFunctionWrapper>(vtkFunctionPtr))
    \n+
    333 , _fieldInfo(
    \n+
    334 vtkFunctionPtr->name(),
    \n+
    335 (vtkFunctionPtr->ncomps() == 2 || vtkFunctionPtr->ncomps() == 3) ? VTK::FieldInfo::Type::vector : VTK::FieldInfo::Type::scalar,
    \n+
    336 vtkFunctionPtr->ncomps(),
    \n+
    337 vtkFunctionPtr->precision()
    \n+
    338 )
    \n+
    339 {}
    \n
    \n-
    341
    \n+
    340
    \n
    \n-
    342 YaspEntity (YGLI&& g, const I&& it)
    \n-
    343 : _it(std::move(it)), _g(std::move(g))
    \n-
    344 {}
    \n-
    \n-
    345
    \n-
    347 bool equals (const YaspEntity& e) const
    \n-
    348 {
    \n-
    349 return _it == e._it && _g == e._g;
    \n-
    350 }
    \n-
    351
    \n-
    352 // IndexSets needs access to the private index methods
    \n-
    353 friend class Dune::YaspIndexSet<GridImp,true>;
    \n-
    354 friend class Dune::YaspIndexSet<GridImp,false>;
    \n-
    355 friend class Dune::YaspGlobalIdSet<GridImp>;
    \n-
    356 typedef typename GridImp::PersistentIndexType PersistentIndexType;
    \n-
    357
    \n-
    \n-\n-
    360 {
    \n-
    361 // get size of global grid (in elements)
    \n-
    362 std::array<int,dim> size;
    \n-
    363
    \n-
    364 for (int i=0; i<dim; i++)
    \n-
    365 {
    \n-
    366 // correct size according to shift
    \n-
    367 size[i] = _g->mg->levelSize(_g->level(), i);
    \n-
    368 if (!_it.shift(i))
    \n-
    369 size[i]++;
    \n-
    370 }
    \n-
    371
    \n-
    372 // encode codim
    \n-
    373 PersistentIndexType id(_it.shift().to_ulong());
    \n-
    374
    \n-
    375 // encode level
    \n-
    376 id = id << yaspgrid_level_bits;
    \n-
    377 id = id+PersistentIndexType(_g->level());
    \n-
    378
    \n-
    379 // encode coordinates
    \n-
    380 for (int i=dim-1; i>=0; i--)
    \n-
    381 {
    \n-
    382 id = id << yaspgrid_dim_bits;
    \n-
    383 id = id+PersistentIndexType(_it.coord(i));
    \n-
    384 }
    \n-
    385
    \n-
    386 return id;
    \n-
    387 }
    \n-
    \n-
    388
    \n-
    \n-
    390 int compressedIndex () const
    \n-
    391 {
    \n-
    392 return _it.superindex();
    \n-
    393 }
    \n-
    \n-
    394
    \n-
    \n-
    396 int subCompressedIndex (int i, unsigned int cc) const
    \n-
    397 {
    \n-
    398 // get the shift of the entity and the subentity
    \n-
    399 // the subentity shift is only available in the space spanned by the entity
    \n-
    400 std::bitset<dim-codim> subent_shift = Dune::Yasp::entityShift<dim-codim>(i,cc-codim);
    \n-
    401 std::bitset<dim-codim> subent_move = Dune::Yasp::entityMove<dim-codim>(i,cc-codim);
    \n-
    402
    \n-
    403 std::bitset<dim> shift = _it.shift();
    \n-
    404 std::array<int, dim> coord = _it.coord();
    \n-
    405 for (int j=0, k=0; j<dim; j++)
    \n-
    406 {
    \n-
    407 if (!shift[j])
    \n-
    408 continue;
    \n-
    409
    \n-
    410 coord[j] += subent_move[k];
    \n-
    411 shift[j] = subent_shift[k];
    \n-
    412 k++;
    \n-
    413 }
    \n-
    414
    \n-
    415 int which = _g->overlapfront[cc].shiftmapping(shift);
    \n-
    416 return _g->overlapfront[cc].superindex(coord,which);
    \n-
    417 }
    \n-
    \n-
    418 public:
    \n-
    419 const I& transformingsubiterator() const { return _it; }
    \n-
    420 const YGLI& gridlevel() const { return _g; }
    \n-\n-
    422 YGLI& gridlevel() { return _g; }
    \n-
    423 const GridImp * yaspgrid() const { return _g->mg; }
    \n-
    424 protected:
    \n-
    425 I _it = {}; // position in the grid level
    \n-
    426 YGLI _g = {}; // access to grid level
    \n-
    427 };
    \n-
    \n-
    428
    \n-
    429
    \n-
    430 // specialization for codim=0
    \n-
    431 template<int dim, class GridImp>
    \n-
    \n-
    432 class YaspEntity<0,dim,GridImp>
    \n-
    433 : public EntityDefaultImplementation <0,dim,GridImp,YaspEntity>
    \n-
    434 {
    \n-
    435 constexpr static int dimworld = GridImp::dimensionworld;
    \n+
    342 std::string name() const
    \n+
    343 {
    \n+
    344 return fieldInfo().name();
    \n+
    345 }
    \n+
    \n+
    346
    \n+
    \n+\n+
    349 {
    \n+
    350 return _fieldInfo;
    \n+
    351 }
    \n+
    \n+
    352
    \n+
    \n+
    354 void bind(const Entity& e) const
    \n+
    355 {
    \n+
    356 _f->bind(e);
    \n+
    357 }
    \n+
    \n+
    358
    \n+
    \n+
    360 void unbind() const
    \n+
    361 {
    \n+
    362 _f->unbind();
    \n+
    363 }
    \n+
    \n+
    364
    \n+
    \n+
    366 void write(const Coordinate& pos, Writer& w) const
    \n+
    367 {
    \n+
    368 _f->write(pos,w,fieldInfo().size());
    \n+
    369 }
    \n+
    \n+
    370
    \n+
    371 std::shared_ptr<FunctionWrapperBase> _f;
    \n+\n+
    373
    \n+
    374 };
    \n+
    \n+
    375
    \n+
    376 typedef typename std::list<VTKLocalFunction>::const_iterator FunctionIterator;
    \n+
    377
    \n+
    379
    \n+
    \n+
    384 class CellIterator : public GridCellIterator
    \n+
    385 {
    \n+
    386 public:
    \n+
    388 CellIterator(const GridCellIterator & x) : GridCellIterator(x) {}
    \n+
    \n+
    391 const FieldVector<DT,n> position() const
    \n+
    392 {
    \n+
    393 return ReferenceElements<DT,n>::general((*this)->type()).position(0,0);
    \n+
    394 }
    \n+
    \n+
    395 };
    \n+
    \n+
    396
    \n+
    \n+\n+
    398 {
    \n+
    399 return gridView_.template begin< 0, VTK_Partition >();
    \n+
    400 }
    \n+
    \n+
    401
    \n+
    \n+\n+
    403 {
    \n+
    404 return gridView_.template end< 0, VTK_Partition >();
    \n+
    405 }
    \n+
    \n+
    406
    \n+
    408
    \n+
    \n+\n+
    423 public ForwardIteratorFacade<VertexIterator, const Entity, EntityReference, int>
    \n+
    424 {
    \n+
    425 GridCellIterator git;
    \n+
    426 GridCellIterator gend;
    \n+
    427 VTK::DataMode datamode;
    \n+
    428 // Index of the currently visited corner within the current element.
    \n+
    429 // NOTE: this is in Dune-numbering, in contrast to CornerIterator.
    \n+
    430 int cornerIndexDune;
    \n+
    431 const VertexMapper & vertexmapper;
    \n+
    432 std::vector<bool> visited;
    \n+
    433 // in conforming mode, for each vertex id (as obtained by vertexmapper)
    \n+
    434 // hold its number in the iteration order (VertexIterator)
    \n+
    435 int offset;
    \n
    436
    \n-
    437 typedef typename GridImp::Traits::template Codim< 0 >::GeometryImpl GeometryImpl;
    \n-
    438
    \n-
    439 template<int, PartitionIteratorType, typename>
    \n-
    440 friend class YaspLevelIterator;
    \n-
    441
    \n-
    442 template<typename>
    \n-\n-
    444
    \n-
    445 public:
    \n-
    446 typedef typename GridImp::ctype ctype;
    \n-
    447
    \n-
    448 typedef typename GridImp::YGridLevelIterator YGLI;
    \n-
    449 typedef typename GridImp::YGrid::Iterator I;
    \n+
    437 // hide operator ->
    \n+
    438 void operator->();
    \n+
    439 protected:
    \n+
    \n+\n+
    441 {
    \n+
    442 if( git == gend )
    \n+
    443 return;
    \n+
    444 ++cornerIndexDune;
    \n+
    445 const int numCorners = git->subEntities(n);
    \n+
    446 if( cornerIndexDune == numCorners )
    \n+
    447 {
    \n+
    448 offset += numCorners;
    \n+
    449 cornerIndexDune = 0;
    \n
    450
    \n-
    451 typedef typename GridImp::template Codim< 0 >::Geometry Geometry;
    \n-
    452 typedef typename GridImp::template Codim< 0 >::LocalGeometry LocalGeometry;
    \n-
    453
    \n-
    454 template <int cd>
    \n-
    \n-
    455 struct Codim
    \n-
    456 {
    \n-
    457 typedef typename GridImp::template Codim<cd>::Entity Entity;
    \n-
    458 };
    \n-
    \n-
    459
    \n-
    460 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n-
    461 typedef typename GridImp::template Codim<0>::EntitySeed EntitySeed;
    \n-
    462 typedef typename GridImp::LevelIntersectionIterator IntersectionIterator;
    \n-
    463 typedef typename GridImp::LevelIntersectionIterator LevelIntersectionIterator;
    \n-
    464 typedef typename GridImp::LeafIntersectionIterator LeafIntersectionIterator;
    \n-
    465 typedef typename GridImp::HierarchicIterator HierarchicIterator;
    \n-
    466
    \n-
    468 typedef typename GridImp::PersistentIndexType PersistentIndexType;
    \n-
    469
    \n-
    471 typedef typename GridImp::YGrid::iTupel iTupel;
    \n-
    472
    \n-
    473 // constructor
    \n-
    \n-\n-
    475 {}
    \n-
    \n-
    476
    \n-
    \n-
    477 YaspEntity (const YGLI& g, const I& it)
    \n-
    478 : _it(it), _g(g)
    \n-
    479 {}
    \n-
    \n-
    480
    \n-
    \n-
    481 YaspEntity (const YGLI& g, I&& it)
    \n-
    482 : _it(std::move(it)), _g(g)
    \n-
    483 {}
    \n+
    451 ++git;
    \n+
    452 while( (git != gend) && skipEntity( git->partitionType() ) )
    \n+
    453 ++git;
    \n+
    454 }
    \n+
    455 }
    \n+
    \n+
    456 public:
    \n+
    \n+
    457 VertexIterator(const GridCellIterator & x,
    \n+
    458 const GridCellIterator & end,
    \n+
    459 const VTK::DataMode & dm,
    \n+
    460 const VertexMapper & vm) :
    \n+
    461 git(x), gend(end), datamode(dm), cornerIndexDune(0),
    \n+
    462 vertexmapper(vm), visited(vm.size(), false),
    \n+
    463 offset(0)
    \n+
    464 {
    \n+
    465 if (datamode == VTK::conforming && git != gend)
    \n+
    466 visited[vertexmapper.subIndex(*git,cornerIndexDune,n)] = true;
    \n+
    467 }
    \n+
    \n+
    \n+
    468 void increment ()
    \n+
    469 {
    \n+
    470 switch (datamode)
    \n+
    471 {
    \n+
    472 case VTK::conforming :
    \n+
    473 while(visited[vertexmapper.subIndex(*git,cornerIndexDune,n)])
    \n+
    474 {
    \n+\n+
    476 if (git == gend) return;
    \n+
    477 }
    \n+
    478 visited[vertexmapper.subIndex(*git,cornerIndexDune,n)] = true;
    \n+
    479 break;
    \n+
    480 case VTK::nonconforming :
    \n+\n+
    482 break;
    \n+
    483 }
    \n+
    484 }
    \n
    \n-
    484
    \n
    \n-
    485 YaspEntity (YGLI&& g, I&& it)
    \n-
    486 : _it(std::move(it)), _g(std::move(g))
    \n-
    487 {}
    \n-
    \n-
    488
    \n-
    \n-
    490 bool equals (const YaspEntity& e) const
    \n-
    491 {
    \n-
    492 return _it == e._it && _g == e._g;
    \n-
    493 }
    \n-
    \n-
    494
    \n-
    496 int level () const { return _g->level(); }
    \n-
    497
    \n+
    485 bool equals (const VertexIterator & cit) const
    \n+
    486 {
    \n+
    487 return git == cit.git
    \n+
    488 && cornerIndexDune == cit.cornerIndexDune
    \n+
    489 && datamode == cit.datamode;
    \n+
    490 }
    \n+
    \n+
    \n+
    491 EntityReference dereference() const
    \n+
    492 {
    \n+
    493 return *git;
    \n+
    494 }
    \n+
    \n+
    \n+
    496 int localindex () const
    \n+
    497 {
    \n+
    498 return cornerIndexDune;
    \n+
    499 }
    \n+
    \n
    \n-
    501 EntitySeed seed () const {
    \n-
    502 return EntitySeed(YaspEntitySeed<0,GridImp>(_g->level(), _it.coord()));
    \n-
    503 }
    \n-
    \n-
    504
    \n-
    \n-\n-
    507 {
    \n-
    508 if (_g->interior[0].inside(_it.coord(),_it.shift()))
    \n-
    509 return InteriorEntity;
    \n-
    510 if (_g->overlap[0].inside(_it.coord(),_it.shift()))
    \n-
    511 return OverlapEntity;
    \n-
    512 DUNE_THROW(GridError, "Impossible GhostEntity");
    \n-
    513 return GhostEntity;
    \n-
    514 }
    \n-
    \n-
    515
    \n-
    \n-\n-
    518 // the element geometry
    \n-
    519 auto ll = _it.lowerleft();
    \n-
    520 auto ur = _it.upperright();
    \n+
    501 FieldVector<DT,n> position () const
    \n+
    502 {
    \n+
    503 return referenceElement<DT,n>(git->type())
    \n+
    504 .position(cornerIndexDune,n);
    \n+
    505 }
    \n+
    \n+
    506 };
    \n+
    \n+
    507
    \n+
    \n+\n+
    509 {
    \n+
    510 return VertexIterator( gridView_.template begin< 0, VTK_Partition >(),
    \n+
    511 gridView_.template end< 0, VTK_Partition >(),
    \n+
    512 datamode, *vertexmapper );
    \n+
    513 }
    \n+
    \n+
    514
    \n+
    \n+\n+
    516 {
    \n+
    517 return VertexIterator( gridView_.template end< 0, VTK_Partition >(),
    \n+
    518 gridView_.template end< 0, VTK_Partition >(),
    \n+
    519 datamode, *vertexmapper );
    \n+
    520 }
    \n+
    \n
    521
    \n-
    522 // If on periodic overlap, transform coordinates by domain size
    \n-
    523 for (int i=0; i<dimworld; i++) {
    \n-
    524 if (gridlevel()->mg->isPeriodic(i)) {
    \n-
    525 int coord = transformingsubiterator().coord(i);
    \n-
    526 if (coord < 0) {
    \n-
    527 auto size = _g->mg->domainSize()[i];
    \n-
    528 ll[i] += size;
    \n-
    529 ur[i] += size;
    \n-
    530 } else if (coord + 1 > gridlevel()->mg->levelSize(gridlevel()->level(),i)) {
    \n-
    531 auto size = _g->mg->domainSize()[i];
    \n-
    532 ll[i] -= size;
    \n-
    533 ur[i] -= size;
    \n-
    534 }
    \n-
    535 }
    \n-
    536 }
    \n-
    537
    \n-
    538 GeometryImpl _geometry(ll,ur);
    \n-
    539 return Geometry( _geometry );
    \n-
    540 }
    \n-
    \n-
    541
    \n-
    \n-
    545 constexpr GeometryType type () const
    \n-
    546 {
    \n-
    547 return GeometryTypes::cube(Geometry::mydimension);
    \n-
    548 }
    \n-
    \n-
    549
    \n-
    \n-
    554 template<int cc> int count () const
    \n-
    555 {
    \n-
    556 return Dune::Yasp::subEnt<dim>(dim,cc);
    \n-
    557 }
    \n-
    \n-
    558
    \n-
    \n-
    563 unsigned int subEntities (unsigned int codim) const
    \n-
    564 {
    \n-
    565 return Dune::Yasp::subEnt<dim>(dim,codim);
    \n-
    566 }
    \n-
    \n-
    567
    \n-
    570 template<int cc>
    \n-
    \n-
    571 typename Codim<cc>::Entity subEntity (int i) const
    \n-
    572 {
    \n-
    573 // calculate move bitset
    \n-
    574 std::bitset<dim> move = Dune::Yasp::entityMove<dim>(i,cc);
    \n-
    575
    \n-
    576 // get the coordinate and modify it
    \n-
    577 iTupel coord = _it.coord();
    \n-
    578 for (int j=0; j<dim; j++)
    \n-
    579 if (move[j])
    \n-
    580 coord[j]++;
    \n-
    581
    \n-
    582 int which = _g->overlapfront[cc].shiftmapping(Dune::Yasp::entityShift<dim>(i,cc));
    \n-
    583 return typename Codim<cc>::Entity(YaspEntity<cc,GridImp::dimension,GridImp>(_g,_g->overlapfront[cc].begin(coord, which)));
    \n-
    584 }
    \n-
    \n-
    585
    \n-
    \n-
    587 Entity father () const
    \n-
    588 {
    \n-
    589 // check if coarse level exists
    \n-
    590 if (_g->level()<=0)
    \n-
    591 DUNE_THROW(GridError, "tried to call father on level 0");
    \n-
    592
    \n-
    593 // yes, get iterator to it
    \n-
    594 YGLI cg(_g);
    \n-
    595 --cg;
    \n-
    596
    \n-
    597 // coordinates of the cell
    \n-
    598 iTupel coord = _it.coord();
    \n-
    599
    \n-
    600 // get coordinates on next coarser level
    \n-
    601 for (int k=0; k<dim; k++) coord[k] = coord[k]/2;
    \n-
    602
    \n-
    603 return Entity(YaspEntity<0,GridImp::dimension,GridImp>(cg,cg->overlap[0].begin(coord)));
    \n-
    604 }
    \n-
    \n-
    605
    \n-
    \n-
    607 bool hasFather () const
    \n-
    608 {
    \n-
    609 return (_g->level()>0);
    \n-
    610 }
    \n-
    \n-
    611
    \n-
    \n-\n-
    615 {
    \n-
    616 // configure one of the 2^dim transformations
    \n-
    617 FieldVector<ctype,dim> ll(0.0),ur(0.5);
    \n-
    618
    \n-
    619 for (int k=0; k<dim; k++)
    \n-
    620 {
    \n-
    621 if (_it.coord(k)%2)
    \n-
    622 {
    \n-
    623 ll[k] = 0.5;
    \n-
    624 ur[k] = 1.0;
    \n-
    625 }
    \n-
    626 }
    \n-
    627
    \n-\n-
    629 }
    \n-
    \n-
    630
    \n-
    631 const I& transformingsubiterator () const { return _it; }
    \n-
    632 const YGLI& gridlevel () const { return _g; }
    \n-\n-
    634 YGLI& gridlevel() { return _g; }
    \n-
    635 const GridImp* yaspgrid () const { return _g->mg; }
    \n-
    636
    \n-
    \n-
    637 bool isLeaf() const
    \n-
    638 {
    \n-
    639 return (_g->level() == yaspgrid()->maxLevel());
    \n-
    640 }
    \n-
    \n-
    641
    \n-
    644 bool isNew () const { return yaspgrid()->adaptRefCount > 0 && yaspgrid()->maxLevel() < _g->level() + yaspgrid()->adaptRefCount; }
    \n-
    645
    \n-
    648 bool mightVanish () const { return false; }
    \n-
    649
    \n-
    \n-\n-
    652 {
    \n-
    653 return YaspIntersectionIterator<GridImp>(*this,false);
    \n-
    654 }
    \n-
    \n-
    655
    \n-
    \n-\n-
    658 {
    \n-
    659 // only if entity is leaf this iterator delivers intersections
    \n-
    660 return YaspIntersectionIterator<GridImp>(*this, ! isLeaf() );
    \n-
    661 }
    \n-
    \n-
    662
    \n-
    \n-\n-
    665 {
    \n-
    666 return ibegin();
    \n-
    667 }
    \n-
    \n-
    668
    \n-
    \n-\n-
    671 {
    \n-
    672 return YaspIntersectionIterator<GridImp>(*this,true);
    \n-
    673 }
    \n-
    \n-
    674
    \n-
    \n-\n-
    677 {
    \n-
    678 return iend();
    \n-
    679 }
    \n-
    \n-
    680
    \n-
    \n-\n-
    683 {
    \n-
    684 return iend();
    \n-
    685 }
    \n-
    \n-
    686
    \n-
    \n-
    691 HierarchicIterator hbegin (int maxlevel) const
    \n-
    692 {
    \n-
    693 return YaspHierarchicIterator<GridImp>(_g,_it,maxlevel);
    \n-
    694 }
    \n-
    \n-
    695
    \n-
    697 HierarchicIterator hend (int /* maxlevel */) const
    \n-
    698 {
    \n-
    699 return YaspHierarchicIterator<GridImp>(_g,_it,_g->level());
    \n-
    700 }
    \n-
    701
    \n-
    702 private:
    \n-
    703 // IndexSets needs access to the private index methods
    \n-
    704 friend class Dune::YaspIndexSet<GridImp,true>;
    \n-
    705 friend class Dune::YaspIndexSet<GridImp,false>;
    \n-
    706 friend class Dune::YaspGlobalIdSet<GridImp>;
    \n-
    707
    \n-\n-
    710 {
    \n-
    711 // encode codim
    \n-
    712 PersistentIndexType id(_it.shift().to_ulong());
    \n-
    713
    \n-
    714 // encode level
    \n-
    715 id = id << yaspgrid_level_bits;
    \n-
    716 id = id+PersistentIndexType(_g->level());
    \n+
    523
    \n+
    \n+\n+
    538 public ForwardIteratorFacade<CornerIterator, const Entity, EntityReference, int>
    \n+
    539 {
    \n+
    540 GridCellIterator git;
    \n+
    541 GridCellIterator gend;
    \n+
    542 VTK::DataMode datamode;
    \n+
    543 // Index of the currently visited corner within the current element.
    \n+
    544 // NOTE: this is in VTK-numbering, in contrast to VertexIterator.
    \n+
    545 int cornerIndexVTK;
    \n+
    546 const VertexMapper & vertexmapper;
    \n+
    547 // in conforming mode, for each vertex id (as obtained by vertexmapper)
    \n+
    548 // hold its number in the iteration order of VertexIterator (*not*
    \n+
    549 // CornerIterator)
    \n+
    550 const std::vector<int> & number;
    \n+
    551 // holds the number of corners of all the elements we have seen so far,
    \n+
    552 // excluding the current element
    \n+
    553 int offset;
    \n+
    554
    \n+
    555 // hide operator ->
    \n+
    556 void operator->();
    \n+
    557 public:
    \n+
    \n+
    558 CornerIterator(const GridCellIterator & x,
    \n+
    559 const GridCellIterator & end,
    \n+
    560 const VTK::DataMode & dm,
    \n+
    561 const VertexMapper & vm,
    \n+
    562 const std::vector<int> & num) :
    \n+
    563 git(x), gend(end), datamode(dm), cornerIndexVTK(0),
    \n+
    564 vertexmapper(vm),
    \n+
    565 number(num), offset(0) {}
    \n+
    \n+
    \n+
    566 void increment ()
    \n+
    567 {
    \n+
    568 if( git == gend )
    \n+
    569 return;
    \n+
    570 ++cornerIndexVTK;
    \n+
    571 const int numCorners = git->subEntities(n);
    \n+
    572 if( cornerIndexVTK == numCorners )
    \n+
    573 {
    \n+
    574 offset += numCorners;
    \n+
    575 cornerIndexVTK = 0;
    \n+
    576
    \n+
    577 ++git;
    \n+
    578 while( (git != gend) && skipEntity( git->partitionType() ) )
    \n+
    579 ++git;
    \n+
    580 }
    \n+
    581 }
    \n+
    \n+
    \n+
    582 bool equals (const CornerIterator & cit) const
    \n+
    583 {
    \n+
    584 return git == cit.git
    \n+
    585 && cornerIndexVTK == cit.cornerIndexVTK
    \n+
    586 && datamode == cit.datamode;
    \n+
    587 }
    \n+
    \n+
    \n+
    588 EntityReference dereference() const
    \n+
    589 {
    \n+
    590 return *git;
    \n+
    591 }
    \n+
    \n+
    593
    \n+
    \n+
    597 int id () const
    \n+
    598 {
    \n+
    599 switch (datamode)
    \n+
    600 {
    \n+
    601 case VTK::conforming :
    \n+
    602 return
    \n+
    603 number[vertexmapper.subIndex(*git,VTK::renumber(*git,cornerIndexVTK),
    \n+
    604 n)];
    \n+
    605 case VTK::nonconforming :
    \n+
    606 return offset + VTK::renumber(*git,cornerIndexVTK);
    \n+
    607 default :
    \n+
    608 DUNE_THROW(IOError,"VTKWriter: unsupported DataMode" << datamode);
    \n+
    609 }
    \n+
    610 }
    \n+
    \n+
    611 };
    \n+
    \n+
    612
    \n+
    \n+\n+
    614 {
    \n+
    615 return CornerIterator( gridView_.template begin< 0, VTK_Partition >(),
    \n+
    616 gridView_.template end< 0, VTK_Partition >(),
    \n+
    617 datamode, *vertexmapper, number );
    \n+
    618 }
    \n+
    \n+
    619
    \n+
    \n+\n+
    621 {
    \n+
    622 return CornerIterator( gridView_.template end< 0, VTK_Partition >(),
    \n+
    623 gridView_.template end< 0, VTK_Partition >(),
    \n+
    624 datamode, *vertexmapper, number );
    \n+
    625 }
    \n+
    \n+
    626
    \n+
    627 public:
    \n+
    \n+
    636 explicit VTKWriter ( const GridView &gridView,
    \n+\n+\n+
    639 : gridView_( gridView ),
    \n+
    640 datamode( dm ),
    \n+
    641 coordPrec (coordPrecision),
    \n+
    642 polyhedralCellsPresent_( checkForPolyhedralCells() )
    \n+
    643 { }
    \n+
    \n+
    644
    \n+
    \n+
    649 void addCellData (const std::shared_ptr< const VTKFunction > & p)
    \n+
    650 {
    \n+
    651 celldata.push_back(VTKLocalFunction(p));
    \n+
    652 }
    \n+
    \n+
    653
    \n+
    673 template<typename F>
    \n+
    \n+
    674 void addCellData(F&& f, VTK::FieldInfo vtkFieldInfo)
    \n+
    675 {
    \n+
    676 celldata.push_back(VTKLocalFunction(std::forward<F>(f),vtkFieldInfo));
    \n+
    677 }
    \n+
    \n+
    678
    \n+
    694 template<class Container>
    \n+
    \n+
    695 void addCellData (const Container& v, const std::string &name, int ncomps = 1,
    \n+\n+
    697 {
    \n+
    698 typedef P0VTKFunction<GridView, Container> Function;
    \n+
    699 for (int c=0; c<ncomps; ++c) {
    \n+
    700 std::stringstream compName;
    \n+
    701 compName << name;
    \n+
    702 if (ncomps>1)
    \n+
    703 compName << "[" << c << "]";
    \n+
    704 VTKFunction* p = new Function(gridView_, v, compName.str(), ncomps, c, prec);
    \n+
    705 addCellData(std::shared_ptr< const VTKFunction >(p));
    \n+
    706 }
    \n+
    707 }
    \n+
    \n+
    708
    \n+
    \n+
    713 void addVertexData (const std::shared_ptr< const VTKFunction > & p)
    \n+
    714 {
    \n+
    715 vertexdata.push_back(VTKLocalFunction(p));
    \n+
    716 }
    \n+
    \n
    717
    \n-
    718
    \n-
    719 // encode coordinates
    \n-
    720 for (int i=dim-1; i>=0; i--)
    \n-
    721 {
    \n-
    722 id = id << yaspgrid_dim_bits;
    \n-
    723 id = id+PersistentIndexType(_it.coord(i));
    \n-
    724 }
    \n-
    725
    \n-
    726 return id;
    \n-
    727 }
    \n-
    728
    \n-
    730 int compressedIndex () const
    \n-
    731 {
    \n-
    732 return _it.superindex();
    \n-
    733 }
    \n-
    734
    \n-
    736 PersistentIndexType subPersistentIndex (int i, int cc) const
    \n-
    737 {
    \n-
    738 // calculate shift and move bitsets
    \n-
    739 std::bitset<dim> shift = Dune::Yasp::entityShift<dim>(i,cc);
    \n-
    740 std::bitset<dim> move = Dune::Yasp::entityMove<dim>(i,cc);
    \n-
    741
    \n-
    742 int trailing = (cc == dim) ? 1000 : 0;
    \n+
    737 template<typename F>
    \n+
    \n+
    738 void addVertexData(F&& f, VTK::FieldInfo vtkFieldInfo)
    \n+
    739 {
    \n+
    740 vertexdata.push_back(VTKLocalFunction(std::forward<F>(f),vtkFieldInfo));
    \n+
    741 }
    \n+
    \n+
    742
    \n
    743
    \n-
    744 std::array<int,dim> size = _g->mg->levelSize(_g->level());
    \n-
    745 std::array<int, dim> coord = _it.coord();
    \n-
    746 for (int j=0; j<dim; j++)
    \n-
    747 {
    \n-
    748 // correct size according to shift
    \n-
    749 if (!shift[j])
    \n-
    750 size[j]++;
    \n-
    751
    \n-
    752 // move the coordinates to the cell on which the entity lives
    \n-
    753 if (move[j])
    \n-
    754 coord[j]++;
    \n-
    755 }
    \n-
    756
    \n-
    757 for (int j=0; j<dim; j++)
    \n-
    758 {
    \n-
    759 // in the codim==dim case, count trailing zeroes.
    \n-
    760 if (cc == dim)
    \n-
    761 {
    \n-
    762 int zeroes = 0;
    \n-
    763 for (int k=0; k<_g->level(); k++)
    \n-
    764 if (coord[j] & (1<<k))
    \n-
    765 break;
    \n-
    766 else
    \n-
    767 zeroes++;
    \n-
    768 trailing = std::min(trailing,zeroes);
    \n-
    769 }
    \n-
    770 }
    \n-
    771
    \n-
    772 // encode codim
    \n-
    773 PersistentIndexType id(shift.to_ulong());
    \n-
    774
    \n-
    775 // encode level
    \n-
    776 id = id << yaspgrid_level_bits;
    \n-
    777 id = id+PersistentIndexType(_g->level()-trailing);
    \n-
    778
    \n-
    779 // encode coordinates
    \n-
    780 for (int j=dim-1; j>=0; j--)
    \n-
    781 {
    \n-
    782 id = id << yaspgrid_dim_bits;
    \n-
    783 id = id+PersistentIndexType(coord[j]>>trailing);
    \n-
    784 }
    \n-
    785
    \n-
    786 return id;
    \n-
    787 }
    \n-
    788
    \n-
    790 int subCompressedIndex (int i, int cc) const
    \n-
    791 {
    \n-
    792 // get shift and move of the subentity in question
    \n-
    793 std::bitset<dim> shift = Dune::Yasp::entityShift<dim>(i,cc);
    \n-
    794 std::bitset<dim> move = Dune::Yasp::entityMove<dim>(i,cc);
    \n-
    795
    \n-
    796 std::array<int, dim> coord = _it.coord();
    \n-
    797 for (int j=0; j<dim; j++)
    \n-
    798 coord[j] += move[j];
    \n-
    799
    \n-
    800 int which = _g->overlapfront[cc].shiftmapping(shift);
    \n-
    801 return _g->overlapfront[cc].superindex(coord,which);
    \n-
    802 }
    \n-
    803
    \n-
    804 I _it = {}; // position in the grid level
    \n-
    805 YGLI _g = {}; // access to grid level
    \n-
    806 };
    \n+
    759 template<class Container>
    \n+
    \n+
    760 void addVertexData (const Container& v, const std::string &name, int ncomps=1,
    \n+\n+
    762 {
    \n+
    763 typedef P1VTKFunction<GridView, Container> Function;
    \n+
    764 for (int c=0; c<ncomps; ++c) {
    \n+
    765 std::stringstream compName;
    \n+
    766 compName << name;
    \n+
    767 if (ncomps>1)
    \n+
    768 compName << "[" << c << "]";
    \n+
    769 VTKFunction* p = new Function(gridView_, v, compName.str(), ncomps, c, prec);
    \n+
    770 addVertexData(std::shared_ptr< const VTKFunction >(p));
    \n+
    771 }
    \n+
    772 }
    \n+
    \n+
    773
    \n+
    \n+
    775 void clear ()
    \n+
    776 {
    \n+
    777 celldata.clear();
    \n+
    778 vertexdata.clear();
    \n+
    779 }
    \n+
    \n+
    780
    \n+
    \n+\n+
    783 { return coordPrec; }
    \n+
    \n+
    784
    \n+
    \n+
    786 virtual ~VTKWriter ()
    \n+
    787 {
    \n+
    788 this->clear();
    \n+
    789 }
    \n+
    \n+
    790
    \n+
    \n+
    803 std::string write ( const std::string &name,
    \n+\n+
    805 {
    \n+
    806 return write( name, type, gridView_.comm().rank(), gridView_.comm().size() );
    \n+
    807 }
    \n
    \n-
    807
    \n
    808
    \n-
    809 // specialization for codim=dim (vertex)
    \n-
    810 template<int dim, class GridImp>
    \n-
    \n-
    811 class YaspEntity<dim,dim,GridImp>
    \n-
    812 : public EntityDefaultImplementation <dim,dim,GridImp,YaspEntity>
    \n-
    813 {
    \n-
    814 constexpr static int dimworld = GridImp::dimensionworld;
    \n-
    815
    \n-
    816 template<int, PartitionIteratorType, typename>
    \n-
    817 friend class YaspLevelIterator;
    \n-
    818
    \n-
    819 typedef typename GridImp::Traits::template Codim<dim>::GeometryImpl GeometryImpl;
    \n-
    820
    \n-
    821 public:
    \n-
    822 typedef typename GridImp::ctype ctype;
    \n-
    823
    \n-
    824 typedef typename GridImp::YGridLevelIterator YGLI;
    \n-
    825 typedef typename GridImp::YGrid::Iterator I;
    \n-
    826
    \n-
    827 typedef typename GridImp::template Codim<dim>::Geometry Geometry;
    \n-
    828
    \n-
    829 typedef typename GridImp::template Codim<dim>::EntitySeed EntitySeed;
    \n-
    830
    \n-
    832 typedef typename GridImp::PersistentIndexType PersistentIndexType;
    \n-
    833
    \n-
    835 typedef typename GridImp::YGrid::iTupel iTupel;
    \n-
    836
    \n-
    837 // constructor
    \n-
    \n-\n-
    839 {}
    \n+
    \n+
    835 std::string pwrite ( const std::string & name, const std::string & path, const std::string & extendpath,
    \n+\n+
    837 {
    \n+
    838 return pwrite( name, path, extendpath, type, gridView_.comm().rank(), gridView_.comm().size() );
    \n+
    839 }
    \n
    \n
    840
    \n-
    \n-
    841 YaspEntity (const YGLI& g, const I& it)
    \n-
    842 : _it(it), _g(g)
    \n-
    843 {}
    \n-
    \n-
    844
    \n-
    \n-
    845 YaspEntity (YGLI&& g, I&& it)
    \n-
    846 : _it(std::move(it)), _g(std::move(g))
    \n-
    847 {}
    \n-
    \n-
    848
    \n-
    \n-
    850 bool equals (const YaspEntity& e) const
    \n-
    851 {
    \n-
    852 return _it == e._it && _g == e._g;
    \n-
    853 }
    \n-
    \n-
    854
    \n-
    856 int level () const {return _g->level();}
    \n-
    857
    \n-
    \n-
    861 EntitySeed seed () const {
    \n-
    862 return EntitySeed(YaspEntitySeed<dim,GridImp>(_g->level(), _it.coord(), _it.which()));
    \n-
    863 }
    \n-
    \n-
    864
    \n-
    \n-
    869 unsigned int subEntities (unsigned int cc) const
    \n-
    870 {
    \n-
    871 return Dune::Yasp::subEnt<dim>(dim-dim,cc-dim);
    \n-
    872 }
    \n-
    \n-
    873
    \n-
    \n-\n-
    876 GeometryImpl _geometry((_it).lowerleft());
    \n-
    877 return Geometry( _geometry );
    \n-
    878 }
    \n-
    \n-
    879
    \n-
    \n-
    883 constexpr GeometryType type () const
    \n-
    884 {
    \n-
    885 return GeometryTypes::cube(Geometry::mydimension);
    \n-
    886 }
    \n-
    \n-
    887
    \n-
    \n-\n-
    890 {
    \n-
    891 if (_g->interior[dim].inside(_it.coord(),_it.shift()))
    \n-
    892 return InteriorEntity;
    \n-
    893 if (_g->interiorborder[dim].inside(_it.coord(),_it.shift()))
    \n-
    894 return BorderEntity;
    \n-
    895 if (_g->overlap[dim].inside(_it.coord(),_it.shift()))
    \n-
    896 return OverlapEntity;
    \n-
    897 if (_g->overlapfront[dim].inside(_it.coord(),_it.shift()))
    \n-
    898 return FrontEntity;
    \n-
    899 return GhostEntity;
    \n-
    900 }
    \n-
    \n+
    841 protected:
    \n+
    843
    \n+
    \n+
    855 std::string getParallelPieceName(const std::string& name,
    \n+
    856 const std::string& path,
    \n+
    857 int commRank, int commSize) const
    \n+
    858 {
    \n+
    859 std::ostringstream s;
    \n+
    860 // write path first
    \n+
    861 if(path.size() > 0)
    \n+
    862 {
    \n+
    863 s << path;
    \n+
    864 if(path[path.size()-1] != '/')
    \n+
    865 s << '/';
    \n+
    866 }
    \n+
    867
    \n+
    868 std::string fileprefix;
    \n+
    869 // check if a path was already added to name
    \n+
    870 // and if yes find filename without path
    \n+
    871 auto pos = name.rfind('/');
    \n+
    872 if( pos != std::string::npos )
    \n+
    873 {
    \n+
    874 // extract filename without path
    \n+
    875 fileprefix = name.substr( pos+1 );
    \n+
    876 // extract the path and added it before
    \n+
    877 // the magic below is added
    \n+
    878 std::string newpath = name.substr(0, pos);
    \n+
    879 s << newpath;
    \n+
    880 if(newpath[name.size()-1] != '/')
    \n+
    881 s << '/';
    \n+
    882 }
    \n+
    883 else
    \n+
    884 {
    \n+
    885 // if no path was found just copy the name
    \n+
    886 fileprefix = name;
    \n+
    887 }
    \n+
    888
    \n+
    889 s << 's' << std::setw(4) << std::setfill('0') << commSize << '-';
    \n+
    890 const bool writeHeader = commRank < 0;
    \n+
    891 if( ! writeHeader )
    \n+
    892 {
    \n+
    893 s << 'p' << std::setw(4) << std::setfill('0') << commRank << '-';
    \n+
    894 }
    \n+
    895
    \n+
    896 s << fileprefix << ".";
    \n+
    897 // write p for header files
    \n+
    898 if( writeHeader )
    \n+
    899 s << "p";
    \n+
    900 s << "vt";
    \n
    901
    \n-
    903 int subCompressedIndex (int, unsigned int ) const
    \n-
    904 {
    \n-
    905 return compressedIndex();
    \n-
    906 }
    \n-
    907
    \n-
    908 private:
    \n-
    909 // IndexSets needs access to the private index methods
    \n-
    910 friend class Dune::YaspIndexSet<GridImp,true>;
    \n-
    911 friend class Dune::YaspIndexSet<GridImp,false>;
    \n-
    912 friend class Dune::YaspGlobalIdSet<GridImp>;
    \n-
    913
    \n-\n-
    916 {
    \n-
    917 // get coordinate and size of global grid
    \n-
    918 iTupel size = _g->mg->levelSize(_g->level());
    \n-
    919
    \n-
    920 for (int i=0; i<dim; i++)
    \n-
    921 {
    \n-
    922 // we have vertices, add 1 size to all directions
    \n-
    923 size[i]++;
    \n-
    924 }
    \n-
    925
    \n-
    926 // determine min number of trailing zeroes
    \n-
    927 int trailing = 1000;
    \n-
    928 for (int i=0; i<dim; i++)
    \n-
    929 {
    \n-
    930 // count trailing zeros
    \n-
    931 int zeros = 0;
    \n-
    932 for (int j=0; j<_g->level(); j++)
    \n-
    933 if (_it.coord(i)&(1<<j))
    \n-
    934 break;
    \n-
    935 else
    \n-
    936 zeros++;
    \n-
    937 trailing = std::min(trailing,zeros);
    \n-
    938 }
    \n-
    939
    \n-
    940 // determine the level of this vertex
    \n-
    941 int level = _g->level()-trailing;
    \n-
    942
    \n-
    943 // encode codim: shift vector of vertices is 0.
    \n-\n+
    902 if(GridView::dimension > 1)
    \n+
    903 s << "u";
    \n+
    904 else
    \n+
    905 s << "p";
    \n+
    906 return s.str();
    \n+
    907 }
    \n+
    \n+
    908
    \n+
    910
    \n+
    \n+
    920 std::string getParallelHeaderName(const std::string& name,
    \n+
    921 const std::string& path,
    \n+
    922 int commSize) const
    \n+
    923 {
    \n+
    924 return getParallelPieceName( name, path, -1, commSize );
    \n+
    925 }
    \n+
    \n+
    926
    \n+
    928
    \n+
    \n+
    940 std::string getSerialPieceName(const std::string& name,
    \n+
    941 const std::string& path) const
    \n+
    942 {
    \n+
    943 static const std::string extension =
    \n+
    944 GridView::dimension == 1 ? ".vtp" : ".vtu";
    \n
    945
    \n-
    946 // encode level
    \n-
    947 id = id << yaspgrid_level_bits;
    \n-
    948 id = id+PersistentIndexType(level);
    \n-
    949
    \n-
    950 // encode coordinates
    \n-
    951 for (int i=dim-1; i>=0; i--)
    \n-
    952 {
    \n-
    953 id = id << yaspgrid_dim_bits;
    \n-
    954 id = id+PersistentIndexType(_it.coord(i)>>trailing);
    \n-
    955 }
    \n-
    956
    \n-
    957 return id;
    \n-
    958 }
    \n-
    959
    \n-
    961 int compressedIndex () const { return _it.superindex();}
    \n-
    962
    \n-
    963 public:
    \n-
    964 const I& transformingsubiterator() const { return _it; }
    \n-
    965 const YGLI& gridlevel() const { return _g; }
    \n-\n-
    967 YGLI& gridlevel() { return _g; }
    \n-
    968
    \n-
    969 const GridImp * yaspgrid() const { return _g->mg; }
    \n-
    970 protected:
    \n-
    971 I _it = {}; // position in the grid level
    \n-
    972 YGLI _g = {}; // access to grid level
    \n-
    973 };
    \n+
    946 return concatPaths(path, name+extension);
    \n+
    947 }
    \n
    \n-
    974
    \n-
    975} // namespace Dune
    \n+
    948
    \n+
    \n+
    965 std::string write ( const std::string &name,
    \n+
    966 VTK::OutputType type,
    \n+
    967 const int commRank,
    \n+
    968 const int commSize )
    \n+
    969 {
    \n+
    970 // in the parallel case, just use pwrite, it has all the necessary
    \n+
    971 // stuff, so we don't need to reimplement it here.
    \n+
    972 if(commSize > 1)
    \n+
    973 {
    \n+
    974 std::string filename = name;
    \n+
    975 std::string path = std::string("");
    \n
    976
    \n-
    977#endif // DUNE_GRID_YASPGRIDENTITY_HH
    \n+
    977 // check if a path was already added to name
    \n+
    978 // and if yes find filename without path
    \n+
    979 auto pos = name.rfind('/');
    \n+
    980 if( pos != std::string::npos )
    \n+
    981 {
    \n+
    982 // extract filename without path
    \n+
    983 filename = name.substr( pos+1 );
    \n+
    984
    \n+
    985 // extract the path and added it before
    \n+
    986 // the magic below is added
    \n+
    987 path = name.substr(0, pos);
    \n+
    988 }
    \n+
    989
    \n+
    990 return pwrite(filename, path, "", type, commRank, commSize);
    \n+
    991 }
    \n+
    992
    \n+
    993 // make data mode visible to private functions
    \n+
    994 outputtype = type;
    \n+
    995
    \n+
    996 // generate filename for process data
    \n+
    997 std::string pieceName = getSerialPieceName(name, "");
    \n+
    998
    \n+
    999 // write process data
    \n+
    1000 std::ofstream file;
    \n+
    1001 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n+
    1002 std::ios_base::eofbit);
    \n+
    1003 // check if file can be opened
    \n+
    1004 try {
    \n+
    1005 file.open( pieceName.c_str(), std::ios::binary );
    \n+
    1006 }
    \n+
    1007 catch(...) {
    \n+
    1008 std::cerr << "Filename: " << pieceName << " could not be opened" << std::endl;
    \n+
    1009 throw;
    \n+
    1010 }
    \n+
    1011 if (! file.is_open())
    \n+
    1012 DUNE_THROW(IOError, "Could not write to piece file " << pieceName);
    \n+
    1013 writeDataFile( file );
    \n+
    1014 file.close();
    \n+
    1015
    \n+
    1016 return pieceName;
    \n+
    1017 }
    \n+
    \n+
    1018
    \n+
    1020
    \n+
    \n+
    1043 std::string pwrite(const std::string& name, const std::string& path,
    \n+
    1044 const std::string& extendpath,
    \n+
    1045 VTK::OutputType ot, const int commRank,
    \n+
    1046 const int commSize )
    \n+
    1047 {
    \n+
    1048 // make data mode visible to private functions
    \n+
    1049 outputtype=ot;
    \n+
    1050
    \n+
    1051 // do some magic because paraview can only cope with relative paths to piece files
    \n+
    1052 std::ofstream file;
    \n+
    1053 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n+
    1054 std::ios_base::eofbit);
    \n+
    1055 std::string piecepath = concatPaths(path, extendpath);
    \n+
    1056 std::string relpiecepath = relativePath(path, piecepath);
    \n+
    1057
    \n+
    1058 // write this processes .vtu/.vtp piece file
    \n+
    1059 std::string fullname = getParallelPieceName(name, piecepath, commRank,
    \n+
    1060 commSize);
    \n+
    1061 // check if file can be opened
    \n+
    1062 try {
    \n+
    1063 file.open(fullname.c_str(),std::ios::binary);
    \n+
    1064 }
    \n+
    1065 catch(...) {
    \n+
    1066 std::cerr << "Filename: " << fullname << " could not be opened" << std::endl;
    \n+
    1067 throw;
    \n+
    1068 }
    \n+
    1069 if (! file.is_open())
    \n+
    1070 DUNE_THROW(IOError, "Could not write to piecefile file " << fullname);
    \n+
    1071 writeDataFile(file);
    \n+
    1072 file.close();
    \n+
    1073 gridView_.comm().barrier();
    \n+
    1074
    \n+
    1075 // if we are rank 0, write .pvtu/.pvtp parallel header
    \n+
    1076 fullname = getParallelHeaderName(name, path, commSize);
    \n+
    1077 if( commRank ==0 )
    \n+
    1078 {
    \n+
    1079 file.open(fullname.c_str());
    \n+
    1080 if (! file.is_open())
    \n+
    1081 DUNE_THROW(IOError, "Could not write to parallel file " << fullname);
    \n+
    1082 writeParallelHeader(file,name,relpiecepath, commSize );
    \n+
    1083 file.close();
    \n+
    1084 }
    \n+
    1085 gridView_.comm().barrier();
    \n+
    1086 return fullname;
    \n+
    1087 }
    \n+
    \n+
    1088
    \n+
    1089 private:
    \n+
    1091
    \n+
    1108 void writeParallelHeader(std::ostream& s, const std::string& piecename,
    \n+
    1109 const std::string& piecepath, const int commSize)
    \n+
    1110 {
    \n+
    1111 VTK::FileType fileType =
    \n+
    1112 (n == 1) ? VTK::polyData : VTK::unstructuredGrid;
    \n+
    1113
    \n+
    1114 VTK::PVTUWriter writer(s, fileType);
    \n+
    1115
    \n+
    1116 writer.beginMain();
    \n+
    1117
    \n+
    1118 // PPointData
    \n+
    1119 {
    \n+
    1120 std::string scalars, vectors;
    \n+
    1121 std::tie(scalars,vectors) = getDataNames(vertexdata);
    \n+
    1122 writer.beginPointData(scalars, vectors);
    \n+
    1123 }
    \n+
    1124 for (auto it = vertexdata.begin(),
    \n+
    1125 end = vertexdata.end();
    \n+
    1126 it != end;
    \n+
    1127 ++it)
    \n+
    1128 {
    \n+
    1129 unsigned writecomps = it->fieldInfo().size();
    \n+
    1130 if(writecomps == 2) writecomps = 3;
    \n+
    1131 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());
    \n+
    1132 }
    \n+
    1133 writer.endPointData();
    \n+
    1134
    \n+
    1135 // PCellData
    \n+
    1136 {
    \n+
    1137 std::string scalars, vectors;
    \n+
    1138 std::tie(scalars,vectors) = getDataNames(celldata);
    \n+
    1139 writer.beginCellData(scalars, vectors);
    \n+
    1140 }
    \n+
    1141 for (auto it = celldata.begin(),
    \n+
    1142 end = celldata.end();
    \n+
    1143 it != end;
    \n+
    1144 ++it)
    \n+
    1145 {
    \n+
    1146 unsigned writecomps = it->fieldInfo().size();
    \n+
    1147 if(writecomps == 2) writecomps = 3;
    \n+
    1148 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());
    \n+
    1149 }
    \n+
    1150 writer.endCellData();
    \n+
    1151
    \n+
    1152 // PPoints
    \n+
    1153 writer.beginPoints();
    \n+
    1154 writer.addArray("Coordinates", 3, coordPrec);
    \n+
    1155 writer.endPoints();
    \n+
    1156
    \n+
    1157 // Pieces
    \n+
    1158 for( int i = 0; i < commSize; ++i )
    \n+
    1159 {
    \n+
    1160 const std::string& fullname = getParallelPieceName(piecename,
    \n+
    1161 piecepath, i,
    \n+
    1162 commSize);
    \n+
    1163 writer.addPiece(fullname);
    \n+
    1164 }
    \n+
    1165
    \n+
    1166 writer.endMain();
    \n+
    1167 }
    \n+
    1168
    \n+
    1170 void writeDataFile (std::ostream& s)
    \n+
    1171 {
    \n+
    1172 VTK::FileType fileType =
    \n+
    1173 (n == 1) ? VTK::polyData : VTK::unstructuredGrid;
    \n+
    1174
    \n+
    1175 VTK::VTUWriter writer(s, outputtype, fileType);
    \n+
    1176
    \n+
    1177 // Grid characteristics
    \n+
    1178 vertexmapper = new VertexMapper( gridView_, mcmgVertexLayout() );
    \n+
    1179 if (datamode == VTK::conforming)
    \n+
    1180 {
    \n+
    1181 number.resize(vertexmapper->size());
    \n+
    1182 for (std::vector<int>::size_type i=0; i<number.size(); i++) number[i] = -1;
    \n+
    1183 }
    \n+\n+
    1185
    \n+
    1186 writer.beginMain(ncells, nvertices);
    \n+
    1187 writeAllData(writer);
    \n+
    1188 writer.endMain();
    \n+
    1189
    \n+
    1190 // write appended binary data section
    \n+
    1191 if(writer.beginAppended())
    \n+
    1192 writeAllData(writer);
    \n+
    1193 writer.endAppended();
    \n+
    1194
    \n+
    1195 delete vertexmapper; number.clear();
    \n+
    1196 }
    \n+
    1197
    \n+
    1198 void writeAllData(VTK::VTUWriter& writer) {
    \n+
    1199 // PointData
    \n+
    1200 writeVertexData(writer);
    \n+
    1201
    \n+
    1202 // CellData
    \n+
    1203 writeCellData(writer);
    \n+
    1204
    \n+
    1205 // Points
    \n+
    1206 writeGridPoints(writer);
    \n+
    1207
    \n+
    1208 // Cells
    \n+
    1209 writeGridCells(writer);
    \n+
    1210 }
    \n+
    1211
    \n+
    1212 protected:
    \n+
    \n+
    1213 std::string getFormatString() const
    \n+
    1214 {
    \n+\n+
    1216 return "ascii";
    \n+\n+
    1218 return "binary";
    \n+\n+
    1220 return "appended";
    \n+\n+
    1222 return "appended";
    \n+
    1223 DUNE_THROW(IOError, "VTKWriter: unsupported OutputType" << outputtype);
    \n+
    1224 }
    \n+
    \n+
    1225
    \n+
    \n+
    1226 std::string getTypeString() const
    \n+
    1227 {
    \n+
    1228 if (n==1)
    \n+
    1229 return "PolyData";
    \n+
    1230 else
    \n+
    1231 return "UnstructuredGrid";
    \n+
    1232 }
    \n+
    \n+
    1233
    \n+
    \n+
    1235 virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    \n+
    1236 {
    \n+
    1237 nvertices_ = 0;
    \n+
    1238 ncells_ = 0;
    \n+
    1239 ncorners_ = 0;
    \n+
    1240 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n+
    1241 {
    \n+
    1242 ncells_++;
    \n+
    1243 // because of the use of vertexmapper->map(), this iteration must be
    \n+
    1244 // in the order of Dune's numbering.
    \n+
    1245 const int subEntities = it->subEntities(n);
    \n+
    1246 for (int i=0; i<subEntities; ++i)
    \n+
    1247 {
    \n+
    1248 ncorners_++;
    \n+
    1249 if (datamode == VTK::conforming)
    \n+
    1250 {
    \n+
    1251 int alpha = vertexmapper->subIndex(*it,i,n);
    \n+
    1252 if (number[alpha]<0)
    \n+
    1253 number[alpha] = nvertices_++;
    \n+
    1254 }
    \n+
    1255 else
    \n+
    1256 {
    \n+
    1257 nvertices_++;
    \n+
    1258 }
    \n+
    1259 }
    \n+
    1260 }
    \n+
    1261 }
    \n+
    \n+
    1262
    \n+
    1263 template<typename T>
    \n+
    \n+
    1264 std::tuple<std::string,std::string> getDataNames(const T& data) const
    \n+
    1265 {
    \n+
    1266 std::string scalars = "";
    \n+
    1267 for (auto it = data.begin(),
    \n+
    1268 end = data.end();
    \n+
    1269 it != end;
    \n+
    1270 ++it)
    \n+
    1271 if (it->fieldInfo().type() == VTK::FieldInfo::Type::scalar)
    \n+
    1272 {
    \n+
    1273 scalars = it->name();
    \n+
    1274 break;
    \n+
    1275 }
    \n+
    1276
    \n+
    1277 std::string vectors = "";
    \n+
    1278 for (auto it = data.begin(),
    \n+
    1279 end = data.end();
    \n+
    1280 it != end;
    \n+
    1281 ++it)
    \n+
    1282 if (it->fieldInfo().type() == VTK::FieldInfo::Type::vector)
    \n+
    1283 {
    \n+
    1284 vectors = it->name();
    \n+
    1285 break;
    \n+
    1286 }
    \n+
    1287 return std::make_tuple(scalars,vectors);
    \n+
    1288 }
    \n+
    \n+
    1289
    \n+
    1290 template<typename Data, typename Iterator>
    \n+
    \n+
    1291 void writeData(VTK::VTUWriter& writer, const Data& data, const Iterator begin, const Iterator end, int nentries)
    \n+
    1292 {
    \n+
    1293 for (auto it = data.begin(),
    \n+
    1294 iend = data.end();
    \n+
    1295 it != iend;
    \n+
    1296 ++it)
    \n+
    1297 {
    \n+
    1298 const auto& f = *it;
    \n+
    1299 VTK::FieldInfo fieldInfo = f.fieldInfo();
    \n+
    1300 std::size_t writecomps = fieldInfo.size();
    \n+
    1301 switch (fieldInfo.type())
    \n+
    1302 {
    \n+\n+
    1304 break;
    \n+\n+
    1306 // vtk file format: a vector data always should have 3 comps (with
    \n+
    1307 // 3rd comp = 0 in 2D case)
    \n+
    1308 if (writecomps > 3)
    \n+
    1309 DUNE_THROW(IOError,"Cannot write VTK vectors with more than 3 components (components was " << writecomps << ")");
    \n+
    1310 writecomps = 3;
    \n+
    1311 break;
    \n+\n+
    1313 DUNE_THROW(NotImplemented,"VTK output for tensors not implemented yet");
    \n+
    1314 }
    \n+
    1315 std::shared_ptr<VTK::DataArrayWriter> p
    \n+
    1316 (writer.makeArrayWriter(f.name(), writecomps, nentries, fieldInfo.precision()));
    \n+
    1317 if(!p->writeIsNoop())
    \n+
    1318 for (Iterator eit = begin; eit!=end; ++eit)
    \n+
    1319 {
    \n+
    1320 const Entity & e = *eit;
    \n+
    1321 f.bind(e);
    \n+
    1322 f.write(eit.position(),*p);
    \n+
    1323 f.unbind();
    \n+
    1324 // vtk file format: a vector data always should have 3 comps
    \n+
    1325 // (with 3rd comp = 0 in 2D case)
    \n+
    1326 for (std::size_t j=fieldInfo.size(); j < writecomps; ++j)
    \n+
    1327 p->write(0.0);
    \n+
    1328 }
    \n+
    1329 }
    \n+
    1330 }
    \n+
    \n+
    1331
    \n+
    \n+
    1333 virtual void writeCellData(VTK::VTUWriter& writer)
    \n+
    1334 {
    \n+
    1335 if(celldata.size() == 0)
    \n+
    1336 return;
    \n+
    1337
    \n+
    1338 std::string scalars, vectors;
    \n+
    1339 std::tie(scalars,vectors) = getDataNames(celldata);
    \n+
    1340
    \n+
    1341 writer.beginCellData(scalars, vectors);
    \n+\n+
    1343 writer.endCellData();
    \n+
    1344 }
    \n+
    \n+
    1345
    \n+
    \n+
    1347 virtual void writeVertexData(VTK::VTUWriter& writer)
    \n+
    1348 {
    \n+
    1349 if(vertexdata.size() == 0)
    \n+
    1350 return;
    \n+
    1351
    \n+
    1352 std::string scalars, vectors;
    \n+
    1353 std::tie(scalars,vectors) = getDataNames(vertexdata);
    \n+
    1354
    \n+
    1355 writer.beginPointData(scalars, vectors);
    \n+\n+
    1357 writer.endPointData();
    \n+
    1358 }
    \n+
    \n+
    1359
    \n+
    \n+
    1361 virtual void writeGridPoints(VTK::VTUWriter& writer)
    \n+
    1362 {
    \n+
    1363 writer.beginPoints();
    \n+
    1364
    \n+
    1365 std::shared_ptr<VTK::DataArrayWriter> p
    \n+
    1366 (writer.makeArrayWriter("Coordinates", 3, nvertices, coordPrec));
    \n+
    1367 if(!p->writeIsNoop()) {
    \n+
    1368 VertexIterator vEnd = vertexEnd();
    \n+
    1369 for (VertexIterator vit=vertexBegin(); vit!=vEnd; ++vit)
    \n+
    1370 {
    \n+
    1371 int dimw=w;
    \n+
    1372 for (int j=0; j<std::min(dimw,3); j++)
    \n+
    1373 p->write((*vit).geometry().corner(vit.localindex())[j]);
    \n+
    1374 for (int j=std::min(dimw,3); j<3; j++)
    \n+
    1375 p->write(0.0);
    \n+
    1376 }
    \n+
    1377 }
    \n+
    1378 // free the VTK::DataArrayWriter before touching the stream
    \n+
    1379 p.reset();
    \n+
    1380
    \n+
    1381 writer.endPoints();
    \n+
    1382 }
    \n+
    \n+
    1383
    \n+
    \n+
    1385 virtual void writeGridCells(VTK::VTUWriter& writer)
    \n+
    1386 {
    \n+
    1387 writer.beginCells();
    \n+
    1388
    \n+
    1389 // connectivity
    \n+
    1390 {
    \n+
    1391 std::shared_ptr<VTK::DataArrayWriter> p1
    \n+
    1392 (writer.makeArrayWriter("connectivity", 1, ncorners, VTK::Precision::int32));
    \n+
    1393 if(!p1->writeIsNoop())
    \n+
    1394 for (CornerIterator it=cornerBegin(); it!=cornerEnd(); ++it)
    \n+
    1395 p1->write(it.id());
    \n+
    1396 }
    \n+
    1397
    \n+
    1398 // offsets
    \n+
    1399 {
    \n+
    1400 std::shared_ptr<VTK::DataArrayWriter> p2
    \n+
    1401 (writer.makeArrayWriter("offsets", 1, ncells, VTK::Precision::int32));
    \n+
    1402 if(!p2->writeIsNoop()) {
    \n+
    1403 int offset = 0;
    \n+
    1404 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n+
    1405 {
    \n+
    1406 offset += it->subEntities(n);
    \n+
    1407 p2->write(offset);
    \n+
    1408 }
    \n+
    1409 }
    \n+
    1410 }
    \n+
    1411
    \n+
    1412 // types
    \n+
    1413 if (n>1)
    \n+
    1414 {
    \n+
    1415 {
    \n+
    1416 std::shared_ptr<VTK::DataArrayWriter> p3
    \n+
    1417 (writer.makeArrayWriter("types", 1, ncells, VTK::Precision::uint8));
    \n+
    1418
    \n+
    1419 if(!p3->writeIsNoop())
    \n+
    1420 {
    \n+
    1421 for (CellIterator it=cellBegin(); it!=cellEnd(); ++it)
    \n+
    1422 {
    \n+
    1423 int vtktype = VTK::geometryType(it->type());
    \n+
    1424 p3->write(vtktype);
    \n+
    1425 }
    \n+
    1426 }
    \n+
    1427 }
    \n+
    1428
    \n+
    1429
    \n+
    1430 // if polyhedron cells found also cell faces need to be written
    \n+
    1431 if( polyhedralCellsPresent_ )
    \n+
    1432 {
    \n+
    1433 writeCellFaces( writer );
    \n+
    1434 }
    \n+
    1435 }
    \n+
    1436
    \n+
    1437 writer.endCells();
    \n+
    1438 }
    \n+
    \n+
    1439
    \n+
    1440 protected:
    \n+
    \n+\n+
    1442 {
    \n+
    1443 // check if polyhedron cells are present
    \n+
    1444 for( const auto& geomType : gridView_.indexSet().types( 0 ) )
    \n+
    1445 {
    \n+
    1446 if( VTK::geometryType( geomType ) == VTK::polyhedron )
    \n+
    1447 {
    \n+
    1448 return true;
    \n+
    1449 }
    \n+
    1450 }
    \n+
    1451 return false;
    \n+
    1452 }
    \n+
    \n+
    1453
    \n+
    \n+
    1455 virtual void writeCellFaces(VTK::VTUWriter& writer)
    \n+
    1456 {
    \n+
    1457 if( ! faceVertices_ )
    \n+
    1458 {
    \n+
    1459 faceVertices_.reset( new std::pair< std::vector<int>, std::vector<int> > () );
    \n+
    1460 // fill face vertex structure
    \n+\n+
    1462 faceVertices_->first, faceVertices_->second );
    \n+
    1463 }
    \n+
    1464
    \n+
    1465 std::vector< int >& faces = faceVertices_->first;
    \n+
    1466 std::vector< int >& faceOffsets = faceVertices_->second;
    \n+
    1467 assert( int(faceOffsets.size()) == ncells );
    \n+
    1468
    \n+
    1469 {
    \n+
    1470 std::shared_ptr<VTK::DataArrayWriter> p4
    \n+
    1471 (writer.makeArrayWriter("faces", 1, faces.size(), VTK::Precision::int32));
    \n+
    1472 if(!p4->writeIsNoop())
    \n+
    1473 {
    \n+
    1474 for( const auto& face : faces )
    \n+
    1475 p4->write( face );
    \n+
    1476 }
    \n+
    1477 }
    \n+
    1478
    \n+
    1479 {
    \n+
    1480 std::shared_ptr<VTK::DataArrayWriter> p5
    \n+
    1481 (writer.makeArrayWriter("faceoffsets", 1, ncells, VTK::Precision::int32));
    \n+
    1482 if(!p5->writeIsNoop())
    \n+
    1483 {
    \n+
    1484 for( const auto& offset : faceOffsets )
    \n+
    1485 p5->write( offset );
    \n+
    1486
    \n+
    1487 // clear face vertex structure
    \n+
    1488 faceVertices_.reset();
    \n+
    1489 }
    \n+
    1490 }
    \n+
    1491 }
    \n+
    \n+
    1492
    \n+
    1493 template <class CornerIterator, class IndexSet, class T>
    \n+
    \n+\n+
    1495 const CornerIterator end,
    \n+
    1496 const IndexSet& indexSet,
    \n+
    1497 std::vector<T>& faces,
    \n+
    1498 std::vector<T>& faceOffsets )
    \n+
    1499 {
    \n+
    1500 if( n == 3 && it != end )
    \n+
    1501 {
    \n+
    1502 // clear output arrays
    \n+
    1503 faces.clear();
    \n+
    1504 faces.reserve( 15 * ncells );
    \n+
    1505 faceOffsets.clear();
    \n+
    1506 faceOffsets.reserve( ncells );
    \n+
    1507
    \n+
    1508 int offset = 0;
    \n+
    1509
    \n+
    1510 Cell element = *it;
    \n+
    1511 int elIndex = indexSet.index( element );
    \n+
    1512 std::vector< T > vertices;
    \n+
    1513 vertices.reserve( 30 );
    \n+
    1514 for( ; it != end; ++it )
    \n+
    1515 {
    \n+
    1516 const Cell& cell = *it ;
    \n+
    1517 const int cellIndex = indexSet.index( cell ) ;
    \n+
    1518 if( elIndex != cellIndex )
    \n+
    1519 {
    \n+
    1520 fillFacesForElement( element, indexSet, vertices, offset, faces, faceOffsets );
    \n+
    1521
    \n+
    1522 vertices.clear();
    \n+
    1523 element = cell ;
    \n+
    1524 elIndex = cellIndex ;
    \n+
    1525 }
    \n+
    1526 vertices.push_back( it.id() );
    \n+
    1527 }
    \n+
    1528
    \n+
    1529 // fill faces for last element
    \n+
    1530 fillFacesForElement( element, indexSet, vertices, offset, faces, faceOffsets );
    \n+
    1531 }
    \n+
    1532 }
    \n+
    \n+
    1533
    \n+
    1534 template <class Entity, class IndexSet, class T>
    \n+
    \n+
    1535 static void fillFacesForElement( const Entity& element,
    \n+
    1536 const IndexSet& indexSet,
    \n+
    1537 const std::vector<T>& vertices,
    \n+
    1538 T& offset,
    \n+
    1539 std::vector<T>& faces,
    \n+
    1540 std::vector<T>& faceOffsets )
    \n+
    1541 {
    \n+
    1542 const int dim = n;
    \n+
    1543
    \n+
    1544 std::map< T, T > vxMap;
    \n+
    1545
    \n+
    1546 // get number of local faces
    \n+
    1547 const int nVertices = element.subEntities( dim );
    \n+
    1548 for( int vx = 0; vx < nVertices; ++ vx )
    \n+
    1549 {
    \n+
    1550 const int vxIdx = indexSet.subIndex( element, vx, dim );
    \n+
    1551 vxMap[ vxIdx ] = vertices[ vx ];
    \n+
    1552 }
    \n+
    1553
    \n+
    1554 // get number of local faces
    \n+
    1555 const int nFaces = element.subEntities( 1 );
    \n+
    1556 // store number of faces for current element
    \n+
    1557 faces.push_back( nFaces );
    \n+
    1558 ++offset;
    \n+
    1559 // extract each face as a set of vertex indices
    \n+
    1560 for( int fce = 0; fce < nFaces; ++ fce )
    \n+
    1561 {
    \n+
    1562 // obtain face
    \n+
    1563 const auto face = element.template subEntity< 1 > ( fce );
    \n+
    1564
    \n+
    1565 // get all vertex indices from current face
    \n+
    1566 const int nVxFace = face.subEntities( dim );
    \n+
    1567 faces.push_back( nVxFace );
    \n+
    1568 ++offset ;
    \n+
    1569 for( int i=0; i<nVxFace; ++i )
    \n+
    1570 {
    \n+
    1571 const T vxIndex = indexSet.subIndex( face, i, dim );
    \n+
    1572 assert( vxMap.find( vxIndex ) != vxMap.end() );
    \n+
    1573 faces.push_back( vxMap[ vxIndex ] );
    \n+
    1574 ++offset ;
    \n+
    1575 }
    \n+
    1576 }
    \n+
    1577
    \n+
    1578 // store face offset for each element
    \n+
    1579 faceOffsets.push_back( offset );
    \n+
    1580 }
    \n+
    \n+
    1581
    \n+
    1582 protected:
    \n+
    1583 // the list of registered functions
    \n+
    1584 std::list<VTKLocalFunction> celldata;
    \n+
    1585 std::list<VTKLocalFunction> vertexdata;
    \n+
    1586
    \n+
    1587 // the grid
    \n+\n+
    1589
    \n+
    1590 // temporary grid information
    \n+\n+\n+\n+
    1594 private:
    \n+
    1595 VertexMapper* vertexmapper;
    \n+
    1596 // in conforming mode, for each vertex id (as obtained by vertexmapper)
    \n+
    1597 // hold its number in the iteration order (VertexIterator)
    \n+
    1598 std::vector<int> number;
    \n+
    1599 VTK::DataMode datamode;
    \n+
    1600 VTK::Precision coordPrec;
    \n+
    1601
    \n+
    1602 // true if polyhedral cells are present in the grid
    \n+
    1603 const bool polyhedralCellsPresent_;
    \n+
    1604
    \n+
    1605 // pointer holding face vertex connectivity if needed
    \n+
    1606 std::shared_ptr< std::pair< std::vector<int>, std::vector<int> > > faceVertices_;
    \n+
    1607
    \n+
    1608 protected:
    \n+\n+
    1610 };
    \n+
    \n+
    1611
    \n+
    1612}
    \n+
    1613
    \n+
    1614#endif
    \n+
    Mapper for multiple codim and multiple geometry types.
    \n+\n+
    Data array writers for the VTKWriter.
    \n+\n+\n+
    Common stuff for the VTKWriter.
    \n+\n+
    Functions for VTK output.
    \n+
    PartitionIteratorType
    Parameter to be used for the parallel level- and leaf iterators.
    Definition gridenums.hh:136
    \n
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n-
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n+
    @ All_Partition
    all entities
    Definition gridenums.hh:141
    \n+
    @ InteriorBorder_Partition
    interior and border entities
    Definition gridenums.hh:138
    \n
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n-
    @ GhostEntity
    ghost entities
    Definition gridenums.hh:35
    \n-
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n-
    @ OverlapEntity
    all entities lying in the overlap zone
    Definition gridenums.hh:33
    \n+
    const IndexSet & indexSet() const
    obtain the index set
    Definition common/gridview.hh:191
    \n+
    Traits::Grid Grid
    type of the grid
    Definition common/gridview.hh:83
    \n+
    Traits::IndexSet IndexSet
    type of the index set
    Definition common/gridview.hh:86
    \n+
    const Communication & comm() const
    obtain communication object
    Definition common/gridview.hh:280
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n+
    Grid::ctype ctype
    type used for coordinates in grid
    Definition common/gridview.hh:145
    \n+
    static constexpr int dimensionworld
    The dimension of the world the grid lives in.
    Definition common/gridview.hh:151
    \n+
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n
    STL namespace.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    const int yaspgrid_level_bits
    Definition yaspgrid.hh:48
    \n-
    const int yaspgrid_dim_bits
    Definition yaspgrid.hh:47
    \n-
    Default Implementations for EntityImp.
    Definition common/entity.hh:542
    \n-
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n-
    static constexpr int mydimension
    geometry dimension
    Definition common/geometry.hh:94
    \n-
    The general version that handles all codimensions but 0 and dim.
    Definition yaspgridgeometry.hh:31
    \n-
    Definition yaspgridentity.hh:268
    \n-
    int level() const
    level of this element
    Definition yaspgridentity.hh:282
    \n-
    Geometry geometry() const
    geometry of this entity
    Definition yaspgridentity.hh:296
    \n-
    GridImp::ctype ctype
    Definition yaspgridentity.hh:274
    \n-
    constexpr GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition yaspgridentity.hh:305
    \n-
    PersistentIndexType persistentIndex() const
    globally unique, persistent index
    Definition yaspgridentity.hh:359
    \n-
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:420
    \n-
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:419
    \n-
    YGLI _g
    Definition yaspgridentity.hh:426
    \n-
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:347
    \n-
    PartitionType partitionType() const
    return partition type attribute
    Definition yaspgridentity.hh:320
    \n-
    GridImp::Traits::template Codim< codim >::GeometryImpl GeometryImpl
    Definition yaspgridentity.hh:277
    \n-
    YGLI & gridlevel()
    Definition yaspgridentity.hh:422
    \n-
    int subCompressedIndex(int i, unsigned int cc) const
    subentity compressed index
    Definition yaspgridentity.hh:396
    \n-
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridentity.hh:333
    \n-
    GridImp::YGrid::Iterator I
    Definition yaspgridentity.hh:334
    \n-
    const GridImp * yaspgrid() const
    Definition yaspgridentity.hh:423
    \n-
    GridImp::template Codim< codim >::EntitySeed EntitySeed
    Definition yaspgridentity.hh:279
    \n-
    YaspEntity(YGLI &&g, const I &&it)
    Definition yaspgridentity.hh:342
    \n-
    EntitySeed seed() const
    Return the entity seed which contains sufficient information to generate the entity again and uses as...
    Definition yaspgridentity.hh:290
    \n-
    int compressedIndex() const
    consecutive, codim-wise, level-wise index
    Definition yaspgridentity.hh:390
    \n-
    YaspEntity(const YGLI &g, const I &it)
    Definition yaspgridentity.hh:338
    \n-
    I _it
    Definition yaspgridentity.hh:425
    \n-
    YaspEntity()
    Definition yaspgridentity.hh:335
    \n-
    GridImp::template Codim< codim >::Geometry Geometry
    Definition yaspgridentity.hh:276
    \n-
    GridImp::PersistentIndexType PersistentIndexType
    Definition yaspgridentity.hh:356
    \n-
    unsigned int subEntities(unsigned int cc) const
    Definition yaspgridentity.hh:314
    \n-
    I & transformingsubiterator()
    Definition yaspgridentity.hh:421
    \n-
    Describes the minimal information necessary to create a fully functional YaspEntity.
    Definition yaspgridentityseed.hh:18
    \n-
    Iterates over entities of one grid level.
    Definition yaspgridleveliterator.hh:19
    \n-
    YaspIntersectionIterator enables iteration over intersections with neighboring codim 0 entities.
    Definition yaspgridintersectioniterator.hh:22
    \n-
    YaspHierarchicIterator enables iteration over son entities of codim 0.
    Definition yaspgridhierarchiciterator.hh:20
    \n-
    Implementation of Level- and LeafIndexSets for YaspGrid.
    Definition yaspgridindexsets.hh:25
    \n-
    persistent, globally unique Ids
    Definition yaspgrididset.hh:25
    \n-
    LeafIntersectionIterator ileafbegin() const
    returns intersection iterator for first intersection
    Definition yaspgridentity.hh:657
    \n-
    GridImp::template Codim< 0 >::LocalGeometry LocalGeometry
    Definition yaspgridentity.hh:452
    \n-
    Codim< cc >::Entity subEntity(int i) const
    Definition yaspgridentity.hh:571
    \n-
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:490
    \n-
    YaspEntity(const YGLI &g, I &&it)
    Definition yaspgridentity.hh:481
    \n-
    int count() const
    Definition yaspgridentity.hh:554
    \n-
    GridImp::template Codim< 0 >::EntitySeed EntitySeed
    Definition yaspgridentity.hh:461
    \n-
    GridImp::PersistentIndexType PersistentIndexType
    define the type used for persistent indices
    Definition yaspgridentity.hh:468
    \n-
    GridImp::YGrid::iTupel iTupel
    define type used for coordinates in grid module
    Definition yaspgridentity.hh:471
    \n-
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:632
    \n-
    IntersectionIterator iend() const
    Reference to one past the last neighbor.
    Definition yaspgridentity.hh:670
    \n-
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:631
    \n-
    GridImp::ctype ctype
    Definition yaspgridentity.hh:446
    \n-
    YGLI & gridlevel()
    Definition yaspgridentity.hh:634
    \n-
    YaspEntity(const YGLI &g, const I &it)
    Definition yaspgridentity.hh:477
    \n-
    const GridImp * yaspgrid() const
    Definition yaspgridentity.hh:635
    \n-
    int level() const
    level of this element
    Definition yaspgridentity.hh:496
    \n-
    GridImp::LeafIntersectionIterator LeafIntersectionIterator
    Definition yaspgridentity.hh:464
    \n-
    YaspEntity(YGLI &&g, I &&it)
    Definition yaspgridentity.hh:485
    \n-
    PartitionType partitionType() const
    return partition type attribute
    Definition yaspgridentity.hh:506
    \n-
    LevelIntersectionIterator ilevelend() const
    Reference to one past the last neighbor.
    Definition yaspgridentity.hh:682
    \n-
    bool mightVanish() const
    Returns true, if entity might disappear during the next call to adapt()
    Definition yaspgridentity.hh:648
    \n-
    GridImp::HierarchicIterator HierarchicIterator
    Definition yaspgridentity.hh:465
    \n-
    GridImp::template Codim< 0 >::Entity Entity
    Definition yaspgridentity.hh:460
    \n-
    LevelIntersectionIterator ilevelbegin() const
    returns intersection iterator for first intersection
    Definition yaspgridentity.hh:664
    \n-
    LeafIntersectionIterator ileafend() const
    Reference to one past the last neighbor.
    Definition yaspgridentity.hh:676
    \n-
    YaspEntity()
    Definition yaspgridentity.hh:474
    \n-
    GridImp::YGrid::Iterator I
    Definition yaspgridentity.hh:449
    \n-
    GridImp::template Codim< 0 >::Geometry Geometry
    Definition yaspgridentity.hh:451
    \n-
    Geometry geometry() const
    geometry of this entity
    Definition yaspgridentity.hh:517
    \n-
    Entity father() const
    Inter-level access to father element on coarser grid. Assumes that meshes are nested.
    Definition yaspgridentity.hh:587
    \n-
    bool isNew() const
    Returns true, if the entity has been created during the last call to adapt()
    Definition yaspgridentity.hh:644
    \n-
    constexpr GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition yaspgridentity.hh:545
    \n-
    EntitySeed seed() const
    Return the entity seed which contains sufficient information to generate the entity again and uses as...
    Definition yaspgridentity.hh:501
    \n-
    HierarchicIterator hbegin(int maxlevel) const
    Definition yaspgridentity.hh:691
    \n-
    IntersectionIterator ibegin() const
    returns intersection iterator for first intersection
    Definition yaspgridentity.hh:651
    \n-
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridentity.hh:448
    \n-
    unsigned int subEntities(unsigned int codim) const
    Definition yaspgridentity.hh:563
    \n-
    LocalGeometry geometryInFather() const
    Definition yaspgridentity.hh:614
    \n-
    GridImp::LevelIntersectionIterator IntersectionIterator
    Definition yaspgridentity.hh:462
    \n-
    GridImp::LevelIntersectionIterator LevelIntersectionIterator
    Definition yaspgridentity.hh:463
    \n-
    I & transformingsubiterator()
    Definition yaspgridentity.hh:633
    \n-
    bool isLeaf() const
    Definition yaspgridentity.hh:637
    \n-
    bool hasFather() const
    returns true if father entity exists
    Definition yaspgridentity.hh:607
    \n-
    GridImp::template Codim< cd >::Entity Entity
    Definition yaspgridentity.hh:457
    \n-
    int level() const
    level of this element
    Definition yaspgridentity.hh:856
    \n-
    bool equals(const YaspEntity &e) const
    Return true when two iterators over the same grid are equal (!).
    Definition yaspgridentity.hh:850
    \n-
    YGLI & gridlevel()
    Definition yaspgridentity.hh:967
    \n-
    Geometry geometry() const
    geometry of this entity
    Definition yaspgridentity.hh:875
    \n-
    YaspEntity(const YGLI &g, const I &it)
    Definition yaspgridentity.hh:841
    \n-
    unsigned int subEntities(unsigned int cc) const
    Definition yaspgridentity.hh:869
    \n-
    PartitionType partitionType() const
    return partition type attribute
    Definition yaspgridentity.hh:889
    \n-
    GridImp::ctype ctype
    Definition yaspgridentity.hh:822
    \n-
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridentity.hh:824
    \n-
    GridImp::PersistentIndexType PersistentIndexType
    define the type used for persistent indices
    Definition yaspgridentity.hh:832
    \n-
    EntitySeed seed() const
    Return the entity seed which contains sufficient information to generate the entity again and uses as...
    Definition yaspgridentity.hh:861
    \n-
    const GridImp * yaspgrid() const
    Definition yaspgridentity.hh:969
    \n-
    constexpr GeometryType type() const
    Return the name of the reference element. The type can be used to access the Dune::ReferenceElement.
    Definition yaspgridentity.hh:883
    \n-
    GridImp::YGrid::Iterator I
    Definition yaspgridentity.hh:825
    \n-
    I & transformingsubiterator()
    Definition yaspgridentity.hh:966
    \n-
    const I & transformingsubiterator() const
    Definition yaspgridentity.hh:964
    \n-
    GridImp::YGrid::iTupel iTupel
    define type used for coordinates in grid module
    Definition yaspgridentity.hh:835
    \n-
    GridImp::template Codim< dim >::Geometry Geometry
    Definition yaspgridentity.hh:827
    \n-
    const YGLI & gridlevel() const
    Definition yaspgridentity.hh:965
    \n-
    YaspEntity(YGLI &&g, I &&it)
    Definition yaspgridentity.hh:845
    \n-
    YaspEntity()
    Definition yaspgridentity.hh:838
    \n-
    GridImp::template Codim< dim >::EntitySeed EntitySeed
    Definition yaspgridentity.hh:829
    \n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+\n+\n+\n+
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n+
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n+
    @ appendedraw
    Output is to the file is appended raw binary.
    Definition common.hh:49
    \n+
    @ appendedbase64
    Output is to the file is appended base64 binary.
    Definition common.hh:51
    \n+
    @ base64
    Output to the file is inline base64 binary.
    Definition common.hh:47
    \n+
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n+
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n+
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n+
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n+
    DataMode
    Whether to produce conforming or non-conforming output.
    Definition common.hh:67
    \n+
    @ conforming
    Output conforming data.
    Definition common.hh:73
    \n+
    @ nonconforming
    Output non-conforming data.
    Definition common.hh:81
    \n+
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n+
    @ polyhedron
    Definition common.hh:142
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n+
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n+
    size_type size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mcmgmapper.hh:204
    \n+
    Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity of codim 0 entity to starting index in array for dof block.
    Definition mcmgmapper.hh:185
    \n+
    Descriptor struct for VTK fields.
    Definition common.hh:328
    \n+
    std::size_t size() const
    The number of components in the data field.
    Definition common.hh:364
    \n+
    Precision precision() const
    The precision used for the output of the data field.
    Definition common.hh:370
    \n+
    @ tensor
    tensor field (always 3x3)
    \n+
    @ vector
    vector-valued field (always 3D, will be padded if necessary)
    \n+\n+
    Type type() const
    The type of the data field.
    Definition common.hh:358
    \n+
    std::string name() const
    The name of the data field.
    Definition common.hh:352
    \n+
    base class for data array writers
    Definition dataarraywriter.hh:56
    \n+
    void write(T data)
    write one element of data
    Definition dataarraywriter.hh:69
    \n+
    A base class for grid functions with any return type and dimension.
    Definition function.hh:42
    \n+
    Take a vector and interpret it as cell data for the VTKWriter.
    Definition function.hh:97
    \n+
    Take a vector and interpret it as point data for the VTKWriter.
    Definition function.hh:205
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n+
    Writer for the ouput of grid functions in the vtk format.
    Definition vtksequencewriter.hh:29
    \n+
    Base class to write pvd-files which contains a list of all collected vtk-files.
    Definition vtksequencewriterbase.hh:34
    \n+
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n+
    void addCellData(const Container &v, const std::string &name, int ncomps=1, VTK::Precision prec=VTK::Precision::float32)
    Add a grid function (represented by container) that lives on the cells of the grid to the visualizati...
    Definition vtkwriter.hh:695
    \n+
    CornerIterator cornerEnd() const
    Definition vtkwriter.hh:620
    \n+
    void clear()
    clear list of registered functions
    Definition vtkwriter.hh:775
    \n+
    std::string write(const std::string &name, VTK::OutputType type=VTK::ascii)
    write output (interface might change later)
    Definition vtkwriter.hh:803
    \n+
    VertexIterator vertexBegin() const
    Definition vtkwriter.hh:508
    \n+
    std::string getTypeString() const
    Definition vtkwriter.hh:1226
    \n+
    std::string getParallelHeaderName(const std::string &name, const std::string &path, int commSize) const
    return name of a parallel header file
    Definition vtkwriter.hh:920
    \n+
    void addVertexData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the vertices of the grid to the visualization.
    Definition vtkwriter.hh:713
    \n+
    Dune::VTKFunction< GridView > VTKFunction
    Definition vtkwriter.hh:147
    \n+
    CellIterator cellEnd() const
    Definition vtkwriter.hh:402
    \n+
    std::list< VTKLocalFunction > vertexdata
    Definition vtkwriter.hh:1585
    \n+
    CornerIterator cornerBegin() const
    Definition vtkwriter.hh:613
    \n+
    std::string getSerialPieceName(const std::string &name, const std::string &path) const
    return name of a serial piece file
    Definition vtkwriter.hh:940
    \n+
    void addCellData(const std::shared_ptr< const VTKFunction > &p)
    Add a grid function that lives on the cells of the grid to the visualization.
    Definition vtkwriter.hh:649
    \n+
    std::string getFormatString() const
    Definition vtkwriter.hh:1213
    \n+
    bool checkForPolyhedralCells() const
    Definition vtkwriter.hh:1441
    \n+
    void addVertexData(F &&f, VTK::FieldInfo vtkFieldInfo)
    Add a function by sampling it on the grid vertices.
    Definition vtkwriter.hh:738
    \n+
    virtual void writeCellData(VTK::VTUWriter &writer)
    write cell data
    Definition vtkwriter.hh:1333
    \n+
    virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)
    count the vertices, cells and corners
    Definition vtkwriter.hh:1235
    \n+
    std::string getParallelPieceName(const std::string &name, const std::string &path, int commRank, int commSize) const
    return name of a parallel piece file (or header name)
    Definition vtkwriter.hh:855
    \n+
    CellIterator cellBegin() const
    Definition vtkwriter.hh:397
    \n+
    VTK::OutputType outputtype
    Definition vtkwriter.hh:1609
    \n+
    virtual void writeGridCells(VTK::VTUWriter &writer)
    write the connectivity array
    Definition vtkwriter.hh:1385
    \n+
    GridView gridView_
    Definition vtkwriter.hh:1588
    \n+
    virtual void writeCellFaces(VTK::VTUWriter &writer)
    write the connectivity array
    Definition vtkwriter.hh:1455
    \n+
    void fillFaceVertices(CornerIterator it, const CornerIterator end, const IndexSet &indexSet, std::vector< T > &faces, std::vector< T > &faceOffsets)
    Definition vtkwriter.hh:1494
    \n+
    std::list< VTKLocalFunction > celldata
    Definition vtkwriter.hh:1584
    \n+
    std::string write(const std::string &name, VTK::OutputType type, const int commRank, const int commSize)
    write output (interface might change later)
    Definition vtkwriter.hh:965
    \n+
    VTK::Precision coordPrecision() const
    get the precision with which coordinates are written out
    Definition vtkwriter.hh:782
    \n+
    std::list< VTKLocalFunction >::const_iterator FunctionIterator
    Definition vtkwriter.hh:376
    \n+
    std::tuple< std::string, std::string > getDataNames(const T &data) const
    Definition vtkwriter.hh:1264
    \n+
    virtual void writeGridPoints(VTK::VTUWriter &writer)
    write the positions of vertices
    Definition vtkwriter.hh:1361
    \n+
    virtual void writeVertexData(VTK::VTUWriter &writer)
    write vertex data
    Definition vtkwriter.hh:1347
    \n+
    int nvertices
    Definition vtkwriter.hh:1592
    \n+
    void addCellData(F &&f, VTK::FieldInfo vtkFieldInfo)
    Add a function by sampling it on the element centers.
    Definition vtkwriter.hh:674
    \n+
    void addVertexData(const Container &v, const std::string &name, int ncomps=1, VTK::Precision prec=VTK::Precision::float32)
    Add a grid function (represented by container) that lives on the vertices of the grid to the visualiz...
    Definition vtkwriter.hh:760
    \n+
    virtual ~VTKWriter()
    destructor
    Definition vtkwriter.hh:786
    \n+
    static void fillFacesForElement(const Entity &element, const IndexSet &indexSet, const std::vector< T > &vertices, T &offset, std::vector< T > &faces, std::vector< T > &faceOffsets)
    Definition vtkwriter.hh:1535
    \n+
    void writeData(VTK::VTUWriter &writer, const Data &data, const Iterator begin, const Iterator end, int nentries)
    Definition vtkwriter.hh:1291
    \n+
    int ncells
    Definition vtkwriter.hh:1591
    \n+
    VertexIterator vertexEnd() const
    Definition vtkwriter.hh:515
    \n+
    VTKWriter(const GridView &gridView, VTK::DataMode dm=VTK::conforming, VTK::Precision coordPrecision=VTK::Precision::float32)
    Construct a VTKWriter working on a specific GridView.
    Definition vtkwriter.hh:636
    \n+
    std::string pwrite(const std::string &name, const std::string &path, const std::string &extendpath, VTK::OutputType ot, const int commRank, const int commSize)
    write output; interface might change later
    Definition vtkwriter.hh:1043
    \n+
    std::string pwrite(const std::string &name, const std::string &path, const std::string &extendpath, VTK::OutputType type=VTK::ascii)
    write output (interface might change later)
    Definition vtkwriter.hh:835
    \n+
    int ncorners
    Definition vtkwriter.hh:1593
    \n+
    Type erasure wrapper for VTK data sets.
    Definition vtkwriter.hh:156
    \n+
    void unbind() const
    Unbind the data set from the currently bound entity.
    Definition vtkwriter.hh:360
    \n+
    VTKLocalFunction(F &&f, VTK::FieldInfo fieldInfo)
    Construct a VTKLocalFunction for a dune-functions style LocalFunction.
    Definition vtkwriter.hh:307
    \n+
    std::string name() const
    Returns the name of the data set.
    Definition vtkwriter.hh:342
    \n+
    VTK::FieldInfo _fieldInfo
    Definition vtkwriter.hh:372
    \n+
    VTK::DataArrayWriter Writer
    Definition vtkwriter.hh:160
    \n+
    const VTK::FieldInfo & fieldInfo() const
    Returns the VTK::FieldInfo for the data set.
    Definition vtkwriter.hh:348
    \n+
    void bind(const Entity &e) const
    Bind the data set to grid entity e.
    Definition vtkwriter.hh:354
    \n+
    VTKLocalFunction(const std::shared_ptr< const VTKFunction > &vtkFunctionPtr)
    Construct a VTKLocalFunction for a legacy VTKFunction.
    Definition vtkwriter.hh:331
    \n+
    std::shared_ptr< FunctionWrapperBase > _f
    Definition vtkwriter.hh:371
    \n+
    void write(const Coordinate &pos, Writer &w) const
    Write the value of the data set at local coordinate pos to the writer w.
    Definition vtkwriter.hh:366
    \n+
    Base class for polymorphic container of underlying data set.
    Definition vtkwriter.hh:164
    \n+
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const =0
    Evaluate data set at local position pos inside the current entity and write result to w.
    \n+
    virtual ~FunctionWrapperBase()
    Definition vtkwriter.hh:178
    \n+
    virtual void unbind()=0
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    \n+
    virtual void bind(const Entity &e)=0
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    \n+
    Type erasure implementation for functions conforming to the dune-functions LocalFunction interface.
    Definition vtkwriter.hh:188
    \n+
    typename std::decay< F >::type Function
    Definition vtkwriter.hh:189
    \n+
    FunctionWrapper(F_ &&f)
    Definition vtkwriter.hh:192
    \n+
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const
    Evaluate data set at local position pos inside the current entity and write result to w.
    Definition vtkwriter.hh:206
    \n+
    virtual void unbind()
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    Definition vtkwriter.hh:201
    \n+
    virtual void bind(const Entity &e)
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    Definition vtkwriter.hh:196
    \n+
    Type erasure implementation for C++ functions, i.e., functions that can be evaluated in global coordi...
    Definition vtkwriter.hh:236
    \n+
    GlobalFunctionWrapper(F_ &&f)
    Definition vtkwriter.hh:240
    \n+
    virtual void unbind()
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    Definition vtkwriter.hh:250
    \n+
    typename std::decay< F >::type Function
    Definition vtkwriter.hh:237
    \n+
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const
    Evaluate data set at local position pos inside the current entity and write result to w.
    Definition vtkwriter.hh:255
    \n+
    virtual void bind(const Entity &e)
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    Definition vtkwriter.hh:245
    \n+
    Type erasure implementation for legacy VTKFunctions.
    Definition vtkwriter.hh:276
    \n+
    virtual void unbind()
    Unbind data set from current grid entity - mostly here for performance and symmetry reasons.
    Definition vtkwriter.hh:287
    \n+
    VTKFunctionWrapper(const std::shared_ptr< const VTKFunction > &f)
    Definition vtkwriter.hh:277
    \n+
    virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const
    Evaluate data set at local position pos inside the current entity and write result to w.
    Definition vtkwriter.hh:292
    \n+
    virtual void bind(const Entity &e)
    Bind data set to grid entity - must be called before evaluating (i.e. calling write())
    Definition vtkwriter.hh:282
    \n+
    Iterator over the grids elements.
    Definition vtkwriter.hh:385
    \n+
    CellIterator(const GridCellIterator &x)
    construct a CellIterator from the gridview's Iterator.
    Definition vtkwriter.hh:388
    \n+
    const FieldVector< DT, n > position() const
    Definition vtkwriter.hh:391
    \n+
    Iterate over the grid's vertices.
    Definition vtkwriter.hh:424
    \n+
    VertexIterator(const GridCellIterator &x, const GridCellIterator &end, const VTK::DataMode &dm, const VertexMapper &vm)
    Definition vtkwriter.hh:457
    \n+
    void basicIncrement()
    Definition vtkwriter.hh:440
    \n+
    void increment()
    Definition vtkwriter.hh:468
    \n+
    EntityReference dereference() const
    Definition vtkwriter.hh:491
    \n+
    bool equals(const VertexIterator &cit) const
    Definition vtkwriter.hh:485
    \n+
    FieldVector< DT, n > position() const
    position of vertex inside the entity
    Definition vtkwriter.hh:501
    \n+
    int localindex() const
    index of vertex within the entity, in Dune-numbering
    Definition vtkwriter.hh:496
    \n+
    Iterate over the elements' corners.
    Definition vtkwriter.hh:539
    \n+
    void increment()
    Definition vtkwriter.hh:566
    \n+
    CornerIterator(const GridCellIterator &x, const GridCellIterator &end, const VTK::DataMode &dm, const VertexMapper &vm, const std::vector< int > &num)
    Definition vtkwriter.hh:558
    \n+
    int id() const
    Process-local consecutive zero-starting vertex id.
    Definition vtkwriter.hh:597
    \n+
    EntityReference dereference() const
    Definition vtkwriter.hh:588
    \n+
    bool equals(const CornerIterator &cit) const
    Definition vtkwriter.hh:582
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n+
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n+
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n+
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n+
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n+
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n+
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n+
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n+
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n+
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1293 +1,1975 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-yaspgridentity.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n+vtkwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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+_\b1// SPDX-FileCopyrightText: 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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_YASPGRIDENTITY_HH\n-6#define DUNE_GRID_YASPGRIDENTITY_HH\n-7\n-8#include \n-9#include \n-10\n-24//========================================================================\n-25\n-26\n-27\n-28\n-29namespace _\bD_\bu_\bn_\be {\n-30\n-31 namespace Yasp {\n-32\n-33#ifndef DOXYGEN\n-34\n-35 // table for quick evaluation of binomial coefficients\n-36 template\n-37 struct BinomialTable\n-38 {\n-39 // evaluation - note that in general d!=n, n is only the\n-40 // maximum value of d (in our case dimworld)\n-41 static constexpr int evaluate(int d, int c)\n-42 {\n-43 return _values[_offsets[d] + c];\n-44 }\n-45\n-46 // the actual implementation\n-47 [[deprecated(\"Use binomial from dune-common's math.hh\")]]\n-48 static constexpr int binomial(int d, int c)\n-49 {\n-50 long binomial=1;\n-51 for (int i=d-c+1; i<=d; i++)\n-52 binomial *= i;\n-53 for (long i=2; i<=c; i++)\n-54 binomial /= i;\n-55 return binomial;\n-56 }\n-57\n-58 private:\n-59 // prevent construction\n-60 BinomialTable() = delete;\n-61\n-62 // compute binomial(r, c) and advance row `r` and column `c`\n-63 static constexpr int nextValue(int& r, int& c)\n-64 {\n-65 const auto result = Dune::binomial(r, c);\n+5\n+6#ifndef DUNE_VTKWRITER_HH\n+7#define DUNE_VTKWRITER_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14#include \n+15#include \n+16#include \n+17#include \n+18#include \n+19#include \n+20\n+21#include \n+22#include \n+23#include \n+24#include \n+25#include \n+26#include \n+27#include \n+28#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+29#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+30#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+31#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+32#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+33#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+34#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh>\n+35#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+36\n+50namespace _\bD_\bu_\bn_\be\n+51{\n+52\n+53 namespace Impl\n+54 {\n+55 // Check whether type F has a method 'bind' (see the dune-functions\n+interface)\n+56 template< class F, class E, class = void >\n+57 struct IsBindable\n+58 : std::false_type\n+59 {};\n+60\n+61 template< class F, class E >\n+62 struct IsBindable< F, E, _\bs_\bt_\bd::void_t< decltype( std::declval< F & >().bind\n+( std::declval< const E & >() ) ),\n+63 decltype( std::declval< F & >().unbind() ) > >\n+64 : std::true_type\n+65 {};\n 66\n-67 c += 1;\n-68 if (c > r) {\n-69 r += 1;\n-70 c = 0;\n-71 }\n+67 // Check whether localFunction(F) can be called (see the dune-functions\n+interface)\n+68 template< class F, class = void >\n+69 struct HasLocalFunction\n+70 : std::false_type\n+71 {};\n 72\n-73 return result;\n-74 }\n-75\n-76 template\n-77 static constexpr std::array computeValues(std::\n-index_sequence)\n-78 {\n-79 int r = 0, c = 0;\n-80 return {{ ((void)I, nextValue(r, c))... }};\n-81 }\n-82\n-83 template\n-84 static constexpr std::array computeOffsets(std::\n-index_sequence)\n-85 { return {{ (I*(I+1)/2)... }}; }\n-86\n-87 static constexpr std::array _values = computeValues(std::\n-make_index_sequence<(n+1)*(n+2)/2>{});\n-88 static constexpr std::array _offsets = computeOffsets(std::\n-make_index_sequence{});\n-89 };\n-90\n-91#if __cplusplus < 201703L\n-92 template\n-93 constexpr std::array BinomialTable::_values;\n-94 template\n-95 constexpr std::array BinomialTable::_offsets;\n-96#endif\n-97\n-104 template\n-105 constexpr int subEnt(int d, int c)\n-106 {\n-107 return (d < c ? 0 : BinomialTable::evaluate(d,c) << c);\n-108 }\n-109\n-110 // Make a table mapping all subentities of a codim 0 entity to a value.\n-111 // F is the functor to be evaluated.\n-112 template\n-113 struct EntityShiftTable\n-114 {\n-115 typedef std::bitset value_type;\n-116\n-117 static value_type evaluate(int i, int codim)\n-118 {\n-119 return {_values[_offsets[codim] + i]};\n-120 }\n-121\n-122 private:\n-123\n-124 // prevent construction\n-125 EntityShiftTable() = delete;\n+73 template< class F >\n+74 struct HasLocalFunction< F, _\bs_\bt_\bd::void_t< decltype( localFunction( std::\n+declval< F& >() ) ) > >\n+75 : std::true_type\n+76 {};\n+77\n+78 } // namespace Impl\n+79\n+80 // Forward-declaration here, so the class can be friend of VTKWriter\n+81 template \n+82 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be;\n+83 template \n+84 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br;\n+85\n+94 template< class GridView >\n+_\b9_\b5 class _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br {\n+96\n+97 // VTKSequenceWriterBase needs getSerialPieceName\n+98 // and getParallelHeaderName\n+99 friend class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>;\n+100 // VTKSequenceWriter needs the grid view, to get the MPI size and rank\n+101 friend class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw>;\n+102\n+103 // extract types\n+104 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd Grid;\n+105 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be DT;\n+106 constexpr static int n = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+107 constexpr static int w = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd;\n+108\n+109 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity Cell;\n+110 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< n >::Entity Vertex;\n+111 typedef Cell Entity;\n+112\n+113 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt IndexSet;\n+114\n+115 static const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be VTK_Partition =\n+_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn;\n+116 //static const PartitionIteratorType VTK_Partition = All_Partition;\n+117\n+118 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >\n+119 ::template Partition< VTK_Partition >::Iterator\n+120 GridCellIterator;\n+121 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< n >\n+122 ::template Partition< VTK_Partition >::Iterator\n+123 GridVertexIterator;\n+124\n+125 typedef typename GridCellIterator::Reference EntityReference;\n 126\n-127 // compute offset of codimension `codim` entities and advance `offset`\n-128 static constexpr int nextOffset(int& offset, int codim)\n-129 {\n-130 if (codim == 0) {\n-131 offset = 0;\n-132 return 0;\n-133 }\n-134\n-135 offset += subEnt(dim, codim-1);\n-136 return offset;\n-137 }\n-138\n-139 template\n-140 static constexpr std::array computeOffsets(std::\n-index_sequence)\n-141 {\n-142 int offset = 0;\n-143 return {{ (nextOffset(offset, I))... }};\n-144 }\n-145\n-146 // compute shift table entry for (`codim`, `i`) and advance `codim`, `i`\n-147 static constexpr unsigned char nextValue(int& codim, int& i)\n-148 {\n-149 const auto result = F::evaluate(i, codim);\n+127 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >\n+128 ::Entity::Geometry::LocalCoordinate Coordinate;\n+129\n+130 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b> _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br;\n+131\n+132 // return true if entity should be skipped in Vertex and Corner iterator\n+133 static bool skipEntity( const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be entityType )\n+134 {\n+135 switch( VTK_Partition )\n+136 {\n+137 // for All_Partition no entity has to be skipped\n+138 case _\bA_\bl_\bl_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn: return false;\n+139 case _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn: return ( entityType != _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by );\n+140 default: DUNE_THROW(NotImplemented,\"Add check for this partition type\");\n+141 }\n+142 return false ;\n+143 }\n+144\n+145 public:\n+146\n+_\b1_\b4_\b7 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b _\b> _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn;\n+148\n+149 protected:\n 150\n-151 i += 1;\n-152 if (i >= subEnt(dim, codim)) {\n-153 codim += 1;\n-154 i = 0;\n-155 }\n-156\n-157 return result;\n-158 }\n+152\n+_\b1_\b5_\b5 class _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+156 {\n+157\n+158 public:\n 159\n-160 template\n-161 static constexpr std::array computeValues\n-(std::index_sequence)\n-162 {\n-163 int codim = 0, i = 0;\n-164 return {{ ((void)I, nextValue(codim, i))... }};\n-165 }\n-166\n-167 static constexpr std::array _offsets = computeOffsets(std::\n-make_index_sequence{});\n-168 static constexpr std::array _values =\n-computeValues(std::make_index_sequence{});\n-169\n-170 };\n+_\b1_\b6_\b0 typedef _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br _\bW_\br_\bi_\bt_\be_\br;\n+161\n+_\b1_\b6_\b3 struct _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n+164 {\n+165\n+_\b1_\b6_\b7 virtual void _\bb_\bi_\bn_\bd(const Entity& e) = 0;\n+168\n+_\b1_\b7_\b0 virtual void _\bu_\bn_\bb_\bi_\bn_\bd() = 0;\n 171\n-172#if __cplusplus < 201703L\n-173 template\n-174 constexpr std::array EntityShiftTable::_offsets;\n-175 template\n-176 constexpr std::array EntityShiftTable::_values;\n-177#endif\n-178\n-179 // functor for doing the actual entity shift calculation\n-180 template\n-181 struct calculate_entity_shift\n-182 {\n-183 static constexpr unsigned long long evaluate(int index, int cc)\n-184 {\n-185 auto result = 0ull;\n-186 for (int d = dim; d>0; d--)\n-187 {\n-188 if (cc == d)\n-189 return result;\n-190 if (index < subEnt(d-1,cc))\n-191 result |= 1ull << (d-1);\n-192 else\n-193 {\n-194 index = (index - subEnt(d-1, cc)) % subEnt(d-1,cc-1);\n-195 cc--;\n-196 }\n-197 }\n-198 return result;\n+173\n+_\b1_\b7_\b6 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n+const = 0;\n+177\n+_\b1_\b7_\b8 virtual _\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be()\n+179 {}\n+180\n+181 };\n+182\n+184 // DUNE_PRIVATE since _f has less visibility\n+185 template\n+_\b1_\b8_\b6 struct DUNE_PRIVATE _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+187 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n+188 {\n+_\b1_\b8_\b9 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn = typename std::decay::type;\n+190\n+191 template\n+_\b1_\b9_\b2 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br(F_&& f)\n+193 : _f(_\bs_\bt_\bd::forward(f))\n+194 {}\n+195\n+_\b1_\b9_\b6 virtual void _\bb_\bi_\bn_\bd(const Entity& e)\n+197 {\n+198 _f.bind(e);\n 199 }\n-200 };\n-201\n-210 template\n-211 std::bitset entityShift(int index, int cc)\n-212 {\n-213 return EntityShiftTable,dim>::evaluate\n-(index,cc);\n-214 }\n-215\n-216 // functor for doing the actual entity move calculation\n-217 template\n-218 struct calculate_entity_move\n-219 {\n-220 static constexpr unsigned long long evaluate(int index, int cc)\n-221 {\n-222 auto result = 0ull;\n-223 for (int d = dim; d>0; d--)\n+200\n+_\b2_\b0_\b1 virtual void _\bu_\bn_\bb_\bi_\bn_\bd()\n+202 {\n+203 _f.unbind();\n+204 }\n+205\n+_\b2_\b0_\b6 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n+const\n+207 {\n+208 auto r = _f(pos);\n+209 // we need to do different things here depending on whether r supports\n+indexing into it or not.\n+210 do_write(w,r,count,IsIndexable());\n+211 }\n+212\n+213 private:\n+214\n+215 template\n+216 void do_write(_\bW_\br_\bi_\bt_\be_\br& w, const R& r, std::size_t count, std::true_type)\n+const\n+217 {\n+218 for (std::size_t i = 0; i < count; ++i)\n+219 w._\bw_\br_\bi_\bt_\be(r[i]);\n+220 }\n+221\n+222 template\n+223 void do_write(Writer& w, const R& r, std::size_t count, std::false_type)\n+const\n 224 {\n-225 if (d == cc)\n-226 {\n-227 // result[d-1] = index & (1<<(d-1));\n-228 result &= ~(1ull << (d-1));\n-229 result |= index & (1ull << (d-1));\n-230\n-231 index &= ~(1<<(d-1));\n-232 }\n-233 if (index >= subEnt(d-1,cc))\n-234 {\n-235 if ((index - subEnt(d-1,cc)) / subEnt(d-1,cc-1) == 1)\n+225 assert(count == 1);\n+226 w.write(r);\n+227 }\n+228\n+229 Function _f;\n+230 };\n+231\n+233 template\n+_\b2_\b3_\b4 struct _\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+235 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n 236 {\n-237 result |= 1ull << (d-1);\n-238 }\n-239 index = (index - subEnt(d-1, cc)) % subEnt(d-1,cc-1);\n-240 cc--;\n-241 }\n-242 }\n-243 return result;\n-244 }\n-245\n-246 };\n-247\n-255 template\n-256 std::bitset entityMove(int index, int cc)\n-257 {\n-258 return EntityShiftTable,dim>::evaluate\n-(index,cc);\n-259 }\n-260\n-261#endif //DOXYGEN\n-262\n-263 } // namespace Yasp.\n-264\n-265 template\n-_\b2_\b6_\b6 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-267 : public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn \n-268 {\n-269\n-270 template\n-_\b2_\b7_\b1 friend class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+_\b2_\b3_\b7 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn = typename std::decay::type;\n+238\n+239 template\n+_\b2_\b4_\b0 _\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br(F_&& f)\n+241 : _f(_\bs_\bt_\bd::forward(f))\n+242 , element_(nullptr)\n+243 {}\n+244\n+_\b2_\b4_\b5 virtual void _\bb_\bi_\bn_\bd(const Entity& e)\n+246 {\n+247 element_ = &e;\n+248 }\n+249\n+_\b2_\b5_\b0 virtual void _\bu_\bn_\bb_\bi_\bn_\bd()\n+251 {\n+252 element_ = nullptr;\n+253 }\n+254\n+_\b2_\b5_\b5 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n+const\n+256 {\n+257 auto globalPos = element_->geometry().global(pos);\n+258 auto r = _f(globalPos);\n+259 if constexpr (IsIndexable()) {\n+260 for (std::size_t i = 0; i < count; ++i)\n+261 w._\bw_\br_\bi_\bt_\be(r[i]);\n+262 }\n+263 else {\n+264 assert(count == 1);\n+265 w._\bw_\br_\bi_\bt_\be(r);\n+266 }\n+267 }\n+268 private:\n+269 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn _f;\n+270 const Entity* element_;\n+271 };\n 272\n-273 public:\n-_\b2_\b7_\b4 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n-275\n-_\b2_\b7_\b6 typedef typename GridImp::template Codim::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b2_\b7_\b7 typedef typename GridImp::Traits::template Codim::GeometryImpl\n-_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl;\n-278\n-_\b2_\b7_\b9 typedef typename GridImp::template Codim::EntitySeed _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n-280\n-_\b2_\b8_\b2 int _\bl_\be_\bv_\be_\bl () const\n+_\b2_\b7_\b4 struct _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+275 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n+276 {\n+_\b2_\b7_\b7 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br(const std::shared_ptr< const VTKFunction >& f)\n+278 : _f(f)\n+279 , _entity(nullptr)\n+280 {}\n+281\n+_\b2_\b8_\b2 virtual void _\bb_\bi_\bn_\bd(const Entity& e)\n 283 {\n-284 return _\b__\bg->level();\n+284 _entity = &e;\n 285 }\n 286\n-_\b2_\b9_\b0 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd() const\n-291 {\n-292 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\bc_\bo_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg->level(), _\b__\bi_\bt.coord(),\n-_\b__\bi_\bt.which()));\n-293 }\n-294\n-_\b2_\b9_\b6 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const\n-297 {\n-298 _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl _geometry(_\b__\bi_\bt.lowerleft(),_\b__\bi_\bt.upperright(),_\b__\bi_\bt.shift());\n-299 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by(_geometry);\n-300 }\n-301\n-_\b3_\b0_\b5 constexpr GeometryType _\bt_\by_\bp_\be () const\n-306 {\n-307 return GeometryTypes::cube(_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-308 }\n-309\n-_\b3_\b1_\b4 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int cc) const\n-315 {\n-316 return Dune::Yasp::subEnt(dim-codim,cc-codim);\n-317 }\n-318\n-_\b3_\b2_\b0 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n-321 {\n-322 if (_\b__\bg->interior[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-323 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-324 if (_\b__\bg->interiorborder[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-325 return _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-326 if (_\b__\bg->overlap[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-327 return _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by;\n-328 if (_\b__\bg->overlapfront[codim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-329 return _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-330 return _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-331 }\n-332\n-_\b3_\b3_\b3 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n-_\b3_\b3_\b4 typedef typename GridImp::YGrid::Iterator _\bI;\n-_\b3_\b3_\b5 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by ()\n-336 {}\n-337\n-_\b3_\b3_\b8 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, const _\bI& it)\n-339 : _\b__\bi_\bt(it), _\b__\bg(g)\n-340 {}\n-341\n-_\b3_\b4_\b2 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (_\bY_\bG_\bL_\bI&& g, const _\bI&& it)\n-343 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(_\bs_\bt_\bd::move(g))\n-344 {}\n-345\n-_\b3_\b4_\b7 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by& e) const\n-348 {\n-349 return _\b__\bi_\bt == e._\b__\bi_\bt && _\b__\bg == e._\b__\bg;\n-350 }\n-351\n-352 // IndexSets needs access to the private index methods\n-353 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-354 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-355 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-_\b3_\b5_\b6 typedef typename GridImp::PersistentIndexType _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-357\n-_\b3_\b5_\b9 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx () const\n-360 {\n-361 // get size of global grid (in elements)\n-362 std::array size;\n-363\n-364 for (int i=0; img->levelSize(_\b__\bg->level(), i);\n-368 if (!_\b__\bi_\bt.shift(i))\n-369 size[i]++;\n-370 }\n-371\n-372 // encode codim\n-373 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be id(_\b__\bi_\bt.shift().to_ulong());\n-374\n-375 // encode level\n-376 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs;\n-377 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bg->level());\n-378\n-379 // encode coordinates\n-380 for (int i=dim-1; i>=0; i--)\n-381 {\n-382 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n-383 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bi_\bt.coord(i));\n-384 }\n-385\n-386 return id;\n-387 }\n-388\n-_\b3_\b9_\b0 int _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx () const\n-391 {\n-392 return _\b__\bi_\bt.superindex();\n-393 }\n-394\n-_\b3_\b9_\b6 int _\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx (int i, unsigned int cc) const\n-397 {\n-398 // get the shift of the entity and the subentity\n-399 // the subentity shift is only available in the space spanned by the entity\n-400 std::bitset subent_shift = Dune::Yasp::entityShift\n-(i,cc-codim);\n-401 std::bitset subent_move = Dune::Yasp::entityMove\n-(i,cc-codim);\n-402\n-403 std::bitset shift = _\b__\bi_\bt.shift();\n-404 std::array coord = _\b__\bi_\bt.coord();\n-405 for (int j=0, k=0; joverlapfront[cc].shiftmapping(shift);\n-416 return _\b__\bg->overlapfront[cc].superindex(coord,which);\n-417 }\n-418 public:\n-_\b4_\b1_\b9 const _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() const { return _\b__\bi_\bt; }\n-_\b4_\b2_\b0 const _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() const { return _\b__\bg; }\n-_\b4_\b2_\b1 _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() { return _\b__\bi_\bt; }\n-_\b4_\b2_\b2 _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() { return _\b__\bg; }\n-_\b4_\b2_\b3 const GridImp * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd() const { return _\b__\bg->mg; }\n-424 protected:\n-_\b4_\b2_\b5 _\bI _\b__\bi_\bt = {}; // position in the grid level\n-_\b4_\b2_\b6 _\bY_\bG_\bL_\bI _\b__\bg = {}; // access to grid level\n-427 };\n-428\n-429\n-430 // specialization for codim=0\n-431 template\n-_\b4_\b3_\b2 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by<0,dim,GridImp>\n-433 : public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn <0,dim,GridImp,YaspEntity>\n-434 {\n-435 constexpr static int dimworld = GridImp::dimensionworld;\n+_\b2_\b8_\b7 virtual void _\bu_\bn_\bb_\bi_\bn_\bd()\n+288 {\n+289 _entity = nullptr;\n+290 }\n+291\n+_\b2_\b9_\b2 virtual void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w, std::size_t count)\n+const\n+293 {\n+294 for (std::size_t i = 0; i < count; ++i)\n+295 w._\bw_\br_\bi_\bt_\be(_f->evaluate(i,*_entity,pos));\n+296 }\n+297\n+298 private:\n+299\n+300 std::shared_ptr< const VTKFunction > _f;\n+301 const Entity* _entity;\n+302\n+303 };\n+304\n+306 template::value,\n+int> = 0>\n+_\b3_\b0_\b7 _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n+308 : _\b__\bf(_\bs_\bt_\bd::make_unique<_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br >(_\bs_\bt_\bd::forward(f)))\n+309 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n+310 {}\n+311\n+313 // That is, a function that you can create a LocalFunction for, and\n+evaluate that in element coordinates\n+314 template::\n+value && Impl::HasLocalFunction::value, int> = 0>\n+_\b3_\b1_\b5 _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n+316 : _\b__\bf(_\bs_\bt_\bd::make_unique< _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br<\n+317 typename _\bs_\bt_\bd::decay(f)))>::type\n+318 > >(localFunction(_\bs_\bt_\bd::forward(f))))\n+319 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n+320 {}\n+321\n+323 // That is, a function that can be evaluated in global coordinates of the\n+domain\n+324 template::\n+value && not Impl::HasLocalFunction::value, int> = 0>\n+_\b3_\b2_\b5 _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n+326 : _\b__\bf(_\bs_\bt_\bd::make_unique< _\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br >(_\bs_\bt_\bd::forward(f)))\n+327 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo)\n+328 {}\n+329\n+_\b3_\b3_\b1 explicit _\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const std::shared_ptr< const VTKFunction >&\n+vtkFunctionPtr)\n+332 : _\b__\bf(_\bs_\bt_\bd::make_unique<_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br>(vtkFunctionPtr))\n+333 , _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(\n+334 vtkFunctionPtr->_\bn_\ba_\bm_\be(),\n+335 (vtkFunctionPtr->ncomps() == 2 || vtkFunctionPtr->ncomps() == 3) ? VTK::\n+FieldInfo::Type::vector : VTK::FieldInfo::Type::scalar,\n+336 vtkFunctionPtr->ncomps(),\n+337 vtkFunctionPtr->precision()\n+338 )\n+339 {}\n+340\n+_\b3_\b4_\b2 std::string _\bn_\ba_\bm_\be() const\n+343 {\n+344 return _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo()._\bn_\ba_\bm_\be();\n+345 }\n+346\n+_\b3_\b4_\b8 const _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo& _\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo() const\n+349 {\n+350 return _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo;\n+351 }\n+352\n+_\b3_\b5_\b4 void _\bb_\bi_\bn_\bd(const Entity& e) const\n+355 {\n+356 _\b__\bf->bind(e);\n+357 }\n+358\n+_\b3_\b6_\b0 void _\bu_\bn_\bb_\bi_\bn_\bd() const\n+361 {\n+362 _\b__\bf->unbind();\n+363 }\n+364\n+_\b3_\b6_\b6 void _\bw_\br_\bi_\bt_\be(const Coordinate& pos, _\bW_\br_\bi_\bt_\be_\br& w) const\n+367 {\n+368 _\b__\bf->write(pos,w,_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo().size());\n+369 }\n+370\n+_\b3_\b7_\b1 std::shared_ptr _\b__\bf;\n+_\b3_\b7_\b2 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo _\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo;\n+373\n+374 };\n+375\n+_\b3_\b7_\b6 typedef typename std::list::const_iterator\n+_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+377\n+379\n+_\b3_\b8_\b4 class _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br : public GridCellIterator\n+385 {\n+386 public:\n+_\b3_\b8_\b8 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridCellIterator & x) : GridCellIterator(x) {}\n+_\b3_\b9_\b1 const FieldVector _\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn() const\n+392 {\n+393 return ReferenceElements::general((*this)->type()).position(0,0);\n+394 }\n+395 };\n+396\n+_\b3_\b9_\b7 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn() const\n+398 {\n+399 return _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template begin< 0, VTK_Partition >();\n+400 }\n+401\n+_\b4_\b0_\b2 _\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\be_\bl_\bl_\bE_\bn_\bd() const\n+403 {\n+404 return _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >();\n+405 }\n+406\n+408\n+_\b4_\b2_\b2 class _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br :\n+423 public ForwardIteratorFacade\n+424 {\n+425 GridCellIterator git;\n+426 GridCellIterator gend;\n+427 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be datamode;\n+428 // Index of the currently visited corner within the current element.\n+429 // NOTE: this is in Dune-numbering, in contrast to CornerIterator.\n+430 int cornerIndexDune;\n+431 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vertexmapper;\n+432 std::vector visited;\n+433 // in conforming mode, for each vertex id (as obtained by vertexmapper)\n+434 // hold its number in the iteration order (VertexIterator)\n+435 int offset;\n 436\n-437 typedef typename GridImp::Traits::template Codim< 0 >::GeometryImpl\n-_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl;\n-438\n-439 template\n-_\b4_\b4_\b0 friend class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-441\n-442 template\n-_\b4_\b4_\b3 friend class _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-444\n-445 public:\n-_\b4_\b4_\b6 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n-447\n-_\b4_\b4_\b8 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n-_\b4_\b4_\b9 typedef typename GridImp::YGrid::Iterator _\bI;\n+437 // hide operator ->\n+438 void operator->();\n+439 protected:\n+_\b4_\b4_\b0 void _\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+441 {\n+442 if( git == gend )\n+443 return;\n+444 ++cornerIndexDune;\n+445 const int numCorners = git->subEntities(n);\n+446 if( cornerIndexDune == numCorners )\n+447 {\n+448 offset += numCorners;\n+449 cornerIndexDune = 0;\n 450\n-_\b4_\b5_\b1 typedef typename GridImp::template Codim< 0 >::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-_\b4_\b5_\b2 typedef typename GridImp::template Codim< 0 >::LocalGeometry _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-453\n-454 template \n-_\b4_\b5_\b5 struct Codim\n-456 {\n-_\b4_\b5_\b7 typedef typename GridImp::template _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bd_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-458 };\n-459\n-_\b4_\b6_\b0 typedef typename GridImp::template _\bC_\bo_\bd_\bi_\bm_\b<_\b0_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b4_\b6_\b1 typedef typename GridImp::template Codim<0>::EntitySeed _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n-_\b4_\b6_\b2 typedef typename GridImp::LevelIntersectionIterator _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b4_\b6_\b3 typedef typename GridImp::LevelIntersectionIterator\n-_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b4_\b6_\b4 typedef typename GridImp::LeafIntersectionIterator\n-_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-_\b4_\b6_\b5 typedef typename GridImp::HierarchicIterator _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-466\n-_\b4_\b6_\b8 typedef typename GridImp::PersistentIndexType _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-469\n-_\b4_\b7_\b1 typedef typename GridImp::YGrid::iTupel _\bi_\bT_\bu_\bp_\be_\bl;\n-472\n-473 // constructor\n-_\b4_\b7_\b4 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by ()\n-475 {}\n-476\n-_\b4_\b7_\b7 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, const _\bI& it)\n-478 : _\b__\bi_\bt(it), _\b__\bg(g)\n-479 {}\n-480\n-_\b4_\b8_\b1 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, _\bI&& it)\n-482 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(g)\n-483 {}\n-484\n-_\b4_\b8_\b5 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (_\bY_\bG_\bL_\bI&& g, _\bI&& it)\n-486 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(_\bs_\bt_\bd::move(g))\n-487 {}\n-488\n-_\b4_\b9_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by& e) const\n-491 {\n-492 return _\b__\bi_\bt == e._\b__\bi_\bt && _\b__\bg == e._\b__\bg;\n-493 }\n-494\n-_\b4_\b9_\b6 int _\bl_\be_\bv_\be_\bl () const { return _\b__\bg->level(); }\n-497\n-_\b5_\b0_\b1 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const {\n-502 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg->level(), _\b__\bi_\bt.coord()));\n-503 }\n-504\n-_\b5_\b0_\b6 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n-507 {\n-508 if (_\b__\bg->interior[0].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-509 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-510 if (_\b__\bg->overlap[0].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-511 return _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by;\n-512 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"Impossible GhostEntity\");\n-513 return _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-514 }\n-515\n-_\b5_\b1_\b7 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const {\n-518 // the element geometry\n-519 auto ll = _\b__\bi_\bt.lowerleft();\n-520 auto ur = _\b__\bi_\bt.upperright();\n+451 ++git;\n+452 while( (git != gend) && skipEntity( git->partitionType() ) )\n+453 ++git;\n+454 }\n+455 }\n+456 public:\n+_\b4_\b5_\b7 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridCellIterator & x,\n+458 const GridCellIterator & end,\n+459 const _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be & dm,\n+460 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vm) :\n+461 git(x), gend(end), datamode(dm), cornerIndexDune(0),\n+462 vertexmapper(vm), visited(vm.size(), false),\n+463 offset(0)\n+464 {\n+465 if (datamode == _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg && git != gend)\n+466 visited[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,cornerIndexDune,n)] = true;\n+467 }\n+_\b4_\b6_\b8 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+469 {\n+470 switch (datamode)\n+471 {\n+472 case _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n+473 while(visited[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,cornerIndexDune,n)])\n+474 {\n+475 _\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+476 if (git == gend) return;\n+477 }\n+478 visited[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,cornerIndexDune,n)] = true;\n+479 break;\n+480 case _\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n+481 _\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+482 break;\n+483 }\n+484 }\n+_\b4_\b8_\b5 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br & cit) const\n+486 {\n+487 return git == cit.git\n+488 && cornerIndexDune == cit.cornerIndexDune\n+489 && datamode == cit.datamode;\n+490 }\n+_\b4_\b9_\b1 EntityReference _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n+492 {\n+493 return *git;\n+494 }\n+_\b4_\b9_\b6 int _\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bd_\be_\bx () const\n+497 {\n+498 return cornerIndexDune;\n+499 }\n+_\b5_\b0_\b1 FieldVector _\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn () const\n+502 {\n+503 return referenceElement(git->type())\n+504 .position(cornerIndexDune,n);\n+505 }\n+506 };\n+507\n+_\b5_\b0_\b8 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn () const\n+509 {\n+510 return _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template begin< 0, VTK_Partition >(),\n+511 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n+512 datamode, *vertexmapper );\n+513 }\n+514\n+_\b5_\b1_\b5 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd () const\n+516 {\n+517 return _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n+518 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n+519 datamode, *vertexmapper );\n+520 }\n 521\n-522 // If on periodic overlap, transform coordinates by domain size\n-523 for (int i=0; img->isPeriodic(i)) {\n-525 int coord = _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br().coord(i);\n-526 if (coord < 0) {\n-527 auto size = _\b__\bg->mg->domainSize()[i];\n-528 ll[i] += size;\n-529 ur[i] += size;\n-530 } else if (coord + 1 > _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->mg->levelSize(_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl()->_\bl_\be_\bv_\be_\bl(),i))\n-{\n-531 auto size = _\b__\bg->mg->domainSize()[i];\n-532 ll[i] -= size;\n-533 ur[i] -= size;\n-534 }\n-535 }\n-536 }\n-537\n-538 GeometryImpl _geometry(ll,ur);\n-539 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _geometry );\n-540 }\n-541\n-_\b5_\b4_\b5 constexpr GeometryType _\bt_\by_\bp_\be () const\n-546 {\n-547 return GeometryTypes::cube(_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-548 }\n-549\n-_\b5_\b5_\b4 template int _\bc_\bo_\bu_\bn_\bt () const\n-555 {\n-556 return Dune::Yasp::subEnt(dim,cc);\n-557 }\n-558\n-_\b5_\b6_\b3 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int codim) const\n-564 {\n-565 return Dune::Yasp::subEnt(dim,codim);\n-566 }\n-567\n-570 template\n-_\b5_\b7_\b1 typename _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by (int i) const\n-572 {\n-573 // calculate move bitset\n-574 std::bitset move = Dune::Yasp::entityMove(i,cc);\n-575\n-576 // get the coordinate and modify it\n-577 _\bi_\bT_\bu_\bp_\be_\bl coord = _\b__\bi_\bt.coord();\n-578 for (int j=0; joverlapfront[cc].shiftmapping(Dune::Yasp::entityShift\n-(i,cc));\n-583 return typename _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bc_\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\bc_\bc_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>\n-(_\b__\bg,_\b__\bg->overlapfront[cc].begin(coord, which)));\n-584 }\n-585\n-_\b5_\b8_\b7 _\bE_\bn_\bt_\bi_\bt_\by _\bf_\ba_\bt_\bh_\be_\br () const\n-588 {\n-589 // check if coarse level exists\n-590 if (_\b__\bg->level()<=0)\n-591 DUNE_THROW(_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br, \"tried to call father on level 0\");\n-592\n-593 // yes, get iterator to it\n-594 _\bY_\bG_\bL_\bI cg(_\b__\bg);\n-595 --cg;\n-596\n-597 // coordinates of the cell\n-598 _\bi_\bT_\bu_\bp_\be_\bl coord = _\b__\bi_\bt.coord();\n-599\n-600 // get coordinates on next coarser level\n-601 for (int k=0; k(cg,cg->overlap\n-[0].begin(coord)));\n-604 }\n-605\n-_\b6_\b0_\b7 bool _\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br () const\n-608 {\n-609 return (_\b__\bg->level()>0);\n+523\n+_\b5_\b3_\b7 class _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br :\n+538 public ForwardIteratorFacade\n+539 {\n+540 GridCellIterator git;\n+541 GridCellIterator gend;\n+542 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be datamode;\n+543 // Index of the currently visited corner within the current element.\n+544 // NOTE: this is in VTK-numbering, in contrast to VertexIterator.\n+545 int cornerIndexVTK;\n+546 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vertexmapper;\n+547 // in conforming mode, for each vertex id (as obtained by vertexmapper)\n+548 // hold its number in the iteration order of VertexIterator (*not*\n+549 // CornerIterator)\n+550 const std::vector & number;\n+551 // holds the number of corners of all the elements we have seen so far,\n+552 // excluding the current element\n+553 int offset;\n+554\n+555 // hide operator ->\n+556 void operator->();\n+557 public:\n+_\b5_\b5_\b8 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const GridCellIterator & x,\n+559 const GridCellIterator & end,\n+560 const _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be & dm,\n+561 const _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br & vm,\n+562 const std::vector & num) :\n+563 git(x), gend(end), datamode(dm), cornerIndexVTK(0),\n+564 vertexmapper(vm),\n+565 number(num), offset(0) {}\n+_\b5_\b6_\b6 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+567 {\n+568 if( git == gend )\n+569 return;\n+570 ++cornerIndexVTK;\n+571 const int numCorners = git->subEntities(n);\n+572 if( cornerIndexVTK == numCorners )\n+573 {\n+574 offset += numCorners;\n+575 cornerIndexVTK = 0;\n+576\n+577 ++git;\n+578 while( (git != gend) && skipEntity( git->partitionType() ) )\n+579 ++git;\n+580 }\n+581 }\n+_\b5_\b8_\b2 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br & cit) const\n+583 {\n+584 return git == cit.git\n+585 && cornerIndexVTK == cit.cornerIndexVTK\n+586 && datamode == cit.datamode;\n+587 }\n+_\b5_\b8_\b8 EntityReference _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n+589 {\n+590 return *git;\n+591 }\n+593\n+_\b5_\b9_\b7 int _\bi_\bd () const\n+598 {\n+599 switch (datamode)\n+600 {\n+601 case _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n+602 return\n+603 number[vertexmapper._\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*git,_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br(*git,cornerIndexVTK),\n+604 n)];\n+605 case _\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg :\n+606 return offset + _\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br(*git,cornerIndexVTK);\n+607 default :\n+608 DUNE_THROW(IOError,\"VTKWriter: unsupported DataMode\" << datamode);\n+609 }\n 610 }\n-611\n-_\b6_\b1_\b4 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br () const\n-615 {\n-616 // configure one of the 2^dim transformations\n-617 FieldVector ll(0.0),ur(0.5);\n-618\n-619 for (int k=0; k(),\n+616 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n+617 datamode, *vertexmapper, number );\n+618 }\n+619\n+_\b6_\b2_\b0 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd () const\n+621 {\n+622 return _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n+623 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_.template end< 0, VTK_Partition >(),\n+624 datamode, *vertexmapper, number );\n 625 }\n-626 }\n-627\n-628 return _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by( _\bY_\ba_\bs_\bp_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\bd_\bi_\bm_\b,_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(ll,ur) );\n-629 }\n-630\n-_\b6_\b3_\b1 const _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br () const { return _\b__\bi_\bt; }\n-_\b6_\b3_\b2 const _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl () const { return _\b__\bg; }\n-_\b6_\b3_\b3 _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() { return _\b__\bi_\bt; }\n-_\b6_\b3_\b4 _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() { return _\b__\bg; }\n-_\b6_\b3_\b5 const GridImp* _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd () const { return _\b__\bg->mg; }\n-636\n-_\b6_\b3_\b7 bool _\bi_\bs_\bL_\be_\ba_\bf() const\n-638 {\n-639 return (_\b__\bg->level() == _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()->maxLevel());\n-640 }\n-641\n-_\b6_\b4_\b4 bool _\bi_\bs_\bN_\be_\bw () const { return _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()->adaptRefCount > 0 && _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()-\n->maxLevel() < _\b__\bg->level() + _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd()->adaptRefCount; }\n-645\n-_\b6_\b4_\b8 bool _\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh () const { return false; }\n-649\n-_\b6_\b5_\b1 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bb_\be_\bg_\bi_\bn () const\n-652 {\n-653 return _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(*this,false);\n-654 }\n-655\n-_\b6_\b5_\b7 _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn () const\n-658 {\n-659 // only if entity is leaf this iterator delivers intersections\n-660 return _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(*this, ! isLeaf() );\n-661 }\n-662\n-_\b6_\b6_\b4 _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn () const\n-665 {\n-666 return ibegin();\n-667 }\n-668\n-_\b6_\b7_\b0 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\be_\bn_\bd () const\n-671 {\n-672 return _\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(*this,true);\n-673 }\n-674\n-_\b6_\b7_\b6 _\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\ba_\bf_\be_\bn_\bd () const\n-677 {\n-678 return iend();\n-679 }\n-680\n-_\b6_\b8_\b2 _\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd () const\n-683 {\n-684 return iend();\n-685 }\n-686\n-_\b6_\b9_\b1 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br _\bh_\bb_\be_\bg_\bi_\bn (int maxlevel) const\n-692 {\n-693 return _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg,_\b__\bi_\bt,maxlevel);\n-694 }\n-695\n-_\b6_\b9_\b7 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br hend (int /* maxlevel */) const\n-698 {\n-699 return _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg,_\b__\bi_\bt,_\b__\bg->level());\n-700 }\n-701\n-702 private:\n-703 // IndexSets needs access to the private index methods\n-704 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-705 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-706 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-707\n-709 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx () const\n-710 {\n-711 // encode codim\n-712 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be id(_\b__\bi_\bt.shift().to_ulong());\n-713\n-714 // encode level\n-715 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs;\n-716 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bg->level());\n+626\n+627 public:\n+_\b6_\b3_\b6 explicit _\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br ( const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &gridView,\n+637 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be dm = _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg,\n+638 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+639 : _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_( gridView ),\n+640 datamode( dm ),\n+641 coordPrec (_\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn),\n+642 polyhedralCellsPresent_( _\bc_\bh_\be_\bc_\bk_\bF_\bo_\br_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\ba_\bl_\bC_\be_\bl_\bl_\bs() )\n+643 { }\n+644\n+_\b6_\b4_\b9 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const std::shared_ptr< const VTKFunction > & p)\n+650 {\n+651 _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(p));\n+652 }\n+653\n+673 template\n+_\b6_\b7_\b4 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo vtkFieldInfo)\n+675 {\n+676 _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(std::forward(f),vtkFieldInfo));\n+677 }\n+678\n+694 template\n+_\b6_\b9_\b5 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const Container& v, const std::string &name, int ncomps =\n+1,\n+696 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+697 {\n+698 typedef _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b,_\b _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b> Function;\n+699 for (int c=0; c1)\n+703 compName << \"[\" << c << \"]\";\n+704 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p = new Function(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_, v, compName.str(), ncomps, c,\n+prec);\n+705 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr< const VTKFunction >(p));\n+706 }\n+707 }\n+708\n+_\b7_\b1_\b3 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const std::shared_ptr< const VTKFunction > & p)\n+714 {\n+715 _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(p));\n+716 }\n 717\n-718\n-719 // encode coordinates\n-720 for (int i=dim-1; i>=0; i--)\n-721 {\n-722 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n-723 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bi_\bt.coord(i));\n-724 }\n-725\n-726 return id;\n-727 }\n-728\n-730 int _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx () const\n-731 {\n-732 return _\b__\bi_\bt.superindex();\n-733 }\n-734\n-736 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be subPersistentIndex (int i, int cc) const\n-737 {\n-738 // calculate shift and move bitsets\n-739 std::bitset shift = Dune::Yasp::entityShift(i,cc);\n-740 std::bitset move = Dune::Yasp::entityMove(i,cc);\n-741\n-742 int trailing = (cc == dim) ? 1000 : 0;\n+737 template\n+_\b7_\b3_\b8 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(F&& f, _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo vtkFieldInfo)\n+739 {\n+740 _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.push_back(_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(std::forward(f),vtkFieldInfo));\n+741 }\n+742\n 743\n-744 std::array size = _\b__\bg->mg->levelSize(_\b__\bg->level());\n-745 std::array coord = _\b__\bi_\bt.coord();\n-746 for (int j=0; jlevel(); k++)\n-764 if (coord[j] & (1<level()-trailing);\n-778\n-779 // encode coordinates\n-780 for (int j=dim-1; j>=0; j--)\n-781 {\n-782 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n-783 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(coord[j]>>trailing);\n-784 }\n-785\n-786 return id;\n-787 }\n-788\n-790 int _\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx (int i, int cc) const\n-791 {\n-792 // get shift and move of the subentity in question\n-793 std::bitset shift = Dune::Yasp::entityShift(i,cc);\n-794 std::bitset move = Dune::Yasp::entityMove(i,cc);\n-795\n-796 std::array coord = _\b__\bi_\bt.coord();\n-797 for (int j=0; joverlapfront[cc].shiftmapping(shift);\n-801 return _\b__\bg->overlapfront[cc].superindex(coord,which);\n-802 }\n-803\n-804 _\bI _\b__\bi_\bt = {}; // position in the grid level\n-805 _\bY_\bG_\bL_\bI _\b__\bg = {}; // access to grid level\n-806 };\n-807\n+759 template\n+_\b7_\b6_\b0 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const Container& v, const std::string &name, int\n+ncomps=1,\n+761 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+762 {\n+763 typedef _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b,_\b _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b> Function;\n+764 for (int c=0; c1)\n+768 compName << \"[\" << c << \"]\";\n+769 _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p = new Function(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_, v, compName.str(), ncomps, c,\n+prec);\n+770 _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(std::shared_ptr< const VTKFunction >(p));\n+771 }\n+772 }\n+773\n+_\b7_\b7_\b5 void _\bc_\bl_\be_\ba_\br ()\n+776 {\n+777 _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.clear();\n+778 _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.clear();\n+779 }\n+780\n+_\b7_\b8_\b2 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const\n+783 { return coordPrec; }\n+784\n+_\b7_\b8_\b6 virtual _\b~_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br ()\n+787 {\n+788 this->_\bc_\bl_\be_\ba_\br();\n+789 }\n+790\n+_\b8_\b0_\b3 std::string _\bw_\br_\bi_\bt_\be ( const std::string &name,\n+804 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type = _\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi )\n+805 {\n+806 return _\bw_\br_\bi_\bt_\be( name, type, _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().rank(), _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().size()\n+);\n+807 }\n 808\n-809 // specialization for codim=dim (vertex)\n-810 template\n-_\b8_\b1_\b1 class _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-812 : public _\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn \n-813 {\n-814 constexpr static int dimworld = GridImp::dimensionworld;\n-815\n-816 template\n-_\b8_\b1_\b7 friend class _\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n-818\n-819 typedef typename GridImp::Traits::template Codim::GeometryImpl\n-_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl;\n-820\n-821 public:\n-_\b8_\b2_\b2 typedef typename GridImp::ctype _\bc_\bt_\by_\bp_\be;\n-823\n-_\b8_\b2_\b4 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n-_\b8_\b2_\b5 typedef typename GridImp::YGrid::Iterator _\bI;\n-826\n-_\b8_\b2_\b7 typedef typename GridImp::template Codim::Geometry _\bG_\be_\bo_\bm_\be_\bt_\br_\by;\n-828\n-_\b8_\b2_\b9 typedef typename GridImp::template Codim::EntitySeed _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd;\n-830\n-_\b8_\b3_\b2 typedef typename GridImp::PersistentIndexType _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be;\n-833\n-_\b8_\b3_\b5 typedef typename GridImp::YGrid::iTupel _\bi_\bT_\bu_\bp_\be_\bl;\n-836\n-837 // constructor\n-_\b8_\b3_\b8 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by ()\n-839 {}\n+_\b8_\b3_\b5 std::string _\bp_\bw_\br_\bi_\bt_\be ( const std::string & name, const std::string & path,\n+const std::string & extendpath,\n+836 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type = _\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi )\n+837 {\n+838 return _\bp_\bw_\br_\bi_\bt_\be( name, path, extendpath, type, _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().rank(),\n+_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().size() );\n+839 }\n 840\n-_\b8_\b4_\b1 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (const _\bY_\bG_\bL_\bI& g, const _\bI& it)\n-842 : _\b__\bi_\bt(it), _\b__\bg(g)\n-843 {}\n-844\n-_\b8_\b4_\b5 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by (_\bY_\bG_\bL_\bI&& g, _\bI&& it)\n-846 : _\b__\bi_\bt(_\bs_\bt_\bd::move(it)), _\b__\bg(_\bs_\bt_\bd::move(g))\n-847 {}\n-848\n-_\b8_\b5_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by& e) const\n-851 {\n-852 return _\b__\bi_\bt == e._\b__\bi_\bt && _\b__\bg == e._\b__\bg;\n-853 }\n-854\n-_\b8_\b5_\b6 int _\bl_\be_\bv_\be_\bl () const {return _\b__\bg->level();}\n-857\n-_\b8_\b6_\b1 _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd _\bs_\be_\be_\bd () const {\n-862 return _\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd_\b<_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>(_\b__\bg->level(), _\b__\bi_\bt.coord(),\n-_\b__\bi_\bt.which()));\n-863 }\n-864\n-_\b8_\b6_\b9 unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs (unsigned int cc) const\n-870 {\n-871 return Dune::Yasp::subEnt(dim-dim,cc-dim);\n-872 }\n-873\n-_\b8_\b7_\b5 _\bG_\be_\bo_\bm_\be_\bt_\br_\by _\bg_\be_\bo_\bm_\be_\bt_\br_\by () const {\n-876 GeometryImpl _geometry((_\b__\bi_\bt).lowerleft());\n-877 return _\bG_\be_\bo_\bm_\be_\bt_\br_\by( _geometry );\n-878 }\n-879\n-_\b8_\b8_\b3 constexpr GeometryType _\bt_\by_\bp_\be () const\n+841 protected:\n+843\n+_\b8_\b5_\b5 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n+856 const std::string& path,\n+857 int commRank, int commSize) const\n+858 {\n+859 std::ostringstream s;\n+860 // write path first\n+861 if(path.size() > 0)\n+862 {\n+863 s << path;\n+864 if(path[path.size()-1] != '/')\n+865 s << '/';\n+866 }\n+867\n+868 std::string fileprefix;\n+869 // check if a path was already added to name\n+870 // and if yes find filename without path\n+871 auto pos = name.rfind('/');\n+872 if( pos != std::string::npos )\n+873 {\n+874 // extract filename without path\n+875 fileprefix = name.substr( pos+1 );\n+876 // extract the path and added it before\n+877 // the magic below is added\n+878 std::string newpath = name.substr(0, pos);\n+879 s << newpath;\n+880 if(newpath[name.size()-1] != '/')\n+881 s << '/';\n+882 }\n+883 else\n 884 {\n-885 return GeometryTypes::cube(_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-886 }\n-887\n-_\b8_\b8_\b9 _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be () const\n-890 {\n-891 if (_\b__\bg->interior[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-892 return _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-893 if (_\b__\bg->interiorborder[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-894 return _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by;\n-895 if (_\b__\bg->overlap[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-896 return _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by;\n-897 if (_\b__\bg->overlapfront[dim].inside(_\b__\bi_\bt.coord(),_\b__\bi_\bt.shift()))\n-898 return _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-899 return _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by;\n-900 }\n+885 // if no path was found just copy the name\n+886 fileprefix = name;\n+887 }\n+888\n+889 s << 's' << std::setw(4) << std::setfill('0') << commSize << '-';\n+890 const bool writeHeader = commRank < 0;\n+891 if( ! writeHeader )\n+892 {\n+893 s << 'p' << std::setw(4) << std::setfill('0') << commRank << '-';\n+894 }\n+895\n+896 s << fileprefix << \".\";\n+897 // write p for header files\n+898 if( writeHeader )\n+899 s << \"p\";\n+900 s << \"vt\";\n 901\n-_\b9_\b0_\b3 int _\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx (int, unsigned int ) const\n-904 {\n-905 return _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx();\n-906 }\n-907\n-908 private:\n-909 // IndexSets needs access to the private index methods\n-910 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-911 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt;\n-912 friend class _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt;\n-913\n-915 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be _\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx () const\n-916 {\n-917 // get coordinate and size of global grid\n-918 iTupel size = _\b__\bg->mg->levelSize(_\b__\bg->level());\n-919\n-920 for (int i=0; ilevel(); j++)\n-933 if (_\b__\bi_\bt.coord(i)&(1<level()-trailing;\n-942\n-943 // encode codim: shift vector of vertices is 0.\n-944 _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be id(0);\n+902 if(_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn > 1)\n+903 s << \"u\";\n+904 else\n+905 s << \"p\";\n+906 return s.str();\n+907 }\n+908\n+910\n+_\b9_\b2_\b0 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(const std::string& name,\n+921 const std::string& path,\n+922 int commSize) const\n+923 {\n+924 return _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be( name, path, -1, commSize );\n+925 }\n+926\n+928\n+_\b9_\b4_\b0 std::string _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n+941 const std::string& path) const\n+942 {\n+943 static const std::string extension =\n+944 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn == 1 ? \".vtp\" : \".vtu\";\n 945\n-946 // encode level\n-947 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs;\n-948 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\bl_\be_\bv_\be_\bl);\n-949\n-950 // encode coordinates\n-951 for (int i=dim-1; i>=0; i--)\n-952 {\n-953 id = id << _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs;\n-954 id = id+_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be(_\b__\bi_\bt.coord(i)>>trailing);\n-955 }\n-956\n-957 return id;\n-958 }\n-959\n-961 int _\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx () const { return _\b__\bi_\bt.superindex();}\n-962\n-963 public:\n-_\b9_\b6_\b4 const _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() const { return _\b__\bi_\bt; }\n-_\b9_\b6_\b5 const _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() const { return _\b__\bg; }\n-_\b9_\b6_\b6 _\bI& _\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br() { return _\b__\bi_\bt; }\n-_\b9_\b6_\b7 _\bY_\bG_\bL_\bI& _\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl() { return _\b__\bg; }\n-968\n-_\b9_\b6_\b9 const GridImp * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd() const { return _\b__\bg->mg; }\n-970 protected:\n-_\b9_\b7_\b1 _\bI _\b__\bi_\bt = {}; // position in the grid level\n-_\b9_\b7_\b2 _\bY_\bG_\bL_\bI _\b__\bg = {}; // access to grid level\n-973 };\n-974\n-975} // namespace Dune\n+946 return concatPaths(path, name+extension);\n+947 }\n+948\n+_\b9_\b6_\b5 std::string _\bw_\br_\bi_\bt_\be ( const std::string &name,\n+966 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type,\n+967 const int commRank,\n+968 const int commSize )\n+969 {\n+970 // in the parallel case, just use pwrite, it has all the necessary\n+971 // stuff, so we don't need to reimplement it here.\n+972 if(commSize > 1)\n+973 {\n+974 std::string filename = name;\n+975 std::string path = std::string(\"\");\n 976\n-977#endif // DUNE_GRID_YASPGRIDENTITY_HH\n+977 // check if a path was already added to name\n+978 // and if yes find filename without path\n+979 auto pos = name.rfind('/');\n+980 if( pos != std::string::npos )\n+981 {\n+982 // extract filename without path\n+983 filename = name.substr( pos+1 );\n+984\n+985 // extract the path and added it before\n+986 // the magic below is added\n+987 path = name.substr(0, pos);\n+988 }\n+989\n+990 return _\bp_\bw_\br_\bi_\bt_\be(filename, path, \"\", type, commRank, commSize);\n+991 }\n+992\n+993 // make data mode visible to private functions\n+994 _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be = type;\n+995\n+996 // generate filename for process data\n+997 std::string pieceName = _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, \"\");\n+998\n+999 // write process data\n+1000 std::ofstream file;\n+1001 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n+1002 std::ios_base::eofbit);\n+1003 // check if file can be opened\n+1004 try {\n+1005 file.open( pieceName.c_str(), std::ios::binary );\n+1006 }\n+1007 catch(...) {\n+1008 std::cerr << \"Filename: \" << pieceName << \" could not be opened\" << std::\n+endl;\n+1009 throw;\n+1010 }\n+1011 if (! file.is_open())\n+1012 DUNE_THROW(IOError, \"Could not write to piece file \" << pieceName);\n+1013 writeDataFile( file );\n+1014 file.close();\n+1015\n+1016 return pieceName;\n+1017 }\n+1018\n+1020\n+_\b1_\b0_\b4_\b3 std::string _\bp_\bw_\br_\bi_\bt_\be(const std::string& name, const std::string& path,\n+1044 const std::string& extendpath,\n+1045 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be ot, const int commRank,\n+1046 const int commSize )\n+1047 {\n+1048 // make data mode visible to private functions\n+1049 _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be=ot;\n+1050\n+1051 // do some magic because paraview can only cope with relative paths to\n+piece files\n+1052 std::ofstream file;\n+1053 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n+1054 std::ios_base::eofbit);\n+1055 std::string piecepath = concatPaths(path, extendpath);\n+1056 std::string relpiecepath = relativePath(path, piecepath);\n+1057\n+1058 // write this processes .vtu/.vtp piece file\n+1059 std::string fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, piecepath, commRank,\n+1060 commSize);\n+1061 // check if file can be opened\n+1062 try {\n+1063 file.open(fullname.c_str(),std::ios::binary);\n+1064 }\n+1065 catch(...) {\n+1066 std::cerr << \"Filename: \" << fullname << \" could not be opened\" << std::\n+endl;\n+1067 throw;\n+1068 }\n+1069 if (! file.is_open())\n+1070 DUNE_THROW(IOError, \"Could not write to piecefile file \" << fullname);\n+1071 writeDataFile(file);\n+1072 file.close();\n+1073 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().barrier();\n+1074\n+1075 // if we are rank 0, write .pvtu/.pvtp parallel header\n+1076 fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(name, path, commSize);\n+1077 if( commRank ==0 )\n+1078 {\n+1079 file.open(fullname.c_str());\n+1080 if (! file.is_open())\n+1081 DUNE_THROW(IOError, \"Could not write to parallel file \" << fullname);\n+1082 writeParallelHeader(file,name,relpiecepath, commSize );\n+1083 file.close();\n+1084 }\n+1085 _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bc_\bo_\bm_\bm().barrier();\n+1086 return fullname;\n+1087 }\n+1088\n+1089 private:\n+1091\n+1108 void writeParallelHeader(std::ostream& s, const std::string& piecename,\n+1109 const std::string& piecepath, const int commSize)\n+1110 {\n+1111 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType =\n+1112 (n == 1) ? _\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : VTK::unstructuredGrid;\n+1113\n+1114 _\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br writer(s, fileType);\n+1115\n+1116 writer.beginMain();\n+1117\n+1118 // PPointData\n+1119 {\n+1120 std::string scalars, vectors;\n+1121 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba);\n+1122 writer.beginPointData(scalars, vectors);\n+1123 }\n+1124 for (auto it = _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.begin(),\n+1125 end = _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.end();\n+1126 it != end;\n+1127 ++it)\n+1128 {\n+1129 unsigned writecomps = it->fieldInfo().size();\n+1130 if(writecomps == 2) writecomps = 3;\n+1131 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());\n+1132 }\n+1133 writer.endPointData();\n+1134\n+1135 // PCellData\n+1136 {\n+1137 std::string scalars, vectors;\n+1138 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba);\n+1139 writer.beginCellData(scalars, vectors);\n+1140 }\n+1141 for (auto it = _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.begin(),\n+1142 end = _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.end();\n+1143 it != end;\n+1144 ++it)\n+1145 {\n+1146 unsigned writecomps = it->fieldInfo().size();\n+1147 if(writecomps == 2) writecomps = 3;\n+1148 writer.addArray(it->name(), writecomps, it->fieldInfo().precision());\n+1149 }\n+1150 writer.endCellData();\n+1151\n+1152 // PPoints\n+1153 writer.beginPoints();\n+1154 writer.addArray(\"Coordinates\", 3, coordPrec);\n+1155 writer.endPoints();\n+1156\n+1157 // Pieces\n+1158 for( int i = 0; i < commSize; ++i )\n+1159 {\n+1160 const std::string& fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(piecename,\n+1161 piecepath, i,\n+1162 commSize);\n+1163 writer.addPiece(fullname);\n+1164 }\n+1165\n+1166 writer.endMain();\n+1167 }\n+1168\n+1170 void writeDataFile (std::ostream& s)\n+1171 {\n+1172 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType =\n+1173 (n == 1) ? _\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : VTK::_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd;\n+1174\n+1175 VTK::VTUWriter writer(s, _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be, fileType);\n+1176\n+1177 // Grid characteristics\n+1178 vertexmapper = new VertexMapper( _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_, _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt() );\n+1179 if (datamode == _\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg)\n+1180 {\n+1181 number.resize(vertexmapper->_\bs_\bi_\bz_\be());\n+1182 for (std::vector::size_type i=0; imap(), this iteration must be\n+1244 // in the order of Dune's numbering.\n+1245 const int subEntities = it->subEntities(n);\n+1246 for (int i=0; i_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(*it,i,n);\n+1252 if (number[alpha]<0)\n+1253 number[alpha] = nvertices_++;\n+1254 }\n+1255 else\n+1256 {\n+1257 nvertices_++;\n+1258 }\n+1259 }\n+1260 }\n+1261 }\n+1262\n+1263 template\n+_\b1_\b2_\b6_\b4 std::tuple _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(const T& data) const\n+1265 {\n+1266 std::string scalars = \"\";\n+1267 for (auto it = data.begin(),\n+1268 end = data.end();\n+1269 it != end;\n+1270 ++it)\n+1271 if (it->fieldInfo().type() == _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br)\n+1272 {\n+1273 scalars = it->name();\n+1274 break;\n+1275 }\n+1276\n+1277 std::string vectors = \"\";\n+1278 for (auto it = data.begin(),\n+1279 end = data.end();\n+1280 it != end;\n+1281 ++it)\n+1282 if (it->fieldInfo().type() == _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br)\n+1283 {\n+1284 vectors = it->name();\n+1285 break;\n+1286 }\n+1287 return std::make_tuple(scalars,vectors);\n+1288 }\n+1289\n+1290 template\n+_\b1_\b2_\b9_\b1 void _\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, const Data& data, const Iterator\n+begin, const Iterator end, int nentries)\n+1292 {\n+1293 for (auto it = data.begin(),\n+1294 iend = data.end();\n+1295 it != iend;\n+1296 ++it)\n+1297 {\n+1298 const auto& f = *it;\n+1299 _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo fieldInfo = f.fieldInfo();\n+1300 std::size_t writecomps = fieldInfo._\bs_\bi_\bz_\be();\n+1301 switch (fieldInfo._\bt_\by_\bp_\be())\n+1302 {\n+1303 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br:\n+1304 break;\n+1305 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br:\n+1306 // vtk file format: a vector data always should have 3 comps (with\n+1307 // 3rd comp = 0 in 2D case)\n+1308 if (writecomps > 3)\n+1309 DUNE_THROW(IOError,\"Cannot write VTK vectors with more than 3 components\n+(components was \" << writecomps << \")\");\n+1310 writecomps = 3;\n+1311 break;\n+1312 case _\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br:\n+1313 DUNE_THROW(NotImplemented,\"VTK output for tensors not implemented yet\");\n+1314 }\n+1315 std::shared_ptr p\n+1316 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(f.name(), writecomps, nentries,\n+fieldInfo._\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn()));\n+1317 if(!p->writeIsNoop())\n+1318 for (Iterator eit = begin; eit!=end; ++eit)\n+1319 {\n+1320 const Entity & e = *eit;\n+1321 f.bind(e);\n+1322 f.write(eit.position(),*p);\n+1323 f.unbind();\n+1324 // vtk file format: a vector data always should have 3 comps\n+1325 // (with 3rd comp = 0 in 2D case)\n+1326 for (std::size_t j=fieldInfo._\bs_\bi_\bz_\be(); j < writecomps; ++j)\n+1327 p->write(0.0);\n+1328 }\n+1329 }\n+1330 }\n+1331\n+_\b1_\b3_\b3_\b3 virtual void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+1334 {\n+1335 if(_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba.size() == 0)\n+1336 return;\n+1337\n+1338 std::string scalars, vectors;\n+1339 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba);\n+1340\n+1341 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(scalars, vectors);\n+1342 _\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba(writer,_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba,_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn(),_\bc_\be_\bl_\bl_\bE_\bn_\bd(),_\bn_\bc_\be_\bl_\bl_\bs);\n+1343 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n+1344 }\n+1345\n+_\b1_\b3_\b4_\b7 virtual void _\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+1348 {\n+1349 if(_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba.size() == 0)\n+1350 return;\n+1351\n+1352 std::string scalars, vectors;\n+1353 std::tie(scalars,vectors) = _\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs(_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba);\n+1354\n+1355 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(scalars, vectors);\n+1356 _\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba(writer,_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba,_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn(),_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd(),_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs);\n+1357 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n+1358 }\n+1359\n+_\b1_\b3_\b6_\b1 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+1362 {\n+1363 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n+1364\n+1365 std::shared_ptr p\n+1366 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"Coordinates\", 3, _\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs, coordPrec));\n+1367 if(!p->writeIsNoop()) {\n+1368 _\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br vEnd = _\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd();\n+1369 for (_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br vit=_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn(); vit!=vEnd; ++vit)\n+1370 {\n+1371 int dimw=w;\n+1372 for (int j=0; jwrite((*vit).geometry().corner(vit.localindex())[j]);\n+1374 for (int j=std::min(dimw,3); j<3; j++)\n+1375 p->write(0.0);\n+1376 }\n+1377 }\n+1378 // free the VTK::DataArrayWriter before touching the stream\n+1379 p.reset();\n+1380\n+1381 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n+1382 }\n+1383\n+_\b1_\b3_\b8_\b5 virtual void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+1386 {\n+1387 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs();\n+1388\n+1389 // connectivity\n+1390 {\n+1391 std::shared_ptr p1\n+1392 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"connectivity\", 1, _\bn_\bc_\bo_\br_\bn_\be_\br_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:\n+_\bi_\bn_\bt_\b3_\b2));\n+1393 if(!p1->writeIsNoop())\n+1394 for (_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=_\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn(); it!=_\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd(); ++it)\n+1395 p1->write(it.id());\n+1396 }\n+1397\n+1398 // offsets\n+1399 {\n+1400 std::shared_ptr p2\n+1401 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"offsets\", 1, _\bn_\bc_\be_\bl_\bl_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+1402 if(!p2->writeIsNoop()) {\n+1403 int offset = 0;\n+1404 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn(); it!=_\bc_\be_\bl_\bl_\bE_\bn_\bd(); ++it)\n+1405 {\n+1406 offset += it->subEntities(n);\n+1407 p2->write(offset);\n+1408 }\n+1409 }\n+1410 }\n+1411\n+1412 // types\n+1413 if (n>1)\n+1414 {\n+1415 {\n+1416 std::shared_ptr p3\n+1417 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"types\", 1, _\bn_\bc_\be_\bl_\bl_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8));\n+1418\n+1419 if(!p3->writeIsNoop())\n+1420 {\n+1421 for (_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it=_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn(); it!=_\bc_\be_\bl_\bl_\bE_\bn_\bd(); ++it)\n+1422 {\n+1423 int vtktype = _\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(it->type());\n+1424 p3->write(vtktype);\n+1425 }\n+1426 }\n+1427 }\n+1428\n+1429\n+1430 // if polyhedron cells found also cell faces need to be written\n+1431 if( polyhedralCellsPresent_ )\n+1432 {\n+1433 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\ba_\bc_\be_\bs( writer );\n+1434 }\n+1435 }\n+1436\n+1437 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bs();\n+1438 }\n+1439\n+1440 protected:\n+_\b1_\b4_\b4_\b1 bool _\bc_\bh_\be_\bc_\bk_\bF_\bo_\br_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\ba_\bl_\bC_\be_\bl_\bl_\bs() const\n+1442 {\n+1443 // check if polyhedron cells are present\n+1444 for( const auto& geomType : _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt().types( 0 ) )\n+1445 {\n+1446 if( _\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be( geomType ) == _\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn )\n+1447 {\n+1448 return true;\n+1449 }\n+1450 }\n+1451 return false;\n+1452 }\n+1453\n+_\b1_\b4_\b5_\b5 virtual void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\ba_\bc_\be_\bs(_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer)\n+1456 {\n+1457 if( ! faceVertices_ )\n+1458 {\n+1459 faceVertices_.reset( new std::pair< std::vector, std::vector >\n+() );\n+1460 // fill face vertex structure\n+1461 _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn(), _\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd(), _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_._\bi_\bn_\bd_\be_\bx_\bS_\be_\bt(),\n+1462 faceVertices_->first, faceVertices_->second );\n+1463 }\n+1464\n+1465 std::vector< int >& faces = faceVertices_->first;\n+1466 std::vector< int >& faceOffsets = faceVertices_->second;\n+1467 assert( int(faceOffsets.size()) == _\bn_\bc_\be_\bl_\bl_\bs );\n+1468\n+1469 {\n+1470 std::shared_ptr p4\n+1471 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"faces\", 1, faces.size(), _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+1472 if(!p4->writeIsNoop())\n+1473 {\n+1474 for( const auto& face : faces )\n+1475 p4->write( face );\n+1476 }\n+1477 }\n+1478\n+1479 {\n+1480 std::shared_ptr p5\n+1481 (writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(\"faceoffsets\", 1, _\bn_\bc_\be_\bl_\bl_\bs, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2));\n+1482 if(!p5->writeIsNoop())\n+1483 {\n+1484 for( const auto& offset : faceOffsets )\n+1485 p5->write( offset );\n+1486\n+1487 // clear face vertex structure\n+1488 faceVertices_.reset();\n+1489 }\n+1490 }\n+1491 }\n+1492\n+1493 template \n+_\b1_\b4_\b9_\b4 inline void _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br it,\n+1495 const _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br end,\n+1496 const IndexSet& indexSet,\n+1497 std::vector& faces,\n+1498 std::vector& faceOffsets )\n+1499 {\n+1500 if( n == 3 && it != end )\n+1501 {\n+1502 // clear output arrays\n+1503 faces.clear();\n+1504 faces.reserve( 15 * _\bn_\bc_\be_\bl_\bl_\bs );\n+1505 faceOffsets.clear();\n+1506 faceOffsets.reserve( _\bn_\bc_\be_\bl_\bl_\bs );\n+1507\n+1508 int offset = 0;\n+1509\n+1510 Cell element = *it;\n+1511 int elIndex = indexSet.index( element );\n+1512 std::vector< T > vertices;\n+1513 vertices.reserve( 30 );\n+1514 for( ; it != end; ++it )\n+1515 {\n+1516 const Cell& cell = *it ;\n+1517 const int cellIndex = indexSet.index( cell ) ;\n+1518 if( elIndex != cellIndex )\n+1519 {\n+1520 _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt( element, indexSet, vertices, offset, faces,\n+faceOffsets );\n+1521\n+1522 vertices.clear();\n+1523 element = cell ;\n+1524 elIndex = cellIndex ;\n+1525 }\n+1526 vertices.push_back( it._\bi_\bd() );\n+1527 }\n+1528\n+1529 // fill faces for last element\n+1530 _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt( element, indexSet, vertices, offset, faces,\n+faceOffsets );\n+1531 }\n+1532 }\n+1533\n+1534 template \n+_\b1_\b5_\b3_\b5 static void _\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt( const Entity& element,\n+1536 const IndexSet& indexSet,\n+1537 const std::vector& vertices,\n+1538 T& offset,\n+1539 std::vector& faces,\n+1540 std::vector& faceOffsets )\n+1541 {\n+1542 const int dim = n;\n+1543\n+1544 std::map< T, T > vxMap;\n+1545\n+1546 // get number of local faces\n+1547 const int nVertices = element.subEntities( dim );\n+1548 for( int vx = 0; vx < nVertices; ++ vx )\n+1549 {\n+1550 const int vxIdx = indexSet.subIndex( element, vx, dim );\n+1551 vxMap[ vxIdx ] = vertices[ vx ];\n+1552 }\n+1553\n+1554 // get number of local faces\n+1555 const int nFaces = element.subEntities( 1 );\n+1556 // store number of faces for current element\n+1557 faces.push_back( nFaces );\n+1558 ++offset;\n+1559 // extract each face as a set of vertex indices\n+1560 for( int fce = 0; fce < nFaces; ++ fce )\n+1561 {\n+1562 // obtain face\n+1563 const auto face = element.template subEntity< 1 > ( fce );\n+1564\n+1565 // get all vertex indices from current face\n+1566 const int nVxFace = face.subEntities( dim );\n+1567 faces.push_back( nVxFace );\n+1568 ++offset ;\n+1569 for( int i=0; i _\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba;\n+_\b1_\b5_\b8_\b5 std::list _\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba;\n+1586\n+1587 // the grid\n+_\b1_\b5_\b8_\b8 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_;\n+1589\n+1590 // temporary grid information\n+_\b1_\b5_\b9_\b1 int _\bn_\bc_\be_\bl_\bl_\bs;\n+_\b1_\b5_\b9_\b2 int _\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs;\n+_\b1_\b5_\b9_\b3 int _\bn_\bc_\bo_\br_\bn_\be_\br_\bs;\n+1594 private:\n+1595 _\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bp_\bp_\be_\br* vertexmapper;\n+1596 // in conforming mode, for each vertex id (as obtained by vertexmapper)\n+1597 // hold its number in the iteration order (VertexIterator)\n+1598 std::vector number;\n+1599 _\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be datamode;\n+1600 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn coordPrec;\n+1601\n+1602 // true if polyhedral cells are present in the grid\n+1603 const bool polyhedralCellsPresent_;\n+1604\n+1605 // pointer holding face vertex connectivity if needed\n+1606 std::shared_ptr< std::pair< std::vector, std::vector > >\n+faceVertices_;\n+1607\n+1608 protected:\n+_\b1_\b6_\b0_\b9 _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be _\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be;\n+1610 };\n+1611\n+1612}\n+1613\n+1614#endif\n+_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n+Mapper for multiple codim and multiple geometry types.\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bd_\ba_\bt_\ba_\ba_\br_\br_\ba_\by_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+Data array writers for the VTKWriter.\n+_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n+_\bs_\bt_\br_\be_\ba_\bm_\bs_\b._\bh_\bh\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+Functions for VTK output.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+PartitionIteratorType\n+Parameter to be used for the parallel level- and leaf iterators.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:136\n _\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n PartitionType\n Attributes used in the generic overlap model.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-@ FrontEntity\n-on boundary between overlap and ghost\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bl_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+@ All_Partition\n+all entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+@ InteriorBorder_Partition\n+interior and border entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:138\n _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by\n @ InteriorEntity\n all interior entities\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n-@ GhostEntity\n-ghost entities\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by\n-@ BorderEntity\n-on boundary between interior and overlap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-@ OverlapEntity\n-all entities lying in the overlap zone\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bi_\bn_\bd_\be_\bx_\bS_\be_\bt\n+const IndexSet & indexSet() const\n+obtain the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bG_\br_\bi_\bd\n+Traits::Grid Grid\n+type of the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n+Traits::IndexSet IndexSet\n+type of the index set\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bo_\bm_\bm\n+const Communication & comm() const\n+obtain communication object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:280\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+type used for coordinates in grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static constexpr int dimensionworld\n+The dimension of the world the grid lives in.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n+MCMGLayout mcmgVertexLayout()\n+layout for vertices (dim-0 entities)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n _\bs_\bt_\bd\n STL namespace.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bl_\be_\bv_\be_\bl_\b__\bb_\bi_\bt_\bs\n-const int yaspgrid_level_bits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd_\b__\bd_\bi_\bm_\b__\bb_\bi_\bt_\bs\n-const int yaspgrid_dim_bits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrid.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-Default Implementations for EntityImp.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:542\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n-Base class for exceptions in Dune grid modules.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int mydimension\n-geometry dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/geometry.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-The general version that handles all codimensions but 0 and dim.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridgeometry.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-level of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:282\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-geometry of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:296\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bt_\by_\bp_\be\n-GridImp::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\by_\bp_\be\n-constexpr GeometryType type() const\n-Return the name of the reference element. The type can be used to access the\n-Dune::ReferenceElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:305\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx\n-PersistentIndexType persistentIndex() const\n-globally unique, persistent index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:359\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-const YGLI & gridlevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:420\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-const I & transformingsubiterator() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:419\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bg\n-YGLI _g\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspEntity &e) const\n-Return true when two iterators over the same grid are equal (!).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:347\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-return partition type attribute\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bm_\bp_\bl\n-GridImp::Traits::template Codim< codim >::GeometryImpl GeometryImpl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:277\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-YGLI & gridlevel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:422\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bC_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx\n-int subCompressedIndex(int i, unsigned int cc) const\n-subentity compressed index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:396\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\bG_\bL_\bI\n-GridImp::YGridLevelIterator YGLI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:333\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bI\n-GridImp::YGrid::Iterator I\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:334\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-const GridImp * yaspgrid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:423\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-GridImp::template Codim< codim >::EntitySeed EntitySeed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:279\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(YGLI &&g, const I &&it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:342\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\be_\be_\bd\n-EntitySeed seed() const\n-Return the entity seed which contains sufficient information to generate the\n-entity again and uses as...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:290\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bc_\bo_\bm_\bp_\br_\be_\bs_\bs_\be_\bd_\bI_\bn_\bd_\be_\bx\n-int compressedIndex() const\n-consecutive, codim-wise, level-wise index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(const YGLI &g, const I &it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:338\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bi_\bt\n-I _it\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:425\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< codim >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:276\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-GridImp::PersistentIndexType PersistentIndexType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:356\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-unsigned int subEntities(unsigned int cc) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:314\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-I & transformingsubiterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:421\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-Describes the minimal information necessary to create a fully functional\n-YaspEntity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentityseed.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bL_\be_\bv_\be_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-Iterates over entities of one grid level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridleveliterator.hh:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspIntersectionIterator enables iteration over intersections with neighboring\n-codim 0 entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridintersectioniterator.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-YaspHierarchicIterator enables iteration over son entities of codim 0.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bI_\bn_\bd_\be_\bx_\bS_\be_\bt\n-Implementation of Level- and LeafIndexSets for YaspGrid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridindexsets.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bd_\bS_\be_\bt\n-persistent, globally unique Ids\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgrididset.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\bb_\be_\bg_\bi_\bn\n-LeafIntersectionIterator ileafbegin() const\n-returns intersection iterator for first intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:657\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 0 >::LocalGeometry LocalGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:452\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n-Codim< cc >::Entity subEntity(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:571\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspEntity &e) const\n-Return true when two iterators over the same grid are equal (!).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:490\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(const YGLI &g, I &&it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:481\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bc_\bo_\bu_\bn_\bt\n-int count() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:554\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-GridImp::template Codim< 0 >::EntitySeed EntitySeed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:461\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-GridImp::PersistentIndexType PersistentIndexType\n-define the type used for persistent indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:468\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-GridImp::YGrid::iTupel iTupel\n-define type used for coordinates in grid module\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:471\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-const YGLI & gridlevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:632\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\be_\bn_\bd\n-IntersectionIterator iend() const\n-Reference to one past the last neighbor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:670\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-const I & transformingsubiterator() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:631\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bc_\bt_\by_\bp_\be\n-GridImp::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:446\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-YGLI & gridlevel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:634\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(const YGLI &g, const I &it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:477\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-const GridImp * yaspgrid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:635\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-level of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:496\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\be_\ba_\bf_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GridImp::LeafIntersectionIterator LeafIntersectionIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:464\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(YGLI &&g, I &&it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:485\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-return partition type attribute\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:506\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\be_\bn_\bd\n-LevelIntersectionIterator ilevelend() const\n-Reference to one past the last neighbor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:682\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bm_\bi_\bg_\bh_\bt_\bV_\ba_\bn_\bi_\bs_\bh\n-bool mightVanish() const\n-Returns true, if entity might disappear during the next call to adapt()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:648\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GridImp::HierarchicIterator HierarchicIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:465\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:460\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\bv_\be_\bl_\bb_\be_\bg_\bi_\bn\n-LevelIntersectionIterator ilevelbegin() const\n-returns intersection iterator for first intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:664\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bl_\be_\ba_\bf_\be_\bn_\bd\n-LeafIntersectionIterator ileafend() const\n-Reference to one past the last neighbor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:676\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:474\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI\n-GridImp::YGrid::Iterator I\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:449\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< 0 >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:451\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-geometry of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:517\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bf_\ba_\bt_\bh_\be_\br\n-Entity father() const\n-Inter-level access to father element on coarser grid. Assumes that meshes are\n-nested.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:587\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bs_\bN_\be_\bw\n-bool isNew() const\n-Returns true, if the entity has been created during the last call to adapt()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:644\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-constexpr GeometryType type() const\n-Return the name of the reference element. The type can be used to access the\n-Dune::ReferenceElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:545\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\be_\be_\bd\n-EntitySeed seed() const\n-Return the entity seed which contains sufficient information to generate the\n-entity again and uses as...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:501\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\bb_\be_\bg_\bi_\bn\n-HierarchicIterator hbegin(int maxlevel) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:691\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bb_\be_\bg_\bi_\bn\n-IntersectionIterator ibegin() const\n-returns intersection iterator for first intersection\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:651\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\bG_\bL_\bI\n-GridImp::YGridLevelIterator YGLI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:448\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-unsigned int subEntities(unsigned int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:563\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n-LocalGeometry geometryInFather() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:614\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GridImp::LevelIntersectionIterator IntersectionIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:462\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\be_\bv_\be_\bl_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-GridImp::LevelIntersectionIterator LevelIntersectionIterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:463\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-I & transformingsubiterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:633\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-bool isLeaf() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:637\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bh_\ba_\bs_\bF_\ba_\bt_\bh_\be_\br\n-bool hasFather() const\n-returns true if father entity exists\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:607\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\b0_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridImp::template Codim< cd >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:457\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-level of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:856\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n-bool equals(const YaspEntity &e) const\n-Return true when two iterators over the same grid are equal (!).\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:850\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-YGLI & gridlevel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:967\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-Geometry geometry() const\n-geometry of this entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:875\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(const YGLI &g, const I &it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:841\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-unsigned int subEntities(unsigned int cc) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:869\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-PartitionType partitionType() const\n-return partition type attribute\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:889\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bc_\bt_\by_\bp_\be\n-GridImp::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:822\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\bG_\bL_\bI\n-GridImp::YGridLevelIterator YGLI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:824\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bI_\bn_\bd_\be_\bx_\bT_\by_\bp_\be\n-GridImp::PersistentIndexType PersistentIndexType\n-define the type used for persistent indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:832\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bs_\be_\be_\bd\n-EntitySeed seed() const\n-Return the entity seed which contains sufficient information to generate the\n-entity again and uses as...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:861\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n-const GridImp * yaspgrid() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:969\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-constexpr GeometryType type() const\n-Return the name of the reference element. The type can be used to access the\n-Dune::ReferenceElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:883\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bI\n-GridImp::YGrid::Iterator I\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:825\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-I & transformingsubiterator()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:966\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bt_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bs_\bu_\bb_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-const I & transformingsubiterator() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:964\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bT_\bu_\bp_\be_\bl\n-GridImp::YGrid::iTupel iTupel\n-define type used for coordinates in grid module\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:835\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-GridImp::template Codim< dim >::Geometry Geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:827\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd_\bl_\be_\bv_\be_\bl\n-const YGLI & gridlevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:965\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity(YGLI &&g, I &&it)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:845\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n-YaspEntity()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:838\n-_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bS_\be_\be_\bd\n-GridImp::template Codim< dim >::EntitySeed EntitySeed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:829\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n+@ int32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n+@ uint8\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n+@ float32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n+OutputType\n+How the bulk data should be stored in the file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n+@ ascii\n+Output to the file is in ascii.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw\n+@ appendedraw\n+Output is to the file is appended raw binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n+@ appendedbase64\n+Output is to the file is appended base64 binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4\n+@ base64\n+Output to the file is inline base64 binary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n+int renumber(const Dune::GeometryType &t, int i)\n+renumber VTK <-> Dune\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n+FileType\n+which type of VTK file to write\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n+@ polyData\n+for .vtp files (PolyData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n+@ unstructuredGrid\n+for .vtu files (UnstructuredGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be\n+DataMode\n+Whether to produce conforming or non-conforming output.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+@ conforming\n+Output conforming data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n+@ nonconforming\n+Output non-conforming data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n+GeometryType geometryType(const Dune::GeometryType &t)\n+mapping from GeometryType to VTKGeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn\n+@ polyhedron\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+Grid view abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A struct that collects all associated types of one implementation from the\n+Traits class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n+Implementation class for a multiple codim and multiple geometry type mapper.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size() const\n+Return total number of entities in the entity set managed by the mapper.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:204\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n+Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i,\n+unsigned int codim) const\n+Map subentity of codim 0 entity to starting index in array for dof block.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+Descriptor struct for VTK fields.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:328\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+The number of components in the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:364\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision precision() const\n+The precision used for the output of the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+@ tensor\n+tensor field (always 3x3)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br\n+@ vector\n+vector-valued field (always 3D, will be padded if necessary)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br\n+@ scalar\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n+Type type() const\n+The type of the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:358\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\ba_\bm_\be\n+std::string name() const\n+The name of the data field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:352\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+base class for data array writers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(T data)\n+write one element of data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dataarraywriter.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+A base class for grid functions with any return type and dimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Take a vector and interpret it as cell data for the VTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Take a vector and interpret it as point data for the VTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br\n+Writer for the ouput of grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriter.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+Base class to write pvd-files which contains a list of all collected vtk-files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+Writer for the ouput of grid functions in the vtk format.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const Container &v, const std::string &name, int ncomps=1,\n+VTK::Precision prec=VTK::Precision::float32)\n+Add a grid function (represented by container) that lives on the cells of the\n+grid to the visualizati...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:695\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bE_\bn_\bd\n+CornerIterator cornerEnd() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:620\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bl_\be_\ba_\br\n+void clear()\n+clear list of registered functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:775\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+std::string write(const std::string &name, VTK::OutputType type=VTK::ascii)\n+write output (interface might change later)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:803\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bB_\be_\bg_\bi_\bn\n+VertexIterator vertexBegin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:508\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bT_\by_\bp_\be_\bS_\bt_\br_\bi_\bn_\bg\n+std::string getTypeString() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be\n+std::string getParallelHeaderName(const std::string &name, const std::string\n+&path, int commSize) const\n+return name of a parallel header file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:920\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const std::shared_ptr< const VTKFunction > &p)\n+Add a grid function that lives on the vertices of the grid to the\n+visualization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:713\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Dune::VTKFunction< GridView > VTKFunction\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bE_\bn_\bd\n+CellIterator cellEnd() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:402\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bd_\ba_\bt_\ba\n+std::list< VTKLocalFunction > vertexdata\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1585\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bB_\be_\bg_\bi_\bn\n+CornerIterator cornerBegin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:613\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n+std::string getSerialPieceName(const std::string &name, const std::string\n+&path) const\n+return name of a serial piece file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:940\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< const VTKFunction > &p)\n+Add a grid function that lives on the cells of the grid to the visualization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:649\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\bo_\br_\bm_\ba_\bt_\bS_\bt_\br_\bi_\bn_\bg\n+std::string getFormatString() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bF_\bo_\br_\bP_\bo_\bl_\by_\bh_\be_\bd_\br_\ba_\bl_\bC_\be_\bl_\bl_\bs\n+bool checkForPolyhedralCells() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1441\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(F &&f, VTK::FieldInfo vtkFieldInfo)\n+Add a function by sampling it on the grid vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:738\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+virtual void writeCellData(VTK::VTUWriter &writer)\n+write cell data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1333\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+virtual void countEntities(int &nvertices_, int &ncells_, int &ncorners_)\n+count the vertices, cells and corners\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1235\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n+std::string getParallelPieceName(const std::string &name, const std::string\n+&path, int commRank, int commSize) const\n+return name of a parallel piece file (or header name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:855\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bB_\be_\bg_\bi_\bn\n+CellIterator cellBegin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:397\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bo_\bu_\bt_\bp_\bu_\bt_\bt_\by_\bp_\be\n+VTK::OutputType outputtype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1609\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bC_\be_\bl_\bl_\bs\n+virtual void writeGridCells(VTK::VTUWriter &writer)\n+write the connectivity array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1385\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw_\b_\n+GridView gridView_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1588\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\ba_\bc_\be_\bs\n+virtual void writeCellFaces(VTK::VTUWriter &writer)\n+write the connectivity array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1455\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+void fillFaceVertices(CornerIterator it, const CornerIterator end, const\n+IndexSet &indexSet, std::vector< T > &faces, std::vector< T > &faceOffsets)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1494\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\be_\bl_\bl_\bd_\ba_\bt_\ba\n+std::list< VTKLocalFunction > celldata\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1584\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+std::string write(const std::string &name, VTK::OutputType type, const int\n+commRank, const int commSize)\n+write output (interface might change later)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:965\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+VTK::Precision coordPrecision() const\n+get the precision with which coordinates are written out\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:782\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+std::list< VTKLocalFunction >::const_iterator FunctionIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:376\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bD_\ba_\bt_\ba_\bN_\ba_\bm_\be_\bs\n+std::tuple< std::string, std::string > getDataNames(const T &data) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+virtual void writeGridPoints(VTK::VTUWriter &writer)\n+write the positions of vertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1361\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+virtual void writeVertexData(VTK::VTUWriter &writer)\n+write vertex data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1347\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n+int nvertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1592\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(F &&f, VTK::FieldInfo vtkFieldInfo)\n+Add a function by sampling it on the element centers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:674\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const Container &v, const std::string &name, int ncomps=1,\n+VTK::Precision prec=VTK::Precision::float32)\n+Add a grid function (represented by container) that lives on the vertices of\n+the grid to the visualiz...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:760\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\b~_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+virtual ~VTKWriter()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:786\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bf_\bi_\bl_\bl_\bF_\ba_\bc_\be_\bs_\bF_\bo_\br_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static void fillFacesForElement(const Entity &element, const IndexSet\n+&indexSet, const std::vector< T > &vertices, T &offset, std::vector< T >\n+&faces, std::vector< T > &faceOffsets)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1535\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bD_\ba_\bt_\ba\n+void writeData(VTK::VTUWriter &writer, const Data &data, const Iterator begin,\n+const Iterator end, int nentries)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1291\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\be_\bl_\bl_\bs\n+int ncells\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1591\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bE_\bn_\bd\n+VertexIterator vertexEnd() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:515\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n+VTKWriter(const GridView &gridView, VTK::DataMode dm=VTK::conforming, VTK::\n+Precision coordPrecision=VTK::Precision::float32)\n+Construct a VTKWriter working on a specific GridView.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:636\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bw_\br_\bi_\bt_\be\n+std::string pwrite(const std::string &name, const std::string &path, const\n+std::string &extendpath, VTK::OutputType ot, const int commRank, const int\n+commSize)\n+write output; interface might change later\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1043\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bw_\br_\bi_\bt_\be\n+std::string pwrite(const std::string &name, const std::string &path, const\n+std::string &extendpath, VTK::OutputType type=VTK::ascii)\n+write output (interface might change later)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:835\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\br_\bn_\be_\br_\bs\n+int ncorners\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:1593\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Type erasure wrapper for VTK data sets.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n+void unbind() const\n+Unbind the data set from the currently bound entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:360\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+VTKLocalFunction(F &&f, VTK::FieldInfo fieldInfo)\n+Construct a VTKLocalFunction for a dune-functions style LocalFunction.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:307\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n+std::string name() const\n+Returns the name of the data set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:342\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b__\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+VTK::FieldInfo _fieldInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:372\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bW_\br_\bi_\bt_\be_\br\n+VTK::DataArrayWriter Writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bf_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n+const VTK::FieldInfo & fieldInfo() const\n+Returns the VTK::FieldInfo for the data set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bi_\bn_\bd\n+void bind(const Entity &e) const\n+Bind the data set to grid entity e.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:354\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+VTKLocalFunction(const std::shared_ptr< const VTKFunction > &vtkFunctionPtr)\n+Construct a VTKLocalFunction for a legacy VTKFunction.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:331\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b__\bf\n+std::shared_ptr< FunctionWrapperBase > _f\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:371\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(const Coordinate &pos, Writer &w) const\n+Write the value of the data set at local coordinate pos to the writer w.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:366\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n+Base class for polymorphic container of underlying data set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n+=0\n+Evaluate data set at local position pos inside the current entity and write\n+result to w.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\b~_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be\n+virtual ~FunctionWrapperBase()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:178\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n+virtual void unbind()=0\n+Unbind data set from current grid entity - mostly here for performance and\n+symmetry reasons.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bb_\bi_\bn_\bd\n+virtual void bind(const Entity &e)=0\n+Bind data set to grid entity - must be called before evaluating (i.e. calling\n+write())\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+Type erasure implementation for functions conforming to the dune-functions\n+LocalFunction interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+typename std::decay< F >::type Function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+FunctionWrapper(F_ &&f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:192\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n+Evaluate data set at local position pos inside the current entity and write\n+result to w.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:206\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n+virtual void unbind()\n+Unbind data set from current grid entity - mostly here for performance and\n+symmetry reasons.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:201\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bi_\bn_\bd\n+virtual void bind(const Entity &e)\n+Bind data set to grid entity - must be called before evaluating (i.e. calling\n+write())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+Type erasure implementation for C++ functions, i.e., functions that can be\n+evaluated in global coordi...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+GlobalFunctionWrapper(F_ &&f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n+virtual void unbind()\n+Unbind data set from current grid entity - mostly here for performance and\n+symmetry reasons.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+typename std::decay< F >::type Function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:237\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n+Evaluate data set at local position pos inside the current entity and write\n+result to w.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bi_\bn_\bd\n+virtual void bind(const Entity &e)\n+Bind data set to grid entity - must be called before evaluating (i.e. calling\n+write())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:245\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+Type erasure implementation for legacy VTKFunctions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:276\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bn_\bb_\bi_\bn_\bd\n+virtual void unbind()\n+Unbind data set from current grid entity - mostly here for performance and\n+symmetry reasons.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:287\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br\n+VTKFunctionWrapper(const std::shared_ptr< const VTKFunction > &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:277\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Coordinate &pos, Writer &w, std::size_t count) const\n+Evaluate data set at local position pos inside the current entity and write\n+result to w.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bL_\bo_\bc_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\ba_\bp_\bp_\be_\br_\b:_\b:_\bb_\bi_\bn_\bd\n+virtual void bind(const Entity &e)\n+Bind data set to grid entity - must be called before evaluating (i.e. calling\n+write())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:282\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterator over the grids elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:385\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+CellIterator(const GridCellIterator &x)\n+construct a CellIterator from the gridview's Iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:388\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn\n+const FieldVector< DT, n > position() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:391\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterate over the grid's vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:424\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+VertexIterator(const GridCellIterator &x, const GridCellIterator &end, const\n+VTK::DataMode &dm, const VertexMapper &vm)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:457\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bb_\ba_\bs_\bi_\bc_\bI_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void basicIncrement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:440\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:468\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+EntityReference dereference() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:491\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const VertexIterator &cit) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:485\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn\n+FieldVector< DT, n > position() const\n+position of vertex inside the entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:501\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bd_\be_\bx\n+int localindex() const\n+index of vertex within the entity, in Dune-numbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:496\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+Iterate over the elements' corners.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:539\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:566\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+CornerIterator(const GridCellIterator &x, const GridCellIterator &end, const\n+VTK::DataMode &dm, const VertexMapper &vm, const std::vector< int > &num)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:558\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bd\n+int id() const\n+Process-local consecutive zero-starting vertex id.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:597\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+EntityReference dereference() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:588\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const CornerIterator &cit) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:582\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n+unsigned nitems, Precision prec)\n+acquire a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void endCellData()\n+finish CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+void beginCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void endPointData()\n+finish PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void beginCellData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void beginPointData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+void endPoints()\n+finish section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+void endCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+void beginPoints()\n+start section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00260_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00257_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,15 +77,15 @@\n
  • dune
  • grid
  • common
  • \n
    \n
    \n
    \n
    gridenums.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_COMMON_GRIDENUMS_HH
    \n
    6#define DUNE_GRID_COMMON_GRIDENUMS_HH
    \n
    7
    \n
    8#include <iostream>
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00269.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00590.html", "comments": ["Files 78% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: mcmgmapper.hh File Reference\n+dune-grid: iterator.hh File Reference\n \n \n \n \n \n \n \n@@ -65,85 +65,64 @@\n
    \n
    \n
    \n
    \n \n \n \n
    \n \n-
    mcmgmapper.hh File Reference
    \n+Namespaces
    \n+
    iterator.hh File Reference
    \n \n
    \n-\n-

    Mapper for multiple codim and multiple geometry types. \n-More...

    \n-
    #include <functional>
    \n-#include <iostream>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/rangeutilities.hh>
    \n-#include <dune/geometry/dimension.hh>
    \n+
    #include <cassert>
    \n+#include <type_traits>
    \n+#include <utility>
    \n #include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/typeindex.hh>
    \n-#include "mapper.hh"
    \n+#include <dune/grid/geometrygrid/capabilities.hh>
    \n+#include <dune/grid/geometrygrid/declaration.hh>
    \n+#include <dune/grid/geometrygrid/entity.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::YaspEntity< codim, dim, GridImp >
     
    class  Dune::YaspEntity< 0, dim, GridImp >
     
    \n \n-\n-\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::MultipleCodimMultipleGeomTypeMapper< GV >
     Implementation class for a multiple codim and multiple geometry type mapper. More...
    struct  Dune::GeoGrid::PartitionIteratorFilter< codim, Interior_Partition, Grid >
     
    struct  Dune::GeoGrid::PartitionIteratorFilter< codim, InteriorBorder_Partition, Grid >
     
    struct  Dune::GeoGrid::PartitionIteratorFilter< codim, Overlap_Partition, Grid >
     
    struct  Dune::GeoGrid::PartitionIteratorFilter< codim, OverlapFront_Partition, Grid >
     
    struct  Dune::GeoGrid::PartitionIteratorFilter< codim, All_Partition, Grid >
     
    class  Dune::LeafMultipleCodimMultipleGeomTypeMapper< G >
     Multiple codim and multiple geometry type mapper for leaf entities. More...
    struct  Dune::GeoGrid::PartitionIteratorFilter< codim, Ghost_Partition, Grid >
     
    class  Dune::LevelMultipleCodimMultipleGeomTypeMapper< G >
     Multiple codim and multiple geometry type mapper for entities of one level. More...
    class  Dune::GeoGrid::Iterator< HostGridView, codim, pitype, G, false >
     
    class  Dune::GeoGrid::Iterator< HostGridView, codim, pitype, G, true >
     
    class  Dune::GeoGrid::HierarchicIterator< G >
     
    \n \n \n \n \n-

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-\n-\n-\n-\n-

    \n-Typedefs

    using Dune::MCMGLayout = std::function< size_t(GeometryType, int)>
     layout function for MultipleCodimMultipleGeomTypeMapper
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n+\n

    \n-Functions

    template<int codim>
    MCMGLayout Dune::mcmgLayout (Codim< codim >)
     layout for entities of codimension codim
     
    template<int dim>
    MCMGLayout Dune::mcmgLayout (Dim< dim >)
     layout for entities of dimension dim
     
    MCMGLayout Dune::mcmgElementLayout ()
     layout for elements (codim-0 entities)
     
    MCMGLayout Dune::mcmgVertexLayout ()
     layout for vertices (dim-0 entities)
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n-

    Detailed Description

    \n-

    Mapper for multiple codim and multiple geometry types.

    \n-
    Author
    Peter Bastian
    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,62 +1,49 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-mcmgmapper.hh File Reference\n-Mapper for multiple codim and multiple geometry types. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n-#include \n-#include \n+ * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+iterator.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include \n-#include \n-#include \"_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bd_\be_\bc_\bl_\ba_\br_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\be_\bn_\bt_\bi_\bt_\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_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\bV_\b _\b>\n-\u00a0 Implementation class for a multiple codim and multiple geometry type\n- mapper. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b _\b>\n-\u00a0 Multiple codim and multiple geometry type mapper for leaf entities.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\b _\bG_\b _\b>\n-\u00a0 Multiple codim and multiple geometry type mapper for entities of one\n- level. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,\n+ _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,\n+ _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\br_\bd_\be_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd\n+ _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bO_\bv_\be_\br_\bl_\ba_\bp_\bF_\br_\bo_\bn_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,\n+ _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bA_\bl_\bl_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\bi_\bl_\bt_\be_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b,_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt = std::function< size_t(GeometryType, int)>\n-\u00a0 layout function for _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt (Codim< codim >)\n-\u00a0 layout for entities of codimension codim\n-\u00a0\n-template\n-_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt (Dim< dim >)\n-\u00a0 layout for entities of dimension dim\n-\u00a0\n-_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt ()\n-\u00a0 layout for elements (codim-0 entities)\n-\u00a0\n-_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt ()\n-\u00a0 layout for vertices (dim-0 entities)\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-Mapper for multiple codim and multiple geometry types.\n- Author\n- Peter Bastian\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n+\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00269_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00815_source.html", "comments": ["Files 86% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: mcmgmapper.hh Source File\n+dune-grid: function.hh Source File\n \n \n \n \n \n \n \n@@ -70,388 +70,277 @@\n
    \n
    \n
    \n \n \n \n \n
    \n-
    mcmgmapper.hh
    \n+
    function.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_GRID_COMMON_MCMGMAPPER_HH
    \n-
    7#define DUNE_GRID_COMMON_MCMGMAPPER_HH
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTION_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_FUNCTION_HH
    \n
    8
    \n-
    9#include <functional>
    \n-
    10#include <iostream>
    \n-
    11
    \n-
    12#include <dune/common/exceptions.hh>
    \n-
    13#include <dune/common/rangeutilities.hh>
    \n-
    14#include <dune/geometry/dimension.hh>
    \n+
    9#include <string>
    \n+
    10
    \n+
    11#include <dune/common/exceptions.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#include <dune/geometry/type.hh>
    \n-
    17#include <dune/geometry/typeindex.hh>
    \n-
    18
    \n-
    19#include "mapper.hh"
    \n+
    16#include <dune/geometry/multilineargeometry.hh>
    \n+
    17
    \n+\n+\n
    20
    \n-
    27namespace Dune
    \n-
    28{
    \n-
    36 //
    \n-
    37 // Common Layout templates
    \n-
    38 //
    \n-
    39
    \n-
    64 using MCMGLayout = std::function<size_t(GeometryType, int)>;
    \n+
    26namespace Dune
    \n+
    27{
    \n+
    30
    \n+
    32 //
    \n+
    33 // Base VTKFunction
    \n+
    34 //
    \n+
    35
    \n+
    40 template< class GridView >
    \n+
    \n+\n+
    42 {
    \n+
    43 public:
    \n+
    44 typedef typename GridView::ctype ctype;
    \n+
    45 constexpr static int dim = GridView::dimension;
    \n+
    46 typedef typename GridView::template Codim< 0 >::Entity Entity;
    \n+
    47
    \n+
    50 virtual int ncomps () const = 0;
    \n+
    51
    \n+
    53
    \n+
    60 virtual double evaluate (int comp, const Entity& e,
    \n+
    61 const Dune::FieldVector<ctype,dim>& xi) const = 0;
    \n+
    62
    \n+
    64 virtual std::string name () const = 0;
    \n
    65
    \n-
    71 template<int codim>
    \n-
    \n-
    72 MCMGLayout mcmgLayout(Codim<codim>)
    \n-
    73 {
    \n-
    74 return [](GeometryType gt, int dimgrid) {
    \n-
    75 return dimgrid - gt.dim() == codim;
    \n-
    76 };
    \n-
    77 }
    \n-
    \n+
    \n+
    67 virtual VTK::Precision precision() const
    \n+
    68 { return VTK::Precision::float32; }
    \n+
    \n+
    69
    \n+
    71 virtual ~VTKFunction () {}
    \n+
    72 };
    \n+
    \n+
    73
    \n+
    75 //
    \n+
    76 // P0VTKFunction
    \n+
    77 //
    \n
    78
    \n-
    84 template<int dim>
    \n-
    \n-\n-
    86 {
    \n-
    87 return [](GeometryType gt, int) {
    \n-
    88 return gt.dim() == dim;
    \n-
    89 };
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    \n-\n-
    98 {
    \n-
    99 return mcmgLayout(Codim<0>());
    \n-
    100 }
    \n-
    \n-
    101
    \n-
    \n-\n-
    108 {
    \n-
    109 return mcmgLayout(Dim<0>());
    \n-
    110 }
    \n-
    \n-
    111
    \n-
    113 //
    \n-
    114 // MultipleCodimMultipleGeomTypeMapper
    \n-
    115 //
    \n+
    80
    \n+
    94 template<typename GV, typename V>
    \n+
    \n+\n+
    96 : public VTKFunction< GV >
    \n+
    97 {
    \n+
    99 typedef VTKFunction< GV > Base;
    \n+\n+
    102
    \n+
    104 const V& v;
    \n+
    106 std::string s;
    \n+
    108 int ncomps_;
    \n+
    111 int mycomp_;
    \n+
    113 VTK::Precision prec_;
    \n+
    115 Mapper mapper;
    \n
    116
    \n-
    126 template <typename GV>
    \n-
    \n-\n-
    128 public Mapper<typename GV::Grid,MultipleCodimMultipleGeomTypeMapper<GV>, typename GV::IndexSet::IndexType >
    \n-
    129 {
    \n-
    130 public:
    \n-
    131
    \n-
    133 typedef GV GridView;
    \n+
    117 public:
    \n+
    118 typedef typename Base::Entity Entity;
    \n+
    119 typedef typename Base::ctype ctype;
    \n+
    120 using Base::dim;
    \n+
    121
    \n+
    \n+
    123 int ncomps () const override
    \n+
    124 {
    \n+
    125 return 1;
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    \n+
    129 double evaluate (int, const Entity& e,
    \n+
    130 const Dune::FieldVector<ctype,dim>&) const override
    \n+
    131 {
    \n+
    132 return v[mapper.index(e)*ncomps_+mycomp_];
    \n+
    133 }
    \n+
    \n
    134
    \n-
    136 typedef typename GV::IndexSet::IndexType Index;
    \n-
    137
    \n-
    142 using size_type = decltype(std::declval<typename GV::IndexSet>().size(0));
    \n-
    143
    \n-
    \n-\n-
    156 : gridView_(gridView)
    \n-
    157 , indexSet_(&gridView_.indexSet())
    \n-
    158 , layout_(layout)
    \n-
    159 {
    \n-\n-
    161 }
    \n-
    \n-
    162
    \n-
    170 template<class EntityType>
    \n-
    \n-
    171 Index index (const EntityType& e) const
    \n-
    172 {
    \n-
    173 const GeometryType gt = e.type();
    \n-
    174 assert(offset(gt) != invalidOffset);
    \n-
    175 return indexSet_->index(e)*blockSize(gt) + offset(gt);
    \n+
    \n+
    136 std::string name () const override
    \n+
    137 {
    \n+
    138 return s;
    \n+
    139 }
    \n+
    \n+
    140
    \n+
    \n+
    142 VTK::Precision precision() const override
    \n+
    143 {
    \n+
    144 return prec_;
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    148
    \n+
    \n+
    165 P0VTKFunction(const GV &gv, const V &v_, const std::string &s_,
    \n+
    166 int ncomps=1, int mycomp=0, VTK::Precision prec = VTK::Precision::float32)
    \n+
    167 : v( v_ ),
    \n+
    168 s( s_ ),
    \n+
    169 ncomps_(ncomps),
    \n+
    170 mycomp_(mycomp),
    \n+
    171 prec_(prec),
    \n+
    172 mapper( gv, mcmgElementLayout() )
    \n+
    173 {
    \n+
    174 if (v.size()!=(unsigned int)(mapper.size()*ncomps_))
    \n+
    175 DUNE_THROW(IOError, "P0VTKFunction: size mismatch");
    \n
    176 }
    \n
    \n
    177
    \n-
    \n-
    185 Index subIndex (const typename GV::template Codim<0>::Entity& e, int i, unsigned int codim) const
    \n-
    186 {
    \n-
    187 const GeometryType eType = e.type();
    \n-
    188 GeometryType gt = eType.isNone() ?
    \n-
    189 GeometryTypes::none( GV::dimension - codim ) :
    \n-
    190 ReferenceElements<double,GV::dimension>::general(eType).type(i,codim) ;
    \n-
    191 //GeometryType gt=ReferenceElements<double,GV::dimension>::general(e.type()).type(i,codim);
    \n-
    192 assert(offset(gt) != invalidOffset);
    \n-
    193 return indexSet_->subIndex(e, i, codim)*blockSize(gt) + offset(gt);
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    \n-\n-
    205 {
    \n-
    206 return n;
    \n-
    207 }
    \n-
    \n-
    208
    \n-
    \n-
    210 size_type size(GeometryType gt) const
    \n-
    211 {
    \n-
    212 return blockSize(gt);
    \n-
    213 }
    \n-
    \n-
    214
    \n-
    \n-
    216 const std::vector< GeometryType >& types ( int codim ) const
    \n-
    217 {
    \n-
    218 return myTypes_[ codim ];
    \n-
    219 }
    \n+
    179 virtual ~P0VTKFunction() {}
    \n+
    180 };
    \n
    \n-
    220
    \n-
    230 template<class EntityType>
    \n+
    181
    \n+
    183 //
    \n+
    184 // P1VTKFunction
    \n+
    185 //
    \n+
    186
    \n+
    188
    \n+
    202 template<typename GV, typename V>
    \n+
    \n+\n+
    204 : public VTKFunction< GV >
    \n+
    205 {
    \n+
    207 typedef VTKFunction< GV > Base;
    \n+\n+
    210
    \n+
    212 const V& v;
    \n+
    214 std::string s;
    \n+
    216 int ncomps_;
    \n+
    219 int mycomp_;
    \n+
    221 VTK::Precision prec_;
    \n+
    223 Mapper mapper;
    \n+
    224
    \n+
    225 public:
    \n+
    226 typedef typename Base::Entity Entity;
    \n+
    227 typedef typename Base::ctype ctype;
    \n+
    228 using Base::dim;
    \n+
    229
    \n
    \n-
    231 IntegralRange<Index> indices (const EntityType& e) const
    \n+
    231 int ncomps () const override
    \n
    232 {
    \n-
    233 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)
    \n-
    234 return {0,0};
    \n-
    235 Index start = index(e);
    \n-
    236 return {start, start+blockSize(e.type())};
    \n-
    237 }
    \n-
    \n-
    238
    \n-
    \n-
    250 IntegralRange<Index> indices (const typename GV::template Codim<0>::Entity& e, int i, int cc) const
    \n-
    251 {
    \n-
    252 const GeometryType eType = e.type();
    \n-
    253 const GeometryType gt = eType.isNone() ?
    \n-
    254 GeometryTypes::none(GV::dimension - cc) :
    \n-
    255 ReferenceElements<double,GV::dimension>::general(eType).type(i,cc) ;
    \n-
    256 if (offset(gt) == invalidOffset)
    \n-
    257 return {0,0};
    \n-
    258 else
    \n-
    259 {
    \n-
    260 Index start = subIndex(e,i,cc);
    \n-
    261 return {start, start+blockSize(gt)};
    \n-
    262 }
    \n-
    263 }
    \n-
    \n-
    264
    \n-
    271 template<class EntityType>
    \n-
    \n-
    272 bool contains (const EntityType& e, Index& result) const
    \n-
    273 {
    \n-
    274 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)
    \n-
    275 {
    \n-
    276 result = 0;
    \n-
    277 return false;
    \n-
    278 }
    \n-
    279 result = index(e);
    \n-
    280 return true;
    \n-
    281 }
    \n-
    \n-
    282
    \n-
    \n-
    291 bool contains (const typename GV::template Codim<0>::Entity& e, int i, int cc, Index& result) const
    \n-
    292 {
    \n-
    293 const GeometryType eType = e.type();
    \n-
    294 const GeometryType gt = eType.isNone() ?
    \n-
    295 GeometryTypes::none( GV::dimension - cc ) :
    \n-
    296 ReferenceElements<double,GV::dimension>::general(eType).type(i,cc) ;
    \n-
    297 if (offset(gt) == invalidOffset)
    \n-
    298 return false;
    \n-
    299 result = indexSet_->subIndex(e, i, cc)*blockSize(gt) + offset(gt);
    \n-
    300 return true;
    \n-
    301 }
    \n+
    233 return 1;
    \n+
    234 }
    \n
    \n+
    235
    \n+
    \n+
    237 double evaluate ([[maybe_unused]] int comp, const Entity& e,
    \n+
    238 const Dune::FieldVector<ctype,dim>& xi) const override
    \n+
    239 {
    \n+
    240 const unsigned int myDim = Entity::mydimension;
    \n+
    241 const unsigned int nVertices = e.subEntities(dim);
    \n+
    242
    \n+
    243 std::vector<FieldVector<ctype,1> > cornerValues(nVertices);
    \n+
    244 for (unsigned i=0; i<nVertices; ++i)
    \n+
    245 cornerValues[i] = v[mapper.subIndex(e,i,myDim)*ncomps_+mycomp_];
    \n+
    246
    \n+
    247 // (Ab)use the MultiLinearGeometry class to do multi-linear interpolation between scalars
    \n+
    248 const MultiLinearGeometry<ctype,dim,1> interpolation(e.type(), cornerValues);
    \n+
    249 return interpolation.global(xi);
    \n+
    250 }
    \n+
    \n+
    251
    \n+
    \n+
    253 std::string name () const override
    \n+
    254 {
    \n+
    255 return s;
    \n+
    256 }
    \n+
    \n+
    257
    \n+
    \n+
    259 VTK::Precision precision() const override
    \n+
    260 {
    \n+
    261 return prec_;
    \n+
    262 }
    \n+
    \n+
    263
    \n+
    265
    \n+
    \n+
    282 P1VTKFunction(const GV& gv, const V &v_, const std::string &s_,
    \n+
    283 int ncomps=1, int mycomp=0, VTK::Precision prec = VTK::Precision::float32)
    \n+
    284 : v( v_ ),
    \n+
    285 s( s_ ),
    \n+
    286 ncomps_(ncomps),
    \n+
    287 mycomp_(mycomp),
    \n+
    288 prec_(prec),
    \n+
    289 mapper( gv, mcmgVertexLayout() )
    \n+
    290 {
    \n+
    291 if (v.size()!=(unsigned int)(mapper.size()*ncomps_))
    \n+
    292 DUNE_THROW(IOError,"P1VTKFunction: size mismatch");
    \n+
    293 }
    \n+
    \n+
    294
    \n+
    296 virtual ~P1VTKFunction() {}
    \n+
    297 };
    \n+
    \n+
    298
    \n+
    300
    \n+
    301} // namespace Dune
    \n
    302
    \n-
    \n-
    308 void update (const GV& gridView)
    \n-
    309 {
    \n-
    310 gridView_ = gridView;
    \n-
    311 indexSet_ = &gridView_.indexSet();
    \n-
    312 update_();
    \n-
    313 }
    \n-
    \n-
    314
    \n-
    \n-
    320 void update (GV&& gridView)
    \n-
    321 {
    \n-
    322 gridView_ = std::move(gridView);
    \n-
    323 indexSet_ = &gridView_.indexSet();
    \n-
    324 update_();
    \n-
    325 }
    \n-
    \n-
    326
    \n-
    329 [[deprecated("Use update(gridView) instead! Will be removed after release 2.8.")]]
    \n-
    \n-
    330 void update ()
    \n-
    331 {
    \n-
    332 update_();
    \n-
    333 }
    \n-
    \n-
    334
    \n-
    335 const MCMGLayout &layout () const { return layout_; }
    \n-
    336 const GridView &gridView () const { return gridView_; }
    \n-
    337
    \n-
    338 private:
    \n-
    339 void update_()
    \n-
    340 {
    \n-
    341 n = 0;
    \n-
    342
    \n-
    343 std::fill(offsets.begin(),offsets.end(),Index(0));
    \n-
    344 std::fill(blocks.begin(),blocks.end(),Index(0));
    \n-
    345
    \n-
    346 for (unsigned int codim = 0; codim <= GV::dimension; ++codim)
    \n-
    347 {
    \n-
    348 // walk over all geometry types in the codimension
    \n-
    349 for (const GeometryType& gt : indexSet_->types(codim)) {
    \n-
    350 Index offset;
    \n-
    351 size_t block = layout()(gt, GV::Grid::dimension);
    \n-
    352
    \n-
    353 // if the geometry type is contained in the layout, increment offset
    \n-
    354 // and store geometry type
    \n-
    355 if (block) {
    \n-
    356 offset = n;
    \n-
    357 n += indexSet_->size(gt) * block;
    \n-
    358 myTypes_[codim].push_back(gt);
    \n-
    359 }
    \n-
    360 else {
    \n-
    361 offset = invalidOffset;
    \n-
    362 }
    \n-
    363
    \n-
    364 offsets[GlobalGeometryTypeIndex::index(gt)] = offset;
    \n-
    365 blocks[GlobalGeometryTypeIndex::index(gt)] = block;
    \n-
    366 }
    \n-
    367 }
    \n-
    368 }
    \n-
    369
    \n-
    370 Index offset(GeometryType gt) const
    \n-
    371 { return offsets[GlobalGeometryTypeIndex::index(gt)]; }
    \n-
    372 Index blockSize(GeometryType gt) const
    \n-
    373 { return blocks[GlobalGeometryTypeIndex::index(gt)]; }
    \n-
    374
    \n-
    375 static const Index invalidOffset = std::numeric_limits<Index>::max();
    \n-
    376
    \n-
    377 // number of data elements required
    \n-
    378 unsigned int n;
    \n-
    379 // GridView is needed to keep the IndexSet valid
    \n-
    380 GV gridView_;
    \n-
    381 const typename GV::IndexSet* indexSet_;
    \n-
    382 // provide an array for the offsets
    \n-
    383 std::array<Index, GlobalGeometryTypeIndex::size(GV::dimension)> offsets;
    \n-
    384 std::array<Index, GlobalGeometryTypeIndex::size(GV::dimension)> blocks;
    \n-
    385 const MCMGLayout layout_; // get layout object
    \n-
    386 std::vector<GeometryType> myTypes_[GV::dimension+1];
    \n-
    387 };
    \n-
    \n-
    388
    \n-
    390 //
    \n-
    391 // Leaf and level mapper
    \n-
    392 //
    \n-
    393
    \n-
    400 template <typename G>
    \n-
    \n-
    401 class [[deprecated("Use MultipleCodimMultipleGeomTypeMapper instead! Will be removed after release 2.8.")]]
    \n-\n-
    403 : public MultipleCodimMultipleGeomTypeMapper<typename G::LeafGridView>
    \n-
    404 {
    \n-\n-
    406 public:
    \n-
    407
    \n-
    \n-\n-
    415 : Base(grid.leafGridView(), layout)
    \n-
    416 , gridPtr_(&grid)
    \n-
    417 {}
    \n-
    \n-
    418
    \n-
    \n-
    424 void update ()
    \n-
    425 {
    \n-
    426 Base::update(gridPtr_->leafGridView());
    \n-
    427 }
    \n-
    \n-
    428
    \n-
    429 private:
    \n-
    430 const G* gridPtr_;
    \n-
    431 };
    \n-
    \n-
    432
    \n-
    440 template <typename G>
    \n-
    \n-
    441 class [[deprecated("Use MultipleCodimMultipleGeomTypeMapper instead! Will be removed after release 2.8.")]]
    \n-\n-
    443 : public MultipleCodimMultipleGeomTypeMapper<typename G::LevelGridView> {
    \n-\n-
    445 public:
    \n-
    446
    \n-
    \n-
    454 LevelMultipleCodimMultipleGeomTypeMapper (const G& grid, int level, const MCMGLayout& layout)
    \n-
    455 : Base(grid.levelGridView(level),layout)
    \n-
    456 , gridPtr_(&grid)
    \n-
    457 , level_(level)
    \n-
    458 {}
    \n-
    \n-
    459
    \n-
    \n-
    465 void update ()
    \n-
    466 {
    \n-
    467 Base::update(gridPtr_->levelGridView(level_));
    \n-
    468 }
    \n-
    \n-
    469
    \n-
    470 private:
    \n-
    471 const G* gridPtr_;
    \n-
    472 int level_;
    \n-
    473 };
    \n-
    \n-
    474
    \n-
    476}
    \n-
    477#endif
    \n-
    Provides classes with basic mappers which are used to attach data to a grid.
    \n-
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n-
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n-
    MCMGLayout mcmgLayout(Codim< codim >)
    layout for entities of codimension codim
    Definition mcmgmapper.hh:72
    \n+
    303#endif // DUNE_GRID_IO_FILE_VTK_FUNCTION_HH
    \n+
    Mapper for multiple codim and multiple geometry types.
    \n+
    Common stuff for the VTKWriter.
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n+
    Grid::ctype ctype
    type used for coordinates in grid
    Definition common/gridview.hh:145
    \n
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n-
    std::function< size_t(GeometryType, int)> MCMGLayout
    layout function for MultipleCodimMultipleGeomTypeMapper
    Definition mcmgmapper.hh:64
    \n
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Mapper interface.
    Definition mapper.hh:110
    \n+
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n+\n+
    static constexpr int mydimension
    Dimensionality of the reference element of the entity.
    Definition common/entity.hh:112
    \n+
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n-
    bool contains(const EntityType &e, Index &result) const
    Returns true if the entity is contained in the index set.
    Definition mcmgmapper.hh:272
    \n
    size_type size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mcmgmapper.hh:204
    \n
    Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity of codim 0 entity to starting index in array for dof block.
    Definition mcmgmapper.hh:185
    \n-
    MultipleCodimMultipleGeomTypeMapper(const GV &gridView, const MCMGLayout &layout)
    construct mapper from grid and layout description
    Definition mcmgmapper.hh:155
    \n-
    bool contains(const typename GV::template Codim< 0 >::Entity &e, int i, int cc, Index &result) const
    Returns true if the entity is contained in the index set.
    Definition mcmgmapper.hh:291
    \n-
    IntegralRange< Index > indices(const EntityType &e) const
    Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the ...
    Definition mcmgmapper.hh:231
    \n-
    decltype(std::declval< typename GV::IndexSet >().size(0)) size_type
    Number type used for the overall size (the return value of the 'size' method)
    Definition mcmgmapper.hh:142
    \n
    Index index(const EntityType &e) const
    Map entity to starting index in array for dof block.
    Definition mcmgmapper.hh:171
    \n-
    const GridView & gridView() const
    Definition mcmgmapper.hh:336
    \n-
    void update(const GV &gridView)
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:308
    \n-
    GV::IndexSet::IndexType Index
    Number type used for indices.
    Definition mcmgmapper.hh:136
    \n-
    size_type size(GeometryType gt) const
    return number of entries for a given geometry type
    Definition mcmgmapper.hh:210
    \n-
    const MCMGLayout & layout() const
    Definition mcmgmapper.hh:335
    \n-
    IntegralRange< Index > indices(const typename GV::template Codim< 0 >::Entity &e, int i, int cc) const
    Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the ...
    Definition mcmgmapper.hh:250
    \n-
    void update()
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:330
    \n-
    GV GridView
    Underlying GridView.
    Definition mcmgmapper.hh:133
    \n-
    const std::vector< GeometryType > & types(int codim) const
    return the geometry types with entries
    Definition mcmgmapper.hh:216
    \n-
    void update(GV &&gridView)
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:320
    \n-
    Multiple codim and multiple geometry type mapper for leaf entities.
    Definition mcmgmapper.hh:404
    \n-
    void update()
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:424
    \n-
    LeafMultipleCodimMultipleGeomTypeMapper(const G &grid, const MCMGLayout &layout)
    constructor
    Definition mcmgmapper.hh:414
    \n-
    Multiple codim and multiple geometry type mapper for entities of one level.
    Definition mcmgmapper.hh:443
    \n-
    void update()
    Recalculates indices after grid adaptation.
    Definition mcmgmapper.hh:465
    \n-
    LevelMultipleCodimMultipleGeomTypeMapper(const G &grid, int level, const MCMGLayout &layout)
    constructor
    Definition mcmgmapper.hh:454
    \n+
    A base class for grid functions with any return type and dimension.
    Definition function.hh:42
    \n+
    virtual double evaluate(int comp, const Entity &e, const Dune::FieldVector< ctype, dim > &xi) const =0
    evaluate single component comp in the entity e at local coordinates xi
    \n+
    GridView::ctype ctype
    Definition function.hh:44
    \n+
    GridView::template Codim< 0 >::Entity Entity
    Definition function.hh:46
    \n+
    static constexpr int dim
    Definition function.hh:45
    \n+
    virtual std::string name() const =0
    get name
    \n+
    virtual VTK::Precision precision() const
    get output precision for the field
    Definition function.hh:67
    \n+
    virtual int ncomps() const =0
    \n+
    virtual ~VTKFunction()
    virtual destructor
    Definition function.hh:71
    \n+
    Take a vector and interpret it as cell data for the VTKWriter.
    Definition function.hh:97
    \n+
    std::string name() const override
    get name
    Definition function.hh:136
    \n+
    Base::ctype ctype
    Definition function.hh:119
    \n+
    double evaluate(int, const Entity &e, const Dune::FieldVector< ctype, dim > &) const override
    evaluate
    Definition function.hh:129
    \n+
    P0VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1, int mycomp=0, VTK::Precision prec=VTK::Precision::float32)
    construct from a vector and a name
    Definition function.hh:165
    \n+
    VTK::Precision precision() const override
    get output precision for the field
    Definition function.hh:142
    \n+
    Base::Entity Entity
    Definition function.hh:118
    \n+
    virtual ~P0VTKFunction()
    destructor
    Definition function.hh:179
    \n+
    int ncomps() const override
    return number of components
    Definition function.hh:123
    \n+
    Take a vector and interpret it as point data for the VTKWriter.
    Definition function.hh:205
    \n+
    std::string name() const override
    get name
    Definition function.hh:253
    \n+
    virtual ~P1VTKFunction()
    destructor
    Definition function.hh:296
    \n+
    Base::Entity Entity
    Definition function.hh:226
    \n+
    Base::ctype ctype
    Definition function.hh:227
    \n+
    VTK::Precision precision() const override
    get output precision for the field
    Definition function.hh:259
    \n+
    double evaluate(int comp, const Entity &e, const Dune::FieldVector< ctype, dim > &xi) const override
    evaluate
    Definition function.hh:237
    \n+
    P1VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1, int mycomp=0, VTK::Precision prec=VTK::Precision::float32)
    construct from a vector and a name
    Definition function.hh:282
    \n+
    int ncomps() const override
    return number of components
    Definition function.hh:231
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,448 +1,354 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-mcmgmapper.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n+function.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_GRID_COMMON_MCMGMAPPER_HH\n-7#define DUNE_GRID_COMMON_MCMGMAPPER_HH\n+6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTION_HH\n+7#define DUNE_GRID_IO_FILE_VTK_FUNCTION_HH\n 8\n-9#include \n-10#include \n-11\n-12#include \n-13#include \n-14#include \n+9#include \n+10\n+11#include \n+12#include \n+13\n+14#include \n 15#include \n-16#include \n-17#include \n-18\n-19#include \"_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\"\n+16#include \n+17\n+18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n 20\n-27namespace _\bD_\bu_\bn_\be\n-28{\n-36 //\n-37 // Common Layout templates\n-38 //\n-39\n-_\b6_\b4 using _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt = std::function;\n+26namespace _\bD_\bu_\bn_\be\n+27{\n+30\n+32 //\n+33 // Base VTKFunction\n+34 //\n+35\n+40 template< class GridView >\n+_\b4_\b1 class _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+42 {\n+43 public:\n+_\b4_\b4 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n+_\b4_\b5 constexpr static int _\bd_\bi_\bm = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b4_\b6 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+47\n+_\b5_\b0 virtual int _\bn_\bc_\bo_\bm_\bp_\bs () const = 0;\n+51\n+53\n+_\b6_\b0 virtual double _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be (int comp, const _\bE_\bn_\bt_\bi_\bt_\by& e,\n+61 const Dune::FieldVector& xi) const = 0;\n+62\n+_\b6_\b4 virtual std::string _\bn_\ba_\bm_\be () const = 0;\n 65\n-71 template\n-_\b7_\b2 _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Codim)\n-73 {\n-74 return [](GeometryType gt, int dimgrid) {\n-75 return dimgrid - gt.dim() == codim;\n-76 };\n-77 }\n+_\b6_\b7 virtual _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const\n+68 { return _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2; }\n+69\n+_\b7_\b1 virtual _\b~_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () {}\n+72 };\n+73\n+75 //\n+76 // P0VTKFunction\n+77 //\n 78\n-84 template\n-_\b8_\b5 _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Dim)\n-86 {\n-87 return [](GeometryType gt, int) {\n-88 return gt.dim() == dim;\n-89 };\n-90 }\n-91\n-_\b9_\b7 inline _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt()\n-98 {\n-99 return _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Codim<0>());\n-100 }\n-101\n-_\b1_\b0_\b7 inline _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt()\n-108 {\n-109 return _\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt(Dim<0>());\n-110 }\n-111\n-113 //\n-114 // MultipleCodimMultipleGeomTypeMapper\n-115 //\n+80\n+94 template\n+_\b9_\b5 class _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+96 : public _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< GV >\n+97 {\n+99 typedef _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b> _\bB_\ba_\bs_\be;\n+101 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\bV_\b> _\bM_\ba_\bp_\bp_\be_\br;\n+102\n+104 const V& v;\n+106 std::string s;\n+108 int ncomps_;\n+111 int mycomp_;\n+113 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_;\n+115 _\bM_\ba_\bp_\bp_\be_\br mapper;\n 116\n-126 template \n-_\b1_\b2_\b7 class _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br :\n-128 public _\bM_\ba_\bp_\bp_\be_\br,\n-typename GV::IndexSet::IndexType >\n-129 {\n-130 public:\n-131\n-_\b1_\b3_\b3 typedef GV _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n+117 public:\n+_\b1_\b1_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b1_\b1_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n+120 using _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm;\n+121\n+_\b1_\b2_\b3 int _\bn_\bc_\bo_\bm_\bp_\bs () const override\n+124 {\n+125 return 1;\n+126 }\n+127\n+_\b1_\b2_\b9 double _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be (int, const _\bE_\bn_\bt_\bi_\bt_\by& e,\n+130 const Dune::FieldVector&) const override\n+131 {\n+132 return v[mapper._\bi_\bn_\bd_\be_\bx(e)*ncomps_+mycomp_];\n+133 }\n 134\n-_\b1_\b3_\b6 typedef typename GV::IndexSet::IndexType _\bI_\bn_\bd_\be_\bx;\n-137\n-_\b1_\b4_\b2 using _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be = decltype(std::declval().size(0));\n-143\n-_\b1_\b5_\b5 _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br(const GV& _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw, const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt&\n-_\bl_\ba_\by_\bo_\bu_\bt)\n-156 : gridView_(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw)\n-157 , indexSet_(&gridView_.indexSet())\n-158 , layout_(_\bl_\ba_\by_\bo_\bu_\bt)\n-159 {\n-160 _\bu_\bp_\bd_\ba_\bt_\be(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw);\n-161 }\n-162\n-170 template\n-_\b1_\b7_\b1 _\bI_\bn_\bd_\be_\bx _\bi_\bn_\bd_\be_\bx (const EntityType& e) const\n-172 {\n-173 const GeometryType gt = e.type();\n-174 assert(offset(gt) != invalidOffset);\n-175 return indexSet_->index(e)*blockSize(gt) + offset(gt);\n+_\b1_\b3_\b6 std::string _\bn_\ba_\bm_\be () const override\n+137 {\n+138 return s;\n+139 }\n+140\n+_\b1_\b4_\b2 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const override\n+143 {\n+144 return prec_;\n+145 }\n+146\n+148\n+_\b1_\b6_\b5 _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const GV &gv, const V &v_, const std::string &s_,\n+166 int _\bn_\bc_\bo_\bm_\bp_\bs=1, int mycomp=0, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+167 : v( v_ ),\n+168 s( s_ ),\n+169 ncomps_(_\bn_\bc_\bo_\bm_\bp_\bs),\n+170 mycomp_(mycomp),\n+171 prec_(prec),\n+172 mapper( gv, _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt() )\n+173 {\n+174 if (v.size()!=(unsigned int)(mapper._\bs_\bi_\bz_\be()*ncomps_))\n+175 DUNE_THROW(IOError, \"P0VTKFunction: size mismatch\");\n 176 }\n 177\n-_\b1_\b8_\b5 _\bI_\bn_\bd_\be_\bx _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx (const typename GV::template Codim<0>::Entity& e, int i,\n-unsigned int codim) const\n-186 {\n-187 const GeometryType eType = e.type();\n-188 GeometryType gt = eType.isNone() ?\n-189 GeometryTypes::none( GV::dimension - codim ) :\n-190 ReferenceElements::general(eType).type(i,codim) ;\n-191 //GeometryType gt=ReferenceElements::general(e.type\n-()).type(i,codim);\n-192 assert(offset(gt) != invalidOffset);\n-193 return indexSet_->subIndex(e, i, codim)*blockSize(gt) + offset(gt);\n-194 }\n-195\n-_\b2_\b0_\b4 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be () const\n+_\b1_\b7_\b9 virtual _\b~_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn() {}\n+180 };\n+181\n+183 //\n+184 // P1VTKFunction\n+185 //\n+186\n+188\n+202 template\n+_\b2_\b0_\b3 class _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+204 : public _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< GV >\n 205 {\n-206 return n;\n-207 }\n-208\n-_\b2_\b1_\b0 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be(GeometryType gt) const\n-211 {\n-212 return blockSize(gt);\n-213 }\n-214\n-_\b2_\b1_\b6 const std::vector< GeometryType >& _\bt_\by_\bp_\be_\bs ( int codim ) const\n-217 {\n-218 return myTypes_[ codim ];\n-219 }\n-220\n-230 template\n-_\b2_\b3_\b1 IntegralRange _\bi_\bn_\bd_\bi_\bc_\be_\bs (const EntityType& e) const\n+207 typedef _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b> _\bB_\ba_\bs_\be;\n+209 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\bV_\b> _\bM_\ba_\bp_\bp_\be_\br;\n+210\n+212 const V& v;\n+214 std::string s;\n+216 int ncomps_;\n+219 int mycomp_;\n+221 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_;\n+223 _\bM_\ba_\bp_\bp_\be_\br mapper;\n+224\n+225 public:\n+_\b2_\b2_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b2_\b2_\b7 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n+228 using _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm;\n+229\n+_\b2_\b3_\b1 int _\bn_\bc_\bo_\bm_\bp_\bs () const override\n 232 {\n-233 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)\n-234 return {0,0};\n-235 _\bI_\bn_\bd_\be_\bx start = _\bi_\bn_\bd_\be_\bx(e);\n-236 return {start, start+blockSize(e.type())};\n-237 }\n-238\n-_\b2_\b5_\b0 IntegralRange _\bi_\bn_\bd_\bi_\bc_\be_\bs (const typename GV::template Codim<0>::Entity&\n-e, int i, int cc) const\n-251 {\n-252 const GeometryType eType = e.type();\n-253 const GeometryType gt = eType.isNone() ?\n-254 GeometryTypes::none(GV::dimension - cc) :\n-255 ReferenceElements::general(eType).type(i,cc) ;\n-256 if (offset(gt) == invalidOffset)\n-257 return {0,0};\n-258 else\n-259 {\n-260 _\bI_\bn_\bd_\be_\bx start = _\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx(e,i,cc);\n-261 return {start, start+blockSize(gt)};\n+233 return 1;\n+234 }\n+235\n+_\b2_\b3_\b7 double _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ([[maybe_unused]] int comp, const _\bE_\bn_\bt_\bi_\bt_\by& e,\n+238 const Dune::FieldVector& xi) const override\n+239 {\n+240 const unsigned int myDim = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+241 const unsigned int nVertices = e.subEntities(_\bd_\bi_\bm);\n+242\n+243 std::vector > cornerValues(nVertices);\n+244 for (unsigned i=0; i interpolation(e.type(),\n+cornerValues);\n+249 return interpolation.global(xi);\n+250 }\n+251\n+_\b2_\b5_\b3 std::string _\bn_\ba_\bm_\be () const override\n+254 {\n+255 return s;\n+256 }\n+257\n+_\b2_\b5_\b9 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const override\n+260 {\n+261 return prec_;\n 262 }\n-263 }\n-264\n-271 template\n-_\b2_\b7_\b2 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const EntityType& e, _\bI_\bn_\bd_\be_\bx& result) const\n-273 {\n-274 if(!indexSet_->contains(e) || offset(e.type()) == invalidOffset)\n-275 {\n-276 result = 0;\n-277 return false;\n-278 }\n-279 result = _\bi_\bn_\bd_\be_\bx(e);\n-280 return true;\n-281 }\n-282\n-_\b2_\b9_\b1 bool _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs (const typename GV::template Codim<0>::Entity& e, int i, int\n-cc, _\bI_\bn_\bd_\be_\bx& result) const\n-292 {\n-293 const GeometryType eType = e.type();\n-294 const GeometryType gt = eType.isNone() ?\n-295 GeometryTypes::none( GV::dimension - cc ) :\n-296 ReferenceElements::general(eType).type(i,cc) ;\n-297 if (offset(gt) == invalidOffset)\n-298 return false;\n-299 result = indexSet_->subIndex(e, i, cc)*blockSize(gt) + offset(gt);\n-300 return true;\n-301 }\n+263\n+265\n+_\b2_\b8_\b2 _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const GV& gv, const V &v_, const std::string &s_,\n+283 int _\bn_\bc_\bo_\bm_\bp_\bs=1, int mycomp=0, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+284 : v( v_ ),\n+285 s( s_ ),\n+286 ncomps_(_\bn_\bc_\bo_\bm_\bp_\bs),\n+287 mycomp_(mycomp),\n+288 prec_(prec),\n+289 mapper( gv, _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt() )\n+290 {\n+291 if (v.size()!=(unsigned int)(mapper._\bs_\bi_\bz_\be()*ncomps_))\n+292 DUNE_THROW(IOError,\"P1VTKFunction: size mismatch\");\n+293 }\n+294\n+_\b2_\b9_\b6 virtual _\b~_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn() {}\n+297 };\n+298\n+300\n+301} // namespace Dune\n 302\n-_\b3_\b0_\b8 void _\bu_\bp_\bd_\ba_\bt_\be (const GV& _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw)\n-309 {\n-310 gridView_ = _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw;\n-311 indexSet_ = &gridView_.indexSet();\n-312 update_();\n-313 }\n-314\n-_\b3_\b2_\b0 void _\bu_\bp_\bd_\ba_\bt_\be (GV&& _\bg_\br_\bi_\bd_\bV_\bi_\be_\bw)\n-321 {\n-322 gridView_ = std::move(_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw);\n-323 indexSet_ = &gridView_.indexSet();\n-324 update_();\n-325 }\n-326\n-329 [[deprecated(\"Use update(gridView) instead! Will be removed after release\n-2.8.\")]]\n-_\b3_\b3_\b0 void _\bu_\bp_\bd_\ba_\bt_\be ()\n-331 {\n-332 update_();\n-333 }\n-334\n-_\b3_\b3_\b5 const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt &_\bl_\ba_\by_\bo_\bu_\bt () const { return layout_; }\n-_\b3_\b3_\b6 const _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw &_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw () const { return gridView_; }\n-337\n-338 private:\n-339 void update_()\n-340 {\n-341 n = 0;\n-342\n-343 std::fill(offsets.begin(),offsets.end(),_\bI_\bn_\bd_\be_\bx(0));\n-344 std::fill(blocks.begin(),blocks.end(),_\bI_\bn_\bd_\be_\bx(0));\n-345\n-346 for (unsigned int codim = 0; codim <= GV::dimension; ++codim)\n-347 {\n-348 // walk over all geometry types in the codimension\n-349 for (const GeometryType& gt : indexSet_->_\bt_\by_\bp_\be_\bs(codim)) {\n-350 _\bI_\bn_\bd_\be_\bx offset;\n-351 size_t block = _\bl_\ba_\by_\bo_\bu_\bt()(gt, GV::Grid::dimension);\n-352\n-353 // if the geometry type is contained in the layout, increment offset\n-354 // and store geometry type\n-355 if (block) {\n-356 offset = n;\n-357 n += indexSet_->size(gt) * block;\n-358 myTypes_[codim].push_back(gt);\n-359 }\n-360 else {\n-361 offset = invalidOffset;\n-362 }\n-363\n-364 offsets[GlobalGeometryTypeIndex::index(gt)] = offset;\n-365 blocks[GlobalGeometryTypeIndex::index(gt)] = block;\n-366 }\n-367 }\n-368 }\n-369\n-370 _\bI_\bn_\bd_\be_\bx offset(GeometryType gt) const\n-371 { return offsets[GlobalGeometryTypeIndex::index(gt)]; }\n-372 _\bI_\bn_\bd_\be_\bx blockSize(GeometryType gt) const\n-373 { return blocks[GlobalGeometryTypeIndex::index(gt)]; }\n-374\n-375 static const _\bI_\bn_\bd_\be_\bx invalidOffset = std::numeric_limits::max();\n-376\n-377 // number of data elements required\n-378 unsigned int n;\n-379 // GridView is needed to keep the IndexSet valid\n-380 GV gridView_;\n-381 const typename GV::IndexSet* indexSet_;\n-382 // provide an array for the offsets\n-383 std::array<_\bI_\bn_\bd_\be_\bx, GlobalGeometryTypeIndex::size(GV::dimension)> offsets;\n-384 std::array<_\bI_\bn_\bd_\be_\bx, GlobalGeometryTypeIndex::size(GV::dimension)> blocks;\n-385 const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt layout_; // get layout object\n-386 std::vector myTypes_[GV::dimension+1];\n-387 };\n-388\n-390 //\n-391 // Leaf and level mapper\n-392 //\n-393\n-400 template \n-_\b4_\b0_\b1 class [[deprecated(\"Use MultipleCodimMultipleGeomTypeMapper instead! Will\n-be removed after release 2.8.\")]]\n-402 _\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-403 : public _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-404 {\n-405 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\b:_\b:_\bL_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> _\bB_\ba_\bs_\be;\n-406 public:\n-407\n-_\b4_\b1_\b4 _\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br (const G& grid, const _\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt&\n-layout)\n-415 : _\bB_\ba_\bs_\be(grid._\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(), layout)\n-416 , gridPtr_(&grid)\n-417 {}\n-418\n-_\b4_\b2_\b4 void _\bu_\bp_\bd_\ba_\bt_\be ()\n-425 {\n-426 Base::update(gridPtr_->leafGridView());\n-427 }\n-428\n-429 private:\n-430 const G* gridPtr_;\n-431 };\n-432\n-440 template \n-_\b4_\b4_\b1 class [[deprecated(\"Use MultipleCodimMultipleGeomTypeMapper instead! Will\n-be removed after release 2.8.\")]]\n-442 _\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-443 : public _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br {\n-444 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\b:_\b:_\bL_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b>\n-_\bB_\ba_\bs_\be;\n-445 public:\n-446\n-_\b4_\b5_\b4 _\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br (const G& grid, int level, const\n-_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt& layout)\n-455 : _\bB_\ba_\bs_\be(grid._\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw(level),layout)\n-456 , gridPtr_(&grid)\n-457 , level_(level)\n-458 {}\n-459\n-_\b4_\b6_\b5 void _\bu_\bp_\bd_\ba_\bt_\be ()\n-466 {\n-467 Base::update(gridPtr_->levelGridView(level_));\n-468 }\n-469\n-470 private:\n-471 const G* gridPtr_;\n-472 int level_;\n-473 };\n-474\n-476}\n-477#endif\n-_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n-Provides classes with basic mappers which are used to attach data to a grid.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\ba_\bf_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid<\n-dim, dimworld, ct, GridFamily > &grid)\n-leaf grid view for the given grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:819\n-_\bD_\bu_\bn_\be_\b:_\b:_\bl_\be_\bv_\be_\bl_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid<\n-dim, dimworld, ct, GridFamily > &grid, int level)\n-level grid view for the given grid and level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:802\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgLayout(Codim< codim >)\n-layout for entities of codimension codim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:72\n+303#endif // DUNE_GRID_IO_FILE_VTK_FUNCTION_HH\n+_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n+Mapper for multiple codim and multiple geometry types.\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Grid::ctype ctype\n+type used for coordinates in grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:145\n _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n MCMGLayout mcmgElementLayout()\n layout for elements (codim-0 entities)\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bC_\bM_\bG_\bL_\ba_\by_\bo_\bu_\bt\n-std::function< size_t(GeometryType, int)> MCMGLayout\n-layout function for MultipleCodimMultipleGeomTypeMapper\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:64\n _\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n MCMGLayout mcmgVertexLayout()\n layout for vertices (dim-0 entities)\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bp_\bp_\be_\br\n-Mapper interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mapper.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+Precision\n+which precision to use when writing out data to vtk files\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n+@ float32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int mydimension\n+Dimensionality of the reference element of the entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A struct that collects all associated types of one implementation from the\n+Traits class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n Implementation class for a multiple codim and multiple geometry type mapper.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const EntityType &e, Index &result) const\n-Returns true if the entity is contained in the index set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:272\n _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n size_type size() const\n Return total number of entities in the entity set managed by the mapper.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:204\n _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i,\n unsigned int codim) const\n Map subentity of codim 0 entity to starting index in array for dof block.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-MultipleCodimMultipleGeomTypeMapper(const GV &gridView, const MCMGLayout\n-&layout)\n-construct mapper from grid and layout description\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\bs\n-bool contains(const typename GV::template Codim< 0 >::Entity &e, int i, int cc,\n-Index &result) const\n-Returns true if the entity is contained in the index set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:291\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\bi_\bc_\be_\bs\n-IntegralRange< Index > indices(const EntityType &e) const\n-Returns a pair with the starting point in the dof vector and the number of\n-degrees of freedom if the ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n-decltype(std::declval< typename GV::IndexSet >().size(0)) size_type\n-Number type used for the overall size (the return value of the 'size' method)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:142\n _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n Index index(const EntityType &e) const\n Map entity to starting index in array for dof block.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bg_\br_\bi_\bd_\bV_\bi_\be_\bw\n-const GridView & gridView() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:336\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(const GV &gridView)\n-Recalculates indices after grid adaptation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:308\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-GV::IndexSet::IndexType Index\n-Number type used for indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size(GeometryType gt) const\n-return number of entries for a given geometry type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bl_\ba_\by_\bo_\bu_\bt\n-const MCMGLayout & layout() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\bi_\bc_\be_\bs\n-IntegralRange< Index > indices(const typename GV::template Codim< 0 >::Entity\n-&e, int i, int cc) const\n-Returns a pair with the starting point in the dof vector and the number of\n-degrees of freedom if the ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-Recalculates indices after grid adaptation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:330\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-GV GridView\n-Underlying GridView.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bt_\by_\bp_\be_\bs\n-const std::vector< GeometryType > & types(int codim) const\n-return the geometry types with entries\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(GV &&gridView)\n-Recalculates indices after grid adaptation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-Multiple codim and multiple geometry type mapper for leaf entities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:404\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-Recalculates indices after grid adaptation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:424\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:\n-_\bL_\be_\ba_\bf_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-LeafMultipleCodimMultipleGeomTypeMapper(const G &grid, const MCMGLayout\n-&layout)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:414\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-Multiple codim and multiple geometry type mapper for entities of one level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:443\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update()\n-Recalculates indices after grid adaptation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:465\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:\n-_\bL_\be_\bv_\be_\bl_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-LevelMultipleCodimMultipleGeomTypeMapper(const G &grid, int level, const\n-MCMGLayout &layout)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:454\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+A base class for grid functions with any return type and dimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+virtual double evaluate(int comp, const Entity &e, const Dune::FieldVector<\n+ctype, dim > &xi) const =0\n+evaluate single component comp in the entity e at local coordinates xi\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n+GridView::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridView::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm\n+static constexpr int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const =0\n+get name\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+virtual VTK::Precision precision() const\n+get output precision for the field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual int ncomps() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+virtual ~VTKFunction()\n+virtual destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Take a vector and interpret it as cell data for the VTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n+std::string name() const override\n+get name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Base::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+double evaluate(int, const Entity &e, const Dune::FieldVector< ctype, dim > &)\n+const override\n+evaluate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+P0VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1,\n+int mycomp=0, VTK::Precision prec=VTK::Precision::float32)\n+construct from a vector and a name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+VTK::Precision precision() const override\n+get output precision for the field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Base::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+virtual ~P0VTKFunction()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+int ncomps() const override\n+return number of components\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Take a vector and interpret it as point data for the VTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n+std::string name() const override\n+get name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+virtual ~P1VTKFunction()\n+destructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:296\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Base::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Base::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:227\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+VTK::Precision precision() const override\n+get output precision for the field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:259\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+double evaluate(int comp, const Entity &e, const Dune::FieldVector< ctype, dim\n+> &xi) const override\n+evaluate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:237\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+P1VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1,\n+int mycomp=0, VTK::Precision prec=VTK::Precision::float32)\n+construct from a vector and a name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:282\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+int ncomps() const override\n+return number of components\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:231\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00275.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00326.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -79,15 +79,15 @@\n
    adaptcallback.hh File Reference
    \n
    \n
    \n \n

    interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid \n More...

    \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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00275_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00326_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,15 +77,15 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n
    adaptcallback.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_COMMON_ADAPTCALLBACK_HH
    \n
    6#define DUNE_GRID_COMMON_ADAPTCALLBACK_HH
    \n
    7
    \n
    14namespace Dune
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00287_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00332_source.html", "comments": ["Files 85% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: partitionset.hh Source File\n+dune-grid: sizecache.hh Source File\n \n \n \n \n \n \n \n@@ -74,352 +74,385 @@\n \n
    \n \n
    \n
    \n
    \n-
    partitionset.hh
    \n+
    sizecache.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_PARTITIONSET_HH
    \n-
    6#define DUNE_GRID_COMMON_PARTITIONSET_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_SIZECACHE_HH
    \n+
    6#define DUNE_GRID_COMMON_SIZECACHE_HH
    \n
    7
    \n-
    8#include <dune/common/keywords.hh>
    \n-
    9#include <dune/common/typetraits.hh>
    \n-\n-
    11
    \n-
    12namespace Dune {
    \n-
    13
    \n-
    19 namespace {
    \n-
    20
    \n-
    21 // Simple TMP to deduce partition iterator type from set of partitions.
    \n-
    22 template<unsigned int partitions>
    \n-
    23 struct derive_partition_iterator_type
    \n-
    24 {
    \n-
    25 // We did not match any specialization, bail out...
    \n-
    26 static_assert(AlwaysFalse<std::integral_constant<unsigned int,partitions> >::value,
    \n-
    27 "There is no partition iterator for this combination of entity partitions");
    \n-
    28 };
    \n+
    8#include <cassert>
    \n+
    9#include <vector>
    \n+
    10#include <set>
    \n+
    11#include <utility>
    \n+
    12
    \n+
    13#include <dune/common/exceptions.hh>
    \n+
    14#include <dune/common/hybridutilities.hh>
    \n+
    15
    \n+
    16#include <dune/geometry/type.hh>
    \n+
    17#include <dune/geometry/referenceelements.hh>
    \n+
    18
    \n+\n+\n+
    21
    \n+
    28namespace Dune {
    \n
    29
    \n-
    30
    \n-
    31 // specializations of derive_partition_iterator_type for existing PartitionIteratorTypes
    \n-
    32
    \n-
    33 template<>
    \n-
    34 struct derive_partition_iterator_type<
    \n-
    35 (1 << InteriorEntity)
    \n-
    36 >
    \n-
    37 : public std::integral_constant<PartitionIteratorType,Interior_Partition>
    \n-
    38 {};
    \n-
    39
    \n-
    40 template<>
    \n-
    41 struct derive_partition_iterator_type<
    \n-
    42 (1 << InteriorEntity) |
    \n-
    43 (1 << BorderEntity)
    \n-
    44 >
    \n-
    45 : public std::integral_constant<PartitionIteratorType,InteriorBorder_Partition>
    \n-
    46 {};
    \n-
    47
    \n-
    48 template<>
    \n-
    49 struct derive_partition_iterator_type<
    \n-
    50 (1 << InteriorEntity) |
    \n-
    51 (1 << BorderEntity) |
    \n-
    52 (1 << OverlapEntity)
    \n-
    53 >
    \n-
    54 : public std::integral_constant<PartitionIteratorType,Overlap_Partition>
    \n-
    55 {};
    \n-
    56
    \n-
    57 template<>
    \n-
    58 struct derive_partition_iterator_type<
    \n-
    59 (1 << InteriorEntity) |
    \n-
    60 (1 << BorderEntity) |
    \n-
    61 (1 << OverlapEntity) |
    \n-
    62 (1 << FrontEntity)
    \n-
    63 >
    \n-
    64 : public std::integral_constant<PartitionIteratorType,OverlapFront_Partition>
    \n-
    65 {};
    \n-
    66
    \n-
    67 template<>
    \n-
    68 struct derive_partition_iterator_type<
    \n-
    69 (1 << InteriorEntity) |
    \n-
    70 (1 << BorderEntity) |
    \n-
    71 (1 << OverlapEntity) |
    \n-
    72 (1 << FrontEntity) |
    \n-
    73 (1 << GhostEntity)
    \n-
    74 >
    \n-
    75 : public std::integral_constant<PartitionIteratorType,All_Partition>
    \n-
    76 {};
    \n-
    77
    \n-
    78 template<>
    \n-
    79 struct derive_partition_iterator_type<
    \n-
    80 (1 << GhostEntity)
    \n-
    81 >
    \n-
    82 : public std::integral_constant<PartitionIteratorType,Ghost_Partition>
    \n-
    83 {};
    \n-
    84
    \n-
    85
    \n-
    86 // Simple TMP to deduce set of partitions from partition iterator type.
    \n-
    87
    \n-
    88 template<PartitionIteratorType pitype>
    \n-
    89 struct derive_partition_set;
    \n-
    90
    \n-
    91
    \n-
    92 // specializations of derive_partition_set for existing PartitionIteratorTypes
    \n+
    31 template <class GridImp>
    \n+
    \n+\n+
    33 {
    \n+\n+
    36 constexpr static int dim = GridImp::dimension;
    \n+
    37
    \n+
    39 constexpr static int nCodim = GridImp::dimension + 1;
    \n+
    40
    \n+
    41 // type of grid
    \n+
    42 typedef GridImp GridType;
    \n+
    43
    \n+
    44 // coordinate type
    \n+
    45 typedef typename GridType :: ctype ctype ;
    \n+
    46
    \n+
    47 // stores all sizes of the levels
    \n+
    48 mutable std::vector< int > levelSizes_[nCodim];
    \n+
    49
    \n+
    50 // stores all sizes of the levels
    \n+
    51 mutable std::vector< std::vector< int > > levelTypeSizes_[nCodim];
    \n+
    52
    \n+
    53 // stores all sizes of leafs
    \n+
    54 mutable int leafSizes_[nCodim];
    \n+
    55
    \n+
    56 // stores all sizes of leafs
    \n+
    57 mutable std::vector< int > leafTypeSizes_[nCodim];
    \n+
    58
    \n+
    59 // the grid
    \n+
    60 const GridType & grid_;
    \n+
    61
    \n+
    62 // count elements of set by iterating the grid
    \n+
    63 template < int codim, bool gridHasCodim >
    \n+
    64 struct CountLevelEntitiesBase
    \n+
    65 {
    \n+
    66 template < class SzCacheType >
    \n+
    67 static void apply(const SzCacheType & sc, int level, int cd)
    \n+
    68 {
    \n+
    69 if( cd == codim )
    \n+
    70 {
    \n+
    71 sc.template countLevelEntities<All_Partition,codim> (level);
    \n+
    72 }
    \n+
    73 }
    \n+
    74 };
    \n+
    75
    \n+
    76 template < int codim >
    \n+
    77 struct CountLevelEntitiesBase< codim, false >
    \n+
    78 {
    \n+
    79 template < class SzCacheType >
    \n+
    80 static void apply(const SzCacheType & sc, int level, int cd)
    \n+
    81 {
    \n+
    82 if( cd == codim )
    \n+
    83 {
    \n+
    84 sc.template countLevelEntitiesNoCodim<All_Partition,codim> (level);
    \n+
    85 }
    \n+
    86 }
    \n+
    87 };
    \n+
    88
    \n+
    89 template < int codim >
    \n+
    90 struct CountLevelEntities
    \n+
    91 : public CountLevelEntitiesBase< codim, Capabilities :: hasEntity< GridType, codim > :: v >
    \n+
    92 {};
    \n
    93
    \n-
    94 template<>
    \n-
    95 struct derive_partition_set<Interior_Partition>
    \n-
    96 : std::integral_constant<unsigned int, (1 << InteriorEntity)>
    \n-
    97 {};
    \n-
    98
    \n-
    99 template<>
    \n-
    100 struct derive_partition_set<InteriorBorder_Partition>
    \n-
    101 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity)>
    \n-
    102 {};
    \n-
    103
    \n-
    104 template<>
    \n-
    105 struct derive_partition_set<Overlap_Partition>
    \n-
    106 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity) | (1 << OverlapEntity)>
    \n-
    107 {};
    \n-
    108
    \n-
    109 template<>
    \n-
    110 struct derive_partition_set<OverlapFront_Partition>
    \n-
    111 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity) | (1 << OverlapEntity) | (1 << FrontEntity)>
    \n-
    112 {};
    \n-
    113
    \n-
    114 template<>
    \n-
    115 struct derive_partition_set<Ghost_Partition>
    \n-
    116 : std::integral_constant<unsigned int, (1 << GhostEntity)>
    \n-
    117 {};
    \n-
    118
    \n-
    119 template<>
    \n-
    120 struct derive_partition_set<All_Partition>
    \n-
    121 : std::integral_constant<unsigned int, (1 << InteriorEntity) | (1 << BorderEntity) | (1 << OverlapEntity) | (1 << FrontEntity) | (1 << GhostEntity)>
    \n-
    122 {};
    \n-
    123
    \n-
    124 } // anonymous namespace
    \n-
    125
    \n+
    94 // count elements of set by iterating the grid
    \n+
    95 template < int codim, bool gridHasCodim >
    \n+
    96 struct CountLeafEntitiesBase
    \n+
    97 {
    \n+
    98 template <class SzCacheType>
    \n+
    99 static void apply(const SzCacheType & sc, int cd)
    \n+
    100 {
    \n+
    101 if( cd == codim )
    \n+
    102 {
    \n+
    103 sc.template countLeafEntities<All_Partition,codim> ();
    \n+
    104 }
    \n+
    105 }
    \n+
    106 };
    \n+
    107
    \n+
    108 // count elements of set by iterating the grid
    \n+
    109 template < int codim >
    \n+
    110 struct CountLeafEntitiesBase< codim, false >
    \n+
    111 {
    \n+
    112 template <class SzCacheType>
    \n+
    113 static void apply(const SzCacheType & sc, int cd)
    \n+
    114 {
    \n+
    115 if( cd == codim )
    \n+
    116 {
    \n+
    117 sc.template countLeafEntitiesNoCodim<All_Partition,codim> ();
    \n+
    118 }
    \n+
    119 }
    \n+
    120 };
    \n+
    121
    \n+
    122 template < int codim >
    \n+
    123 struct CountLeafEntities
    \n+
    124 : public CountLeafEntitiesBase< codim, Capabilities :: hasEntity< GridType, codim > :: v >
    \n+
    125 {};
    \n
    126
    \n-
    128
    \n-
    136 template<unsigned int partitions>
    \n-
    \n-
    137 struct PartitionSet
    \n-
    138 {
    \n-
    140 static constexpr unsigned int value = partitions;
    \n-
    141
    \n-
    142
    \n-
    144 template<unsigned int p>
    \n-
    145 struct PartitionSet<partitions | p>
    \n-
    \n-
    146 constexpr operator+(const PartitionSet<p>&) const
    \n-
    147 {
    \n-
    148 return PartitionSet<partitions | p>();
    \n-
    149 }
    \n-
    \n-
    150
    \n-
    152 template<unsigned int p>
    \n-
    153 struct PartitionSet<partitions & ~p>
    \n-
    \n-
    154 constexpr operator-(const PartitionSet<p>&) const
    \n-
    155 {
    \n-
    156 return PartitionSet<partitions & ~p>();
    \n-
    157 }
    \n-
    \n-
    158
    \n-
    \n-
    160 friend std::ostream& operator<<(std::ostream& os, const PartitionSet&)
    \n-
    161 {
    \n-
    162 unsigned int set = partitions;
    \n-
    163 os << "partition set {";
    \n-
    164 bool first = true;
    \n-
    165 for (unsigned int p = 0; set; set &= ~(1 << p++))
    \n-
    166 {
    \n-
    167 if (!(set & (1 << p)))
    \n-
    168 continue;
    \n-
    169 if (!first)
    \n-
    170 os << ",";
    \n-
    171 first = false;
    \n-
    172 os << static_cast<PartitionType>(p);
    \n-
    173 }
    \n-
    174 os << "}";
    \n-
    175 return os;
    \n-
    176 }
    \n-
    \n-
    177
    \n-
    179
    \n-
    \n-
    183 static constexpr PartitionIteratorType partitionIterator()
    \n-
    184 {
    \n-
    185 return derive_partition_iterator_type<partitions>::value;
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    \n-
    189 static constexpr bool contains(PartitionType pt)
    \n-
    190 {
    \n-
    191 return partitions & (1 << pt);
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    195 template<unsigned int contained_partitions>
    \n-
    \n-
    196 static constexpr bool contains(PartitionSet<contained_partitions>)
    \n-
    197 {
    \n-
    198 return (partitions & contained_partitions) == contained_partitions;
    \n+
    127 int gtIndex( const GeometryType& type ) const
    \n+
    128 {
    \n+
    129 return type.id() >> 1 ;
    \n+
    130 }
    \n+
    131
    \n+
    132 int sizeCodim( const int codim ) const
    \n+
    133 {
    \n+
    134 const int mydim = GridType :: dimension - codim;
    \n+
    135 return ((1 << mydim) + 1) / 2;
    \n+
    136 }
    \n+
    137
    \n+
    138 // private copy constructor
    \n+
    139 SizeCache (const SizeCache & );
    \n+
    140 public:
    \n+
    \n+
    142 SizeCache (const GridType & grid) : grid_( grid )
    \n+
    143 {
    \n+
    144 reset();
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    \n+
    148 void reset()
    \n+
    149 {
    \n+
    150 for(int codim=0; codim<nCodim; ++codim)
    \n+
    151 {
    \n+
    152 leafSizes_[ codim ] = -1;
    \n+
    153 leafTypeSizes_[ codim ].resize( sizeCodim( codim ), -1 );
    \n+
    154 }
    \n+
    155
    \n+
    156 const int numMxl = grid_.maxLevel()+1;
    \n+
    157 for(int codim=0; codim<nCodim; ++codim)
    \n+
    158 {
    \n+
    159 std::vector<int> & vec = levelSizes_[codim];
    \n+
    160 vec.resize(numMxl);
    \n+
    161 levelTypeSizes_[codim].resize( numMxl );
    \n+
    162 for(int level = 0; level<numMxl; ++level)
    \n+
    163 {
    \n+
    164 vec[level] = -1;
    \n+
    165 levelTypeSizes_[codim][level].resize( sizeCodim( codim ), -1 );
    \n+
    166 }
    \n+
    167 }
    \n+
    168 }
    \n+
    \n+
    169
    \n+
    170 //********************************************************************
    \n+
    171 // level sizes
    \n+
    172 //********************************************************************
    \n+
    \n+
    174 int size (int level, int codim) const
    \n+
    175 {
    \n+
    176 assert( codim >= 0 );
    \n+
    177 assert( codim < nCodim );
    \n+
    178 assert( level >= 0 );
    \n+
    179 if( level >= (int) levelSizes_[codim].size() ) return 0;
    \n+
    180
    \n+
    181 if( levelSizes_[codim][level] < 0)
    \n+
    182 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLevelEntities< i >::apply( *this, level, codim ); } );
    \n+
    183
    \n+
    184 // CountLevelEntities<ThisType,All_Partition,dim>::count(*this,level,codim);
    \n+
    185
    \n+
    186 assert( levelSizes_[codim][level] >= 0 );
    \n+
    187 return levelSizes_[codim][level];
    \n+
    188 }
    \n+
    \n+
    189
    \n+
    \n+
    191 int size (int level, GeometryType type) const
    \n+
    192 {
    \n+
    193 int codim = GridType ::dimension - type.dim();
    \n+
    194 if( levelSizes_[codim][level] < 0)
    \n+
    195 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLevelEntities< i >::apply( *this, level, codim ); } );
    \n+
    196
    \n+
    197 assert( levelTypeSizes_[codim][level][gtIndex( type )] >= 0 );
    \n+
    198 return levelTypeSizes_[codim][level][gtIndex( type )];
    \n
    199 }
    \n
    \n
    200
    \n-
    202 template<unsigned int p2>
    \n-
    \n-
    203 constexpr bool operator==(PartitionSet<p2>) const
    \n-
    204 {
    \n-
    205 return partitions == p2;
    \n-
    206 }
    \n-
    \n-
    207
    \n-
    209 template<unsigned int p2>
    \n-
    \n-
    210 constexpr bool operator!=(PartitionSet<p2>) const
    \n-
    211 {
    \n-
    212 return partitions != p2;
    \n-
    213 }
    \n-
    \n-
    214
    \n-
    215 };
    \n-
    \n-
    216
    \n-
    218
    \n-
    221 template<PartitionType p>
    \n-
    \n-
    222 PartitionSet<(1 << p)> partitionSet()
    \n-
    223 {
    \n-
    224 return PartitionSet<(1 << p)>();
    \n-
    225 }
    \n+
    201 //********************************************************************
    \n+
    202 // leaf sizes
    \n+
    203 //********************************************************************
    \n+
    \n+
    205 int size (int codim) const
    \n+
    206 {
    \n+
    207 assert( codim >= 0 );
    \n+
    208 assert( codim < nCodim );
    \n+
    209 if( leafSizes_[codim] < 0 )
    \n+
    210 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLeafEntities< i >::apply( *this, codim ); } );
    \n+
    211
    \n+
    212 assert( leafSizes_[codim] >= 0 );
    \n+
    213 return leafSizes_[codim];
    \n+
    214 };
    \n+
    \n+
    215
    \n+
    \n+
    217 int size ( const GeometryType type ) const
    \n+
    218 {
    \n+
    219 int codim = GridType :: dimension - type.dim();
    \n+
    220 if( leafSizes_[codim] < 0 )
    \n+
    221 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLeafEntities< i >::apply( *this, codim ); } );
    \n+
    222
    \n+
    223 assert( leafTypeSizes_[codim][ gtIndex( type )] >= 0 );
    \n+
    224 return leafTypeSizes_[codim][ gtIndex( type )];
    \n+
    225 }
    \n
    \n
    226
    \n-
    231 template<PartitionIteratorType pitype>
    \n-
    \n-
    232 constexpr PartitionSet<derive_partition_set<pitype>::value> partitionSet()
    \n-
    233 {
    \n-
    234 return PartitionSet<derive_partition_set<pitype>::value>();
    \n-
    235 }
    \n-
    \n-
    236
    \n-
    \n-
    238 namespace Partitions {
    \n-
    239
    \n-
    240
    \n-
    241#ifdef DOXYGEN
    \n-
    242
    \n-
    244 typedef PartitionSet<...> Interior;
    \n-
    245
    \n-
    247 typedef PartitionSet<...> Border;
    \n-
    248
    \n-
    250 typedef PartitionSet<...> Overlap;
    \n-
    251
    \n-
    253 typedef PartitionSet<...> Front;
    \n-
    254
    \n-
    256 typedef PartitionSet<...> Ghost;
    \n-
    257
    \n-
    259 typedef PartitionSet<...> InteriorBorder;
    \n-
    260
    \n-
    262 typedef PartitionSet<...> InteriorBorderOverlap;
    \n-
    263
    \n-
    265 typedef PartitionSet<...> InteriorBorderOverlapFront;
    \n-
    266
    \n-
    268 typedef PartitionSet<...> All;
    \n+
    227 private:
    \n+
    228 template <PartitionIteratorType pitype, int codim>
    \n+
    229 void countLevelEntities(int level) const
    \n+
    230 {
    \n+
    231 typedef typename GridType :: LevelGridView GridView ;
    \n+
    232 typedef typename GridView :: template Codim< codim > :: template Partition<pitype> :: Iterator Iterator ;
    \n+
    233 GridView gridView = grid_.levelGridView( level );
    \n+
    234 Iterator it = gridView.template begin<codim,pitype> ();
    \n+
    235 Iterator end = gridView.template end<codim,pitype> ();
    \n+
    236 levelSizes_[codim][level] = countElements(it,end, levelTypeSizes_[codim][level]);
    \n+
    237 }
    \n+
    238
    \n+
    239 template <PartitionIteratorType pitype, int codim>
    \n+
    240 void countLeafEntities() const
    \n+
    241 {
    \n+
    242 // count All_Partition entities
    \n+
    243 typedef typename GridType :: LeafGridView GridView ;
    \n+
    244 typedef typename GridView :: template Codim< codim > :: template Partition<pitype> :: Iterator Iterator ;
    \n+
    245 GridView gridView = grid_.leafGridView();
    \n+
    246 Iterator it = gridView.template begin<codim,pitype> ();
    \n+
    247 Iterator end = gridView.template end<codim,pitype> ();
    \n+
    248 leafSizes_[codim] = countElements(it,end, leafTypeSizes_[codim] );
    \n+
    249 }
    \n+
    250
    \n+
    251 // counts entities with given type for given iterator
    \n+
    252 template <class IteratorType>
    \n+
    253 int countElements(IteratorType & it, const IteratorType & end, std::vector<int>& typeSizes) const
    \n+
    254 {
    \n+
    255 int overall = 0;
    \n+
    256 const size_t types = typeSizes.size();
    \n+
    257 for(size_t i=0; i<types; ++i) typeSizes[i] = 0;
    \n+
    258 for( ; it != end; ++it )
    \n+
    259 {
    \n+
    260 const GeometryType type = it->type();
    \n+
    261 ++typeSizes[ gtIndex( type ) ];
    \n+
    262 ++overall;
    \n+
    263 }
    \n+
    264
    \n+
    265#ifndef NDEBUG
    \n+
    266 int sumtypes = 0;
    \n+
    267 for(size_t i=0; i<types; ++i)
    \n+
    268 sumtypes += typeSizes[i];
    \n
    269
    \n-
    270
    \n-
    272 constexpr Interior interior;
    \n-
    273
    \n-
    275 constexpr Border border;
    \n-
    276
    \n-
    278 constexpr Overlap overlap;
    \n-
    279
    \n-
    281 constexpr Front front;
    \n-
    282
    \n-
    284 constexpr Ghost ghost;
    \n-
    285
    \n-
    287 constexpr InteriorBorder interiorBorder;
    \n-
    288
    \n-
    290 constexpr InteriorBorderOverlap interiorBorderOverlap;
    \n-
    291
    \n-
    293 constexpr InteriorBorderOverlapFront interiorBorderOverlapFront;
    \n-
    294
    \n-
    296 constexpr All all;
    \n-
    297
    \n-
    298#else // DOXYGEN
    \n-
    299
    \n-
    300 // First declare the types and objects for individual partitions
    \n-
    301
    \n-
    302 typedef decltype(partitionSet<InteriorEntity>()) Interior;
    \n-
    303 typedef decltype(partitionSet<BorderEntity>()) Border;
    \n-
    304 typedef decltype(partitionSet<OverlapEntity>()) Overlap;
    \n-
    305 typedef decltype(partitionSet<FrontEntity>()) Front;
    \n-
    306 typedef decltype(partitionSet<GhostEntity>()) Ghost;
    \n-
    307
    \n-
    308#ifndef __cpp_inline_variables
    \n-
    309 namespace {
    \n-
    310#endif
    \n-
    311
    \n-
    312 // place global objects in anonymous namespace to ensure that visibility is
    \n-
    313 // restricted to the current translation unit, making it easier for the compiler
    \n-
    314 // to eliminate the actual objects and to avoid linking problems
    \n+
    270 assert( overall == sumtypes );
    \n+
    271#endif
    \n+
    272
    \n+
    273 return overall;
    \n+
    274 }
    \n+
    275
    \n+
    276 template <PartitionIteratorType pitype, int codim>
    \n+
    277 void countLevelEntitiesNoCodim(int level) const
    \n+
    278 {
    \n+
    279 typedef typename GridType :: LevelGridView GridView ;
    \n+
    280 typedef typename GridView :: template Codim< 0 > :: template Partition<pitype> :: Iterator Iterator ;
    \n+
    281 GridView gridView = grid_.levelGridView( level );
    \n+
    282 Iterator it = gridView.template begin< 0, pitype> ();
    \n+
    283 Iterator end = gridView.template end< 0, pitype> ();
    \n+
    284 levelSizes_[codim][level] = countElementsNoCodim< codim >(it,end, levelTypeSizes_[codim][level]);
    \n+
    285 }
    \n+
    286
    \n+
    287 template <PartitionIteratorType pitype, int codim>
    \n+
    288 void countLeafEntitiesNoCodim() const
    \n+
    289 {
    \n+
    290 // count All_Partition entities
    \n+
    291 typedef typename GridType :: LeafGridView GridView ;
    \n+
    292 typedef typename GridView :: template Codim< 0 > :: template Partition<pitype> :: Iterator Iterator ;
    \n+
    293 GridView gridView = grid_.leafGridView();
    \n+
    294 Iterator it = gridView.template begin< 0, pitype > ();
    \n+
    295 Iterator end = gridView.template end< 0, pitype > ();
    \n+
    296 leafSizes_[codim] = countElementsNoCodim< codim >(it,end, leafTypeSizes_[codim] );
    \n+
    297 }
    \n+
    298
    \n+
    299 // counts entities with given type for given iterator
    \n+
    300 template < int codim, class IteratorType >
    \n+
    301 int countElementsNoCodim(IteratorType & it, const IteratorType & end, std::vector<int>& typeSizes) const
    \n+
    302 {
    \n+
    303 typedef typename GridType :: LocalIdSet LocalIdSet ;
    \n+
    304 typedef typename LocalIdSet :: IdType IdType ;
    \n+
    305
    \n+
    306 typedef ReferenceElements< ctype, dim > ReferenceElementContainerType;
    \n+
    307 typedef typename ReferenceElementContainerType::ReferenceElement ReferenceElementType;
    \n+
    308
    \n+
    309 typedef std::set< IdType > CodimIdSetType ;
    \n+
    310
    \n+
    311 typedef typename IteratorType :: Entity ElementType ;
    \n+
    312
    \n+
    313 // get id set
    \n+
    314 const LocalIdSet& idSet = grid_.localIdSet();
    \n
    315
    \n-
    316 DUNE_INLINE_VARIABLE constexpr Interior interior = {};
    \n-
    317 DUNE_INLINE_VARIABLE constexpr Border border = {};
    \n-
    318 DUNE_INLINE_VARIABLE constexpr Overlap overlap = {};
    \n-
    319 DUNE_INLINE_VARIABLE constexpr Front front = {};
    \n-
    320 DUNE_INLINE_VARIABLE constexpr Ghost ghost = {};
    \n-
    321
    \n-
    322#ifndef __cpp_inline_variables
    \n-
    323 }
    \n-
    324#endif
    \n-
    325
    \n-
    326 // Now we can declare the partition sets that are a result of combining partitions
    \n-
    327
    \n-
    328 typedef decltype(interior + border) InteriorBorder;
    \n-
    329 typedef decltype(interior + border + overlap) InteriorBorderOverlap;
    \n-
    330 typedef decltype(interior + border + overlap + front) InteriorBorderOverlapFront;
    \n-
    331 typedef decltype(interior + border + overlap + front + ghost) All;
    \n-
    332
    \n-
    333#ifndef __cpp_inline_variables
    \n-
    334 namespace {
    \n-
    335#endif
    \n-
    336
    \n-
    337 // again, place the global objects in an anonymous namespace
    \n-
    338
    \n-
    339 DUNE_INLINE_VARIABLE constexpr InteriorBorder interiorBorder = {};
    \n-
    340 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlap interiorBorderOverlap = {};
    \n-
    341 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlapFront interiorBorderOverlapFront = {};
    \n-
    342 DUNE_INLINE_VARIABLE constexpr All all = {};
    \n-
    343
    \n-
    344#ifndef __cpp_inline_variables
    \n-
    345 }
    \n-
    346#endif
    \n-
    347
    \n-
    348#endif // DOXYGEN
    \n-
    349
    \n-
    350 } // namespace Partitions
    \n-
    \n-
    351
    \n-
    356} // namespace Dune
    \n-
    357
    \n-
    358#endif // DUNE_GRID_COMMON_PARTITIONSET_HH
    \n-\n-
    @ Interior_Partition
    only interior entities
    Definition gridenums.hh:137
    \n-
    @ FrontEntity
    on boundary between overlap and ghost
    Definition gridenums.hh:34
    \n-
    @ InteriorEntity
    all interior entities
    Definition gridenums.hh:31
    \n-
    @ GhostEntity
    ghost entities
    Definition gridenums.hh:35
    \n-
    @ BorderEntity
    on boundary between interior and overlap
    Definition gridenums.hh:32
    \n-
    @ OverlapEntity
    all entities lying in the overlap zone
    Definition gridenums.hh:33
    \n+
    316 const size_t types = typeSizes.size();
    \n+
    317 for(size_t i=0; i<types; ++i) typeSizes[ i ] = 0;
    \n+
    318
    \n+
    319 std::vector< CodimIdSetType > typeCount( types );
    \n+
    320
    \n+
    321 // count all elements of codimension codim
    \n+
    322 for( ; it != end; ++it )
    \n+
    323 {
    \n+
    324 // get entity
    \n+
    325 const ElementType& element = *it ;
    \n+
    326 // get reference element
    \n+
    327 ReferenceElementType refElem =
    \n+
    328 ReferenceElementContainerType :: general( element.type() );
    \n+
    329
    \n+
    330 // count all sub entities of codimension codim
    \n+
    331 const int count = element.subEntities( codim );
    \n+
    332 for( int i=0; i< count; ++ i )
    \n+
    333 {
    \n+
    334 // get geometry type
    \n+
    335 const GeometryType geomType = refElem.type( i, codim );
    \n+
    336 // get id of sub entity
    \n+
    337 const IdType id = idSet.subId( element, i, codim );
    \n+
    338 // insert id into set
    \n+
    339 typeCount[ gtIndex( geomType ) ].insert( id );
    \n+
    340 }
    \n+
    341 }
    \n+
    342
    \n+
    343 // accumulate numbers
    \n+
    344 int overall = 0;
    \n+
    345 for(size_t i=0; i<types; ++i)
    \n+
    346 {
    \n+
    347 typeSizes[ i ] = typeCount[ i ].size();
    \n+
    348 overall += typeSizes[ i ];
    \n+
    349 }
    \n+
    350
    \n+
    351 return overall;
    \n+
    352 }
    \n+
    353 };
    \n+
    \n+
    354
    \n+
    355} // end namespace Dune
    \n+
    356#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n+
    U_CHAR ElementType
    Definition misc.hh:63
    \n+
    GeometryType
    Type representing VTK's entity geometry types.
    Definition common.hh:132
    \n+
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n+
    organizes the caching of sizes for one grid and one GeometryType
    Definition sizecache.hh:33
    \n+
    int size(int level, GeometryType type) const
    Return number of entities per level and geometry type in this process.
    Definition sizecache.hh:191
    \n+
    int size(int level, int codim) const
    Return number of grid entities of a given codim on a given level in this process.
    Definition sizecache.hh:174
    \n+
    int size(int codim) const
    Return number of leaf entities of a given codim in this process.
    Definition sizecache.hh:205
    \n+
    SizeCache(const GridType &grid)
    constructor taking grid reference
    Definition sizecache.hh:142
    \n+
    int size(const GeometryType type) const
    Return number of leaf entities per geometry type in this process.
    Definition sizecache.hh:217
    \n+
    void reset()
    reset all cached sizes
    Definition sizecache.hh:148
    \n+
    A set of traits classes to store static information about grid implementation.
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,357 +1,414 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-partitionset.hh\n+sizecache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_PARTITIONSET_HH\n-6#define DUNE_GRID_COMMON_PARTITIONSET_HH\n+5#ifndef DUNE_GRID_COMMON_SIZECACHE_HH\n+6#define DUNE_GRID_COMMON_SIZECACHE_HH\n 7\n-8#include \n-9#include \n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be {\n-13\n-19 namespace {\n-20\n-21 // Simple TMP to deduce partition iterator type from set of partitions.\n-22 template\n-23 struct derive_partition_iterator_type\n-24 {\n-25 // We did not match any specialization, bail out...\n-26 static_assert(AlwaysFalse\n->::value,\n-27 \"There is no partition iterator for this combination of entity partitions\");\n-28 };\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 \n+17#include \n+18\n+19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+21\n+28namespace _\bD_\bu_\bn_\be {\n 29\n-30\n-31 // specializations of derive_partition_iterator_type for existing\n-PartitionIteratorTypes\n-32\n-33 template<>\n-34 struct derive_partition_iterator_type<\n-35 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by)\n-36 >\n-37 : public std::integral_constant\n-38 {};\n-39\n-40 template<>\n-41 struct derive_partition_iterator_type<\n-42 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-43 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by)\n-44 >\n-45 : public std::\n-integral_constant\n-46 {};\n-47\n-48 template<>\n-49 struct derive_partition_iterator_type<\n-50 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-51 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-52 (1 << _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by)\n-53 >\n-54 : public std::integral_constant\n-55 {};\n-56\n-57 template<>\n-58 struct derive_partition_iterator_type<\n-59 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-60 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-61 (1 << _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by) |\n-62 (1 << _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by)\n-63 >\n-64 : public std::\n-integral_constant\n-65 {};\n-66\n-67 template<>\n-68 struct derive_partition_iterator_type<\n-69 (1 << _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-70 (1 << _\bB_\bo_\br_\bd_\be_\br_\bE_\bn_\bt_\bi_\bt_\by) |\n-71 (1 << _\bO_\bv_\be_\br_\bl_\ba_\bp_\bE_\bn_\bt_\bi_\bt_\by) |\n-72 (1 << _\bF_\br_\bo_\bn_\bt_\bE_\bn_\bt_\bi_\bt_\by) |\n-73 (1 << _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by)\n-74 >\n-75 : public std::integral_constant\n-76 {};\n-77\n-78 template<>\n-79 struct derive_partition_iterator_type<\n-80 (1 << _\bG_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by)\n-81 >\n-82 : public std::integral_constant\n-83 {};\n-84\n-85\n-86 // Simple TMP to deduce set of partitions from partition iterator type.\n-87\n-88 template\n-89 struct derive_partition_set;\n-90\n-91\n-92 // specializations of derive_partition_set for existing\n-PartitionIteratorTypes\n+31 template \n+_\b3_\b2 class _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be\n+33 {\n+34 typedef _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n+36 constexpr static int dim = GridImp::dimension;\n+37\n+39 constexpr static int nCodim = GridImp::dimension + 1;\n+40\n+41 // type of grid\n+42 typedef GridImp GridType;\n+43\n+44 // coordinate type\n+45 typedef typename GridType :: ctype ctype ;\n+46\n+47 // stores all sizes of the levels\n+48 mutable std::vector< int > levelSizes_[nCodim];\n+49\n+50 // stores all sizes of the levels\n+51 mutable std::vector< std::vector< int > > levelTypeSizes_[nCodim];\n+52\n+53 // stores all sizes of leafs\n+54 mutable int leafSizes_[nCodim];\n+55\n+56 // stores all sizes of leafs\n+57 mutable std::vector< int > leafTypeSizes_[nCodim];\n+58\n+59 // the grid\n+60 const GridType & grid_;\n+61\n+62 // count elements of set by iterating the grid\n+63 template < int codim, bool gridHasCodim >\n+64 struct CountLevelEntitiesBase\n+65 {\n+66 template < class SzCacheType >\n+67 static void apply(const SzCacheType & sc, int level, int cd)\n+68 {\n+69 if( cd == codim )\n+70 {\n+71 sc.template countLevelEntities (level);\n+72 }\n+73 }\n+74 };\n+75\n+76 template < int codim >\n+77 struct CountLevelEntitiesBase< codim, false >\n+78 {\n+79 template < class SzCacheType >\n+80 static void apply(const SzCacheType & sc, int level, int cd)\n+81 {\n+82 if( cd == codim )\n+83 {\n+84 sc.template countLevelEntitiesNoCodim (level);\n+85 }\n+86 }\n+87 };\n+88\n+89 template < int codim >\n+90 struct CountLevelEntities\n+91 : public CountLevelEntitiesBase< codim, Capabilities :: hasEntity< GridType,\n+codim > :: v >\n+92 {};\n 93\n-94 template<>\n-95 struct derive_partition_set<_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn>\n-96 : std::integral_constant\n-97 {};\n-98\n-99 template<>\n-100 struct derive_partition_set\n-101 : std::integral_constant\n-102 {};\n-103\n-104 template<>\n-105 struct derive_partition_set\n-106 : std::integral_constant\n-107 {};\n-108\n-109 template<>\n-110 struct derive_partition_set\n-111 : std::integral_constant\n-112 {};\n-113\n-114 template<>\n-115 struct derive_partition_set\n-116 : std::integral_constant\n-117 {};\n-118\n-119 template<>\n-120 struct derive_partition_set\n-121 : std::integral_constant\n-122 {};\n-123\n-124 } // anonymous namespace\n-125\n+94 // count elements of set by iterating the grid\n+95 template < int codim, bool gridHasCodim >\n+96 struct CountLeafEntitiesBase\n+97 {\n+98 template \n+99 static void apply(const SzCacheType & sc, int cd)\n+100 {\n+101 if( cd == codim )\n+102 {\n+103 sc.template countLeafEntities ();\n+104 }\n+105 }\n+106 };\n+107\n+108 // count elements of set by iterating the grid\n+109 template < int codim >\n+110 struct CountLeafEntitiesBase< codim, false >\n+111 {\n+112 template \n+113 static void apply(const SzCacheType & sc, int cd)\n+114 {\n+115 if( cd == codim )\n+116 {\n+117 sc.template countLeafEntitiesNoCodim ();\n+118 }\n+119 }\n+120 };\n+121\n+122 template < int codim >\n+123 struct CountLeafEntities\n+124 : public CountLeafEntitiesBase< codim, Capabilities :: hasEntity< GridType,\n+codim > :: v >\n+125 {};\n 126\n-128\n-136 template\n-_\b1_\b3_\b7 struct PartitionSet\n-138 {\n-140 static constexpr unsigned int value = partitions;\n-141\n-142\n-144 template\n-145 struct PartitionSet\n-_\b1_\b4_\b6 constexpr operator+(const PartitionSet

    &) const\n-147 {\n-148 return PartitionSet();\n-149 }\n-150\n-152 template\n-153 struct PartitionSet\n-_\b1_\b5_\b4 constexpr operator-(const PartitionSet

    &) const\n-155 {\n-156 return PartitionSet();\n-157 }\n-158\n-_\b1_\b6_\b0 friend std::ostream& operator<<(std::ostream& os, const PartitionSet&)\n-161 {\n-162 unsigned int set = partitions;\n-163 os << \"partition set {\";\n-164 bool first = true;\n-165 for (unsigned int p = 0; set; set &= ~(1 << p++))\n-166 {\n-167 if (!(set & (1 << p)))\n-168 continue;\n-169 if (!first)\n-170 os << \",\";\n-171 first = false;\n-172 os << static_cast(p);\n-173 }\n-174 os << \"}\";\n-175 return os;\n-176 }\n-177\n-179\n-_\b1_\b8_\b3 static constexpr PartitionIteratorType partitionIterator()\n-184 {\n-185 return derive_partition_iterator_type::value;\n-186 }\n-187\n-_\b1_\b8_\b9 static constexpr bool contains(PartitionType pt)\n-190 {\n-191 return partitions & (1 << pt);\n-192 }\n-193\n-195 template\n-_\b1_\b9_\b6 static constexpr bool contains(PartitionSet)\n-197 {\n-198 return (partitions & contained_partitions) == contained_partitions;\n+127 int gtIndex( const GeometryType& type ) const\n+128 {\n+129 return type.id() >> 1 ;\n+130 }\n+131\n+132 int sizeCodim( const int codim ) const\n+133 {\n+134 const int mydim = GridType :: dimension - codim;\n+135 return ((1 << mydim) + 1) / 2;\n+136 }\n+137\n+138 // private copy constructor\n+139 _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be (const _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be & );\n+140 public:\n+_\b1_\b4_\b2 _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be (const GridType & grid) : grid_( grid )\n+143 {\n+144 _\br_\be_\bs_\be_\bt();\n+145 }\n+146\n+_\b1_\b4_\b8 void _\br_\be_\bs_\be_\bt()\n+149 {\n+150 for(int codim=0; codim & vec = levelSizes_[codim];\n+160 vec.resize(numMxl);\n+161 levelTypeSizes_[codim].resize( numMxl );\n+162 for(int level = 0; level= 0 );\n+177 assert( codim < nCodim );\n+178 assert( level >= 0 );\n+179 if( level >= (int) levelSizes_[codim]._\bs_\bi_\bz_\be() ) return 0;\n+180\n+181 if( levelSizes_[codim][level] < 0)\n+182 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n+{ CountLevelEntities< i >::apply( *this, level, codim ); } );\n+183\n+184 // CountLevelEntities::count\n+(*this,level,codim);\n+185\n+186 assert( levelSizes_[codim][level] >= 0 );\n+187 return levelSizes_[codim][level];\n+188 }\n+189\n+_\b1_\b9_\b1 int _\bs_\bi_\bz_\be (int level, GeometryType type) const\n+192 {\n+193 int codim = GridType ::dimension - type.dim();\n+194 if( levelSizes_[codim][level] < 0)\n+195 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n+{ CountLevelEntities< i >::apply( *this, level, codim ); } );\n+196\n+197 assert( levelTypeSizes_[codim][level][gtIndex( type )] >= 0 );\n+198 return levelTypeSizes_[codim][level][gtIndex( type )];\n 199 }\n 200\n-202 template\n-_\b2_\b0_\b3 constexpr bool operator==(PartitionSet) const\n-204 {\n-205 return partitions == p2;\n-206 }\n-207\n-209 template\n-_\b2_\b1_\b0 constexpr bool operator!=(PartitionSet) const\n-211 {\n-212 return partitions != p2;\n-213 }\n-214\n-215 };\n-216\n-218\n-221 template\n-_\b2_\b2_\b2 PartitionSet<(1 << p)> partitionSet()\n-223 {\n-224 return PartitionSet<(1 << p)>();\n+201 //********************************************************************\n+202 // leaf sizes\n+203 //********************************************************************\n+_\b2_\b0_\b5 int _\bs_\bi_\bz_\be (int codim) const\n+206 {\n+207 assert( codim >= 0 );\n+208 assert( codim < nCodim );\n+209 if( leafSizes_[codim] < 0 )\n+210 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n+{ CountLeafEntities< i >::apply( *this, codim ); } );\n+211\n+212 assert( leafSizes_[codim] >= 0 );\n+213 return leafSizes_[codim];\n+214 };\n+215\n+_\b2_\b1_\b7 int _\bs_\bi_\bz_\be ( const GeometryType type ) const\n+218 {\n+219 int codim = GridType :: dimension - type.dim();\n+220 if( leafSizes_[codim] < 0 )\n+221 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n+{ CountLeafEntities< i >::apply( *this, codim ); } );\n+222\n+223 assert( leafTypeSizes_[codim][ gtIndex( type )] >= 0 );\n+224 return leafTypeSizes_[codim][ gtIndex( type )];\n 225 }\n 226\n-231 template\n-_\b2_\b3_\b2 constexpr PartitionSet::value> partitionSet()\n-233 {\n-234 return PartitionSet::value>();\n-235 }\n-236\n-_\b2_\b3_\b8 namespace Partitions {\n-239\n-240\n-241#ifdef DOXYGEN\n-242\n-_\b2_\b4_\b4 typedef PartitionSet<...> Interior;\n-245\n-_\b2_\b4_\b7 typedef PartitionSet<...> Border;\n-248\n-_\b2_\b5_\b0 typedef PartitionSet<...> Overlap;\n-251\n-_\b2_\b5_\b3 typedef PartitionSet<...> Front;\n-254\n-_\b2_\b5_\b6 typedef PartitionSet<...> Ghost;\n-257\n-_\b2_\b5_\b9 typedef PartitionSet<...> InteriorBorder;\n-260\n-_\b2_\b6_\b2 typedef PartitionSet<...> InteriorBorderOverlap;\n-263\n-_\b2_\b6_\b5 typedef PartitionSet<...> InteriorBorderOverlapFront;\n-266\n-_\b2_\b6_\b8 typedef PartitionSet<...> All;\n+227 private:\n+228 template \n+229 void countLevelEntities(int level) const\n+230 {\n+231 typedef typename GridType :: LevelGridView _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw ;\n+232 typedef typename GridView :: template Codim< codim > :: template\n+Partition :: Iterator Iterator ;\n+233 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw gridView = grid_.levelGridView( level );\n+234 Iterator it = gridView.template begin ();\n+235 Iterator end = gridView.template end ();\n+236 levelSizes_[codim][level] = countElements(it,end, levelTypeSizes_[codim]\n+[level]);\n+237 }\n+238\n+239 template \n+240 void countLeafEntities() const\n+241 {\n+242 // count All_Partition entities\n+243 typedef typename GridType :: LeafGridView GridView ;\n+244 typedef typename GridView :: template Codim< codim > :: template\n+Partition :: Iterator Iterator ;\n+245 GridView gridView = grid_.leafGridView();\n+246 Iterator it = gridView.template begin ();\n+247 Iterator end = gridView.template end ();\n+248 leafSizes_[codim] = countElements(it,end, leafTypeSizes_[codim] );\n+249 }\n+250\n+251 // counts entities with given type for given iterator\n+252 template \n+253 int countElements(IteratorType & it, const IteratorType & end, std::\n+vector& typeSizes) const\n+254 {\n+255 int overall = 0;\n+256 const size_t types = typeSizes.size();\n+257 for(size_t i=0; itype();\n+261 ++typeSizes[ gtIndex( type ) ];\n+262 ++overall;\n+263 }\n+264\n+265#ifndef NDEBUG\n+266 int sumtypes = 0;\n+267 for(size_t i=0; i()) Interior;\n-303 typedef decltype(partitionSet()) Border;\n-304 typedef decltype(partitionSet()) Overlap;\n-305 typedef decltype(partitionSet()) Front;\n-306 typedef decltype(partitionSet()) Ghost;\n-307\n-308#ifndef __cpp_inline_variables\n-309 namespace {\n-310#endif\n-311\n-312 // place global objects in anonymous namespace to ensure that visibility is\n-313 // restricted to the current translation unit, making it easier for the\n-compiler\n-314 // to eliminate the actual objects and to avoid linking problems\n+270 assert( overall == sumtypes );\n+271#endif\n+272\n+273 return overall;\n+274 }\n+275\n+276 template \n+277 void countLevelEntitiesNoCodim(int level) const\n+278 {\n+279 typedef typename GridType :: LevelGridView GridView ;\n+280 typedef typename GridView :: template Codim< 0 > :: template\n+Partition :: Iterator Iterator ;\n+281 GridView gridView = grid_.levelGridView( level );\n+282 Iterator it = gridView.template begin< 0, pitype> ();\n+283 Iterator end = gridView.template end< 0, pitype> ();\n+284 levelSizes_[codim][level] = countElementsNoCodim< codim >(it,end,\n+levelTypeSizes_[codim][level]);\n+285 }\n+286\n+287 template \n+288 void countLeafEntitiesNoCodim() const\n+289 {\n+290 // count All_Partition entities\n+291 typedef typename GridType :: LeafGridView GridView ;\n+292 typedef typename GridView :: template Codim< 0 > :: template\n+Partition :: Iterator Iterator ;\n+293 GridView gridView = grid_.leafGridView();\n+294 Iterator it = gridView.template begin< 0, pitype > ();\n+295 Iterator end = gridView.template end< 0, pitype > ();\n+296 leafSizes_[codim] = countElementsNoCodim< codim >(it,end, leafTypeSizes_\n+[codim] );\n+297 }\n+298\n+299 // counts entities with given type for given iterator\n+300 template < int codim, class IteratorType >\n+301 int countElementsNoCodim(IteratorType & it, const IteratorType & end, std::\n+vector& typeSizes) const\n+302 {\n+303 typedef typename GridType :: LocalIdSet LocalIdSet ;\n+304 typedef typename LocalIdSet :: IdType IdType ;\n+305\n+306 typedef ReferenceElements< ctype, dim > ReferenceElementContainerType;\n+307 typedef typename ReferenceElementContainerType::ReferenceElement\n+ReferenceElementType;\n+308\n+309 typedef std::set< IdType > CodimIdSetType ;\n+310\n+311 typedef typename IteratorType :: Entity _\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be ;\n+312\n+313 // get id set\n+314 const LocalIdSet& idSet = grid_.localIdSet();\n 315\n-316 DUNE_INLINE_VARIABLE constexpr Interior interior = {};\n-317 DUNE_INLINE_VARIABLE constexpr Border border = {};\n-318 DUNE_INLINE_VARIABLE constexpr Overlap overlap = {};\n-319 DUNE_INLINE_VARIABLE constexpr Front front = {};\n-320 DUNE_INLINE_VARIABLE constexpr Ghost ghost = {};\n-321\n-322#ifndef __cpp_inline_variables\n-323 }\n-324#endif\n-325\n-326 // Now we can declare the partition sets that are a result of combining\n-partitions\n-327\n-328 typedef decltype(interior + border) InteriorBorder;\n-329 typedef decltype(interior + border + overlap) InteriorBorderOverlap;\n-330 typedef decltype(interior + border + overlap + front)\n-InteriorBorderOverlapFront;\n-331 typedef decltype(interior + border + overlap + front + ghost) All;\n-332\n-333#ifndef __cpp_inline_variables\n-334 namespace {\n-335#endif\n-336\n-337 // again, place the global objects in an anonymous namespace\n-338\n-339 DUNE_INLINE_VARIABLE constexpr InteriorBorder interiorBorder = {};\n-340 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlap interiorBorderOverlap\n-= {};\n-341 DUNE_INLINE_VARIABLE constexpr InteriorBorderOverlapFront\n-interiorBorderOverlapFront = {};\n-342 DUNE_INLINE_VARIABLE constexpr All all = {};\n-343\n-344#ifndef __cpp_inline_variables\n-345 }\n-346#endif\n-347\n-348#endif // DOXYGEN\n-349\n-350 } // namespace Partitions\n-351\n-356} // namespace Dune\n-357\n-358#endif // DUNE_GRID_COMMON_PARTITIONSET_HH\n+316 const size_t types = typeSizes.size();\n+317 for(size_t i=0; i typeCount( types );\n+320\n+321 // count all elements of codimension codim\n+322 for( ; it != end; ++it )\n+323 {\n+324 // get entity\n+325 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& element = *it ;\n+326 // get reference element\n+327 ReferenceElementType refElem =\n+328 ReferenceElementContainerType :: general( element.type() );\n+329\n+330 // count all sub entities of codimension codim\n+331 const int count = element.subEntities( codim );\n+332 for( int i=0; i< count; ++ i )\n+333 {\n+334 // get geometry type\n+335 const _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be geomType = refElem.type( i, codim );\n+336 // get id of sub entity\n+337 const IdType id = idSet.subId( element, i, codim );\n+338 // insert id into set\n+339 typeCount[ gtIndex( geomType ) ].insert( id );\n+340 }\n+341 }\n+342\n+343 // accumulate numbers\n+344 int overall = 0;\n+345 for(size_t i=0; i\n

    \n
    #include <dune/common/typetraits.hh>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n #include <dune/grid/common/gridview.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::AdaptDataHandleInterface< Grid, Impl >
     Interface class for the Grid's adapt method where the parameter is a AdaptDataHandleInterface. More...
     
    class  Dune::AdaptDataHandle< Grid, Impl >
    \n \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00290_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00308_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,15 +77,15 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n
    defaultgridview.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_COMMON_DEFAULTGRIDVIEW_HH
    \n
    6#define DUNE_GRID_COMMON_DEFAULTGRIDVIEW_HH
    \n
    7
    \n
    8#include <dune/common/typetraits.hh>
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00299.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00332.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -86,18 +86,18 @@\n #include <vector>
    \n #include <set>
    \n #include <utility>
    \n #include <dune/common/exceptions.hh>
    \n #include <dune/common/hybridutilities.hh>
    \n #include <dune/geometry/type.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n-#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n #include <dune/grid/common/capabilities.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n

    \n Classes

    struct  Dune::DefaultLevelGridViewTraits< GridImp >
     
    struct  Dune::DefaultLevelGridViewTraits< GridImp >::Codim< cd >
     
    \n \n \n \n \n

    \n Classes

    class  Dune::SizeCache< GridImp >
     organizes the caching of sizes for one grid and one GeometryType More...
     
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00299_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00833_source.html", "comments": ["Files 86% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: sizecache.hh Source File\n+dune-grid: dgfgeogrid.hh Source File\n \n \n \n \n \n \n \n@@ -70,389 +70,348 @@\n \n \n \n \n \n \n \n
    \n-
    sizecache.hh
    \n+
    dgfgeogrid.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_COMMON_SIZECACHE_HH
    \n-
    6#define DUNE_GRID_COMMON_SIZECACHE_HH
    \n+
    5#ifndef DUNE_DGFGEOGRID_HH
    \n+
    6#define DUNE_DGFGEOGRID_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <vector>
    \n-
    10#include <set>
    \n-
    11#include <utility>
    \n-
    12
    \n-
    13#include <dune/common/exceptions.hh>
    \n-
    14#include <dune/common/hybridutilities.hh>
    \n+
    8#include <dune/common/typetraits.hh>
    \n+
    9
    \n+\n+\n+\n+\n+\n
    15
    \n-
    16#include <dune/geometry/type.hh>
    \n-
    17#include <dune/geometry/referenceelements.hh>
    \n+\n+
    17
    \n
    18
    \n-\n-\n+
    19namespace Dune
    \n+
    20{
    \n
    21
    \n-
    28namespace Dune {
    \n-
    29
    \n-
    31 template <class GridImp>
    \n-
    \n-\n-
    33 {
    \n-\n-
    36 constexpr static int dim = GridImp::dimension;
    \n+
    22 /************************************************************************
    \n+
    23 * Warning:
    \n+
    24 * Reading DGF files directly into a GeometryGrid is a dirty hack for
    \n+
    25 * two reasons:
    \n+
    26 * 1) The host grid and coordinate function are never deleted (dangling
    \n+
    27 * pointers).
    \n+
    28 * 2) The coordinate function has to provide a default constructor
    \n+
    29 ************************************************************************/
    \n+
    30
    \n+
    31 // External Forward Declarations
    \n+
    32 // -----------------------------
    \n+
    33
    \n+
    34 template< class GridImp, class IntersectionImp >
    \n+
    35 class Intersection;
    \n+
    36
    \n
    37
    \n-
    39 constexpr static int nCodim = GridImp::dimension + 1;
    \n-
    40
    \n-
    41 // type of grid
    \n-
    42 typedef GridImp GridType;
    \n-
    43
    \n-
    44 // coordinate type
    \n-
    45 typedef typename GridType :: ctype ctype ;
    \n-
    46
    \n-
    47 // stores all sizes of the levels
    \n-
    48 mutable std::vector< int > levelSizes_[nCodim];
    \n-
    49
    \n-
    50 // stores all sizes of the levels
    \n-
    51 mutable std::vector< std::vector< int > > levelTypeSizes_[nCodim];
    \n+
    38
    \n+
    39 // DGFCoordFunction
    \n+
    40 // ----------------
    \n+
    41
    \n+
    42 template< int dimD, int dimR >
    \n+
    \n+\n+
    44 : public AnalyticalCoordFunction< double, dimD, dimR, DGFCoordFunction< dimD, dimR > >
    \n+
    45 {
    \n+\n+\n+
    48
    \n+
    49 public:
    \n+\n+\n
    52
    \n-
    53 // stores all sizes of leafs
    \n-
    54 mutable int leafSizes_[nCodim];
    \n-
    55
    \n-
    56 // stores all sizes of leafs
    \n-
    57 mutable std::vector< int > leafTypeSizes_[nCodim];
    \n+\n+
    54
    \n+
    \n+
    55 DGFCoordFunction ( const Expression *expression )
    \n+
    56 : expression_( expression )
    \n+
    57 {}
    \n+
    \n
    58
    \n-
    59 // the grid
    \n-
    60 const GridType & grid_;
    \n-
    61
    \n-
    62 // count elements of set by iterating the grid
    \n-
    63 template < int codim, bool gridHasCodim >
    \n-
    64 struct CountLevelEntitiesBase
    \n-
    65 {
    \n-
    66 template < class SzCacheType >
    \n-
    67 static void apply(const SzCacheType & sc, int level, int cd)
    \n-
    68 {
    \n-
    69 if( cd == codim )
    \n-
    70 {
    \n-
    71 sc.template countLevelEntities<All_Partition,codim> (level);
    \n-
    72 }
    \n-
    73 }
    \n-
    74 };
    \n+
    \n+
    59 void evaluate ( const DomainVector &x, RangeVector &y ) const
    \n+
    60 {
    \n+
    61 std::vector< double > vx( dimD );
    \n+
    62 std::vector< double > vy;
    \n+
    63 for( int i = 0; i < dimD; ++i )
    \n+
    64 vx[ i ] = x[ i ];
    \n+
    65 expression_->evaluate( vx, vy );
    \n+
    66 assert( vy.size() == size_t( dimR ) );
    \n+
    67 for( int i = 0; i < dimR; ++i )
    \n+
    68 y[ i ] = vy[ i ];
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    71 private:
    \n+
    72 const Expression *expression_;
    \n+
    73 };
    \n+
    \n+
    74
    \n
    75
    \n-
    76 template < int codim >
    \n-
    77 struct CountLevelEntitiesBase< codim, false >
    \n-
    78 {
    \n-
    79 template < class SzCacheType >
    \n-
    80 static void apply(const SzCacheType & sc, int level, int cd)
    \n-
    81 {
    \n-
    82 if( cd == codim )
    \n-
    83 {
    \n-
    84 sc.template countLevelEntitiesNoCodim<All_Partition,codim> (level);
    \n-
    85 }
    \n-
    86 }
    \n-
    87 };
    \n-
    88
    \n-
    89 template < int codim >
    \n-
    90 struct CountLevelEntities
    \n-
    91 : public CountLevelEntitiesBase< codim, Capabilities :: hasEntity< GridType, codim > :: v >
    \n-
    92 {};
    \n+
    76
    \n+
    77 // DGFCoordFunctionFactory
    \n+
    78 // -----------------------
    \n+
    79
    \n+
    80 template< class HostGrid, class CoordFunction,
    \n+
    81 bool discrete = GeoGrid::isDiscreteCoordFunctionInterface< typename CoordFunction::Interface >::value >
    \n+\n+
    83
    \n+
    84
    \n+
    85 template< class HostGrid, class CoordFunction >
    \n+
    \n+
    86 struct DGFCoordFunctionFactory< HostGrid, CoordFunction, false >
    \n+
    87 {
    \n+
    \n+
    88 static CoordFunction *create ( std::istream &, const HostGrid & )
    \n+
    89 {
    \n+
    90 return new CoordFunction;
    \n+
    91 }
    \n+
    \n+
    92 };
    \n+
    \n
    93
    \n-
    94 // count elements of set by iterating the grid
    \n-
    95 template < int codim, bool gridHasCodim >
    \n-
    96 struct CountLeafEntitiesBase
    \n-
    97 {
    \n-
    98 template <class SzCacheType>
    \n-
    99 static void apply(const SzCacheType & sc, int cd)
    \n-
    100 {
    \n-
    101 if( cd == codim )
    \n-
    102 {
    \n-
    103 sc.template countLeafEntities<All_Partition,codim> ();
    \n-
    104 }
    \n-
    105 }
    \n-
    106 };
    \n-
    107
    \n-
    108 // count elements of set by iterating the grid
    \n-
    109 template < int codim >
    \n-
    110 struct CountLeafEntitiesBase< codim, false >
    \n+
    94
    \n+
    95 template< class HostGrid, class CoordFunction >
    \n+
    \n+
    96 struct DGFCoordFunctionFactory< HostGrid, CoordFunction, true >
    \n+
    97 {
    \n+
    \n+
    98 static CoordFunction *create ( std::istream &, const HostGrid &hostGrid )
    \n+
    99 {
    \n+
    100 return new CoordFunction( hostGrid );
    \n+
    101 }
    \n+
    \n+
    102 };
    \n+
    \n+
    103
    \n+
    104
    \n+
    105 template< class HostGrid, int dimD, int dimR >
    \n+
    \n+
    106 struct DGFCoordFunctionFactory< HostGrid, DGFCoordFunction< dimD, dimR >, false >
    \n+
    107 {
    \n+\n+
    109
    \n+
    \n+
    110 static CoordFunction *create ( std::istream &input, const HostGrid &hostGrid )
    \n
    111 {
    \n-
    112 template <class SzCacheType>
    \n-
    113 static void apply(const SzCacheType & sc, int cd)
    \n-
    114 {
    \n-
    115 if( cd == codim )
    \n-
    116 {
    \n-
    117 sc.template countLeafEntitiesNoCodim<All_Partition,codim> ();
    \n-
    118 }
    \n-
    119 }
    \n-
    120 };
    \n+
    112 dgf::ProjectionBlock projectionBlock( input, dimR );
    \n+
    113 const typename CoordFunction::Expression *expression = projectionBlock.function( "coordfunction" );
    \n+
    114 if( expression == 0 )
    \n+
    115 DUNE_THROW( DGFException, "no coordfunction specified in DGF file." );
    \n+
    116 return new CoordFunction( expression );
    \n+
    117 }
    \n+
    \n+
    118 };
    \n+
    \n+
    119
    \n+
    120
    \n
    121
    \n-
    122 template < int codim >
    \n-
    123 struct CountLeafEntities
    \n-
    124 : public CountLeafEntitiesBase< codim, Capabilities :: hasEntity< GridType, codim > :: v >
    \n-
    125 {};
    \n-
    126
    \n-
    127 int gtIndex( const GeometryType& type ) const
    \n-
    128 {
    \n-
    129 return type.id() >> 1 ;
    \n-
    130 }
    \n-
    131
    \n-
    132 int sizeCodim( const int codim ) const
    \n-
    133 {
    \n-
    134 const int mydim = GridType :: dimension - codim;
    \n-
    135 return ((1 << mydim) + 1) / 2;
    \n-
    136 }
    \n-
    137
    \n-
    138 // private copy constructor
    \n-
    139 SizeCache (const SizeCache & );
    \n-
    140 public:
    \n-
    \n-
    142 SizeCache (const GridType & grid) : grid_( grid )
    \n-
    143 {
    \n-
    144 reset();
    \n-
    145 }
    \n+
    122 // DGFGridFactory for GeometryGrid
    \n+
    123 // -------------------------------
    \n+
    124
    \n+
    125 template< class HostGrid, class CoordFunction, class Allocator >
    \n+
    \n+
    126 struct DGFGridFactory< GeometryGrid< HostGrid, CoordFunction, Allocator > >
    \n+
    127 {
    \n+\n+
    129
    \n+
    130 const static int dimension = Grid::dimension;
    \n+
    131 typedef MPIHelper::MPICommunicator MPICommunicator;
    \n+
    132 typedef typename Grid::template Codim<0>::Entity Element;
    \n+
    133 typedef typename Grid::template Codim<dimension>::Entity Vertex;
    \n+
    134
    \n+\n+
    136
    \n+
    \n+
    137 explicit DGFGridFactory ( std::istream &input,
    \n+
    138 MPICommunicator comm = MPIHelper::getCommunicator() )
    \n+
    139 : dgfHostFactory_( input, comm ),
    \n+
    140 grid_( 0 )
    \n+
    141 {
    \n+
    142 auto hostGrid = std::shared_ptr<HostGrid>(dgfHostFactory_.grid());
    \n+
    143 assert( hostGrid != 0 );
    \n+
    144 auto coordFunction = std::shared_ptr<CoordFunction>(CoordFunctionFactory::create( input, *hostGrid ));
    \n+
    145 grid_ = new Grid( hostGrid, coordFunction );
    \n+
    146 }
    \n
    \n-
    146
    \n+
    147
    \n
    \n-
    148 void reset()
    \n-
    149 {
    \n-
    150 for(int codim=0; codim<nCodim; ++codim)
    \n-
    151 {
    \n-
    152 leafSizes_[ codim ] = -1;
    \n-
    153 leafTypeSizes_[ codim ].resize( sizeCodim( codim ), -1 );
    \n-
    154 }
    \n-
    155
    \n-
    156 const int numMxl = grid_.maxLevel()+1;
    \n-
    157 for(int codim=0; codim<nCodim; ++codim)
    \n-
    158 {
    \n-
    159 std::vector<int> & vec = levelSizes_[codim];
    \n-
    160 vec.resize(numMxl);
    \n-
    161 levelTypeSizes_[codim].resize( numMxl );
    \n-
    162 for(int level = 0; level<numMxl; ++level)
    \n-
    163 {
    \n-
    164 vec[level] = -1;
    \n-
    165 levelTypeSizes_[codim][level].resize( sizeCodim( codim ), -1 );
    \n-
    166 }
    \n-
    167 }
    \n-
    168 }
    \n-
    \n-
    169
    \n-
    170 //********************************************************************
    \n-
    171 // level sizes
    \n-
    172 //********************************************************************
    \n-
    \n-
    174 int size (int level, int codim) const
    \n-
    175 {
    \n-
    176 assert( codim >= 0 );
    \n-
    177 assert( codim < nCodim );
    \n-
    178 assert( level >= 0 );
    \n-
    179 if( level >= (int) levelSizes_[codim].size() ) return 0;
    \n-
    180
    \n-
    181 if( levelSizes_[codim][level] < 0)
    \n-
    182 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLevelEntities< i >::apply( *this, level, codim ); } );
    \n-
    183
    \n-
    184 // CountLevelEntities<ThisType,All_Partition,dim>::count(*this,level,codim);
    \n-
    185
    \n-
    186 assert( levelSizes_[codim][level] >= 0 );
    \n-
    187 return levelSizes_[codim][level];
    \n-
    188 }
    \n-
    \n-
    189
    \n+
    148 explicit DGFGridFactory ( const std::string &filename,
    \n+
    149 MPICommunicator comm = MPIHelper::getCommunicator() )
    \n+
    150 : dgfHostFactory_( filename, comm ),
    \n+
    151 grid_( 0 )
    \n+
    152 {
    \n+
    153 auto hostGrid = std::shared_ptr<HostGrid>(dgfHostFactory_.grid());
    \n+
    154 assert( hostGrid != 0 );
    \n+
    155 std::ifstream input( filename.c_str() );
    \n+
    156 auto coordFunction = std::shared_ptr<CoordFunction>(CoordFunctionFactory::create( input, *hostGrid ));
    \n+
    157 grid_ = new Grid( hostGrid, coordFunction );
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    \n+
    160 Grid *grid () const
    \n+
    161 {
    \n+
    162 return grid_;
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    165 template< class Intersection >
    \n+
    \n+
    166 bool wasInserted ( const Intersection &intersection ) const
    \n+
    167 {
    \n+
    168 return dgfHostFactory_.wasInserted( HostGridAccess< Grid >::hostIntersection( intersection ) );
    \n+
    169 }
    \n+
    \n+
    170
    \n+
    171 template< class Intersection >
    \n+
    \n+
    172 int boundaryId ( const Intersection &intersection ) const
    \n+
    173 {
    \n+
    174 return dgfHostFactory_.boundaryId( HostGridAccess< Grid >::hostIntersection( intersection ) );
    \n+
    175 }
    \n+
    \n+
    176
    \n+
    177 template< int codim >
    \n+
    \n+
    178 int numParameters () const
    \n+
    179 {
    \n+
    180 return dgfHostFactory_.template numParameters< codim >();
    \n+
    181 }
    \n+
    \n+
    182
    \n+
    183 // return true if boundary parameters found
    \n+
    \n+\n+
    185 {
    \n+
    186 return dgfHostFactory_.haveBoundaryParameters();
    \n+
    187 }
    \n+
    \n+
    188
    \n+
    189 template< class GG, class II >
    \n+
    190 const typename DGFBoundaryParameter::type &
    \n
    \n-
    191 int size (int level, GeometryType type) const
    \n+
    191 boundaryParameter ( const Dune::Intersection< GG, II > & intersection ) const
    \n
    192 {
    \n-
    193 int codim = GridType ::dimension - type.dim();
    \n-
    194 if( levelSizes_[codim][level] < 0)
    \n-
    195 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLevelEntities< i >::apply( *this, level, codim ); } );
    \n-
    196
    \n-
    197 assert( levelTypeSizes_[codim][level][gtIndex( type )] >= 0 );
    \n-
    198 return levelTypeSizes_[codim][level][gtIndex( type )];
    \n-
    199 }
    \n-
    \n-
    200
    \n-
    201 //********************************************************************
    \n-
    202 // leaf sizes
    \n-
    203 //********************************************************************
    \n-
    \n-
    205 int size (int codim) const
    \n-
    206 {
    \n-
    207 assert( codim >= 0 );
    \n-
    208 assert( codim < nCodim );
    \n-
    209 if( leafSizes_[codim] < 0 )
    \n-
    210 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLeafEntities< i >::apply( *this, codim ); } );
    \n+
    193 return dgfHostFactory_.boundaryParameter( HostGridAccess< Grid >::hostIntersection( intersection ) );
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    196 template< class Entity >
    \n+
    \n+
    197 std::vector< double > &parameter ( const Entity &entity )
    \n+
    198 {
    \n+
    199 return dgfHostFactory_.parameter( HostGridAccess< Grid >::hostEntity( entity ) );
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    202 private:
    \n+
    203 DGFGridFactory< HostGrid > dgfHostFactory_;
    \n+
    204 Grid *grid_;
    \n+
    205 };
    \n+
    \n+
    206
    \n+
    207
    \n+
    208
    \n+
    209 // DGFGridInfo for GeometryGrid
    \n+
    210 // ----------------------------
    \n
    211
    \n-
    212 assert( leafSizes_[codim] >= 0 );
    \n-
    213 return leafSizes_[codim];
    \n-
    214 };
    \n-
    \n-
    215
    \n-
    \n-
    217 int size ( const GeometryType type ) const
    \n-
    218 {
    \n-
    219 int codim = GridType :: dimension - type.dim();
    \n-
    220 if( leafSizes_[codim] < 0 )
    \n-
    221 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i ){ CountLeafEntities< i >::apply( *this, codim ); } );
    \n-
    222
    \n-
    223 assert( leafTypeSizes_[codim][ gtIndex( type )] >= 0 );
    \n-
    224 return leafTypeSizes_[codim][ gtIndex( type )];
    \n-
    225 }
    \n-
    \n-
    226
    \n-
    227 private:
    \n-
    228 template <PartitionIteratorType pitype, int codim>
    \n-
    229 void countLevelEntities(int level) const
    \n-
    230 {
    \n-
    231 typedef typename GridType :: LevelGridView GridView ;
    \n-
    232 typedef typename GridView :: template Codim< codim > :: template Partition<pitype> :: Iterator Iterator ;
    \n-
    233 GridView gridView = grid_.levelGridView( level );
    \n-
    234 Iterator it = gridView.template begin<codim,pitype> ();
    \n-
    235 Iterator end = gridView.template end<codim,pitype> ();
    \n-
    236 levelSizes_[codim][level] = countElements(it,end, levelTypeSizes_[codim][level]);
    \n-
    237 }
    \n-
    238
    \n-
    239 template <PartitionIteratorType pitype, int codim>
    \n-
    240 void countLeafEntities() const
    \n-
    241 {
    \n-
    242 // count All_Partition entities
    \n-
    243 typedef typename GridType :: LeafGridView GridView ;
    \n-
    244 typedef typename GridView :: template Codim< codim > :: template Partition<pitype> :: Iterator Iterator ;
    \n-
    245 GridView gridView = grid_.leafGridView();
    \n-
    246 Iterator it = gridView.template begin<codim,pitype> ();
    \n-
    247 Iterator end = gridView.template end<codim,pitype> ();
    \n-
    248 leafSizes_[codim] = countElements(it,end, leafTypeSizes_[codim] );
    \n-
    249 }
    \n-
    250
    \n-
    251 // counts entities with given type for given iterator
    \n-
    252 template <class IteratorType>
    \n-
    253 int countElements(IteratorType & it, const IteratorType & end, std::vector<int>& typeSizes) const
    \n-
    254 {
    \n-
    255 int overall = 0;
    \n-
    256 const size_t types = typeSizes.size();
    \n-
    257 for(size_t i=0; i<types; ++i) typeSizes[i] = 0;
    \n-
    258 for( ; it != end; ++it )
    \n-
    259 {
    \n-
    260 const GeometryType type = it->type();
    \n-
    261 ++typeSizes[ gtIndex( type ) ];
    \n-
    262 ++overall;
    \n-
    263 }
    \n-
    264
    \n-
    265#ifndef NDEBUG
    \n-
    266 int sumtypes = 0;
    \n-
    267 for(size_t i=0; i<types; ++i)
    \n-
    268 sumtypes += typeSizes[i];
    \n-
    269
    \n-
    270 assert( overall == sumtypes );
    \n-
    271#endif
    \n-
    272
    \n-
    273 return overall;
    \n-
    274 }
    \n-
    275
    \n-
    276 template <PartitionIteratorType pitype, int codim>
    \n-
    277 void countLevelEntitiesNoCodim(int level) const
    \n-
    278 {
    \n-
    279 typedef typename GridType :: LevelGridView GridView ;
    \n-
    280 typedef typename GridView :: template Codim< 0 > :: template Partition<pitype> :: Iterator Iterator ;
    \n-
    281 GridView gridView = grid_.levelGridView( level );
    \n-
    282 Iterator it = gridView.template begin< 0, pitype> ();
    \n-
    283 Iterator end = gridView.template end< 0, pitype> ();
    \n-
    284 levelSizes_[codim][level] = countElementsNoCodim< codim >(it,end, levelTypeSizes_[codim][level]);
    \n-
    285 }
    \n-
    286
    \n-
    287 template <PartitionIteratorType pitype, int codim>
    \n-
    288 void countLeafEntitiesNoCodim() const
    \n-
    289 {
    \n-
    290 // count All_Partition entities
    \n-
    291 typedef typename GridType :: LeafGridView GridView ;
    \n-
    292 typedef typename GridView :: template Codim< 0 > :: template Partition<pitype> :: Iterator Iterator ;
    \n-
    293 GridView gridView = grid_.leafGridView();
    \n-
    294 Iterator it = gridView.template begin< 0, pitype > ();
    \n-
    295 Iterator end = gridView.template end< 0, pitype > ();
    \n-
    296 leafSizes_[codim] = countElementsNoCodim< codim >(it,end, leafTypeSizes_[codim] );
    \n-
    297 }
    \n-
    298
    \n-
    299 // counts entities with given type for given iterator
    \n-
    300 template < int codim, class IteratorType >
    \n-
    301 int countElementsNoCodim(IteratorType & it, const IteratorType & end, std::vector<int>& typeSizes) const
    \n-
    302 {
    \n-
    303 typedef typename GridType :: LocalIdSet LocalIdSet ;
    \n-
    304 typedef typename LocalIdSet :: IdType IdType ;
    \n-
    305
    \n-
    306 typedef ReferenceElements< ctype, dim > ReferenceElementContainerType;
    \n-
    307 typedef typename ReferenceElementContainerType::ReferenceElement ReferenceElementType;
    \n-
    308
    \n-
    309 typedef std::set< IdType > CodimIdSetType ;
    \n-
    310
    \n-
    311 typedef typename IteratorType :: Entity ElementType ;
    \n-
    312
    \n-
    313 // get id set
    \n-
    314 const LocalIdSet& idSet = grid_.localIdSet();
    \n-
    315
    \n-
    316 const size_t types = typeSizes.size();
    \n-
    317 for(size_t i=0; i<types; ++i) typeSizes[ i ] = 0;
    \n-
    318
    \n-
    319 std::vector< CodimIdSetType > typeCount( types );
    \n-
    320
    \n-
    321 // count all elements of codimension codim
    \n-
    322 for( ; it != end; ++it )
    \n-
    323 {
    \n-
    324 // get entity
    \n-
    325 const ElementType& element = *it ;
    \n-
    326 // get reference element
    \n-
    327 ReferenceElementType refElem =
    \n-
    328 ReferenceElementContainerType :: general( element.type() );
    \n-
    329
    \n-
    330 // count all sub entities of codimension codim
    \n-
    331 const int count = element.subEntities( codim );
    \n-
    332 for( int i=0; i< count; ++ i )
    \n-
    333 {
    \n-
    334 // get geometry type
    \n-
    335 const GeometryType geomType = refElem.type( i, codim );
    \n-
    336 // get id of sub entity
    \n-
    337 const IdType id = idSet.subId( element, i, codim );
    \n-
    338 // insert id into set
    \n-
    339 typeCount[ gtIndex( geomType ) ].insert( id );
    \n-
    340 }
    \n-
    341 }
    \n-
    342
    \n-
    343 // accumulate numbers
    \n-
    344 int overall = 0;
    \n-
    345 for(size_t i=0; i<types; ++i)
    \n-
    346 {
    \n-
    347 typeSizes[ i ] = typeCount[ i ].size();
    \n-
    348 overall += typeSizes[ i ];
    \n-
    349 }
    \n-
    350
    \n-
    351 return overall;
    \n-
    352 }
    \n-
    353 };
    \n-
    \n-
    354
    \n-
    355} // end namespace Dune
    \n-
    356#endif
    \n-\n+
    212 template< class HostGrid, class CoordFunction, class Allocator >
    \n+
    \n+
    213 struct DGFGridInfo< GeometryGrid< HostGrid, CoordFunction, Allocator > >
    \n+
    214 {
    \n+
    \n+
    215 static int refineStepsForHalf ()
    \n+
    216 {
    \n+\n+
    218 }
    \n+
    \n+
    219
    \n+
    \n+
    220 static double refineWeight ()
    \n+
    221 {
    \n+
    222 return -1.0;
    \n+
    223 }
    \n+
    \n+
    224 };
    \n+
    \n+
    225
    \n+
    226}
    \n+
    227
    \n+
    228#endif // #ifndef DUNE_DGFGEOGRID_HH
    \n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    U_CHAR ElementType
    Definition misc.hh:63
    \n-
    GeometryType
    Type representing VTK's entity geometry types.
    Definition common.hh:132
    \n-
    Grid view abstract base class.
    Definition common/gridview.hh:66
    \n-
    organizes the caching of sizes for one grid and one GeometryType
    Definition sizecache.hh:33
    \n-
    int size(int level, GeometryType type) const
    Return number of entities per level and geometry type in this process.
    Definition sizecache.hh:191
    \n-
    int size(int level, int codim) const
    Return number of grid entities of a given codim on a given level in this process.
    Definition sizecache.hh:174
    \n-
    int size(int codim) const
    Return number of leaf entities of a given codim in this process.
    Definition sizecache.hh:205
    \n-
    SizeCache(const GridType &grid)
    constructor taking grid reference
    Definition sizecache.hh:142
    \n-
    int size(const GeometryType type) const
    Return number of leaf entities per geometry type in this process.
    Definition sizecache.hh:217
    \n-
    void reset()
    reset all cached sizes
    Definition sizecache.hh:148
    \n-
    A set of traits classes to store static information about grid implementation.
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    G Grid
    Definition dgfgridfactory.hh:39
    \n+
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n+
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    static constexpr int dimension
    The dimension of the grid.
    Definition common/grid.hh:387
    \n+
    Derive an implementation of an analytical coordinate function from this class.
    Definition coordfunction.hh:134
    \n+
    Base::DomainVector DomainVector
    Definition coordfunction.hh:139
    \n+
    Base::RangeVector RangeVector
    Definition coordfunction.hh:140
    \n+
    grid wrapper replacing the geometries
    Definition geometrygrid/grid.hh:86
    \n+
    traits structure containing types for a codimension
    Definition geometrygrid/grid.hh:611
    \n+
    provides access to host grid objects from GeometryGrid
    Definition identitygrid.hh:37
    \n+
    Definition io/file/dgfparser/blocks/projection.hh:24
    \n+
    ExpressionPointer function(const std::string &name) const
    Definition io/file/dgfparser/blocks/projection.hh:100
    \n+
    Definition io/file/dgfparser/blocks/projection.hh:160
    \n+
    virtual void evaluate(const Vector &argument, Vector &result) const =0
    \n+
    exception class for IO errors in the DGF parser
    Definition dgfexception.hh:16
    \n+
    Definition dgfgeogrid.hh:45
    \n+
    Base::DomainVector DomainVector
    Definition dgfgeogrid.hh:50
    \n+
    void evaluate(const DomainVector &x, RangeVector &y) const
    Definition dgfgeogrid.hh:59
    \n+
    dgf::ProjectionBlock::Expression Expression
    Definition dgfgeogrid.hh:53
    \n+
    DGFCoordFunction(const Expression *expression)
    Definition dgfgeogrid.hh:55
    \n+
    Base::RangeVector RangeVector
    Definition dgfgeogrid.hh:51
    \n+
    Definition dgfgeogrid.hh:82
    \n+
    static CoordFunction * create(std::istream &, const HostGrid &)
    Definition dgfgeogrid.hh:88
    \n+
    static CoordFunction * create(std::istream &, const HostGrid &hostGrid)
    Definition dgfgeogrid.hh:98
    \n+
    static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
    Definition dgfgeogrid.hh:110
    \n+
    DGFCoordFunction< dimD, dimR > CoordFunction
    Definition dgfgeogrid.hh:108
    \n+
    Grid::template Codim< dimension >::Entity Vertex
    Definition dgfgeogrid.hh:133
    \n+
    int boundaryId(const Intersection &intersection) const
    Definition dgfgeogrid.hh:172
    \n+
    MPIHelper::MPICommunicator MPICommunicator
    Definition dgfgeogrid.hh:131
    \n+
    const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
    Definition dgfgeogrid.hh:191
    \n+
    DGFGridFactory(std::istream &input, MPICommunicator comm=MPIHelper::getCommunicator())
    Definition dgfgeogrid.hh:137
    \n+
    Grid::template Codim< 0 >::Entity Element
    Definition dgfgeogrid.hh:132
    \n+\n+
    DGFCoordFunctionFactory< HostGrid, CoordFunction > CoordFunctionFactory
    Definition dgfgeogrid.hh:135
    \n+
    GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
    Definition dgfgeogrid.hh:128
    \n+\n+
    std::vector< double > & parameter(const Entity &entity)
    Definition dgfgeogrid.hh:197
    \n+
    DGFGridFactory(const std::string &filename, MPICommunicator comm=MPIHelper::getCommunicator())
    Definition dgfgeogrid.hh:148
    \n+
    bool wasInserted(const Intersection &intersection) const
    Definition dgfgeogrid.hh:166
    \n+\n+\n+\n+
    Some simple static information for a given GridType.
    Definition io/file/dgfparser/dgfparser.hh:56
    \n+
    static int refineStepsForHalf()
    number of globalRefine steps needed to refuce h by 0.5
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \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,414 +1,426 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-sizecache.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+dgfgeogrid.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_COMMON_SIZECACHE_HH\n-6#define DUNE_GRID_COMMON_SIZECACHE_HH\n+5#ifndef DUNE_DGFGEOGRID_HH\n+6#define DUNE_DGFGEOGRID_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14#include \n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bp_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 15\n-16#include \n-17#include \n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+17\n 18\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+19namespace _\bD_\bu_\bn_\be\n+20{\n 21\n-28namespace _\bD_\bu_\bn_\be {\n-29\n-31 template \n-_\b3_\b2 class _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be\n-33 {\n-34 typedef _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b<_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bT_\bh_\bi_\bs_\bT_\by_\bp_\be;\n-36 constexpr static int dim = GridImp::dimension;\n+22 /************************************************************************\n+23 * Warning:\n+24 * Reading DGF files directly into a GeometryGrid is a dirty hack for\n+25 * two reasons:\n+26 * 1) The host grid and coordinate function are never deleted (dangling\n+27 * pointers).\n+28 * 2) The coordinate function has to provide a default constructor\n+29 ************************************************************************/\n+30\n+31 // External Forward Declarations\n+32 // -----------------------------\n+33\n+34 template< class GridImp, class IntersectionImp >\n+35 class Intersection;\n+36\n 37\n-39 constexpr static int nCodim = GridImp::dimension + 1;\n-40\n-41 // type of grid\n-42 typedef GridImp GridType;\n-43\n-44 // coordinate type\n-45 typedef typename GridType :: ctype ctype ;\n-46\n-47 // stores all sizes of the levels\n-48 mutable std::vector< int > levelSizes_[nCodim];\n-49\n-50 // stores all sizes of the levels\n-51 mutable std::vector< std::vector< int > > levelTypeSizes_[nCodim];\n+38\n+39 // DGFCoordFunction\n+40 // ----------------\n+41\n+42 template< int dimD, int dimR >\n+_\b4_\b3 class _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+44 : public _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< double, dimD, dimR, DGFCoordFunction<\n+dimD, dimR > >\n+45 {\n+46 typedef _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b> _\bT_\bh_\bi_\bs;\n+47 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bo_\bu_\bb_\bl_\be_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bT_\bh_\bi_\bs_\b _\b> _\bB_\ba_\bs_\be;\n+48\n+49 public:\n+_\b5_\b0 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+_\b5_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n 52\n-53 // stores all sizes of leafs\n-54 mutable int leafSizes_[nCodim];\n-55\n-56 // stores all sizes of leafs\n-57 mutable std::vector< int > leafTypeSizes_[nCodim];\n+_\b5_\b3 typedef _\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn;\n+54\n+_\b5_\b5 _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn *expression )\n+56 : expression_( expression )\n+57 {}\n 58\n-59 // the grid\n-60 const GridType & grid_;\n-61\n-62 // count elements of set by iterating the grid\n-63 template < int codim, bool gridHasCodim >\n-64 struct CountLevelEntitiesBase\n-65 {\n-66 template < class SzCacheType >\n-67 static void apply(const SzCacheType & sc, int level, int cd)\n-68 {\n-69 if( cd == codim )\n-70 {\n-71 sc.template countLevelEntities (level);\n-72 }\n-73 }\n-74 };\n+_\b5_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n+60 {\n+61 std::vector< double > vx( dimD );\n+62 std::vector< double > vy;\n+63 for( int i = 0; i < dimD; ++i )\n+64 vx[ i ] = x[ i ];\n+65 expression_->_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( vx, vy );\n+66 assert( vy.size() == size_t( dimR ) );\n+67 for( int i = 0; i < dimR; ++i )\n+68 y[ i ] = vy[ i ];\n+69 }\n+70\n+71 private:\n+72 const _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn *expression_;\n+73 };\n+74\n 75\n-76 template < int codim >\n-77 struct CountLevelEntitiesBase< codim, false >\n-78 {\n-79 template < class SzCacheType >\n-80 static void apply(const SzCacheType & sc, int level, int cd)\n-81 {\n-82 if( cd == codim )\n-83 {\n-84 sc.template countLevelEntitiesNoCodim (level);\n-85 }\n-86 }\n-87 };\n-88\n-89 template < int codim >\n-90 struct CountLevelEntities\n-91 : public CountLevelEntitiesBase< codim, Capabilities :: hasEntity< GridType,\n-codim > :: v >\n-92 {};\n+76\n+77 // DGFCoordFunctionFactory\n+78 // -----------------------\n+79\n+80 template< class HostGrid, class CoordFunction,\n+81 bool discrete = GeoGrid::isDiscreteCoordFunctionInterface< typename\n+CoordFunction::Interface >::value >\n+_\b8_\b2 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+83\n+84\n+85 template< class HostGrid, class CoordFunction >\n+_\b8_\b6 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by< HostGrid, CoordFunction, false >\n+87 {\n+_\b8_\b8 static CoordFunction *_\bc_\br_\be_\ba_\bt_\be ( std::istream &, const HostGrid & )\n+89 {\n+90 return new CoordFunction;\n+91 }\n+92 };\n 93\n-94 // count elements of set by iterating the grid\n-95 template < int codim, bool gridHasCodim >\n-96 struct CountLeafEntitiesBase\n+94\n+95 template< class HostGrid, class CoordFunction >\n+_\b9_\b6 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by< HostGrid, CoordFunction, true >\n 97 {\n-98 template \n-99 static void apply(const SzCacheType & sc, int cd)\n-100 {\n-101 if( cd == codim )\n-102 {\n-103 sc.template countLeafEntities ();\n-104 }\n-105 }\n-106 };\n-107\n-108 // count elements of set by iterating the grid\n-109 template < int codim >\n-110 struct CountLeafEntitiesBase< codim, false >\n+_\b9_\b8 static CoordFunction *_\bc_\br_\be_\ba_\bt_\be ( std::istream &, const HostGrid &hostGrid )\n+99 {\n+100 return new CoordFunction( hostGrid );\n+101 }\n+102 };\n+103\n+104\n+105 template< class HostGrid, int dimD, int dimR >\n+_\b1_\b0_\b6 struct _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by< HostGrid, _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< dimD, dimR >,\n+false >\n+107 {\n+_\b1_\b0_\b8 typedef _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b> _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn;\n+109\n+_\b1_\b1_\b0 static _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn *_\bc_\br_\be_\ba_\bt_\be ( std::istream &input, const HostGrid\n+&hostGrid )\n 111 {\n-112 template \n-113 static void apply(const SzCacheType & sc, int cd)\n-114 {\n-115 if( cd == codim )\n-116 {\n-117 sc.template countLeafEntitiesNoCodim ();\n-118 }\n-119 }\n-120 };\n+112 _\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk projectionBlock( input, dimR );\n+113 const typename _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn *expression =\n+projectionBlock._\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn( \"coordfunction\" );\n+114 if( expression == 0 )\n+115 DUNE_THROW( _\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn, \"no coordfunction specified in DGF file.\" );\n+116 return new _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn( expression );\n+117 }\n+118 };\n+119\n+120\n 121\n-122 template < int codim >\n-123 struct CountLeafEntities\n-124 : public CountLeafEntitiesBase< codim, Capabilities :: hasEntity< GridType,\n-codim > :: v >\n-125 {};\n-126\n-127 int gtIndex( const GeometryType& type ) const\n-128 {\n-129 return type.id() >> 1 ;\n-130 }\n-131\n-132 int sizeCodim( const int codim ) const\n-133 {\n-134 const int mydim = GridType :: dimension - codim;\n-135 return ((1 << mydim) + 1) / 2;\n-136 }\n-137\n-138 // private copy constructor\n-139 _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be (const _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be & );\n-140 public:\n-_\b1_\b4_\b2 _\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be (const GridType & grid) : grid_( grid )\n-143 {\n-144 _\br_\be_\bs_\be_\bt();\n-145 }\n-146\n-_\b1_\b4_\b8 void _\br_\be_\bs_\be_\bt()\n-149 {\n-150 for(int codim=0; codim & vec = levelSizes_[codim];\n-160 vec.resize(numMxl);\n-161 levelTypeSizes_[codim].resize( numMxl );\n-162 for(int level = 0; level= 0 );\n-177 assert( codim < nCodim );\n-178 assert( level >= 0 );\n-179 if( level >= (int) levelSizes_[codim]._\bs_\bi_\bz_\be() ) return 0;\n-180\n-181 if( levelSizes_[codim][level] < 0)\n-182 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n-{ CountLevelEntities< i >::apply( *this, level, codim ); } );\n-183\n-184 // CountLevelEntities::count\n-(*this,level,codim);\n-185\n-186 assert( levelSizes_[codim][level] >= 0 );\n-187 return levelSizes_[codim][level];\n-188 }\n-189\n-_\b1_\b9_\b1 int _\bs_\bi_\bz_\be (int level, GeometryType type) const\n+122 // DGFGridFactory for GeometryGrid\n+123 // -------------------------------\n+124\n+125 template< class HostGrid, class CoordFunction, class Allocator >\n+_\b1_\b2_\b6 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd< HostGrid, CoordFunction, Allocator > >\n+127 {\n+_\b1_\b2_\b8 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b> _\bG_\br_\bi_\bd;\n+129\n+_\b1_\b3_\b0 const static int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+_\b1_\b3_\b1 typedef MPIHelper::MPICommunicator _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br;\n+_\b1_\b3_\b2 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim<0>::Entity _\bE_\bl_\be_\bm_\be_\bn_\bt;\n+_\b1_\b3_\b3 typedef typename _\bG_\br_\bi_\bd_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim::Entity _\bV_\be_\br_\bt_\be_\bx;\n+134\n+_\b1_\b3_\b5 typedef _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>\n+_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+136\n+_\b1_\b3_\b7 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( std::istream &input,\n+138 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br comm = MPIHelper::getCommunicator() )\n+139 : dgfHostFactory_( input, comm ),\n+140 grid_( 0 )\n+141 {\n+142 auto hostGrid = std::shared_ptr(dgfHostFactory_.grid());\n+143 assert( hostGrid != 0 );\n+144 auto coordFunction = std::shared_ptr(CoordFunctionFactory::\n+create( input, *hostGrid ));\n+145 grid_ = new _\bG_\br_\bi_\bd( hostGrid, coordFunction );\n+146 }\n+147\n+_\b1_\b4_\b8 explicit _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by ( const std::string &filename,\n+149 _\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br comm = MPIHelper::getCommunicator() )\n+150 : dgfHostFactory_( filename, comm ),\n+151 grid_( 0 )\n+152 {\n+153 auto hostGrid = std::shared_ptr(dgfHostFactory_.grid());\n+154 assert( hostGrid != 0 );\n+155 std::ifstream input( filename.c_str() );\n+156 auto coordFunction = std::shared_ptr(CoordFunctionFactory::\n+create( input, *hostGrid ));\n+157 grid_ = new _\bG_\br_\bi_\bd( hostGrid, coordFunction );\n+158 }\n+159\n+_\b1_\b6_\b0 _\bG_\br_\bi_\bd *_\bg_\br_\bi_\bd () const\n+161 {\n+162 return grid_;\n+163 }\n+164\n+165 template< class Intersection >\n+_\b1_\b6_\b6 bool _\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection ) const\n+167 {\n+168 return dgfHostFactory_.wasInserted( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n+_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn( intersection ) );\n+169 }\n+170\n+171 template< class Intersection >\n+_\b1_\b7_\b2 int _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn &intersection ) const\n+173 {\n+174 return dgfHostFactory_.boundaryId( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+( intersection ) );\n+175 }\n+176\n+177 template< int codim >\n+_\b1_\b7_\b8 int _\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+179 {\n+180 return dgfHostFactory_.template numParameters< codim >();\n+181 }\n+182\n+183 // return true if boundary parameters found\n+_\b1_\b8_\b4 bool _\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs () const\n+185 {\n+186 return dgfHostFactory_.haveBoundaryParameters();\n+187 }\n+188\n+189 template< class GG, class II >\n+190 const typename _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be &\n+_\b1_\b9_\b1 _\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bG_\b,_\b _\bI_\bI_\b _\b> & intersection )\n+const\n 192 {\n-193 int codim = GridType ::dimension - type.dim();\n-194 if( levelSizes_[codim][level] < 0)\n-195 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n-{ CountLevelEntities< i >::apply( *this, level, codim ); } );\n-196\n-197 assert( levelTypeSizes_[codim][level][gtIndex( type )] >= 0 );\n-198 return levelTypeSizes_[codim][level][gtIndex( type )];\n-199 }\n-200\n-201 //********************************************************************\n-202 // leaf sizes\n-203 //********************************************************************\n-_\b2_\b0_\b5 int _\bs_\bi_\bz_\be (int codim) const\n-206 {\n-207 assert( codim >= 0 );\n-208 assert( codim < nCodim );\n-209 if( leafSizes_[codim] < 0 )\n-210 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n-{ CountLeafEntities< i >::apply( *this, codim ); } );\n+193 return dgfHostFactory_.boundaryParameter( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:\n+_\bh_\bo_\bs_\bt_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn( intersection ) );\n+194 }\n+195\n+196 template< class Entity >\n+_\b1_\b9_\b7 std::vector< double > &_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ( const _\bE_\bn_\bt_\bi_\bt_\by &entity )\n+198 {\n+199 return dgfHostFactory_.parameter( _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\bh_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+( entity ) );\n+200 }\n+201\n+202 private:\n+203 _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b> dgfHostFactory_;\n+204 _\bG_\br_\bi_\bd *grid_;\n+205 };\n+206\n+207\n+208\n+209 // DGFGridInfo for GeometryGrid\n+210 // ----------------------------\n 211\n-212 assert( leafSizes_[codim] >= 0 );\n-213 return leafSizes_[codim];\n-214 };\n-215\n-_\b2_\b1_\b7 int _\bs_\bi_\bz_\be ( const GeometryType type ) const\n-218 {\n-219 int codim = GridType :: dimension - type.dim();\n-220 if( leafSizes_[codim] < 0 )\n-221 Hybrid::forEach( std::make_index_sequence< dim+1 >{}, [ & ]( auto i )\n-{ CountLeafEntities< i >::apply( *this, codim ); } );\n-222\n-223 assert( leafTypeSizes_[codim][ gtIndex( type )] >= 0 );\n-224 return leafTypeSizes_[codim][ gtIndex( type )];\n-225 }\n-226\n-227 private:\n-228 template \n-229 void countLevelEntities(int level) const\n-230 {\n-231 typedef typename GridType :: LevelGridView _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw ;\n-232 typedef typename GridView :: template Codim< codim > :: template\n-Partition :: Iterator Iterator ;\n-233 _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw gridView = grid_.levelGridView( level );\n-234 Iterator it = gridView.template begin ();\n-235 Iterator end = gridView.template end ();\n-236 levelSizes_[codim][level] = countElements(it,end, levelTypeSizes_[codim]\n-[level]);\n-237 }\n-238\n-239 template \n-240 void countLeafEntities() const\n-241 {\n-242 // count All_Partition entities\n-243 typedef typename GridType :: LeafGridView GridView ;\n-244 typedef typename GridView :: template Codim< codim > :: template\n-Partition :: Iterator Iterator ;\n-245 GridView gridView = grid_.leafGridView();\n-246 Iterator it = gridView.template begin ();\n-247 Iterator end = gridView.template end ();\n-248 leafSizes_[codim] = countElements(it,end, leafTypeSizes_[codim] );\n-249 }\n-250\n-251 // counts entities with given type for given iterator\n-252 template \n-253 int countElements(IteratorType & it, const IteratorType & end, std::\n-vector& typeSizes) const\n-254 {\n-255 int overall = 0;\n-256 const size_t types = typeSizes.size();\n-257 for(size_t i=0; itype();\n-261 ++typeSizes[ gtIndex( type ) ];\n-262 ++overall;\n-263 }\n-264\n-265#ifndef NDEBUG\n-266 int sumtypes = 0;\n-267 for(size_t i=0; i\n-277 void countLevelEntitiesNoCodim(int level) const\n-278 {\n-279 typedef typename GridType :: LevelGridView GridView ;\n-280 typedef typename GridView :: template Codim< 0 > :: template\n-Partition :: Iterator Iterator ;\n-281 GridView gridView = grid_.levelGridView( level );\n-282 Iterator it = gridView.template begin< 0, pitype> ();\n-283 Iterator end = gridView.template end< 0, pitype> ();\n-284 levelSizes_[codim][level] = countElementsNoCodim< codim >(it,end,\n-levelTypeSizes_[codim][level]);\n-285 }\n-286\n-287 template \n-288 void countLeafEntitiesNoCodim() const\n-289 {\n-290 // count All_Partition entities\n-291 typedef typename GridType :: LeafGridView GridView ;\n-292 typedef typename GridView :: template Codim< 0 > :: template\n-Partition :: Iterator Iterator ;\n-293 GridView gridView = grid_.leafGridView();\n-294 Iterator it = gridView.template begin< 0, pitype > ();\n-295 Iterator end = gridView.template end< 0, pitype > ();\n-296 leafSizes_[codim] = countElementsNoCodim< codim >(it,end, leafTypeSizes_\n-[codim] );\n-297 }\n-298\n-299 // counts entities with given type for given iterator\n-300 template < int codim, class IteratorType >\n-301 int countElementsNoCodim(IteratorType & it, const IteratorType & end, std::\n-vector& typeSizes) const\n-302 {\n-303 typedef typename GridType :: LocalIdSet LocalIdSet ;\n-304 typedef typename LocalIdSet :: IdType IdType ;\n-305\n-306 typedef ReferenceElements< ctype, dim > ReferenceElementContainerType;\n-307 typedef typename ReferenceElementContainerType::ReferenceElement\n-ReferenceElementType;\n-308\n-309 typedef std::set< IdType > CodimIdSetType ;\n-310\n-311 typedef typename IteratorType :: Entity _\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be ;\n-312\n-313 // get id set\n-314 const LocalIdSet& idSet = grid_.localIdSet();\n-315\n-316 const size_t types = typeSizes.size();\n-317 for(size_t i=0; i typeCount( types );\n-320\n-321 // count all elements of codimension codim\n-322 for( ; it != end; ++it )\n-323 {\n-324 // get entity\n-325 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& element = *it ;\n-326 // get reference element\n-327 ReferenceElementType refElem =\n-328 ReferenceElementContainerType :: general( element.type() );\n-329\n-330 // count all sub entities of codimension codim\n-331 const int count = element.subEntities( codim );\n-332 for( int i=0; i< count; ++ i )\n-333 {\n-334 // get geometry type\n-335 const _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be geomType = refElem.type( i, codim );\n-336 // get id of sub entity\n-337 const IdType id = idSet.subId( element, i, codim );\n-338 // insert id into set\n-339 typeCount[ gtIndex( geomType ) ].insert( id );\n-340 }\n-341 }\n-342\n-343 // accumulate numbers\n-344 int overall = 0;\n-345 for(size_t i=0; i\n+_\b2_\b1_\b3 struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo< _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd< HostGrid, CoordFunction, Allocator > >\n+214 {\n+_\b2_\b1_\b5 static int _\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf ()\n+216 {\n+217 return _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b _\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf();\n+218 }\n+219\n+_\b2_\b2_\b0 static double _\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt ()\n+221 {\n+222 return -1.0;\n+223 }\n+224 };\n+225\n+226}\n+227\n+228#endif // #ifndef DUNE_DGFGEOGRID_HH\n+_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b._\bh_\bh\n+_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bh_\bo_\bs_\bt_\bg_\br_\bi_\bd_\ba_\bc_\bc_\be_\bs_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-U_CHAR ElementType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType\n-Type representing VTK's entity geometry types.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-Grid view abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be\n-organizes the caching of sizes for one grid and one GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int level, GeometryType type) const\n-Return number of entities per level and geometry type in this process.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int level, int codim) const\n-Return number of grid entities of a given codim on a given level in this\n-process.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bs_\bi_\bz_\be\n-int size(int codim) const\n-Return number of leaf entities of a given codim in this process.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be\n-SizeCache(const GridType &grid)\n-constructor taking grid reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bs_\bi_\bz_\be\n-int size(const GeometryType type) const\n-Return number of leaf entities per geometry type in this process.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bz_\be_\bC_\ba_\bc_\bh_\be_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-reset all cached sizes\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn sizecache.hh:148\n-_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n-A set of traits classes to store static information about grid implementation.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\br_\bi_\bd\n+G Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\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 dgfgridfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn\n+Intersection of a mesh entity of codimension 0 (\"element\") with a \"neighboring\"\n+element or with the d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/intersection.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n+Grid abstract base class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+The dimension of the grid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:387\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Derive an implementation of an analytical coordinate function from this class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 coordfunction.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Base::RangeVector RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+grid wrapper replacing the geometries\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+traits structure containing types for a codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/grid.hh:611\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\bA_\bc_\bc_\be_\bs_\bs\n+provides access to host grid objects from GeometryGrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn identitygrid.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/blocks/projection.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+ExpressionPointer function(const std::string &name) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/blocks/projection.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/blocks/projection.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bP_\br_\bo_\bj_\be_\bc_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+virtual void evaluate(const Vector &argument, Vector &result) const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn\n+exception class for IO errors in the DGF parser\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfexception.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 dgfgeogrid.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, RangeVector &y) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n+dgf::ProjectionBlock::Expression Expression\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+DGFCoordFunction(const Expression *expression)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Base::RangeVector RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static CoordFunction * create(std::istream &, const HostGrid &)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static CoordFunction * create(std::istream &, const HostGrid &hostGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b,_\b _\bf_\ba_\bl_\bs_\be\n+_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bD_\bG_\bF_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b,_\b _\bf_\ba_\bl_\bs_\be\n+_\b>_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+DGFCoordFunction< dimD, dimR > CoordFunction\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bV_\be_\br_\bt_\be_\bx\n+Grid::template Codim< dimension >::Entity Vertex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n+int boundaryId(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:172\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bM_\bP_\bI_\bC_\bo_\bm_\bm_\bu_\bn_\bi_\bc_\ba_\bt_\bo_\br\n+MPIHelper::MPICommunicator MPICommunicator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection<\n+GG, II > &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(std::istream &input, MPICommunicator comm=MPIHelper::\n+getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Grid::template Codim< 0 >::Entity Element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bg_\br_\bi_\bd\n+Grid * grid() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFCoordFunctionFactory< HostGrid, CoordFunction > CoordFunctionFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bG_\br_\bi_\bd\n+GeometryGrid< HostGrid, CoordFunction, Allocator > Grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bn_\bu_\bm_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+int numParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:178\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+std::vector< double > & parameter(const Entity &entity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+DGFGridFactory(const std::string &filename, MPICommunicator comm=MPIHelper::\n+getCommunicator())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bw_\ba_\bs_\bI_\bn_\bs_\be_\br_\bt_\be_\bd\n+bool wasInserted(const Intersection &intersection) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\bh_\ba_\bv_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBoundaryParameters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:184\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\br_\be_\bf_\bi_\bn_\be_\bW_\be_\bi_\bg_\bh_\bt\n+static double refineWeight()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\b _\bA_\bl_\bl_\bo_\bc_\ba_\bt_\bo_\br_\b _\b>_\b _\b>_\b:_\b:\n+_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n+static int refineStepsForHalf()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgeogrid.hh:215\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo\n+Some simple static information for a given GridType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bS_\bt_\be_\bp_\bs_\bF_\bo_\br_\bH_\ba_\bl_\bf\n+static int refineStepsForHalf()\n+number of globalRefine steps needed to refuce h by 0.5\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bp_\br_\bo_\bj_\be_\bc_\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-grid-doc/doxygen/a00335.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00245.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -80,15 +80,15 @@\n \n
    \n \n

    Describes the parallel communication interface class for MessageBuffers and DataHandles. \n More...

    \n
    #include <dune/common/bartonnackmanifcheck.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"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00335_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00245_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,15 +77,15 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n
    datahandleif.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_COMMON_DATAHANDLEIF_HH
    \n
    6#define DUNE_GRID_COMMON_DATAHANDLEIF_HH
    \n
    7
    \n
    14#include <dune/common/bartonnackmanifcheck.hh>
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00362.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00350.html", "comments": ["Files 96% similar despite different names"], "unified_diff": "@@ -79,18 +79,18 @@\n
    scsgmapper.hh File Reference
    \n
    \n
    \n \n

    Mapper classes are used to attach data to a grid. \n More...

    \n
    #include <iostream>
    \n-#include "mapper.hh"
    \n+#include "mapper.hh"
    \n #include <dune/grid/common/grid.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::MessageBufferIF< MessageBufferImp >
     Communication message buffer interface. This class describes the interface for reading and writing data to the communication message buffer. As message buffers might be deeply implemented in various packages the message buffers implementations cannot be derived from this interface class. Therefore we just apply the engine concept to wrap the message buffer call and make sure that the interface is fulfilled. More...
     
    class  Dune::CommDataHandleIF< DataHandleImp, DataTypeImp >
    \n \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00362_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00350_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,23 +77,23 @@\n
  • dune
  • grid
  • common
  • \n \n \n
    \n
    scsgmapper.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GRID_COMMON_SCSGMAPPER_HH
    \n
    6#define DUNE_GRID_COMMON_SCSGMAPPER_HH
    \n
    7
    \n
    8#include <iostream>
    \n-
    9#include "mapper.hh"
    \n+
    9#include "mapper.hh"
    \n
    10
    \n \n
    12
    \n
    19namespace Dune
    \n
    20{
    \n
    37 template <typename GV, int c>
    \n
    \n@@ -243,15 +243,15 @@\n
    248 const G* gridPtr_;
    \n
    249 int level_;
    \n
    250 };
    \n
    \n
    251
    \n
    253}
    \n
    254#endif
    \n-
    Provides classes with basic mappers which are used to attach data to a grid.
    \n+
    Provides classes with basic mappers which are used to attach data to a grid.
    \n
    Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
    leaf grid view for the given grid
    Definition common/grid.hh:819
    \n
    Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
    level grid view for the given grid and level.
    Definition common/grid.hh:802
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n
    Mapper interface.
    Definition mapper.hh:110
    \n
    Implementation class for a single codim and single geometry type mapper.
    Definition scsgmapper.hh:40
    \n
    bool contains(const EntityType &e, Index &result) const
    Returns true if the entity is contained in the index set.
    Definition scsgmapper.hh:112
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00566.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00626.html", "comments": ["Files 93% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cornerstorage.hh File Reference\n+dune-grid: coordcache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,45 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    cornerstorage.hh File Reference
    \n+
    coordcache.hh File Reference
    \n
    \n

    \n Classes

    class  Dune::SingleCodimSingleGeomTypeMapper< GV, c >
     Implementation class for a single codim and single geometry type mapper. More...
     
    class  Dune::LeafSingleCodimSingleGeomTypeMapper< G, c >
    \n \n-\n+\n \n-\n+\n \n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::GeoGrid::CoordVector< mydim, Grid, false >
    class  Dune::Alberta::CoordCache< dim >
     
    class  Dune::GeoGrid::CoordVector< mydim, Grid, true >
    class  Dune::Alberta::CoordCache< dim >::LocalCaching
     
    class  Dune::GeoGrid::IntersectionCoordVector< Grid >
     
    class  Dune::GeoGrid::CornerStorage< mydim, cdim, Grid >
    struct  Dune::Alberta::CoordCache< dim >::Interpolation
     
    \n \n \n \n \n-\n-\n+\n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
    namespace  Dune::Alberta
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,28 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n+ * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cornerstorage.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh>\n+coordcache.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n-\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00566_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00584_source.html", "comments": ["Files 94% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cornerstorage.hh Source File\n+dune-grid: cachedcoordfunction.hh Source File\n \n \n \n \n \n \n \n@@ -74,277 +74,270 @@\n \n \n
    \n
    \n-
    cornerstorage.hh
    \n+
    cachedcoordfunction.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_CORNERSTORAGE_HH
    \n-
    6#define DUNE_GEOGRID_CORNERSTORAGE_HH
    \n+
    5#ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH
    \n+
    6#define DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+
    8#include <cassert>
    \n+
    9#include <memory>
    \n+
    10
    \n+
    11#include <dune/common/typetraits.hh>
    \n+
    12
    \n+\n
    14
    \n-
    15 namespace GeoGrid
    \n-
    16 {
    \n-
    17
    \n-
    18 // CoordVector
    \n-
    19 // -----------
    \n-
    20
    \n-
    21 template< int mydim, class Grid, bool fake >
    \n-\n-
    23
    \n+\n+\n+\n+
    18
    \n+
    19namespace Dune
    \n+
    20{
    \n+
    21
    \n+
    22 // Internal Forward Declarations
    \n+
    23 // -----------------------------
    \n
    24
    \n-
    25 template< int mydim, class Grid >
    \n-
    \n-
    26 class CoordVector< mydim, Grid, false >
    \n-
    27 {
    \n-
    28 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n+
    25 template< class HostGrid, class CoordFunction >
    \n+
    26 class CachedCoordFunction;
    \n+
    27
    \n+
    28
    \n
    29
    \n-
    30 typedef typename Traits::ctype ctype;
    \n-
    31
    \n-
    32 static const int dimension = Traits::dimension;
    \n-
    33 static const int mydimension = mydim;
    \n-
    34 static const int codimension = dimension - mydimension;
    \n-
    35 static const int dimensionworld = Traits::dimensionworld;
    \n-
    36
    \n-
    37 typedef FieldVector< ctype, dimensionworld > Coordinate;
    \n-
    38
    \n-
    39 typedef typename Traits::HostGrid HostGrid;
    \n-
    40 typedef typename Traits::CoordFunction CoordFunction;
    \n-
    41
    \n-
    42 typedef typename HostGrid::template Codim< codimension >::Entity HostEntity;
    \n-
    43
    \n-
    44 typedef GeoGrid :: CoordFunctionCaller< HostEntity, typename CoordFunction::Interface >
    \n-
    45 CoordFunctionCaller;
    \n+
    30 // GeoGrid::CoordCache
    \n+
    31 // -------------------
    \n+
    32
    \n+
    33 namespace GeoGrid
    \n+
    34 {
    \n+
    35
    \n+
    36 template< class HostGrid, class Coordinate >
    \n+
    \n+\n+
    38 {
    \n+\n+
    40
    \n+
    41 static const unsigned int dimension = HostGrid::dimension;
    \n+
    42
    \n+
    43 typedef typename HostGrid::template Codim< dimension >::Entity Vertex;
    \n+
    44
    \n+\n
    46
    \n
    47 public:
    \n
    \n-
    48 CoordVector ( const HostEntity &hostEntity,
    \n-
    49 const CoordFunction &coordFunction )
    \n-
    50 : coordFunctionCaller_( hostEntity, coordFunction )
    \n-
    51 {}
    \n-
    \n-
    52
    \n-
    53 template< std::size_t size >
    \n-
    \n-
    54 void calculate ( std::array< Coordinate, size > (&corners) ) const
    \n-
    55 {
    \n-
    56 const std::size_t numCorners = coordFunctionCaller_.size();
    \n-
    57 assert( size >= numCorners );
    \n-
    58 for( std::size_t i = 0; i < numCorners; ++i )
    \n-
    59 coordFunctionCaller_.evaluate( i, corners[ i ] );
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    62 private:
    \n-
    63 const CoordFunctionCaller coordFunctionCaller_;
    \n-
    64 };
    \n-
    \n-
    65
    \n-
    66
    \n-
    67 template< int mydim, class Grid >
    \n-
    \n-
    68 class CoordVector< mydim, Grid, true >
    \n-
    69 {
    \n-
    70 typedef typename std::remove_const< Grid > :: type :: Traits Traits;
    \n-
    71
    \n-
    72 typedef typename Traits::ctype ctype;
    \n-
    73
    \n-
    74 static const int dimension = Traits::dimension;
    \n-
    75 static const int mydimension = mydim;
    \n-
    76 static const int codimension = dimension - mydimension;
    \n-
    77 static const int dimensionworld = Traits::dimensionworld;
    \n-
    78
    \n-
    79 typedef FieldVector< ctype, dimensionworld > Coordinate;
    \n-
    80
    \n-
    81 typedef typename Traits::HostGrid HostGrid;
    \n-
    82 typedef typename Traits::CoordFunction CoordFunction;
    \n-
    83
    \n-
    84 typedef typename HostGrid::template Codim< 0 >::Entity HostElement;
    \n+
    48 explicit CoordCache ( const HostGrid &hostGrid )
    \n+
    49 : data_( hostGrid, dimension )
    \n+
    50 {}
    \n+
    \n+
    51
    \n+
    52 template< class Entity >
    \n+
    \n+
    53 const Coordinate &operator() ( const Entity &entity, unsigned int corner ) const
    \n+
    54 {
    \n+
    55 return data_( entity, corner );
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    \n+
    58 const Coordinate &operator() ( const Vertex &vertex, unsigned int corner ) const
    \n+
    59 {
    \n+
    60 assert( corner == 0 );
    \n+
    61 return data_[ vertex ];
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    64 template< class Entity >
    \n+
    \n+
    65 Coordinate &operator() ( const Entity &entity, unsigned int corner )
    \n+
    66 {
    \n+
    67 return data_( entity,corner) ;
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 Coordinate &operator() ( const Vertex &vertex, unsigned int corner )
    \n+
    71 {
    \n+
    72 assert( corner == 0 );
    \n+
    73 return data_[ vertex ];
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    \n+
    76 void adapt ()
    \n+
    77 {
    \n+
    78 data_.resize();
    \n+
    79 data_.shrinkToFit();
    \n+
    80 }
    \n+
    \n+
    81
    \n+
    82 private:
    \n+
    83 CoordCache ( const This & );
    \n+
    84 This &operator= ( const This & );
    \n
    85
    \n-\n-\n-
    88
    \n-
    89 public:
    \n-
    \n-
    90 CoordVector ( const HostElement &hostElement,
    \n-
    91 const unsigned int subEntity,
    \n-
    92 const CoordFunction &coordFunction )
    \n-
    93 : coordFunctionCaller_( hostElement, coordFunction ),
    \n-
    94 subEntity_( subEntity )
    \n-
    95 {}
    \n-
    \n-
    96
    \n-
    97 template< std::size_t size >
    \n-
    \n-
    98 void calculate ( std::array< Coordinate, size > (&corners) ) const
    \n-
    99 {
    \n-
    100 const GeometryType type = coordFunctionCaller_.type();
    \n-
    101 auto refElement = referenceElement< ctype, dimension >( type );
    \n-
    102 const std::size_t numCorners = refElement.size( subEntity_, codimension, dimension );
    \n-
    103 assert( size >= numCorners );
    \n-
    104 for( std::size_t i = 0; i < numCorners; ++i )
    \n-
    105 {
    \n-
    106 const std::size_t j = refElement.subEntity( subEntity_, codimension, i, dimension );
    \n-
    107 coordFunctionCaller_.evaluate( j, corners[ i ] );
    \n-
    108 }
    \n-
    109 }
    \n+
    86 DataCache data_;
    \n+
    87 };
    \n
    \n+
    88
    \n+
    89 } // namespace GeoGrid
    \n+
    90
    \n+
    91
    \n+
    92
    \n+
    93 // CachedCoordFunction
    \n+
    94 // -------------------
    \n+
    95
    \n+
    96 template< class HostGrid, class CoordFunction >
    \n+
    \n+\n+
    98 : public DiscreteCoordFunction< typename CoordFunction::ctype, CoordFunction::dimRange, CachedCoordFunction< HostGrid, CoordFunction > >
    \n+
    99 {
    \n+\n+\n+
    102
    \n+
    103 public:
    \n+
    104 typedef typename Base::ctype ctype;
    \n+
    105
    \n+\n+
    107
    \n+
    108 private:
    \n+\n
    110
    \n-
    111 private:
    \n-
    112 const CoordFunctionCaller coordFunctionCaller_;
    \n-
    113 const unsigned int subEntity_;
    \n-
    114 };
    \n-
    \n-
    115
    \n-
    116
    \n-
    117
    \n-
    118 // IntersectionCoordVector
    \n-
    119 // -----------------------
    \n-
    120
    \n-
    121 template< class Grid >
    \n-
    \n-\n+
    111 public:
    \n+
    112 explicit
    \n+
    \n+
    113 CachedCoordFunction ( const HostGrid &hostGrid,
    \n+
    114 const CoordFunction &coordFunction = CoordFunction() )
    \n+
    115 : hostGrid_( hostGrid ),
    \n+
    116 coordFunction_( coordFunction ),
    \n+
    117 cache_( hostGrid )
    \n+
    118 {
    \n+
    119 buildCache();
    \n+
    120 }
    \n+
    \n+
    121
    \n+
    \n+
    122 void adapt ()
    \n
    123 {
    \n-
    124 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n-
    125
    \n-
    126 typedef typename Traits::ctype ctype;
    \n+
    124 cache_.adapt();
    \n+
    125 buildCache();
    \n+
    126 }
    \n+
    \n
    127
    \n-
    128 static const int dimension = Traits::dimension;
    \n-
    129 static const int codimension = 1;
    \n-
    130 static const int mydimension = dimension-codimension;
    \n-
    131 static const int dimensionworld = Traits::dimensionworld;
    \n+
    128 void buildCache ();
    \n+
    129
    \n+
    130 template< class HostEntity >
    \n+
    131 void insertEntity ( const HostEntity &hostEntity );
    \n
    132
    \n-
    133 typedef FieldVector< ctype, dimensionworld > Coordinate;
    \n-
    134
    \n-
    135 typedef typename Traits::HostGrid HostGrid;
    \n-
    136
    \n-
    137 typedef typename Traits::template Codim< 0 >::GeometryImpl ElementGeometryImpl;
    \n-
    138 typedef typename Traits::template Codim< codimension >::LocalGeometry HostLocalGeometry;
    \n-
    139
    \n-
    140 public:
    \n-
    \n-
    141 IntersectionCoordVector ( const ElementGeometryImpl &elementGeometry,
    \n-
    142 const HostLocalGeometry &hostLocalGeometry )
    \n-
    143 : elementGeometry_( elementGeometry ),
    \n-
    144 hostLocalGeometry_( hostLocalGeometry )
    \n-
    145 {}
    \n-
    \n-
    146
    \n-
    147 template< std::size_t size >
    \n-
    \n-
    148 void calculate ( std::array< Coordinate, size > (&corners) ) const
    \n-
    149 {
    \n-
    150 const std::size_t numCorners = hostLocalGeometry_.corners();
    \n-
    151 assert( size >= numCorners );
    \n-
    152 for( std::size_t i = 0; i < numCorners; ++i )
    \n-
    153 corners[ i ] = elementGeometry_.global( hostLocalGeometry_.corner( i ) );
    \n-
    154 }
    \n+
    133 template< class HostEntity >
    \n+
    \n+
    134 void evaluate ( const HostEntity &hostEntity, unsigned int corner, RangeVector &y ) const
    \n+
    135 {
    \n+
    136 y = cache_( hostEntity, corner );
    \n+
    137#ifndef NDEBUG
    \n+\n+
    139 CoordFunctionCaller;
    \n+
    140
    \n+
    141 RangeVector z;
    \n+
    142 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );
    \n+
    143 coordFunctionCaller.evaluate( corner, z );
    \n+
    144 assert( ((y - z).two_norm() < 1e-6) );
    \n+
    145#endif
    \n+
    146 }
    \n+
    \n+
    147
    \n+
    148 private:
    \n+
    149 const HostGrid &hostGrid_;
    \n+
    150 const CoordFunction &coordFunction_;
    \n+
    151 Cache cache_;
    \n+
    152 };
    \n
    \n+
    153
    \n+
    154
    \n
    155
    \n-
    156 template< unsigned int numCorners >
    \n-
    \n-
    157 void calculate ( Coordinate (&corners)[ numCorners ] ) const
    \n-
    158 {
    \n-
    159 assert( numCorners == hostLocalGeometry_.corners() );
    \n-
    160 }
    \n-
    \n-
    161
    \n-
    162 private:
    \n-
    163 const ElementGeometryImpl &elementGeometry_;
    \n-
    164 HostLocalGeometry hostLocalGeometry_;
    \n-
    165 };
    \n-
    \n-
    166
    \n+
    156 // Implementation of CachedCoordFunction
    \n+
    157 // -------------------------------------
    \n+
    158
    \n+
    159 template< class HostGrid, class CoordFunction >
    \n+
    \n+\n+
    161 {
    \n+
    162 typedef typename HostGrid::template Codim< 0 >::Entity Element;
    \n+
    163 typedef typename HostGrid::LevelGridView MacroView;
    \n+
    164 typedef typename HostGrid::HierarchicIterator HierarchicIterator;
    \n+
    165
    \n+
    166 typedef typename MacroView::template Codim< 0 >::template Partition< All_Partition >::Iterator MacroIterator;
    \n
    167
    \n-
    168
    \n-
    169 // CornerStorage
    \n-
    170 // -------------
    \n-
    171
    \n-
    172 template< int mydim, int cdim, class Grid >
    \n-
    \n-\n-
    174 {
    \n-
    175 typedef typename std::remove_const< Grid >::type::Traits Traits;
    \n+
    168 const MacroView macroView = hostGrid_.levelGridView( 0 );
    \n+
    169 const int maxLevel = hostGrid_.maxLevel();
    \n+
    170
    \n+
    171 const MacroIterator mend = macroView.template end< 0, All_Partition >();
    \n+
    172 for( MacroIterator mit = macroView.template begin< 0, All_Partition >(); mit != mend; ++mit )
    \n+
    173 {
    \n+
    174 const Element &macroElement = *mit;
    \n+
    175 insertEntity( macroElement );
    \n
    176
    \n-
    177 typedef typename Traits::ctype ctype;
    \n-
    178 typedef FieldVector< ctype, cdim > Coordinate;
    \n-
    179
    \n-
    180 typedef std::array< Coordinate, (1 << mydim) > Coords;
    \n-
    181
    \n-
    182 public:
    \n-
    183 typedef typename Coords::const_iterator const_iterator;
    \n-
    184
    \n-
    185 template< bool fake >
    \n-
    \n-\n-
    187 {
    \n-
    188 coords.calculate( coords_ );
    \n-
    189 }
    \n-
    \n-
    190
    \n-
    \n-\n-
    192 {
    \n-
    193 coords.calculate( coords_ );
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    \n-
    196 const Coordinate &operator[] ( unsigned int i ) const
    \n-
    197 {
    \n-
    198 return coords_[ i ];
    \n-
    199 }
    \n-
    \n-
    200
    \n-
    201 const_iterator begin () const { return coords_.begin(); }
    \n-
    202 const_iterator end () const { return coords_.end(); }
    \n-
    203
    \n-
    204 private:
    \n-
    205 Coords coords_;
    \n-
    206 };
    \n-
    \n-
    207
    \n-
    208 } // namespace GeoGrid
    \n-
    209
    \n-
    210} // namespace Dune
    \n-
    211
    \n-
    212#endif // #ifndef DUNE_GEOGRID_CORNERSTORAGE_HH
    \n-\n+
    177 const HierarchicIterator hend = macroElement.hend( maxLevel );
    \n+
    178 for( HierarchicIterator hit = macroElement.hbegin( maxLevel ); hit != hend; ++hit )
    \n+
    179 insertEntity( *hit );
    \n+
    180 }
    \n+
    181 }
    \n+
    \n+
    182
    \n+
    183
    \n+
    184 template< class HostGrid, class CoordFunction >
    \n+
    185 template< class HostEntity >
    \n+\n+
    \n+
    187 ::insertEntity ( const HostEntity &hostEntity )
    \n+
    188 {
    \n+\n+
    190 CoordFunctionCaller;
    \n+
    191
    \n+
    192 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );
    \n+
    193 auto refElement = referenceElement< ctype, HostEntity::dimension >( hostEntity.type() );
    \n+
    194
    \n+
    195 const unsigned int numCorners = refElement.size( HostEntity::dimension );
    \n+
    196 for( unsigned int i = 0; i < numCorners; ++i )
    \n+
    197 coordFunctionCaller.evaluate( i, cache_( hostEntity, i ) );
    \n+
    198 }
    \n+
    \n+
    199
    \n+
    200} // namespace Dune
    \n+
    201
    \n+
    202#endif // #ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n+
    Definition cachedcoordfunction.hh:99
    \n+
    void adapt()
    Definition cachedcoordfunction.hh:122
    \n+
    CachedCoordFunction(const HostGrid &hostGrid, const CoordFunction &coordFunction=CoordFunction())
    Definition cachedcoordfunction.hh:113
    \n+
    void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
    Definition cachedcoordfunction.hh:134
    \n+
    Base::ctype ctype
    Definition cachedcoordfunction.hh:104
    \n+
    Base::RangeVector RangeVector
    Definition cachedcoordfunction.hh:106
    \n+
    void buildCache()
    Definition cachedcoordfunction.hh:160
    \n+
    void insertEntity(const HostEntity &hostEntity)
    Definition cachedcoordfunction.hh:187
    \n+
    Definition cachedcoordfunction.hh:38
    \n+
    void adapt()
    Definition cachedcoordfunction.hh:76
    \n+
    CoordCache(const HostGrid &hostGrid)
    Definition cachedcoordfunction.hh:48
    \n+
    const Coordinate & operator()(const Entity &entity, unsigned int corner) const
    Definition cachedcoordfunction.hh:53
    \n+
    Derive an implementation of a discrete coordinate function from this class.
    Definition coordfunction.hh:248
    \n+
    Base::RangeVector RangeVector
    Definition coordfunction.hh:253
    \n+
    ct ctype
    field type of the coordinate vector
    Definition coordfunction.hh:185
    \n
    Definition coordfunctioncaller.hh:21
    \n-
    Definition cornerstorage.hh:22
    \n-
    CoordVector(const HostEntity &hostEntity, const CoordFunction &coordFunction)
    Definition cornerstorage.hh:48
    \n-
    void calculate(std::array< Coordinate, size >(&corners)) const
    Definition cornerstorage.hh:54
    \n-
    CoordVector(const HostElement &hostElement, const unsigned int subEntity, const CoordFunction &coordFunction)
    Definition cornerstorage.hh:90
    \n-
    void calculate(std::array< Coordinate, size >(&corners)) const
    Definition cornerstorage.hh:98
    \n-
    Definition cornerstorage.hh:123
    \n-
    IntersectionCoordVector(const ElementGeometryImpl &elementGeometry, const HostLocalGeometry &hostLocalGeometry)
    Definition cornerstorage.hh:141
    \n-
    void calculate(Coordinate(&corners)[numCorners]) const
    Definition cornerstorage.hh:157
    \n-
    void calculate(std::array< Coordinate, size >(&corners)) const
    Definition cornerstorage.hh:148
    \n-
    Definition cornerstorage.hh:174
    \n-
    Coords::const_iterator const_iterator
    Definition cornerstorage.hh:183
    \n-
    const_iterator begin() const
    Definition cornerstorage.hh:201
    \n-
    CornerStorage(const IntersectionCoordVector< Grid > &coords)
    Definition cornerstorage.hh:191
    \n-
    const_iterator end() const
    Definition cornerstorage.hh:202
    \n-
    const Coordinate & operator[](unsigned int i) const
    Definition cornerstorage.hh:196
    \n-
    CornerStorage(const CoordVector< mydim, Grid, fake > &coords)
    Definition cornerstorage.hh:186
    \n+
    DUNE-conform implementation of the entity.
    Definition geometrygrid/entity.hh:694
    \n+\n+
    void resize(const Value &value=Value())
    Definition persistentcontainermap.hh:87
    \n+
    void shrinkToFit()
    Definition persistentcontainermap.hh:93
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,286 +1,290 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-cornerstorage.hh\n+cachedcoordfunction.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_CORNERSTORAGE_HH\n-6#define DUNE_GEOGRID_CORNERSTORAGE_HH\n+5#ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH\n+6#define DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n 14\n-15 namespace GeoGrid\n-16 {\n-17\n-18 // CoordVector\n-19 // -----------\n-20\n-21 template< int mydim, class Grid, bool fake >\n-_\b2_\b2 class _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br;\n-23\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n+18\n+19namespace _\bD_\bu_\bn_\be\n+20{\n+21\n+22 // Internal Forward Declarations\n+23 // -----------------------------\n 24\n-25 template< int mydim, class Grid >\n-_\b2_\b6 class _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br< mydim, _\bG_\br_\bi_\bd, false >\n-27 {\n-28 typedef typename std::remove_const< Grid >::type::Traits Traits;\n+25 template< class HostGrid, class CoordFunction >\n+26 class CachedCoordFunction;\n+27\n+28\n 29\n-30 typedef typename Traits::ctype ctype;\n-31\n-32 static const int dimension = Traits::dimension;\n-33 static const int mydimension = mydim;\n-34 static const int codimension = dimension - mydimension;\n-35 static const int dimensionworld = Traits::dimensionworld;\n-36\n-37 typedef FieldVector< ctype, dimensionworld > Coordinate;\n-38\n-39 typedef typename Traits::HostGrid HostGrid;\n-40 typedef typename Traits::CoordFunction CoordFunction;\n-41\n-42 typedef typename HostGrid::template Codim< codimension >::Entity HostEntity;\n-43\n-44 typedef GeoGrid :: CoordFunctionCaller< HostEntity, typename CoordFunction::\n-Interface >\n-45 CoordFunctionCaller;\n+30 // GeoGrid::CoordCache\n+31 // -------------------\n+32\n+33 namespace GeoGrid\n+34 {\n+35\n+36 template< class HostGrid, class Coordinate >\n+_\b3_\b7 class _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n+38 {\n+39 typedef _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b> _\bT_\bh_\bi_\bs;\n+40\n+41 static const unsigned int dimension = HostGrid::dimension;\n+42\n+43 typedef typename HostGrid::template Codim< dimension >::Entity Vertex;\n+44\n+45 typedef _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b> _\bD_\ba_\bt_\ba_\bC_\ba_\bc_\bh_\be;\n 46\n 47 public:\n-_\b4_\b8 _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br ( const HostEntity &hostEntity,\n-49 const CoordFunction &coordFunction )\n-50 : coordFunctionCaller_( hostEntity, coordFunction )\n-51 {}\n-52\n-53 template< std::size_t size >\n-_\b5_\b4 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( std::array< Coordinate, size > (&corners) ) const\n-55 {\n-56 const std::size_t numCorners = coordFunctionCaller_.size();\n-57 assert( size >= numCorners );\n-58 for( std::size_t i = 0; i < numCorners; ++i )\n-59 coordFunctionCaller_.evaluate( i, corners[ i ] );\n-60 }\n-61\n-62 private:\n-63 const _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br coordFunctionCaller_;\n-64 };\n-65\n-66\n-67 template< int mydim, class Grid >\n-_\b6_\b8 class _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br< mydim, _\bG_\br_\bi_\bd, true >\n-69 {\n-70 typedef typename std::remove_const< Grid > :: type :: Traits Traits;\n-71\n-72 typedef typename Traits::ctype ctype;\n-73\n-74 static const int dimension = Traits::dimension;\n-75 static const int mydimension = mydim;\n-76 static const int codimension = dimension - mydimension;\n-77 static const int dimensionworld = Traits::dimensionworld;\n-78\n-79 typedef FieldVector< ctype, dimensionworld > Coordinate;\n-80\n-81 typedef typename Traits::HostGrid HostGrid;\n-82 typedef typename Traits::CoordFunction CoordFunction;\n-83\n-84 typedef typename HostGrid::template Codim< 0 >::Entity HostElement;\n+_\b4_\b8 explicit _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be ( const HostGrid &hostGrid )\n+49 : data_( hostGrid, dimension )\n+50 {}\n+51\n+52 template< class Entity >\n+_\b5_\b3 const Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, unsigned int corner )\n+const\n+54 {\n+55 return data_( entity, corner );\n+56 }\n+57\n+_\b5_\b8 const Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const Vertex &vertex, unsigned int corner )\n+const\n+59 {\n+60 assert( corner == 0 );\n+61 return data_[ vertex ];\n+62 }\n+63\n+64 template< class Entity >\n+_\b6_\b5 Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bn_\bt_\bi_\bt_\by &entity, unsigned int corner )\n+66 {\n+67 return data_( entity,corner) ;\n+68 }\n+69\n+_\b7_\b0 Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const Vertex &vertex, unsigned int corner )\n+71 {\n+72 assert( corner == 0 );\n+73 return data_[ vertex ];\n+74 }\n+75\n+_\b7_\b6 void _\ba_\bd_\ba_\bp_\bt ()\n+77 {\n+78 data_._\br_\be_\bs_\bi_\bz_\be();\n+79 data_._\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt();\n+80 }\n+81\n+82 private:\n+83 _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be ( const This & );\n+84 This &operator= ( const This & );\n 85\n-86 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-87 _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br;\n+86 DataCache data_;\n+87 };\n 88\n-89 public:\n-_\b9_\b0 _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br ( const HostElement &hostElement,\n-91 const unsigned int subEntity,\n-92 const CoordFunction &coordFunction )\n-93 : coordFunctionCaller_( hostElement, coordFunction ),\n-94 subEntity_( subEntity )\n-95 {}\n-96\n-97 template< std::size_t size >\n-_\b9_\b8 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( std::array< Coordinate, size > (&corners) ) const\n+89 } // namespace GeoGrid\n+90\n+91\n+92\n+93 // CachedCoordFunction\n+94 // -------------------\n+95\n+96 template< class HostGrid, class CoordFunction >\n+_\b9_\b7 class _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+98 : public _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< typename CoordFunction::ctype,\n+CoordFunction::dimRange, CachedCoordFunction< HostGrid, CoordFunction > >\n 99 {\n-100 const GeometryType type = coordFunctionCaller_.type();\n-101 auto refElement = referenceElement< ctype, dimension >( type );\n-102 const std::size_t numCorners = refElement.size( subEntity_, codimension,\n-dimension );\n-103 assert( size >= numCorners );\n-104 for( std::size_t i = 0; i < numCorners; ++i )\n-105 {\n-106 const std::size_t j = refElement.subEntity( subEntity_, codimension, i,\n-dimension );\n-107 coordFunctionCaller_.evaluate( j, corners[ i ] );\n-108 }\n-109 }\n+100 typedef _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b> _\bT_\bh_\bi_\bs;\n+101 typedef _\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be_\b,\n+_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b,_\b _\bT_\bh_\bi_\bs_\b _\b> _\bB_\ba_\bs_\be;\n+102\n+103 public:\n+_\b1_\b0_\b4 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n+105\n+_\b1_\b0_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+107\n+108 private:\n+109 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br_\b _\b> _\bC_\ba_\bc_\bh_\be;\n 110\n-111 private:\n-112 const _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br coordFunctionCaller_;\n-113 const unsigned int subEntity_;\n-114 };\n-115\n-116\n-117\n-118 // IntersectionCoordVector\n-119 // -----------------------\n-120\n-121 template< class Grid >\n-_\b1_\b2_\b2 class _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n+111 public:\n+112 explicit\n+_\b1_\b1_\b3 _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const HostGrid &hostGrid,\n+114 const CoordFunction &coordFunction = CoordFunction() )\n+115 : hostGrid_( hostGrid ),\n+116 coordFunction_( coordFunction ),\n+117 cache_( hostGrid )\n+118 {\n+119 _\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be();\n+120 }\n+121\n+_\b1_\b2_\b2 void _\ba_\bd_\ba_\bp_\bt ()\n 123 {\n-124 typedef typename std::remove_const< Grid >::type::Traits Traits;\n-125\n-126 typedef typename Traits::ctype ctype;\n+124 cache_._\ba_\bd_\ba_\bp_\bt();\n+125 _\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be();\n+126 }\n 127\n-128 static const int dimension = Traits::dimension;\n-129 static const int codimension = 1;\n-130 static const int mydimension = dimension-codimension;\n-131 static const int dimensionworld = Traits::dimensionworld;\n+128 void _\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be ();\n+129\n+130 template< class HostEntity >\n+131 void _\bi_\bn_\bs_\be_\br_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const HostEntity &hostEntity );\n 132\n-133 typedef FieldVector< ctype, dimensionworld > Coordinate;\n-134\n-135 typedef typename Traits::HostGrid HostGrid;\n-136\n-137 typedef typename Traits::template Codim< 0 >::GeometryImpl\n-ElementGeometryImpl;\n-138 typedef typename Traits::template Codim< codimension >::LocalGeometry\n-HostLocalGeometry;\n-139\n-140 public:\n-_\b1_\b4_\b1 _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br ( const ElementGeometryImpl &elementGeometry,\n-142 const HostLocalGeometry &hostLocalGeometry )\n-143 : elementGeometry_( elementGeometry ),\n-144 hostLocalGeometry_( hostLocalGeometry )\n-145 {}\n-146\n-147 template< std::size_t size >\n-_\b1_\b4_\b8 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( std::array< Coordinate, size > (&corners) ) const\n-149 {\n-150 const std::size_t numCorners = hostLocalGeometry_.corners();\n-151 assert( size >= numCorners );\n-152 for( std::size_t i = 0; i < numCorners; ++i )\n-153 corners[ i ] = elementGeometry_.global( hostLocalGeometry_.corner( i ) );\n-154 }\n+133 template< class HostEntity >\n+_\b1_\b3_\b4 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const HostEntity &hostEntity, unsigned int corner,\n+_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br &y ) const\n+135 {\n+136 y = cache_( hostEntity, corner );\n+137#ifndef NDEBUG\n+138 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+139 CoordFunctionCaller;\n+140\n+141 _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br z;\n+142 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );\n+143 coordFunctionCaller.evaluate( corner, z );\n+144 assert( ((y - z).two_norm() < 1e-6) );\n+145#endif\n+146 }\n+147\n+148 private:\n+149 const HostGrid &hostGrid_;\n+150 const CoordFunction &coordFunction_;\n+151 Cache cache_;\n+152 };\n+153\n+154\n 155\n-156 template< unsigned int numCorners >\n-_\b1_\b5_\b7 void _\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be ( Coordinate (&corners)[ numCorners ] ) const\n-158 {\n-159 assert( numCorners == hostLocalGeometry_.corners() );\n-160 }\n-161\n-162 private:\n-163 const ElementGeometryImpl &elementGeometry_;\n-164 HostLocalGeometry hostLocalGeometry_;\n-165 };\n-166\n+156 // Implementation of CachedCoordFunction\n+157 // -------------------------------------\n+158\n+159 template< class HostGrid, class CoordFunction >\n+_\b1_\b6_\b0 inline void _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be ()\n+161 {\n+162 typedef typename HostGrid::template Codim< 0 >::Entity Element;\n+163 typedef typename HostGrid::LevelGridView MacroView;\n+164 typedef typename HostGrid::HierarchicIterator HierarchicIterator;\n+165\n+166 typedef typename MacroView::template Codim< 0 >::template Partition<\n+All_Partition >::Iterator MacroIterator;\n 167\n-168\n-169 // CornerStorage\n-170 // -------------\n-171\n-172 template< int mydim, int cdim, class Grid >\n-_\b1_\b7_\b3 class _\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n-174 {\n-175 typedef typename std::remove_const< Grid >::type::Traits Traits;\n+168 const MacroView macroView = hostGrid_.levelGridView( 0 );\n+169 const int maxLevel = hostGrid_.maxLevel();\n+170\n+171 const MacroIterator mend = macroView.template end< 0, All_Partition >();\n+172 for( MacroIterator mit = macroView.template begin< 0, All_Partition >();\n+mit != mend; ++mit )\n+173 {\n+174 const Element ¯oElement = *mit;\n+175 insertEntity( macroElement );\n 176\n-177 typedef typename Traits::ctype ctype;\n-178 typedef FieldVector< ctype, cdim > Coordinate;\n-179\n-180 typedef std::array< Coordinate, (1 << mydim) > Coords;\n-181\n-182 public:\n-_\b1_\b8_\b3 typedef typename Coords::const_iterator _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n-184\n-185 template< bool fake >\n-_\b1_\b8_\b6 explicit _\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be ( const _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bk_\be_\b _\b> &coords )\n-187 {\n-188 coords.calculate( coords_ );\n-189 }\n-190\n-_\b1_\b9_\b1 explicit _\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be ( const _\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\b _\b> &coords )\n-192 {\n-193 coords._\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be( coords_ );\n-194 }\n-195\n-_\b1_\b9_\b6 const Coordinate &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( unsigned int i ) const\n-197 {\n-198 return coords_[ i ];\n-199 }\n-200\n-_\b2_\b0_\b1 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const { return coords_.begin(); }\n-_\b2_\b0_\b2 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const { return coords_.end(); }\n-203\n-204 private:\n-205 Coords coords_;\n-206 };\n-207\n-208 } // namespace GeoGrid\n-209\n-210} // namespace Dune\n-211\n-212#endif // #ifndef DUNE_GEOGRID_CORNERSTORAGE_HH\n+177 const HierarchicIterator hend = macroElement.hend( maxLevel );\n+178 for( HierarchicIterator hit = macroElement.hbegin( maxLevel ); hit != hend;\n+++hit )\n+179 insertEntity( *hit );\n+180 }\n+181 }\n+182\n+183\n+184 template< class HostGrid, class CoordFunction >\n+185 template< class HostEntity >\n+186 inline void _\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b>\n+_\b1_\b8_\b7_\b _\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bn_\bt_\bi_\bt_\by ( const HostEntity &hostEntity )\n+188 {\n+189 typedef _\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+190 CoordFunctionCaller;\n+191\n+192 CoordFunctionCaller coordFunctionCaller( hostEntity, coordFunction_ );\n+193 auto refElement = referenceElement< ctype, HostEntity::dimension >\n+( hostEntity.type() );\n+194\n+195 const unsigned int numCorners = refElement.size( HostEntity::dimension );\n+196 for( unsigned int i = 0; i < numCorners; ++i )\n+197 coordFunctionCaller.evaluate( i, cache_( hostEntity, i ) );\n+198 }\n+199\n+200} // namespace Dune\n+201\n+202#endif // #ifndef DUNE_GEOGRID_CACHEDCOORDFUNCTION_HH\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n _\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bc_\ba_\bl_\bl_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n+void adapt()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+CachedCoordFunction(const HostGrid &hostGrid, const CoordFunction\n+&coordFunction=CoordFunction())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector\n+&y) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n+Base::ctype ctype\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Base::RangeVector RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\bC_\ba_\bc_\bh_\be\n+void buildCache()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\ba_\bc_\bh_\be_\bd_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bn_\bt_\bi_\bt_\by\n+void insertEntity(const HostEntity &hostEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\ba_\bd_\ba_\bp_\bt\n+void adapt()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n+CoordCache(const HostGrid &hostGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Coordinate & operator()(const Entity &entity, unsigned int corner) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cachedcoordfunction.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Derive an implementation of a discrete coordinate function from this class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Base::RangeVector RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bs_\bc_\br_\be_\bt_\be_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n+ct ctype\n+field type of the coordinate vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:185\n _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunctioncaller.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n-CoordVector(const HostEntity &hostEntity, const CoordFunction &coordFunction)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n-void calculate(std::array< Coordinate, size >(&corners)) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n-CoordVector(const HostElement &hostElement, const unsigned int subEntity, const\n-CoordFunction &coordFunction)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n-void calculate(std::array< Coordinate, size >(&corners)) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br\n-IntersectionCoordVector(const ElementGeometryImpl &elementGeometry, const\n-HostLocalGeometry &hostLocalGeometry)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n-void calculate(Coordinate(&corners)[numCorners]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\ba_\bl_\bc_\bu_\bl_\ba_\bt_\be\n-void calculate(std::array< Coordinate, size >(&corners)) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-Coords::const_iterator const_iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:183\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-const_iterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:201\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n-CornerStorage(const IntersectionCoordVector< Grid > &coords)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\be_\bn_\bd\n-const_iterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const Coordinate & operator[](unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bS_\bt_\bo_\br_\ba_\bg_\be\n-CornerStorage(const CoordVector< mydim, Grid, fake > &coords)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cornerstorage.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+DUNE-conform implementation of the entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometrygrid/entity.hh:694\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bG_\br_\bi_\bd_\b,_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const Value &value=Value())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bM_\ba_\bp_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn persistentcontainermap.hh:93\n+_\bc_\ba_\bp_\ba_\bb_\bi_\bl_\bi_\bt_\bi_\be_\bs_\b._\bh_\bh\n+_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\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-grid-doc/doxygen/a00569_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00590_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,30 +77,30 @@\n
  • dune
  • grid
  • geometrygrid
  • \n
    \n
    \n
    \n
    iterator.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_GEOGRID_ITERATOR_HH
    \n
    6#define DUNE_GEOGRID_ITERATOR_HH
    \n
    7
    \n
    8#include <cassert>
    \n
    9
    \n
    10#include <type_traits>
    \n
    11#include <utility>
    \n
    12
    \n
    13#include <dune/geometry/referenceelements.hh>
    \n
    14
    \n \n-\n+\n \n
    18
    \n
    19namespace Dune
    \n
    20{
    \n
    21
    \n
    22 namespace GeoGrid
    \n
    23 {
    \n@@ -574,15 +574,15 @@\n
    \n
    424
    \n
    425 } // namespace GeoGrid
    \n
    426
    \n
    427} // namespace Dune
    \n
    428
    \n
    429#endif // #ifndef DUNE_GEOGRID_ITERATOR_HH
    \n-\n+\n
    PartitionIteratorType
    Parameter to be used for the parallel level- and leaf iterators.
    Definition gridenums.hh:136
    \n
    PartitionType
    Attributes used in the generic overlap model.
    Definition gridenums.hh:30
    \n
    @ All_Partition
    all entities
    Definition gridenums.hh:141
    \n
    @ OverlapFront_Partition
    interior, border, overlap and front entities
    Definition gridenums.hh:140
    \n
    @ Interior_Partition
    only interior entities
    Definition gridenums.hh:137
    \n
    @ InteriorBorder_Partition
    interior and border entities
    Definition gridenums.hh:138
    \n
    @ Overlap_Partition
    interior, border, and overlap entities
    Definition gridenums.hh:139
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00587.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00311.html", "comments": ["Files 92% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordfunctioncaller.hh File Reference\n+dune-grid: rangegenerators.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-
    coordfunctioncaller.hh File Reference
    \n+
    rangegenerators.hh File Reference
    \n
    \n
    \n-
    #include <dune/grid/geometrygrid/hostcorners.hh>
    \n-#include <dune/grid/geometrygrid/coordfunction.hh>
    \n+
    #include <dune/common/iteratorrange.hh>
    \n+#include <dune/common/rangeutilities.hh>
    \n+#include <dune/geometry/dimension.hh>
    \n+#include <dune/grid/common/gridenums.hh>
    \n+#include <dune/grid/common/partitionset.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 Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,21 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-coordfunctioncaller.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bh_\bo_\bs_\bt_\bc_\bo_\br_\bn_\be_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+rangegenerators.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\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 N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n-\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00587_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00869_source.html", "comments": ["Files 82% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: coordfunctioncaller.hh Source File\n+dune-grid: boundaryseg.hh Source File\n \n \n \n \n \n \n \n@@ -70,127 +70,122 @@\n
    \n \n \n \n \n \n \n
    \n-
    coordfunctioncaller.hh
    \n+
    boundaryseg.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
    \n-
    6#define DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
    \n+
    5#ifndef DUNE_DGF_BOUNDARYSEGBLOCK_HH
    \n+
    6#define DUNE_DGF_BOUNDARYSEGBLOCK_HH
    \n
    7
    \n-\n-\n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n+
    8#include <cassert>
    \n+
    9#include <iostream>
    \n+
    10#include <string>
    \n+
    11#include <vector>
    \n+
    12#include <map>
    \n
    13
    \n-
    14 namespace GeoGrid
    \n-
    15 {
    \n+\n+\n
    16
    \n-
    17 // CoordFunctionCaller
    \n-
    18 // -------------------
    \n-
    19
    \n-
    20 template< class HostEntity, class CoordFunctionInterface >
    \n-\n-
    22
    \n-
    23 template< class HostEntity, class ct, unsigned int dimD, unsigned int dimR, class Impl >
    \n-
    24 class CoordFunctionCaller< HostEntity, AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >
    \n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    20
    \n+
    21 namespace dgf
    \n+
    22 {
    \n+
    \n+\n+
    24 : public BasicBlock
    \n
    25 {
    \n-\n-\n-
    28
    \n-
    29 static const int codimension = HostEntity::codimension;
    \n-
    30
    \n-
    31 public:
    \n-
    32 typedef typename CoordFunctionInterface::RangeVector RangeVector;
    \n+
    26 int dimworld; // the dimension of the vertices (is given from user)
    \n+
    27 bool goodline; // active line describes a vertex
    \n+
    28 std :: vector< unsigned int > p; // active vertex
    \n+
    29 int bndid;
    \n+
    30 typedef DGFBoundaryParameter::type BoundaryParameter;
    \n+
    31 BoundaryParameter parameter;
    \n+
    32 bool simplexgrid;
    \n
    33
    \n-
    34 CoordFunctionCaller ( const HostEntity &hostEntity,
    \n-
    35 const CoordFunctionInterface &coordFunction )
    \n-
    36 : hostCorners_( hostEntity ),
    \n-
    37 coordFunction_( coordFunction )
    \n-
    38 {}
    \n-
    39
    \n-
    40 void evaluate ( unsigned int i, RangeVector &y ) const
    \n-
    41 {
    \n-
    42 coordFunction_.evaluate( hostCorners_[ i ], y );
    \n-
    43 }
    \n-
    44
    \n-
    45 GeometryType type () const
    \n-
    46 {
    \n-
    47 return hostCorners_.type();
    \n-
    48 }
    \n-
    49
    \n-
    50 std::size_t size () const
    \n-
    51 {
    \n-
    52 return hostCorners_.size();
    \n-
    53 }
    \n-
    54
    \n-
    55 private:
    \n-
    56 const HostCorners< HostEntity > hostCorners_;
    \n-
    57 const CoordFunctionInterface &coordFunction_;
    \n-
    58 };
    \n-
    59
    \n-
    60 template< class HostEntity, class ct, unsigned int dimR, class Impl >
    \n-
    61 class CoordFunctionCaller< HostEntity, DiscreteCoordFunctionInterface< ct, dimR, Impl > >
    \n-
    62 {
    \n-
    63 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl > CoordFunctionInterface;
    \n-
    64 typedef CoordFunctionCaller< HostEntity, CoordFunctionInterface > This;
    \n-
    65
    \n-
    66 typedef typename CoordFunctionInterface::RangeVector RangeVector;
    \n-
    67
    \n-
    68 public:
    \n-
    69 CoordFunctionCaller ( const HostEntity &hostEntity,
    \n-
    70 const CoordFunctionInterface &coordFunction )
    \n-
    71 : hostEntity_( hostEntity ),
    \n-
    72 coordFunction_( coordFunction )
    \n-
    73 {}
    \n+
    34 public:
    \n+\n+
    36 typedef std::pair < int, BoundaryParameter > BndParam;
    \n+
    37
    \n+
    38 // initialize vertex block and get first vertex
    \n+
    39 BoundarySegBlock ( std :: istream &in, int pnofvtx,
    \n+
    40 int pdimworld, bool psimplexgrid );
    \n+
    41
    \n+
    42 // some information
    \n+
    43 int get( std :: map< EntityKey, BndParam > & facemap,
    \n+
    44 bool fixedsize,
    \n+
    45 int vtxoffset
    \n+
    46 );
    \n+
    47
    \n+
    \n+
    48 bool ok()
    \n+
    49 {
    \n+
    50 return goodline;
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    \n+\n+
    54 {
    \n+
    55 return noflines();
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    58 private:
    \n+
    59 bool next();
    \n+
    60
    \n+
    61 // get coordinates of active vertex
    \n+
    62 int operator[] (int i)
    \n+
    63 {
    \n+
    64 assert(ok());
    \n+
    65 assert(linenumber()>=0);
    \n+
    66 assert(0<=i && i<dimworld+1);
    \n+
    67 return p[i];
    \n+
    68 }
    \n+
    69
    \n+
    70 int size()
    \n+
    71 {
    \n+
    72 return p.size();
    \n+
    73 }
    \n
    74
    \n-
    75 void evaluate ( unsigned int i, RangeVector &y ) const
    \n-
    76 {
    \n-
    77 coordFunction_.evaluate( hostEntity_, i, y );
    \n-
    78 }
    \n-
    79
    \n-
    80 GeometryType type () const
    \n-
    81 {
    \n-
    82 return hostEntity_.type();
    \n-
    83 }
    \n-
    84
    \n-
    85 std::size_t size () const
    \n-
    86 {
    \n-
    87 auto refElement = referenceElement< ct, HostEntity::mydimension >( type() );
    \n-
    88 return refElement.size( HostEntity::mydimension );
    \n-
    89 }
    \n-
    90
    \n-
    91 private:
    \n-
    92 const HostEntity &hostEntity_;
    \n-
    93 const CoordFunctionInterface &coordFunction_;
    \n-
    94 };
    \n-
    95
    \n-
    96 } // namespace GeoGrid
    \n-
    97
    \n-
    98} // namespace Dune
    \n-
    99
    \n-
    100#endif // #ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
    \n-\n-\n+
    75 };
    \n+
    \n+
    76
    \n+
    77 } // end namespace dgf
    \n+
    78
    \n+
    79} // end namespace Dune
    \n+
    80
    \n+
    81#endif
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    GeometryType
    Type representing VTK's entity geometry types.
    Definition common.hh:132
    \n-
    Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid....
    Definition coordfunction.hh:44
    \n-
    Definition coordfunctioncaller.hh:21
    \n+
    Definition basic.hh:31
    \n+
    int & noflines()
    Definition basic.hh:87
    \n+
    int linenumber()
    Definition basic.hh:92
    \n+
    Definition boundaryseg.hh:25
    \n+
    bool ok()
    Definition boundaryseg.hh:48
    \n+
    int get(std ::map< EntityKey, BndParam > &facemap, bool fixedsize, int vtxoffset)
    Definition boundaryseg.cc:35
    \n+
    std::pair< int, BoundaryParameter > BndParam
    Definition boundaryseg.hh:36
    \n+
    DGFEntityKey< unsigned int > EntityKey
    Definition boundaryseg.hh:35
    \n+
    int nofbound()
    Definition boundaryseg.hh:53
    \n+
    Definition entitykey.hh:21
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,132 +1,133 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-coordfunctioncaller.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+ * _\bb_\bl_\bo_\bc_\bk_\bs\n+boundaryseg.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH\n-6#define DUNE_GEOGRID_COORDFUNCTIONCALLER_HH\n+5#ifndef DUNE_DGF_BOUNDARYSEGBLOCK_HH\n+6#define DUNE_DGF_BOUNDARYSEGBLOCK_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bh_\bo_\bs_\bt_\bc_\bo_\br_\bn_\be_\br_\bs_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n+8#include \n+9#include \n+10#include \n+11#include \n+12#include \n 13\n-14 namespace GeoGrid\n-15 {\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n 16\n-17 // CoordFunctionCaller\n-18 // -------------------\n-19\n-20 template< class HostEntity, class CoordFunctionInterface >\n-_\b2_\b1 class _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br;\n-22\n-23 template< class HostEntity, class ct, unsigned int dimD, unsigned int dimR,\n-class Impl >\n-24 class _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br< HostEntity, _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< ct,\n-dimD, dimR, Impl > >\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n+20\n+21 namespace dgf\n+22 {\n+_\b2_\b3 class _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk\n+24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n 25 {\n-26 typedef _\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bc_\bt_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bI_\bm_\bp_\bl_\b _\b>\n-CoordFunctionInterface;\n-27 typedef _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b,_\b _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b> This;\n-28\n-29 static const int codimension = HostEntity::codimension;\n-30\n-31 public:\n-32 typedef typename CoordFunctionInterface::RangeVector RangeVector;\n+26 int dimworld; // the dimension of the vertices (is given from user)\n+27 bool goodline; // active line describes a vertex\n+28 std :: vector< unsigned int > p; // active vertex\n+29 int bndid;\n+30 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be BoundaryParameter;\n+31 BoundaryParameter parameter;\n+32 bool simplexgrid;\n 33\n-34 _\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br ( const HostEntity &hostEntity,\n-35 const CoordFunctionInterface &coordFunction )\n-36 : hostCorners_( hostEntity ),\n-37 coordFunction_( coordFunction )\n-38 {}\n-39\n-40 void evaluate ( unsigned int i, RangeVector &y ) const\n-41 {\n-42 coordFunction_.evaluate( hostCorners_[ i ], y );\n-43 }\n-44\n-45 GeometryType type () const\n-46 {\n-47 return hostCorners_.type();\n-48 }\n-49\n-50 std::size_t size () const\n-51 {\n-52 return hostCorners_.size();\n-53 }\n-54\n-55 private:\n-56 const HostCorners< HostEntity > hostCorners_;\n-57 const CoordFunctionInterface &coordFunction_;\n-58 };\n-59\n-60 template< class HostEntity, class ct, unsigned int dimR, class Impl >\n-61 class CoordFunctionCaller< HostEntity, DiscreteCoordFunctionInterface< ct,\n-dimR, Impl > >\n-62 {\n-63 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl >\n-CoordFunctionInterface;\n-64 typedef CoordFunctionCaller< HostEntity, CoordFunctionInterface > This;\n-65\n-66 typedef typename CoordFunctionInterface::RangeVector RangeVector;\n-67\n-68 public:\n-69 CoordFunctionCaller ( const HostEntity &hostEntity,\n-70 const CoordFunctionInterface &coordFunction )\n-71 : hostEntity_( hostEntity ),\n-72 coordFunction_( coordFunction )\n-73 {}\n+34 public:\n+_\b3_\b5 typedef _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b> _\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by;\n+_\b3_\b6 typedef std::pair < int, BoundaryParameter > _\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm;\n+37\n+38 // initialize vertex block and get first vertex\n+39 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx,\n+40 int pdimworld, bool psimplexgrid );\n+41\n+42 // some information\n+43 int _\bg_\be_\bt( std :: map< EntityKey, BndParam > & facemap,\n+44 bool fixedsize,\n+45 int vtxoffset\n+46 );\n+47\n+_\b4_\b8 bool _\bo_\bk()\n+49 {\n+50 return goodline;\n+51 }\n+52\n+_\b5_\b3 int _\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd()\n+54 {\n+55 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n+56 }\n+57\n+58 private:\n+59 bool next();\n+60\n+61 // get coordinates of active vertex\n+62 int operator[] (int i)\n+63 {\n+64 assert(_\bo_\bk());\n+65 assert(_\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br()>=0);\n+66 assert(0<=i && i( type() );\n-88 return refElement.size( HostEntity::mydimension );\n-89 }\n-90\n-91 private:\n-92 const HostEntity &hostEntity_;\n-93 const CoordFunctionInterface &coordFunction_;\n-94 };\n-95\n-96 } // namespace GeoGrid\n-97\n-98} // namespace Dune\n-99\n-100#endif // #ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH\n-_\bc_\bo_\bo_\br_\bd_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bh_\bo_\bs_\bt_\bc_\bo_\br_\bn_\be_\br_\bs_\b._\bh_\bh\n+75 };\n+76\n+77 } // end namespace dgf\n+78\n+79} // end namespace Dune\n+80\n+81#endif\n+_\bp_\ba_\br_\bs_\be_\br_\b._\bh_\bh\n+_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType\n-Type representing VTK's entity geometry types.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bn_\ba_\bl_\by_\bt_\bi_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface class for using an analytical function to define the geometry of a\n-Dune::GeometryGrid....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunction.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bC_\ba_\bl_\bl_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordfunctioncaller.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n+int & noflines()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br\n+int linenumber()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+bool ok()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n+int get(std ::map< EntityKey, BndParam > &facemap, bool fixedsize, int\n+vtxoffset)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.cc:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm\n+std::pair< int, BoundaryParameter > BndParam\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n+DGFEntityKey< unsigned int > EntityKey\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bS_\be_\bg_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd\n+int nofbound()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn boundaryseg.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.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-grid-doc/doxygen/a00608.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00212.html", "comments": ["Files 84% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: declaration.hh File Reference\n+dune-grid: yaspgridhierarchiciterator.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,42 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    declaration.hh File Reference
    \n+
    yaspgridhierarchiciterator.hh File Reference
    \n
    \n
    \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::YaspHierarchicIterator< GridImp >
     YaspHierarchicIterator enables iteration over son entities of codim 0. More...
     
    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    \n-
    \n+

    Detailed Description

    \n+

    The YaspHierarchicIterator class

    \n+

    Enables iteration over son entities of codim 0

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,16 +1,24 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-declaration.hh File Reference\n+ * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+yaspgridhierarchiciterator.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:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+\u00a0 _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br enables iteration over son entities of codim 0.\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 Include standard header files.\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+The YaspHierarchicIterator class\n+Enables iteration over son entities of codim 0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00608_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00251_source.html", "comments": ["Files 74% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: declaration.hh Source File\n+dune-grid: exceptions.hh Source File\n \n \n \n \n \n \n \n@@ -70,38 +70,47 @@\n \n \n \n \n \n \n \n
    \n-
    declaration.hh
    \n+
    exceptions.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GEOGRID_DECLARATION_HH
    \n-
    6#define DUNE_GEOGRID_DECLARATION_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH
    \n+
    6#define DUNE_GRID_COMMON_EXCEPTIONS_HH
    \n
    7
    \n-
    8namespace Dune
    \n-
    9{
    \n-
    10
    \n-
    11 template< class HostGrid, class CoordFunction, class Allocator >
    \n-
    12 class GeometryGrid;
    \n-
    13
    \n-
    14} // namespace Dune
    \n+
    8#include <dune/common/exceptions.hh>
    \n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    12
    \n+
    13 // GridError
    \n+
    14 // ---------
    \n
    15
    \n-
    16#endif // #ifndef DUNE_GEOGRID_DECLARATION_HH
    \n+
    \n+\n+
    19 : public Exception
    \n+
    20 {};
    \n+
    \n+
    21
    \n+
    22}
    \n+
    23
    \n+
    24#endif // #ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n+
    Base class for exceptions in Dune grid modules.
    Definition exceptions.hh:20
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,31 +1,40 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n-declaration.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+exceptions.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GEOGRID_DECLARATION_HH\n-6#define DUNE_GEOGRID_DECLARATION_HH\n+5#ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH\n+6#define DUNE_GRID_COMMON_EXCEPTIONS_HH\n 7\n-8namespace _\bD_\bu_\bn_\be\n-9{\n-10\n-11 template< class HostGrid, class CoordFunction, class Allocator >\n-12 class GeometryGrid;\n-13\n-14} // namespace Dune\n+8#include \n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+12\n+13 // GridError\n+14 // ---------\n 15\n-16#endif // #ifndef DUNE_GEOGRID_DECLARATION_HH\n+_\b1_\b8 class _\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+19 : public Exception\n+20 {};\n+21\n+22}\n+23\n+24#endif // #ifndef DUNE_GRID_COMMON_EXCEPTIONS_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bE_\br_\br_\bo_\br\n+Base class for exceptions in Dune grid modules.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn exceptions.hh:20\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00635_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00311_source.html", "comments": ["Files 82% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: level.hh Source File\n+dune-grid: rangegenerators.hh Source File\n \n \n \n \n \n \n \n@@ -70,331 +70,306 @@\n
    \n \n \n \n \n \n \n
    \n-
    level.hh
    \n+
    rangegenerators.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_LEVEL_HH
    \n-
    6#define DUNE_ALBERTA_LEVEL_HH
    \n+
    5#ifndef DUNE_GRID_COMMON_RANGEGENERATORS_HH
    \n+
    6#define DUNE_GRID_COMMON_RANGEGENERATORS_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <cstdlib>
    \n-
    10
    \n-\n-\n-\n-
    14
    \n-
    15#if HAVE_ALBERTA
    \n+
    8#include <dune/common/iteratorrange.hh>
    \n+
    9#include <dune/common/rangeutilities.hh>
    \n+
    10#include <dune/geometry/dimension.hh>
    \n+\n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    20 // AlbertaGridLevelProvider
    \n-
    21 // ------------------------
    \n-
    22
    \n-
    23 template< int dim >
    \n-
    \n-\n-
    25 {
    \n-\n-
    27
    \n-
    28 typedef unsigned char Level;
    \n-
    29
    \n-\n-\n-
    32
    \n-\n-
    34
    \n-
    35 static const Level isNewFlag = (1 << 7);
    \n-
    36 static const Level levelMask = (1 << 7) - 1;
    \n-
    37
    \n-
    38 class SetLocal;
    \n-
    39 class CalcMaxLevel;
    \n-
    40
    \n-
    41 template< Level flags >
    \n-
    42 struct ClearFlags;
    \n-
    43
    \n-
    44 struct Interpolation;
    \n-
    45
    \n-
    46 public:
    \n-\n-\n-\n-
    50
    \n-
    \n-
    51 Level operator() ( const Alberta::Element *element ) const
    \n-
    52 {
    \n-
    53 const Level *array = (Level *)level_;
    \n-
    54 return array[ dofAccess_( element, 0 ) ] & levelMask;
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    \n-
    57 Level operator() ( const ElementInfo &elementInfo ) const
    \n-
    58 {
    \n-
    59 return (*this)( elementInfo.el() );
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    62 bool isNew ( const Alberta::Element *element ) const
    \n-
    63 {
    \n-
    64 const Level *array = (Level *)level_;
    \n-
    65 return ((array[ dofAccess_( element, 0 ) ] & isNewFlag) != 0);
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    68 bool isNew ( const ElementInfo &elementInfo ) const
    \n-
    69 {
    \n-
    70 return isNew( elementInfo.el() );
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    73 Level maxLevel () const
    \n-
    74 {
    \n-
    75 CalcMaxLevel calcFromCache;
    \n-
    76 level_.forEach( calcFromCache );
    \n-
    77#ifndef NDEBUG
    \n-
    78 CalcMaxLevel calcFromGrid;
    \n-
    79 mesh().leafTraverse( calcFromGrid, FillFlags::nothing );
    \n-
    80 assert( calcFromCache.maxLevel() == calcFromGrid.maxLevel() );
    \n-
    81#endif
    \n-
    82 return calcFromCache.maxLevel();;
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-\n-
    86 {
    \n-
    87 return MeshPointer( level_.dofSpace()->mesh );
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    \n-
    90 void markAllOld ()
    \n-
    91 {
    \n-
    92 ClearFlags< isNewFlag > clearIsNew;
    \n-
    93 level_.forEach( clearIsNew );
    \n-
    94 }
    \n-
    \n-
    95
    \n-
    \n-
    96 void create ( const DofNumbering &dofNumbering )
    \n-
    97 {
    \n-
    98 const Alberta::DofSpace *const dofSpace = dofNumbering.dofSpace( 0 );
    \n-
    99 dofAccess_ = DofAccess( dofSpace );
    \n-
    100
    \n-
    101 level_.create( dofSpace, "Element level" );
    \n-
    102 assert( level_ );
    \n-
    103 level_.template setupInterpolation< Interpolation >();
    \n-
    104
    \n-
    105 SetLocal setLocal( level_ );
    \n-\n-
    107 }
    \n-
    \n-
    108
    \n-
    \n-
    109 void release ()
    \n-
    110 {
    \n-
    111 level_.release();
    \n-
    112 dofAccess_ = DofAccess();
    \n-
    113 }
    \n-
    \n-
    114
    \n-
    115 private:
    \n-
    116 DofVectorPointer level_;
    \n-
    117 DofAccess dofAccess_;
    \n-
    118 };
    \n-
    \n-
    119
    \n-
    120
    \n-
    121
    \n-
    122 // AlbertaGridLevelProvider::SetLocal
    \n-
    123 // ----------------------------------
    \n-
    124
    \n-
    125 template< int dim >
    \n-
    \n-\n-
    127 {
    \n-
    128 DofVectorPointer level_;
    \n-
    129 DofAccess dofAccess_;
    \n-
    130
    \n-
    131 public:
    \n-
    \n-
    132 explicit SetLocal ( const DofVectorPointer &level )
    \n-
    133 : level_( level ),
    \n-
    134 dofAccess_( level.dofSpace() )
    \n-
    135 {}
    \n-
    \n-
    136
    \n-
    \n-
    137 void operator() ( const Alberta::ElementInfo< dim > &elementInfo ) const
    \n-
    138 {
    \n-
    139 Level *const array = (Level *)level_;
    \n-
    140 array[ dofAccess_( elementInfo, 0 ) ] = elementInfo.level();
    \n-
    141 }
    \n-
    \n-
    142 };
    \n-
    \n-
    143
    \n-
    144
    \n-
    145
    \n-
    146 // AlbertaGridLevelProvider::CalcMaxLevel
    \n-
    147 // --------------------------------------
    \n-
    148
    \n-
    149 template< int dim >
    \n-
    \n-\n-
    151 {
    \n-
    152 Level maxLevel_;
    \n-
    153
    \n-
    154 public:
    \n-
    \n-\n-
    156 : maxLevel_( 0 )
    \n-
    157 {}
    \n-
    \n-
    158
    \n-
    \n-
    159 void operator() ( const Level &dof )
    \n-
    160 {
    \n-
    161 maxLevel_ = std::max( maxLevel_, Level( dof & levelMask ) );
    \n-
    162 }
    \n-
    \n-
    163
    \n-
    \n-
    164 void operator() ( const Alberta::ElementInfo< dim > &elementInfo )
    \n-
    165 {
    \n-
    166 maxLevel_ = std::max( maxLevel_, Level( elementInfo.level() ) );
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    \n-
    169 Level maxLevel () const
    \n-
    170 {
    \n-
    171 return maxLevel_;
    \n-
    172 }
    \n-
    \n-
    173 };
    \n-
    \n-
    174
    \n-
    175
    \n-
    176
    \n-
    177 // AlbertaGridLevelProvider::ClearFlags
    \n-
    178 // ------------------------------------
    \n-
    179
    \n-
    180 template< int dim >
    \n-
    181 template< typename AlbertaGridLevelProvider< dim >::Level flags >
    \n-
    182 struct AlbertaGridLevelProvider< dim >::ClearFlags
    \n-
    183 {
    \n-
    184 void operator() ( Level &dof ) const
    \n-
    185 {
    \n-
    186 dof &= ~flags;
    \n-
    187 }
    \n-
    188 };
    \n-
    189
    \n-
    190
    \n-
    191
    \n-
    192 // AlbertaGridLevelProvider::Interpolation
    \n-
    193 // ---------------------------------------
    \n-
    194
    \n-
    195 template< int dim >
    \n-
    \n-\n-
    197 {
    \n-
    198 static const int dimension = dim;
    \n-
    199
    \n-\n-
    201
    \n-
    \n-
    202 static void interpolateVector ( const DofVectorPointer &dofVector,
    \n-
    203 const Patch &patch )
    \n-
    204 {
    \n-
    205 const DofAccess dofAccess( dofVector.dofSpace() );
    \n-
    206 Level *array = (Level *)dofVector;
    \n-
    207
    \n-
    208 for( int i = 0; i < patch.count(); ++i )
    \n-
    209 {
    \n-
    210 const Alberta::Element *const father = patch[ i ];
    \n-
    211 assert( (array[ dofAccess( father, 0 ) ] & levelMask) < levelMask );
    \n-
    212 const Level childLevel = (array[ dofAccess( father, 0 ) ] + 1) | isNewFlag;
    \n-
    213 for( int i = 0; i < 2; ++i )
    \n-
    214 {
    \n-
    215 const Alberta::Element *child = father->child[ i ];
    \n-
    216 array[ dofAccess( child, 0 ) ] = childLevel;
    \n-
    217 }
    \n-
    218 }
    \n-
    219 }
    \n-
    \n-
    220 };
    \n-
    \n-
    221
    \n-
    222}
    \n-
    223
    \n-
    224#endif // #if HAVE_ALBERTA
    \n+
    17#ifdef DOXYGEN
    \n+
    18
    \n+
    206 // *****************************************************************************************
    \n+
    207 // Doxygen documentation
    \n+
    208 // *****************************************************************************************
    \n+
    209 //
    \n+
    210 // In the following, the range generating functions are documented for Doxygen; the actual
    \n+
    211 // implementations are further down in this file and hidden from Doxygen.
    \n+
    212 // The main reason for this split are the return types of those functions, which either contain
    \n+
    213 // long type listings to obtain the iterator type or (in the case of the forwarded functions
    \n+
    214 // use the new-style function syntax and calculate the return type using decltype. In both cases,
    \n+
    215 // Doxygen generates function signatures that are very confusing to the average user.
    \n+
    216 //
    \n+
    217 // *****************************************************************************************
    \n+
    218
    \n+
    219
    \n+
    220
    \n+
    224
    \n
    225
    \n-
    226#endif
    \n-
    provides a wrapper for ALBERTA's mesh structure
    \n-\n-\n+
    227
    \n+
    256 template<typename GV>
    \n+
    257 inline IteratorRange<...> elements(const GV& gv);
    \n+
    258
    \n+
    259
    \n+
    261
    \n+
    290 template<typename GV>
    \n+
    291 inline IteratorRange<...> facets(const GV& gv);
    \n+
    292
    \n+
    293
    \n+
    295
    \n+
    324 template<typename GV>
    \n+
    325 inline IteratorRange<...> edges(const GV& gv);
    \n+
    326
    \n+
    327
    \n+
    329
    \n+
    358 template<typename GV>
    \n+
    359 inline IteratorRange<...> vertices(const GV& gv);
    \n+
    360
    \n+
    361
    \n+
    363
    \n+
    364
    \n+
    365
    \n+
    369
    \n+
    371
    \n+
    394 template<typename GV, typename Entity>
    \n+
    395 inline IteratorRange<...> intersections(const GV& gv, const Entity& e);
    \n+
    396
    \n+
    397
    \n+
    399
    \n+
    400
    \n+
    401
    \n+
    405
    \n+
    406
    \n+
    408
    \n+
    434 template<typename Entity>
    \n+
    435 inline IteratorRange<...> descendantElements(const Entity& e, int maxLevel);
    \n+
    436 // Entity<int dim, class GridImp, template<int,int,class> class EntityImp>
    \n+
    437
    \n+
    439
    \n+
    440
    \n+
    441
    \n+
    445
    \n+
    446
    \n+
    448
    \n+
    486 template<typename GV, int codim>
    \n+
    487 inline IteratorRange<...> entities(const GV& gv, Codim<codim> cd);
    \n+
    488
    \n+
    489
    \n+
    491
    \n+
    531 template<typename GV, int dim>
    \n+
    532 inline IteratorRange<...> entities(const GV& gv, Dim<dim> d);
    \n+
    533
    \n+
    535
    \n+
    536
    \n+
    537
    \n+
    541
    \n+
    542
    \n+
    544
    \n+
    570 template<typename GV, unsigned int partitions>
    \n+\n+
    572
    \n+
    573
    \n+
    575
    \n+
    604 template<typename GV, unsigned int partitions>
    \n+\n+
    606
    \n+
    607
    \n+
    609
    \n+
    635 template<typename GV, unsigned int partitions>
    \n+\n+
    637
    \n+
    638
    \n+
    640
    \n+
    666 template<typename GV, unsigned int partitions>
    \n+\n+
    668
    \n+
    670
    \n+
    671
    \n+
    672
    \n+
    676
    \n+
    677
    \n+
    679
    \n+
    715 template<typename GV, int codim, unsigned int partitions>
    \n+\n+
    717
    \n+
    718
    \n+
    720
    \n+
    756 template<typename GV, int dim, unsigned int partitions>
    \n+\n+
    758
    \n+
    759
    \n+
    761
    \n+
    782 template<typename E, int codim>
    \n+
    783 inline IteratorRange<...> subEntities(const E& e, Codim<codim> c);
    \n+
    784
    \n+
    785
    \n+
    787
    \n+
    788
    \n+
    789#else // DOXYGEN
    \n+
    790
    \n+
    791 // ******************************************************************************************
    \n+
    792 // Implementations
    \n+
    793 // ******************************************************************************************
    \n+
    794
    \n+
    795
    \n+
    805 template<typename GV, int codim, unsigned int partitions>
    \n+
    806 inline auto entities(const GV& gv, Codim<codim>, PartitionSet<partitions>)
    \n+
    807 -> IteratorRange<decltype(gv.template begin<codim,derive_partition_iterator_type<partitions>::value>())>
    \n+
    808 {
    \n+
    809 static_assert(0 <= codim && codim <= GV::dimension, "invalid codimension for given GridView");
    \n+
    810 const PartitionIteratorType pit = derive_partition_iterator_type<partitions>::value;
    \n+
    811 typedef IteratorRange<decltype(gv.template begin<codim,pit>())> return_type;
    \n+
    812 return return_type(gv.template begin<codim,pit>(),gv.template end<codim,pit>());
    \n+
    813 }
    \n+
    814
    \n+
    822 template<typename GV, int codim>
    \n+
    823 inline auto entities(const GV& gv, Codim<codim>)
    \n+
    824 -> IteratorRange<decltype(gv.template begin<codim>())>
    \n+
    825 {
    \n+
    826 static_assert(0 <= codim && codim <= GV::dimension, "invalid codimension for given GridView");
    \n+
    827 typedef IteratorRange<decltype(gv.template begin<codim>())> return_type;
    \n+
    828 return return_type(gv.template begin<codim>(),gv.template end<codim>());
    \n+
    829 }
    \n+
    830
    \n+
    834 template<typename Entity>
    \n+
    835 inline IteratorRange<typename Entity::HierarchicIterator> descendantElements(const Entity& e, int maxLevel)
    \n+
    836 {
    \n+
    837 typedef IteratorRange<typename Entity::HierarchicIterator> return_type;
    \n+
    838 return return_type(e.hbegin(maxLevel),e.hend(maxLevel));
    \n+
    839 }
    \n+
    840
    \n+
    844 template<typename GV, typename Entity>
    \n+
    845 inline auto intersections(const GV& gv, const Entity& e)
    \n+
    846 -> IteratorRange<decltype(gv.ibegin(e))>
    \n+
    847 {
    \n+
    848 return IteratorRange<decltype(gv.ibegin(e))>(gv.ibegin(e),gv.iend(e));
    \n+
    849 }
    \n+
    850
    \n+
    851
    \n+
    857 template<typename GV, int dim, unsigned int partitions>
    \n+
    858 inline auto entities(const GV& gv, Dim<dim>, PartitionSet<partitions>)
    \n+
    859 -> decltype(entities(gv,Codim<GV::dimension - dim>(),PartitionSet<partitions>()))
    \n+
    860 {
    \n+
    861 static_assert(0 <= dim && dim <= GV::dimension, "invalid dimension for given GridView");
    \n+
    862 return entities(gv,Codim<GV::dimension - dim>(),PartitionSet<partitions>());
    \n+
    863 }
    \n+
    864
    \n+
    865 template<typename GV, int dim>
    \n+
    866 inline auto entities(const GV& gv, Dim<dim>)
    \n+
    867 -> decltype(entities(gv,Codim<GV::dimension - dim>()))
    \n+
    868 {
    \n+
    869 static_assert(0 <= dim && dim <= GV::dimension, "invalid dimension for given GridView");
    \n+
    870 return entities(gv,Codim<GV::dimension - dim>());
    \n+
    871 }
    \n+
    872
    \n+
    873 template<typename GV, unsigned int partitions>
    \n+
    874 inline auto elements(const GV& gv, PartitionSet<partitions>)
    \n+
    875 -> decltype(entities(gv,Codim<0>(),PartitionSet<partitions>()))
    \n+
    876 {
    \n+
    877 return entities(gv,Codim<0>(),PartitionSet<partitions>());
    \n+
    878 }
    \n+
    879
    \n+
    880 template<typename GV>
    \n+
    881 inline auto elements(const GV& gv)
    \n+
    882 -> decltype(entities(gv,Codim<0>()))
    \n+
    883 {
    \n+
    884 return entities(gv,Codim<0>());
    \n+
    885 }
    \n+
    886
    \n+
    887 template<typename GV, unsigned int partitions>
    \n+
    888 inline auto facets(const GV& gv, PartitionSet<partitions>)
    \n+
    889 -> decltype(entities(gv,Codim<1>(),PartitionSet<partitions>()))
    \n+
    890 {
    \n+
    891 return entities(gv,Codim<1>(),PartitionSet<partitions>());
    \n+
    892 }
    \n+
    893
    \n+
    894 template<typename GV>
    \n+
    895 inline auto facets(const GV& gv)
    \n+
    896 -> decltype(entities(gv,Codim<1>()))
    \n+
    897 {
    \n+
    898 return entities(gv,Codim<1>());
    \n+
    899 }
    \n+
    900
    \n+
    901 template<typename GV, unsigned int partitions>
    \n+
    902 inline auto edges(const GV& gv, PartitionSet<partitions>)
    \n+
    903 -> decltype(entities(gv,Dim<1>(),PartitionSet<partitions>()))
    \n+
    904 {
    \n+
    905 return entities(gv,Dim<1>(),PartitionSet<partitions>());
    \n+
    906 }
    \n+
    907
    \n+
    908 template<typename GV>
    \n+
    909 inline auto edges(const GV& gv)
    \n+
    910 -> decltype(entities(gv,Dim<1>()))
    \n+
    911 {
    \n+
    912 return entities(gv,Dim<1>());
    \n+
    913 }
    \n+
    914
    \n+
    915 template<typename GV, unsigned int partitions>
    \n+
    916 inline auto vertices(const GV& gv, PartitionSet<partitions>)
    \n+
    917 -> decltype(entities(gv,Dim<0>(),PartitionSet<partitions>()))
    \n+
    918 {
    \n+
    919 return entities(gv,Dim<0>(),PartitionSet<partitions>());
    \n+
    920 }
    \n+
    921
    \n+
    922 template<typename GV>
    \n+
    923 inline auto vertices(const GV& gv)
    \n+
    924 -> decltype(entities(gv,Dim<0>()))
    \n+
    925 {
    \n+
    926 return entities(gv,Dim<0>());
    \n+
    927 }
    \n+
    928
    \n+
    929 template<typename E, int codim>
    \n+
    930 inline auto subEntities(const E& e, Codim<codim> c)
    \n+
    931 {
    \n+
    932 static_assert(E::codimension <= codim,
    \n+
    933 "Can only iterate over sub-entities with equal or larger codimension");
    \n+
    934 return transformedRangeView(
    \n+
    935 range(static_cast<int>(e.subEntities(c))),
    \n+
    936 [&](const int i){ return e.template subEntity<codim>(i); }
    \n+
    937 );
    \n+
    938 }
    \n+
    939
    \n+
    940#endif // DOXYGEN
    \n+
    941
    \n+
    946} // namespace Dune
    \n+
    947
    \n+
    948#endif // DUNE_GRID_COMMON_RANGEGENERATORS_HH
    \n+\n+\n+
    PartitionIteratorType
    Parameter to be used for the parallel level- and leaf iterators.
    Definition gridenums.hh:136
    \n+
    IteratorRange<... > intersections(const GV &gv, const Entity &e)
    Iterates over all Intersections of an Entity with respect to the given GridView.
    \n+
    IteratorRange<... > vertices(const GV &gv)
    Iterates over all vertices (entities with dimension 0) of a GridView.
    \n+
    IteratorRange<... > elements(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all elements / cells (entities with codimension 0) of a GridView that belong to the giv...
    \n+
    IteratorRange<... > entities(const GV &gv, Codim< codim > cd, PartitionSet< partitions > ps)
    Iterates over all entities of a GridView with the given codimension that belong to the given Partitio...
    \n+
    IteratorRange<... > edges(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all edges (entities with dimension 1) of a GridView that belong to the given PartitionS...
    \n+
    IteratorRange<... > entities(const GV &gv, Dim< dim > d, PartitionSet< partitions > ps)
    Iterates over all entities of a GridView with the given dimension that belong to the given PartitionS...
    \n+
    IteratorRange<... > entities(const GV &gv, Dim< dim > d)
    Iterates over all entities of a GridView with the given dimension.
    \n+
    IteratorRange<... > subEntities(const E &e, Codim< codim > c)
    Iterates over all sub-entities of an entity given the codimension of the sub-entities.
    \n+
    IteratorRange<... > vertices(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all vertices (entities with dimension 0) of a GridView that belong to the given Partiti...
    \n+
    IteratorRange<... > elements(const GV &gv)
    Iterates over all elements / cells (entities with codimension 0) of a GridView.
    \n+
    IteratorRange<... > entities(const GV &gv, Codim< codim > cd)
    Iterates over all entities of a GridView with the given codimension.
    \n+
    IteratorRange<... > facets(const GV &gv, PartitionSet< partitions > ps)
    Iterates over all facets (entities with codimension 1) of a GridView that belong to the given Partiti...
    \n+
    IteratorRange<... > facets(const GV &gv)
    Iterates over all facets (entities with codimension 1) of a GridView.
    \n+
    IteratorRange<... > edges(const GV &gv)
    Iterates over all edges (entities with dimension 1) of a GridView.
    \n+
    IteratorRange<... > descendantElements(const Entity &e, int maxLevel)
    Iterates over all descendant elements of the given element up to a maximum level.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA EL Element
    Definition misc.hh:54
    \n-
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n-
    Definition meshpointer.hh:40
    \n-
    void leafTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:385
    \n-
    void hierarchicTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:370
    \n-\n-
    Definition dofadmin.hh:93
    \n-
    const DofSpace * dofSpace(int codim) const
    Definition dofadmin.hh:145
    \n-\n-
    void create(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:236
    \n-
    void release()
    Definition dofvector.hh:254
    \n-
    const DofSpace * dofSpace() const
    Definition dofvector.hh:223
    \n-
    void forEach(Functor &functor) const
    Definition dofvector.hh:264
    \n-
    Definition elementinfo.hh:43
    \n-
    int level() const
    Definition elementinfo.hh:533
    \n-
    Element * el() const
    Definition elementinfo.hh:737
    \n-
    Definition level.hh:25
    \n-
    bool isNew(const Alberta::Element *element) const
    Definition level.hh:62
    \n-
    bool isNew(const ElementInfo &elementInfo) const
    Definition level.hh:68
    \n-
    Alberta::MeshPointer< dim > MeshPointer
    Definition level.hh:48
    \n-
    MeshPointer mesh() const
    Definition level.hh:85
    \n-
    void create(const DofNumbering &dofNumbering)
    Definition level.hh:96
    \n-
    Level maxLevel() const
    Definition level.hh:73
    \n-
    Alberta::HierarchyDofNumbering< dim > DofNumbering
    Definition level.hh:49
    \n-
    void release()
    Definition level.hh:109
    \n-
    Level operator()(const Alberta::Element *element) const
    Definition level.hh:51
    \n-
    void markAllOld()
    Definition level.hh:90
    \n-
    Alberta::ElementInfo< dim > ElementInfo
    Definition level.hh:47
    \n-\n-
    SetLocal(const DofVectorPointer &level)
    Definition level.hh:132
    \n-\n-\n-
    Level maxLevel() const
    Definition level.hh:169
    \n-\n-
    Alberta::Patch< dimension > Patch
    Definition level.hh:200
    \n-
    static void interpolateVector(const DofVectorPointer &dofVector, const Patch &patch)
    Definition level.hh:202
    \n-
    Definition misc.hh:231
    \n-
    static const Flags nothing
    Definition misc.hh:234
    \n-
    Definition refinement.hh:40
    \n-
    int count() const
    Definition refinement.hh:67
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n+
    A set of PartitionType values.
    Definition partitionset.hh:138
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,355 +1,382 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-level.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+rangegenerators.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_LEVEL_HH\n-6#define DUNE_ALBERTA_LEVEL_HH\n+5#ifndef DUNE_GRID_COMMON_RANGEGENERATORS_HH\n+6#define DUNE_GRID_COMMON_RANGEGENERATORS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n-14\n-15#if HAVE_ALBERTA\n+8#include \n+9#include \n+10#include \n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n 16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-20 // AlbertaGridLevelProvider\n-21 // ------------------------\n-22\n-23 template< int dim >\n-_\b2_\b4 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-25 {\n-26 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n-27\n-28 typedef unsigned char Level;\n-29\n-30 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bL_\be_\bv_\be_\bl_\b _\b> _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-31 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b> _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs;\n-32\n-33 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\b _\b> _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs;\n-34\n-35 static const Level isNewFlag = (1 << 7);\n-36 static const Level levelMask = (1 << 7) - 1;\n-37\n-38 class _\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl;\n-39 class _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl;\n-40\n-41 template< Level flags >\n-42 struct ClearFlags;\n-43\n-44 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-45\n-46 public:\n-_\b4_\b7 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n-_\b4_\b8 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n-_\b4_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\b _\b> _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg;\n-50\n-_\b5_\b1 Level _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *element ) const\n-52 {\n-53 const Level *array = (Level *)level_;\n-54 return array[ dofAccess_( element, 0 ) ] & levelMask;\n-55 }\n-56\n-_\b5_\b7 Level _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const\n-58 {\n-59 return (*this)( elementInfo._\be_\bl() );\n-60 }\n-61\n-_\b6_\b2 bool _\bi_\bs_\bN_\be_\bw ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *element ) const\n-63 {\n-64 const Level *array = (Level *)level_;\n-65 return ((array[ dofAccess_( element, 0 ) ] & isNewFlag) != 0);\n-66 }\n-67\n-_\b6_\b8 bool _\bi_\bs_\bN_\be_\bw ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const\n-69 {\n-70 return _\bi_\bs_\bN_\be_\bw( elementInfo._\be_\bl() );\n-71 }\n-72\n-_\b7_\b3 Level _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl () const\n-74 {\n-75 _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl calcFromCache;\n-76 level_._\bf_\bo_\br_\bE_\ba_\bc_\bh( calcFromCache );\n-77#ifndef NDEBUG\n-78 _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl calcFromGrid;\n-79 _\bm_\be_\bs_\bh()._\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be( calcFromGrid, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n-80 assert( calcFromCache._\bm_\ba_\bx_\bL_\be_\bv_\be_\bl() == calcFromGrid._\bm_\ba_\bx_\bL_\be_\bv_\be_\bl() );\n-81#endif\n-82 return calcFromCache._\bm_\ba_\bx_\bL_\be_\bv_\be_\bl();;\n-83 }\n-84\n-_\b8_\b5 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br _\bm_\be_\bs_\bh () const\n-86 {\n-87 return _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br( level_._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->mesh );\n-88 }\n-89\n-_\b9_\b0 void _\bm_\ba_\br_\bk_\bA_\bl_\bl_\bO_\bl_\bd ()\n-91 {\n-92 ClearFlags< isNewFlag > clearIsNew;\n-93 level_._\bf_\bo_\br_\bE_\ba_\bc_\bh( clearIsNew );\n-94 }\n-95\n-_\b9_\b6 void _\bc_\br_\be_\ba_\bt_\be ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering )\n-97 {\n-98 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *const dofSpace = dofNumbering._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be( 0 );\n-99 dofAccess_ = _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs( dofSpace );\n-100\n-101 level_._\bc_\br_\be_\ba_\bt_\be( dofSpace, \"Element level\" );\n-102 assert( level_ );\n-103 level_.template setupInterpolation< Interpolation >();\n-104\n-105 _\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl setLocal( level_ );\n-106 _\bm_\be_\bs_\bh()._\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be( setLocal, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg );\n-107 }\n-108\n-_\b1_\b0_\b9 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n-110 {\n-111 level_._\br_\be_\bl_\be_\ba_\bs_\be();\n-112 dofAccess_ = _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs();\n-113 }\n-114\n-115 private:\n-116 DofVectorPointer level_;\n-117 DofAccess dofAccess_;\n-118 };\n-119\n-120\n-121\n-122 // AlbertaGridLevelProvider::SetLocal\n-123 // ----------------------------------\n-124\n-125 template< int dim >\n-_\b1_\b2_\b6 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n-127 {\n-128 _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br level_;\n-129 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess_;\n-130\n-131 public:\n-_\b1_\b3_\b2 explicit _\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &level )\n-133 : level_( level ),\n-134 dofAccess_( level.dofSpace() )\n-135 {}\n-136\n-_\b1_\b3_\b7 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &elementInfo ) const\n-138 {\n-139 Level *const array = (Level *)level_;\n-140 array[ dofAccess_( elementInfo, 0 ) ] = elementInfo._\bl_\be_\bv_\be_\bl();\n-141 }\n-142 };\n-143\n-144\n-145\n-146 // AlbertaGridLevelProvider::CalcMaxLevel\n-147 // --------------------------------------\n-148\n-149 template< int dim >\n-_\b1_\b5_\b0 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n-151 {\n-152 Level maxLevel_;\n-153\n-154 public:\n-_\b1_\b5_\b5 _\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl ()\n-156 : maxLevel_( 0 )\n-157 {}\n-158\n-_\b1_\b5_\b9 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const Level &dof )\n-160 {\n-161 maxLevel_ = std::max( maxLevel_, Level( dof & levelMask ) );\n-162 }\n-163\n-_\b1_\b6_\b4 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\b _\b> &elementInfo )\n-165 {\n-166 maxLevel_ = std::max( maxLevel_, Level( elementInfo._\bl_\be_\bv_\be_\bl() ) );\n-167 }\n-168\n-_\b1_\b6_\b9 Level _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl () const\n-170 {\n-171 return maxLevel_;\n-172 }\n-173 };\n-174\n-175\n-176\n-177 // AlbertaGridLevelProvider::ClearFlags\n-178 // ------------------------------------\n-179\n-180 template< int dim >\n-181 template< typename AlbertaGridLevelProvider< dim >::Level flags >\n-182 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::ClearFlags\n-183 {\n-184 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( Level &dof ) const\n-185 {\n-186 dof &= ~flags;\n-187 }\n-188 };\n-189\n-190\n-191\n-192 // AlbertaGridLevelProvider::Interpolation\n-193 // ---------------------------------------\n-194\n-195 template< int dim >\n-_\b1_\b9_\b6 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< dim >::_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-197 {\n-_\b1_\b9_\b8 static const int dimension = dim;\n-199\n-_\b2_\b0_\b0 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bP_\ba_\bt_\bc_\bh;\n-201\n-_\b2_\b0_\b2 static void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\be_\bc_\bt_\bo_\br ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &dofVector,\n-203 const _\bP_\ba_\bt_\bc_\bh &patch )\n-204 {\n-205 const _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be() );\n-206 Level *array = (Level *)dofVector;\n-207\n-208 for( int i = 0; i < patch._\bc_\bo_\bu_\bn_\bt(); ++i )\n-209 {\n-210 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *const father = patch[ i ];\n-211 assert( (array[ dofAccess( father, 0 ) ] & levelMask) < levelMask );\n-212 const Level childLevel = (array[ dofAccess( father, 0 ) ] + 1) | isNewFlag;\n-213 for( int i = 0; i < 2; ++i )\n-214 {\n-215 const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt *child = father->child[ i ];\n-216 array[ dofAccess( child, 0 ) ] = childLevel;\n-217 }\n-218 }\n-219 }\n-220 };\n-221\n-222}\n-223\n-224#endif // #if HAVE_ALBERTA\n+17#ifdef DOXYGEN\n+18\n+206 /\n+/\n+*****************************************************************************************\n+207 // Doxygen documentation\n+208 /\n+/\n+*****************************************************************************************\n+209 //\n+210 // In the following, the range generating functions are documented for\n+Doxygen; the actual\n+211 // implementations are further down in this file and hidden from Doxygen.\n+212 // The main reason for this split are the return types of those functions,\n+which either contain\n+213 // long type listings to obtain the iterator type or (in the case of the\n+forwarded functions\n+214 // use the new-style function syntax and calculate the return type using\n+decltype. In both cases,\n+215 // Doxygen generates function signatures that are very confusing to the\n+average user.\n+216 //\n+217 /\n+/\n+*****************************************************************************************\n+218\n+219\n+220\n+224\n 225\n-226#endif\n-_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n-provides a wrapper for ALBERTA's mesh structure\n-_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh\n-_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n+227\n+256 template\n+_\b2_\b5_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bl_\be_\bm_\be_\bn_\bt_\bs(const _\bG_\bV& gv);\n+258\n+259\n+261\n+290 template\n+_\b2_\b9_\b1 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bf_\ba_\bc_\be_\bt_\bs(const _\bG_\bV& gv);\n+292\n+293\n+295\n+324 template\n+_\b3_\b2_\b5 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bd_\bg_\be_\bs(const _\bG_\bV& gv);\n+326\n+327\n+329\n+358 template\n+_\b3_\b5_\b9 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bv_\be_\br_\bt_\bi_\bc_\be_\bs(const _\bG_\bV& gv);\n+360\n+361\n+363\n+364\n+365\n+369\n+371\n+394 template\n+_\b3_\b9_\b5 inline IteratorRange<...> _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs(const GV& gv, const _\bE_\bn_\bt_\bi_\bt_\by& e);\n+396\n+397\n+399\n+400\n+401\n+405\n+406\n+408\n+434 template\n+_\b4_\b3_\b5 inline IteratorRange<...> _\bd_\be_\bs_\bc_\be_\bn_\bd_\ba_\bn_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs(const _\bE_\bn_\bt_\bi_\bt_\by& e, int\n+maxLevel);\n+436 // Entity class EntityImp>\n+437\n+439\n+440\n+441\n+445\n+446\n+448\n+486 template\n+_\b4_\b8_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bo_\bd_\bi_\bm_\b> _\bc_\bd);\n+488\n+489\n+491\n+531 template\n+_\b5_\b3_\b2 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bD_\bi_\bm_\b<_\bd_\bi_\bm_\b> d);\n+533\n+535\n+536\n+537\n+541\n+542\n+544\n+570 template\n+_\b5_\b7_\b1 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bl_\be_\bm_\be_\bn_\bt_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>\n+_\bp_\bs);\n+572\n+573\n+575\n+604 template\n+_\b6_\b0_\b5 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bf_\ba_\bc_\be_\bt_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>\n+_\bp_\bs);\n+606\n+607\n+609\n+635 template\n+_\b6_\b3_\b6 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bd_\bg_\be_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b> _\bp_\bs);\n+637\n+638\n+640\n+666 template\n+_\b6_\b6_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\bv_\be_\br_\bt_\bi_\bc_\be_\bs(const _\bG_\bV& gv, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>\n+_\bp_\bs);\n+668\n+670\n+671\n+672\n+676\n+677\n+679\n+715 template\n+_\b7_\b1_\b6 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bC_\bo_\bd_\bi_\bm_\b<_\bc_\bo_\bd_\bi_\bm_\b> _\bc_\bd,\n+_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b> _\bp_\bs);\n+717\n+718\n+720\n+756 template\n+_\b7_\b5_\b7 inline _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bR_\ba_\bn_\bg_\be<...> _\be_\bn_\bt_\bi_\bt_\bi_\be_\bs(const _\bG_\bV& gv, _\bD_\bi_\bm_\b<_\bd_\bi_\bm_\b> d,\n+_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b> _\bp_\bs);\n+758\n+759\n+761\n+782 template\n+_\b7_\b8_\b3 inline IteratorRange<...> _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs(const E& e, Codim c);\n+784\n+785\n+787\n+788\n+789#else // DOXYGEN\n+790\n+791 /\n+/\n+******************************************************************************************\n+792 // Implementations\n+793 /\n+/\n+******************************************************************************************\n+794\n+795\n+805 template\n+806 inline auto entities(const GV& gv, Codim, _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt_\b<_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\b>)\n+807 -> IteratorRange::value>())>\n+808 {\n+809 static_assert(0 <= codim && codim <= GV::dimension, \"invalid codimension\n+for given GridView\");\n+810 const _\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be pit =\n+derive_partition_iterator_type::value;\n+811 typedef IteratorRange())>\n+return_type;\n+812 return return_type(gv.template begin(),gv.template\n+end());\n+813 }\n+814\n+822 template\n+823 inline auto entities(const GV& gv, Codim)\n+824 -> IteratorRange())>\n+825 {\n+826 static_assert(0 <= codim && codim <= GV::dimension, \"invalid codimension\n+for given GridView\");\n+827 typedef IteratorRange())> return_type;\n+828 return return_type(gv.template begin(),gv.template end());\n+829 }\n+830\n+834 template\n+835 inline IteratorRange\n+descendantElements(const Entity& e, int maxLevel)\n+836 {\n+837 typedef IteratorRange return_type;\n+838 return return_type(e.hbegin(maxLevel),e.hend(maxLevel));\n+839 }\n+840\n+844 template\n+845 inline auto intersections(const GV& gv, const Entity& e)\n+846 -> IteratorRange\n+847 {\n+848 return IteratorRange(gv.ibegin(e),gv.iend(e));\n+849 }\n+850\n+851\n+857 template\n+858 inline auto entities(const GV& gv, Dim, PartitionSet)\n+859 -> decltype(entities(gv,Codim\n+(),PartitionSet()))\n+860 {\n+861 static_assert(0 <= dim && dim <= GV::dimension, \"invalid dimension for\n+given GridView\");\n+862 return entities(gv,Codim(),PartitionSet\n+());\n+863 }\n+864\n+865 template\n+866 inline auto entities(const GV& gv, Dim)\n+867 -> decltype(entities(gv,Codim()))\n+868 {\n+869 static_assert(0 <= dim && dim <= GV::dimension, \"invalid dimension for\n+given GridView\");\n+870 return entities(gv,Codim());\n+871 }\n+872\n+873 template\n+874 inline auto elements(const GV& gv, PartitionSet)\n+875 -> decltype(entities(gv,Codim<0>(),PartitionSet()))\n+876 {\n+877 return entities(gv,Codim<0>(),PartitionSet());\n+878 }\n+879\n+880 template\n+881 inline auto elements(const GV& gv)\n+882 -> decltype(entities(gv,Codim<0>()))\n+883 {\n+884 return entities(gv,Codim<0>());\n+885 }\n+886\n+887 template\n+888 inline auto facets(const GV& gv, PartitionSet)\n+889 -> decltype(entities(gv,Codim<1>(),PartitionSet()))\n+890 {\n+891 return entities(gv,Codim<1>(),PartitionSet());\n+892 }\n+893\n+894 template\n+895 inline auto facets(const GV& gv)\n+896 -> decltype(entities(gv,Codim<1>()))\n+897 {\n+898 return entities(gv,Codim<1>());\n+899 }\n+900\n+901 template\n+902 inline auto edges(const GV& gv, PartitionSet)\n+903 -> decltype(entities(gv,Dim<1>(),PartitionSet()))\n+904 {\n+905 return entities(gv,Dim<1>(),PartitionSet());\n+906 }\n+907\n+908 template\n+909 inline auto edges(const GV& gv)\n+910 -> decltype(entities(gv,Dim<1>()))\n+911 {\n+912 return entities(gv,Dim<1>());\n+913 }\n+914\n+915 template\n+916 inline auto vertices(const GV& gv, PartitionSet)\n+917 -> decltype(entities(gv,Dim<0>(),PartitionSet()))\n+918 {\n+919 return entities(gv,Dim<0>(),PartitionSet());\n+920 }\n+921\n+922 template\n+923 inline auto vertices(const GV& gv)\n+924 -> decltype(entities(gv,Dim<0>()))\n+925 {\n+926 return entities(gv,Dim<0>());\n+927 }\n+928\n+929 template\n+930 inline auto subEntities(const E& e, Codim c)\n+931 {\n+932 static_assert(E::codimension <= codim,\n+933 \"Can only iterate over sub-entities with equal or larger codimension\");\n+934 return transformedRangeView(\n+935 range(static_cast(e.subEntities(c))),\n+936 [&](const int i){ return e.template subEntity(i); }\n+937 );\n+938 }\n+939\n+940#endif // DOXYGEN\n+941\n+946} // namespace Dune\n+947\n+948#endif // DUNE_GRID_COMMON_RANGEGENERATORS_HH\n+_\bg_\br_\bi_\bd_\be_\bn_\bu_\bm_\bs_\b._\bh_\bh\n+_\bp_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bs_\be_\bt_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bT_\by_\bp_\be\n+PartitionIteratorType\n+Parameter to be used for the parallel level- and leaf iterators.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bs\n+IteratorRange<... > intersections(const GV &gv, const Entity &e)\n+Iterates over all Intersections of an Entity with respect to the given\n+GridView.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n+IteratorRange<... > vertices(const GV &gv)\n+Iterates over all vertices (entities with dimension 0) of a GridView.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n+IteratorRange<... > elements(const GV &gv, PartitionSet< partitions > ps)\n+Iterates over all elements / cells (entities with codimension 0) of a GridView\n+that belong to the giv...\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+IteratorRange<... > entities(const GV &gv, Codim< codim > cd, PartitionSet<\n+partitions > ps)\n+Iterates over all entities of a GridView with the given codimension that belong\n+to the given Partitio...\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bd_\bg_\be_\bs\n+IteratorRange<... > edges(const GV &gv, PartitionSet< partitions > ps)\n+Iterates over all edges (entities with dimension 1) of a GridView that belong\n+to the given PartitionS...\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+IteratorRange<... > entities(const GV &gv, Dim< dim > d, PartitionSet<\n+partitions > ps)\n+Iterates over all entities of a GridView with the given dimension that belong\n+to the given PartitionS...\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+IteratorRange<... > entities(const GV &gv, Dim< dim > d)\n+Iterates over all entities of a GridView with the given dimension.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+IteratorRange<... > subEntities(const E &e, Codim< codim > c)\n+Iterates over all sub-entities of an entity given the codimension of the sub-\n+entities.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bv_\be_\br_\bt_\bi_\bc_\be_\bs\n+IteratorRange<... > vertices(const GV &gv, PartitionSet< partitions > ps)\n+Iterates over all vertices (entities with dimension 0) of a GridView that\n+belong to the given Partiti...\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n+IteratorRange<... > elements(const GV &gv)\n+Iterates over all elements / cells (entities with codimension 0) of a GridView.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+IteratorRange<... > entities(const GV &gv, Codim< codim > cd)\n+Iterates over all entities of a GridView with the given codimension.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bf_\ba_\bc_\be_\bt_\bs\n+IteratorRange<... > facets(const GV &gv, PartitionSet< partitions > ps)\n+Iterates over all facets (entities with codimension 1) of a GridView that\n+belong to the given Partiti...\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bf_\ba_\bc_\be_\bt_\bs\n+IteratorRange<... > facets(const GV &gv)\n+Iterates over all facets (entities with codimension 1) of a GridView.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\be_\bd_\bg_\be_\bs\n+IteratorRange<... > edges(const GV &gv)\n+Iterates over all edges (entities with dimension 1) of a GridView.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bd_\be_\bs_\bc_\be_\bn_\bd_\ba_\bn_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+IteratorRange<... > descendantElements(const Entity &e, int maxLevel)\n+Iterates over all descendant elements of the given element up to a maximum\n+level.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ALBERTA EL Element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-ALBERTA FE_SPACE DofSpace\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bl_\be_\ba_\bf_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void leafTraverse(Functor &functor, typename FillFlags::Flags\n-fillFlags=FillFlags::standard) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n-void hierarchicTraverse(Functor &functor, typename FillFlags::Flags\n-fillFlags=FillFlags::standard) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\b0_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * dofSpace(int codim) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bL_\be_\bv_\be_\bl_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create(const DofSpace *dofSpace, const std::string &name=\"\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n-const DofSpace * dofSpace() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh\n-void forEach(Functor &functor) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bl_\be_\bv_\be_\bl\n-int level() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:533\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n-Element * el() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bi_\bs_\bN_\be_\bw\n-bool isNew(const Alberta::Element *element) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bi_\bs_\bN_\be_\bw\n-bool isNew(const ElementInfo &elementInfo) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n-Alberta::MeshPointer< dim > MeshPointer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bm_\be_\bs_\bh\n-MeshPointer mesh() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create(const DofNumbering &dofNumbering)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n-Level maxLevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n-Alberta::HierarchyDofNumbering< dim > DofNumbering\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-Level operator()(const Alberta::Element *element) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bm_\ba_\br_\bk_\bA_\bl_\bl_\bO_\bl_\bd\n-void markAllOld()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n-Alberta::ElementInfo< dim > ElementInfo\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl_\b:_\b:_\bS_\be_\bt_\bL_\bo_\bc_\ba_\bl\n-SetLocal(const DofVectorPointer &level)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n-CalcMaxLevel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\ba_\bl_\bc_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n-Level maxLevel() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:169\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\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 level.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n-Alberta::Patch< dimension > Patch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:200\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\bv_\be_\bl_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\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_\bV_\be_\bc_\bt_\bo_\br\n-static void interpolateVector(const DofVectorPointer &dofVector, const Patch\n-&patch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn level.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg\n-static const Flags nothing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:234\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b:_\b:_\bc_\bo_\bu_\bn_\bt\n-int count() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+A struct that collects all associated types of one implementation from the\n+Traits class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\bS_\be_\bt\n+A set of PartitionType values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn partitionset.hh:138\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00674.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00572.html", "comments": ["Files 79% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: indexsets.cc File Reference\n+dune-grid: hostcorners.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,42 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    indexsets.cc File Reference
    \n+
    hostcorners.hh File Reference
    \n
    \n
    \n-
    #include <config.h>
    \n-#include <dune/grid/albertagrid/indexsets.hh>
    \n-#include <dune/grid/albertagrid/agrid.hh>
    \n-
    \n+
    #include <dune/geometry/type.hh>
    \n+#include <dune/grid/common/entity.hh>
    \n+
    \n+

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::GeoGrid::HostCorners< HostEntity >
     
    \n \n \n \n \n+\n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,18 +1,24 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-indexsets.cc File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bi_\bn_\bd_\be_\bx_\bs_\be_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bg_\br_\bi_\bd_\b._\bh_\bh>\n+ * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+hostcorners.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\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:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b<_\b _\bH_\bo_\bs_\bt_\bE_\bn_\bt_\bi_\bt_\by_\b _\b>\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n+\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00677_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00818_source.html", "comments": ["Files 80% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: transformation.hh Source File\n+dune-grid: volumewriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,136 @@\n \n \n \n \n \n \n \n
    \n-
    transformation.hh
    \n+
    volumewriter.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_TRANSFORMATION_HH
    \n-
    6#define DUNE_ALBERTA_TRANSFORMATION_HH
    \n-
    7
    \n-
    8#include <dune/common/fvector.hh>
    \n-
    9
    \n-\n-
    11
    \n-
    12#if HAVE_ALBERTA
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    \n-\n-
    18 {
    \n-\n-
    20
    \n-
    21 public:
    \n-\n-
    23
    \n-
    24 static const int dimension = Alberta::dimWorld;
    \n-
    25
    \n-
    26 typedef FieldVector< ctype, dimension > WorldVector;
    \n-
    27
    \n-
    28 explicit
    \n-
    \n-\n-
    30 : matrix_( (trafo != NULL ? trafo->M : GlobalSpace::identityMatrix()) ),
    \n-
    31 shift_( (trafo != NULL ? trafo->t : GlobalSpace::nullVector()) )
    \n-
    32 {}
    \n-
    \n-
    33
    \n-
    \n-\n-
    35 const GlobalSpace::Vector &shift )
    \n-
    36 : matrix_( matrix ),
    \n-
    37 shift_( shift )
    \n-
    38 {}
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH
    \n+
    8
    \n+
    9#include <memory>
    \n+
    10
    \n+\n+\n+\n+\n+
    15
    \n+
    16namespace Dune {
    \n+
    19
    \n+
    20 namespace VTK {
    \n+
    21
    \n+
    22 template<typename GV>
    \n+
    \n+\n+\n+
    25 public BasicWriter<ConformingVolumeIteratorFactory<GV> >
    \n+
    26 {
    \n+\n+\n+
    29
    \n+
    30 const GV& gv;
    \n+
    31
    \n+
    32 public:
    \n+\n+
    34 typedef std::shared_ptr<VTKFunction> VTKFunctionPtr;
    \n+
    35
    \n+
    \n+\n+
    37 : Factory(gv_), Base(static_cast<const Factory&>(*this)), gv(gv_)
    \n+
    38 { }
    \n
    \n
    39
    \n-
    \n-
    40 WorldVector evaluate ( const WorldVector &x ) const
    \n-
    41 {
    \n-\n-
    43 for( int i = 0; i < dimension; ++i )
    \n-
    44 {
    \n-
    45 const GlobalSpace::Vector &row = matrix_[ i ];
    \n-
    46 y[ i ] = shift_[ i ];
    \n-
    47 for( int j = 0; j < dimension; ++j )
    \n-
    48 y[ i ] += row[ j ] * x[ j ];
    \n+\n+
    41
    \n+
    \n+
    42 void addCellData(const VTKFunctionPtr& p) {
    \n+
    43 Base::addCellData(std::shared_ptr<typename Base::FunctionWriter>
    \n+\n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+\n+\n
    49 }
    \n-
    50 return y;
    \n-
    51 }
    \n
    \n-
    52
    \n-
    \n-\n-
    54 {
    \n-
    55 // Note: ALBERTA requires the matrix to be orthogonal
    \n-
    56 WorldVector x( ctype( 0 ) );
    \n-
    57 for( int i = 0; i < dimension; ++i )
    \n-
    58 {
    \n-
    59 const GlobalSpace::Vector &row = matrix_[ i ];
    \n-
    60 const ctype v = y[ i ] - shift_[ i ];
    \n-
    61 for( int j = 0; j < dimension; ++j )
    \n-
    62 x[ j ] += row[ j ] * v;
    \n+
    50
    \n+
    51 template<typename V>
    \n+
    \n+
    52 void addCellData(const V &v, const std::string &name, int ncomps=1) {
    \n+
    53 addCellData(new P0VTKFunction<GV, V>(gv, v, name, ncomps));
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+\n+
    57 addPointData(std::shared_ptr<typename Base::FunctionWriter>
    \n+\n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+\n+\n
    63 }
    \n-
    64 return x;
    \n-
    65 }
    \n
    \n-
    66
    \n-
    67 private:
    \n-
    68 const GlobalSpace::Matrix &matrix_;
    \n-
    69 const GlobalSpace::Vector &shift_;
    \n-
    70 };
    \n+
    64
    \n+
    65 template<typename V>
    \n+
    \n+
    66 void addVertexData(const V &v, const std::string &name, int ncomps=1) {
    \n+
    67 addVertexData(new P1VTKFunction<GV, V>(gv, v, name, ncomps));
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    70 };
    \n
    \n
    71
    \n-
    72}
    \n+
    72 } // namespace VTK
    \n
    73
    \n-
    74#endif // #if HAVE_ALBERTA
    \n
    75
    \n-
    76#endif // #ifndef DUNE_ALBERTA_TRANSFORMATION_HH
    \n-\n+
    76} // namespace Dune
    \n+
    77
    \n+
    78#endif // DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH
    \n+\n+\n+\n+
    Functions for VTK output.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    static const int dimWorld
    Definition misc.hh:46
    \n-
    Definition misc.hh:102
    \n-
    GlobalMatrix Matrix
    Definition misc.hh:106
    \n-
    GlobalVector Vector
    Definition misc.hh:107
    \n-
    Definition transformation.hh:18
    \n-
    AlbertaTransformation(const Alberta::AffineTransformation *trafo=NULL)
    Definition transformation.hh:29
    \n-
    static const int dimension
    Definition transformation.hh:24
    \n-
    FieldVector< ctype, dimension > WorldVector
    Definition transformation.hh:26
    \n-
    AlbertaTransformation(const GlobalSpace::Matrix &matrix, const GlobalSpace::Vector &shift)
    Definition transformation.hh:34
    \n-
    Alberta::Real ctype
    Definition transformation.hh:22
    \n-
    WorldVector evaluateInverse(const WorldVector &y) const
    Definition transformation.hh:53
    \n-
    WorldVector evaluate(const WorldVector &x) const
    Definition transformation.hh:40
    \n+
    Definition basicwriter.hh:35
    \n+
    void addCellData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:76
    \n+
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n+\n+
    Take a vector and interpret it as cell data for the VTKWriter.
    Definition function.hh:97
    \n+
    Take a vector and interpret it as point data for the VTKWriter.
    Definition function.hh:205
    \n+
    Base class for function writers.
    Definition functionwriter.hh:90
    \n+
    Definition volumeiterators.hh:23
    \n+
    Definition volumewriter.hh:26
    \n+
    std::shared_ptr< VTKFunction > VTKFunctionPtr
    Definition volumewriter.hh:34
    \n+
    void addCellData(const VTKFunctionPtr &p)
    Definition volumewriter.hh:42
    \n+
    void addVertexData(const VTKFunctionPtr &p)
    Definition volumewriter.hh:56
    \n+
    void addCellData(VTKFunction *p)
    Definition volumewriter.hh:47
    \n+
    void addVertexData(const V &v, const std::string &name, int ncomps=1)
    Definition volumewriter.hh:66
    \n+
    void addVertexData(VTKFunction *p)
    Definition volumewriter.hh:61
    \n+
    void addCellData(const V &v, const std::string &name, int ncomps=1)
    Definition volumewriter.hh:52
    \n+
    ConformingVolumeWriter(const GV &gv_)
    Definition volumewriter.hh:36
    \n+
    Dune::VTKFunction< GV > VTKFunction
    Definition volumewriter.hh:33
    \n+
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,133 +1,149 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-transformation.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n+volumewriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_TRANSFORMATION_HH\n-6#define DUNE_ALBERTA_TRANSFORMATION_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-11\n-12#if HAVE_ALBERTA\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-_\b1_\b7 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-18 {\n-19 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be;\n-20\n-21 public:\n-_\b2_\b2 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n-23\n-_\b2_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd;\n-25\n-_\b2_\b6 typedef FieldVector< ctype, dimension > _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br;\n-27\n-28 explicit\n-_\b2_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( const _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *trafo = NULL )\n-30 : matrix_( (trafo != NULL ? trafo->M : _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be::identityMatrix()) ),\n-31 shift_( (trafo != NULL ? trafo->t : _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be::nullVector()) )\n-32 {}\n-33\n-_\b3_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx &matrix,\n-35 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &shift )\n-36 : matrix_( matrix ),\n-37 shift_( shift )\n-38 {}\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH\n+8\n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bo_\bl_\bu_\bm_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be {\n+19\n+20 namespace VTK {\n+21\n+22 template\n+_\b2_\b3 class _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br\n+24 : public _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by,\n+25 public _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br >\n+26 {\n+27 typedef _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bG_\bV_\b> _\bF_\ba_\bc_\bt_\bo_\br_\by;\n+28 typedef _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b<_\bF_\ba_\bc_\bt_\bo_\br_\by_\b> _\bB_\ba_\bs_\be;\n+29\n+30 const GV& gv;\n+31\n+32 public:\n+_\b3_\b3 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b> _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn;\n+_\b3_\b4 typedef std::shared_ptr _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br;\n+35\n+_\b3_\b6 _\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br(const GV& gv_)\n+37 : _\bF_\ba_\bc_\bt_\bo_\br_\by(gv_), _\bB_\ba_\bs_\be(static_cast(*this)), gv(gv_)\n+38 { }\n 39\n-_\b4_\b0 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br &x ) const\n-41 {\n-42 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br y;\n-43 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-44 {\n-45 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &row = matrix_[ i ];\n-46 y[ i ] = shift_[ i ];\n-47 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n-48 y[ i ] += row[ j ] * x[ j ];\n+40 using _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba;\n+41\n+_\b4_\b2 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br& p) {\n+43 _\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(std::shared_ptr\n+44 (new _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b>(p)));\n+45 }\n+46\n+_\b4_\b7 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p) {\n+48 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br(p));\n 49 }\n-50 return y;\n-51 }\n-52\n-_\b5_\b3 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bI_\bn_\bv_\be_\br_\bs_\be ( const _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br &y ) const\n-54 {\n-55 // Note: ALBERTA requires the matrix to be orthogonal\n-56 _\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br x( _\bc_\bt_\by_\bp_\be( 0 ) );\n-57 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-58 {\n-59 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &row = matrix_[ i ];\n-60 const _\bc_\bt_\by_\bp_\be v = y[ i ] - shift_[ i ];\n-61 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n-62 x[ j ] += row[ j ] * v;\n+50\n+51 template\n+_\b5_\b2 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const V &v, const std::string &name, int ncomps=1) {\n+53 _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(new _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\bV_\b,_\b _\bV_\b>(gv, v, name, ncomps));\n+54 }\n+55\n+_\b5_\b6 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(const _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br& p) {\n+57 _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(std::shared_ptr\n+58 (new _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b<_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b>(p)));\n+59 }\n+60\n+_\b6_\b1 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn* p) {\n+62 _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br(p));\n 63 }\n-64 return x;\n-65 }\n-66\n-67 private:\n-68 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx &matrix_;\n-69 const _\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br &shift_;\n+64\n+65 template\n+_\b6_\b6 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(const V &v, const std::string &name, int ncomps=1) {\n+67 _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba(new _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\bG_\bV_\b,_\b _\bV_\b>(gv, v, name, ncomps));\n+68 }\n+69\n 70 };\n 71\n-72}\n+72 } // namespace VTK\n 73\n-74#endif // #if HAVE_ALBERTA\n 75\n-76#endif // #ifndef DUNE_ALBERTA_TRANSFORMATION_HH\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+76} // namespace Dune\n+77\n+78#endif // DUNE_GRID_IO_FILE_VTK_VOLUMEWRITER_HH\n+_\bv_\bo_\bl_\bu_\bm_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bb_\ba_\bs_\bi_\bc_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+Functions for VTK output.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-ALBERTA AFF_TRAFO AffineTransformation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-GlobalMatrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bS_\bp_\ba_\bc_\be_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br\n-GlobalVector Vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-AlbertaTransformation(const Alberta::AffineTransformation *trafo=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\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 transformation.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bW_\bo_\br_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< ctype, dimension > WorldVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-AlbertaTransformation(const GlobalSpace::Matrix &matrix, const GlobalSpace::\n-Vector &shift)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Alberta::Real ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bI_\bn_\bv_\be_\br_\bs_\be\n-WorldVector evaluateInverse(const WorldVector &y) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-WorldVector evaluate(const WorldVector &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transformation.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Take a vector and interpret it as cell data for the VTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Take a vector and interpret it as point data for the VTKWriter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+Base class for function writers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumeiterators.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bP_\bt_\br\n+std::shared_ptr< VTKFunction > VTKFunctionPtr\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const VTKFunctionPtr &p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const VTKFunctionPtr &p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(VTKFunction *p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(const V &v, const std::string &name, int ncomps=1)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n+void addVertexData(VTKFunction *p)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const V &v, const std::string &name, int ncomps=1)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br\n+ConformingVolumeWriter(const GV &gv_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Dune::VTKFunction< GV > VTKFunction\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn volumewriter.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg_\bV_\bo_\bl_\bu_\bm_\be_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00680_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00626_source.html", "comments": ["Files 73% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: geometry.cc Source File\n+dune-grid: coordcache.hh Source File\n \n \n \n \n \n \n \n@@ -74,344 +74,225 @@\n \n \n
    \n
    \n-
    geometry.cc
    \n+
    coordcache.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_GEOMETRY_CC
    \n-
    6#define DUNE_ALBERTA_GEOMETRY_CC
    \n+
    5#ifndef DUNE_ALBERTA_COORDCACHE_HH
    \n+
    6#define DUNE_ALBERTA_COORDCACHE_HH
    \n
    7
    \n-\n-\n-\n+\n+\n+\n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    15 // AlbertaGridGeometry
    \n-
    16 // -------------------
    \n-
    17
    \n-
    18 // print the GeometryInformation
    \n-
    19 template <int mydim, int cdim, class GridImp>
    \n-
    \n-
    20 inline void AlbertaGridGeometry<mydim,cdim,GridImp>::print (std::ostream& ss) const
    \n-
    21 {
    \n-
    22 ss << "AlbertaGridGeometry<" << mydim << "," << cdim << "> = { \\n";
    \n-
    23 for(int i=0; i<corners(); i++)
    \n-
    24 {
    \n-
    25 ss << " corner " << i << " = ";
    \n-
    26 ss << ((*this)[i]); ss << "\\n";
    \n-
    27 }
    \n-
    28 ss << "} \\n";
    \n-
    29 }
    \n-
    \n-
    30
    \n+
    12#if HAVE_ALBERTA
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    17 namespace Alberta
    \n+
    18 {
    \n+
    19
    \n+
    20 // CoordCache
    \n+
    21 // ----------
    \n+
    22
    \n+
    23 template< int dim >
    \n+
    \n+\n+
    25 {
    \n+\n+\n+
    28
    \n+
    29 class LocalCaching;
    \n+
    30 struct Interpolation;
    \n
    31
    \n-
    32 template< int mydim, int cdim, class GridImp >
    \n-\n-
    \n-\n-
    35 {
    \n-
    36 GlobalCoordinate y = corner( 0 );
    \n-
    37 jacobianTransposed().umtv( local, y );
    \n-
    38 return y;
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    41
    \n-
    42 //local implementation for mydim < cdim
    \n-
    43 template< int mydim, int cdim, class GridImp >
    \n-\n-
    \n-\n-
    46 {
    \n-\n-
    48 jacobianInverseTransposed().mtv( global - corner( 0 ), x );
    \n-
    49 return x;
    \n-
    50 }
    \n-
    \n-
    51
    \n-
    52
    \n-
    53 template< int mydim, int cdim, class GridImp >
    \n-\n-
    \n-\n-
    56 {
    \n-
    57 if( !builtJT_ )
    \n-
    58 {
    \n-
    59 const FieldVector< ctype, coorddimension > &origin = coord_[ 0 ];
    \n-
    60 for( int i = 0; i < mydimension; ++i )
    \n-
    61 {
    \n-
    62 jT_[ i ] = coord_[ i+1 ];
    \n-
    63 jT_[ i ] -= origin;
    \n-
    64 }
    \n-
    65 builtJT_ = true;
    \n-
    66 }
    \n-
    67 return jT_;
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    70
    \n-
    71 template< int mydim, int cdim, class GridImp >
    \n-\n-
    \n-\n-
    74 {
    \n-
    75 if( !builtJTInv_ )
    \n-
    76 {
    \n-
    77 elDet_ = std::abs( Alberta::invert( jacobianTransposed(), jTInv_ ) );
    \n-
    78 assert( elDet_ > 1.0e-25 );
    \n-
    79 calcedDet_ = true;
    \n-
    80 builtJTInv_ = true;
    \n-
    81 }
    \n-
    82 return jTInv_;
    \n-
    83 }
    \n-
    \n+
    32 public:
    \n+
    33 static const int dimension = dim;
    \n+
    34
    \n+\n+\n+\n+
    38
    \n+
    \n+
    39 GlobalVector &operator() ( const Element *element, int vertex ) const
    \n+
    40 {
    \n+
    41 assert( !(!coords_) );
    \n+
    42 GlobalVector *array = (GlobalVector *)coords_;
    \n+
    43 return array[ dofAccess_( element, vertex ) ];
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    46 GlobalVector &operator() ( const ElementInfo &elementInfo, int vertex ) const
    \n+
    47 {
    \n+
    48 return (*this)( elementInfo.el(), vertex );
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    51 void create ( const DofNumbering &dofNumbering )
    \n+
    52 {
    \n+
    53 MeshPointer mesh = dofNumbering.mesh();
    \n+
    54 const DofSpace *dofSpace = dofNumbering.dofSpace( dimension );
    \n+
    55
    \n+
    56 coords_.create( dofSpace, "Coordinate Cache" );
    \n+
    57 LocalCaching localCaching( coords_ );
    \n+\n+
    59 coords_.template setupInterpolation< Interpolation >();
    \n+
    60
    \n+
    61 dofAccess_ = DofAccess( dofSpace );
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    64 void release ()
    \n+
    65 {
    \n+
    66 coords_.release();
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    69 private:
    \n+
    70 CoordVectorPointer coords_;
    \n+
    71 DofAccess dofAccess_;
    \n+
    72 };
    \n+
    \n+
    73
    \n+
    74
    \n+
    75
    \n+
    76 // CoordCache::LocalCaching
    \n+
    77 // ------------------------
    \n+
    78
    \n+
    79 template< int dim >
    \n+
    \n+\n+
    81 {
    \n+
    82 CoordVectorPointer coords_;
    \n+
    83 DofAccess dofAccess_;
    \n
    84
    \n-
    85
    \n-
    86 // built Geometry
    \n-
    87 template< int mydim, int cdim, class GridImp >
    \n-
    88 template< class CoordReader >
    \n-\n-
    \n-
    90 ::build ( const CoordReader &coordReader )
    \n-
    91 {
    \n-
    92 builtJT_ = false;
    \n-
    93 builtJTInv_ = false;
    \n-
    94
    \n-
    95 // copy corners
    \n-
    96 for( int i = 0; i < numCorners; ++i )
    \n-
    97 coordReader.coordinate( i, coord_[ i ] );
    \n-
    98
    \n-
    99 // calculate centroid
    \n-
    100 centroid_ = coord_[ 0 ];
    \n-
    101 for( int i = 1; i < numCorners; ++i )
    \n-
    102 centroid_ += coord_[ i ];
    \n-
    103 centroid_ *= 1.0 / numCorners;
    \n+
    85 public:
    \n+
    \n+
    86 explicit LocalCaching ( const CoordVectorPointer &coords )
    \n+
    87 : coords_( coords ),
    \n+
    88 dofAccess_( coords.dofSpace() )
    \n+
    89 {}
    \n+
    \n+
    90
    \n+
    \n+
    91 void operator() ( const ElementInfo &elementInfo ) const
    \n+
    92 {
    \n+
    93 GlobalVector *array = (GlobalVector *)coords_;
    \n+
    94 for( int i = 0; i < DofAccess::numSubEntities; ++i )
    \n+
    95 {
    \n+
    96 const GlobalVector &x = elementInfo.coordinate( i );
    \n+
    97 GlobalVector &y = array[ dofAccess_( elementInfo.el(), i ) ];
    \n+
    98 for( int i = 0; i < dimWorld; ++i )
    \n+
    99 y[ i ] = x[ i ];
    \n+
    100 }
    \n+
    101 }
    \n+
    \n+
    102 };
    \n+
    \n+
    103
    \n
    104
    \n-
    105 elDet_ = (coordReader.hasDeterminant() ? coordReader.determinant() : elDeterminant());
    \n-
    106 assert( std::abs( elDet_ ) > 0.0 );
    \n-
    107 calcedDet_ = true;
    \n-
    108 }
    \n-
    \n-
    109
    \n-
    110
    \n-
    111#if !DUNE_ALBERTA_CACHE_COORDINATES
    \n-
    112 template< int dim, int cdim >
    \n-\n-
    114 AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::global ( const LocalCoordinate &local ) const
    \n-
    115 {
    \n-
    116 GlobalCoordinate y = corner( 0 );
    \n-
    117 jacobianTransposed().umtv( local, y );
    \n-
    118 return y;
    \n-
    119 }
    \n-
    120
    \n+
    105
    \n+
    106 // CoordCache::Interpolation
    \n+
    107 // -------------------------
    \n+
    108
    \n+
    109 template< int dim >
    \n+
    \n+\n+
    111 {
    \n+
    112 static const int dimension = dim;
    \n+
    113
    \n+\n+
    115
    \n+
    116 static void
    \n+
    \n+
    117 interpolateVector ( const CoordVectorPointer &dofVector, const Patch &patch )
    \n+
    118 {
    \n+
    119 DofAccess dofAccess( dofVector.dofSpace() );
    \n+
    120 GlobalVector *array = (GlobalVector *)dofVector;
    \n
    121
    \n-
    122 //local implementation for mydim < cdim
    \n-
    123 template< int dim, int cdim >
    \n-
    124 inline typename AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::LocalCoordinate
    \n-
    125 AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::local ( const GlobalCoordinate &global ) const
    \n-
    126 {
    \n-
    127 LocalCoordinate x;
    \n-
    128 jacobianInverseTransposed().mtv( global - corner( 0 ), x );
    \n-
    129 return x;
    \n-
    130 }
    \n-
    131#endif // #if !DUNE_ALBERTA_CACHE_COORDINATES
    \n-
    132
    \n-
    133
    \n-
    134
    \n-
    135 // AlbertaGridLocalGeometryProvider
    \n-
    136 // --------------------------------
    \n-
    137
    \n-
    138 template< class Grid >
    \n-
    139 void AlbertaGridLocalGeometryProvider< Grid >::buildGeometryInFather ()
    \n-
    140 {
    \n-
    141 for( int child = 0; child < numChildren; ++child )
    \n-
    142 {
    \n-
    143 for( int orientation = 0; orientation < 2; ++orientation )
    \n-
    144 {
    \n-
    145 const GeoInFatherCoordReader coordReader( child, orientation );
    \n-
    146 geometryInFather_[ child ][ orientation ] = new LocalElementGeometry( coordReader );
    \n-
    147 }
    \n-
    148 }
    \n-
    149 }
    \n+
    122 const Element *element = patch[ 0 ];
    \n+
    123
    \n+
    124 // new vertex is always the last one
    \n+
    125 assert( element->child[ 0 ] != NULL );
    \n+
    126 GlobalVector &newCoord = array[ dofAccess( element->child[ 0 ], dimension ) ];
    \n+
    127
    \n+
    128 if( element->new_coord != NULL )
    \n+
    129 {
    \n+
    130 for( int j = 0; j < dimWorld; ++j )
    \n+
    131 newCoord[ j ] = element->new_coord[ j ];
    \n+
    132 }
    \n+
    133 else
    \n+
    134 {
    \n+
    135 // new coordinate is the average of of old ones on the same edge
    \n+
    136 // refinement edge is always between vertices 0 and 1
    \n+
    137 const GlobalVector &coord0 = array[ dofAccess( element, 0 ) ];
    \n+
    138 const GlobalVector &coord1 = array[ dofAccess( element, 1 ) ];
    \n+
    139 for( int j = 0; j < dimWorld; ++j )
    \n+
    140 newCoord[ j ] = 0.5 * (coord0[ j ] + coord1[ j ]);
    \n+
    141 }
    \n+
    142 }
    \n+
    \n+
    143 };
    \n+
    \n+
    144
    \n+
    145 }
    \n+
    146
    \n+
    147}
    \n+
    148
    \n+
    149#endif // #if HAVE_ALBERTA
    \n
    150
    \n-
    151
    \n-
    152 template< class Grid >
    \n-
    153 void AlbertaGridLocalGeometryProvider< Grid >::buildFaceGeometry ()
    \n-
    154 {
    \n-
    155 for( int face = 0; face < numFaces; ++face )
    \n-
    156 {
    \n-
    157 for( int twist = minFaceTwist; twist <= maxFaceTwist; ++twist )
    \n-
    158 {
    \n-
    159 const FaceCoordReader coordReader( face, twist );
    \n-
    160 faceGeometry_[ face ][ twist - minFaceTwist ] = new LocalFaceGeometry( coordReader );
    \n-
    161 }
    \n-
    162 }
    \n-
    163 }
    \n-
    164
    \n-
    165
    \n-
    166
    \n-
    167 // AlbertaGridLocalGeometryProvider::GeoInFatherCoordReader
    \n-
    168 // --------------------------------------------------------
    \n-
    169
    \n-
    170 template< class Grid >
    \n-
    \n-\n-
    172 {
    \n-\n-
    174
    \n-\n-
    176
    \n-
    177 private:
    \n-\n-
    179
    \n-
    180 public:
    \n-
    \n-
    181 GeoInFatherCoordReader ( int child, int orientation )
    \n-
    182 : child_( child ),
    \n-
    183 orientation_( orientation )
    \n-
    184 {}
    \n-
    \n-
    185
    \n-
    \n-
    186 void coordinate ( int i, Coordinate &x ) const
    \n-
    187 {
    \n-
    188 const typename GeoInFather::LocalVector &coord
    \n-
    189 = GeoInFather::coordinate( child_, orientation_, i );
    \n-
    190 for( int j = 0; j < dimension; ++j )
    \n-
    191 x[ j ] = coord[ j ];
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    \n-
    194 bool hasDeterminant () const
    \n-
    195 {
    \n-
    196 return false;
    \n-
    197 }
    \n-
    \n-
    198
    \n-
    \n-\n-
    200 {
    \n-
    201 return ctype( 0 );
    \n-
    202 }
    \n-
    \n-
    203
    \n-
    204 private:
    \n-
    205 const int child_;
    \n-
    206 const int orientation_;
    \n-
    207 };
    \n-
    \n-
    208
    \n-
    209
    \n-
    210
    \n-
    211 // AlbertaGridLocalGeometryProvider::FaceCoordReader
    \n-
    212 // -------------------------------------------------
    \n-
    213
    \n-
    214 template< class Grid >
    \n-
    \n-\n-
    216 {
    \n-\n-
    218
    \n-\n-
    220
    \n-
    \n-
    221 FaceCoordReader ( const int face, const int twist = 0 )
    \n-
    222 : face_( face ),
    \n-
    223 twist_( twist )
    \n-
    224 {}
    \n-
    \n-
    225
    \n-
    \n-
    226 void coordinate ( const int i, Coordinate &x ) const
    \n-
    227 {
    \n-
    228 const int ti = Alberta::applyInverseTwist< dimension-1 >( twist_, i );
    \n-
    229 const int j = mapVertices< 1 >( face_, ti );
    \n-
    230 refCorner( j, x );
    \n-
    231 }
    \n-
    \n-
    232
    \n-
    \n-
    233 bool hasDeterminant () const
    \n-
    234 {
    \n-
    235 return false;
    \n-
    236 }
    \n-
    \n-
    237
    \n-
    \n-\n-
    239 {
    \n-
    240 return ctype( 0 );
    \n-
    241 }
    \n-
    \n-
    242
    \n-
    243 private:
    \n-
    244 static void refCorner ( const int i, Coordinate &x )
    \n-
    245 {
    \n-
    246 x = ctype( 0 );
    \n-
    247 if( i > 0 )
    \n-
    248 x[ i-1 ] = ctype( 1 );
    \n-
    249 }
    \n-
    250
    \n-
    251 int face_;
    \n-
    252 int twist_;
    \n-
    253 };
    \n-
    \n-
    254
    \n-
    255} // namespace Dune
    \n-
    256
    \n-
    257#endif // #ifndef DUNE_ALBERTA_GEOMETRY_CC
    \n-
    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
    \n-\n+
    151#endif // #ifndef DUNE_ALBERTA_COORDCACHE_HH
    \n+
    provides a wrapper for ALBERTA's mesh structure
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    int applyInverseTwist(int twist, int i)
    Definition misc.hh:637
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
    Definition algebra.hh:81
    \n-\n-
    FieldVector< ctype, dimension > Coordinate
    Definition geometry.cc:175
    \n-\n-
    void coordinate(int i, Coordinate &x) const
    Definition geometry.cc:186
    \n-
    GeoInFatherCoordReader(int child, int orientation)
    Definition geometry.cc:181
    \n-
    bool hasDeterminant() const
    Definition geometry.cc:194
    \n-
    ctype determinant() const
    Definition geometry.cc:199
    \n-\n-
    FaceCoordReader(const int face, const int twist=0)
    Definition geometry.cc:221
    \n-
    void coordinate(const int i, Coordinate &x) const
    Definition geometry.cc:226
    \n-
    ctype determinant() const
    Definition geometry.cc:238
    \n-
    FieldVector< ctype, dimension > Coordinate
    Definition geometry.cc:219
    \n-
    bool hasDeterminant() const
    Definition geometry.cc:233
    \n-
    Alberta::Real ctype
    Definition geometry.cc:217
    \n-
    geometry implementation for AlbertaGrid
    Definition albertagrid/geometry.hh:108
    \n-
    const JacobianTransposed & jacobianTransposed() const
    transposed of the geometry mapping's Jacobian
    Definition geometry.cc:55
    \n-
    LocalCoordinate local(const GlobalCoordinate &global) const
    map a point from the geometry to the reference element
    Definition geometry.cc:45
    \n-
    const JacobianInverseTransposed & jacobianInverseTransposed() const
    transposed inverse of the geometry mapping's Jacobian
    Definition geometry.cc:73
    \n-
    FieldVector< ctype, mydimension > LocalCoordinate
    Definition albertagrid/geometry.hh:126
    \n-
    FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed
    Definition albertagrid/geometry.hh:130
    \n-
    void print(std::ostream &out) const
    Definition geometry.cc:20
    \n-
    GlobalCoordinate global(const LocalCoordinate &local) const
    map a point from the reference element to the geometry
    Definition geometry.cc:34
    \n-
    FieldVector< ctype, coorddimension > GlobalCoordinate
    Definition albertagrid/geometry.hh:127
    \n-
    FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
    Definition albertagrid/geometry.hh:129
    \n-
    Definition albertagrid/geometry.hh:303
    \n-
    Definition albertagrid/geometry.hh:504
    \n-
    static constexpr int dimension
    Definition albertagrid/geometry.hh:510
    \n-
    Grid::ctype ctype
    Definition albertagrid/geometry.hh:508
    \n-
    Definition albertagrid/geometry.hh:514
    \n-
    Definition refinement.hh:292
    \n-
    Grid abstract base class.
    Definition common/grid.hh:375
    \n-\n+
    ALBERTA EL Element
    Definition misc.hh:54
    \n+
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n+
    static const int dimWorld
    Definition misc.hh:46
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n+
    Definition coordcache.hh:25
    \n+
    static const int dimension
    Definition coordcache.hh:33
    \n+
    GlobalVector & operator()(const Element *element, int vertex) const
    Definition coordcache.hh:39
    \n+
    Alberta::MeshPointer< dimension > MeshPointer
    Definition coordcache.hh:36
    \n+
    void release()
    Definition coordcache.hh:64
    \n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition coordcache.hh:35
    \n+
    HierarchyDofNumbering< dimension > DofNumbering
    Definition coordcache.hh:37
    \n+
    void create(const DofNumbering &dofNumbering)
    Definition coordcache.hh:51
    \n+
    Definition coordcache.hh:81
    \n+
    LocalCaching(const CoordVectorPointer &coords)
    Definition coordcache.hh:86
    \n+
    Definition coordcache.hh:111
    \n+
    Alberta::Patch< dimension > Patch
    Definition coordcache.hh:114
    \n+
    static void interpolateVector(const CoordVectorPointer &dofVector, const Patch &patch)
    Definition coordcache.hh:117
    \n+\n+
    void hierarchicTraverse(Functor &functor, typename FillFlags::Flags fillFlags=FillFlags::standard) const
    Definition meshpointer.hh:370
    \n+\n+
    static const int numSubEntities
    Definition dofadmin.hh:40
    \n+\n+
    const MeshPointer & mesh() const
    Definition dofadmin.hh:158
    \n+
    const DofSpace * dofSpace(int codim) const
    Definition dofadmin.hh:145
    \n+\n+
    void create(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:236
    \n+
    void release()
    Definition dofvector.hh:254
    \n+
    const DofSpace * dofSpace() const
    Definition dofvector.hh:223
    \n+\n+
    const GlobalVector & coordinate(int vertex) const
    Definition elementinfo.hh:685
    \n+
    Element * el() const
    Definition elementinfo.hh:737
    \n+
    Definition misc.hh:231
    \n+
    Definition refinement.hh:40
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,393 +1,259 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-geometry.cc\n+coordcache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_GEOMETRY_CC\n-_\b6#define DUNE_ALBERTA_GEOMETRY_CC\n+5#ifndef DUNE_ALBERTA_COORDCACHE_HH\n+6#define DUNE_ALBERTA_COORDCACHE_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n 11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-15 // AlbertaGridGeometry\n-16 // -------------------\n-17\n-18 // print the GeometryInformation\n-19 template \n-_\b2_\b0 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\bm_\by_\bd_\bi_\bm_\b,_\bc_\bd_\bi_\bm_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b>_\b:_\b:_\bp_\br_\bi_\bn_\bt (std::ostream&\n-ss) const\n-21 {\n-22 ss << \"AlbertaGridGeometry<\" << mydim << \",\" << cdim << \"> = { \\n\";\n-23 for(int i=0; i\n+_\b2_\b4 class _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n+25 {\n+26 typedef _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b> _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+27 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b> _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs;\n+28\n+29 class _\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg;\n+30 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n 31\n-32 template< int mydim, int cdim, class GridImp >\n-33 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-_\b3_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-&local ) const\n-35 {\n-36 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be y = corner( 0 );\n-37 jacobianTransposed().umtv( local, y );\n-38 return y;\n-39 }\n-40\n-41\n-42 //local implementation for mydim < cdim\n-43 template< int mydim, int cdim, class GridImp >\n-44 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-_\b4_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-&global ) const\n-46 {\n-47 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be x;\n-48 jacobianInverseTransposed().mtv( global - corner( 0 ), x );\n-49 return x;\n-50 }\n-51\n-52\n-53 template< int mydim, int cdim, class GridImp >\n-54 inline const typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &\n-_\b5_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd () const\n-56 {\n-57 if( !builtJT_ )\n-58 {\n-59 const FieldVector< ctype, coorddimension > &origin = coord_[ 0 ];\n-60 for( int i = 0; i < mydimension; ++i )\n-61 {\n-62 jT_[ i ] = coord_[ i+1 ];\n-63 jT_[ i ] -= origin;\n-64 }\n-65 builtJT_ = true;\n-66 }\n-67 return jT_;\n-68 }\n-69\n-70\n-71 template< int mydim, int cdim, class GridImp >\n-72 inline const typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n-_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd &\n-_\b7_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ()\n+32 public:\n+_\b3_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+34\n+_\b3_\b5 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+_\b3_\b6 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+_\b3_\b7 typedef _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg;\n+38\n+_\b3_\b9 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt *element, int vertex ) const\n+40 {\n+41 assert( !(!coords_) );\n+42 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *array = (_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *)coords_;\n+43 return array[ dofAccess_( element, vertex ) ];\n+44 }\n+45\n+_\b4_\b6 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int vertex )\n const\n-74 {\n-75 if( !builtJTInv_ )\n-76 {\n-77 elDet_ = std::abs( _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt( jacobianTransposed(), jTInv_ ) );\n-78 assert( elDet_ > 1.0e-25 );\n-79 calcedDet_ = true;\n-80 builtJTInv_ = true;\n-81 }\n-82 return jTInv_;\n-83 }\n+47 {\n+48 return (*this)( elementInfo._\be_\bl(), vertex );\n+49 }\n+50\n+_\b5_\b1 void _\bc_\br_\be_\ba_\bt_\be ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering )\n+52 {\n+53 _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br mesh = dofNumbering._\bm_\be_\bs_\bh();\n+54 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace = dofNumbering._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be( _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+55\n+56 coords_._\bc_\br_\be_\ba_\bt_\be( dofSpace, \"Coordinate Cache\" );\n+57 _\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg localCaching( coords_ );\n+58 mesh._\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be( localCaching, _\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bs );\n+59 coords_.template setupInterpolation< Interpolation >();\n+60\n+61 dofAccess_ = _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs( dofSpace );\n+62 }\n+63\n+_\b6_\b4 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n+65 {\n+66 coords_._\br_\be_\bl_\be_\ba_\bs_\be();\n+67 }\n+68\n+69 private:\n+70 CoordVectorPointer coords_;\n+71 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess_;\n+72 };\n+73\n+74\n+75\n+76 // CoordCache::LocalCaching\n+77 // ------------------------\n+78\n+79 template< int dim >\n+_\b8_\b0 class _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be< dim >::_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n+81 {\n+82 _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br coords_;\n+83 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess_;\n 84\n-85\n-86 // built Geometry\n-87 template< int mydim, int cdim, class GridImp >\n-88 template< class CoordReader >\n-89 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n-_\b9_\b0_\b _\b:_\b:_\bb_\bu_\bi_\bl_\bd ( const CoordReader &coordReader )\n-91 {\n-92 builtJT_ = false;\n-93 builtJTInv_ = false;\n-94\n-95 // copy corners\n-96 for( int i = 0; i < numCorners; ++i )\n-97 coordReader.coordinate( i, coord_[ i ] );\n-98\n-99 // calculate centroid\n-100 centroid_ = coord_[ 0 ];\n-101 for( int i = 1; i < numCorners; ++i )\n-102 centroid_ += coord_[ i ];\n-103 centroid_ *= 1.0 / numCorners;\n+85 public:\n+_\b8_\b6 explicit _\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg ( const _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &coords )\n+87 : coords_( coords ),\n+88 dofAccess_( coords.dofSpace() )\n+89 {}\n+90\n+_\b9_\b1 void _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const\n+92 {\n+93 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *array = (_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *)coords_;\n+94 for( int i = 0; i < _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs; ++i )\n+95 {\n+96 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &x = elementInfo._\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be( i );\n+97 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &y = array[ dofAccess_( elementInfo._\be_\bl(), i ) ];\n+98 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n+99 y[ i ] = x[ i ];\n+100 }\n+101 }\n+102 };\n+103\n 104\n-105 elDet_ = (coordReader.hasDeterminant() ? coordReader.determinant() :\n-elDeterminant());\n-106 assert( std::abs( elDet_ ) > 0.0 );\n-107 calcedDet_ = true;\n-108 }\n-109\n-110\n-111#if !DUNE_ALBERTA_CACHE_COORDINATES\n-112 template< int dim, int cdim >\n-113 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<\n-_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> >::GlobalCoordinate\n-114 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> >::\n-global ( const LocalCoordinate &local ) const\n-115 {\n-116 GlobalCoordinate y = corner( 0 );\n-117 jacobianTransposed().umtv( local, y );\n-118 return y;\n-119 }\n-120\n+105\n+106 // CoordCache::Interpolation\n+107 // -------------------------\n+108\n+109 template< int dim >\n+_\b1_\b1_\b0 struct _\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be< dim >::_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+111 {\n+_\b1_\b1_\b2 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+113\n+_\b1_\b1_\b4 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bP_\ba_\bt_\bc_\bh;\n+115\n+116 static void\n+_\b1_\b1_\b7 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\be_\bc_\bt_\bo_\br ( const _\bC_\bo_\bo_\br_\bd_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br &dofVector, const _\bP_\ba_\bt_\bc_\bh &patch\n+)\n+118 {\n+119 _\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs dofAccess( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be() );\n+120 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *array = (_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br *)dofVector;\n 121\n-122 //local implementation for mydim < cdim\n-123 template< int dim, int cdim >\n-124 inline typename AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid<\n-dim, cdim > >::LocalCoordinate\n-125 AlbertaGridGlobalGeometry< dim, cdim, const AlbertaGrid< dim, cdim > >::\n-local ( const GlobalCoordinate &global ) const\n-126 {\n-127 LocalCoordinate x;\n-128 jacobianInverseTransposed().mtv( global - corner( 0 ), x );\n-129 return x;\n-130 }\n-131#endif // #if !DUNE_ALBERTA_CACHE_COORDINATES\n-132\n-133\n-134\n-135 // AlbertaGridLocalGeometryProvider\n-136 // --------------------------------\n-137\n-138 template< class Grid >\n-139 void AlbertaGridLocalGeometryProvider< Grid >::buildGeometryInFather ()\n-140 {\n-141 for( int child = 0; child < numChildren; ++child )\n-142 {\n-143 for( int orientation = 0; orientation < 2; ++orientation )\n-144 {\n-145 const GeoInFatherCoordReader coordReader( child, orientation );\n-146 geometryInFather_[ child ][ orientation ] = new LocalElementGeometry\n-( coordReader );\n-147 }\n-148 }\n-149 }\n+122 const _\bE_\bl_\be_\bm_\be_\bn_\bt *element = patch[ 0 ];\n+123\n+124 // new vertex is always the last one\n+125 assert( element->child[ 0 ] != NULL );\n+126 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &newCoord = array[ dofAccess( element->child[ 0 ], _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn )\n+];\n+127\n+128 if( element->new_coord != NULL )\n+129 {\n+130 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n+131 newCoord[ j ] = element->new_coord[ j ];\n+132 }\n+133 else\n+134 {\n+135 // new coordinate is the average of of old ones on the same edge\n+136 // refinement edge is always between vertices 0 and 1\n+137 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord0 = array[ dofAccess( element, 0 ) ];\n+138 const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coord1 = array[ dofAccess( element, 1 ) ];\n+139 for( int j = 0; j < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++j )\n+140 newCoord[ j ] = 0.5 * (coord0[ j ] + coord1[ j ]);\n+141 }\n+142 }\n+143 };\n+144\n+145 }\n+146\n+147}\n+148\n+149#endif // #if HAVE_ALBERTA\n 150\n-151\n-152 template< class Grid >\n-153 void AlbertaGridLocalGeometryProvider< Grid >::buildFaceGeometry ()\n-154 {\n-155 for( int face = 0; face < numFaces; ++face )\n-156 {\n-157 for( int twist = minFaceTwist; twist <= maxFaceTwist; ++twist )\n-158 {\n-159 const FaceCoordReader coordReader( face, twist );\n-160 faceGeometry_[ face ][ twist - minFaceTwist ] = new LocalFaceGeometry\n-( coordReader );\n-161 }\n-162 }\n-163 }\n-164\n-165\n-166\n-167 // AlbertaGridLocalGeometryProvider::GeoInFatherCoordReader\n-168 // --------------------------------------------------------\n-169\n-170 template< class Grid >\n-_\b1_\b7_\b1 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bG_\br_\bi_\bd >::_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-172 {\n-_\b1_\b7_\b3 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n-174\n-_\b1_\b7_\b5 typedef _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-176\n-177 private:\n-178 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br;\n-179\n-180 public:\n-_\b1_\b8_\b1 _\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( int child, int orientation )\n-182 : child_( child ),\n-183 orientation_( orientation )\n-184 {}\n-185\n-_\b1_\b8_\b6 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bx ) const\n-187 {\n-188 const typename GeoInFather::LocalVector &coord\n-189 = GeoInFather::coordinate( child_, orientation_, i );\n-190 for( int j = 0; j < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++j )\n-191 _\bx[ j ] = coord[ j ];\n-192 }\n-193\n-_\b1_\b9_\b4 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-195 {\n-196 return false;\n-197 }\n-198\n-_\b1_\b9_\b9 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-200 {\n-201 return _\bc_\bt_\by_\bp_\be( 0 );\n-202 }\n-203\n-204 private:\n-205 const int child_;\n-206 const int orientation_;\n-207 };\n-208\n-209\n-210\n-211 // AlbertaGridLocalGeometryProvider::FaceCoordReader\n-212 // -------------------------------------------------\n-213\n-214 template< class Grid >\n-_\b2_\b1_\b5 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bG_\br_\bi_\bd >::_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-216 {\n-_\b2_\b1_\b7 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl _\bc_\bt_\by_\bp_\be;\n-218\n-_\b2_\b1_\b9 typedef _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bc_\bt_\by_\bp_\be_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-220\n-_\b2_\b2_\b1 _\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br ( const int _\bf_\ba_\bc_\be, const int twist = 0 )\n-222 : face_( _\bf_\ba_\bc_\be ),\n-223 twist_( twist )\n-224 {}\n-225\n-_\b2_\b2_\b6 void _\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be ( const int i, _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bx ) const\n-227 {\n-228 const int _\bt_\bi = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1 >( twist_, i );\n-229 const int j = _\bm_\ba_\bp_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\b<_\b _\b1_\b _\b>( face_, _\bt_\bi );\n-230 refCorner( j, _\bx );\n-231 }\n-232\n-_\b2_\b3_\b3 bool _\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-234 {\n-235 return false;\n-236 }\n-237\n-_\b2_\b3_\b8 _\bc_\bt_\by_\bp_\be _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt () const\n-239 {\n-240 return _\bc_\bt_\by_\bp_\be( 0 );\n-241 }\n-242\n-243 private:\n-244 static void refCorner ( const int i, Coordinate &_\bx )\n-245 {\n-246 _\bx = _\bc_\bt_\by_\bp_\be( 0 );\n-247 if( i > 0 )\n-248 _\bx[ i-1 ] = _\bc_\bt_\by_\bp_\be( 1 );\n-249 }\n-250\n-251 int face_;\n-252 int twist_;\n-253 };\n-254\n-255} // namespace Dune\n-256\n-257#endif // #ifndef DUNE_ALBERTA_GEOMETRY_CC\n-_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n-provides a wrapper for ALBERTA's refinement patches and the corners for\n-geometryInFather\n-_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh\n+151#endif // #ifndef DUNE_ALBERTA_COORDCACHE_HH\n+_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n+provides a wrapper for ALBERTA's mesh structure\n+_\bd_\bo_\bf_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh\n+_\bd_\bo_\bf_\ba_\bd_\bm_\bi_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bp_\bp_\bl_\by_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\bw_\bi_\bs_\bt\n-int applyInverseTwist(int twist, int i)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:637\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n-static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 >\n-&inverse)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:172\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, dimension > Coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Alberta::Real ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:173\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-void coordinate(int i, Coordinate &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:\n-_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-GeoInFatherCoordReader(int child, int orientation)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-bool hasDeterminant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bG_\be_\bo_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-ctype determinant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br\n-FaceCoordReader(const int face, const int twist=0)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:221\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-void coordinate(const int i, Coordinate &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-ctype determinant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, dimension > Coordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bh_\ba_\bs_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n-bool hasDeterminant() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:233\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bC_\bo_\bo_\br_\bd_\bR_\be_\ba_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Alberta::Real ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-geometry implementation for AlbertaGrid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-const JacobianTransposed & jacobianTransposed() const\n-transposed of the geometry mapping's Jacobian\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bl_\bo_\bc_\ba_\bl\n-LocalCoordinate local(const GlobalCoordinate &global) const\n-map a point from the geometry to the reference element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-const JacobianInverseTransposed & jacobianInverseTransposed() const\n-transposed inverse of the geometry mapping's Jacobian\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, mydimension > LocalCoordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:126\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print(std::ostream &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl\n-GlobalCoordinate global(const LocalCoordinate &local) const\n-map a point from the reference element to the geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometry.cc:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-FieldVector< ctype, coorddimension > GlobalCoordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bG_\bl_\bo_\bb_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:303\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:504\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\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 albertagrid/geometry.hh:510\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:508\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertagrid/geometry.hh:514\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bn_\bF_\ba_\bt_\bh_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd\n-Grid abstract base class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:375\n-_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ALBERTA EL Element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+ALBERTA FE_SPACE DofSpace\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n+static const int dimWorld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\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 coordcache.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+GlobalVector & operator()(const Element *element, int vertex) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+Alberta::MeshPointer< dimension > MeshPointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dimension > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg\n+HierarchyDofNumbering< dimension > DofNumbering\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create(const DofNumbering &dofNumbering)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n+LocalCaching(const CoordVectorPointer &coords)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\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 coordcache.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n+Alberta::Patch< dimension > Patch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bC_\ba_\bc_\bh_\be_\b:_\b:_\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_\bV_\be_\bc_\bt_\bo_\br\n+static void interpolateVector(const CoordVectorPointer &dofVector, const Patch\n+&patch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coordcache.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bT_\br_\ba_\bv_\be_\br_\bs_\be\n+void hierarchicTraverse(Functor &functor, typename FillFlags::Flags\n+fillFlags=FillFlags::standard) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+static const int numSubEntities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bm_\be_\bs_\bh\n+const MeshPointer & mesh() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * dofSpace(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create(const DofSpace *dofSpace, const std::string &name=\"\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * dofSpace() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+const GlobalVector & coordinate(int vertex) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:685\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b:_\b:_\be_\bl\n+Element * el() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn elementinfo.hh:737\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bF_\bi_\bl_\bl_\bF_\bl_\ba_\bg_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bP_\ba_\bt_\bc_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinement.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-grid-doc/doxygen/a00683_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00647_source.html", "comments": ["Files 73% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: undefine-2.0.hh Source File\n+dune-grid: treeiterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,476 +74,647 @@\n \n \n
    \n
    \n-
    undefine-2.0.hh
    \n+
    treeiterator.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    12#ifdef _ALBERTA_H_
    \n-
    13 #undef _ALBERTA_H_
    \n-
    14#endif // _ALBERTA_H_
    \n-
    15
    \n-
    16#ifdef ALBERTA_VERSION
    \n-
    17 #undef ALBERTA_VERSION
    \n-
    18#endif // ALBERTA_VERSION
    \n-
    19
    \n-
    20#ifdef ALBERTA_DEBUG
    \n-
    21 #undef ALBERTA_DEBUG
    \n-
    22#endif // ALBERTA_DEBUG
    \n-
    23
    \n-
    24#ifdef DIM_MAX
    \n-
    25 #undef DIM_MAX
    \n-
    26#endif // DIM_MAX
    \n-
    27
    \n-
    28#ifdef N_VERTICES
    \n-
    29 #undef N_VERTICES
    \n-
    30#endif // N_VERTICES
    \n-
    31
    \n-
    32#ifdef N_EDGES
    \n-
    33 #undef N_EDGES
    \n-
    34#endif // N_EDGES
    \n-
    35
    \n-
    36#ifdef N_WALLS
    \n-
    37 #undef N_WALLS
    \n-
    38#endif // N_WALLS
    \n+
    5
    \n+
    6#ifndef DUNE_ALBERTA_TREEITERATOR_HH
    \n+
    7#define DUNE_ALBERTA_TREEITERATOR_HH
    \n+
    8
    \n+
    9#include <utility>
    \n+
    10
    \n+
    11#include <dune/common/hybridutilities.hh>
    \n+
    12#include <dune/common/typetraits.hh>
    \n+
    13
    \n+\n+\n+
    16
    \n+
    17#if HAVE_ALBERTA
    \n+
    18
    \n+
    19namespace Dune
    \n+
    20{
    \n+
    21
    \n+
    22 // AlbertaMarkerVector
    \n+
    23 // -------------------
    \n+
    24
    \n+
    33 template< int dim, int dimworld >
    \n+
    \n+\n+
    35 {
    \n+\n+
    37
    \n+\n
    39
    \n-
    40#ifdef N_FACES
    \n-
    41 #undef N_FACES
    \n-
    42#endif // N_FACES
    \n+
    40 //friend class AlbertaGrid< dim, dimworld >;
    \n+
    41
    \n+
    42 static const int dimension = Grid::dimension;
    \n
    43
    \n-
    44#ifdef N_NEIGH
    \n-
    45 #undef N_NEIGH
    \n-
    46#endif // N_NEIGH
    \n-
    47
    \n-
    48#ifdef DIM_FAC
    \n-
    49 #undef DIM_FAC
    \n-
    50#endif // DIM_FAC
    \n+\n+\n+
    46
    \n+
    47 template< bool >
    \n+
    48 struct NoMarkSubEntities;
    \n+
    49 template< bool >
    \n+
    50 struct MarkSubEntities;
    \n
    51
    \n-
    52#ifdef N_VERTICES_0D
    \n-
    53 #undef N_VERTICES_0D
    \n-
    54#endif // N_VERTICES_0D
    \n-
    55
    \n-
    56#ifdef N_EDGES_0D
    \n-
    57 #undef N_EDGES_0D
    \n-
    58#endif // N_EDGES_0D
    \n-
    59
    \n-
    60#ifdef N_FACES_0D
    \n-
    61 #undef N_FACES_0D
    \n-
    62#endif // N_FACES_0D
    \n-
    63
    \n-
    64#ifdef N_NEIGH_0D
    \n-
    65 #undef N_NEIGH_0D
    \n-
    66#endif // N_NEIGH_0D
    \n+
    52 public:
    \n+
    \n+
    54 explicit AlbertaMarkerVector ( const DofNumbering &dofNumbering )
    \n+
    55 : dofNumbering_( dofNumbering )
    \n+
    56 {
    \n+
    57 for( int codim = 0; codim <= dimension; ++codim )
    \n+
    58 marker_[ codim ] = 0;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    61 AlbertaMarkerVector ( const This &other )
    \n+
    62 : dofNumbering_( other.dofNumbering_ )
    \n+
    63 {
    \n+
    64 for( int codim = 0; codim <= dimension; ++codim )
    \n+
    65 marker_[ codim ] = 0;
    \n+
    66 }
    \n+
    \n
    67
    \n-
    68#ifdef N_WALLS_0D
    \n-
    69 #undef N_WALLS_0D
    \n-
    70#endif // N_WALLS_0D
    \n-
    71
    \n-
    72#ifdef N_VERTICES_1D
    \n-
    73 #undef N_VERTICES_1D
    \n-
    74#endif // N_VERTICES_1D
    \n+
    \n+\n+
    69 {
    \n+
    70 clear();
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73 private:
    \n+
    74 This &operator= ( const This & );
    \n
    75
    \n-
    76#ifdef N_EDGES_1D
    \n-
    77 #undef N_EDGES_1D
    \n-
    78#endif // N_EDGES_1D
    \n-
    79
    \n-
    80#ifdef N_FACES_1D
    \n-
    81 #undef N_FACES_1D
    \n-
    82#endif // N_FACES_1D
    \n+
    76 public:
    \n+
    78 template< int codim >
    \n+
    \n+
    79 bool subEntityOnElement ( const ElementInfo &elementInfo, int subEntity ) const;
    \n+
    80
    \n+
    81 template< int firstCodim, class Iterator >
    \n+
    \n+
    82 void markSubEntities ( const Iterator &begin, const Iterator &end );
    \n
    83
    \n-
    84#ifdef N_NEIGH_1D
    \n-
    85 #undef N_NEIGH_1D
    \n-
    86#endif // N_NEIGH_1D
    \n-
    87
    \n-
    88#ifdef N_WALLS_1D
    \n-
    89 #undef N_WALLS_1D
    \n-
    90#endif // N_WALLS_1D
    \n-
    91
    \n-
    92#ifdef N_VERTICES_2D
    \n-
    93 #undef N_VERTICES_2D
    \n-
    94#endif // N_VERTICES_2D
    \n-
    95
    \n-
    96#ifdef N_EDGES_2D
    \n-
    97 #undef N_EDGES_2D
    \n-
    98#endif // N_EDGES_2D
    \n+
    \n+
    84 void clear ()
    \n+
    85 {
    \n+
    86 for( int codim = 0; codim <= dimension; ++codim )
    \n+
    87 {
    \n+
    88 if( marker_[ codim ] != 0 )
    \n+
    89 delete[] marker_[ codim ];
    \n+
    90 marker_[ codim ] = 0;
    \n+
    91 }
    \n+
    92 }
    \n+
    \n+
    93
    \n+
    \n+
    95 bool up2Date () const
    \n+
    96 {
    \n+
    97 return (marker_[ dimension ] != 0);
    \n+
    98 }
    \n+
    \n
    99
    \n-
    100#ifdef N_FACES_2D
    \n-
    101 #undef N_FACES_2D
    \n-
    102#endif // N_FACES_2D
    \n-
    103
    \n-
    104#ifdef N_NEIGH_2D
    \n-
    105 #undef N_NEIGH_2D
    \n-
    106#endif // N_NEIGH_2D
    \n+
    \n+
    101 void print ( std::ostream &out = std::cout ) const;
    \n+
    102
    \n+
    103 private:
    \n+
    104 const DofNumbering &dofNumbering_;
    \n+
    105 int *marker_[ dimension+1 ];
    \n+
    106 };
    \n
    107
    \n-
    108#ifdef N_WALLS_2D
    \n-
    109 #undef N_WALLS_2D
    \n-
    110#endif // N_WALLS_2D
    \n-
    111
    \n-
    112#ifdef N_VERTICES_3D
    \n-
    113 #undef N_VERTICES_3D
    \n-
    114#endif // N_VERTICES_3D
    \n-
    115
    \n-
    116#ifdef N_EDGES_3D
    \n-
    117 #undef N_EDGES_3D
    \n-
    118#endif // N_EDGES_3D
    \n-
    119
    \n-
    120#ifdef N_FACES_3D
    \n-
    121 #undef N_FACES_3D
    \n-
    122#endif // N_FACES_3D
    \n-
    123
    \n-
    124#ifdef N_NEIGH_3D
    \n-
    125 #undef N_NEIGH_3D
    \n-
    126#endif // N_NEIGH_3D
    \n-
    127
    \n-
    128#ifdef N_WALLS_3D
    \n-
    129 #undef N_WALLS_3D
    \n-
    130#endif // N_WALLS_3D
    \n-
    131
    \n-
    132#ifdef N_VERTICES_MAX
    \n-
    133 #undef N_VERTICES_MAX
    \n-
    134#endif // N_VERTICES_MAX
    \n-
    135
    \n-
    136#ifdef N_EDGES_MAX
    \n-
    137 #undef N_EDGES_MAX
    \n-
    138#endif // N_EDGES_MAX
    \n-
    139
    \n-
    140#ifdef N_FACES_MAX
    \n-
    141 #undef N_FACES_MAX
    \n-
    142#endif // N_FACES_MAX
    \n-
    143
    \n-
    144#ifdef N_NEIGH_MAX
    \n-
    145 #undef N_NEIGH_MAX
    \n-
    146#endif // N_NEIGH_MAX
    \n-
    147
    \n-
    148#ifdef N_WALLS_MAX
    \n-
    149 #undef N_WALLS_MAX
    \n-
    150#endif // N_WALLS_MAX
    \n-
    151
    \n-
    152#ifdef N_LAMBDA
    \n-
    153 #undef N_LAMBDA
    \n-
    154#endif // N_LAMBDA
    \n+
    108
    \n+
    109
    \n+
    110 // AlbertaMarkerVector::NoMarkSubEntities
    \n+
    111 // --------------------------------------
    \n+
    112
    \n+
    113 template< int dim, int dimworld >
    \n+
    114 template< bool >
    \n+
    115 struct AlbertaMarkerVector< dim, dimworld >::NoMarkSubEntities
    \n+
    116 {
    \n+
    117 template< int firstCodim, class Iterator >
    \n+
    118 static void mark ( [[maybe_unused]] const DofNumbering & dofNumbering,
    \n+
    119 [[maybe_unused]] int *(&marker)[ dimension + 1 ],
    \n+
    120 [[maybe_unused]] const Iterator &begin,
    \n+
    121 [[maybe_unused]] const Iterator &end )
    \n+
    122 {}
    \n+
    123 };
    \n+
    124
    \n+
    125
    \n+
    126
    \n+
    127 // AlbertaMarkerVector::MarkSubEntities
    \n+
    128 // ------------------------------------
    \n+
    129
    \n+
    130 template< int dim, int dimworld >
    \n+
    131 template< bool >
    \n+
    132 struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities
    \n+
    133 {
    \n+
    134 template< int codim >
    \n+
    \n+
    135 struct Codim
    \n+
    136 {
    \n+
    137 static const int numSubEntities = Alberta::NumSubEntities< dimension, codim >::value;
    \n+
    138
    \n+\n+
    140
    \n+
    \n+
    141 static void apply ( const DofNumbering &dofNumbering,
    \n+
    142 int *(&marker)[ dimension + 1 ],
    \n+
    143 const ElementInfo &elementInfo )
    \n+
    144 {
    \n+
    145 int *array = marker[ codim ];
    \n+
    146
    \n+
    147 const int index = dofNumbering( elementInfo, 0, 0 );
    \n+
    148 for( int i = 0; i < numSubEntities; ++i )
    \n+
    149 {
    \n+
    150 int &mark = array[ dofNumbering( elementInfo, codim, i ) ];
    \n+
    151 mark = std::max( index, mark );
    \n+
    152 }
    \n+
    153 }
    \n+
    \n+
    154 };
    \n+
    \n
    155
    \n-
    156#ifdef LAMBDA_MAX
    \n-
    157 #undef LAMBDA_MAX
    \n-
    158#endif // LAMBDA_MAX
    \n-
    159
    \n-
    160#ifdef INDEX
    \n-
    161 #undef INDEX
    \n-
    162#endif // INDEX
    \n-
    163
    \n-
    164#ifdef INDEX
    \n-
    165 #undef INDEX
    \n-
    166#endif // INDEX
    \n-
    167
    \n-
    168#ifdef IS_LEAF_EL
    \n-
    169 #undef IS_LEAF_EL
    \n-
    170#endif // IS_LEAF_EL
    \n-
    171
    \n-
    172#ifdef LEAF_DATA
    \n-
    173 #undef LEAF_DATA
    \n-
    174#endif // LEAF_DATA
    \n-
    175
    \n-
    176#ifdef INTERIOR
    \n-
    177 #undef INTERIOR
    \n-
    178#endif // INTERIOR
    \n+
    156 template< int firstCodim, class Iterator >
    \n+
    157 static void mark ( const DofNumbering &dofNumbering, int *(&marker)[ dimension + 1 ],
    \n+
    158 const Iterator &begin, const Iterator &end )
    \n+
    159 {
    \n+
    160 for( int codim = firstCodim; codim <= dimension; ++codim )
    \n+
    161 {
    \n+
    162 const int size = dofNumbering.size( codim );
    \n+
    163 marker[ codim ] = new int[ size ];
    \n+
    164
    \n+
    165 int *array = marker[ codim ];
    \n+
    166 for( int i = 0; i < size; ++i )
    \n+
    167 array[ i ] = -1;
    \n+
    168 }
    \n+
    169
    \n+
    170 for( Iterator it = begin; it != end; ++it )
    \n+
    171 {
    \n+
    172 const ElementInfo &elementInfo = it->impl().elementInfo();
    \n+
    173 Hybrid::forEach( std::make_index_sequence< dimension+1-firstCodim >{},
    \n+
    174 [ & ]( auto i ){ Codim< i+firstCodim >::apply( dofNumbering, marker, elementInfo ); } );
    \n+
    175 }
    \n+
    176 }
    \n+
    177 };
    \n+
    178
    \n
    179
    \n-
    180#ifdef DIRICHLET
    \n-
    181 #undef DIRICHLET
    \n-
    182#endif // DIRICHLET
    \n+
    180
    \n+
    181 // AlbertaGridTreeIterator
    \n+
    182 // -----------------------
    \n
    183
    \n-
    184#ifdef NEUMANN
    \n-
    185 #undef NEUMANN
    \n-
    186#endif // NEUMANN
    \n-
    187
    \n-
    188#ifdef IS_NEUMANN
    \n-
    189 #undef IS_NEUMANN
    \n-
    190#endif // IS_NEUMANN
    \n+
    187 template< int codim, class GridImp, bool leafIterator >
    \n+
    \n+\n+
    189 {
    \n+\n
    191
    \n-
    192#ifdef IS_DIRICHLET
    \n-
    193 #undef IS_DIRICHLET
    \n-
    194#endif // IS_DIRICHLET
    \n-
    195
    \n-
    196#ifdef IS_INTERIOR
    \n-
    197 #undef IS_INTERIOR
    \n-
    198#endif // IS_INTERIOR
    \n+
    192 public:
    \n+
    193 static const int dimension = GridImp::dimension;
    \n+
    194 static const int codimension = codim;
    \n+
    195 static const int dimensionworld = GridImp::dimensionworld;
    \n+
    196
    \n+
    197 private:
    \n+
    198 friend class AlbertaGrid< dimension, dimensionworld >;
    \n
    199
    \n-
    200#ifdef N_NODE_TYPES
    \n-
    201 #undef N_NODE_TYPES
    \n-
    202#endif // N_NODE_TYPES
    \n-
    203
    \n-
    204#ifdef VERTEX
    \n-
    205 #undef VERTEX
    \n-
    206#endif // VERTEX
    \n-
    207
    \n-
    208#ifdef CENTER
    \n-
    209 #undef CENTER
    \n-
    210#endif // CENTER
    \n+
    200 static const int numSubEntities
    \n+\n+
    202
    \n+
    203 public:
    \n+\n+
    205 typedef typename MeshPointer::MacroIterator MacroIterator;
    \n+
    206
    \n+
    207 typedef typename GridImp::template Codim< codim >::Entity Entity;
    \n+\n+\n+
    210 typedef typename EntityImp::ElementInfo ElementInfo;
    \n
    211
    \n-
    212#ifdef EDGE
    \n-
    213 #undef EDGE
    \n-
    214#endif // EDGE
    \n+\n+
    213
    \n+
    \n+\n
    215
    \n-
    216#ifdef FACE
    \n-
    217 #undef FACE
    \n-
    218#endif // FACE
    \n-
    219
    \n-
    220#ifdef LIST_ENTRY
    \n-
    221 #undef LIST_ENTRY
    \n-
    222#endif // LIST_ENTRY
    \n-
    223
    \n-
    224#ifdef WALL_BOUND
    \n-
    225 #undef WALL_BOUND
    \n-
    226#endif // WALL_BOUND
    \n-
    227
    \n-
    228#ifdef FILL_NOTHING
    \n-
    229 #undef FILL_NOTHING
    \n-
    230#endif // FILL_NOTHING
    \n-
    231
    \n-
    232#ifdef FILL_COORDS
    \n-
    233 #undef FILL_COORDS
    \n-
    234#endif // FILL_COORDS
    \n+
    \n+\n+
    218
    \n+
    \n+
    220 This &operator= ( const This &other );
    \n+
    221
    \n+
    \n+
    223 AlbertaGridTreeIterator ( const GridImp &grid, int travLevel );
    \n+
    224
    \n+
    \n+\n+
    227 const MarkerVector *marker,
    \n+
    228 int travLevel );
    \n+
    229
    \n+
    \n+
    231 bool equals ( const This &other ) const
    \n+
    232 {
    \n+
    233 return entity_.impl().equals( other.entity_.impl() );
    \n+
    234 }
    \n+
    \n
    235
    \n-
    236#ifdef FILL_BOUND
    \n-
    237 #undef FILL_BOUND
    \n-
    238#endif // FILL_BOUND
    \n-
    239
    \n-
    240#ifdef FILL_NEIGH
    \n-
    241 #undef FILL_NEIGH
    \n-
    242#endif // FILL_NEIGH
    \n-
    243
    \n-
    244#ifdef FILL_OPP_COORDS
    \n-
    245 #undef FILL_OPP_COORDS
    \n-
    246#endif // FILL_OPP_COORDS
    \n+
    \n+\n+
    238 {
    \n+
    239 return entity_;
    \n+
    240 }
    \n+
    \n+
    241
    \n+
    \n+
    243 int level () const
    \n+
    244 {
    \n+
    245 return entity_.impl().level();
    \n+
    246 }
    \n+
    \n
    247
    \n-
    248#ifdef FILL_ORIENTATION
    \n-
    249 #undef FILL_ORIENTATION
    \n-
    250#endif // FILL_ORIENTATION
    \n-
    251
    \n-
    252#ifdef FILL_EL_TYPE
    \n-
    253 #undef FILL_EL_TYPE
    \n-
    254#endif // FILL_EL_TYPE
    \n-
    255
    \n-
    256#ifdef FILL_PROJECTION
    \n-
    257 #undef FILL_PROJECTION
    \n-
    258#endif // FILL_PROJECTION
    \n-
    259
    \n-
    260#ifdef FILL_ANY
    \n-
    261 #undef FILL_ANY
    \n-
    262#endif // FILL_ANY
    \n-
    263
    \n-
    264#ifdef HOOK_QUEUE_OFFSET
    \n-
    265 #undef HOOK_QUEUE_OFFSET
    \n-
    266#endif // HOOK_QUEUE_OFFSET
    \n-
    267
    \n-
    268#ifdef RUN_HOOKS_0
    \n-
    269 #undef RUN_HOOKS_0
    \n-
    270#endif // RUN_HOOKS_0
    \n+
    \n+
    249 void increment();
    \n+
    250
    \n+
    251 protected:
    \n+
    \n+
    253 const GridImp &grid () const
    \n+
    254 {
    \n+
    255 return entity_.impl().grid();
    \n+
    256 }
    \n+
    \n+
    257
    \n+
    258 private:
    \n+
    259 void nextElement ( ElementInfo &elementInfo );
    \n+
    260 void nextElementStop (ElementInfo &elementInfo );
    \n+
    261 bool stopAtElement ( const ElementInfo &elementInfo ) const;
    \n+
    262
    \n+
    263 void goNext ( ElementInfo &elementInfo );
    \n+
    264 void goNext ( const std::integral_constant< int, 0 > cdVariable,
    \n+
    265 ElementInfo &elementInfo );
    \n+
    266 void goNext ( const std::integral_constant< int, 1 > cdVariable,
    \n+
    267 ElementInfo &elementInfo );
    \n+
    268 template< int cd >
    \n+
    269 void goNext ( const std::integral_constant< int, cd > cdVariable,
    \n+
    270 ElementInfo &elementInfo );
    \n
    271
    \n-
    272#ifdef RUN_BAS_FCTS_HOOKS
    \n-
    273 #undef RUN_BAS_FCTS_HOOKS
    \n-
    274#endif // RUN_BAS_FCTS_HOOKS
    \n-
    275
    \n-
    276#ifdef RUN_HOOKS_1
    \n-
    277 #undef RUN_HOOKS_1
    \n-
    278#endif // RUN_HOOKS_1
    \n+
    272 mutable Entity entity_;
    \n+
    273
    \n+
    275 int level_;
    \n+
    276
    \n+
    278 int subEntity_;
    \n
    279
    \n-
    280#ifdef RUN_HOOKS_2
    \n-
    281 #undef RUN_HOOKS_2
    \n-
    282#endif // RUN_HOOKS_2
    \n-
    283
    \n-
    284#ifdef RUN_HOOKS_3
    \n-
    285 #undef RUN_HOOKS_3
    \n-
    286#endif // RUN_HOOKS_3
    \n+
    280 MacroIterator macroIterator_;
    \n+
    281
    \n+
    282 // knows on which element a point,edge,face is viewed
    \n+
    283 const MarkerVector *marker_;
    \n+
    284 };
    \n+
    285
    \n+
    286
    \n
    287
    \n-
    288#ifdef RUN_HOOKS_4
    \n-
    289 #undef RUN_HOOKS_4
    \n-
    290#endif // RUN_HOOKS_4
    \n-
    291
    \n-
    292#ifdef RUN_HOOKS_5
    \n-
    293 #undef RUN_HOOKS_5
    \n-
    294#endif // RUN_HOOKS_5
    \n-
    295
    \n-
    296#ifdef RUN_HOOKS_6
    \n-
    297 #undef RUN_HOOKS_6
    \n-
    298#endif // RUN_HOOKS_6
    \n-
    299
    \n-
    300#ifdef RUN_HOOKS_7
    \n-
    301 #undef RUN_HOOKS_7
    \n-
    302#endif // RUN_HOOKS_7
    \n-
    303
    \n-
    304#ifdef CALL_EVERY_EL_PREORDER
    \n-
    305 #undef CALL_EVERY_EL_PREORDER
    \n-
    306#endif // CALL_EVERY_EL_PREORDER
    \n-
    307
    \n-
    308#ifdef CALL_EVERY_EL_INORDER
    \n-
    309 #undef CALL_EVERY_EL_INORDER
    \n-
    310#endif // CALL_EVERY_EL_INORDER
    \n-
    311
    \n-
    312#ifdef CALL_EVERY_EL_POSTORDER
    \n-
    313 #undef CALL_EVERY_EL_POSTORDER
    \n-
    314#endif // CALL_EVERY_EL_POSTORDER
    \n-
    315
    \n-
    316#ifdef CALL_LEAF_EL
    \n-
    317 #undef CALL_LEAF_EL
    \n-
    318#endif // CALL_LEAF_EL
    \n-
    319
    \n-
    320#ifdef CALL_LEAF_EL_LEVEL
    \n-
    321 #undef CALL_LEAF_EL_LEVEL
    \n-
    322#endif // CALL_LEAF_EL_LEVEL
    \n-
    323
    \n-
    324#ifdef CALL_EL_LEVEL
    \n-
    325 #undef CALL_EL_LEVEL
    \n-
    326#endif // CALL_EL_LEVEL
    \n-
    327
    \n-
    328#ifdef CALL_MG_LEVEL
    \n-
    329 #undef CALL_MG_LEVEL
    \n-
    330#endif // CALL_MG_LEVEL
    \n-
    331
    \n-
    332#ifdef TEST_FLAG
    \n-
    333 #undef TEST_FLAG
    \n-
    334#endif // TEST_FLAG
    \n+
    288 // Implementation of AlbertaMarkerVector
    \n+
    289 // -------------------------------------
    \n+
    290
    \n+
    291 template< int dim, int dimworld >
    \n+
    292 template< int codim >
    \n+
    293 inline bool AlbertaMarkerVector< dim, dimworld >
    \n+
    \n+
    294 ::subEntityOnElement ( const ElementInfo &elementInfo, int subEntity ) const
    \n+
    295 {
    \n+
    296 assert( marker_[ codim ] != 0 );
    \n+
    297
    \n+
    298 const int subIndex = dofNumbering_( elementInfo, codim, subEntity );
    \n+
    299 const int markIndex = marker_[ codim ][ subIndex ];
    \n+
    300 assert( (markIndex >= 0) );
    \n+
    301
    \n+
    302 const int index = dofNumbering_( elementInfo, 0, 0 );
    \n+
    303 return (markIndex == index);
    \n+
    304 }
    \n+
    \n+
    305
    \n+
    306
    \n+
    307 template< int dim, int dimworld >
    \n+
    308 template< int firstCodim, class Iterator >
    \n+\n+
    \n+
    310 ::markSubEntities ( const Iterator &begin, const Iterator &end )
    \n+
    311 {
    \n+
    312 clear();
    \n+
    313 std::conditional< (firstCodim <= dimension), MarkSubEntities<true>, NoMarkSubEntities<false> >::type
    \n+
    314 ::template mark< firstCodim, Iterator >( dofNumbering_, marker_, begin, end );
    \n+
    315 }
    \n+
    \n+
    316
    \n+
    317
    \n+
    318 template< int dim, int dimworld >
    \n+
    \n+
    319 inline void AlbertaMarkerVector< dim, dimworld >::print ( std::ostream &out ) const
    \n+
    320 {
    \n+
    321 for( int codim = 1; codim <= dimension; ++codim )
    \n+
    322 {
    \n+
    323 int *marker = marker_[ codim ];
    \n+
    324 if( marker != 0 )
    \n+
    325 {
    \n+
    326 const int size = dofNumbering_.size( codim );
    \n+
    327 out << std::endl;
    \n+
    328 out << "Codimension " << codim << " (" << size << " entries)" << std::endl;
    \n+
    329 for( int i = 0; i < size; ++i )
    \n+
    330 out << "subentity " << i << " visited on Element " << marker[ i ] << std::endl;
    \n+
    331 }
    \n+
    332 }
    \n+
    333 }
    \n+
    \n+
    334
    \n
    335
    \n-
    336#ifdef DOF_ADMIN_DEF
    \n-
    337 #undef DOF_ADMIN_DEF
    \n-
    338#endif // DOF_ADMIN_DEF
    \n+
    336
    \n+
    337 // Implementation of AlbertaGridTreeIterator
    \n+
    338 // -----------------------------------------
    \n
    339
    \n-
    340#ifdef DOF_FREE_SIZE
    \n-
    341 #undef DOF_FREE_SIZE
    \n-
    342#endif // DOF_FREE_SIZE
    \n-
    343
    \n-
    344#ifdef DOF_UNIT_ALL_FREE
    \n-
    345 #undef DOF_UNIT_ALL_FREE
    \n-
    346#endif // DOF_UNIT_ALL_FREE
    \n-
    347
    \n-
    348#ifdef FOR_ALL_DOFS
    \n-
    349 #undef FOR_ALL_DOFS
    \n-
    350#endif // FOR_ALL_DOFS
    \n-
    351
    \n-
    352#ifdef FOR_ALL_FREE_DOFS
    \n-
    353 #undef FOR_ALL_FREE_DOFS
    \n-
    354#endif // FOR_ALL_FREE_DOFS
    \n-
    355
    \n-
    356#ifdef DOWBM_FULL
    \n-
    357 #undef DOWBM_FULL
    \n-
    358#endif // DOWBM_FULL
    \n-
    359
    \n-
    360#ifdef DOWBM_SYMM
    \n-
    361 #undef DOWBM_SYMM
    \n-
    362#endif // DOWBM_SYMM
    \n-
    363
    \n-
    364#ifdef DOWBM_DIAG
    \n-
    365 #undef DOWBM_DIAG
    \n-
    366#endif // DOWBM_DIAG
    \n-
    367
    \n-
    368#ifdef ROW_LENGTH
    \n-
    369 #undef ROW_LENGTH
    \n-
    370#endif // ROW_LENGTH
    \n-
    371
    \n-
    372#ifdef ENTRY_USED
    \n-
    373 #undef ENTRY_USED
    \n-
    374#endif // ENTRY_USED
    \n-
    375
    \n-
    376#ifdef ENTRY_NOT_USED
    \n-
    377 #undef ENTRY_NOT_USED
    \n-
    378#endif // ENTRY_NOT_USED
    \n-
    379
    \n-
    380#ifdef UNUSED_ENTRY
    \n-
    381 #undef UNUSED_ENTRY
    \n-
    382#endif // UNUSED_ENTRY
    \n-
    383
    \n-
    384#ifdef NO_MORE_ENTRIES
    \n-
    385 #undef NO_MORE_ENTRIES
    \n-
    386#endif // NO_MORE_ENTRIES
    \n-
    387
    \n-
    388#ifdef LAGRANGE_NODES
    \n-
    389 #undef LAGRANGE_NODES
    \n-
    390#endif // LAGRANGE_NODES
    \n-
    391
    \n-
    392#ifdef MAX_N_QUAD_POINTS
    \n-
    393 #undef MAX_N_QUAD_POINTS
    \n-
    394#endif // MAX_N_QUAD_POINTS
    \n-
    395
    \n-
    396#ifdef INIT_PHI
    \n-
    397 #undef INIT_PHI
    \n-
    398#endif // INIT_PHI
    \n-
    399
    \n-
    400#ifdef INIT_GRD_PHI
    \n-
    401 #undef INIT_GRD_PHI
    \n-
    402#endif // INIT_GRD_PHI
    \n-
    403
    \n-
    404#ifdef INIT_D2_PHI
    \n-
    405 #undef INIT_D2_PHI
    \n-
    406#endif // INIT_D2_PHI
    \n-
    407
    \n-
    408#ifdef MESH_REFINED
    \n-
    409 #undef MESH_REFINED
    \n-
    410#endif // MESH_REFINED
    \n-
    411
    \n-
    412#ifdef MESH_COARSENED
    \n-
    413 #undef MESH_COARSENED
    \n-
    414#endif // MESH_COARSENED
    \n-
    415
    \n-
    416#ifdef H1_NORM
    \n-
    417 #undef H1_NORM
    \n-
    418#endif // H1_NORM
    \n+
    340 template< int codim, class GridImp, bool leafIterator >
    \n+\n+
    \n+\n+
    343 : entity_(),
    \n+
    344 level_( -1 ),
    \n+
    345 subEntity_( -1 ),
    \n+
    346 macroIterator_(),
    \n+
    347 marker_( NULL )
    \n+
    348 {}
    \n+
    \n+
    349
    \n+
    350 template< int codim, class GridImp, bool leafIterator >
    \n+\n+
    \n+
    352 ::AlbertaGridTreeIterator ( const GridImp &grid,
    \n+
    353 const MarkerVector *marker,
    \n+
    354 int travLevel )
    \n+
    355 : entity_( EntityImp( grid ) ),
    \n+
    356 level_( travLevel ),
    \n+
    357 subEntity_( (codim == 0 ? 0 : -1) ),
    \n+
    358 macroIterator_( grid.meshPointer().begin() ),
    \n+
    359 marker_( marker )
    \n+
    360 {
    \n+
    361 ElementInfo elementInfo = *macroIterator_;
    \n+
    362 nextElementStop( elementInfo );
    \n+
    363 if( codim > 0 )
    \n+
    364 goNext( elementInfo );
    \n+
    365 // it is ok to set the invalid ElementInfo
    \n+
    366 entity_.impl().setElement( elementInfo, subEntity_ );
    \n+
    367 }
    \n+
    \n+
    368
    \n+
    369
    \n+
    370 // Make LevelIterator with point to element from previous iterations
    \n+
    371 template< int codim, class GridImp, bool leafIterator >
    \n+\n+
    \n+
    373 ::AlbertaGridTreeIterator ( const GridImp &grid,
    \n+
    374 int travLevel )
    \n+
    375 : entity_( EntityImp( grid ) ),
    \n+
    376 level_( travLevel ),
    \n+
    377 subEntity_( -1 ),
    \n+
    378 macroIterator_( grid.meshPointer().end() ),
    \n+
    379 marker_( 0 )
    \n+
    380 {}
    \n+
    \n+
    381
    \n+
    382
    \n+
    383 // Make LevelIterator with point to element from previous iterations
    \n+
    384 template< int codim, class GridImp, bool leafIterator >
    \n+\n+
    \n+\n+
    387 : entity_( other.entity_ ),
    \n+
    388 level_( other.level_ ),
    \n+
    389 subEntity_( other.subEntity_ ),
    \n+
    390 macroIterator_( other.macroIterator_ ),
    \n+
    391 marker_( other.marker_ )
    \n+
    392 {}
    \n+
    \n+
    393
    \n+
    394
    \n+
    395 // Make LevelIterator with point to element from previous iterations
    \n+
    396 template< int codim, class GridImp, bool leafIterator >
    \n+\n+
    \n+\n+
    399 {
    \n+
    400 entity_ = other.entity_;
    \n+
    401 level_ = other.level_;
    \n+
    402 subEntity_ = other.subEntity_;
    \n+
    403 macroIterator_ = other.macroIterator_;
    \n+
    404 marker_ = other.marker_;
    \n+
    405
    \n+
    406 return *this;
    \n+
    407 }
    \n+
    \n+
    408
    \n+
    409
    \n+
    410 template< int codim, class GridImp, bool leafIterator >
    \n+
    \n+\n+
    412 {
    \n+
    413 ElementInfo elementInfo = entity_.impl().elementInfo_;
    \n+
    414 goNext ( elementInfo );
    \n+
    415 // it is ok to set the invalid ElementInfo
    \n+
    416 entity_.impl().setElement( elementInfo, subEntity_ );
    \n+
    417 }
    \n+
    \n+
    \n+
    418
    \n
    419
    \n-
    420#ifdef L2_NORM
    \n-
    421 #undef L2_NORM
    \n-
    422#endif // L2_NORM
    \n-
    423
    \n-
    424#ifdef GRAPH_MESH_BOUNDARY
    \n-
    425 #undef GRAPH_MESH_BOUNDARY
    \n-
    426#endif // GRAPH_MESH_BOUNDARY
    \n-
    427
    \n-
    428#ifdef GRAPH_MESH_ELEMENT_MARK
    \n-
    429 #undef GRAPH_MESH_ELEMENT_MARK
    \n-
    430#endif // GRAPH_MESH_ELEMENT_MARK
    \n-
    431
    \n-
    432#ifdef GRAPH_MESH_VERTEX_DOF
    \n-
    433 #undef GRAPH_MESH_VERTEX_DOF
    \n-
    434#endif // GRAPH_MESH_VERTEX_DOF
    \n-
    435
    \n-
    436#ifdef GRAPH_MESH_ELEMENT_INDEX
    \n-
    437 #undef GRAPH_MESH_ELEMENT_INDEX
    \n-
    438#endif // GRAPH_MESH_ELEMENT_INDEX
    \n+
    420 template< int codim, class GridImp, bool leafIterator >
    \n+\n+
    422 ::nextElement ( ElementInfo &elementInfo )
    \n+
    423 {
    \n+
    424 if( elementInfo.isLeaf() || (elementInfo.level() >= level_) )
    \n+
    425 {
    \n+
    426 while( (elementInfo.level() > 0) && (elementInfo.indexInFather() == 1) )
    \n+
    427 elementInfo = elementInfo.father();
    \n+
    428 if( elementInfo.level() == 0 )
    \n+
    429 {
    \n+
    430 ++macroIterator_;
    \n+
    431 elementInfo = *macroIterator_;
    \n+
    432 }
    \n+
    433 else
    \n+
    434 elementInfo = elementInfo.father().child( 1 );
    \n+
    435 }
    \n+
    436 else
    \n+
    437 elementInfo = elementInfo.child( 0 );
    \n+
    438 }
    \n
    439
    \n-
    440#ifdef GET_MESH
    \n-
    441 #undef GET_MESH
    \n-
    442#endif // GET_MESH
    \n-
    443
    \n-
    444#ifdef GET_DOF_VEC
    \n-
    445 #undef GET_DOF_VEC
    \n-
    446#endif // GET_DOF_VEC
    \n-
    447
    \n-
    448#ifdef CARD_SN_MAX
    \n-
    449 #undef CARD_SN_MAX
    \n-
    450#endif // CARD_SN_MAX
    \n-
    451
    \n-
    452#ifdef INIT_UH
    \n-
    453 #undef INIT_UH
    \n-
    454#endif // INIT_UH
    \n-
    455
    \n-
    456#ifdef INIT_GRD_UH
    \n-
    457 #undef INIT_GRD_UH
    \n-
    458#endif // INIT_GRD_UH
    \n+
    440
    \n+
    441 template< int codim, class GridImp, bool leafIterator >
    \n+
    442 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n+
    443 ::nextElementStop ( ElementInfo &elementInfo )
    \n+
    444 {
    \n+
    445 while( !(!elementInfo || stopAtElement( elementInfo )) )
    \n+
    446 nextElement( elementInfo );
    \n+
    447 }
    \n+
    448
    \n+
    449
    \n+
    450 template< int codim, class GridImp, bool leafIterator >
    \n+
    451 inline bool AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n+
    452 ::stopAtElement ( const ElementInfo &elementInfo ) const
    \n+
    453 {
    \n+
    454 if( !elementInfo )
    \n+
    455 return true;
    \n+
    456 return (leafIterator ? elementInfo.isLeaf() : (level_ == elementInfo.level()));
    \n+
    457 }
    \n+
    458
    \n
    459
    \n-
    460#ifdef TRAVERSE_START
    \n-
    461 #undef TRAVERSE_START
    \n-
    462#endif // TRAVERSE_START
    \n-
    463
    \n-
    464#ifdef TRAVERSE_STOP
    \n-
    465 #undef TRAVERSE_STOP
    \n-
    466#endif // TRAVERSE_STOP
    \n+
    460 template< int codim, class GridImp, bool leafIterator >
    \n+
    461 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n+
    462 ::goNext ( ElementInfo &elementInfo )
    \n+
    463 {
    \n+
    464 std::integral_constant< int, codim > codimVariable;
    \n+
    465 goNext( codimVariable, elementInfo );
    \n+
    466 }
    \n+
    467
    \n+
    468 template< int codim, class GridImp, bool leafIterator >
    \n+
    469 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n+
    470 ::goNext ( const std::integral_constant< int, 0 > /* cdVariable */,
    \n+
    471 ElementInfo &elementInfo )
    \n+
    472 {
    \n+
    473 assert( stopAtElement( elementInfo ) );
    \n+
    474
    \n+
    475 nextElement( elementInfo );
    \n+
    476 nextElementStop( elementInfo );
    \n+
    477 }
    \n+
    478
    \n+
    479 template< int codim, class GridImp, bool leafIterator >
    \n+
    480 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n+
    481 ::goNext ( const std::integral_constant< int, 1 > cdVariable,
    \n+
    482 ElementInfo &elementInfo )
    \n+
    483 {
    \n+
    484 assert( stopAtElement( elementInfo ) );
    \n+
    485
    \n+
    486 ++subEntity_;
    \n+
    487 if( subEntity_ >= numSubEntities )
    \n+
    488 {
    \n+
    489 subEntity_ = 0;
    \n+
    490 nextElement( elementInfo );
    \n+
    491 nextElementStop( elementInfo );
    \n+
    492 if( !elementInfo )
    \n+
    493 return;
    \n+
    494 }
    \n+
    495
    \n+
    496 if( leafIterator )
    \n+
    497 {
    \n+
    498 const int face = (dimension == 1 ? (numSubEntities-1)-subEntity_ : subEntity_);
    \n+
    499
    \n+
    500 const ALBERTA EL *neighbor = elementInfo.elInfo().neigh[ face ];
    \n+
    501 if( (neighbor != NULL) && !elementInfo.isBoundary( face ) )
    \n+
    502 {
    \n+
    503 // face is reached from element with largest number
    \n+
    504 const int elIndex = grid().dofNumbering() ( elementInfo, 0, 0 );
    \n+
    505 const int nbIndex = grid().dofNumbering() ( neighbor, 0, 0 );
    \n+
    506 if( elIndex < nbIndex )
    \n+
    507 goNext( cdVariable, elementInfo );
    \n+
    508 }
    \n+
    509 // uncomment this assertion only if codimension 1 entities are marked
    \n+
    510 // assert( marker_->template subEntityOnElement< 1 >( elementInfo, subEntity_ ) );
    \n+
    511 }
    \n+
    512 else
    \n+
    513 {
    \n+
    514 assert( marker_ != 0 );
    \n+
    515 if( !marker_->template subEntityOnElement< 1 >( elementInfo, subEntity_ ) )
    \n+
    516 goNext( cdVariable, elementInfo );
    \n+
    517 }
    \n+
    518 }
    \n+
    519
    \n+
    520 template< int codim, class GridImp, bool leafIterator >
    \n+
    521 template< int cd >
    \n+
    522 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >
    \n+
    523 ::goNext ( const std::integral_constant< int, cd > cdVariable,
    \n+
    524 ElementInfo &elementInfo )
    \n+
    525 {
    \n+
    526 assert( stopAtElement( elementInfo ) );
    \n+
    527
    \n+
    528 ++subEntity_;
    \n+
    529 if( subEntity_ >= numSubEntities )
    \n+
    530 {
    \n+
    531 subEntity_ = 0;
    \n+
    532 nextElement( elementInfo );
    \n+
    533 nextElementStop( elementInfo );
    \n+
    534 if( !elementInfo )
    \n+
    535 return;
    \n+
    536 }
    \n+
    537
    \n+
    538 assert( marker_ != 0 );
    \n+
    539 if( !marker_->template subEntityOnElement< cd >( elementInfo, subEntity_ ) )
    \n+
    540 goNext( cdVariable, elementInfo );
    \n+
    541 }
    \n+
    542
    \n+
    543}
    \n+
    544
    \n+
    545#endif // #if HAVE_ALBERTA
    \n+
    546
    \n+
    547#endif // #ifndef DUNE_ALBERTA_TREEITERATOR_HH
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    \n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's mesh structure
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n+
    Include standard header files.
    Definition agrid.hh:60
    \n+\n+
    static const int dimension
    Definition agrid.hh:145
    \n+\n+\n+
    int size(int codim) const
    Definition dofadmin.hh:163
    \n+\n+
    Definition treeiterator.hh:189
    \n+
    bool equals(const This &other) const
    equality
    Definition treeiterator.hh:231
    \n+
    MakeableInterfaceObject< Entity > EntityObject
    Definition treeiterator.hh:208
    \n+
    Alberta::MeshPointer< dimension > MeshPointer
    Definition treeiterator.hh:204
    \n+
    AlbertaGridTreeIterator(const GridImp &grid, const MarkerVector *marker, int travLevel)
    Constructor making begin iterator.
    Definition treeiterator.hh:352
    \n+
    AlbertaGridTreeIterator(const GridImp &grid, int travLevel)
    Constructor making end iterator.
    Definition treeiterator.hh:373
    \n+
    EntityObject::ImplementationType EntityImp
    Definition treeiterator.hh:209
    \n+
    static const int codimension
    Definition treeiterator.hh:194
    \n+
    MeshPointer::MacroIterator MacroIterator
    Definition treeiterator.hh:205
    \n+
    This & operator=(const This &other)
    Constructor making end iterator.
    Definition treeiterator.hh:398
    \n+
    Entity & dereference() const
    dereferencing
    Definition treeiterator.hh:237
    \n+
    AlbertaMarkerVector< dimension, dimensionworld > MarkerVector
    Definition treeiterator.hh:212
    \n+
    GridImp::template Codim< codim >::Entity Entity
    Definition treeiterator.hh:207
    \n+
    int level() const
    ask for level of entities
    Definition treeiterator.hh:243
    \n+
    static const int dimensionworld
    Definition treeiterator.hh:195
    \n+
    AlbertaGridTreeIterator()
    Definition treeiterator.hh:342
    \n+
    void increment()
    increment
    Definition treeiterator.hh:411
    \n+
    const GridImp & grid() const
    obtain a reference to the grid
    Definition treeiterator.hh:253
    \n+
    static const int dimension
    Definition treeiterator.hh:193
    \n+
    AlbertaGridTreeIterator(const This &other)
    Constructor making end iterator.
    Definition treeiterator.hh:386
    \n+
    EntityImp::ElementInfo ElementInfo
    Definition treeiterator.hh:210
    \n+
    Definition misc.hh:148
    \n+
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n+
    AlbertaMarkerVector(const DofNumbering &dofNumbering)
    create AlbertaMarkerVector with empty vectors
    Definition treeiterator.hh:54
    \n+
    bool up2Date() const
    return true if marking is up to date
    Definition treeiterator.hh:95
    \n+
    bool subEntityOnElement(const ElementInfo &elementInfo, int subEntity) const
    visit subentity on this element?
    Definition treeiterator.hh:294
    \n+
    void markSubEntities(const Iterator &begin, const Iterator &end)
    Definition treeiterator.hh:310
    \n+
    ~AlbertaMarkerVector()
    Definition treeiterator.hh:68
    \n+
    void clear()
    Definition treeiterator.hh:84
    \n+
    AlbertaMarkerVector(const This &other)
    Definition treeiterator.hh:61
    \n+
    void print(std::ostream &out=std::cout) const
    print for debugin' only
    Definition treeiterator.hh:319
    \n+\n+
    Alberta::ElementInfo< dimension > ElementInfo
    Definition treeiterator.hh:139
    \n+
    static void apply(const DofNumbering &dofNumbering, int *(&marker)[dimension+1], const ElementInfo &elementInfo)
    Definition treeiterator.hh:141
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+\n+
    InterfaceType::Implementation ImplementationType
    Definition common/grid.hh:1108
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,471 +1,690 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-undefine-2.0.hh\n+treeiterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-12#ifdef _ALBERTA_H_\n-13 #undef _ALBERTA_H_\n-14#endif // _ALBERTA_H_\n-15\n-16#ifdef ALBERTA_VERSION\n-17 #undef ALBERTA_VERSION\n-18#endif // ALBERTA_VERSION\n-19\n-20#ifdef ALBERTA_DEBUG\n-21 #undef ALBERTA_DEBUG\n-22#endif // ALBERTA_DEBUG\n-23\n-24#ifdef DIM_MAX\n-25 #undef DIM_MAX\n-26#endif // DIM_MAX\n-27\n-28#ifdef N_VERTICES\n-29 #undef N_VERTICES\n-30#endif // N_VERTICES\n-31\n-32#ifdef N_EDGES\n-33 #undef N_EDGES\n-34#endif // N_EDGES\n-35\n-36#ifdef N_WALLS\n-37 #undef N_WALLS\n-38#endif // N_WALLS\n+5\n+6#ifndef DUNE_ALBERTA_TREEITERATOR_HH\n+7#define DUNE_ALBERTA_TREEITERATOR_HH\n+8\n+9#include \n+10\n+11#include \n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh>\n+16\n+17#if HAVE_ALBERTA\n+18\n+19namespace _\bD_\bu_\bn_\be\n+20{\n+21\n+22 // AlbertaMarkerVector\n+23 // -------------------\n+24\n+33 template< int dim, int dimworld >\n+_\b3_\b4 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+35 {\n+36 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n+37\n+38 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b> _\bG_\br_\bi_\bd;\n 39\n-40#ifdef N_FACES\n-41 #undef N_FACES\n-42#endif // N_FACES\n+40 //friend class AlbertaGrid< dim, dimworld >;\n+41\n+42 static const int dimension = _\bG_\br_\bi_\bd_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n 43\n-44#ifdef N_NEIGH\n-45 #undef N_NEIGH\n-46#endif // N_NEIGH\n-47\n-48#ifdef DIM_FAC\n-49 #undef DIM_FAC\n-50#endif // DIM_FAC\n+44 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg;\n+45 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+46\n+47 template< bool >\n+48 struct NoMarkSubEntities;\n+49 template< bool >\n+50 struct MarkSubEntities;\n 51\n-52#ifdef N_VERTICES_0D\n-53 #undef N_VERTICES_0D\n-54#endif // N_VERTICES_0D\n-55\n-56#ifdef N_EDGES_0D\n-57 #undef N_EDGES_0D\n-58#endif // N_EDGES_0D\n-59\n-60#ifdef N_FACES_0D\n-61 #undef N_FACES_0D\n-62#endif // N_FACES_0D\n-63\n-64#ifdef N_NEIGH_0D\n-65 #undef N_NEIGH_0D\n-66#endif // N_NEIGH_0D\n+52 public:\n+_\b5_\b4 explicit _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering )\n+55 : dofNumbering_( dofNumbering )\n+56 {\n+57 for( int codim = 0; codim <= dimension; ++codim )\n+58 marker_[ codim ] = 0;\n+59 }\n+60\n+_\b6_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br ( const _\bT_\bh_\bi_\bs &other )\n+62 : dofNumbering_( other.dofNumbering_ )\n+63 {\n+64 for( int codim = 0; codim <= dimension; ++codim )\n+65 marker_[ codim ] = 0;\n+66 }\n 67\n-68#ifdef N_WALLS_0D\n-69 #undef N_WALLS_0D\n-70#endif // N_WALLS_0D\n-71\n-72#ifdef N_VERTICES_1D\n-73 #undef N_VERTICES_1D\n-74#endif // N_VERTICES_1D\n+_\b6_\b8 _\b~_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br ()\n+69 {\n+70 _\bc_\bl_\be_\ba_\br();\n+71 }\n+72\n+73 private:\n+74 This &operator= ( const This & );\n 75\n-76#ifdef N_EDGES_1D\n-77 #undef N_EDGES_1D\n-78#endif // N_EDGES_1D\n-79\n-80#ifdef N_FACES_1D\n-81 #undef N_FACES_1D\n-82#endif // N_FACES_1D\n+76 public:\n+78 template< int codim >\n+_\b7_\b9 bool _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity )\n+const;\n+80\n+81 template< int firstCodim, class Iterator >\n+_\b8_\b2 void _\bm_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ( const Iterator &begin, const Iterator &end );\n 83\n-84#ifdef N_NEIGH_1D\n-85 #undef N_NEIGH_1D\n-86#endif // N_NEIGH_1D\n-87\n-88#ifdef N_WALLS_1D\n-89 #undef N_WALLS_1D\n-90#endif // N_WALLS_1D\n-91\n-92#ifdef N_VERTICES_2D\n-93 #undef N_VERTICES_2D\n-94#endif // N_VERTICES_2D\n-95\n-96#ifdef N_EDGES_2D\n-97 #undef N_EDGES_2D\n-98#endif // N_EDGES_2D\n+_\b8_\b4 void _\bc_\bl_\be_\ba_\br ()\n+85 {\n+86 for( int codim = 0; codim <= dimension; ++codim )\n+87 {\n+88 if( marker_[ codim ] != 0 )\n+89 delete[] marker_[ codim ];\n+90 marker_[ codim ] = 0;\n+91 }\n+92 }\n+93\n+_\b9_\b5 bool _\bu_\bp_\b2_\bD_\ba_\bt_\be () const\n+96 {\n+97 return (marker_[ dimension ] != 0);\n+98 }\n 99\n-100#ifdef N_FACES_2D\n-101 #undef N_FACES_2D\n-102#endif // N_FACES_2D\n-103\n-104#ifdef N_NEIGH_2D\n-105 #undef N_NEIGH_2D\n-106#endif // N_NEIGH_2D\n+_\b1_\b0_\b1 void _\bp_\br_\bi_\bn_\bt ( std::ostream &out = std::cout ) const;\n+102\n+103 private:\n+104 const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering_;\n+105 int *marker_[ dimension+1 ];\n+106 };\n 107\n-108#ifdef N_WALLS_2D\n-109 #undef N_WALLS_2D\n-110#endif // N_WALLS_2D\n-111\n-112#ifdef N_VERTICES_3D\n-113 #undef N_VERTICES_3D\n-114#endif // N_VERTICES_3D\n-115\n-116#ifdef N_EDGES_3D\n-117 #undef N_EDGES_3D\n-118#endif // N_EDGES_3D\n-119\n-120#ifdef N_FACES_3D\n-121 #undef N_FACES_3D\n-122#endif // N_FACES_3D\n-123\n-124#ifdef N_NEIGH_3D\n-125 #undef N_NEIGH_3D\n-126#endif // N_NEIGH_3D\n-127\n-128#ifdef N_WALLS_3D\n-129 #undef N_WALLS_3D\n-130#endif // N_WALLS_3D\n-131\n-132#ifdef N_VERTICES_MAX\n-133 #undef N_VERTICES_MAX\n-134#endif // N_VERTICES_MAX\n-135\n-136#ifdef N_EDGES_MAX\n-137 #undef N_EDGES_MAX\n-138#endif // N_EDGES_MAX\n-139\n-140#ifdef N_FACES_MAX\n-141 #undef N_FACES_MAX\n-142#endif // N_FACES_MAX\n-143\n-144#ifdef N_NEIGH_MAX\n-145 #undef N_NEIGH_MAX\n-146#endif // N_NEIGH_MAX\n-147\n-148#ifdef N_WALLS_MAX\n-149 #undef N_WALLS_MAX\n-150#endif // N_WALLS_MAX\n-151\n-152#ifdef N_LAMBDA\n-153 #undef N_LAMBDA\n-154#endif // N_LAMBDA\n+108\n+109\n+110 // AlbertaMarkerVector::NoMarkSubEntities\n+111 // --------------------------------------\n+112\n+113 template< int dim, int dimworld >\n+114 template< bool >\n+115 struct _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br< dim, dimworld >::NoMarkSubEntities\n+116 {\n+117 template< int firstCodim, class Iterator >\n+118 static void mark ( [[maybe_unused]] const DofNumbering & dofNumbering,\n+119 [[maybe_unused]] int *(&marker)[ dimension + 1 ],\n+120 [[maybe_unused]] const Iterator &begin,\n+121 [[maybe_unused]] const Iterator &end )\n+122 {}\n+123 };\n+124\n+125\n+126\n+127 // AlbertaMarkerVector::MarkSubEntities\n+128 // ------------------------------------\n+129\n+130 template< int dim, int dimworld >\n+131 template< bool >\n+132 struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities\n+133 {\n+134 template< int codim >\n+_\b1_\b3_\b5 struct _\bC_\bo_\bd_\bi_\bm\n+136 {\n+_\b1_\b3_\b7 static const int numSubEntities = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bc_\bo_\bd_\bi_\bm\n+_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+138\n+_\b1_\b3_\b9 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n+140\n+_\b1_\b4_\b1 static void _\ba_\bp_\bp_\bl_\by ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering,\n+142 int *(&_\bm_\ba_\br_\bk_\be_\br)[ dimension + 1 ],\n+143 const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo )\n+144 {\n+145 int *array = _\bm_\ba_\br_\bk_\be_\br[ _\bc_\bo_\bd_\bi_\bm ];\n+146\n+147 const int index = dofNumbering( elementInfo, 0, 0 );\n+148 for( int i = 0; i < numSubEntities; ++i )\n+149 {\n+150 int &mark = array[ dofNumbering( elementInfo, _\bc_\bo_\bd_\bi_\bm, i ) ];\n+151 mark = std::max( index, mark );\n+152 }\n+153 }\n+154 };\n 155\n-156#ifdef LAMBDA_MAX\n-157 #undef LAMBDA_MAX\n-158#endif // LAMBDA_MAX\n-159\n-160#ifdef INDEX\n-161 #undef INDEX\n-162#endif // INDEX\n-163\n-164#ifdef INDEX\n-165 #undef INDEX\n-166#endif // INDEX\n-167\n-168#ifdef IS_LEAF_EL\n-169 #undef IS_LEAF_EL\n-170#endif // IS_LEAF_EL\n-171\n-172#ifdef LEAF_DATA\n-173 #undef LEAF_DATA\n-174#endif // LEAF_DATA\n-175\n-176#ifdef INTERIOR\n-177 #undef INTERIOR\n-178#endif // INTERIOR\n+156 template< int firstCodim, class Iterator >\n+157 static void mark ( const _\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg &dofNumbering, int *(&marker)\n+[ dimension + 1 ],\n+158 const Iterator &begin, const Iterator &end )\n+159 {\n+160 for( int codim = firstCodim; codim <= dimension; ++codim )\n+161 {\n+162 const int size = dofNumbering._\bs_\bi_\bz_\be( codim );\n+163 marker[ codim ] = new int[ size ];\n+164\n+165 int *array = marker[ codim ];\n+166 for( int i = 0; i < size; ++i )\n+167 array[ i ] = -1;\n+168 }\n+169\n+170 for( Iterator it = begin; it != end; ++it )\n+171 {\n+172 const ElementInfo &elementInfo = it->impl().elementInfo();\n+173 Hybrid::forEach( std::make_index_sequence< dimension+1-firstCodim >{},\n+174 [ & ]( auto i ){ Codim< i+firstCodim >::apply( dofNumbering, marker,\n+elementInfo ); } );\n+175 }\n+176 }\n+177 };\n+178\n 179\n-180#ifdef DIRICHLET\n-181 #undef DIRICHLET\n-182#endif // DIRICHLET\n+180\n+181 // AlbertaGridTreeIterator\n+182 // -----------------------\n 183\n-184#ifdef NEUMANN\n-185 #undef NEUMANN\n-186#endif // NEUMANN\n-187\n-188#ifdef IS_NEUMANN\n-189 #undef IS_NEUMANN\n-190#endif // IS_NEUMANN\n+187 template< int codim, class GridImp, bool leafIterator >\n+_\b1_\b8_\b8 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+189 {\n+190 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b> _\bT_\bh_\bi_\bs;\n 191\n-192#ifdef IS_DIRICHLET\n-193 #undef IS_DIRICHLET\n-194#endif // IS_DIRICHLET\n-195\n-196#ifdef IS_INTERIOR\n-197 #undef IS_INTERIOR\n-198#endif // IS_INTERIOR\n+192 public:\n+_\b1_\b9_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = GridImp::dimension;\n+_\b1_\b9_\b4 static const int _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = codim;\n+_\b1_\b9_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd = GridImp::dimensionworld;\n+196\n+197 private:\n+198 friend class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd >;\n 199\n-200#ifdef N_NODE_TYPES\n-201 #undef N_NODE_TYPES\n-202#endif // N_NODE_TYPES\n-203\n-204#ifdef VERTEX\n-205 #undef VERTEX\n-206#endif // VERTEX\n-207\n-208#ifdef CENTER\n-209 #undef CENTER\n-210#endif // CENTER\n+200 static const int numSubEntities\n+201 = _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+202\n+203 public:\n+_\b2_\b0_\b4 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br;\n+_\b2_\b0_\b5 typedef typename MeshPointer::MacroIterator _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+206\n+_\b2_\b0_\b7 typedef typename GridImp::template Codim< codim >::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b2_\b0_\b8 typedef _\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b> _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt;\n+_\b2_\b0_\b9 typedef typename _\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n+_\b2_\b1_\b0 typedef typename EntityImp::ElementInfo _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo;\n 211\n-212#ifdef EDGE\n-213 #undef EDGE\n-214#endif // EDGE\n+_\b2_\b1_\b2 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd_\b _\b> _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n+213\n+_\b2_\b1_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ();\n 215\n-216#ifdef FACE\n-217 #undef FACE\n-218#endif // FACE\n-219\n-220#ifdef LIST_ENTRY\n-221 #undef LIST_ENTRY\n-222#endif // LIST_ENTRY\n-223\n-224#ifdef WALL_BOUND\n-225 #undef WALL_BOUND\n-226#endif // WALL_BOUND\n-227\n-228#ifdef FILL_NOTHING\n-229 #undef FILL_NOTHING\n-230#endif // FILL_NOTHING\n-231\n-232#ifdef FILL_COORDS\n-233 #undef FILL_COORDS\n-234#endif // FILL_COORDS\n+_\b2_\b1_\b7 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const _\bT_\bh_\bi_\bs &other );\n+218\n+_\b2_\b2_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other );\n+221\n+_\b2_\b2_\b3 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int travLevel );\n+224\n+_\b2_\b2_\b6 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+227 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *marker,\n+228 int travLevel );\n+229\n+_\b2_\b3_\b1 bool _\be_\bq_\bu_\ba_\bl_\bs ( const _\bT_\bh_\bi_\bs &other ) const\n+232 {\n+233 return entity_.impl().equals( other.entity_.impl() );\n+234 }\n 235\n-236#ifdef FILL_BOUND\n-237 #undef FILL_BOUND\n-238#endif // FILL_BOUND\n-239\n-240#ifdef FILL_NEIGH\n-241 #undef FILL_NEIGH\n-242#endif // FILL_NEIGH\n-243\n-244#ifdef FILL_OPP_COORDS\n-245 #undef FILL_OPP_COORDS\n-246#endif // FILL_OPP_COORDS\n+_\b2_\b3_\b7 _\bE_\bn_\bt_\bi_\bt_\by &_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be () const\n+238 {\n+239 return entity_;\n+240 }\n+241\n+_\b2_\b4_\b3 int _\bl_\be_\bv_\be_\bl () const\n+244 {\n+245 return entity_.impl().level();\n+246 }\n 247\n-248#ifdef FILL_ORIENTATION\n-249 #undef FILL_ORIENTATION\n-250#endif // FILL_ORIENTATION\n-251\n-252#ifdef FILL_EL_TYPE\n-253 #undef FILL_EL_TYPE\n-254#endif // FILL_EL_TYPE\n-255\n-256#ifdef FILL_PROJECTION\n-257 #undef FILL_PROJECTION\n-258#endif // FILL_PROJECTION\n-259\n-260#ifdef FILL_ANY\n-261 #undef FILL_ANY\n-262#endif // FILL_ANY\n-263\n-264#ifdef HOOK_QUEUE_OFFSET\n-265 #undef HOOK_QUEUE_OFFSET\n-266#endif // HOOK_QUEUE_OFFSET\n-267\n-268#ifdef RUN_HOOKS_0\n-269 #undef RUN_HOOKS_0\n-270#endif // RUN_HOOKS_0\n+_\b2_\b4_\b9 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+250\n+251 protected:\n+_\b2_\b5_\b3 const GridImp &_\bg_\br_\bi_\bd () const\n+254 {\n+255 return entity_.impl().grid();\n+256 }\n+257\n+258 private:\n+259 void nextElement ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n+260 void nextElementStop (_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n+261 bool stopAtElement ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo ) const;\n+262\n+263 void goNext ( _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n+264 void goNext ( const std::integral_constant< int, 0 > cdVariable,\n+265 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n+266 void goNext ( const std::integral_constant< int, 1 > cdVariable,\n+267 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n+268 template< int cd >\n+269 void goNext ( const std::integral_constant< int, cd > cdVariable,\n+270 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo );\n 271\n-272#ifdef RUN_BAS_FCTS_HOOKS\n-273 #undef RUN_BAS_FCTS_HOOKS\n-274#endif // RUN_BAS_FCTS_HOOKS\n-275\n-276#ifdef RUN_HOOKS_1\n-277 #undef RUN_HOOKS_1\n-278#endif // RUN_HOOKS_1\n+272 mutable _\bE_\bn_\bt_\bi_\bt_\by entity_;\n+273\n+275 int level_;\n+276\n+278 int subEntity_;\n 279\n-280#ifdef RUN_HOOKS_2\n-281 #undef RUN_HOOKS_2\n-282#endif // RUN_HOOKS_2\n-283\n-284#ifdef RUN_HOOKS_3\n-285 #undef RUN_HOOKS_3\n-286#endif // RUN_HOOKS_3\n+280 _\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br macroIterator_;\n+281\n+282 // knows on which element a point,edge,face is viewed\n+283 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *marker_;\n+284 };\n+285\n+286\n 287\n-288#ifdef RUN_HOOKS_4\n-289 #undef RUN_HOOKS_4\n-290#endif // RUN_HOOKS_4\n-291\n-292#ifdef RUN_HOOKS_5\n-293 #undef RUN_HOOKS_5\n-294#endif // RUN_HOOKS_5\n-295\n-296#ifdef RUN_HOOKS_6\n-297 #undef RUN_HOOKS_6\n-298#endif // RUN_HOOKS_6\n-299\n-300#ifdef RUN_HOOKS_7\n-301 #undef RUN_HOOKS_7\n-302#endif // RUN_HOOKS_7\n-303\n-304#ifdef CALL_EVERY_EL_PREORDER\n-305 #undef CALL_EVERY_EL_PREORDER\n-306#endif // CALL_EVERY_EL_PREORDER\n-307\n-308#ifdef CALL_EVERY_EL_INORDER\n-309 #undef CALL_EVERY_EL_INORDER\n-310#endif // CALL_EVERY_EL_INORDER\n-311\n-312#ifdef CALL_EVERY_EL_POSTORDER\n-313 #undef CALL_EVERY_EL_POSTORDER\n-314#endif // CALL_EVERY_EL_POSTORDER\n-315\n-316#ifdef CALL_LEAF_EL\n-317 #undef CALL_LEAF_EL\n-318#endif // CALL_LEAF_EL\n-319\n-320#ifdef CALL_LEAF_EL_LEVEL\n-321 #undef CALL_LEAF_EL_LEVEL\n-322#endif // CALL_LEAF_EL_LEVEL\n-323\n-324#ifdef CALL_EL_LEVEL\n-325 #undef CALL_EL_LEVEL\n-326#endif // CALL_EL_LEVEL\n-327\n-328#ifdef CALL_MG_LEVEL\n-329 #undef CALL_MG_LEVEL\n-330#endif // CALL_MG_LEVEL\n-331\n-332#ifdef TEST_FLAG\n-333 #undef TEST_FLAG\n-334#endif // TEST_FLAG\n+288 // Implementation of AlbertaMarkerVector\n+289 // -------------------------------------\n+290\n+291 template< int dim, int dimworld >\n+292 template< int codim >\n+293 inline bool AlbertaMarkerVector< dim, dimworld >\n+_\b2_\b9_\b4 ::subEntityOnElement ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo &elementInfo, int subEntity )\n+const\n+295 {\n+296 assert( marker_[ codim ] != 0 );\n+297\n+298 const int subIndex = dofNumbering_( elementInfo, codim, subEntity );\n+299 const int markIndex = marker_[ codim ][ subIndex ];\n+300 assert( (markIndex >= 0) );\n+301\n+302 const int index = dofNumbering_( elementInfo, 0, 0 );\n+303 return (markIndex == index);\n+304 }\n+305\n+306\n+307 template< int dim, int dimworld >\n+308 template< int firstCodim, class Iterator >\n+309 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+_\b3_\b1_\b0_\b _\b:_\b:_\bm_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs ( const Iterator &begin, const Iterator &end )\n+311 {\n+312 clear();\n+313 std::conditional< (firstCodim <= dimension), MarkSubEntities,\n+NoMarkSubEntities >::type\n+314 ::template mark< firstCodim, Iterator >( dofNumbering_, marker_, begin, end\n+);\n+315 }\n+316\n+317\n+318 template< int dim, int dimworld >\n+_\b3_\b1_\b9 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bp_\br_\bi_\bn_\bt ( std::ostream &out\n+) const\n+320 {\n+321 for( int codim = 1; codim <= dimension; ++codim )\n+322 {\n+323 int *marker = marker_[ codim ];\n+324 if( marker != 0 )\n+325 {\n+326 const int size = dofNumbering_.size( codim );\n+327 out << std::endl;\n+328 out << \"Codimension \" << codim << \" (\" << size << \" entries)\" << std::endl;\n+329 for( int i = 0; i < size; ++i )\n+330 out << \"subentity \" << i << \" visited on Element \" << marker[ i ] << std::\n+endl;\n+331 }\n+332 }\n+333 }\n+334\n 335\n-336#ifdef DOF_ADMIN_DEF\n-337 #undef DOF_ADMIN_DEF\n-338#endif // DOF_ADMIN_DEF\n+336\n+337 // Implementation of AlbertaGridTreeIterator\n+338 // -----------------------------------------\n 339\n-340#ifdef DOF_FREE_SIZE\n-341 #undef DOF_FREE_SIZE\n-342#endif // DOF_FREE_SIZE\n-343\n-344#ifdef DOF_UNIT_ALL_FREE\n-345 #undef DOF_UNIT_ALL_FREE\n-346#endif // DOF_UNIT_ALL_FREE\n-347\n-348#ifdef FOR_ALL_DOFS\n-349 #undef FOR_ALL_DOFS\n-350#endif // FOR_ALL_DOFS\n-351\n-352#ifdef FOR_ALL_FREE_DOFS\n-353 #undef FOR_ALL_FREE_DOFS\n-354#endif // FOR_ALL_FREE_DOFS\n-355\n-356#ifdef DOWBM_FULL\n-357 #undef DOWBM_FULL\n-358#endif // DOWBM_FULL\n-359\n-360#ifdef DOWBM_SYMM\n-361 #undef DOWBM_SYMM\n-362#endif // DOWBM_SYMM\n-363\n-364#ifdef DOWBM_DIAG\n-365 #undef DOWBM_DIAG\n-366#endif // DOWBM_DIAG\n-367\n-368#ifdef ROW_LENGTH\n-369 #undef ROW_LENGTH\n-370#endif // ROW_LENGTH\n-371\n-372#ifdef ENTRY_USED\n-373 #undef ENTRY_USED\n-374#endif // ENTRY_USED\n-375\n-376#ifdef ENTRY_NOT_USED\n-377 #undef ENTRY_NOT_USED\n-378#endif // ENTRY_NOT_USED\n-379\n-380#ifdef UNUSED_ENTRY\n-381 #undef UNUSED_ENTRY\n-382#endif // UNUSED_ENTRY\n-383\n-384#ifdef NO_MORE_ENTRIES\n-385 #undef NO_MORE_ENTRIES\n-386#endif // NO_MORE_ENTRIES\n-387\n-388#ifdef LAGRANGE_NODES\n-389 #undef LAGRANGE_NODES\n-390#endif // LAGRANGE_NODES\n-391\n-392#ifdef MAX_N_QUAD_POINTS\n-393 #undef MAX_N_QUAD_POINTS\n-394#endif // MAX_N_QUAD_POINTS\n-395\n-396#ifdef INIT_PHI\n-397 #undef INIT_PHI\n-398#endif // INIT_PHI\n-399\n-400#ifdef INIT_GRD_PHI\n-401 #undef INIT_GRD_PHI\n-402#endif // INIT_GRD_PHI\n-403\n-404#ifdef INIT_D2_PHI\n-405 #undef INIT_D2_PHI\n-406#endif // INIT_D2_PHI\n-407\n-408#ifdef MESH_REFINED\n-409 #undef MESH_REFINED\n-410#endif // MESH_REFINED\n-411\n-412#ifdef MESH_COARSENED\n-413 #undef MESH_COARSENED\n-414#endif // MESH_COARSENED\n-415\n-416#ifdef H1_NORM\n-417 #undef H1_NORM\n-418#endif // H1_NORM\n+340 template< int codim, class GridImp, bool leafIterator >\n+341 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+_\b3_\b4_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+343 : entity_(),\n+344 level_( -1 ),\n+345 subEntity_( -1 ),\n+346 macroIterator_(),\n+347 marker_( NULL )\n+348 {}\n+349\n+350 template< int codim, class GridImp, bool leafIterator >\n+351 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+_\b3_\b5_\b2_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &grid,\n+353 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *marker,\n+354 int travLevel )\n+355 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n+356 level_( travLevel ),\n+357 subEntity_( (codim == 0 ? 0 : -1) ),\n+358 macroIterator_( grid.meshPointer().begin() ),\n+359 marker_( marker )\n+360 {\n+361 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo elementInfo = *macroIterator_;\n+362 nextElementStop( elementInfo );\n+363 if( codim > 0 )\n+364 goNext( elementInfo );\n+365 // it is ok to set the invalid ElementInfo\n+366 entity_.impl().setElement( elementInfo, subEntity_ );\n+367 }\n+368\n+369\n+370 // Make LevelIterator with point to element from previous iterations\n+371 template< int codim, class GridImp, bool leafIterator >\n+372 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+_\b3_\b7_\b3_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &grid,\n+374 int travLevel )\n+375 : entity_( _\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp( grid ) ),\n+376 level_( travLevel ),\n+377 subEntity_( -1 ),\n+378 macroIterator_( grid.meshPointer().end() ),\n+379 marker_( 0 )\n+380 {}\n+381\n+382\n+383 // Make LevelIterator with point to element from previous iterations\n+384 template< int codim, class GridImp, bool leafIterator >\n+385 inline _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+_\b3_\b8_\b6_\b _\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br( const _\bT_\bh_\bi_\bs &other )\n+387 : entity_( other.entity_ ),\n+388 level_( other.level_ ),\n+389 subEntity_( other.subEntity_ ),\n+390 macroIterator_( other.macroIterator_ ),\n+391 marker_( other.marker_ )\n+392 {}\n+393\n+394\n+395 // Make LevelIterator with point to element from previous iterations\n+396 template< int codim, class GridImp, bool leafIterator >\n+397 inline typename _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>_\b:_\b:\n+_\bT_\bh_\bi_\bs &\n+_\b3_\b9_\b8 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const\n+_\bT_\bh_\bi_\bs &other )\n+399 {\n+400 entity_ = other.entity_;\n+401 level_ = other.level_;\n+402 subEntity_ = other.subEntity_;\n+403 macroIterator_ = other.macroIterator_;\n+404 marker_ = other.marker_;\n+405\n+406 return *this;\n+407 }\n+408\n+409\n+410 template< int codim, class GridImp, bool leafIterator >\n+_\b4_\b1_\b1 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>_\b:_\b:\n+_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+412 {\n+413 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo elementInfo = entity_.impl().elementInfo_;\n+414 goNext ( elementInfo );\n+415 // it is ok to set the invalid ElementInfo\n+416 entity_.impl().setElement( elementInfo, subEntity_ );\n+417 }\n+418\n 419\n-420#ifdef L2_NORM\n-421 #undef L2_NORM\n-422#endif // L2_NORM\n-423\n-424#ifdef GRAPH_MESH_BOUNDARY\n-425 #undef GRAPH_MESH_BOUNDARY\n-426#endif // GRAPH_MESH_BOUNDARY\n-427\n-428#ifdef GRAPH_MESH_ELEMENT_MARK\n-429 #undef GRAPH_MESH_ELEMENT_MARK\n-430#endif // GRAPH_MESH_ELEMENT_MARK\n-431\n-432#ifdef GRAPH_MESH_VERTEX_DOF\n-433 #undef GRAPH_MESH_VERTEX_DOF\n-434#endif // GRAPH_MESH_VERTEX_DOF\n-435\n-436#ifdef GRAPH_MESH_ELEMENT_INDEX\n-437 #undef GRAPH_MESH_ELEMENT_INDEX\n-438#endif // GRAPH_MESH_ELEMENT_INDEX\n+420 template< int codim, class GridImp, bool leafIterator >\n+421 inline void _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bl_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b _\b>\n+422_\b _\b:_\b:_\bn_\be_\bx_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( ElementInfo &elementInfo )\n+423 {\n+424 if( elementInfo.isLeaf() || (elementInfo.level() >= level_) )\n+425 {\n+426 while( (elementInfo.level() > 0) && (elementInfo.indexInFather() == 1) )\n+427 elementInfo = elementInfo.father();\n+428 if( elementInfo.level() == 0 )\n+429 {\n+430 ++macroIterator_;\n+431 elementInfo = *macroIterator_;\n+432 }\n+433 else\n+434 elementInfo = elementInfo.father().child( 1 );\n+435 }\n+436 else\n+437 elementInfo = elementInfo.child( 0 );\n+438 }\n 439\n-440#ifdef GET_MESH\n-441 #undef GET_MESH\n-442#endif // GET_MESH\n-443\n-444#ifdef GET_DOF_VEC\n-445 #undef GET_DOF_VEC\n-446#endif // GET_DOF_VEC\n-447\n-448#ifdef CARD_SN_MAX\n-449 #undef CARD_SN_MAX\n-450#endif // CARD_SN_MAX\n-451\n-452#ifdef INIT_UH\n-453 #undef INIT_UH\n-454#endif // INIT_UH\n-455\n-456#ifdef INIT_GRD_UH\n-457 #undef INIT_GRD_UH\n-458#endif // INIT_GRD_UH\n+440\n+441 template< int codim, class GridImp, bool leafIterator >\n+442 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n+443 ::nextElementStop ( ElementInfo &elementInfo )\n+444 {\n+445 while( !(!elementInfo || stopAtElement( elementInfo )) )\n+446 nextElement( elementInfo );\n+447 }\n+448\n+449\n+450 template< int codim, class GridImp, bool leafIterator >\n+451 inline bool AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n+452 ::stopAtElement ( const ElementInfo &elementInfo ) const\n+453 {\n+454 if( !elementInfo )\n+455 return true;\n+456 return (leafIterator ? elementInfo.isLeaf() : (level_ == elementInfo.level\n+()));\n+457 }\n+458\n 459\n-460#ifdef TRAVERSE_START\n-461 #undef TRAVERSE_START\n-462#endif // TRAVERSE_START\n-463\n-464#ifdef TRAVERSE_STOP\n-465 #undef TRAVERSE_STOP\n-466#endif // TRAVERSE_STOP\n+460 template< int codim, class GridImp, bool leafIterator >\n+461 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n+462 ::goNext ( ElementInfo &elementInfo )\n+463 {\n+464 std::integral_constant< int, codim > codimVariable;\n+465 goNext( codimVariable, elementInfo );\n+466 }\n+467\n+468 template< int codim, class GridImp, bool leafIterator >\n+469 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n+470 ::goNext ( const std::integral_constant< int, 0 > /* cdVariable */,\n+471 ElementInfo &elementInfo )\n+472 {\n+473 assert( stopAtElement( elementInfo ) );\n+474\n+475 nextElement( elementInfo );\n+476 nextElementStop( elementInfo );\n+477 }\n+478\n+479 template< int codim, class GridImp, bool leafIterator >\n+480 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n+481 ::goNext ( const std::integral_constant< int, 1 > cdVariable,\n+482 ElementInfo &elementInfo )\n+483 {\n+484 assert( stopAtElement( elementInfo ) );\n+485\n+486 ++subEntity_;\n+487 if( subEntity_ >= numSubEntities )\n+488 {\n+489 subEntity_ = 0;\n+490 nextElement( elementInfo );\n+491 nextElementStop( elementInfo );\n+492 if( !elementInfo )\n+493 return;\n+494 }\n+495\n+496 if( leafIterator )\n+497 {\n+498 const int face = (dimension == 1 ? (numSubEntities-1)-subEntity_ :\n+subEntity_);\n+499\n+500 const _\bA_\bL_\bB_\bE_\bR_\bT_\bA EL *neighbor = elementInfo.elInfo().neigh[ face ];\n+501 if( (neighbor != NULL) && !elementInfo.isBoundary( face ) )\n+502 {\n+503 // face is reached from element with largest number\n+504 const int elIndex = grid().dofNumbering() ( elementInfo, 0, 0 );\n+505 const int nbIndex = grid().dofNumbering() ( neighbor, 0, 0 );\n+506 if( elIndex < nbIndex )\n+507 goNext( cdVariable, elementInfo );\n+508 }\n+509 // uncomment this assertion only if codimension 1 entities are marked\n+510 // assert( marker_->template subEntityOnElement< 1 >( elementInfo,\n+subEntity_ ) );\n+511 }\n+512 else\n+513 {\n+514 assert( marker_ != 0 );\n+515 if( !marker_->template subEntityOnElement< 1 >( elementInfo, subEntity_ ) )\n+516 goNext( cdVariable, elementInfo );\n+517 }\n+518 }\n+519\n+520 template< int codim, class GridImp, bool leafIterator >\n+521 template< int cd >\n+522 inline void AlbertaGridTreeIterator< codim, GridImp, leafIterator >\n+523 ::goNext ( const std::integral_constant< int, cd > cdVariable,\n+524 ElementInfo &elementInfo )\n+525 {\n+526 assert( stopAtElement( elementInfo ) );\n+527\n+528 ++subEntity_;\n+529 if( subEntity_ >= numSubEntities )\n+530 {\n+531 subEntity_ = 0;\n+532 nextElement( elementInfo );\n+533 nextElementStop( elementInfo );\n+534 if( !elementInfo )\n+535 return;\n+536 }\n+537\n+538 assert( marker_ != 0 );\n+539 if( !marker_->template subEntityOnElement< cd >( elementInfo, subEntity_ )\n+)\n+540 goNext( cdVariable, elementInfo );\n+541 }\n+542\n+543}\n+544\n+545#endif // #if HAVE_ALBERTA\n+546\n+547#endif // #ifndef DUNE_ALBERTA_TREEITERATOR_HH\n+_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+#define ALBERTA\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\bm_\be_\bs_\bh_\bp_\bo_\bi_\bn_\bt_\be_\br_\b._\bh_\bh\n+provides a wrapper for ALBERTA's mesh structure\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n+_\bD_\bu_\bn_\be\n+Include standard header files.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bw_\bo_\br_\bl_\bd_\b _\b>_\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 agrid.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\by_\bD_\bo_\bf_\bN_\bu_\bm_\bb_\be_\br_\bi_\bn_\bg_\b:_\b:_\bs_\bi_\bz_\be\n+int size(int codim) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofadmin.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const This &other) const\n+equality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bb_\bj_\be_\bc_\bt\n+MakeableInterfaceObject< Entity > EntityObject\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:208\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+Alberta::MeshPointer< dimension > MeshPointer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:204\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridTreeIterator(const GridImp &grid, const MarkerVector *marker, int\n+travLevel)\n+Constructor making begin iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:352\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridTreeIterator(const GridImp &grid, int travLevel)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:373\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp\n+EntityObject::ImplementationType EntityImp\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int codimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+MeshPointer::MacroIterator MacroIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const This &other)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:398\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Entity & dereference() const\n+dereferencing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:237\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+AlbertaMarkerVector< dimension, dimensionworld > MarkerVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:212\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+ask for level of entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\bw_\bo_\br_\bl_\bd\n+static const int dimensionworld\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridTreeIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:342\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bg_\br_\bi_\bd\n+const GridImp & grid() const\n+obtain a reference to the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\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 treeiterator.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridTreeIterator(const This &other)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:386\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+EntityImp::ElementInfo ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+marker assigning subentities to one element containing them\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+AlbertaMarkerVector(const DofNumbering &dofNumbering)\n+create AlbertaMarkerVector with empty vectors\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bu_\bp_\b2_\bD_\ba_\bt_\be\n+bool up2Date() const\n+return true if marking is up to date\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by_\bO_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n+bool subEntityOnElement(const ElementInfo &elementInfo, int subEntity) const\n+visit subentity on this element?\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:294\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bm_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n+void markSubEntities(const Iterator &begin, const Iterator &end)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\b~_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+~AlbertaMarkerVector()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bc_\bl_\be_\ba_\br\n+void clear()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+AlbertaMarkerVector(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std::ostream &out=std::cout) const\n+print for debugin' only\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bf_\bo\n+Alberta::ElementInfo< dimension > ElementInfo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b:_\b:_\bC_\bo_\bd_\bi_\bm_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(const DofNumbering &dofNumbering, int *(&marker)\n+[dimension+1], const ElementInfo &elementInfo)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\ba_\bk_\be_\ba_\bb_\bl_\be_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bO_\bb_\bj_\be_\bc_\bt_\b<_\b _\bE_\bn_\bt_\bi_\bt_\by_\b _\b>_\b:_\b:_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+InterfaceType::Implementation ImplementationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/grid.hh:1108\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00695.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00593.html", "comments": ["Files 95% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: geometryreference.hh File Reference\n+dune-grid: idset.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,42 @@\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n-
    geometryreference.hh File Reference
    \n+
    idset.hh File Reference
    \n
    \n
    \n-\n-

    Wrapper and interface classes for element geometries. \n-More...

    \n-
    #include <dune/common/typetraits.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/grid/common/geometry.hh>
    \n+\n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

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

    \n Classes

    class  Dune::GeometryReference< Implementation >
     
    class  Dune::LocalGeometryReference< mydim, cdim, Grid >
    class  Dune::GeoGrid::IdSet< Grid, HostIdSet >
     
    \n \n \n \n \n+\n+\n+\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::GeoGrid
     namespace containing the implementations of GeometryGrid
     
    \n-

    Detailed Description

    \n-

    Wrapper and interface classes for element geometries.

    \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,23 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n+ * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-geometryreference.hh File Reference\n-Wrapper and interface classes for element geometries. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n+idset.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bi_\bn_\bd_\be_\bx_\bi_\bd_\bs_\be_\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:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bc_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bI_\bd_\bS_\be_\bt_\b<_\b _\bG_\br_\bi_\bd_\b,_\b _\bH_\bo_\bs_\bt_\bI_\bd_\bS_\be_\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 \u00a0 Include standard header files.\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-Wrapper and interface classes for element geometries.\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd\n+\u00a0 namespace containing the implementations of _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bG_\br_\bi_\bd\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00695_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00824_source.html", "comments": ["Files 79% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: geometryreference.hh Source File\n+dune-grid: parser.hh Source File\n \n \n \n \n \n \n \n@@ -70,229 +70,230 @@\n \n \n \n \n \n \n \n
    \n-
    geometryreference.hh
    \n+
    parser.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH
    \n-
    6#define DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH
    \n+
    5#ifndef DUNE_DGF_DUNEGRIDFORMATPARSER_HH
    \n+
    6#define DUNE_DGF_DUNEGRIDFORMATPARSER_HH
    \n
    7
    \n-
    12#include <dune/common/typetraits.hh>
    \n-
    13
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15
    \n-\n+
    8#include <iostream>
    \n+
    9#include <string>
    \n+
    10#include <vector>
    \n+
    11#include <map>
    \n+
    12
    \n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20
    \n-
    21 // GeometryReference
    \n-
    22 // -----------------
    \n-
    23
    \n-
    24 template< class Implementation >
    \n-
    \n-\n-
    26 {
    \n-\n-
    28
    \n-
    29 public:
    \n-
    30 static const int mydimension = Implementation::mydimension;
    \n-
    31 static const int coorddimension = Implementation::coorddimension;
    \n-
    32
    \n-
    33 typedef typename Implementation::ctype ctype;
    \n-
    34
    \n-
    35 typedef typename Implementation::LocalCoordinate LocalCoordinate;
    \n-
    36 typedef typename Implementation::GlobalCoordinate GlobalCoordinate;
    \n-
    37
    \n-
    38 typedef typename Implementation::JacobianInverseTransposed JacobianInverseTransposed;
    \n-
    39 typedef typename Implementation::JacobianTransposed JacobianTransposed;
    \n-
    40
    \n-
    41 private:
    \n-
    42
    \n-
    43 template<class Implementation_T>
    \n-
    44 using JacobianInverseOfImplementation = decltype(typename Implementation_T::JacobianInverse{std::declval<Implementation_T>().jacobianInverse(std::declval<LocalCoordinate>())});
    \n-
    45
    \n-
    46 using JacobianInverseDefault = decltype(transpose(std::declval<JacobianInverseTransposed>()));
    \n-
    47
    \n-
    48 template<class Implementation_T>
    \n-
    49 using JacobianOfImplementation = decltype(typename Implementation_T::Jacobian{std::declval<Implementation_T>().jacobian(std::declval<LocalCoordinate>())});
    \n+
    18 class DGFPrintInfo;
    \n+
    19
    \n+
    \n+\n+
    23 {
    \n+
    25 typedef std::string type;
    \n+
    26
    \n+
    \n+
    28 static const type &defaultValue ()
    \n+
    29 {
    \n+
    30 static type value;
    \n+
    31 return value;
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+
    35 static type convert ( const std::string & parameter )
    \n+
    36 {
    \n+
    37 return parameter;
    \n+
    38 }
    \n+
    \n+
    39
    \n+
    41 static const char delimiter = ':';
    \n+
    42 };
    \n+
    \n+
    43
    \n+
    \n+\n+
    47 {
    \n+
    48 public:
    \n+
    49 typedef enum {Simplex,Cube,General} element_t;
    \n
    50
    \n-
    51 using JacobianDefault = decltype(transpose(std::declval<JacobianTransposed>()));
    \n+\n
    52
    \n-
    53
    \n-
    54 template <class I = Implementation>
    \n-
    55 [[deprecated("Geometry implementatons are required to provide a jacobian(local) method. The default implementation is deprecated and will be removed after release 2.9")]]
    \n-
    56 auto deprecatedDefaultJacobian ( const LocalCoordinate& local ) const {
    \n-
    57 return transpose(jacobianTransposed(local));
    \n-
    58 }
    \n-
    59
    \n-
    60 template <class I = Implementation>
    \n-
    61 [[deprecated("Geometry implementatons are required to provide a jacobianInverse(local) method. The default implementation is deprecated and will be removed after release 2.9")]]
    \n-
    62 auto deprecatedDefaultJacobianInverse ( const LocalCoordinate& local ) const {
    \n-
    63 return transpose(jacobianInverseTransposed(local));
    \n-
    64 }
    \n-
    65
    \n-
    66 public:
    \n+
    54 DuneGridFormatParser ( int rank, int size );
    \n+
    55
    \n+
    66 static bool isDuneGridFormat ( std::istream &input );
    \n
    67
    \n-
    68 using Jacobian = Std::detected_or_t<JacobianDefault, JacobianOfImplementation, Implementation>;
    \n-
    69 using JacobianInverse = Std::detected_or_t<JacobianInverseDefault, JacobianInverseOfImplementation, Implementation>;
    \n-
    70
    \n-
    \n-
    71 explicit GeometryReference ( const Implementation &impl )
    \n-
    72 : impl_( &impl )
    \n-
    73 {}
    \n-
    \n-
    74
    \n-
    75 GeometryType type () const { return impl().type(); }
    \n-
    76
    \n-
    77 bool affine() const { return impl().affine(); }
    \n+
    77 static bool isDuneGridFormat ( const std::string &filename );
    \n
    78
    \n-
    79 int corners () const { return impl().corners(); }
    \n-
    80 GlobalCoordinate corner ( int i ) const { return impl().corner( i ); }
    \n-
    81 GlobalCoordinate center () const { return impl().center(); }
    \n-
    82
    \n-
    \n-\n-
    84 {
    \n-
    85 return impl().global( local );
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    \n-\n-
    89 {
    \n-
    90 return impl().local( global );
    \n-
    91 }
    \n-
    \n+
    91 bool readDuneGrid( std::istream &input, int dimG, int dimW );
    \n
    92
    \n-
    \n-\n-
    94 {
    \n-
    95 return impl().integrationElement( local );
    \n-
    96 }
    \n-
    \n+
    94 void writeTetgenPoly ( const std::string &, std::string &, std::string & );
    \n+
    95
    \n+
    96 void writeTetgenPoly ( std::ostream & out, const bool writeSegments = true );
    \n
    97
    \n-
    98 ctype volume () const { return impl().volume(); }
    \n-
    99
    \n-
    \n-\n-
    101 {
    \n-
    102 return impl().jacobianTransposed( local );
    \n-
    103 }
    \n-
    \n+
    98 protected:
    \n+
    99 void generateBoundaries ( std::istream &, bool );
    \n+
    100
    \n+
    101 // call to tetgen/triangle
    \n+
    102 void generateSimplexGrid ( std::istream & );
    \n+
    103 void readTetgenTriangle ( const std::string & );
    \n
    104
    \n-
    \n-\n-
    106 {
    \n-
    107 return impl().jacobianInverseTransposed( local );
    \n-
    108 }
    \n-
    \n-
    109
    \n-
    \n-\n-
    111 {
    \n-
    112 if constexpr(Std::is_detected_v<JacobianOfImplementation, Implementation>)
    \n-
    113 return impl().jacobian(local);
    \n-
    114 else
    \n-
    115 return deprecatedDefaultJacobian(local);
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-\n-
    119 {
    \n-
    120 if constexpr(Std::is_detected_v<JacobianInverseOfImplementation, Implementation>)
    \n-
    121 return impl().jacobianInverse(local);
    \n-
    122 else
    \n-
    123 return deprecatedDefaultJacobianInverse(local);
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    126 const Implementation &impl () const { return *impl_; }
    \n-
    127
    \n-
    128 private:
    \n-
    129 const Implementation *impl_;
    \n-
    130 };
    \n-
    \n-
    131
    \n+
    105 // helper methods
    \n+
    106 void removeCopies ();
    \n+
    107
    \n+
    108 void setOrientation ( int use1, int use2,
    \n+
    109 orientation_t orientation=counterclockwise );
    \n+
    110
    \n+
    111 void setRefinement ( int use1, int use2, int is1=-1, int is2=-1 );
    \n+
    112
    \n+
    113 double testTriang ( int snr );
    \n+
    114
    \n+
    115 std::vector< double > & getElParam ( int i, std::vector< double > & coord );
    \n+
    116
    \n+
    117 std::vector< double > & getVtxParam ( int i, std::vector< double > & coord );
    \n+
    118
    \n+
    119 static std::string temporaryFileName ();
    \n+
    120
    \n+
    121 // dimension of world and problem: set through the readDuneGrid() method
    \n+\n+
    123
    \n+
    124 // vector of vertex coordinates
    \n+
    125 std::vector < std::vector < double > > vtx;
    \n+
    126
    \n+\n+
    128
    \n+\n+
    130
    \n+
    131 double minVertexDistance; // min. L^1 distance of distinct points
    \n
    132
    \n-
    133 // LocalGeometryReference
    \n-
    134 // -----------------------
    \n+
    133 // vector of elements
    \n+
    134 std :: vector< std :: vector< unsigned int > > elements;
    \n
    135
    \n-
    136 template< int mydim, int cdim, class Grid >
    \n-
    \n-\n-
    138 : public GeometryReference< typename std::remove_const< Grid >::type::Traits::template Codim< std::remove_const< Grid >::type::dimension - mydim >::LocalGeometryImpl >
    \n-
    139 {
    \n-
    140 typedef typename std::remove_const< Grid >::type::Traits::template Codim< std::remove_const< Grid >::type::dimension - mydim >::LocalGeometryImpl Implementation;
    \n-
    141
    \n-
    142 public:
    \n-
    \n-
    143 LocalGeometryReference ( const Implementation &impl )
    \n-
    144 : GeometryReference< Implementation >( impl )
    \n-
    145 {}
    \n-
    \n-
    146 };
    \n-
    \n-
    147
    \n+\n+
    137
    \n+
    138 // vector of boundary segments + identifier
    \n+
    139 std::vector < std::vector < int > > bound;
    \n+
    140
    \n+\n+
    142
    \n+
    143 // map to generate and find boundary segments
    \n+\n+
    145 typedef std::pair < int, BoundaryParameter > BndParam;
    \n+
    146 typedef std::map< DGFEntityKey< unsigned int >, BndParam > facemap_t;
    \n+\n
    148
    \n-
    149
    \n-
    150 // Definitions of GeometryReference
    \n-
    151 // --------------------------------
    \n-
    152
    \n-
    153 template< class Implementation >
    \n-\n-
    155
    \n-
    156 template< class Implementation >
    \n-\n+
    149 // true if parameters on a boundary found
    \n+\n+
    151
    \n+
    152 // set by generator depending on element type wanted
    \n+\n+
    154
    \n+
    155 // set by the readDuneGrid method depending
    \n+
    156 // on what type the elements were generated
    \n+\n
    158
    \n-
    159} // namespace Dune
    \n-
    160
    \n-
    161#endif // #ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH
    \n+
    159 // true if grid is generated using the intervall Block
    \n+\n+
    161
    \n+
    162 // parameters on elements
    \n+\n+
    164
    \n+
    165 std::vector< std::vector< double > > vtxParams,elParams;
    \n+
    166
    \n+
    167 // write information about generation process
    \n+\n+
    169
    \n+
    170 std::vector < double > emptyParam_;
    \n+
    171
    \n+
    172
    \n+
    173 private:
    \n+
    174 int rank_;
    \n+
    175 int size_;
    \n+
    176
    \n+
    177 template< class GridType >
    \n+
    178 friend struct DGFGridFactory;
    \n+
    179
    \n+
    180 template< class GridType >
    \n+
    181 friend struct DGFBaseFactory;
    \n+
    182
    \n+
    183 };
    \n+
    \n+
    184
    \n+
    185} // end namespace Dune
    \n+
    186
    \n+
    187#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition geometryreference.hh:26
    \n-
    static const int mydimension
    Definition geometryreference.hh:30
    \n-
    ctype integrationElement(const LocalCoordinate &local) const
    Definition geometryreference.hh:93
    \n-
    ctype volume() const
    Definition geometryreference.hh:98
    \n-
    const Implementation & impl() const
    Definition geometryreference.hh:126
    \n-
    JacobianInverse jacobianInverse(const LocalCoordinate &local) const
    Definition geometryreference.hh:118
    \n-
    GlobalCoordinate center() const
    Definition geometryreference.hh:81
    \n-
    Implementation::JacobianTransposed JacobianTransposed
    Definition geometryreference.hh:39
    \n-
    GeometryReference(const Implementation &impl)
    Definition geometryreference.hh:71
    \n-
    Std::detected_or_t< JacobianInverseDefault, JacobianInverseOfImplementation, Implementation > JacobianInverse
    Definition geometryreference.hh:69
    \n-
    LocalCoordinate local(const GlobalCoordinate &global) const
    Definition geometryreference.hh:88
    \n-
    Implementation::GlobalCoordinate GlobalCoordinate
    Definition geometryreference.hh:36
    \n-
    static const int coorddimension
    Definition geometryreference.hh:31
    \n-
    bool affine() const
    Definition geometryreference.hh:77
    \n-
    GlobalCoordinate corner(int i) const
    Definition geometryreference.hh:80
    \n-
    JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate &local) const
    Definition geometryreference.hh:105
    \n-
    JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const
    Definition geometryreference.hh:100
    \n-
    int corners() const
    Definition geometryreference.hh:79
    \n-
    Implementation::LocalCoordinate LocalCoordinate
    Definition geometryreference.hh:35
    \n-
    GlobalCoordinate global(const LocalCoordinate &local) const
    Definition geometryreference.hh:83
    \n-
    Std::detected_or_t< JacobianDefault, JacobianOfImplementation, Implementation > Jacobian
    Definition geometryreference.hh:68
    \n-
    Implementation::ctype ctype
    Definition geometryreference.hh:33
    \n-
    Implementation::JacobianInverseTransposed JacobianInverseTransposed
    Definition geometryreference.hh:38
    \n-
    Jacobian jacobian(const LocalCoordinate &local) const
    Definition geometryreference.hh:110
    \n-
    GeometryType type() const
    Definition geometryreference.hh:75
    \n-
    Definition geometryreference.hh:139
    \n-
    LocalGeometryReference(const Implementation &impl)
    Definition geometryreference.hh:143
    \n-
    Wrapper and interface classes for element geometries.
    \n+
    Definition dgfgridfactory.hh:38
    \n+
    Definition io/file/dgfparser/dgfparser.cc:26
    \n+
    Contains types for additional features.
    Definition parser.hh:23
    \n+
    static const type & defaultValue()
    default constructor
    Definition parser.hh:28
    \n+
    static const char delimiter
    delimiter
    Definition parser.hh:41
    \n+
    static type convert(const std::string &parameter)
    copy from string
    Definition parser.hh:35
    \n+
    std::string type
    type of additional boundary parameters
    Definition parser.hh:25
    \n+
    The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures us...
    Definition parser.hh:47
    \n+
    int nofvtxparams
    Definition parser.hh:163
    \n+
    int nofbound
    Definition parser.hh:141
    \n+
    std::pair< int, BoundaryParameter > BndParam
    Definition parser.hh:145
    \n+
    void readTetgenTriangle(const std::string &)
    Definition io/file/dgfparser/dgfparser.cc:795
    \n+
    static bool isDuneGridFormat(std::istream &input)
    check whether a stream is in DUNE grid format
    Definition io/file/dgfparser/dgfparser.cc:271
    \n+
    void setOrientation(int use1, int use2, orientation_t orientation=counterclockwise)
    Definition io/file/dgfparser/dgfparser.cc:910
    \n+
    std::vector< std::vector< double > > vtxParams
    Definition parser.hh:165
    \n+
    void setRefinement(int use1, int use2, int is1=-1, int is2=-1)
    Definition io/file/dgfparser/dgfparser.cc:989
    \n+
    friend struct DGFBaseFactory
    Definition parser.hh:181
    \n+
    static std::string temporaryFileName()
    Definition io/file/dgfparser/dgfparser.cc:1096
    \n+
    void removeCopies()
    Definition io/file/dgfparser/dgfparser.cc:464
    \n+
    int dimw
    Definition parser.hh:122
    \n+
    int dimgrid
    Definition parser.hh:122
    \n+
    element_t element
    Definition parser.hh:153
    \n+
    DGFBoundaryParameter::type BoundaryParameter
    Definition parser.hh:144
    \n+
    int nofelements
    Definition parser.hh:136
    \n+
    orientation_t
    Definition parser.hh:51
    \n+
    @ clockwise
    Definition parser.hh:51
    \n+
    @ counterclockwise
    Definition parser.hh:51
    \n+
    double testTriang(int snr)
    Definition io/file/dgfparser/dgfparser.cc:1050
    \n+
    double minVertexDistance
    Definition parser.hh:131
    \n+
    bool simplexgrid
    Definition parser.hh:157
    \n+
    std::map< DGFEntityKey< unsigned int >, BndParam > facemap_t
    Definition parser.hh:146
    \n+
    std::vector< std::vector< int > > bound
    Definition parser.hh:139
    \n+
    void generateSimplexGrid(std::istream &)
    Definition io/file/dgfparser/dgfparser.cc:624
    \n+
    std::vector< double > emptyParam_
    Definition parser.hh:170
    \n+
    int nofelparams
    Definition parser.hh:163
    \n+
    std::vector< std::vector< double > > elParams
    Definition parser.hh:165
    \n+
    facemap_t facemap
    Definition parser.hh:147
    \n+
    element_t
    Definition parser.hh:49
    \n+
    @ General
    Definition parser.hh:49
    \n+
    @ Cube
    Definition parser.hh:49
    \n+
    @ Simplex
    Definition parser.hh:49
    \n+
    bool cube2simplex
    Definition parser.hh:160
    \n+
    int nofvtx
    Definition parser.hh:127
    \n+
    void writeTetgenPoly(const std::string &, std::string &, std::string &)
    method to write in Tetgen/Triangle Poly Format
    Definition io/file/dgfparser/dgfparser.cc:123
    \n+
    std::vector< std::vector< double > > vtx
    Definition parser.hh:125
    \n+
    int vtxoffset
    Definition parser.hh:129
    \n+
    bool readDuneGrid(std::istream &input, int dimG, int dimW)
    parse dune grid format from stream
    Definition io/file/dgfparser/dgfparser.cc:298
    \n+
    std ::vector< std ::vector< unsigned int > > elements
    Definition parser.hh:134
    \n+
    bool haveBndParameters
    Definition parser.hh:150
    \n+
    DGFPrintInfo * info
    Definition parser.hh:168
    \n+
    void generateBoundaries(std::istream &, bool)
    Definition io/file/dgfparser/dgfparser.cc:502
    \n+
    std::vector< double > & getVtxParam(int i, std::vector< double > &coord)
    Definition io/file/dgfparser/dgfparser.cc:1086
    \n+
    std::vector< double > & getElParam(int i, std::vector< double > &coord)
    Definition io/file/dgfparser/dgfparser.cc:1070
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,277 +1,333 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-geometryreference.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n+parser.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH\n-6#define DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH\n+5#ifndef DUNE_DGF_DUNEGRIDFORMATPARSER_HH\n+6#define DUNE_DGF_DUNEGRIDFORMATPARSER_HH\n 7\n-12#include \n-13\n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh>\n+8#include \n+9#include \n+10#include \n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n 17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-20\n-21 // GeometryReference\n-22 // -----------------\n-23\n-24 template< class Implementation >\n-_\b2_\b5 class _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-26 {\n-27 typedef _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b> _\bT_\bh_\bi_\bs;\n-28\n-29 public:\n-_\b3_\b0 static const int _\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Implementation::mydimension;\n-_\b3_\b1 static const int _\bc_\bo_\bo_\br_\bd_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Implementation::coorddimension;\n-32\n-_\b3_\b3 typedef typename Implementation::ctype _\bc_\bt_\by_\bp_\be;\n-34\n-_\b3_\b5 typedef typename Implementation::LocalCoordinate _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-_\b3_\b6 typedef typename Implementation::GlobalCoordinate _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n-37\n-_\b3_\b8 typedef typename Implementation::JacobianInverseTransposed\n-_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n-_\b3_\b9 typedef typename Implementation::JacobianTransposed _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd;\n-40\n-41 private:\n-42\n-43 template\n-44 using JacobianInverseOfImplementation = decltype(typename Implementation_T::\n-JacobianInverse{std::declval().jacobianInverse(std::\n-declval())});\n-45\n-46 using JacobianInverseDefault = decltype(transpose(std::\n-declval()));\n-47\n-48 template\n-49 using JacobianOfImplementation = decltype(typename Implementation_T::\n-Jacobian{std::declval().jacobian(std::\n-declval())});\n+18 class DGFPrintInfo;\n+19\n+_\b2_\b2 struct _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+23 {\n+_\b2_\b5 typedef std::string _\bt_\by_\bp_\be;\n+26\n+_\b2_\b8 static const _\bt_\by_\bp_\be &_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be ()\n+29 {\n+30 static _\bt_\by_\bp_\be value;\n+31 return value;\n+32 }\n+33\n+_\b3_\b5 static _\bt_\by_\bp_\be _\bc_\bo_\bn_\bv_\be_\br_\bt ( const std::string & parameter )\n+36 {\n+37 return parameter;\n+38 }\n+39\n+_\b4_\b1 static const char _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br = ':';\n+42 };\n+43\n+_\b4_\b6 class _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n+47 {\n+48 public:\n+_\b4_\b9 typedef enum {_\bS_\bi_\bm_\bp_\bl_\be_\bx,_\bC_\bu_\bb_\be,_\bG_\be_\bn_\be_\br_\ba_\bl} _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bt;\n 50\n-51 using JacobianDefault = decltype(transpose(std::declval\n-()));\n+_\b5_\b1 typedef enum {_\bc_\bo_\bu_\bn_\bt_\be_\br_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be=1,_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be=-1} _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt;\n 52\n-53\n-54 template \n-55 [[deprecated(\"Geometry implementatons are required to provide a jacobian\n-(local) method. The default implementation is deprecated and will be removed\n-after release 2.9\")]]\n-56 auto deprecatedDefaultJacobian ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be& _\bl_\bo_\bc_\ba_\bl ) const {\n-57 return transpose(_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd(_\bl_\bo_\bc_\ba_\bl));\n-58 }\n-59\n-60 template \n-61 [[deprecated(\"Geometry implementatons are required to provide a\n-jacobianInverse(local) method. The default implementation is deprecated and\n-will be removed after release 2.9\")]]\n-62 auto deprecatedDefaultJacobianInverse ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be& _\bl_\bo_\bc_\ba_\bl ) const\n-{\n-63 return transpose(_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd(_\bl_\bo_\bc_\ba_\bl));\n-64 }\n-65\n-66 public:\n+54 _\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br ( int rank, int size );\n+55\n+66 static bool _\bi_\bs_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt ( std::istream &input );\n 67\n-_\b6_\b8 using _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn = Std::detected_or_t;\n-_\b6_\b9 using _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be = Std::detected_or_t;\n-70\n-_\b7_\b1 explicit _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be ( const Implementation &_\bi_\bm_\bp_\bl )\n-72 : impl_( &_\bi_\bm_\bp_\bl )\n-73 {}\n-74\n-_\b7_\b5 GeometryType _\bt_\by_\bp_\be () const { return _\bi_\bm_\bp_\bl().type(); }\n-76\n-_\b7_\b7 bool _\ba_\bf_\bf_\bi_\bn_\be() const { return _\bi_\bm_\bp_\bl().affine(); }\n+77 static bool _\bi_\bs_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt ( const std::string &filename );\n 78\n-_\b7_\b9 int _\bc_\bo_\br_\bn_\be_\br_\bs () const { return _\bi_\bm_\bp_\bl().corners(); }\n-_\b8_\b0 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bc_\bo_\br_\bn_\be_\br ( int i ) const { return _\bi_\bm_\bp_\bl().corner( i ); }\n-_\b8_\b1 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bc_\be_\bn_\bt_\be_\br () const { return _\bi_\bm_\bp_\bl().center(); }\n-82\n-_\b8_\b3 _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bg_\bl_\bo_\bb_\ba_\bl ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl ) const\n-84 {\n-85 return _\bi_\bm_\bp_\bl().global( _\bl_\bo_\bc_\ba_\bl );\n-86 }\n-87\n-_\b8_\b8 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bl_\bo_\bc_\ba_\bl ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bg_\bl_\bo_\bb_\ba_\bl ) const\n-89 {\n-90 return _\bi_\bm_\bp_\bl().local( _\bg_\bl_\bo_\bb_\ba_\bl );\n-91 }\n+91 bool _\br_\be_\ba_\bd_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd( std::istream &input, int dimG, int dimW );\n 92\n-_\b9_\b3 _\bc_\bt_\by_\bp_\be _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl ) const\n-94 {\n-95 return _\bi_\bm_\bp_\bl().integrationElement( _\bl_\bo_\bc_\ba_\bl );\n-96 }\n+94 void _\bw_\br_\bi_\bt_\be_\bT_\be_\bt_\bg_\be_\bn_\bP_\bo_\bl_\by ( const std::string &, std::string &, std::string & );\n+95\n+96 void _\bw_\br_\bi_\bt_\be_\bT_\be_\bt_\bg_\be_\bn_\bP_\bo_\bl_\by ( std::ostream & out, const bool writeSegments = true\n+);\n 97\n-_\b9_\b8 _\bc_\bt_\by_\bp_\be _\bv_\bo_\bl_\bu_\bm_\be () const { return _\bi_\bm_\bp_\bl().volume(); }\n-99\n-_\b1_\b0_\b0 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl )\n-const\n-101 {\n-102 return _\bi_\bm_\bp_\bl().jacobianTransposed( _\bl_\bo_\bc_\ba_\bl );\n-103 }\n+98 protected:\n+99 void _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs ( std::istream &, bool );\n+100\n+101 // call to tetgen/triangle\n+102 void _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd ( std::istream & );\n+103 void _\br_\be_\ba_\bd_\bT_\be_\bt_\bg_\be_\bn_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be ( const std::string & );\n 104\n-_\b1_\b0_\b5 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-&_\bl_\bo_\bc_\ba_\bl ) const\n-106 {\n-107 return _\bi_\bm_\bp_\bl().jacobianInverseTransposed( _\bl_\bo_\bc_\ba_\bl );\n-108 }\n-109\n-_\b1_\b1_\b0 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be& _\bl_\bo_\bc_\ba_\bl ) const\n-111 {\n-112 if constexpr(Std::is_detected_v)\n-113 return _\bi_\bm_\bp_\bl().jacobian(_\bl_\bo_\bc_\ba_\bl);\n-114 else\n-115 return deprecatedDefaultJacobian(_\bl_\bo_\bc_\ba_\bl);\n-116 }\n-117\n-_\b1_\b1_\b8 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be ( const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be &_\bl_\bo_\bc_\ba_\bl ) const\n-119 {\n-120 if constexpr(Std::is_detected_v)\n-121 return _\bi_\bm_\bp_\bl().jacobianInverse(_\bl_\bo_\bc_\ba_\bl);\n-122 else\n-123 return deprecatedDefaultJacobianInverse(_\bl_\bo_\bc_\ba_\bl);\n-124 }\n-125\n-_\b1_\b2_\b6 const Implementation &_\bi_\bm_\bp_\bl () const { return *impl_; }\n-127\n-128 private:\n-129 const Implementation *impl_;\n-130 };\n-131\n+105 // helper methods\n+106 void _\br_\be_\bm_\bo_\bv_\be_\bC_\bo_\bp_\bi_\be_\bs ();\n+107\n+108 void _\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( int use1, int use2,\n+109 _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt orientation=_\bc_\bo_\bu_\bn_\bt_\be_\br_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be );\n+110\n+111 void _\bs_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt ( int use1, int use2, int is1=-1, int is2=-1 );\n+112\n+113 double _\bt_\be_\bs_\bt_\bT_\br_\bi_\ba_\bn_\bg ( int snr );\n+114\n+115 std::vector< double > & _\bg_\be_\bt_\bE_\bl_\bP_\ba_\br_\ba_\bm ( int i, std::vector< double > & coord\n+);\n+116\n+117 std::vector< double > & _\bg_\be_\bt_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm ( int i, std::vector< double > & coord\n+);\n+118\n+119 static std::string _\bt_\be_\bm_\bp_\bo_\br_\ba_\br_\by_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be ();\n+120\n+121 // dimension of world and problem: set through the readDuneGrid() method\n+_\b1_\b2_\b2 int _\bd_\bi_\bm_\bw, _\bd_\bi_\bm_\bg_\br_\bi_\bd;\n+123\n+124 // vector of vertex coordinates\n+_\b1_\b2_\b5 std::vector < std::vector < double > > _\bv_\bt_\bx;\n+126\n+_\b1_\b2_\b7 int _\bn_\bo_\bf_\bv_\bt_\bx;\n+128\n+_\b1_\b2_\b9 int _\bv_\bt_\bx_\bo_\bf_\bf_\bs_\be_\bt;\n+130\n+_\b1_\b3_\b1 double _\bm_\bi_\bn_\bV_\be_\br_\bt_\be_\bx_\bD_\bi_\bs_\bt_\ba_\bn_\bc_\be; // min. L^1 distance of distinct points\n 132\n-133 // LocalGeometryReference\n-134 // -----------------------\n+133 // vector of elements\n+_\b1_\b3_\b4 std :: vector< std :: vector< unsigned int > > _\be_\bl_\be_\bm_\be_\bn_\bt_\bs;\n 135\n-136 template< int mydim, int cdim, class Grid >\n-_\b1_\b3_\b7 class _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-138 : public _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be< typename std::remove_const< Grid >::type::\n-Traits::template Codim< std::remove_const< Grid >::type::dimension - mydim >::\n-LocalGeometryImpl >\n-139 {\n-140 typedef typename std::remove_const< Grid >::type::Traits::template Codim<\n-std::remove_const< Grid >::type::dimension - mydim >::LocalGeometryImpl\n-Implementation;\n-141\n-142 public:\n-_\b1_\b4_\b3 _\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be ( const Implementation &_\bi_\bm_\bp_\bl )\n-144 : _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be< Implementation >( _\bi_\bm_\bp_\bl )\n-145 {}\n-146 };\n-147\n+_\b1_\b3_\b6 int _\bn_\bo_\bf_\be_\bl_\be_\bm_\be_\bn_\bt_\bs;\n+137\n+138 // vector of boundary segments + identifier\n+_\b1_\b3_\b9 std::vector < std::vector < int > > _\bb_\bo_\bu_\bn_\bd;\n+140\n+_\b1_\b4_\b1 int _\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd;\n+142\n+143 // map to generate and find boundary segments\n+_\b1_\b4_\b4 typedef _\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br;\n+_\b1_\b4_\b5 typedef std::pair < int, BoundaryParameter > _\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm;\n+_\b1_\b4_\b6 typedef std::map< DGFEntityKey< unsigned int >, _\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm > _\bf_\ba_\bc_\be_\bm_\ba_\bp_\b__\bt;\n+_\b1_\b4_\b7 _\bf_\ba_\bc_\be_\bm_\ba_\bp_\b__\bt _\bf_\ba_\bc_\be_\bm_\ba_\bp;\n 148\n-149\n-150 // Definitions of GeometryReference\n-151 // --------------------------------\n-152\n-153 template< class Implementation >\n-154 const int _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-155\n-156 template< class Implementation >\n-157 const int _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n+149 // true if parameters on a boundary found\n+_\b1_\b5_\b0 bool _\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs;\n+151\n+152 // set by generator depending on element type wanted\n+_\b1_\b5_\b3 _\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bt _\be_\bl_\be_\bm_\be_\bn_\bt;\n+154\n+155 // set by the readDuneGrid method depending\n+156 // on what type the elements were generated\n+_\b1_\b5_\b7 bool _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\br_\bi_\bd;\n 158\n-159} // namespace Dune\n-160\n-161#endif // #ifndef DUNE_GRID_ALBERTAGRID_GEOMETRYREFERENCE_HH\n+159 // true if grid is generated using the intervall Block\n+_\b1_\b6_\b0 bool _\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx;\n+161\n+162 // parameters on elements\n+_\b1_\b6_\b3 int _\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs,_\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs;\n+164\n+_\b1_\b6_\b5 std::vector< std::vector< double > > _\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs,_\be_\bl_\bP_\ba_\br_\ba_\bm_\bs;\n+166\n+167 // write information about generation process\n+_\b1_\b6_\b8 _\bD_\bG_\bF_\bP_\br_\bi_\bn_\bt_\bI_\bn_\bf_\bo * _\bi_\bn_\bf_\bo;\n+169\n+_\b1_\b7_\b0 std::vector < double > _\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_;\n+171\n+172\n+173 private:\n+174 int rank_;\n+175 int size_;\n+176\n+177 template< class GridType >\n+_\b1_\b7_\b8 friend struct _\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+179\n+180 template< class GridType >\n+_\b1_\b8_\b1 friend struct _\bD_\bG_\bF_\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+182\n+183 };\n+184\n+185} // end namespace Dune\n+186\n+187#endif\n+_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int mydimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\bi_\bo_\bn_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ctype integrationElement(const LocalCoordinate &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bv_\bo_\bl_\bu_\bm_\be\n-ctype volume() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bi_\bm_\bp_\bl\n-const Implementation & impl() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:126\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be\n-JacobianInverse jacobianInverse(const LocalCoordinate &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\be_\bn_\bt_\be_\br\n-GlobalCoordinate center() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-Implementation::JacobianTransposed JacobianTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-GeometryReference(const Implementation &impl)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be\n-Std::detected_or_t< JacobianInverseDefault, JacobianInverseOfImplementation,\n-Implementation > JacobianInverse\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl\n-LocalCoordinate local(const GlobalCoordinate &global) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-Implementation::GlobalCoordinate GlobalCoordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bo_\bo_\br_\bd_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int coorddimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\ba_\bf_\bf_\bi_\bn_\be\n-bool affine() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bo_\br_\bn_\be_\br\n-GlobalCoordinate corner(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate\n-&local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bs\n-int corners() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n-Implementation::LocalCoordinate LocalCoordinate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bg_\bl_\bo_\bb_\ba_\bl\n-GlobalCoordinate global(const LocalCoordinate &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-Std::detected_or_t< JacobianDefault, JacobianOfImplementation, Implementation >\n-Jacobian\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Implementation::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bI_\bn_\bv_\be_\br_\bs_\be_\bT_\br_\ba_\bn_\bs_\bp_\bo_\bs_\be_\bd\n-Implementation::JacobianInverseTransposed JacobianInverseTransposed\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-Jacobian jacobian(const LocalCoordinate &local) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-LocalGeometryReference(const Implementation &impl)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn geometryreference.hh:143\n-_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b._\bh_\bh\n-Wrapper and interface classes for element geometries.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bG_\br_\bi_\bd_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dgfgridfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bP_\br_\bi_\bn_\bt_\bI_\bn_\bf_\bo\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+Contains types for additional features.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bV_\ba_\bl_\bu_\be\n+static const type & defaultValue()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br\n+static const char delimiter\n+delimiter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt\n+static type convert(const std::string ¶meter)\n+copy from string\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+std::string type\n+type of additional boundary parameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br\n+The DuneGridFormatParser class: reads a DGF file and stores build information\n+in vector structures us...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bv_\bt_\bx_\bp_\ba_\br_\ba_\bm_\bs\n+int nofvtxparams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bb_\bo_\bu_\bn_\bd\n+int nofbound\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm\n+std::pair< int, BoundaryParameter > BndParam\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bT_\be_\bt_\bg_\be_\bn_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be\n+void readTetgenTriangle(const std::string &)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:795\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bi_\bs_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt\n+static bool isDuneGridFormat(std::istream &input)\n+check whether a stream is in DUNE grid format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n+void setOrientation(int use1, int use2, orientation_t\n+orientation=counterclockwise)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:910\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx_\bP_\ba_\br_\ba_\bm_\bs\n+std::vector< std::vector< double > > vtxParams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt\n+void setRefinement(int use1, int use2, int is1=-1, int is2=-1)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:989\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bD_\bG_\bF_\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+friend struct DGFBaseFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bt_\be_\bm_\bp_\bo_\br_\ba_\br_\by_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n+static std::string temporaryFileName()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1096\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\bm_\bo_\bv_\be_\bC_\bo_\bp_\bi_\be_\bs\n+void removeCopies()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:464\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm_\bw\n+int dimw\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bd_\bi_\bm_\bg_\br_\bi_\bd\n+int dimgrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n+element_t element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n+DGFBoundaryParameter::type BoundaryParameter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int nofelements\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b__\bt\n+orientation_t\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be\n+@ clockwise\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bc_\bo_\bu_\bn_\bt_\be_\br_\bc_\bl_\bo_\bc_\bk_\bw_\bi_\bs_\be\n+@ counterclockwise\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bT_\br_\bi_\ba_\bn_\bg\n+double testTriang(int snr)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1050\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bm_\bi_\bn_\bV_\be_\br_\bt_\be_\bx_\bD_\bi_\bs_\bt_\ba_\bn_\bc_\be\n+double minVertexDistance\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bg_\br_\bi_\bd\n+bool simplexgrid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bm_\ba_\bp_\b__\bt\n+std::map< DGFEntityKey< unsigned int >, BndParam > facemap_t\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bb_\bo_\bu_\bn_\bd\n+std::vector< std::vector< int > > bound\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\br_\bi_\bd\n+void generateSimplexGrid(std::istream &)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:624\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bm_\bp_\bt_\by_\bP_\ba_\br_\ba_\bm_\b_\n+std::vector< double > emptyParam_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\be_\bl_\bp_\ba_\br_\ba_\bm_\bs\n+int nofelparams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\bP_\ba_\br_\ba_\bm_\bs\n+std::vector< std::vector< double > > elParams\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bm_\ba_\bp\n+facemap_t facemap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\b__\bt\n+element_t\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl\n+@ General\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bC_\bu_\bb_\be\n+@ Cube\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx\n+@ Simplex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+bool cube2simplex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bn_\bo_\bf_\bv_\bt_\bx\n+int nofvtx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bT_\be_\bt_\bg_\be_\bn_\bP_\bo_\bl_\by\n+void writeTetgenPoly(const std::string &, std::string &, std::string &)\n+method to write in Tetgen/Triangle Poly Format\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx\n+std::vector< std::vector< double > > vtx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bv_\bt_\bx_\bo_\bf_\bf_\bs_\be_\bt\n+int vtxoffset\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\br_\be_\ba_\bd_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd\n+bool readDuneGrid(std::istream &input, int dimG, int dimW)\n+parse dune grid format from stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:298\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bs\n+std ::vector< std ::vector< unsigned int > > elements\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bh_\ba_\bv_\be_\bB_\bn_\bd_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs\n+bool haveBndParameters\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bi_\bn_\bf_\bo\n+DGFPrintInfo * info\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn parser.hh:168\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs\n+void generateBoundaries(std::istream &, bool)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:502\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bt_\bV_\bt_\bx_\bP_\ba_\br_\ba_\bm\n+std::vector< double > & getVtxParam(int i, std::vector< double > &coord)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1086\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\bn_\be_\bG_\br_\bi_\bd_\bF_\bo_\br_\bm_\ba_\bt_\bP_\ba_\br_\bs_\be_\br_\b:_\b:_\bg_\be_\bt_\bE_\bl_\bP_\ba_\br_\ba_\bm\n+std::vector< double > & getElParam(int i, std::vector< double > &coord)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn io/file/dgfparser/dgfparser.cc:1070\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00698.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00188.html", "comments": ["Files 92% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macrodata.hh File Reference\n+dune-grid: yaspgridpersistentcontainer.hh File Reference\n \n \n \n \n \n \n \n@@ -65,53 +65,51 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    macrodata.hh File Reference
    \n+
    yaspgridpersistentcontainer.hh File Reference
    \n
    \n
    \n \n-

    provides a wrapper for ALBERTA's macro_data structure \n+

    Specialization of the PersistentContainer for YaspGrid. \n More...

    \n-
    #include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/grid/albertagrid/misc.hh>
    \n-#include <dune/grid/albertagrid/algebra.hh>
    \n-#include <dune/grid/albertagrid/albertaheader.hh>
    \n+
    #include <cassert>
    \n+#include <vector>
    \n+#include <dune/grid/utility/persistentcontainer.hh>
    \n+#include <dune/grid/utility/persistentcontainervector.hh>
    \n+#include "../yaspgrid.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 Classes

    class  Dune::Alberta::MacroData< dim >
    class  Dune::YaspPersistentContainerIndex< Grid >
     
    struct  Dune::Alberta::MacroData< dim >::Library< int >
    class  Dune::PersistentContainer< YaspGrid< dim, CoordCont >, T >
     Specialization of the PersistentContainer for YaspGrid. More...
     
    \n \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     Include standard header files.
     
    namespace  Dune::Alberta
     
    \n

    Detailed Description

    \n-

    provides a wrapper for ALBERTA's macro_data structure

    \n-
    Author
    Martin Nolte
    \n+

    Specialization of the PersistentContainer for YaspGrid.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,30 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n+ * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-macrodata.hh File Reference\n-provides a wrapper for ALBERTA's macro_data structure _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+yaspgridpersistentcontainer.hh File Reference\n+Specialization of the PersistentContainer for YaspGrid. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bv_\be_\bc_\bt_\bo_\br_\b._\bh_\bh>\n+#include \"_\b._\b._\b/_\by_\ba_\bs_\bp_\bg_\br_\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:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\bI_\bn_\bd_\be_\bx_\b<_\b _\bG_\br_\bi_\bd_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bi_\bn_\bt_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b<_\b _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd_\b<_\b _\bd_\bi_\bm_\b,_\b _\bC_\bo_\bo_\br_\bd_\bC_\bo_\bn_\bt_\b _\b>_\b,_\b _\bT_\b _\b>\n+\u00a0 Specialization of the _\bP_\be_\br_\bs_\bi_\bs_\bt_\be_\bn_\bt_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br for _\bY_\ba_\bs_\bp_\bG_\br_\bi_\bd. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0 Include standard header files.\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba\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-provides a wrapper for ALBERTA's macro_data structure\n- Author\n- Martin Nolte\n+Specialization of the PersistentContainer for YaspGrid.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00698_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00785_source.html", "comments": ["Files 94% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: macrodata.hh Source File\n+dune-grid: basicwriter.hh Source File\n \n \n \n \n \n \n \n@@ -70,522 +70,496 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    macrodata.hh
    \n+
    basicwriter.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_ALBERTA_MACRODATA_HH
    \n-
    6#define DUNE_ALBERTA_MACRODATA_HH
    \n-
    7
    \n-
    13#include <dune/common/fvector.hh>
    \n-
    14#include <dune/common/fmatrix.hh>
    \n-
    15
    \n-\n-\n-\n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH
    \n+
    8
    \n+
    9#include <fstream>
    \n+
    10#include <iomanip>
    \n+
    11#include <iterator>
    \n+
    12#include <list>
    \n+
    13#include <memory>
    \n+
    14#include <sstream>
    \n+
    15#include <string>
    \n+
    16
    \n+
    17#include <dune/common/parallel/mpiguard.hh>
    \n+
    18#include <dune/common/path.hh>
    \n
    19
    \n-
    20#if HAVE_ALBERTA
    \n+
    20#include <dune/geometry/referenceelements.hh>
    \n
    21
    \n-
    22namespace Dune
    \n-
    23{
    \n-
    24
    \n-
    25 namespace Alberta
    \n-
    26 {
    \n-
    27
    \n-
    28 template< int dim >
    \n-
    \n-\n-
    30 {
    \n-
    31 typedef MacroData< dim > This;
    \n-
    32
    \n-
    33 typedef ALBERTA MACRO_DATA Data;
    \n-
    34
    \n-
    35 static const int dimension = dim;
    \n-
    36 static const int numVertices = NumSubEntities< dimension, dimension >::value;
    \n-
    37 static const int numEdges = NumSubEntities< dimension, dimension-1 >::value;
    \n-
    38
    \n-
    39 static const int initialSize = 4096;
    \n-
    40
    \n-
    41 public:
    \n-
    42 template< int >
    \n-
    43 struct Library;
    \n+\n+\n+\n+\n+
    26
    \n+
    27namespace Dune
    \n+
    28{
    \n+
    31
    \n+
    \n+
    32 namespace VTK {
    \n+
    33
    \n+
    34 template<typename IteratorFactory>
    \n+
    \n+\n+
    36 typedef typename IteratorFactory::CellIterator CellIterator;
    \n+
    37 typedef typename IteratorFactory::CornerIterator CornerIterator;
    \n+
    38 typedef typename IteratorFactory::PointIterator PointIterator;
    \n+
    39
    \n+
    40 typedef typename IteratorFactory::Cell Cell;
    \n+
    41
    \n+
    42 public:
    \n+\n
    44
    \n-
    45 template< int > friend struct InstantiateMacroDataLibrary;
    \n-
    46
    \n-
    47 public:
    \n-
    48 typedef int ElementId[ numVertices ];
    \n-
    49
    \n-
    50 static const int supportPeriodicity = 1;
    \n-
    51
    \n-
    \n-\n-
    53 : data_( NULL ),
    \n-
    54 vertexCount_( -1 ),
    \n-
    55 elementCount_( -1 )
    \n-
    56 {}
    \n-
    \n+
    45 private:
    \n+
    46 typedef std::list<std::shared_ptr<FunctionWriter> > WriterList;
    \n+
    47 typedef typename WriterList::const_iterator WIterator;
    \n+
    48
    \n+
    49 typedef typename Cell::Geometry::ctype ctype;
    \n+
    50 static const unsigned celldim = Cell::mydimension;
    \n+
    51 typedef ReferenceElements<ctype, celldim> Refelems;
    \n+
    52
    \n+
    53 static const FileType fileType = celldim == 1
    \n+\n+
    55
    \n+
    56 const IteratorFactory& factory;
    \n
    57
    \n-
    \n-
    58 operator Data * () const
    \n-
    59 {
    \n-
    60 return data_;
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    \n-
    63 int vertexCount () const
    \n-
    64 {
    \n-
    65 return (vertexCount_ < 0 ? data_->n_total_vertices : vertexCount_);
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    68 int elementCount () const
    \n-
    69 {
    \n-
    70 return (elementCount_ < 0 ? data_->n_macro_elements : elementCount_);
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    73 ElementId &element ( int i ) const;
    \n-
    \n-
    74 GlobalVector &vertex ( int i ) const;
    \n-
    \n-
    75 int &neighbor ( int element, int i ) const;
    \n+
    58 WriterList cellData;
    \n+
    59 WriterList pointData;
    \n+
    60
    \n+\n+
    62 typename IteratorFactory::ConnectivityWriter connectivity;
    \n+
    63 OffsetsWriter<Cell> offsets;
    \n+\n+
    65
    \n+
    66 public:
    \n+
    \n+
    67 BasicWriter(const IteratorFactory& factory_)
    \n+
    68 : factory(factory_), connectivity(factory.makeConnectivity())
    \n+
    69 { }
    \n+
    \n+
    70
    \n+
    72 //
    \n+
    73 // Methods for adding data
    \n+
    74 //
    \n+
    75
    \n
    \n-
    76 BoundaryId &boundaryId ( int element, int i ) const;
    \n-
    77
    \n-
    \n-
    82 void create ();
    \n+
    76 void addCellData(const std::shared_ptr<FunctionWriter>& writer) {
    \n+
    77 cellData.push_back(writer);
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    \n+
    80 void addPointData(const std::shared_ptr<FunctionWriter>& writer) {
    \n+
    81 pointData.push_back(writer);
    \n+
    82 }
    \n+
    \n
    83
    \n-
    \n-
    92 void finalize ();
    \n-
    93
    \n-
    \n-\n-
    103
    \n-
    \n-
    112 void setOrientation ( const Real orientation );
    \n-
    113
    \n-
    \n-
    124 bool checkNeighbors () const;
    \n-
    125
    \n-
    \n-
    127 void release ()
    \n-
    128 {
    \n-
    129 if( data_ != NULL )
    \n-
    130 {
    \n-
    131 ALBERTA free_macro_data( data_ );
    \n-
    132 data_ = NULL;
    \n-
    133 }
    \n-
    134 vertexCount_ = elementCount_ = -1;
    \n-
    135 }
    \n-
    \n-
    136
    \n-
    \n-
    142 int insertElement ( const ElementId &id );
    \n-
    143
    \n-
    \n-
    149 int insertVertex ( const GlobalVector &coords )
    \n-
    150 {
    \n-
    151 assert( vertexCount_ >= 0 );
    \n-
    152 if( vertexCount_ >= data_->n_total_vertices )
    \n-
    153 resizeVertices( 2*vertexCount_ );
    \n-
    154 copy( coords, vertex( vertexCount_ ) );
    \n-
    155 return vertexCount_++;
    \n-
    156 }
    \n-
    \n-
    157
    \n-
    \n-
    163 int insertVertex ( const FieldVector< Real, dimWorld > &coords )
    \n-
    164 {
    \n-
    165 assert( vertexCount_ >= 0 );
    \n-
    166 if( vertexCount_ >= data_->n_total_vertices )
    \n-
    167 resizeVertices( 2*vertexCount_ );
    \n-
    168 copy( coords, vertex( vertexCount_ ) );
    \n-
    169 return vertexCount_++;
    \n-
    170 }
    \n-
    \n-
    171
    \n-
    \n-
    172 void insertWallTrafo ( const GlobalMatrix &m, const GlobalVector &t );
    \n-
    \n-
    173 void insertWallTrafo ( const FieldMatrix< Real, dimWorld, dimWorld > &matrix,
    \n-
    174 const FieldVector< Real, dimWorld > &shift );
    \n+
    \n+
    84 void clear() {
    \n+
    85 cellData.clear();
    \n+
    86 pointData.clear();
    \n+
    87 }
    \n+
    \n+
    88
    \n+
    89 protected:
    \n+
    91 //
    \n+
    92 // Methods for writing single functions
    \n+
    93 //
    \n+
    94
    \n+
    \n+\n+
    96 FunctionWriter& functionWriter,
    \n+
    97 unsigned ncells) const
    \n+
    98 {
    \n+
    99 if(functionWriter.beginWrite(vtuWriter, ncells)) {
    \n+
    100 const CellIterator& cellend = factory.endCells();
    \n+
    101 for(CellIterator cellit = factory.beginCells(); cellit != cellend;
    \n+
    102 ++cellit)
    \n+
    103 functionWriter.write(*cellit, Refelems::general(cellit->type()).
    \n+
    104 position(0,0));
    \n+
    105 }
    \n+
    106 functionWriter.endWrite();
    \n+
    107 }
    \n+
    \n+
    108
    \n+
    \n+\n+
    110 FunctionWriter& functionWriter,
    \n+
    111 unsigned npoints) const
    \n+
    112 {
    \n+
    113 if(functionWriter.beginWrite(vtuWriter, npoints)) {
    \n+
    114 const PointIterator& pend = factory.endPoints();
    \n+
    115 for(PointIterator pit = factory.beginPoints(); pit != pend; ++pit)
    \n+
    116 functionWriter.write(pit->cell(), pit->duneIndex());
    \n+
    117 }
    \n+
    118 functionWriter.endWrite();
    \n+
    119 }
    \n+
    \n+
    120
    \n+
    \n+\n+
    122 FunctionWriter& functionWriter,
    \n+
    123 unsigned ncorners) const
    \n+
    124 {
    \n+
    125 if(functionWriter.beginWrite(vtuWriter, ncorners)) {
    \n+
    126 const CornerIterator& cend = factory.endCorners();
    \n+
    127 for(CornerIterator cit = factory.beginCorners(); cit != cend; ++cit)
    \n+
    128 functionWriter.write(cit->cell(), cit->duneIndex());
    \n+
    129 }
    \n+
    130 functionWriter.endWrite();
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    134 //
    \n+
    135 // Methods for writing whole sections
    \n+
    136 //
    \n+
    137
    \n+
    \n+
    138 static std::string getFirstScalar(const WriterList& data) {
    \n+
    139 const WIterator& wend = data.end();
    \n+
    140 for(WIterator wit = data.begin(); wit != wend; ++wit)
    \n+
    141 if((*wit)->ncomps() == 1)
    \n+
    142 return (*wit)->name();
    \n+
    143 return "";
    \n+
    144 }
    \n+
    \n+
    145
    \n+
    \n+
    146 static std::string getFirstVector(const WriterList& data) {
    \n+
    147 const WIterator& wend = data.end();
    \n+
    148 for(WIterator wit = data.begin(); wit != wend; ++wit)
    \n+
    149 if((*wit)->ncomps() == 3)
    \n+
    150 return (*wit)->name();
    \n+
    151 return "";
    \n+
    152 }
    \n+
    \n+
    153
    \n+
    \n+
    154 void writeCellData(VTUWriter& vtuWriter, unsigned ncells) const {
    \n+
    155 if(cellData.empty()) return;
    \n+
    156
    \n+
    157 vtuWriter.beginCellData(getFirstScalar(cellData),
    \n+
    158 getFirstVector(cellData));
    \n+
    159 const WIterator& wend = cellData.end();
    \n+
    160 for(WIterator wit = cellData.begin(); wit != wend; ++wit)
    \n+
    161 writeCellFunction(vtuWriter, **wit, ncells);
    \n+
    162 vtuWriter.endCellData();
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    \n+
    165 void writePointData(VTUWriter& vtuWriter, unsigned npoints) const {
    \n+
    166 if(pointData.empty()) return;
    \n+
    167
    \n+
    168 vtuWriter.beginPointData(getFirstScalar(pointData),
    \n+
    169 getFirstVector(pointData));
    \n+
    170 const WIterator& wend = pointData.end();
    \n+
    171 for(WIterator wit = pointData.begin(); wit != wend; ++wit)
    \n+
    172 writePointFunction(vtuWriter, **wit, npoints);
    \n+
    173 vtuWriter.endPointData();
    \n+
    174 }
    \n+
    \n
    175
    \n
    \n-
    176 void checkCycles ();
    \n-
    177
    \n-
    \n-
    178 void read ( const std::string &filename, bool binary = false );
    \n-
    179
    \n-
    \n-
    180 bool write ( const std::string &filename, bool binary = false ) const
    \n-
    181 {
    \n-
    182 if( binary )
    \n-
    183 return ALBERTA write_macro_data_xdr( data_, filename.c_str() );
    \n-
    184 else
    \n-
    185 return ALBERTA write_macro_data( data_, filename.c_str() );
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    188 private:
    \n-
    189 template< class Vector >
    \n-
    190 void copy ( const Vector &x, GlobalVector &y )
    \n-
    191 {
    \n-
    192 for( int i = 0; i < dimWorld; ++i )
    \n-
    193 y[ i ] = x[ i ];
    \n-
    194 }
    \n-
    195
    \n-
    196 void resizeElements ( const int newSize );
    \n-
    197
    \n-
    198 void resizeVertices ( const int newSize )
    \n-
    199 {
    \n-
    200 const int oldSize = data_->n_total_vertices;
    \n-
    201 data_->n_total_vertices = newSize;
    \n-
    202 data_->coords = memReAlloc< GlobalVector >( data_->coords, oldSize, newSize );
    \n-
    203 assert( (data_->coords != NULL) || (newSize == 0) );
    \n-
    204 }
    \n+
    176 void writeGrid(VTUWriter& vtuWriter, unsigned ncells, unsigned npoints,
    \n+
    177 unsigned ncorners) {
    \n+
    178 vtuWriter.beginPoints();
    \n+
    179 writePointFunction(vtuWriter, coords, npoints);
    \n+
    180 vtuWriter.endPoints();
    \n+
    181
    \n+
    182 vtuWriter.beginCells();
    \n+
    183 writeCornerFunction(vtuWriter, connectivity, ncorners);
    \n+
    184 writeCellFunction(vtuWriter, offsets, ncells);
    \n+
    185 if(fileType != polyData)
    \n+
    186 writeCellFunction(vtuWriter, types, ncells);
    \n+
    187 vtuWriter.endCells();
    \n+
    188 }
    \n+
    \n+
    189
    \n+
    \n+
    190 void writeAll(VTUWriter& vtuWriter, unsigned ncells, unsigned npoints,
    \n+
    191 unsigned ncorners) {
    \n+
    192 writeCellData(vtuWriter, ncells);
    \n+
    193 writePointData(vtuWriter, npoints);
    \n+
    194 writeGrid(vtuWriter, ncells, npoints, ncorners);
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    197 public:
    \n+
    \n+
    198 void writePiece(const std::string& filename, OutputType outputType) {
    \n+
    199 std::ofstream stream;
    \n+
    200 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n+
    201 std::ios_base::eofbit);
    \n+
    202 stream.open(filename.c_str(), std::ios::binary);
    \n+
    203
    \n+
    204 VTUWriter vtuWriter(stream, outputType, fileType);
    \n
    205
    \n-
    206 private:
    \n-
    207 Data *data_;
    \n-
    208 int vertexCount_;
    \n-
    209 int elementCount_;
    \n-
    210 };
    \n-
    211
    \n+
    206 unsigned ncells = std::distance(factory.beginCells(),
    \n+
    207 factory.endCells());
    \n+
    208 unsigned npoints = std::distance(factory.beginPoints(),
    \n+
    209 factory.endPoints());
    \n+
    210 unsigned ncorners = std::distance(factory.beginCorners(),
    \n+
    211 factory.endCorners());
    \n
    212
    \n-
    213
    \n-
    214 // MacroData::Library
    \n-
    215 // ------------------
    \n+
    213 vtuWriter.beginMain(ncells, npoints);
    \n+
    214 writeAll(vtuWriter, ncells, npoints, ncorners);
    \n+
    215 vtuWriter.endMain();
    \n
    216
    \n-
    217 template< int dim >
    \n-
    218 template< int >
    \n-
    \n-
    219 struct MacroData< dim >::Library
    \n-
    220 {
    \n-\n-
    222
    \n-
    223 static bool checkNeighbors ( const MacroData &macroData );
    \n-
    224 static void markLongestEdge ( MacroData &macroData );
    \n-
    225 static void setOrientation ( [[maybe_unused]] MacroData &macroData,
    \n-
    226 [[maybe_unused]] const Real orientation );
    \n-
    227
    \n-
    228 private:
    \n-
    229 static Real edgeLength ( const MacroData &macroData, const ElementId &e, int edge );
    \n-
    230 static int longestEdge ( const MacroData &macroData, const ElementId &e );
    \n-
    231
    \n-
    232 template< class Type >
    \n-
    233 static void rotate ( Type *array, int i, int shift );
    \n-
    234
    \n-
    235 static void rotate ( MacroData &macroData, int i, int shift );
    \n-
    236 static void swap ( MacroData &macroData, int el, int v1, int v2 );
    \n-
    237 };
    \n-
    \n-
    238
    \n-
    239
    \n-
    240
    \n-
    241 // Implementation of MacroData
    \n-
    242 // ---------------------------
    \n-
    243
    \n-
    244 template< int dim >
    \n-
    245 inline typename MacroData< dim >::ElementId &
    \n-
    \n-\n-
    247 {
    \n-
    248 assert( (i >= 0) && (i < data_->n_macro_elements) );
    \n-
    249 const int offset = i * numVertices;
    \n-
    250 return *reinterpret_cast< ElementId * >( data_->mel_vertices + offset );
    \n-
    251 }
    \n+
    217 if(vtuWriter.beginAppended())
    \n+
    218 writeAll(vtuWriter, ncells, npoints, ncorners);
    \n+
    219 vtuWriter.endAppended();
    \n+
    220
    \n+
    221 }
    \n
    \n+
    222
    \n+
    224
    \n+
    \n+
    240 void writeCollection(const std::string name,
    \n+
    241 const std::string& piecename,
    \n+
    242 const std::string& piecepath)
    \n+
    243 {
    \n+
    244 std::ofstream stream;
    \n+
    245 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n+
    246 std::ios_base::eofbit);
    \n+
    247 stream.open(name.c_str(), std::ios::binary);
    \n+
    248
    \n+
    249 PVTUWriter writer(stream, fileType);
    \n+
    250
    \n+
    251 writer.beginMain();
    \n
    252
    \n-
    253
    \n-
    254 template< int dim >
    \n-
    \n-\n-
    256 {
    \n-
    257 assert( (i >= 0) && (i < data_->n_total_vertices) );
    \n-
    258 return data_->coords[ i ];
    \n-
    259 }
    \n-
    \n-
    260
    \n-
    261
    \n-
    262 template< int dim >
    \n-
    \n-
    263 inline int &MacroData< dim >::neighbor ( int element, int i ) const
    \n-
    264 {
    \n-
    265 assert( (element >= 0) && (element < data_->n_macro_elements) );
    \n-
    266 assert( (i >= 0) && (i < numVertices) );
    \n-
    267 return data_->neigh[ element*numVertices + i ];
    \n-
    268 }
    \n-
    \n-
    269
    \n-
    270
    \n-
    271 template< int dim >
    \n-
    \n-
    272 inline BoundaryId &MacroData< dim >::boundaryId ( int element, int i ) const
    \n-
    273 {
    \n-
    274 assert( (element >= 0) && (element < data_->n_macro_elements) );
    \n-
    275 assert( (i >= 0) && (i < numVertices) );
    \n-
    276 return data_->boundary[ element*numVertices + i ];
    \n-
    277 }
    \n+
    253 // PPointData
    \n+
    254 writer.beginPointData(getFirstScalar(pointData),
    \n+
    255 getFirstVector(pointData));
    \n+
    256 for(WIterator it=pointData.begin(); it!=pointData.end(); ++it)
    \n+
    257 (*it)->addArray(writer);
    \n+
    258 writer.endPointData();
    \n+
    259
    \n+
    260 // PCellData
    \n+
    261 writer.beginCellData(getFirstScalar(cellData),
    \n+
    262 getFirstVector(cellData));
    \n+
    263 for(WIterator it=cellData.begin(); it!=cellData.end(); ++it)
    \n+
    264 (*it)->addArray(writer);
    \n+
    265 writer.endCellData();
    \n+
    266
    \n+
    267 // PPoints
    \n+
    268 writer.beginPoints();
    \n+
    269 coords.addArray(writer);
    \n+
    270 writer.endPoints();
    \n+
    271
    \n+
    272 // Pieces
    \n+
    273 for( int i = 0; i < factory.comm().size(); ++i )
    \n+
    274 writer.addPiece(getParallelPieceName(piecename, piecepath, i));
    \n+
    275
    \n+
    276 writer.endMain();
    \n+
    277 }
    \n
    \n
    278
    \n-
    279
    \n-
    280 template< int dim >
    \n-
    \n-\n-
    282 {
    \n-
    283 release();
    \n-
    284 data_ = ALBERTA alloc_macro_data( dim, initialSize, initialSize );
    \n-
    285 data_->boundary = memAlloc< BoundaryId >( initialSize*numVertices );
    \n-
    286 if( dim == 3 )
    \n-
    287 data_->el_type = memAlloc< ElementType >( initialSize );
    \n-
    288 vertexCount_ = elementCount_ = 0;
    \n-
    289 elementCount_ = 0;
    \n-
    290 }
    \n-
    \n-
    291
    \n-
    292
    \n-
    293 template< int dim >
    \n-
    \n-\n-
    295 {
    \n-
    296 if( (vertexCount_ >= 0) && (elementCount_ >= 0) )
    \n-
    297 {
    \n-
    298 resizeVertices( vertexCount_ );
    \n-
    299 resizeElements( elementCount_ );
    \n-
    300 ALBERTA compute_neigh_fast( data_ );
    \n-
    301
    \n-
    302 // assign default boundary id (if none is assigned)
    \n-
    303 for( int element = 0; element < elementCount_; ++element )
    \n-
    304 {
    \n-
    305 for( int i = 0; i < numVertices; ++i )
    \n-
    306 {
    \n-
    307 BoundaryId &id = boundaryId( element, i );
    \n-
    308 if( neighbor( element, i ) >= 0 )
    \n-
    309 {
    \n-
    310 assert( id == InteriorBoundary );
    \n-
    311 id = InteriorBoundary;
    \n-
    312 }
    \n-
    313 else
    \n-
    314 id = (id == InteriorBoundary ? DirichletBoundary : id);
    \n-
    315 }
    \n-
    316 }
    \n-
    317
    \n-
    318 vertexCount_ = elementCount_ = -1;
    \n-
    319 }
    \n-
    320 assert( (vertexCount_ < 0) && (elementCount_ < 0) );
    \n-
    321 }
    \n-
    \n-
    322
    \n-
    323
    \n-
    324 template< int dim >
    \n+
    280 //
    \n+
    281 // Filename generators
    \n+
    282 //
    \n+
    283
    \n+
    285
    \n+
    \n+
    295 std::string getParallelPieceName(const std::string& name,
    \n+
    296 const std::string& path, int rank) const
    \n+
    297 {
    \n+
    298 std::ostringstream s;
    \n+
    299 if(path.size() > 0) {
    \n+
    300 s << path;
    \n+
    301 if(path[path.size()-1] != '/')
    \n+
    302 s << '/';
    \n+
    303 }
    \n+
    304 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()
    \n+
    305 << ':';
    \n+
    306 s << 'p' << std::setw(4) << std::setfill('0') << rank << ':';
    \n+
    307 s << name;
    \n+
    308 switch(fileType) {
    \n+
    309 case polyData : s << ".vtp"; break;
    \n+
    310 case unstructuredGrid : s << ".vtu"; break;
    \n+
    311 }
    \n+
    312 return s.str();
    \n+
    313 }
    \n+
    \n+
    314
    \n+
    316
    \n
    \n-\n-
    326 {
    \n-\n-
    328 }
    \n-
    \n-
    329
    \n-
    330
    \n-
    331 template< int dim >
    \n-
    \n-
    332 inline void MacroData< dim >::setOrientation ( const Real orientation )
    \n-
    333 {
    \n-
    334 Library< dimWorld >::setOrientation( *this, orientation );
    \n-
    335 }
    \n-
    \n-
    336
    \n-
    337
    \n-
    338 template< int dim >
    \n-
    \n-\n-
    340 {
    \n-\n-
    342 }
    \n+
    325 std::string getParallelHeaderName(const std::string& name,
    \n+
    326 const std::string& path) const
    \n+
    327 {
    \n+
    328 std::ostringstream s;
    \n+
    329 if(path.size() > 0) {
    \n+
    330 s << path;
    \n+
    331 if(path[path.size()-1] != '/')
    \n+
    332 s << '/';
    \n+
    333 }
    \n+
    334 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()
    \n+
    335 << ':';
    \n+
    336 s << name;
    \n+
    337 switch(fileType) {
    \n+
    338 case polyData : s << ".pvtp"; break;
    \n+
    339 case unstructuredGrid : s << ".pvtu"; break;
    \n+
    340 }
    \n+
    341 return s.str();
    \n+
    342 }
    \n
    \n
    343
    \n-
    344
    \n-
    345 template< int dim >
    \n-
    \n-
    346 inline int MacroData< dim >::insertElement ( const ElementId &id )
    \n-
    347 {
    \n-
    348 assert( elementCount_ >= 0 );
    \n-
    349 if( elementCount_ >= data_->n_macro_elements )
    \n-
    350 resizeElements( 2*elementCount_ );
    \n-
    351
    \n-
    352 ElementId &e = element( elementCount_ );
    \n-
    353 for( int i = 0; i < numVertices; ++i )
    \n-
    354 {
    \n-
    355 e[ i ] = id[ i ];
    \n-
    356 boundaryId( elementCount_, i ) = InteriorBoundary;
    \n-
    357 }
    \n-
    358 if( dim == 3 )
    \n-
    359 data_->el_type[ elementCount_ ] = 0;
    \n-
    360
    \n-
    361 return elementCount_++;
    \n-
    362 }
    \n-
    \n-
    363
    \n-
    364
    \n-
    365 template< int dim >
    \n-
    366 inline void MacroData< dim >
    \n-
    \n-
    367 ::insertWallTrafo ( const GlobalMatrix &matrix, const GlobalVector &shift )
    \n-
    368 {
    \n-
    369 int &count = data_->n_wall_trafos;
    \n-
    370 AffineTransformation *&array = data_->wall_trafos;
    \n+
    345
    \n+
    \n+
    357 std::string getSerialPieceName(const std::string& name,
    \n+
    358 const std::string& path) const
    \n+
    359 {
    \n+
    360 switch(fileType) {
    \n+
    361 case polyData : return concatPaths(path, name+".vtp");
    \n+
    362 case unstructuredGrid : return concatPaths(path, name+".vtu");
    \n+
    363 }
    \n+
    364 return concatPaths(path, name); // unknown fileType
    \n+
    365 }
    \n+
    \n+
    366
    \n+
    368 //
    \n+
    369 // User interface functions for writing
    \n+
    370 //
    \n
    371
    \n-
    372 // resize wall trafo array
    \n-
    373 array = memReAlloc< AffineTransformation >( array, count, count+1 );
    \n-
    374 assert( data_->wall_trafos != NULL );
    \n-
    375
    \n-
    376 // copy matrix and shift
    \n-
    377 for( int i = 0; i < dimWorld; ++i )
    \n-
    378 copy( matrix[ i ], array[ count ].M[ i ] );
    \n-
    379 copy( shift, array[ count ].t );
    \n-
    380 ++count;
    \n-
    381 }
    \n-
    \n-
    382
    \n-
    383 template< int dim >
    \n-
    384 inline void MacroData< dim >
    \n-
    \n-
    385 ::insertWallTrafo ( const FieldMatrix< Real, dimWorld, dimWorld > &matrix,
    \n-
    386 const FieldVector< Real, dimWorld > &shift )
    \n-
    387 {
    \n-
    388 int &count = data_->n_wall_trafos;
    \n-
    389 AffineTransformation *&array = data_->wall_trafos;
    \n-
    390
    \n-
    391 // resize wall trafo array
    \n-
    392 array = memReAlloc< AffineTransformation >( array, count, count+1 );
    \n-
    393 assert( data_->wall_trafos != NULL );
    \n-
    394
    \n-
    395 // copy matrix and shift
    \n-
    396 for( int i = 0; i < dimWorld; ++i )
    \n-
    397 copy( matrix[ i ], array[ count ].M[ i ] );
    \n-
    398 copy( shift, array[ count ].t );
    \n-
    399 ++count;
    \n-
    400 }
    \n-
    \n-
    401
    \n-
    402
    \n-
    403 template< int dim >
    \n-
    \n-\n-
    405 {
    \n-
    406 // ensure that the macro data has been finalized
    \n-
    407 finalize();
    \n-
    408 ALBERTA macro_test( data_, NULL );
    \n-
    409 }
    \n-
    \n-
    410
    \n-
    411
    \n-
    412 template< int dim >
    \n-
    \n-
    413 inline void MacroData< dim >::read ( const std::string &filename, bool binary )
    \n-
    414 {
    \n-
    415 release();
    \n-
    416 if( binary )
    \n-
    417 data_ = ALBERTA read_macro_xdr( filename.c_str() );
    \n-
    418 else
    \n-
    419 data_ = ALBERTA read_macro( filename.c_str() );
    \n-
    420 }
    \n+
    373
    \n+
    \n+
    395 std::string pwrite(const std::string& name, const std::string& path,
    \n+
    396 const std::string& extendpath, OutputType outputType)
    \n+
    397 {
    \n+
    398 MPIGuard guard(factory.comm());
    \n+
    399
    \n+
    400 // do some magic because paraview can only cope with relative paths to
    \n+
    401 // piece files
    \n+
    402 std::ofstream file;
    \n+
    403 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n+
    404 std::ios_base::eofbit);
    \n+
    405 std::string piecepath = concatPaths(path, extendpath);
    \n+
    406 std::string relpiecepath = relativePath(path, piecepath);
    \n+
    407
    \n+
    408 // write this processes .vtu/.vtp piece file
    \n+
    409 std::string fullname = getParallelPieceName(name, piecepath,
    \n+
    410 factory.comm().rank());
    \n+
    411 writePiece(fullname, outputType);
    \n+
    412
    \n+
    413 // if we are rank 0, write .pvtu/.pvtp parallel header
    \n+
    414 fullname = getParallelHeaderName(name, path);
    \n+
    415 if(factory.comm().rank() == 0)
    \n+
    416 writeCollection(fullname, name, relpiecepath);
    \n+
    417
    \n+
    418 guard.finalize();
    \n+
    419
    \n+
    420 return fullname;
    \n+
    421 }
    \n
    \n-
    \n-
    421
    \n
    422
    \n-
    423 template< int dim >
    \n-
    424 inline void MacroData< dim >::resizeElements ( const int newSize )
    \n-
    425 {
    \n-
    426 const int oldSize = data_->n_macro_elements;
    \n-
    427 data_->n_macro_elements = newSize;
    \n-
    428 data_->mel_vertices = memReAlloc( data_->mel_vertices, oldSize*numVertices, newSize*numVertices );
    \n-
    429 data_->boundary = memReAlloc( data_->boundary, oldSize*numVertices, newSize*numVertices );
    \n-
    430 if( dim == 3 )
    \n-
    431 data_->el_type = memReAlloc( data_->el_type, oldSize, newSize );
    \n-
    432 assert( (newSize == 0) || (data_->mel_vertices != NULL) );
    \n-
    433 }
    \n-
    434
    \n-
    435 }
    \n-
    436
    \n-
    437}
    \n-
    438
    \n-
    439#endif // #if HAVE_ALBERTA
    \n-
    440
    \n-
    441#endif
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-\n-\n-\n-
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    \n+
    436 std::string write(const std::string &name, OutputType outputType)
    \n+
    437 {
    \n+
    438 // in the parallel case, just use pwrite, it has all the necessary
    \n+
    439 // stuff, so we don't need to reimplement it here.
    \n+
    440 if(factory.comm().size() > 1)
    \n+
    441 return pwrite(name, "", "", outputType);
    \n+
    442
    \n+
    443 // generate filename for process data
    \n+
    444 std::string pieceName = getSerialPieceName(name, "");
    \n+
    445
    \n+
    446 writePiece(pieceName, outputType);
    \n+
    447
    \n+
    448 return pieceName;
    \n+
    449 }
    \n+
    \n+
    450
    \n+
    451 };
    \n+
    \n+
    452
    \n+
    453 } // namespace VTK
    \n+
    \n+
    454
    \n+
    456
    \n+
    457} // namespace Dune
    \n+
    458
    \n+
    459#endif // DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH
    \n+\n+\n+
    Common stuff for the VTKWriter.
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    ALBERTA REAL_DD GlobalMatrix
    Definition misc.hh:51
    \n-
    ALBERTA AFF_TRAFO AffineTransformation
    Definition misc.hh:52
    \n-
    ALBERTA BNDRY_TYPE BoundaryId
    Definition misc.hh:61
    \n-
    static const int InteriorBoundary
    Definition misc.hh:59
    \n-
    ALBERTA REAL Real
    Definition misc.hh:48
    \n-
    Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)
    Definition misc.hh:85
    \n-
    static const int DirichletBoundary
    Definition misc.hh:60
    \n-
    static const int dimWorld
    Definition misc.hh:46
    \n-
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n-
    Definition macrodata.hh:30
    \n-
    friend struct InstantiateMacroDataLibrary
    Definition macrodata.hh:45
    \n-
    BoundaryId & boundaryId(int element, int i) const
    Definition macrodata.hh:272
    \n-
    int insertVertex(const GlobalVector &coords)
    insert vertex
    Definition macrodata.hh:149
    \n-
    int ElementId[numVertices]
    Definition macrodata.hh:48
    \n-
    static const int supportPeriodicity
    Definition macrodata.hh:50
    \n-
    void release()
    release the macro data structure
    Definition macrodata.hh:127
    \n-
    int elementCount() const
    Definition macrodata.hh:68
    \n-
    GlobalVector & vertex(int i) const
    Definition macrodata.hh:255
    \n-
    int vertexCount() const
    Definition macrodata.hh:63
    \n-
    void markLongestEdge()
    mark the longest edge of all elements as refinement edges
    Definition macrodata.hh:325
    \n-
    int insertVertex(const FieldVector< Real, dimWorld > &coords)
    insert vertex
    Definition macrodata.hh:163
    \n-
    bool checkNeighbors() const
    check the neighbor information
    Definition macrodata.hh:339
    \n-
    void insertWallTrafo(const FieldMatrix< Real, dimWorld, dimWorld > &matrix, const FieldVector< Real, dimWorld > &shift)
    Definition macrodata.hh:385
    \n-
    ElementId & element(int i) const
    Definition macrodata.hh:246
    \n-
    void checkCycles()
    Definition macrodata.hh:404
    \n-
    int & neighbor(int element, int i) const
    Definition macrodata.hh:263
    \n-
    MacroData()
    Definition macrodata.hh:52
    \n-
    void finalize()
    compress macro data structure
    Definition macrodata.hh:294
    \n-
    void insertWallTrafo(const GlobalMatrix &m, const GlobalVector &t)
    Definition macrodata.hh:367
    \n-
    void setOrientation(const Real orientation)
    set the orientation of all elements
    Definition macrodata.hh:332
    \n-
    void create()
    create a new macro data structure
    Definition macrodata.hh:281
    \n-
    int insertElement(const ElementId &id)
    insert element
    Definition macrodata.hh:346
    \n-
    bool write(const std::string &filename, bool binary=false) const
    Definition macrodata.hh:180
    \n-
    void read(const std::string &filename, bool binary=false)
    Definition macrodata.hh:413
    \n-
    Definition macrodata.hh:220
    \n-
    static void markLongestEdge(MacroData &macroData)
    \n-
    Alberta::MacroData< dim > MacroData
    Definition macrodata.hh:221
    \n-
    Definition misc.hh:148
    \n+
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n+
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n+
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n+
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n+
    Definition basicwriter.hh:35
    \n+
    void writeCellData(VTUWriter &vtuWriter, unsigned ncells) const
    Definition basicwriter.hh:154
    \n+
    BasicWriter(const IteratorFactory &factory_)
    Definition basicwriter.hh:67
    \n+
    std::string getSerialPieceName(const std::string &name, const std::string &path) const
    return name of a serial piece file
    Definition basicwriter.hh:357
    \n+
    void writeCollection(const std::string name, const std::string &piecename, const std::string &piecepath)
    write header file in parallel case to stream
    Definition basicwriter.hh:240
    \n+
    void writeGrid(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints, unsigned ncorners)
    Definition basicwriter.hh:176
    \n+
    void writeAll(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints, unsigned ncorners)
    Definition basicwriter.hh:190
    \n+
    std::string pwrite(const std::string &name, const std::string &path, const std::string &extendpath, OutputType outputType)
    write output; interface might change later
    Definition basicwriter.hh:395
    \n+
    void clear()
    Definition basicwriter.hh:84
    \n+
    void writeCellFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter, unsigned ncells) const
    Definition basicwriter.hh:95
    \n+
    void writeCornerFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter, unsigned ncorners) const
    Definition basicwriter.hh:121
    \n+
    std::string getParallelHeaderName(const std::string &name, const std::string &path) const
    return name of a parallel header file
    Definition basicwriter.hh:325
    \n+
    void writePointData(VTUWriter &vtuWriter, unsigned npoints) const
    Definition basicwriter.hh:165
    \n+
    static std::string getFirstVector(const WriterList &data)
    Definition basicwriter.hh:146
    \n+
    FunctionWriterBase< Cell > FunctionWriter
    Definition basicwriter.hh:43
    \n+
    void writePointFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter, unsigned npoints) const
    Definition basicwriter.hh:109
    \n+
    void writePiece(const std::string &filename, OutputType outputType)
    Definition basicwriter.hh:198
    \n+
    void addCellData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:76
    \n+
    static std::string getFirstScalar(const WriterList &data)
    Definition basicwriter.hh:138
    \n+
    std::string getParallelPieceName(const std::string &name, const std::string &path, int rank) const
    return name of a parallel piece file
    Definition basicwriter.hh:295
    \n+
    std::string write(const std::string &name, OutputType outputType)
    write output (interface might change later)
    Definition basicwriter.hh:436
    \n+
    void addPointData(const std::shared_ptr< FunctionWriter > &writer)
    Definition basicwriter.hh:80
    \n+
    Base class for function writers.
    Definition functionwriter.hh:34
    \n+
    virtual void write(const Cell &, const Domain &)
    write at the given position
    Definition functionwriter.hh:59
    \n+
    virtual void endWrite()=0
    signal end of writing
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0
    start writing with the given writer
    \n+
    writer for the Coordinates array
    Definition functionwriter.hh:147
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition functionwriter.hh:165
    \n+
    writer for the offsets array
    Definition functionwriter.hh:300
    \n+
    writer for the types array
    Definition functionwriter.hh:340
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n+
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition pvtuwriter.hh:195
    \n+
    void endCellData()
    finish CellData section
    Definition pvtuwriter.hh:155
    \n+
    void beginMain(unsigned ghostLevel=0)
    start the main PPolyData/PUnstructuredGrid section
    Definition pvtuwriter.hh:189
    \n+
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition pvtuwriter.hh:146
    \n+
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition pvtuwriter.hh:120
    \n+
    void addPiece(const std::string &filename)
    Add a serial piece to the output file.
    Definition pvtuwriter.hh:215
    \n+
    void endPointData()
    finish PointData section
    Definition pvtuwriter.hh:129
    \n+
    void endPoints()
    finish section for the point coordinates
    Definition pvtuwriter.hh:171
    \n+
    void beginPoints()
    start section for the point coordinates
    Definition pvtuwriter.hh:166
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n+
    bool beginAppended()
    start the appended data section
    Definition vtuwriter.hh:345
    \n+
    void endAppended()
    finish the appended data section
    Definition vtuwriter.hh:359
    \n+
    void endCellData()
    finish CellData section
    Definition vtuwriter.hh:220
    \n+
    void beginMain(unsigned ncells, unsigned npoints)
    start the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:310
    \n+
    void beginCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:274
    \n+
    void endPointData()
    finish PointData section
    Definition vtuwriter.hh:182
    \n+
    void beginCellData(const std::string &scalars="", const std::string &vectors="")
    start CellData section
    Definition vtuwriter.hh:205
    \n+
    void beginPointData(const std::string &scalars="", const std::string &vectors="")
    start PointData section
    Definition vtuwriter.hh:167
    \n+
    void endPoints()
    finish section for the point coordinates
    Definition vtuwriter.hh:249
    \n+
    void endCells()
    start section for the grid cells/PolyData lines
    Definition vtuwriter.hh:285
    \n+
    void beginPoints()
    start section for the point coordinates
    Definition vtuwriter.hh:238
    \n+
    void endMain()
    finish the main PolyData/UnstructuredGrid section
    Definition vtuwriter.hh:320
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,531 +1,608 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n-macrodata.hh\n+ * _\bi_\bo\n+ * _\bf_\bi_\bl_\be\n+ * _\bv_\bt_\bk\n+basicwriter.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_ALBERTA_MACRODATA_HH\n-6#define DUNE_ALBERTA_MACRODATA_HH\n-7\n-13#include \n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh>\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH\n+7#define DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14#include \n+15#include \n+16\n+17#include \n+18#include \n 19\n-20#if HAVE_ALBERTA\n+20#include \n 21\n-22namespace _\bD_\bu_\bn_\be\n-23{\n-24\n-25 namespace Alberta\n-26 {\n-27\n-28 template< int dim >\n-_\b2_\b9 class _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n-30 {\n-31 typedef _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n-32\n-33 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA MACRO_DATA Data;\n-34\n-35 static const int dimension = dim;\n-36 static const int numVertices = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be;\n-37 static const int numEdges = _\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs< dimension, dimension-1 >::value;\n-38\n-39 static const int initialSize = 4096;\n-40\n-41 public:\n-42 template< int >\n-43 struct _\bL_\bi_\bb_\br_\ba_\br_\by;\n+22#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+23#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+24#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+25#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+26\n+27namespace _\bD_\bu_\bn_\be\n+28{\n+31\n+_\b3_\b2 namespace VTK {\n+33\n+34 template\n+_\b3_\b5 class _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br {\n+36 typedef typename IteratorFactory::CellIterator CellIterator;\n+37 typedef typename IteratorFactory::CornerIterator CornerIterator;\n+38 typedef typename IteratorFactory::PointIterator PointIterator;\n+39\n+40 typedef typename IteratorFactory::Cell Cell;\n+41\n+42 public:\n+_\b4_\b3 typedef _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b<_\bC_\be_\bl_\bl_\b> _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br;\n 44\n-_\b4_\b5 template< int > friend struct _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\be_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\bL_\bi_\bb_\br_\ba_\br_\by;\n-46\n-47 public:\n-_\b4_\b8 typedef int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd[ numVertices ];\n-49\n-_\b5_\b0 static const int _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bi_\bt_\by = 1;\n-51\n-_\b5_\b2 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ()\n-53 : data_( NULL ),\n-54 vertexCount_( -1 ),\n-55 elementCount_( -1 )\n-56 {}\n+45 private:\n+46 typedef std::list > WriterList;\n+47 typedef typename WriterList::const_iterator WIterator;\n+48\n+49 typedef typename Cell::Geometry::ctype ctype;\n+50 static const unsigned celldim = Cell::mydimension;\n+51 typedef ReferenceElements Refelems;\n+52\n+53 static const _\bF_\bi_\bl_\be_\bT_\by_\bp_\be fileType = celldim == 1\n+54 ? _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd;\n+55\n+56 const IteratorFactory& factory;\n 57\n-_\b5_\b8 operator Data * () const\n-59 {\n-60 return data_;\n-61 }\n-62\n-_\b6_\b3 int _\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt () const\n-64 {\n-65 return (vertexCount_ < 0 ? data_->n_total_vertices : vertexCount_);\n-66 }\n-67\n-_\b6_\b8 int _\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt () const\n-69 {\n-70 return (elementCount_ < 0 ? data_->n_macro_elements : elementCount_);\n-71 }\n-72\n-_\b7_\b3 _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &_\be_\bl_\be_\bm_\be_\bn_\bt ( int i ) const;\n-_\b7_\b4 _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bv_\be_\br_\bt_\be_\bx ( int i ) const;\n-_\b7_\b5 int &_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int _\be_\bl_\be_\bm_\be_\bn_\bt, int i ) const;\n-_\b7_\b6 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd &_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int _\be_\bl_\be_\bm_\be_\bn_\bt, int i ) const;\n-77\n-_\b8_\b2 void _\bc_\br_\be_\ba_\bt_\be ();\n+58 WriterList cellData;\n+59 WriterList pointData;\n+60\n+61 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> coords;\n+62 typename IteratorFactory::ConnectivityWriter connectivity;\n+63 _\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> offsets;\n+64 _\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b<_\bC_\be_\bl_\bl_\b> types;\n+65\n+66 public:\n+_\b6_\b7 _\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br(const IteratorFactory& factory_)\n+68 : factory(factory_), connectivity(factory.makeConnectivity())\n+69 { }\n+70\n+72 //\n+73 // Methods for adding data\n+74 //\n+75\n+_\b7_\b6 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(const std::shared_ptr& writer) {\n+77 cellData.push_back(writer);\n+78 }\n+79\n+_\b8_\b0 void _\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(const std::shared_ptr& writer) {\n+81 pointData.push_back(writer);\n+82 }\n 83\n-_\b9_\b2 void _\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be ();\n-93\n-_\b1_\b0_\b2 void _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be ();\n-103\n-_\b1_\b1_\b2 void _\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( const _\bR_\be_\ba_\bl orientation );\n-113\n-_\b1_\b2_\b4 bool _\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs () const;\n-125\n-_\b1_\b2_\b7 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n-128 {\n-129 if( data_ != NULL )\n-130 {\n-131 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_macro_data( data_ );\n-132 data_ = NULL;\n-133 }\n-134 vertexCount_ = elementCount_ = -1;\n-135 }\n-136\n-_\b1_\b4_\b2 int _\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &id );\n-143\n-_\b1_\b4_\b9 int _\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &coords )\n-150 {\n-151 assert( vertexCount_ >= 0 );\n-152 if( vertexCount_ >= data_->n_total_vertices )\n-153 resizeVertices( 2*vertexCount_ );\n-154 copy( coords, _\bv_\be_\br_\bt_\be_\bx( vertexCount_ ) );\n-155 return vertexCount_++;\n-156 }\n-157\n-_\b1_\b6_\b3 int _\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx ( const FieldVector< Real, dimWorld > &coords )\n-164 {\n-165 assert( vertexCount_ >= 0 );\n-166 if( vertexCount_ >= data_->n_total_vertices )\n-167 resizeVertices( 2*vertexCount_ );\n-168 copy( coords, _\bv_\be_\br_\bt_\be_\bx( vertexCount_ ) );\n-169 return vertexCount_++;\n-170 }\n-171\n-_\b1_\b7_\b2 void _\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx &m, const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &t );\n-_\b1_\b7_\b3 void _\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const FieldMatrix< Real, dimWorld, dimWorld >\n-&matrix,\n-174 const FieldVector< Real, dimWorld > &shift );\n+_\b8_\b4 void _\bc_\bl_\be_\ba_\br() {\n+85 cellData.clear();\n+86 pointData.clear();\n+87 }\n+88\n+89 protected:\n+91 //\n+92 // Methods for writing single functions\n+93 //\n+94\n+_\b9_\b5 void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter,\n+96 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br& functionWriter,\n+97 unsigned ncells) const\n+98 {\n+99 if(functionWriter._\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(vtuWriter, ncells)) {\n+100 const CellIterator& cellend = factory.endCells();\n+101 for(CellIterator cellit = factory.beginCells(); cellit != cellend;\n+102 ++cellit)\n+103 functionWriter._\bw_\br_\bi_\bt_\be(*cellit, Refelems::general(cellit->type()).\n+104 position(0,0));\n+105 }\n+106 functionWriter._\be_\bn_\bd_\bW_\br_\bi_\bt_\be();\n+107 }\n+108\n+_\b1_\b0_\b9 void _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter,\n+110 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br& functionWriter,\n+111 unsigned npoints) const\n+112 {\n+113 if(functionWriter._\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(vtuWriter, npoints)) {\n+114 const PointIterator& pend = factory.endPoints();\n+115 for(PointIterator pit = factory.beginPoints(); pit != pend; ++pit)\n+116 functionWriter._\bw_\br_\bi_\bt_\be(pit->cell(), pit->duneIndex());\n+117 }\n+118 functionWriter._\be_\bn_\bd_\bW_\br_\bi_\bt_\be();\n+119 }\n+120\n+_\b1_\b2_\b1 void _\bw_\br_\bi_\bt_\be_\bC_\bo_\br_\bn_\be_\br_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter,\n+122 _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br& functionWriter,\n+123 unsigned ncorners) const\n+124 {\n+125 if(functionWriter._\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(vtuWriter, ncorners)) {\n+126 const CornerIterator& cend = factory.endCorners();\n+127 for(CornerIterator cit = factory.beginCorners(); cit != cend; ++cit)\n+128 functionWriter._\bw_\br_\bi_\bt_\be(cit->cell(), cit->duneIndex());\n+129 }\n+130 functionWriter._\be_\bn_\bd_\bW_\br_\bi_\bt_\be();\n+131 }\n+132\n+134 //\n+135 // Methods for writing whole sections\n+136 //\n+137\n+_\b1_\b3_\b8 static std::string _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(const WriterList& data) {\n+139 const WIterator& wend = data.end();\n+140 for(WIterator wit = data.begin(); wit != wend; ++wit)\n+141 if((*wit)->ncomps() == 1)\n+142 return (*wit)->name();\n+143 return \"\";\n+144 }\n+145\n+_\b1_\b4_\b6 static std::string _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(const WriterList& data) {\n+147 const WIterator& wend = data.end();\n+148 for(WIterator wit = data.begin(); wit != wend; ++wit)\n+149 if((*wit)->ncomps() == 3)\n+150 return (*wit)->name();\n+151 return \"\";\n+152 }\n+153\n+_\b1_\b5_\b4 void _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned ncells) const {\n+155 if(cellData.empty()) return;\n+156\n+157 vtuWriter._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(cellData),\n+158 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(cellData));\n+159 const WIterator& wend = cellData.end();\n+160 for(WIterator wit = cellData.begin(); wit != wend; ++wit)\n+161 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, **wit, ncells);\n+162 vtuWriter._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n+163 }\n+164\n+_\b1_\b6_\b5 void _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned npoints) const {\n+166 if(pointData.empty()) return;\n+167\n+168 vtuWriter._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(pointData),\n+169 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(pointData));\n+170 const WIterator& wend = pointData.end();\n+171 for(WIterator wit = pointData.begin(); wit != wend; ++wit)\n+172 _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, **wit, npoints);\n+173 vtuWriter._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n+174 }\n 175\n-_\b1_\b7_\b6 void _\bc_\bh_\be_\bc_\bk_\bC_\by_\bc_\bl_\be_\bs ();\n-177\n-_\b1_\b7_\b8 void _\br_\be_\ba_\bd ( const std::string &filename, bool binary = false );\n-179\n-_\b1_\b8_\b0 bool _\bw_\br_\bi_\bt_\be ( const std::string &filename, bool binary = false ) const\n-181 {\n-182 if( binary )\n-183 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_macro_data_xdr( data_, filename.c_str() );\n-184 else\n-185 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_macro_data( data_, filename.c_str() );\n-186 }\n-187\n-188 private:\n-189 template< class Vector >\n-190 void copy ( const Vector &x, _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &y )\n-191 {\n-192 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n-193 y[ i ] = x[ i ];\n-194 }\n-195\n-196 void resizeElements ( const int newSize );\n-197\n-198 void resizeVertices ( const int newSize )\n-199 {\n-200 const int oldSize = data_->n_total_vertices;\n-201 data_->n_total_vertices = newSize;\n-202 data_->coords = memReAlloc< GlobalVector >( data_->coords, oldSize, newSize\n-);\n-203 assert( (data_->coords != NULL) || (newSize == 0) );\n-204 }\n+_\b1_\b7_\b6 void _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned ncells, unsigned npoints,\n+177 unsigned ncorners) {\n+178 vtuWriter._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n+179 _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, coords, npoints);\n+180 vtuWriter._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n+181\n+182 vtuWriter._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs();\n+183 _\bw_\br_\bi_\bt_\be_\bC_\bo_\br_\bn_\be_\br_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, connectivity, ncorners);\n+184 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, offsets, ncells);\n+185 if(fileType != _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba)\n+186 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(vtuWriter, types, ncells);\n+187 vtuWriter._\be_\bn_\bd_\bC_\be_\bl_\bl_\bs();\n+188 }\n+189\n+_\b1_\b9_\b0 void _\bw_\br_\bi_\bt_\be_\bA_\bl_\bl(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& vtuWriter, unsigned ncells, unsigned npoints,\n+191 unsigned ncorners) {\n+192 _\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(vtuWriter, ncells);\n+193 _\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(vtuWriter, npoints);\n+194 _\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd(vtuWriter, ncells, npoints, ncorners);\n+195 }\n+196\n+197 public:\n+_\b1_\b9_\b8 void _\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be(const std::string& filename, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType) {\n+199 std::ofstream stream;\n+200 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n+201 std::ios_base::eofbit);\n+202 stream.open(filename.c_str(), std::ios::binary);\n+203\n+204 _\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br vtuWriter(stream, outputType, fileType);\n 205\n-206 private:\n-207 Data *data_;\n-208 int vertexCount_;\n-209 int elementCount_;\n-210 };\n-211\n+206 unsigned ncells = std::distance(factory.beginCells(),\n+207 factory.endCells());\n+208 unsigned npoints = std::distance(factory.beginPoints(),\n+209 factory.endPoints());\n+210 unsigned ncorners = std::distance(factory.beginCorners(),\n+211 factory.endCorners());\n 212\n-213\n-214 // MacroData::Library\n-215 // ------------------\n+213 vtuWriter._\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn(ncells, npoints);\n+214 _\bw_\br_\bi_\bt_\be_\bA_\bl_\bl(vtuWriter, ncells, npoints, ncorners);\n+215 vtuWriter._\be_\bn_\bd_\bM_\ba_\bi_\bn();\n 216\n-217 template< int dim >\n-218 template< int >\n-_\b2_\b1_\b9 struct _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba< dim >::_\bL_\bi_\bb_\br_\ba_\br_\by\n-220 {\n-_\b2_\b2_\b1 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b> _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba;\n+217 if(vtuWriter._\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd())\n+218 _\bw_\br_\bi_\bt_\be_\bA_\bl_\bl(vtuWriter, ncells, npoints, ncorners);\n+219 vtuWriter._\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd();\n+220\n+221 }\n 222\n-223 static bool _\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData );\n-_\b2_\b2_\b4 static void _\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be ( _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData );\n-225 static void _\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( [[maybe_unused]] _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData,\n-226 [[maybe_unused]] const _\bR_\be_\ba_\bl orientation );\n-227\n-228 private:\n-229 static _\bR_\be_\ba_\bl edgeLength ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &e,\n-int edge );\n-230 static int longestEdge ( const _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, const _\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &e );\n-231\n-232 template< class Type >\n-233 static void rotate ( Type *array, int i, int shift );\n-234\n-235 static void rotate ( _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, int i, int shift );\n-236 static void swap ( _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba ¯oData, int el, int v1, int v2 );\n-237 };\n-238\n-239\n-240\n-241 // Implementation of MacroData\n-242 // ---------------------------\n-243\n-244 template< int dim >\n-245 inline typename _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd &\n-_\b2_\b4_\b6 _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt ( int i ) const\n-247 {\n-248 assert( (i >= 0) && (i < data_->n_macro_elements) );\n-249 const int offset = i * numVertices;\n-250 return *reinterpret_cast< ElementId * >( data_->mel_vertices + offset );\n-251 }\n+224\n+_\b2_\b4_\b0 void _\bw_\br_\bi_\bt_\be_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn(const std::string name,\n+241 const std::string& piecename,\n+242 const std::string& piecepath)\n+243 {\n+244 std::ofstream stream;\n+245 stream.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n+246 std::ios_base::eofbit);\n+247 stream.open(name.c_str(), std::ios::binary);\n+248\n+249 _\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br writer(stream, fileType);\n+250\n+251 writer._\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn();\n 252\n-253\n-254 template< int dim >\n-_\b2_\b5_\b5 inline _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bv_\be_\br_\bt_\be_\bx ( int i ) const\n-256 {\n-257 assert( (i >= 0) && (i < data_->n_total_vertices) );\n-258 return data_->coords[ i ];\n-259 }\n-260\n-261\n-262 template< int dim >\n-_\b2_\b6_\b3 inline int &_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br ( int element, int i ) const\n-264 {\n-265 assert( (element >= 0) && (element < data_->n_macro_elements) );\n-266 assert( (i >= 0) && (i < numVertices) );\n-267 return data_->neigh[ element*numVertices + i ];\n-268 }\n-269\n-270\n-271 template< int dim >\n-_\b2_\b7_\b2 inline _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd &_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd ( int element, int i )\n-const\n-273 {\n-274 assert( (element >= 0) && (element < data_->n_macro_elements) );\n-275 assert( (i >= 0) && (i < numVertices) );\n-276 return data_->boundary[ element*numVertices + i ];\n+253 // PPointData\n+254 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(pointData),\n+255 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(pointData));\n+256 for(WIterator it=pointData.begin(); it!=pointData.end(); ++it)\n+257 (*it)->addArray(writer);\n+258 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba();\n+259\n+260 // PCellData\n+261 writer._\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba(_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br(cellData),\n+262 _\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br(cellData));\n+263 for(WIterator it=cellData.begin(); it!=cellData.end(); ++it)\n+264 (*it)->addArray(writer);\n+265 writer._\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba();\n+266\n+267 // PPoints\n+268 writer._\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs();\n+269 coords._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(writer);\n+270 writer._\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs();\n+271\n+272 // Pieces\n+273 for( int i = 0; i < factory.comm().size(); ++i )\n+274 writer._\ba_\bd_\bd_\bP_\bi_\be_\bc_\be(_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(piecename, piecepath, i));\n+275\n+276 writer._\be_\bn_\bd_\bM_\ba_\bi_\bn();\n 277 }\n 278\n-279\n-280 template< int dim >\n-_\b2_\b8_\b1 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be ()\n-282 {\n-283 release();\n-284 data_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA alloc_macro_data( dim, initialSize, initialSize );\n-285 data_->boundary = memAlloc< BoundaryId >( initialSize*numVertices );\n-286 if( dim == 3 )\n-287 data_->el_type = memAlloc< ElementType >( initialSize );\n-288 vertexCount_ = elementCount_ = 0;\n-289 elementCount_ = 0;\n-290 }\n-291\n-292\n-293 template< int dim >\n-_\b2_\b9_\b4 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be ()\n-295 {\n-296 if( (vertexCount_ >= 0) && (elementCount_ >= 0) )\n+280 //\n+281 // Filename generators\n+282 //\n+283\n+285\n+_\b2_\b9_\b5 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n+296 const std::string& path, int rank) const\n 297 {\n-298 resizeVertices( vertexCount_ );\n-299 resizeElements( elementCount_ );\n-300 _\bA_\bL_\bB_\bE_\bR_\bT_\bA compute_neigh_fast( data_ );\n-301\n-302 // assign default boundary id (if none is assigned)\n-303 for( int element = 0; element < elementCount_; ++element )\n-304 {\n-305 for( int i = 0; i < numVertices; ++i )\n-306 {\n-307 _\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd &id = boundaryId( element, i );\n-308 if( neighbor( element, i ) >= 0 )\n-309 {\n-310 assert( id == _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by );\n-311 id = _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by;\n-312 }\n-313 else\n-314 id = (id == _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by ? _\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by : id);\n-315 }\n-316 }\n-317\n-318 vertexCount_ = elementCount_ = -1;\n-319 }\n-320 assert( (vertexCount_ < 0) && (elementCount_ < 0) );\n-321 }\n-322\n-323\n-324 template< int dim >\n-_\b3_\b2_\b5 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be ()\n-326 {\n-327 _\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be( *this );\n-328 }\n-329\n-330\n-331 template< int dim >\n-_\b3_\b3_\b2 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( const _\bR_\be_\ba_\bl orientation )\n-333 {\n-334 _\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn( *this, orientation );\n-335 }\n-336\n-337\n-338 template< int dim >\n-_\b3_\b3_\b9 inline bool _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs () const\n-340 {\n-341 return _\bL_\bi_\bb_\br_\ba_\br_\by_\b<_\b _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd_\b _\b>_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs( *this );\n+298 std::ostringstream s;\n+299 if(path.size() > 0) {\n+300 s << path;\n+301 if(path[path.size()-1] != '/')\n+302 s << '/';\n+303 }\n+304 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()\n+305 << ':';\n+306 s << 'p' << std::setw(4) << std::setfill('0') << rank << ':';\n+307 s << name;\n+308 switch(fileType) {\n+309 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : s << \".vtp\"; break;\n+310 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd : s << \".vtu\"; break;\n+311 }\n+312 return s.str();\n+313 }\n+314\n+316\n+_\b3_\b2_\b5 std::string _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(const std::string& name,\n+326 const std::string& path) const\n+327 {\n+328 std::ostringstream s;\n+329 if(path.size() > 0) {\n+330 s << path;\n+331 if(path[path.size()-1] != '/')\n+332 s << '/';\n+333 }\n+334 s << 's' << std::setw(4) << std::setfill('0') << factory.comm().size()\n+335 << ':';\n+336 s << name;\n+337 switch(fileType) {\n+338 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : s << \".pvtp\"; break;\n+339 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd : s << \".pvtu\"; break;\n+340 }\n+341 return s.str();\n 342 }\n 343\n-344\n-345 template< int dim >\n-_\b3_\b4_\b6 inline int _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt ( const ElementId &id )\n-347 {\n-348 assert( elementCount_ >= 0 );\n-349 if( elementCount_ >= data_->n_macro_elements )\n-350 resizeElements( 2*elementCount_ );\n-351\n-352 ElementId &e = element( elementCount_ );\n-353 for( int i = 0; i < numVertices; ++i )\n-354 {\n-355 e[ i ] = id[ i ];\n-356 boundaryId( elementCount_, i ) = _\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by;\n-357 }\n-358 if( dim == 3 )\n-359 data_->el_type[ elementCount_ ] = 0;\n-360\n-361 return elementCount_++;\n-362 }\n-363\n-364\n-365 template< int dim >\n-366 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b6_\b7_\b _\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const _\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx &matrix, const _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br &shift )\n-368 {\n-369 int &count = data_->n_wall_trafos;\n-370 _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *&array = data_->wall_trafos;\n+345\n+_\b3_\b5_\b7 std::string _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(const std::string& name,\n+358 const std::string& path) const\n+359 {\n+360 switch(fileType) {\n+361 case _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba : return concatPaths(path, name+\".vtp\");\n+362 case _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd : return concatPaths(path, name+\".vtu\");\n+363 }\n+364 return concatPaths(path, name); // unknown fileType\n+365 }\n+366\n+368 //\n+369 // User interface functions for writing\n+370 //\n 371\n-372 // resize wall trafo array\n-373 array = memReAlloc< AffineTransformation >( array, count, count+1 );\n-374 assert( data_->wall_trafos != NULL );\n-375\n-376 // copy matrix and shift\n-377 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n-378 copy( matrix[ i ], array[ count ].M[ i ] );\n-379 copy( shift, array[ count ].t );\n-380 ++count;\n-381 }\n-382\n-383 template< int dim >\n-384 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>\n-_\b3_\b8_\b5_\b _\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo ( const FieldMatrix< Real, dimWorld, dimWorld > &matrix,\n-386 const FieldVector< Real, dimWorld > &shift )\n-387 {\n-388 int &count = data_->n_wall_trafos;\n-389 _\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn *&array = data_->wall_trafos;\n-390\n-391 // resize wall trafo array\n-392 array = memReAlloc< AffineTransformation >( array, count, count+1 );\n-393 assert( data_->wall_trafos != NULL );\n-394\n-395 // copy matrix and shift\n-396 for( int i = 0; i < _\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd; ++i )\n-397 copy( matrix[ i ], array[ count ].M[ i ] );\n-398 copy( shift, array[ count ].t );\n-399 ++count;\n-400 }\n-401\n-402\n-403 template< int dim >\n-_\b4_\b0_\b4 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bC_\by_\bc_\bl_\be_\bs ()\n-405 {\n-406 // ensure that the macro data has been finalized\n-407 finalize();\n-408 _\bA_\bL_\bB_\bE_\bR_\bT_\bA macro_test( data_, NULL );\n-409 }\n-410\n-411\n-412 template< int dim >\n-_\b4_\b1_\b3 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\ba_\bd ( const std::string &filename, bool\n-binary )\n-414 {\n-415 release();\n-416 if( binary )\n-417 data_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_macro_xdr( filename.c_str() );\n-418 else\n-419 data_ = _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_macro( filename.c_str() );\n-420 }\n-421\n+373\n+_\b3_\b9_\b5 std::string _\bp_\bw_\br_\bi_\bt_\be(const std::string& name, const std::string& path,\n+396 const std::string& extendpath, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType)\n+397 {\n+398 MPIGuard guard(factory.comm());\n+399\n+400 // do some magic because paraview can only cope with relative paths to\n+401 // piece files\n+402 std::ofstream file;\n+403 file.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n+404 std::ios_base::eofbit);\n+405 std::string piecepath = concatPaths(path, extendpath);\n+406 std::string relpiecepath = relativePath(path, piecepath);\n+407\n+408 // write this processes .vtu/.vtp piece file\n+409 std::string fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, piecepath,\n+410 factory.comm().rank());\n+411 _\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be(fullname, outputType);\n+412\n+413 // if we are rank 0, write .pvtu/.pvtp parallel header\n+414 fullname = _\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be(name, path);\n+415 if(factory.comm().rank() == 0)\n+416 _\bw_\br_\bi_\bt_\be_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn(fullname, name, relpiecepath);\n+417\n+418 guard.finalize();\n+419\n+420 return fullname;\n+421 }\n 422\n-423 template< int dim >\n-424 inline void _\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b<_\b _\bd_\bi_\bm_\b _\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs ( const int newSize )\n-425 {\n-426 const int oldSize = data_->n_macro_elements;\n-427 data_->n_macro_elements = newSize;\n-428 data_->mel_vertices = _\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc( data_->mel_vertices, oldSize*numVertices,\n-newSize*numVertices );\n-429 data_->boundary = _\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc( data_->boundary, oldSize*numVertices,\n-newSize*numVertices );\n-430 if( dim == 3 )\n-431 data_->el_type = _\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc( data_->el_type, oldSize, newSize );\n-432 assert( (newSize == 0) || (data_->mel_vertices != NULL) );\n-433 }\n-434\n-435 }\n-436\n-437}\n-438\n-439#endif // #if HAVE_ALBERTA\n-440\n-441#endif\n-_\ba_\bl_\bg_\be_\bb_\br_\ba_\b._\bh_\bh\n-_\bm_\bi_\bs_\bc_\b._\bh_\bh\n-_\ba_\bl_\bb_\be_\br_\bt_\ba_\bh_\be_\ba_\bd_\be_\br_\b._\bh_\bh\n-_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n-#define ALBERTA\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\b4_\b3_\b6 std::string _\bw_\br_\bi_\bt_\be(const std::string &name, _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be outputType)\n+437 {\n+438 // in the parallel case, just use pwrite, it has all the necessary\n+439 // stuff, so we don't need to reimplement it here.\n+440 if(factory.comm().size() > 1)\n+441 return _\bp_\bw_\br_\bi_\bt_\be(name, \"\", \"\", outputType);\n+442\n+443 // generate filename for process data\n+444 std::string pieceName = _\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be(name, \"\");\n+445\n+446 _\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be(pieceName, outputType);\n+447\n+448 return pieceName;\n+449 }\n+450\n+451 };\n+452\n+453 } // namespace VTK\n+454\n+456\n+457} // namespace Dune\n+458\n+459#endif // DUNE_GRID_IO_FILE_VTK_BASICWRITER_HH\n+_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+Common stuff for the VTKWriter.\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bM_\ba_\bt_\br_\bi_\bx\n-ALBERTA REAL_DD GlobalMatrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bA_\bf_\bf_\bi_\bn_\be_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn\n-ALBERTA AFF_TRAFO AffineTransformation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-ALBERTA BNDRY_TYPE BoundaryId\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-static const int InteriorBoundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n-ALBERTA REAL Real\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\be_\bm_\bR_\be_\bA_\bl_\bl_\bo_\bc\n-Data * memReAlloc(Data *ptr, size_t oldSize, size_t newSize)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bi_\br_\bi_\bc_\bh_\bl_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-static const int DirichletBoundary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\bi_\bm_\bW_\bo_\br_\bl_\bd\n-static const int dimWorld\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n-ALBERTA REAL_D GlobalVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\be_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\bL_\bi_\bb_\br_\ba_\br_\by\n-friend struct InstantiateMacroDataLibrary\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bd\n-BoundaryId & boundaryId(int element, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:272\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n-int insertVertex(const GlobalVector &coords)\n-insert vertex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bd\n-int ElementId[numVertices]\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bP_\be_\br_\bi_\bo_\bd_\bi_\bc_\bi_\bt_\by\n-static const int supportPeriodicity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-void release()\n-release the macro data structure\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt_\bC_\bo_\bu_\bn_\bt\n-int elementCount() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx\n-GlobalVector & vertex(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bv_\be_\br_\bt_\be_\bx_\bC_\bo_\bu_\bn_\bt\n-int vertexCount() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n-void markLongestEdge()\n-mark the longest edge of all elements as refinement edges\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:325\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bV_\be_\br_\bt_\be_\bx\n-int insertVertex(const FieldVector< Real, dimWorld > &coords)\n-insert vertex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bs\n-bool checkNeighbors() const\n-check the neighbor information\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:339\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo\n-void insertWallTrafo(const FieldMatrix< Real, dimWorld, dimWorld > &matrix,\n-const FieldVector< Real, dimWorld > &shift)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:385\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\be_\bl_\be_\bm_\be_\bn_\bt\n-ElementId & element(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bc_\bh_\be_\bc_\bk_\bC_\by_\bc_\bl_\be_\bs\n-void checkCycles()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:404\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bn_\be_\bi_\bg_\bh_\bb_\bo_\br\n-int & neighbor(int element, int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:263\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n-MacroData()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be\n-void finalize()\n-compress macro data structure\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:294\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bW_\ba_\bl_\bl_\bT_\br_\ba_\bf_\bo\n-void insertWallTrafo(const GlobalMatrix &m, const GlobalVector &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:367\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bs_\be_\bt_\bO_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-void setOrientation(const Real orientation)\n-set the orientation of all elements\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:332\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-void create()\n-create a new macro data structure\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:281\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bi_\bn_\bs_\be_\br_\bt_\bE_\bl_\be_\bm_\be_\bn_\bt\n-int insertElement(const ElementId &id)\n-insert element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:346\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bw_\br_\bi_\bt_\be\n-bool write(const std::string &filename, bool binary=false) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:180\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\br_\be_\ba_\bd\n-void read(const std::string &filename, bool binary=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:413\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by_\b:_\b:_\bm_\ba_\br_\bk_\bL_\bo_\bn_\bg_\be_\bs_\bt_\bE_\bd_\bg_\be\n-static void markLongestEdge(MacroData ¯oData)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba_\b:_\b:_\bL_\bi_\bb_\br_\ba_\br_\by_\b:_\b:_\bM_\ba_\bc_\br_\bo_\bD_\ba_\bt_\ba\n-Alberta::MacroData< dim > MacroData\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn macrodata.hh:221\n-_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bN_\bu_\bm_\bS_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\bi_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n+OutputType\n+How the bulk data should be stored in the file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n+FileType\n+which type of VTK file to write\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n+@ polyData\n+for .vtp files (PolyData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n+@ unstructuredGrid\n+for .vtu files (UnstructuredGrid)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void writeCellData(VTUWriter &vtuWriter, unsigned ncells) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br\n+BasicWriter(const IteratorFactory &factory_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bS_\be_\br_\bi_\ba_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n+std::string getSerialPieceName(const std::string &name, const std::string\n+&path) const\n+return name of a serial piece file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:357\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn\n+void writeCollection(const std::string name, const std::string &piecename,\n+const std::string &piecepath)\n+write header file in parallel case to stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bG_\br_\bi_\bd\n+void writeGrid(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints,\n+unsigned ncorners)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bA_\bl_\bl\n+void writeAll(VTUWriter &vtuWriter, unsigned ncells, unsigned npoints, unsigned\n+ncorners)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:190\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bp_\bw_\br_\bi_\bt_\be\n+std::string pwrite(const std::string &name, const std::string &path, const\n+std::string &extendpath, OutputType outputType)\n+write output; interface might change later\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:395\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bc_\bl_\be_\ba_\br\n+void clear()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\be_\bl_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void writeCellFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter,\n+unsigned ncells) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bC_\bo_\br_\bn_\be_\br_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void writeCornerFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter,\n+unsigned ncorners) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bH_\be_\ba_\bd_\be_\br_\bN_\ba_\bm_\be\n+std::string getParallelHeaderName(const std::string &name, const std::string\n+&path) const\n+return name of a parallel header file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:325\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void writePointData(VTUWriter &vtuWriter, unsigned npoints) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bV_\be_\bc_\bt_\bo_\br\n+static std::string getFirstVector(const WriterList &data)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+FunctionWriterBase< Cell > FunctionWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bP_\bo_\bi_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void writePointFunction(VTUWriter &vtuWriter, FunctionWriter &functionWriter,\n+unsigned npoints) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be_\bP_\bi_\be_\bc_\be\n+void writePiece(const std::string &filename, OutputType outputType)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void addCellData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\bi_\br_\bs_\bt_\bS_\bc_\ba_\bl_\ba_\br\n+static std::string getFirstScalar(const WriterList &data)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bP_\ba_\br_\ba_\bl_\bl_\be_\bl_\bP_\bi_\be_\bc_\be_\bN_\ba_\bm_\be\n+std::string getParallelPieceName(const std::string &name, const std::string\n+&path, int rank) const\n+return name of a parallel piece file\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:295\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+std::string write(const std::string &name, OutputType outputType)\n+write output (interface might change later)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:436\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void addPointData(const std::shared_ptr< FunctionWriter > &writer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basicwriter.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+Base class for function writers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const Cell &, const Domain &)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()=0\n+signal end of writing\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)=0\n+start writing with the given writer\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+writer for the Coordinates array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bW_\br_\bi_\bt_\be_\br\n+writer for the offsets array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:300\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bT_\by_\bp_\be_\bs_\bW_\br_\bi_\bt_\be_\br\n+writer for the types array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:340\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n+void endMain()\n+finish the main PolyData/UnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void endCellData()\n+finish CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n+void beginMain(unsigned ghostLevel=0)\n+start the main PPolyData/PUnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void beginCellData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void beginPointData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bP_\bi_\be_\bc_\be\n+void addPiece(const std::string &filename)\n+Add a serial piece to the output file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:215\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void endPointData()\n+finish PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+void endPoints()\n+finish section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+void beginPoints()\n+start section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n+bool beginAppended()\n+start the appended data section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:345\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bA_\bp_\bp_\be_\bn_\bd_\be_\bd\n+void endAppended()\n+finish the appended data section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:359\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void endCellData()\n+finish CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bM_\ba_\bi_\bn\n+void beginMain(unsigned ncells, unsigned npoints)\n+start the main PolyData/UnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:310\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bs\n+void beginCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void endPointData()\n+finish PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n+void beginCellData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start CellData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bD_\ba_\bt_\ba\n+void beginPointData(const std::string &scalars=\"\", const std::string\n+&vectors=\"\")\n+start PointData section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bP_\bo_\bi_\bn_\bt_\bs\n+void endPoints()\n+finish section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bC_\be_\bl_\bl_\bs\n+void endCells()\n+start section for the grid cells/PolyData lines\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bP_\bo_\bi_\bn_\bt_\bs\n+void beginPoints()\n+start section for the point coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bM_\ba_\bi_\bn\n+void endMain()\n+finish the main PolyData/UnstructuredGrid section\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:320\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00842_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00881_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,26 +77,26 @@\n
  • dune
  • grid
  • io
  • file
  • dgfparser
  • blocks
  • \n
    \n
    \n
    \n
    interval.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_DGF_INTERVALBLOCK_HH
    \n
    6#define DUNE_DGF_INTERVALBLOCK_HH
    \n
    7
    \n
    8#include <iostream>
    \n
    9#include <vector>
    \n
    10#include <array>
    \n
    11
    \n-\n+\n
    13
    \n
    14
    \n
    15namespace Dune
    \n
    16{
    \n
    17
    \n
    18 namespace dgf
    \n
    19 {
    \n@@ -245,15 +245,15 @@\n
    \n
    139
    \n
    140 } // end namespace dgf
    \n
    141
    \n
    142} // end namespace Dune
    \n
    143
    \n
    144#endif
    \n-\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    std::ostream & operator<<(std::ostream &out, const IntervalBlock::Interval &interval)
    Definition interval.hh:123
    \n
    Definition basic.hh:31
    \n
    Definition interval.hh:23
    \n
    void get(std::vector< std::vector< double > > &vtx, int &nofvtx, std::vector< std::vector< unsigned int > > &simplex, int &nofsimpl)
    Definition interval.hh:61
    \n
    int numIntervals() const
    Definition interval.hh:83
    \n
    int getVtx(int block, std::vector< std::vector< double > > &vtx) const
    Definition interval.cc:84
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00851_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00572_source.html", "comments": ["Files 90% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: general.hh Source File\n+dune-grid: hostcorners.hh Source File\n \n \n \n \n \n \n \n@@ -70,98 +70,94 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    general.hh
    \n+
    hostcorners.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH
    \n-
    6#define DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH
    \n+
    5#ifndef DUNE_GEOGRID_HOSTCORNERS_HH
    \n+
    6#define DUNE_GEOGRID_HOSTCORNERS_HH
    \n
    7
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n-
    12
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14 namespace GeoGrid
    \n+
    15 {
    \n
    16
    \n-
    17 namespace dgf
    \n-
    18 {
    \n+
    17 // HostCorners
    \n+
    18 // -----------
    \n
    19
    \n-
    20 // GeneralBlock
    \n-
    21 // ---------
    \n-
    22
    \n-
    \n-\n-
    24 : public BasicBlock
    \n-
    25 {
    \n-
    26 unsigned int nofvtx;
    \n-
    27 int dimgrid;
    \n-
    28 bool goodline; // active line describes a vertex
    \n-
    29 std :: vector< unsigned int > map; // active vertex
    \n-
    30 int nofparams;
    \n-
    31 int vtxoffset;
    \n-
    32
    \n-
    33 public:
    \n-
    34 GeneralBlock ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid );
    \n-
    35
    \n-
    36 int get ( std :: vector< std :: vector< unsigned int> > &simplex,
    \n-
    37 std :: vector< std :: vector< double > > &params,
    \n-
    38 int &nofp );
    \n-
    39
    \n-
    40 // some information
    \n-
    \n-
    41 bool ok ()
    \n-
    42 {
    \n-
    43 return goodline;
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-\n-
    47 {
    \n-
    48 return noflines();
    \n-
    49 }
    \n+
    20 template< class HostEntity >
    \n+
    \n+\n+
    22 {
    \n+
    23 typedef typename HostEntity::Geometry HostGeometry;
    \n+
    24
    \n+
    25 public:
    \n+
    26 typedef typename HostGeometry::GlobalCoordinate Coordinate;
    \n+
    27
    \n+
    \n+
    28 explicit HostCorners ( const HostEntity &hostEntity )
    \n+
    29 : hostGeometry_( hostEntity.geometry() )
    \n+
    30 {}
    \n+
    \n+
    31
    \n+
    \n+
    32 GeometryType type () const
    \n+
    33 {
    \n+
    34 return hostGeometry_.type();
    \n+
    35 }
    \n+
    \n+
    36
    \n+
    \n+
    37 Coordinate operator[] ( int i ) const
    \n+
    38 {
    \n+
    39 return hostGeometry_.corner( i );
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    \n+
    42 std::size_t size () const
    \n+
    43 {
    \n+
    44 return hostGeometry_.corners();
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    47 private:
    \n+
    48 HostGeometry hostGeometry_;
    \n+
    49 };
    \n
    \n
    50
    \n-
    51 private:
    \n-
    52 // get the dimension of the grid
    \n-
    53 int getDimGrid ();
    \n-
    54 // get next simplex
    \n-
    55 bool next ( std :: vector< unsigned int > &simplex,
    \n-
    56 std :: vector< double > &param );
    \n-
    57 };
    \n-
    \n-
    58
    \n-
    59 } // end namespace dgf
    \n-
    60
    \n-
    61} // end namespace Dune
    \n-
    62
    \n-
    63#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH
    \n-\n+
    51 } // namespace GeoGrid
    \n+
    52
    \n+
    53} // namespace Dune
    \n+
    54
    \n+
    55#endif // #ifndef DUNE_GEOGRID_HOSTCORNERS_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    int & noflines()
    Definition basic.hh:87
    \n-
    Definition general.hh:25
    \n-
    int nofsimplex()
    Definition general.hh:46
    \n-
    int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector< std ::vector< double > > &params, int &nofp)
    Definition general.cc:101
    \n-
    bool ok()
    Definition general.hh:41
    \n+
    Definition hostcorners.hh:22
    \n+
    GeometryType type() const
    Definition hostcorners.hh:32
    \n+
    Coordinate operator[](int i) const
    Definition hostcorners.hh:37
    \n+
    HostCorners(const HostEntity &hostEntity)
    Definition hostcorners.hh:28
    \n+
    HostGeometry::GlobalCoordinate Coordinate
    Definition hostcorners.hh:26
    \n+
    std::size_t size() const
    Definition hostcorners.hh:42
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,100 +1,88 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bi_\bo\n- * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-general.hh\n+ * _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bg_\br_\bi_\bd\n+hostcorners.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH\n-6#define DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH\n+5#ifndef DUNE_GEOGRID_HOSTCORNERS_HH\n+6#define DUNE_GEOGRID_HOSTCORNERS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-12\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14 namespace GeoGrid\n+15 {\n 16\n-17 namespace dgf\n-18 {\n+17 // HostCorners\n+18 // -----------\n 19\n-20 // GeneralBlock\n-21 // ---------\n-22\n-_\b2_\b3 class _\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n-24 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-25 {\n-26 unsigned int nofvtx;\n-27 int dimgrid;\n-28 bool goodline; // active line describes a vertex\n-29 std :: vector< unsigned int > map; // active vertex\n-30 int nofparams;\n-31 int vtxoffset;\n-32\n-33 public:\n-34 _\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx, int pvtxoffset, int\n-&pdimgrid );\n-35\n-36 int _\bg_\be_\bt ( std :: vector< std :: vector< unsigned int> > &simplex,\n-37 std :: vector< std :: vector< double > > ¶ms,\n-38 int &nofp );\n-39\n-40 // some information\n-_\b4_\b1 bool _\bo_\bk ()\n-42 {\n-43 return goodline;\n-44 }\n-45\n-_\b4_\b6 int _\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx ()\n-47 {\n-48 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n-49 }\n+20 template< class HostEntity >\n+_\b2_\b1 class _\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs\n+22 {\n+23 typedef typename HostEntity::Geometry HostGeometry;\n+24\n+25 public:\n+_\b2_\b6 typedef typename HostGeometry::GlobalCoordinate _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be;\n+27\n+_\b2_\b8 explicit _\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs ( const HostEntity &hostEntity )\n+29 : hostGeometry_( hostEntity.geometry() )\n+30 {}\n+31\n+_\b3_\b2 GeometryType _\bt_\by_\bp_\be () const\n+33 {\n+34 return hostGeometry_.type();\n+35 }\n+36\n+_\b3_\b7 _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const\n+38 {\n+39 return hostGeometry_.corner( i );\n+40 }\n+41\n+_\b4_\b2 std::size_t _\bs_\bi_\bz_\be () const\n+43 {\n+44 return hostGeometry_.corners();\n+45 }\n+46\n+47 private:\n+48 HostGeometry hostGeometry_;\n+49 };\n 50\n-51 private:\n-52 // get the dimension of the grid\n-53 int getDimGrid ();\n-54 // get next simplex\n-55 bool next ( std :: vector< unsigned int > &simplex,\n-56 std :: vector< double > ¶m );\n-57 };\n-58\n-59 } // end namespace dgf\n-60\n-61} // end namespace Dune\n-62\n-63#endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_BLOCKS_GENERAL_HH\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+51 } // namespace GeoGrid\n+52\n+53} // namespace Dune\n+54\n+55#endif // #ifndef DUNE_GEOGRID_HOSTCORNERS_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n-int & noflines()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-int nofsimplex()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n-int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector<\n-std ::vector< double > > ¶ms, int &nofp)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.cc:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bG_\be_\bn_\be_\br_\ba_\bl_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n-bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn general.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+Coordinate operator[](int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs\n+HostCorners(const HostEntity &hostEntity)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\bs_\b:_\b:_\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be\n+HostGeometry::GlobalCoordinate Coordinate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hostcorners.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bo_\bG_\br_\bi_\bd_\b:_\b:_\bH_\bo_\bs_\bt_\bC_\bo_\br_\bn_\be_\br_\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 hostcorners.hh:42\n+_\be_\bn_\bt_\bi_\bt_\by_\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-grid-doc/doxygen/a00863_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00878_source.html", "comments": ["Files 94% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: cube.hh Source File\n+dune-grid: simplex.hh Source File\n \n \n \n \n \n \n \n@@ -74,92 +74,98 @@\n \n \n
    \n
    \n-
    cube.hh
    \n+
    simplex.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_CUBEBLOCK_HH
    \n-
    6#define DUNE_DGF_CUBEBLOCK_HH
    \n+
    5#ifndef DUNE_DGF_SIMPLEXBLOCK_HH
    \n+
    6#define DUNE_DGF_SIMPLEXBLOCK_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <iostream>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n-
    13
    \n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    18 namespace dgf
    \n-
    19 {
    \n+
    8#include <iostream>
    \n+
    9#include <vector>
    \n+
    10
    \n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 namespace dgf
    \n+
    17 {
    \n+
    18 // SimplexBlock
    \n+
    19 // ------------
    \n
    20
    \n
    \n-\n+\n
    22 : public BasicBlock
    \n
    23 {
    \n
    24 unsigned int nofvtx;
    \n-
    25 int dimgrid;
    \n-
    26 bool goodline; // active line describes a vertex
    \n-
    27 std :: vector< unsigned int > map; // active vertex
    \n-
    28 int nofparams;
    \n-
    29 int vtxoffset;
    \n-
    30
    \n-
    31 public:
    \n-
    32 CubeBlock ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid );
    \n-
    33
    \n-
    34 int get ( std :: vector< std :: vector< unsigned int> > &simplex,
    \n-
    35 std :: vector< std :: vector< double > > &params,
    \n-
    36 int &nofp );
    \n-
    37
    \n-
    38 // some information
    \n-
    \n-
    39 bool ok ()
    \n-
    40 {
    \n-
    41 return goodline;
    \n-
    42 }
    \n-
    \n-
    43
    \n+
    25 int vtxoffset;
    \n+
    26 int dimgrid;
    \n+
    27 bool goodline; // active line describes a vertex
    \n+
    28 int nofparams; // nof parameters
    \n+
    29
    \n+
    30 public:
    \n+
    31 SimplexBlock ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid );
    \n+
    32
    \n+
    33 int get ( std :: vector< std :: vector< unsigned int > > &simplex,
    \n+
    34 std :: vector< std :: vector< double > > &params,
    \n+
    35 int &nofp );
    \n+
    36
    \n+
    37 // cubes -> simplex
    \n+
    38 static int
    \n+
    39 cube2simplex ( std :: vector< std :: vector< double > > &vtx,
    \n+
    40 std :: vector< std :: vector< unsigned int > > &elements,
    \n+
    41 std :: vector< std :: vector< double > > &params );
    \n+
    42
    \n+
    43 // some information
    \n
    \n-\n+
    44 bool ok ()
    \n
    45 {
    \n-
    46 return noflines();
    \n+
    46 return goodline;
    \n
    47 }
    \n
    \n
    48
    \n-
    49 private:
    \n-
    50 // get the dimension of the grid
    \n-
    51 int getDimGrid ();
    \n-
    52 // get next simplex
    \n-
    53 bool next ( std :: vector< unsigned int > &simplex,
    \n-
    54 std :: vector< double > &param );
    \n-
    55 };
    \n-
    \n-
    56
    \n-
    57 } // end namespace dgf
    \n-
    58
    \n-
    59} // end namespace Dune
    \n-
    60
    \n-
    61#endif
    \n-\n+
    \n+\n+
    50 {
    \n+
    51 return noflines();
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    54 private:
    \n+
    55 // get the dimension of the grid
    \n+
    56 int getDimGrid ();
    \n+
    57 // get next simplex
    \n+
    58 bool next ( std :: vector< unsigned int > &simplex,
    \n+
    59 std :: vector< double > &param );
    \n+
    60 };
    \n+
    \n+
    61
    \n+
    62 } // end namespace dgf
    \n+
    63
    \n+
    64} // end namespace Dune
    \n+
    65
    \n+
    66#endif
    \n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Definition basic.hh:31
    \n
    int & noflines()
    Definition basic.hh:87
    \n-
    Definition cube.hh:23
    \n-
    int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector< std ::vector< double > > &params, int &nofp)
    Definition cube.cc:103
    \n-
    int nofsimplex()
    Definition cube.hh:44
    \n-
    bool ok()
    Definition cube.hh:39
    \n+
    Definition simplex.hh:23
    \n+
    static int cube2simplex(std ::vector< std ::vector< double > > &vtx, std ::vector< std ::vector< unsigned int > > &elements, std ::vector< std ::vector< double > > &params)
    Definition simplex.cc:146
    \n+
    int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector< std ::vector< double > > &params, int &nofp)
    Definition simplex.cc:69
    \n+
    int nofsimplex()
    Definition simplex.hh:49
    \n+
    bool ok()
    Definition simplex.hh:44
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,95 +4,105 @@\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n * _\bb_\bl_\bo_\bc_\bk_\bs\n-cube.hh\n+simplex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_CUBEBLOCK_HH\n-6#define DUNE_DGF_CUBEBLOCK_HH\n+5#ifndef DUNE_DGF_SIMPLEXBLOCK_HH\n+6#define DUNE_DGF_SIMPLEXBLOCK_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-13\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-18 namespace dgf\n-19 {\n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 namespace dgf\n+17 {\n+18 // SimplexBlock\n+19 // ------------\n 20\n-_\b2_\b1 class _\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk\n+_\b2_\b1 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk\n 22 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n 23 {\n 24 unsigned int nofvtx;\n-25 int dimgrid;\n-26 bool goodline; // active line describes a vertex\n-27 std :: vector< unsigned int > map; // active vertex\n-28 int nofparams;\n-29 int vtxoffset;\n-30\n-31 public:\n-32 _\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx, int pvtxoffset, int &pdimgrid\n-);\n-33\n-34 int _\bg_\be_\bt ( std :: vector< std :: vector< unsigned int> > &simplex,\n-35 std :: vector< std :: vector< double > > ¶ms,\n-36 int &nofp );\n-37\n-38 // some information\n-_\b3_\b9 bool _\bo_\bk ()\n-40 {\n-41 return goodline;\n-42 }\n-43\n-_\b4_\b4 int _\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx ()\n+25 int vtxoffset;\n+26 int dimgrid;\n+27 bool goodline; // active line describes a vertex\n+28 int nofparams; // nof parameters\n+29\n+30 public:\n+31 _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk ( std :: istream &in, int pnofvtx, int pvtxoffset, int\n+&pdimgrid );\n+32\n+33 int _\bg_\be_\bt ( std :: vector< std :: vector< unsigned int > > &simplex,\n+34 std :: vector< std :: vector< double > > ¶ms,\n+35 int &nofp );\n+36\n+37 // cubes -> simplex\n+38 static int\n+39 _\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx ( std :: vector< std :: vector< double > > &vtx,\n+40 std :: vector< std :: vector< unsigned int > > &elements,\n+41 std :: vector< std :: vector< double > > ¶ms );\n+42\n+43 // some information\n+_\b4_\b4 bool _\bo_\bk ()\n 45 {\n-46 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n+46 return goodline;\n 47 }\n 48\n-49 private:\n-50 // get the dimension of the grid\n-51 int getDimGrid ();\n-52 // get next simplex\n-53 bool next ( std :: vector< unsigned int > &simplex,\n-54 std :: vector< double > ¶m );\n-55 };\n-56\n-57 } // end namespace dgf\n-58\n-59} // end namespace Dune\n-60\n-61#endif\n+_\b4_\b9 int _\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx ()\n+50 {\n+51 return _\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs();\n+52 }\n+53\n+54 private:\n+55 // get the dimension of the grid\n+56 int getDimGrid ();\n+57 // get next simplex\n+58 bool next ( std :: vector< unsigned int > &simplex,\n+59 std :: vector< double > ¶m );\n+60 };\n+61\n+62 } // end namespace dgf\n+63\n+64} // end namespace Dune\n+65\n+66#endif\n _\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n _\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n int & noflines()\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bc_\bu_\bb_\be_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+static int cube2simplex(std ::vector< std ::vector< double > > &vtx, std ::\n+vector< std ::vector< unsigned int > > &elements, std ::vector< std ::vector<\n+double > > ¶ms)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.cc:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt\n int get(std ::vector< std ::vector< unsigned int > > &simplex, std ::vector<\n std ::vector< double > > ¶ms, int &nofp)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.cc:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.cc:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bs_\bi_\bm_\bp_\bl_\be_\bx\n int nofsimplex()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bC_\bu_\bb_\be_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bk\n bool ok()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cube.hh:39\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplex.hh:44\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00866_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00644_source.html", "comments": ["Files 87% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: basic.hh Source File\n+dune-grid: algebra.hh Source File\n \n \n \n \n \n \n \n@@ -70,172 +70,201 @@\n
    \n \n \n \n \n \n \n
    \n-
    basic.hh
    \n+
    algebra.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_BASICBLOCK_HH
    \n-
    6#define DUNE_DGF_BASICBLOCK_HH
    \n+
    5#ifndef DUNE_ALBERTA_ALGEBRA_HH
    \n+
    6#define DUNE_ALBERTA_ALGEBRA_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <cctype>
    \n-
    10#include <iostream>
    \n-
    11#include <string>
    \n-
    12#include <sstream>
    \n+
    8#include <dune/common/fvector.hh>
    \n+
    9#include <dune/common/fmatrix.hh>
    \n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n
    13
    \n-
    14#include <dune/common/stdstreams.hh>
    \n-\n-\n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20
    \n-
    21 namespace dgf
    \n-
    22 {
    \n-
    23
    \n-
    \n-
    24 inline void makeupcase( std :: string &s )
    \n-
    25 {
    \n-
    26 for (size_t i=0; i<s.size(); i++)
    \n-
    27 s[i]=std::toupper(s[i]);
    \n-
    28 }
    \n-
    \n-
    29
    \n-
    \n-\n+
    14 namespace Alberta
    \n+
    15 {
    \n+
    16
    \n+
    17 template< class K >
    \n+
    18 inline static FieldVector< K, 3 >
    \n+
    \n+
    19 vectorProduct ( const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v )
    \n+
    20 {
    \n+
    21 FieldVector< K, 3 > w;
    \n+
    22 w[ 0 ] = u[ 1 ] * v[ 2 ] - u[ 2 ] * v[ 1 ];
    \n+
    23 w[ 1 ] = u[ 2 ] * v[ 0 ] - u[ 0 ] * v[ 2 ];
    \n+
    24 w[ 2 ] = u[ 0 ] * v[ 1 ] - u[ 1 ] * v[ 0 ];
    \n+
    25 return w;
    \n+
    26 }
    \n+
    \n+
    27
    \n+
    28
    \n+
    29 template< class K, int m >
    \n+
    \n+
    30 inline static K determinant ( [[maybe_unused]] const FieldMatrix< K, 0, m > &matrix )
    \n
    31 {
    \n-
    32 int pos; // line number
    \n-
    33 bool active; // block was found
    \n-
    34 bool empty; // block was found but was empty
    \n-
    35 std::string identifier; // identifier of this block
    \n-
    36 int linecount; // total number of lines in the block
    \n-
    37 std::stringstream block_; // the block itself
    \n-
    38 std::string oneline; // the active line in the block
    \n-
    39
    \n-
    40 // get the block (if it exists)
    \n-
    41 void getblock ( std::istream &in );
    \n-
    42
    \n-
    43 // count the number of lines in the block
    \n-
    44 // int countlines ();
    \n-
    45
    \n-
    46 protected:
    \n-
    47 std::stringstream line; // the active line as string buffer
    \n-
    48 // for use in the derived classes
    \n-
    49
    \n-
    50 // go back to beginning of block
    \n-
    \n-
    51 void reset ()
    \n-
    52 {
    \n-
    53 pos = -1;
    \n-
    54 block_.clear();
    \n-
    55 block_.seekg( 0 );
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    58 // get next line and store in string stream
    \n-
    59 bool getnextline ();
    \n-
    60
    \n-
    61 // get next entry in line
    \n-
    62 template< class ENTRY >
    \n-
    \n-
    63 bool getnextentry( ENTRY &entry )
    \n-
    64 {
    \n-
    65 line >> entry;
    \n-
    66 return static_cast< bool >( line );
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    69 bool gettokenparam ( std :: string token, std :: string &entry );
    \n-
    70 bool findtoken( std :: string token );
    \n-
    71
    \n-
    72 public:
    \n-
    73 // search for block in file and store in buffer
    \n-
    74 BasicBlock ( std::istream &in, const char* id );
    \n-
    75
    \n-
    76 // some information on this block
    \n-
    \n-
    77 bool isactive ()
    \n-
    78 {
    \n-
    79 return active;
    \n-
    80 }
    \n-
    \n-
    81
    \n-
    \n-
    82 bool isempty ()
    \n-
    83 {
    \n-
    84 return empty;
    \n-
    85 }
    \n+
    32 return K( 1 );
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    35 template< class K >
    \n+
    \n+
    36 inline static K determinant ( const FieldMatrix< K, 1, 1 > &matrix )
    \n+
    37 {
    \n+
    38 return matrix[ 0 ][ 0 ];
    \n+
    39 }
    \n+
    \n+
    40
    \n+
    41 template< class K, int m >
    \n+
    \n+
    42 inline static K determinant ( const FieldMatrix< K, 1, m > &matrix )
    \n+
    43 {
    \n+
    44 using std::sqrt;
    \n+
    45 K sum = matrix[ 0 ][ 0 ] * matrix[ 0 ][ 0 ];
    \n+
    46 for( int i = 1; i < m; ++i )
    \n+
    47 sum += matrix[ 0 ][ i ] * matrix[ 0 ][ i ];
    \n+
    48 return sqrt( sum );
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    51 template< class K >
    \n+
    \n+
    52 inline static K determinant ( const FieldMatrix< K, 2, 2 > &matrix )
    \n+
    53 {
    \n+
    54 return matrix[ 0 ][ 0 ] * matrix[ 1 ][ 1 ] - matrix[ 0 ][ 1 ] * matrix[ 1 ][ 0 ];
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    57 template< class K >
    \n+
    \n+
    58 inline static K determinant ( const FieldMatrix< K, 2, 3 > &matrix )
    \n+
    59 {
    \n+
    60 return vectorProduct( matrix[ 0 ], matrix[ 1 ] ).two_norm();
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    63 template< class K, int m >
    \n+
    \n+
    64 inline static K determinant ( const FieldMatrix< K, 2, m > &matrix )
    \n+
    65 {
    \n+
    66 using std::sqrt;
    \n+
    67 const K tmpA = matrix[ 0 ].two_norm2();
    \n+
    68 const K tmpB = matrix[ 1 ].two_norm2();
    \n+
    69 const K tmpC = matrix[ 0 ] * matrix[ 1 ];
    \n+
    70 return sqrt( tmpA * tmpB - tmpC * tmpC );
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73 template< class K >
    \n+
    \n+
    74 inline static K determinant ( const FieldMatrix< K, 3, 3 > &matrix )
    \n+
    75 {
    \n+
    76 return matrix[ 0 ] * vectorProduct( matrix[ 1 ], matrix[ 2 ] );
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79
    \n+
    80 template< class K, int m >
    \n+
    \n+
    81 inline static K invert ( [[maybe_unused]] const FieldMatrix< K, 0, m > &matrix,
    \n+
    82 [[maybe_unused]] FieldMatrix< K, m, 0 > &inverse )
    \n+
    83 {
    \n+
    84 return K( 1 );
    \n+
    85 }
    \n
    \n
    86
    \n-
    \n-
    87 int &noflines ()
    \n-
    88 {
    \n-
    89 return linecount;
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    \n-\n-
    93 {
    \n-
    94 return pos;
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    \n-
    97 const std::string & id () const
    \n-
    98 {
    \n-
    99 return identifier;
    \n-
    100 }
    \n-
    \n-
    101
    \n-
    102 // for error messages
    \n-
    \n-
    103 friend std :: ostream &operator<< ( std :: ostream &os, const BasicBlock &b )
    \n-
    104 {
    \n-
    105 return os << "block " << b.identifier << " (line " << b.pos << ")";
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    108 };
    \n-
    \n-
    109
    \n-
    110 } // end namespace dgf
    \n-
    111
    \n-
    112} // end namespace Dune
    \n-
    113
    \n-
    114#endif
    \n-\n-\n+
    87 template< class K >
    \n+
    \n+
    88 inline static K invert ( const FieldMatrix< K, 1, 1 > &matrix,
    \n+
    89 FieldMatrix< K, 1, 1 > &inverse )
    \n+
    90 {
    \n+
    91 inverse[ 0 ][ 0 ] = K( 1 ) / matrix[ 0 ][ 0 ];
    \n+
    92 return matrix[ 0 ][ 0 ];
    \n+
    93 }
    \n+
    \n+
    94
    \n+
    95 template< class K, int m >
    \n+
    \n+
    96 inline static K invert ( const FieldMatrix< K, 1, m > &matrix,
    \n+
    97 FieldMatrix< K, m, 1 > &inverse )
    \n+
    98 {
    \n+
    99 using std::sqrt;
    \n+
    100 K detSqr = matrix[ 0 ].two_norm2();
    \n+
    101 K invDetSqr = K( 1 ) / detSqr;
    \n+
    102 for( int i = 0; i < m; ++i )
    \n+
    103 inverse[ i ][ 0 ] = invDetSqr * matrix[ 0 ][ i ];
    \n+
    104 return sqrt( detSqr );
    \n+
    105 }
    \n+
    \n+
    106
    \n+
    107 template< class K >
    \n+
    \n+
    108 inline static K invert ( const FieldMatrix< K, 2, 2 > &matrix,
    \n+
    109 FieldMatrix< K, 2, 2 > &inverse )
    \n+
    110 {
    \n+
    111 K det = determinant( matrix );
    \n+
    112 K invDet = K( 1 ) / det;
    \n+
    113 inverse[ 0 ][ 0 ] = invDet * matrix[ 1 ][ 1 ];
    \n+
    114 inverse[ 0 ][ 1 ] = - invDet * matrix[ 0 ][ 1 ];
    \n+
    115 inverse[ 1 ][ 0 ] = - invDet * matrix[ 1 ][ 0 ];
    \n+
    116 inverse[ 1 ][ 1 ] = invDet * matrix[ 0 ][ 0 ];
    \n+
    117 return det;
    \n+
    118 }
    \n+
    \n+
    119
    \n+
    120 template< class K, int m >
    \n+
    \n+
    121 inline static K invert ( const FieldMatrix< K, 2, m > &matrix,
    \n+
    122 FieldMatrix< K, m, 2 > &inverse )
    \n+
    123 {
    \n+
    124 using std::sqrt;
    \n+
    125 const K tmpA = matrix[ 0 ].two_norm2();
    \n+
    126 const K tmpB = matrix[ 1 ].two_norm2();
    \n+
    127 const K tmpC = matrix[ 0 ] * matrix[ 1 ];
    \n+
    128 const K detSqr = tmpA * tmpB - tmpC * tmpC;
    \n+
    129 const K invDetSqr = K( 1 ) / detSqr;
    \n+
    130 for( int i = 0; i < m; ++i )
    \n+
    131 {
    \n+
    132 inverse[ i ][ 0 ] = invDetSqr * (tmpB * matrix[ 0 ][ i ] - tmpC * matrix[ 1 ][ i ]);
    \n+
    133 inverse[ i ][ 1 ] = invDetSqr * (tmpA * matrix[ 1 ][ i ] - tmpC * matrix[ 0 ][ i ]);
    \n+
    134 }
    \n+
    135 return sqrt( detSqr );
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    138 template< class K >
    \n+
    \n+
    139 inline static K invert ( const FieldMatrix< K, 3, 3 > &matrix,
    \n+
    140 FieldMatrix< K, 3, 3 > &inverse )
    \n+
    141 {
    \n+
    142 return FMatrixHelp::invertMatrix( matrix, inverse );
    \n+
    143 }
    \n+
    \n+
    144 }
    \n+
    145
    \n+
    146}
    \n+
    147
    \n+
    148#endif // #ifndef DUNE_ALBERTA_ALGEBRA_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    void makeupcase(std ::string &s)
    Definition basic.hh:24
    \n-
    Definition basic.hh:31
    \n-
    void reset()
    Definition basic.hh:51
    \n-
    bool getnextline()
    Definition basic.cc:94
    \n-
    bool findtoken(std ::string token)
    Definition basic.cc:123
    \n-
    bool getnextentry(ENTRY &entry)
    Definition basic.hh:63
    \n-
    const std::string & id() const
    Definition basic.hh:97
    \n-
    int & noflines()
    Definition basic.hh:87
    \n-
    friend std::ostream & operator<<(std ::ostream &os, const BasicBlock &b)
    Definition basic.hh:103
    \n-
    bool isempty()
    Definition basic.hh:82
    \n-
    bool isactive()
    Definition basic.hh:77
    \n-
    int linenumber()
    Definition basic.hh:92
    \n-
    std::stringstream line
    Definition basic.hh:47
    \n-
    bool gettokenparam(std ::string token, std ::string &entry)
    Definition basic.cc:104
    \n+
    static K determinant(const FieldMatrix< K, 0, m > &matrix)
    Definition algebra.hh:30
    \n+
    static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 > &inverse)
    Definition algebra.hh:81
    \n+
    static FieldVector< K, 3 > vectorProduct(const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v)
    Definition algebra.hh:19
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,176 +1,179 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bi_\bo\n- * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-basic.hh\n+ * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n+algebra.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_BASICBLOCK_HH\n-6#define DUNE_DGF_BASICBLOCK_HH\n+5#ifndef DUNE_ALBERTA_ALGEBRA_HH\n+6#define DUNE_ALBERTA_ALGEBRA_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12#include \n+8#include \n+9#include \n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n 13\n-14#include \n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-20\n-21 namespace dgf\n-22 {\n-23\n-_\b2_\b4 inline void _\bm_\ba_\bk_\be_\bu_\bp_\bc_\ba_\bs_\be( std :: string &s )\n-25 {\n-26 for (size_t i=0; i\n+18 inline static FieldVector< K, 3 >\n+_\b1_\b9 _\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt ( const FieldVector< K, 3 > &u, const FieldVector< K, 3 > &v )\n+20 {\n+21 FieldVector< K, 3 > w;\n+22 w[ 0 ] = u[ 1 ] * v[ 2 ] - u[ 2 ] * v[ 1 ];\n+23 w[ 1 ] = u[ 2 ] * v[ 0 ] - u[ 0 ] * v[ 2 ];\n+24 w[ 2 ] = u[ 0 ] * v[ 1 ] - u[ 1 ] * v[ 0 ];\n+25 return w;\n+26 }\n+27\n+28\n+29 template< class K, int m >\n+_\b3_\b0 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( [[maybe_unused]] const FieldMatrix< K, 0, m >\n+&matrix )\n 31 {\n-32 int pos; // line number\n-33 bool active; // block was found\n-34 bool empty; // block was found but was empty\n-35 std::string identifier; // identifier of this block\n-36 int linecount; // total number of lines in the block\n-37 std::stringstream block_; // the block itself\n-38 std::string oneline; // the active line in the block\n-39\n-40 // get the block (if it exists)\n-41 void getblock ( std::istream &in );\n-42\n-43 // count the number of lines in the block\n-44 // int countlines ();\n-45\n-46 protected:\n-_\b4_\b7 std::stringstream _\bl_\bi_\bn_\be; // the active line as string buffer\n-48 // for use in the derived classes\n-49\n-50 // go back to beginning of block\n-_\b5_\b1 void _\br_\be_\bs_\be_\bt ()\n-52 {\n-53 pos = -1;\n-54 block_.clear();\n-55 block_.seekg( 0 );\n-56 }\n-57\n-58 // get next line and store in string stream\n-59 bool _\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be ();\n-60\n-61 // get next entry in line\n-62 template< class ENTRY >\n-_\b6_\b3 bool _\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by( ENTRY &entry )\n-64 {\n-65 _\bl_\bi_\bn_\be >> entry;\n-66 return static_cast< bool >( _\bl_\bi_\bn_\be );\n-67 }\n-68\n-69 bool _\bg_\be_\bt_\bt_\bo_\bk_\be_\bn_\bp_\ba_\br_\ba_\bm ( std :: string token, std :: string &entry );\n-70 bool _\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn( std :: string token );\n-71\n-72 public:\n-73 // search for block in file and store in buffer\n-74 _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk ( std::istream &in, const char* id );\n-75\n-76 // some information on this block\n-_\b7_\b7 bool _\bi_\bs_\ba_\bc_\bt_\bi_\bv_\be ()\n-78 {\n-79 return active;\n-80 }\n-81\n-_\b8_\b2 bool _\bi_\bs_\be_\bm_\bp_\bt_\by ()\n+32 return K( 1 );\n+33 }\n+34\n+35 template< class K >\n+_\b3_\b6 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 1, 1 > &matrix )\n+37 {\n+38 return matrix[ 0 ][ 0 ];\n+39 }\n+40\n+41 template< class K, int m >\n+_\b4_\b2 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 1, m > &matrix )\n+43 {\n+44 using std::sqrt;\n+45 K sum = matrix[ 0 ][ 0 ] * matrix[ 0 ][ 0 ];\n+46 for( int i = 1; i < m; ++i )\n+47 sum += matrix[ 0 ][ i ] * matrix[ 0 ][ i ];\n+48 return sqrt( sum );\n+49 }\n+50\n+51 template< class K >\n+_\b5_\b2 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 2, 2 > &matrix )\n+53 {\n+54 return matrix[ 0 ][ 0 ] * matrix[ 1 ][ 1 ] - matrix[ 0 ][ 1 ] * matrix[ 1 ]\n+[ 0 ];\n+55 }\n+56\n+57 template< class K >\n+_\b5_\b8 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 2, 3 > &matrix )\n+59 {\n+60 return _\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt( matrix[ 0 ], matrix[ 1 ] ).two_norm();\n+61 }\n+62\n+63 template< class K, int m >\n+_\b6_\b4 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 2, m > &matrix )\n+65 {\n+66 using std::sqrt;\n+67 const K tmpA = matrix[ 0 ].two_norm2();\n+68 const K tmpB = matrix[ 1 ].two_norm2();\n+69 const K tmpC = matrix[ 0 ] * matrix[ 1 ];\n+70 return sqrt( tmpA * tmpB - tmpC * tmpC );\n+71 }\n+72\n+73 template< class K >\n+_\b7_\b4 inline static K _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt ( const FieldMatrix< K, 3, 3 > &matrix )\n+75 {\n+76 return matrix[ 0 ] * _\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt( matrix[ 1 ], matrix[ 2 ] );\n+77 }\n+78\n+79\n+80 template< class K, int m >\n+_\b8_\b1 inline static K _\bi_\bn_\bv_\be_\br_\bt ( [[maybe_unused]] const FieldMatrix< K, 0, m >\n+&matrix,\n+82 [[maybe_unused]] FieldMatrix< K, m, 0 > &inverse )\n 83 {\n-84 return empty;\n+84 return K( 1 );\n 85 }\n 86\n-_\b8_\b7 int &_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs ()\n-88 {\n-89 return linecount;\n-90 }\n-91\n-_\b9_\b2 int _\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br ()\n-93 {\n-94 return pos;\n-95 }\n-96\n-_\b9_\b7 const std::string & _\bi_\bd () const\n+87 template< class K >\n+_\b8_\b8 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 1, 1 > &matrix,\n+89 FieldMatrix< K, 1, 1 > &inverse )\n+90 {\n+91 inverse[ 0 ][ 0 ] = K( 1 ) / matrix[ 0 ][ 0 ];\n+92 return matrix[ 0 ][ 0 ];\n+93 }\n+94\n+95 template< class K, int m >\n+_\b9_\b6 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 1, m > &matrix,\n+97 FieldMatrix< K, m, 1 > &inverse )\n 98 {\n-99 return identifier;\n-100 }\n-101\n-102 // for error messages\n-_\b1_\b0_\b3 friend std :: ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std :: ostream &os, const _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk &b\n-)\n-104 {\n-105 return os << \"block \" << b.identifier << \" (line \" << b.pos << \")\";\n-106 }\n-107\n-108 };\n-109\n-110 } // end namespace dgf\n-111\n-112} // end namespace Dune\n-113\n-114#endif\n-_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b._\bh_\bh\n+99 using std::sqrt;\n+100 K detSqr = matrix[ 0 ].two_norm2();\n+101 K invDetSqr = K( 1 ) / detSqr;\n+102 for( int i = 0; i < m; ++i )\n+103 inverse[ i ][ 0 ] = invDetSqr * matrix[ 0 ][ i ];\n+104 return sqrt( detSqr );\n+105 }\n+106\n+107 template< class K >\n+_\b1_\b0_\b8 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 2, 2 > &matrix,\n+109 FieldMatrix< K, 2, 2 > &inverse )\n+110 {\n+111 K det = _\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt( matrix );\n+112 K invDet = K( 1 ) / det;\n+113 inverse[ 0 ][ 0 ] = invDet * matrix[ 1 ][ 1 ];\n+114 inverse[ 0 ][ 1 ] = - invDet * matrix[ 0 ][ 1 ];\n+115 inverse[ 1 ][ 0 ] = - invDet * matrix[ 1 ][ 0 ];\n+116 inverse[ 1 ][ 1 ] = invDet * matrix[ 0 ][ 0 ];\n+117 return det;\n+118 }\n+119\n+120 template< class K, int m >\n+_\b1_\b2_\b1 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 2, m > &matrix,\n+122 FieldMatrix< K, m, 2 > &inverse )\n+123 {\n+124 using std::sqrt;\n+125 const K tmpA = matrix[ 0 ].two_norm2();\n+126 const K tmpB = matrix[ 1 ].two_norm2();\n+127 const K tmpC = matrix[ 0 ] * matrix[ 1 ];\n+128 const K detSqr = tmpA * tmpB - tmpC * tmpC;\n+129 const K invDetSqr = K( 1 ) / detSqr;\n+130 for( int i = 0; i < m; ++i )\n+131 {\n+132 inverse[ i ][ 0 ] = invDetSqr * (tmpB * matrix[ 0 ][ i ] - tmpC * matrix[ 1\n+][ i ]);\n+133 inverse[ i ][ 1 ] = invDetSqr * (tmpA * matrix[ 1 ][ i ] - tmpC * matrix[ 0\n+][ i ]);\n+134 }\n+135 return sqrt( detSqr );\n+136 }\n+137\n+138 template< class K >\n+_\b1_\b3_\b9 inline static K _\bi_\bn_\bv_\be_\br_\bt ( const FieldMatrix< K, 3, 3 > &matrix,\n+140 FieldMatrix< K, 3, 3 > &inverse )\n+141 {\n+142 return FMatrixHelp::invertMatrix( matrix, inverse );\n+143 }\n+144 }\n+145\n+146}\n+147\n+148#endif // #ifndef DUNE_ALBERTA_ALGEBRA_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bm_\ba_\bk_\be_\bu_\bp_\bc_\ba_\bs_\be\n-void makeupcase(std ::string &s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n-void reset()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\bl_\bi_\bn_\be\n-bool getnextline()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bn_\bd_\bt_\bo_\bk_\be_\bn\n-bool findtoken(std ::string token)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bn_\be_\bx_\bt_\be_\bn_\bt_\br_\by\n-bool getnextentry(ENTRY &entry)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bi_\bd\n-const std::string & id() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bn_\bo_\bf_\bl_\bi_\bn_\be_\bs\n-int & noflines()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-friend std::ostream & operator<<(std ::ostream &os, const BasicBlock &b)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bi_\bs_\be_\bm_\bp_\bt_\by\n-bool isempty()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bi_\bs_\ba_\bc_\bt_\bi_\bv_\be\n-bool isactive()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bl_\bi_\bn_\be_\bn_\bu_\bm_\bb_\be_\br\n-int linenumber()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bl_\bi_\bn_\be\n-std::stringstream line\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bg_\be_\bt_\bt_\bo_\bk_\be_\bn_\bp_\ba_\br_\ba_\bm\n-bool gettokenparam(std ::string token, std ::string &entry)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.cc:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bd_\be_\bt_\be_\br_\bm_\bi_\bn_\ba_\bn_\bt\n+static K determinant(const FieldMatrix< K, 0, m > &matrix)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n+static K invert(const FieldMatrix< K, 0, m > &matrix, FieldMatrix< K, m, 0 >\n+&inverse)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bd_\bu_\bc_\bt\n+static FieldVector< K, 3 > vectorProduct(const FieldVector< K, 3 > &u, const\n+FieldVector< K, 3 > &v)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn algebra.hh:19\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00875_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00803_source.html", "comments": ["Files 90% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: simplexgeneration.hh Source File\n+dune-grid: streams.hh Source File\n \n \n \n \n \n \n \n@@ -70,156 +70,132 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    simplexgeneration.hh
    \n+
    streams.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH
    \n-
    6#define DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH
    \n-
    7
    \n-
    8#include <iostream>
    \n-
    9
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+
    5
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_STREAMS_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_STREAMS_HH
    \n+
    8
    \n+
    9#include <ostream>
    \n+
    10
    \n+\n+
    12
    \n+
    13namespace Dune {
    \n
    14
    \n-
    15 namespace dgf
    \n-
    16 {
    \n-
    17
    \n-
    \n-\n-
    19 : public BasicBlock
    \n-
    20 {
    \n-
    21 double area_;
    \n-
    22 double angle_;
    \n-
    23 bool display_;
    \n-
    24 std::string path_;
    \n-
    25 bool haspath_;
    \n-
    26 std::string filename_;
    \n-
    27 std::string filetype_;
    \n-
    28 std::string parameter_;
    \n-
    29 std::string dumpfilename_;
    \n-
    30 bool hasfile_;
    \n-
    31 int dimension_;
    \n-
    32
    \n-
    33 public:
    \n-
    34 SimplexGenerationBlock ( std :: istream &in );
    \n+
    \n+\n+
    17 std::ostream& s;
    \n+
    18 b64chunk chunk;
    \n+
    19 char obuf[4];
    \n+
    20
    \n+
    21 public:
    \n+
    23
    \n+
    \n+
    27 Base64Stream(std::ostream& s_)
    \n+
    28 : s(s_)
    \n+
    29 {
    \n+
    30 // reset chunk
    \n+
    31 chunk.reset();
    \n+
    32 }
    \n+
    \n+
    33
    \n
    35
    \n-
    \n-
    36 double maxArea ()
    \n-
    37 {
    \n-
    38 return area_;
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    \n-
    41 double minAngle ()
    \n-
    42 {
    \n-
    43 return angle_;
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-
    46 bool display ()
    \n-
    47 {
    \n-
    48 return display_;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    51 bool haspath ()
    \n-
    52 {
    \n-
    53 return haspath_;
    \n-
    54 }
    \n+
    41 template <class X>
    \n+
    \n+
    42 void write(X & data)
    \n+
    43 {
    \n+
    44 char* p = reinterpret_cast<char*>(&data);
    \n+
    45 for (size_t len = sizeof(X); len > 0; len--,p++)
    \n+
    46 {
    \n+
    47 chunk.put(*p);
    \n+
    48 if (chunk.size == 3)
    \n+
    49 {
    \n+
    50 chunk.write(obuf);
    \n+
    51 s.write(obuf,4);
    \n+
    52 }
    \n+
    53 }
    \n+
    54 }
    \n
    \n
    55
    \n-
    \n-
    56 std :: string path ()
    \n-
    57 {
    \n-
    58 return path_;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    61 bool hasfile ()
    \n-
    62 {
    \n-
    63 return hasfile_;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    66 std :: string filename ()
    \n+
    57
    \n+
    \n+
    64 void flush()
    \n+
    65 {
    \n+
    66 if (chunk.size > 0)
    \n
    67 {
    \n-
    68 return filename_;
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    71 std :: string filetype ()
    \n-
    72 {
    \n-
    73 return filetype_;
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    \n-
    76 int dimension ()
    \n-
    77 {
    \n-
    78 return dimension_;
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    \n-
    81 std :: string parameter ()
    \n-
    82 {
    \n-
    83 return parameter_;
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    \n-
    86 const std::string dumpFileName ( ) const
    \n-
    87 {
    \n-
    88 return dumpfilename_;
    \n-
    89 }
    \n-
    \n-
    90 };
    \n-
    \n-
    91
    \n-
    92 } // end namespace dgf
    \n-
    93
    \n-
    94} // end namespace Dune
    \n-
    95
    \n-
    96#endif
    \n-\n+
    68 chunk.write(obuf);
    \n+
    69 s.write(obuf,4);
    \n+
    70 }
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    74
    \n+
    \n+\n+
    78 flush();
    \n+
    79 }
    \n+
    \n+
    80 };
    \n+
    \n+
    81
    \n+
    \n+\n+
    84 {
    \n+
    85 public:
    \n+
    \n+
    87 inline RawStream (std::ostream& theStream)
    \n+
    88 : s(theStream)
    \n+
    89 {}
    \n+
    \n+
    90
    \n+
    92 template<class T>
    \n+
    \n+
    93 void write (T data)
    \n+
    94 {
    \n+
    95 char* p = reinterpret_cast<char*>(&data);
    \n+
    96 s.write(p,sizeof(T));
    \n+
    97 }
    \n+
    \n+
    98 private:
    \n+
    99 std::ostream& s;
    \n+
    100 };
    \n+
    \n+
    101
    \n+
    102} // namespace Dune
    \n+
    103
    \n+
    104#endif // DUNE_GRID_IO_FILE_VTK_STREAMS_HH
    \n+
    Simple base64 encode.
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition basic.hh:31
    \n-
    Definition simplexgeneration.hh:20
    \n-
    std::string filename()
    Definition simplexgeneration.hh:66
    \n-
    double maxArea()
    Definition simplexgeneration.hh:36
    \n-
    bool haspath()
    Definition simplexgeneration.hh:51
    \n-
    std::string parameter()
    Definition simplexgeneration.hh:81
    \n-
    int dimension()
    Definition simplexgeneration.hh:76
    \n-
    std::string path()
    Definition simplexgeneration.hh:56
    \n-
    const std::string dumpFileName() const
    Definition simplexgeneration.hh:86
    \n-
    bool display()
    Definition simplexgeneration.hh:46
    \n-
    double minAngle()
    Definition simplexgeneration.hh:41
    \n-
    bool hasfile()
    Definition simplexgeneration.hh:61
    \n-
    std::string filetype()
    Definition simplexgeneration.hh:71
    \n+
    struct representing the three byte text as well as the four 6 bit chunks
    Definition b64enc.hh:34
    \n+
    void write(char *t)
    Definition b64enc.hh:60
    \n+
    size_type size
    Definition b64enc.hh:36
    \n+
    void put(const char c)
    Definition b64enc.hh:54
    \n+
    void reset()
    Definition b64enc.hh:39
    \n+
    class to base64 encode a stream of data
    Definition streams.hh:16
    \n+
    void write(X &data)
    encode a data item
    Definition streams.hh:42
    \n+
    void flush()
    flush the current unwritten data to the stream.
    Definition streams.hh:64
    \n+
    Base64Stream(std::ostream &s_)
    Construct a Base64Stream.
    Definition streams.hh:27
    \n+
    ~Base64Stream()
    destroy the object
    Definition streams.hh:77
    \n+
    write out data in binary
    Definition streams.hh:84
    \n+
    void write(T data)
    write data to stream
    Definition streams.hh:93
    \n+
    RawStream(std::ostream &theStream)
    make a new stream
    Definition streams.hh:87
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,151 +2,143 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n- * _\bb_\bl_\bo_\bc_\bk_\bs\n-simplexgeneration.hh\n+ * _\bv_\bt_\bk\n+streams.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH\n-6#define DUNE_DGF_SIMPLEXGENERATIONBLOCK_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bb_\bl_\bo_\bc_\bk_\bs_\b/_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+5\n+6#ifndef DUNE_GRID_IO_FILE_VTK_STREAMS_HH\n+7#define DUNE_GRID_IO_FILE_VTK_STREAMS_HH\n+8\n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bb_\b6_\b4_\be_\bn_\bc_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be {\n 14\n-15 namespace dgf\n-16 {\n-17\n-_\b1_\b8 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-19 : public _\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-20 {\n-21 double area_;\n-22 double angle_;\n-23 bool display_;\n-24 std::string path_;\n-25 bool haspath_;\n-26 std::string filename_;\n-27 std::string filetype_;\n-28 std::string parameter_;\n-29 std::string dumpfilename_;\n-30 bool hasfile_;\n-31 int dimension_;\n-32\n-33 public:\n-34 _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk ( std :: istream &in );\n+_\b1_\b6 class _\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm {\n+17 std::ostream& s;\n+18 _\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk chunk;\n+19 char obuf[4];\n+20\n+21 public:\n+23\n+_\b2_\b7 _\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm(std::ostream& s_)\n+28 : s(s_)\n+29 {\n+30 // reset chunk\n+31 chunk._\br_\be_\bs_\be_\bt();\n+32 }\n+33\n 35\n-_\b3_\b6 double _\bm_\ba_\bx_\bA_\br_\be_\ba ()\n-37 {\n-38 return area_;\n-39 }\n-40\n-_\b4_\b1 double _\bm_\bi_\bn_\bA_\bn_\bg_\bl_\be ()\n-42 {\n-43 return angle_;\n-44 }\n-45\n-_\b4_\b6 bool _\bd_\bi_\bs_\bp_\bl_\ba_\by ()\n-47 {\n-48 return display_;\n-49 }\n-50\n-_\b5_\b1 bool _\bh_\ba_\bs_\bp_\ba_\bt_\bh ()\n-52 {\n-53 return haspath_;\n+41 template \n+_\b4_\b2 void _\bw_\br_\bi_\bt_\be(X & data)\n+43 {\n+44 char* p = reinterpret_cast(&data);\n+45 for (size_t len = sizeof(X); len > 0; len--,p++)\n+46 {\n+47 chunk._\bp_\bu_\bt(*p);\n+48 if (chunk._\bs_\bi_\bz_\be == 3)\n+49 {\n+50 chunk._\bw_\br_\bi_\bt_\be(obuf);\n+51 s.write(obuf,4);\n+52 }\n+53 }\n 54 }\n 55\n-_\b5_\b6 std :: string _\bp_\ba_\bt_\bh ()\n-57 {\n-58 return path_;\n-59 }\n-60\n-_\b6_\b1 bool _\bh_\ba_\bs_\bf_\bi_\bl_\be ()\n-62 {\n-63 return hasfile_;\n-64 }\n-65\n-_\b6_\b6 std :: string _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be ()\n+57\n+_\b6_\b4 void _\bf_\bl_\bu_\bs_\bh()\n+65 {\n+66 if (chunk._\bs_\bi_\bz_\be > 0)\n 67 {\n-68 return filename_;\n-69 }\n-70\n-_\b7_\b1 std :: string _\bf_\bi_\bl_\be_\bt_\by_\bp_\be ()\n-72 {\n-73 return filetype_;\n-74 }\n-75\n-_\b7_\b6 int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn ()\n-77 {\n-78 return dimension_;\n+68 chunk._\bw_\br_\bi_\bt_\be(obuf);\n+69 s.write(obuf,4);\n+70 }\n+71 }\n+72\n+74\n+_\b7_\b7 _\b~_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm() {\n+78 _\bf_\bl_\bu_\bs_\bh();\n 79 }\n-80\n-_\b8_\b1 std :: string _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br ()\n-82 {\n-83 return parameter_;\n-84 }\n-85\n-_\b8_\b6 const std::string _\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be ( ) const\n-87 {\n-88 return dumpfilename_;\n-89 }\n-90 };\n-91\n-92 } // end namespace dgf\n-93\n-94} // end namespace Dune\n-95\n-96#endif\n-_\bb_\ba_\bs_\bi_\bc_\b._\bh_\bh\n+80 };\n+81\n+_\b8_\b3 class _\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n+84 {\n+85 public:\n+_\b8_\b7 inline _\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm (std::ostream& theStream)\n+88 : s(theStream)\n+89 {}\n+90\n+92 template\n+_\b9_\b3 void _\bw_\br_\bi_\bt_\be (T data)\n+94 {\n+95 char* p = reinterpret_cast(&data);\n+96 s.write(p,sizeof(T));\n+97 }\n+98 private:\n+99 std::ostream& s;\n+100 };\n+101\n+102} // namespace Dune\n+103\n+104#endif // DUNE_GRID_IO_FILE_VTK_STREAMS_HH\n+_\bb_\b6_\b4_\be_\bn_\bc_\b._\bh_\bh\n+Simple base64 encode.\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bB_\ba_\bs_\bi_\bc_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basic.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be\n-std::string filename()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\ba_\bx_\bA_\br_\be_\ba\n-double maxArea()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bp_\ba_\bt_\bh\n-bool haspath()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br\n-std::string parameter()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-int dimension()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bp_\ba_\bt_\bh\n-std::string path()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bu_\bm_\bp_\bF_\bi_\bl_\be_\bN_\ba_\bm_\be\n-const std::string dumpFileName() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bd_\bi_\bs_\bp_\bl_\ba_\by\n-bool display()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bm_\bi_\bn_\bA_\bn_\bg_\bl_\be\n-double minAngle()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bh_\ba_\bs_\bf_\bi_\bl_\be\n-bool hasfile()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bd_\bg_\bf_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bn_\be_\br_\ba_\bt_\bi_\bo_\bn_\bB_\bl_\bo_\bc_\bk_\b:_\b:_\bf_\bi_\bl_\be_\bt_\by_\bp_\be\n-std::string filetype()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexgeneration.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk\n+struct representing the three byte text as well as the four 6 bit chunks\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(char *t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\bp_\bu_\bt\n+void put(const char c)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\b6_\b4_\bc_\bh_\bu_\bn_\bk_\b:_\b:_\br_\be_\bs_\be_\bt\n+void reset()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn b64enc.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n+class to base64 encode a stream of data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(X &data)\n+encode a data item\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bf_\bl_\bu_\bs_\bh\n+void flush()\n+flush the current unwritten data to the stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n+Base64Stream(std::ostream &s_)\n+Construct a Base64Stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\b~_\bB_\ba_\bs_\be_\b6_\b4_\bS_\bt_\br_\be_\ba_\bm\n+~Base64Stream()\n+destroy the object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n+write out data in binary\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bw_\br_\bi_\bt_\be\n+void write(T data)\n+write data to stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm_\b:_\b:_\bR_\ba_\bw_\bS_\bt_\br_\be_\ba_\bm\n+RawStream(std::ostream &theStream)\n+make a new stream\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn streams.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-grid-doc/doxygen/a00887_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00212_source.html", "comments": ["Files 82% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: entitykey.hh Source File\n+dune-grid: yaspgridhierarchiciterator.hh Source File\n \n \n \n \n \n \n \n@@ -70,221 +70,185 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    entitykey.hh
    \n+
    yaspgridhierarchiciterator.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5#ifndef DUNE_DGFEnTITYKEY_HH
    \n-
    6#define DUNE_DGFEnTITYKEY_HH
    \n+
    5#ifndef DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH
    \n+
    6#define DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH
    \n
    7
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n+
    14namespace Dune {
    \n
    15
    \n-
    16 // DGFEntityKey
    \n-
    17 // ------------
    \n-
    18
    \n-
    19 template< class A >
    \n-
    \n-\n-
    21 {
    \n-
    22 DGFEntityKey ( const std :: vector< A > &key, bool setOrigKey = true );
    \n-
    23 DGFEntityKey ( const std::vector< A > &key,
    \n-
    24 int N, int offset, bool setOrigKey = true );
    \n-\n-
    26
    \n-\n-
    28
    \n-
    \n-
    29 inline const A &operator[] ( int i ) const;
    \n-
    \n-
    30 inline bool operator < ( const DGFEntityKey< A > &k ) const;
    \n-
    31
    \n-
    32 void orientation ( int base, std :: vector< std :: vector< double > > &vtx );
    \n-
    33 void print( std :: ostream &out = std :: cerr ) const;
    \n-
    34
    \n+
    18 template<class GridImp>
    \n+
    \n+\n+
    20 {
    \n+
    21 constexpr static int dim = GridImp::dimension;
    \n+
    22
    \n+\n+
    24
    \n+
    25 public:
    \n+
    26 // types used from grids
    \n+
    27 typedef typename GridImp::YGridLevelIterator YGLI;
    \n+
    28 typedef typename GridImp::YGrid::Iterator I;
    \n+
    29 typedef typename GridImp::template Codim<0>::Entity Entity;
    \n+
    30
    \n+
    32 YaspHierarchicIterator () : _entity(), _maxlevel(-1), stack() {}
    \n+
    33
    \n
    \n-
    35 inline bool origKeySet () const;
    \n-
    \n-
    36 inline const A &origKey ( int i ) const;
    \n-
    \n-
    37 inline int size () const;
    \n-
    38
    \n-
    39 private:
    \n-
    40 std :: vector< A > key_, origKey_;
    \n-
    41 bool origKeySet_;
    \n-
    42 };
    \n-
    43
    \n+
    35 YaspHierarchicIterator (const YGLI& g, const I& it, int maxlevel) :
    \n+
    36 _entity(YaspEntity<0, dim, GridImp>(g,it))
    \n+
    37 {
    \n+
    38 // store reference to entity implementation for better readability
    \n+
    39 YaspEntityImp& entity = _entity.impl();
    \n+
    40 // now iterator points to current cell
    \n+
    41 StackElem se(entity._g);
    \n+
    42 std::copy(entity._it.coord().begin(), entity._it.coord().end(), se.coord.begin());
    \n+
    43 stack.push(se);
    \n
    44
    \n-
    45 template< class A >
    \n-
    \n-
    46 inline const A &DGFEntityKey< A > :: operator[] ( int i ) const
    \n-
    47 {
    \n-
    48 return key_[ i ];
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    51
    \n-
    52 template< class A >
    \n-
    \n-\n-
    54 {
    \n-
    55 // assert(k.key_.size()==key_.size());
    \n-
    56 return key_ < k.key_;
    \n-
    57 }
    \n+
    45 // determine maximum level
    \n+
    46 _maxlevel = std::min(maxlevel,entity._g->mg->maxLevel());
    \n+
    47
    \n+
    48 // if maxlevel not reached then push yourself and sons
    \n+
    49 if (entity._g->level()<_maxlevel)
    \n+
    50 {
    \n+
    51 push_sons();
    \n+
    52 }
    \n+
    53
    \n+
    54 // and make iterator point to first son if stack is not empty
    \n+
    55 if (!stack.empty())
    \n+
    56 pop_tos();
    \n+
    57 }
    \n
    \n
    58
    \n-
    59
    \n-
    60 template< class A >
    \n-
    \n-\n-
    62 {
    \n-
    63 return origKeySet_;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    66
    \n-
    67 template< class A >
    \n-
    \n-
    68 inline const A &DGFEntityKey< A > :: origKey ( int i ) const
    \n-
    69 {
    \n-
    70 return origKey_[ i ];
    \n-
    71 }
    \n+
    \n+
    60 void increment ()
    \n+
    61 {
    \n+
    62 // sanity check: do nothing when stack is empty
    \n+
    63 if (stack.empty()) return;
    \n+
    64
    \n+
    65 // if maxlevel not reached then push sons
    \n+
    66 if (_entity.impl()._g->level()<_maxlevel)
    \n+
    67 push_sons();
    \n+
    68
    \n+
    69 // in any case pop one element
    \n+
    70 pop_tos();
    \n+
    71 }
    \n
    \n
    72
    \n-
    73
    \n-
    74 template< class A >
    \n-
    \n-
    75 inline int DGFEntityKey< A > :: size () const
    \n-
    76 {
    \n-
    77 return key_.size();
    \n-
    78 }
    \n+
    \n+
    74 bool equals (const YaspHierarchicIterator& rhs) const
    \n+
    75 {
    \n+
    76 return (_entity == rhs._entity);
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    80 const Entity& dereference() const
    \n+
    81 {
    \n+
    82 return _entity;
    \n+
    83 }
    \n
    \n-
    \n-
    79
    \n-
    80
    \n-
    81
    \n-
    82 // ElementFaceUtil
    \n-
    83 // ---------------
    \n
    84
    \n-
    \n-\n-
    86 {
    \n-
    87 inline static int nofFaces ( int dim, const std::vector< unsigned int > &element );
    \n-
    88 inline static int faceSize ( int dim, bool simpl );
    \n-
    89
    \n-\n-
    91 generateFace ( int dim, const std::vector< unsigned int > &element, int f );
    \n-
    92
    \n-
    93 private:
    \n-
    94 template< int dim >
    \n-\n-
    96 generateCubeFace( const std::vector< unsigned int > &element, int f );
    \n-
    97
    \n-
    98 template< int dim >
    \n-\n-
    100 generateSimplexFace ( const std::vector< unsigned int > &element, int f );
    \n-
    101 };
    \n-
    \n-
    102
    \n-
    103
    \n-
    \n-
    104 inline int ElementFaceUtil::nofFaces ( int dim, const std::vector< unsigned int > &element )
    \n-
    105 {
    \n-
    106 switch( dim )
    \n-
    107 {
    \n-
    108 case 1 :
    \n-
    109 return 2;
    \n-
    110 case 2 :
    \n-
    111 switch( element.size() )
    \n-
    112 {
    \n-
    113 case 3 :
    \n-
    114 return 3;
    \n-
    115 case 4 :
    \n-
    116 return 4;
    \n-
    117 default :
    \n-
    118 return -1;
    \n-
    119 }
    \n-
    120 case 3 :
    \n-
    121 switch( element.size() )
    \n-
    122 {
    \n-
    123 case 4 :
    \n-
    124 return 4;
    \n-
    125 case 8 :
    \n-
    126 return 6;
    \n-
    127 default :
    \n-
    128 return -1;
    \n-
    129 }
    \n-
    130 default :
    \n-
    131 return -1;
    \n-
    132 }
    \n-
    133 }
    \n-
    \n-
    134
    \n+
    \n+
    85 void print (std::ostream& s) const
    \n+
    86 {
    \n+
    87 // store reference to entity implementation for better readability
    \n+
    88 YaspEntityImp& entity = _entity.impl();
    \n+
    89 s << "HIER: " << "level=" << entity._g.level()
    \n+
    90 << " position=" << entity._it.coord()
    \n+
    91 << " superindex=" << entity._it.superindex()
    \n+
    92 << " maxlevel=" << entity._maxlevel
    \n+
    93 << " stacksize=" << stack.size()
    \n+
    94 << std::endl;
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    97 private:
    \n+
    98 Entity _entity;
    \n+
    99
    \n+
    100 int _maxlevel;
    \n+
    101
    \n+
    102 struct StackElem {
    \n+
    103 YGLI g; // grid level of the element
    \n+
    104 std::array<int,dim> coord; // and the coordinates
    \n+
    105 StackElem(YGLI gg) : g(gg) {}
    \n+
    106 };
    \n+
    107 std::stack<StackElem> stack;
    \n+
    108
    \n+
    109 // push sons of current element on the stack
    \n+
    110 void push_sons ()
    \n+
    111 {
    \n+
    112 // store reference to entity implementation for better readability
    \n+
    113 YaspEntityImp& entity = _entity.impl();
    \n+
    114
    \n+
    115 // yes, process all 1<<dim sons
    \n+
    116 YGLI finer = entity._g;
    \n+
    117 ++finer;
    \n+
    118 StackElem se(finer);
    \n+
    119 for (int i=0; i<(1<<dim); i++)
    \n+
    120 {
    \n+
    121 for (int k=0; k<dim; k++)
    \n+
    122 if (i&(1<<k))
    \n+
    123 se.coord[k] = entity._it.coord(k)*2+1;
    \n+
    124 else
    \n+
    125 se.coord[k] = entity._it.coord(k)*2;
    \n+
    126 // not all entities have 2^d subentities due to refineOptions with keep_ovlp==false
    \n+
    127 bool exists = true;
    \n+
    128 for (int k=0; k<dim; k++)
    \n+
    129 if ((se.coord[k] < finer->overlap[0].dataBegin()->origin(k)) || (se.coord[k] >= finer->overlap[0].dataBegin()->origin(k)+finer->overlap[0].dataBegin()->size(k)))
    \n+
    130 exists = false;
    \n+
    131 if (exists)
    \n+
    132 stack.push(se);
    \n+
    133 }
    \n+
    134 }
    \n
    135
    \n-
    \n-
    136 inline int ElementFaceUtil::faceSize( int dim, bool simpl )
    \n-
    137 {
    \n-
    138 switch( dim )
    \n-
    139 {
    \n-
    140 case 1 :
    \n-
    141 return 1;
    \n-
    142 case 2 :
    \n-
    143 return 2;
    \n-
    144 case 3 :
    \n-
    145 return (simpl ? 3 : 4);
    \n-
    146 default :
    \n-
    147 return -1;
    \n-
    148 }
    \n-
    149 }
    \n-
    \n-
    150
    \n-
    151} //end namespace Dune
    \n-
    152
    \n-
    153// inlcude inline implementation
    \n-
    154#include "entitykey_inline.hh"
    \n-
    155#endif
    \n-
    \n-
    \n-
    \n-
    \n-
    \n-\n-\n+
    136 // make TOS the current element
    \n+
    137 void pop_tos ()
    \n+
    138 {
    \n+
    139 StackElem se = stack.top();
    \n+
    140 stack.pop();
    \n+
    141 YaspEntityImp& entity = _entity.impl();
    \n+
    142 entity._g = se.g;
    \n+
    143 entity._it.reinit(entity._g->overlap[0],se.coord);
    \n+
    144 }
    \n+
    145 };
    \n+
    \n+
    146
    \n+
    147} // namespace Dune
    \n+
    148
    \n+
    149#endif // DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Definition entitykey.hh:21
    \n-
    bool operator<(const DGFEntityKey< A > &k) const
    Definition entitykey.hh:53
    \n-
    DGFEntityKey< A > & operator=(const DGFEntityKey< A > &k)
    Definition entitykey_inline.hh:64
    \n-
    bool origKeySet() const
    Definition entitykey.hh:61
    \n-
    int size() const
    Definition entitykey.hh:75
    \n-
    void orientation(int base, std ::vector< std ::vector< double > > &vtx)
    Definition entitykey_inline.hh:78
    \n-
    const A & origKey(int i) const
    Definition entitykey.hh:68
    \n-
    DGFEntityKey(const std::vector< A > &key, int N, int offset, bool setOrigKey=true)
    \n-
    void print(std ::ostream &out=std ::cerr) const
    Definition entitykey_inline.hh:105
    \n-
    const A & operator[](int i) const
    Definition entitykey.hh:46
    \n-
    Definition entitykey.hh:86
    \n-
    static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector< unsigned int > &element, int f)
    Definition entitykey_inline.hh:145
    \n-
    static int faceSize(int dim, bool simpl)
    Definition entitykey.hh:136
    \n-
    static int nofFaces(int dim, const std::vector< unsigned int > &element)
    Definition entitykey.hh:104
    \n+
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n+
    Implementation & impl()
    access to the underlying implementation
    Definition common/entity.hh:80
    \n+
    Definition yaspgridentity.hh:268
    \n+
    YGLI _g
    Definition yaspgridentity.hh:426
    \n+
    I _it
    Definition yaspgridentity.hh:425
    \n+
    YaspHierarchicIterator enables iteration over son entities of codim 0.
    Definition yaspgridhierarchiciterator.hh:20
    \n+
    YaspHierarchicIterator()
    default constructor creating empty iterator
    Definition yaspgridhierarchiciterator.hh:32
    \n+
    GridImp::template Codim< 0 >::Entity Entity
    Definition yaspgridhierarchiciterator.hh:29
    \n+
    void print(std::ostream &s) const
    Definition yaspgridhierarchiciterator.hh:85
    \n+
    GridImp::YGrid::Iterator I
    Definition yaspgridhierarchiciterator.hh:28
    \n+
    const Entity & dereference() const
    dereferencing
    Definition yaspgridhierarchiciterator.hh:80
    \n+
    GridImp::YGridLevelIterator YGLI
    Definition yaspgridhierarchiciterator.hh:27
    \n+
    void increment()
    increment
    Definition yaspgridhierarchiciterator.hh:60
    \n+
    bool equals(const YaspHierarchicIterator &rhs) const
    equality
    Definition yaspgridhierarchiciterator.hh:74
    \n+
    YaspHierarchicIterator(const YGLI &g, const I &it, int maxlevel)
    constructor
    Definition yaspgridhierarchiciterator.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,219 +1,205 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bi_\bo\n- * _\bf_\bi_\bl_\be\n- * _\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br\n-entitykey.hh\n+ * _\by_\ba_\bs_\bp_\bg_\br_\bi_\bd\n+yaspgridhierarchiciterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5#ifndef DUNE_DGFEnTITYKEY_HH\n-6#define DUNE_DGFEnTITYKEY_HH\n+5#ifndef DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH\n+6#define DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bd_\bg_\bf_\bp_\ba_\br_\bs_\be_\br_\b/_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n+14namespace _\bD_\bu_\bn_\be {\n 15\n-16 // DGFEntityKey\n-17 // ------------\n-18\n-19 template< class A >\n-_\b2_\b0 struct _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n-21 {\n-22 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std :: vector< A > &key, bool setOrigKey = true );\n-_\b2_\b3 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const std::vector< A > &key,\n-24 int N, int offset, bool setOrigKey = true );\n-25 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k );\n-26\n-27 _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k );\n-28\n-_\b2_\b9 inline const A &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const;\n-_\b3_\b0 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b<_\b ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k ) const;\n-31\n-32 void _\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn ( int base, std :: vector< std :: vector< double > > &vtx\n-);\n-33 void _\bp_\br_\bi_\bn_\bt( std :: ostream &out = std :: cerr ) const;\n-34\n-_\b3_\b5 inline bool _\bo_\br_\bi_\bg_\bK_\be_\by_\bS_\be_\bt () const;\n-_\b3_\b6 inline const A &_\bo_\br_\bi_\bg_\bK_\be_\by ( int i ) const;\n-_\b3_\b7 inline int _\bs_\bi_\bz_\be () const;\n-38\n-39 private:\n-40 std :: vector< A > key_, origKey_;\n-41 bool origKeySet_;\n-42 };\n-43\n+18 template\n+_\b1_\b9 class _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+20 {\n+21 constexpr static int dim = GridImp::dimension;\n+22\n+23 typedef _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b<_\b0_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bG_\br_\bi_\bd_\bI_\bm_\bp_\b> _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp;\n+24\n+25 public:\n+26 // types used from grids\n+_\b2_\b7 typedef typename GridImp::YGridLevelIterator _\bY_\bG_\bL_\bI;\n+_\b2_\b8 typedef typename GridImp::YGrid::Iterator _\bI;\n+_\b2_\b9 typedef typename GridImp::template Codim<0>::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n+30\n+_\b3_\b2 _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br () : _entity(), _maxlevel(-1), stack() {}\n+33\n+_\b3_\b5 _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br (const _\bY_\bG_\bL_\bI& g, const _\bI& it, int maxlevel) :\n+36 _entity(_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by<0, dim, GridImp>(g,it))\n+37 {\n+38 // store reference to entity implementation for better readability\n+39 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp& entity = _entity.impl();\n+40 // now iterator points to current cell\n+41 StackElem se(entity._\b__\bg);\n+42 std::copy(entity._\b__\bi_\bt.coord().begin(), entity._\b__\bi_\bt.coord().end(),\n+se.coord.begin());\n+43 stack.push(se);\n 44\n-45 template< class A >\n-_\b4_\b6 inline const A &_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( int i ) const\n-47 {\n-48 return key_[ i ];\n-49 }\n-50\n-51\n-52 template< class A >\n-_\b5_\b3 inline bool _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b> &k )\n-const\n-54 {\n-55 // assert(k.key_.size()==key_.size());\n-56 return key_ < k.key_;\n+45 // determine maximum level\n+46 _maxlevel = std::min(maxlevel,entity._\b__\bg->mg->maxLevel());\n+47\n+48 // if maxlevel not reached then push yourself and sons\n+49 if (entity._\b__\bg->level()<_maxlevel)\n+50 {\n+51 push_sons();\n+52 }\n+53\n+54 // and make iterator point to first son if stack is not empty\n+55 if (!stack.empty())\n+56 pop_tos();\n 57 }\n 58\n-59\n-60 template< class A >\n-_\b6_\b1 inline bool _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\br_\bi_\bg_\bK_\be_\by_\bS_\be_\bt () const\n-62 {\n-63 return origKeySet_;\n-64 }\n-65\n-66\n-67 template< class A >\n-_\b6_\b8 inline const A &_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bo_\br_\bi_\bg_\bK_\be_\by ( int i ) const\n-69 {\n-70 return origKey_[ i ];\n+_\b6_\b0 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+61 {\n+62 // sanity check: do nothing when stack is empty\n+63 if (stack.empty()) return;\n+64\n+65 // if maxlevel not reached then push sons\n+66 if (_entity.impl()._g->level()<_maxlevel)\n+67 push_sons();\n+68\n+69 // in any case pop one element\n+70 pop_tos();\n 71 }\n 72\n-73\n-74 template< class A >\n-_\b7_\b5 inline int _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bA_\b _\b>_\b _\b:_\b:_\b _\bs_\bi_\bz_\be () const\n-76 {\n-77 return key_._\bs_\bi_\bz_\be();\n-78 }\n-79\n-80\n-81\n-82 // ElementFaceUtil\n-83 // ---------------\n+_\b7_\b4 bool _\be_\bq_\bu_\ba_\bl_\bs (const _\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br& rhs) const\n+75 {\n+76 return (_entity == rhs._entity);\n+77 }\n+78\n+_\b8_\b0 const _\bE_\bn_\bt_\bi_\bt_\by& _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const\n+81 {\n+82 return _entity;\n+83 }\n 84\n-_\b8_\b5 struct _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl\n+_\b8_\b5 void _\bp_\br_\bi_\bn_\bt (std::ostream& s) const\n 86 {\n-87 inline static int _\bn_\bo_\bf_\bF_\ba_\bc_\be_\bs ( int dim, const std::vector< unsigned int >\n-&element );\n-88 inline static int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be ( int dim, bool simpl );\n-89\n-90 static _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n-91 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be ( int dim, const std::vector< unsigned int > &element, int f );\n-92\n-93 private:\n-94 template< int dim >\n-95 static _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n-96 generateCubeFace( const std::vector< unsigned int > &element, int f );\n-97\n-98 template< int dim >\n-99 static _\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b _\b>\n-100 generateSimplexFace ( const std::vector< unsigned int > &element, int f );\n-101 };\n-102\n-103\n-_\b1_\b0_\b4 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bn_\bo_\bf_\bF_\ba_\bc_\be_\bs ( int dim, const std::vector< unsigned\n-int > &element )\n-105 {\n-106 switch( dim )\n-107 {\n-108 case 1 :\n-109 return 2;\n-110 case 2 :\n-111 switch( element.size() )\n-112 {\n-113 case 3 :\n-114 return 3;\n-115 case 4 :\n-116 return 4;\n-117 default :\n-118 return -1;\n-119 }\n-120 case 3 :\n-121 switch( element.size() )\n-122 {\n-123 case 4 :\n-124 return 4;\n-125 case 8 :\n-126 return 6;\n-127 default :\n-128 return -1;\n-129 }\n-130 default :\n-131 return -1;\n-132 }\n+87 // store reference to entity implementation for better readability\n+88 _\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\bI_\bm_\bp& entity = _entity.impl();\n+89 s << \"HIER: \" << \"level=\" << entity._\b__\bg.level()\n+90 << \" position=\" << entity._\b__\bi_\bt.coord()\n+91 << \" superindex=\" << entity._\b__\bi_\bt.superindex()\n+92 << \" maxlevel=\" << entity._maxlevel\n+93 << \" stacksize=\" << stack.size()\n+94 << std::endl;\n+95 }\n+96\n+97 private:\n+98 _\bE_\bn_\bt_\bi_\bt_\by _entity;\n+99\n+100 int _maxlevel;\n+101\n+102 struct StackElem {\n+103 _\bY_\bG_\bL_\bI g; // grid level of the element\n+104 std::array coord; // and the coordinates\n+105 StackElem(_\bY_\bG_\bL_\bI gg) : g(gg) {}\n+106 };\n+107 std::stack stack;\n+108\n+109 // push sons of current element on the stack\n+110 void push_sons ()\n+111 {\n+112 // store reference to entity implementation for better readability\n+113 YaspEntityImp& entity = _entity._\bi_\bm_\bp_\bl();\n+114\n+115 // yes, process all 1<overlap[0].dataBegin()->origin(k)) || (se.coord\n+[k] >= finer->overlap[0].dataBegin()->origin(k)+finer->overlap[0].dataBegin()-\n+>size(k)))\n+130 exists = false;\n+131 if (exists)\n+132 stack.push(se);\n 133 }\n-134\n+134 }\n 135\n-_\b1_\b3_\b6 inline int _\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be( int dim, bool simpl )\n-137 {\n-138 switch( dim )\n-139 {\n-140 case 1 :\n-141 return 1;\n-142 case 2 :\n-143 return 2;\n-144 case 3 :\n-145 return (simpl ? 3 : 4);\n-146 default :\n-147 return -1;\n-148 }\n-149 }\n-150\n-151} //end namespace Dune\n-152\n-153// inlcude inline implementation\n-154#include \"_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b__\bi_\bn_\bl_\bi_\bn_\be_\b._\bh_\bh\"\n-155#endif\n-_\bd_\bg_\bf_\be_\bx_\bc_\be_\bp_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\be_\bn_\bt_\bi_\bt_\by_\bk_\be_\by_\b__\bi_\bn_\bl_\bi_\bn_\be_\b._\bh_\bh\n+136 // make TOS the current element\n+137 void pop_tos ()\n+138 {\n+139 StackElem se = stack.top();\n+140 stack.pop();\n+141 YaspEntityImp& entity = _entity._\bi_\bm_\bp_\bl();\n+142 entity._g = se.g;\n+143 entity._it.reinit(entity._g->overlap[0],se.coord);\n+144 }\n+145 };\n+146\n+147} // namespace Dune\n+148\n+149#endif // DUNE_GRID_YASPGRIDHIERARCHICITERATOR_HH\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n-bool operator<(const DGFEntityKey< A > &k) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-DGFEntityKey< A > & operator=(const DGFEntityKey< A > &k)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\br_\bi_\bg_\bK_\be_\by_\bS_\be_\bt\n-bool origKeySet() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bs_\bi_\bz_\be\n-int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\br_\bi_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn\n-void orientation(int base, std ::vector< std ::vector< double > > &vtx)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\br_\bi_\bg_\bK_\be_\by\n-const A & origKey(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by\n-DGFEntityKey(const std::vector< A > &key, int N, int offset, bool\n-setOrigKey=true)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print(std ::ostream &out=std ::cerr) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bF_\bE_\bn_\bt_\bi_\bt_\by_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const A & operator[](int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\ba_\bc_\be\n-static DGFEntityKey< unsigned int > generateFace(int dim, const std::vector<\n-unsigned int > &element, int f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey_inline.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be\n-static int faceSize(int dim, bool simpl)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\be_\bU_\bt_\bi_\bl_\b:_\b:_\bn_\bo_\bf_\bF_\ba_\bc_\be_\bs\n-static int nofFaces(int dim, const std::vector< unsigned int > &element)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn entitykey.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Wrapper class for entities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bi_\bm_\bp_\bl\n+Implementation & impl()\n+access to the underlying implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bg\n+YGLI _g\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\b__\bi_\bt\n+I _it\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridentity.hh:425\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspHierarchicIterator enables iteration over son entities of codim 0.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspHierarchicIterator()\n+default constructor creating empty iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< 0 >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print(std::ostream &s) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI\n+GridImp::YGrid::Iterator I\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+const Entity & dereference() const\n+dereferencing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\bG_\bL_\bI\n+GridImp::YGridLevelIterator YGLI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const YaspHierarchicIterator &rhs) const\n+equality\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bY_\ba_\bs_\bp_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+YaspHierarchicIterator(const YGLI &g, const I &it, int maxlevel)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn yaspgridhierarchiciterator.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-grid-doc/doxygen/a00890_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00830_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,26 +77,26 @@\n
  • dune
  • grid
  • io
  • file
  • dgfparser
  • \n
    \n
    \n
    \n
    dgfidentitygrid.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5#ifndef DUNE_DGFPARSER_DGFIDENTITYGRID_HH
    \n
    6#define DUNE_DGFPARSER_DGFIDENTITYGRID_HH
    \n
    7
    \n
    8#include <dune/common/typetraits.hh>
    \n
    9
    \n \n \n-\n+\n
    13
    \n
    14namespace Dune
    \n
    15{
    \n
    16
    \n
    17 // DGFGridFactory for IdentityGrid
    \n
    18 // -------------------------------
    \n
    19
    \n@@ -206,15 +206,15 @@\n
    102 };
    \n
    \n
    103
    \n
    104}
    \n
    105
    \n
    106#endif // #ifndef DUNE_DGFPARSER_DGFIDENTITYGRID_HH
    \n
    The IdentityGrid class.
    \n-\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Definition dgfgridfactory.hh:38
    \n
    G Grid
    Definition dgfgridfactory.hh:39
    \n
    static const int dimension
    Definition dgfgridfactory.hh:40
    \n
    Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
    Definition common/intersection.hh:164
    \n
    Wrapper class for entities.
    Definition common/entity.hh:66
    \n
    Grid abstract base class.
    Definition common/grid.hh:375
    \n"}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00911_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00659_source.html", "comments": ["Files 78% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: common.hh Source File\n+dune-grid: dofvector.hh Source File\n \n \n \n \n \n \n \n@@ -70,384 +70,536 @@\n
    \n
    \n
    \n \n \n \n \n
    \n-
    common.hh
    \n+
    dofvector.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_COMMON_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_COMMON_HH
    \n-
    8
    \n+
    5#ifndef DUNE_ALBERTA_DOFVECTOR_HH
    \n+
    6#define DUNE_ALBERTA_DOFVECTOR_HH
    \n+
    7
    \n+
    8#include <cstdlib>
    \n
    9#include <limits>
    \n-
    10#include <sstream>
    \n-
    11#include <string>
    \n-
    12#include <cstdint>
    \n-
    13
    \n-
    14#include <dune/common/exceptions.hh>
    \n-
    15#include <dune/geometry/type.hh>
    \n-
    16#include <dune/common/typetraits.hh>
    \n-
    17
    \n-
    25namespace Dune
    \n-
    26{
    \n+
    10
    \n+\n+\n+\n+
    14
    \n+
    15#if HAVE_ALBERTA
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 namespace Alberta
    \n+
    21 {
    \n+
    22
    \n+
    23 // External Forward Declarations
    \n+
    24 // -----------------------------
    \n+
    25
    \n+
    26 template< int dim >
    \n+
    27 class MeshPointer;
    \n+
    28
    \n
    29
    \n-
    30 namespace VTK {
    \n-
    31
    \n-
    33 //
    \n-
    34 // VTKOptions
    \n-
    35 //
    \n+
    30
    \n+
    31 // DofVectorProvider
    \n+
    32 // -----------------
    \n+
    33
    \n+
    34 template< class Dof >
    \n+\n
    36
    \n-
    38
    \n-
    \n-\n-\n-\n-\n-\n-
    52 // //! Output to the file is compressed inline binary.
    \n-
    53 // binarycompressed,
    \n-
    54 // //! Output is compressed and appended to the file.
    \n-
    55 // compressedappended
    \n-
    56 };
    \n-
    \n-
    58
    \n-
    \n-
    67 enum DataMode {
    \n-
    69
    \n-\n-
    75
    \n-\n-
    82 };
    \n+
    37 template<>
    \n+
    \n+
    38 struct DofVectorProvider< int >
    \n+
    39 {
    \n+
    40 typedef ALBERTA DOF_INT_VEC DofVector;
    \n+
    41
    \n+
    \n+
    42 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n+
    43 {
    \n+
    44 return ALBERTA get_dof_int_vec( name.c_str(), dofSpace );
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+
    47 static void free ( DofVector *dofVector )
    \n+
    48 {
    \n+
    49 ALBERTA free_dof_int_vec( dofVector );
    \n+
    50 }
    \n+
    \n+
    51
    \n+
    \n+
    52 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n+
    53 {
    \n+
    54 return ALBERTA read_dof_int_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    \n+
    57 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n+
    58 {
    \n+
    59 int success = ALBERTA write_dof_int_vec_xdr( dofVector, filename.c_str() );
    \n+
    60 return (success == 0);
    \n+
    61 }
    \n+
    \n+
    62 };
    \n+
    \n+
    63
    \n+
    64 template<>
    \n+
    \n+
    65 struct DofVectorProvider< signed char >
    \n+
    66 {
    \n+
    67 typedef ALBERTA DOF_SCHAR_VEC DofVector;
    \n+
    68
    \n+
    \n+
    69 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n+
    70 {
    \n+
    71 return ALBERTA get_dof_schar_vec( name.c_str(), dofSpace );
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+
    74 static void free ( DofVector *dofVector )
    \n+
    75 {
    \n+
    76 ALBERTA free_dof_schar_vec( dofVector );
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    79 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n+
    80 {
    \n+
    81 return ALBERTA read_dof_schar_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n+
    82 }
    \n
    \n
    83
    \n-
    85 //
    \n-
    86 // PrintType
    \n-
    87 //
    \n-
    88
    \n+
    \n+
    84 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n+
    85 {
    \n+
    86 int success = ALBERTA write_dof_schar_vec_xdr( dofVector, filename.c_str() );
    \n+
    87 return (success == 0);
    \n+
    88 }
    \n+
    \n+
    89 };
    \n+
    \n
    90
    \n-
    94 template<typename T>
    \n-
    \n-
    95 struct PrintType {
    \n-
    97 typedef T Type;
    \n-
    98 };
    \n-
    \n-
    99
    \n-
    100 template<>
    \n-
    \n-
    101 struct PrintType<unsigned char> {
    \n-
    102 typedef unsigned Type;
    \n-
    103 };
    \n-
    \n-
    104
    \n-
    105 template<>
    \n-
    \n-
    106 struct PrintType<signed char> {
    \n-
    107 typedef int Type;
    \n-
    108 };
    \n-
    \n-
    109
    \n-
    110 template<>
    \n-
    \n-
    111 struct PrintType<char> {
    \n-
    112 typedef std::conditional<std::numeric_limits<char>::is_signed,
    \n-
    113 int, unsigned>::type
    \n-\n-
    115 };
    \n-
    \n-
    116
    \n-
    118 //
    \n-
    119 // VTK::GeometryType related stuff
    \n-
    120 //
    \n-
    121
    \n-
    123
    \n-
    \n-\n-\n-
    134 line = 3,
    \n-\n-\n-\n-\n-\n-
    140 prism = 13,
    \n-\n-
    142 polyhedron = 42
    \n-
    143 };
    \n+
    91 template<>
    \n+
    \n+
    92 struct DofVectorProvider< unsigned char >
    \n+
    93 {
    \n+
    94 typedef ALBERTA DOF_UCHAR_VEC DofVector;
    \n+
    95
    \n+
    \n+
    96 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n+
    97 {
    \n+
    98 return ALBERTA get_dof_uchar_vec( name.c_str(), dofSpace );
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    \n+
    101 static void free ( DofVector *dofVector )
    \n+
    102 {
    \n+
    103 ALBERTA free_dof_uchar_vec( dofVector );
    \n+
    104 }
    \n+
    \n+
    105
    \n+
    \n+
    106 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n+
    107 {
    \n+
    108 return ALBERTA read_dof_uchar_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    \n+
    111 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n+
    112 {
    \n+
    113 int success = ALBERTA write_dof_uchar_vec_xdr( dofVector, filename.c_str() );
    \n+
    114 return (success == 0);
    \n+
    115 }
    \n+
    \n+
    116 };
    \n+
    \n+
    117
    \n+
    118 template<>
    \n+
    \n+\n+
    120 {
    \n+
    121 typedef ALBERTA DOF_REAL_VEC DofVector;
    \n+
    122
    \n+
    \n+
    123 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n+
    124 {
    \n+
    125 return ALBERTA get_dof_real_vec( name.c_str(), dofSpace );
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    \n+
    128 static void free ( DofVector *dofVector )
    \n+
    129 {
    \n+
    130 ALBERTA free_dof_real_vec( dofVector );
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    \n+
    133 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n+
    134 {
    \n+
    135 return ALBERTA read_dof_real_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    \n+
    138 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n+
    139 {
    \n+
    140 int success = ALBERTA write_dof_real_vec_xdr( dofVector, filename.c_str() );
    \n+
    141 return (success == 0);
    \n+
    142 }
    \n+
    \n+
    143 };
    \n
    \n
    144
    \n-
    146
    \n-
    \n-
    151 inline GeometryType geometryType(const Dune::GeometryType& t)
    \n-
    152 {
    \n-
    153 if (t.isVertex()) return vertex;
    \n-
    154 if (t.isLine()) return line;
    \n-
    155 if (t.isTriangle()) return triangle;
    \n-
    156 if (t.isQuadrilateral()) return quadrilateral;
    \n-
    157 if (t.isTetrahedron()) return tetrahedron;
    \n-
    158 if (t.isPyramid()) return pyramid;
    \n-
    159 if (t.isPrism()) return prism;
    \n-
    160 if (t.isHexahedron()) return hexahedron;
    \n-
    161
    \n-
    162 if (t.isNone() )
    \n-
    163 {
    \n-
    164 if( t.dim() == 2 ) return polygon;
    \n-
    165 if( t.dim() == 3 ) return polyhedron;
    \n-
    166 }
    \n-
    167
    \n-
    168 DUNE_THROW(IOError,"VTKWriter: unsupported GeometryType " << t);
    \n-
    169 }
    \n-
    \n-
    170
    \n-
    172 //
    \n-
    173 // Functions for transforming the index of a corner inside an entity
    \n-
    174 // between Dune and VTK
    \n-
    175 //
    \n+
    145 template<>
    \n+
    \n+\n+
    147 {
    \n+
    148 typedef ALBERTA DOF_REAL_D_VEC DofVector;
    \n+
    149
    \n+
    \n+
    150 static DofVector *get ( const DofSpace *dofSpace, const std::string &name )
    \n+
    151 {
    \n+
    152 return ALBERTA get_dof_real_d_vec( name.c_str(), dofSpace );
    \n+
    153 }
    \n+
    \n+
    154
    \n+
    \n+
    155 static void free ( DofVector *dofVector )
    \n+
    156 {
    \n+
    157 ALBERTA free_dof_real_d_vec( dofVector );
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    \n+
    160 static DofVector *read ( const std::string &filename, Mesh *mesh, DofSpace *dofSpace )
    \n+
    161 {
    \n+
    162 return ALBERTA read_dof_real_d_vec_xdr( filename.c_str(), mesh, dofSpace );
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    \n+
    165 static bool write ( const DofVector *dofVector, const std::string &filename )
    \n+
    166 {
    \n+
    167 int success = ALBERTA write_dof_real_d_vec_xdr( dofVector, filename.c_str() );
    \n+
    168 return (success == 0);
    \n+
    169 }
    \n+
    \n+
    170 };
    \n+
    \n+
    171
    \n+
    172
    \n+
    173
    \n+
    174 // DofVectorPointer
    \n+
    175 // ----------------
    \n
    176
    \n-
    178
    \n-
    \n-
    186 inline int renumber(const Dune::GeometryType &t, int i)
    \n-
    187 {
    \n-
    188 static const int quadRenumbering[4] = {0,1,3,2};
    \n-
    189 static const int cubeRenumbering[8] = {0,1,3,2,4,5,7,6};
    \n-
    190 static const int prismRenumbering[6] = {0,2,1,3,5,4};
    \n-
    191 static const int pyramidRenumbering[5] = {0,1,3,2,4};
    \n-
    192
    \n-
    193 if (t.isQuadrilateral()) return quadRenumbering[i];
    \n-
    194 if (t.isPyramid()) return pyramidRenumbering[i];
    \n-
    195 if (t.isPrism()) return prismRenumbering[i];
    \n-
    196 if (t.isHexahedron()) return cubeRenumbering[i];
    \n-
    197
    \n-
    198 return i;
    \n-
    199 }
    \n-
    \n-
    200
    \n-
    202
    \n-
    216 template<typename T>
    \n-
    \n-
    217 int renumber(const T& t, int i)
    \n-
    218 {
    \n-
    219 return renumber(t.type(), i);
    \n-
    220 }
    \n-
    \n-
    221
    \n-
    223 //
    \n-
    224 // Determine Endianness
    \n-
    225 //
    \n-
    226
    \n-
    228
    \n-
    \n-
    232 inline std::string getEndiannessString()
    \n-
    233 {
    \n-
    234 short i = 1;
    \n-
    235 if (reinterpret_cast<char*>(&i)[1] == 1)
    \n-
    236 return "BigEndian";
    \n-
    237 else
    \n-
    238 return "LittleEndian";
    \n-
    239 }
    \n-
    \n-
    240
    \n-
    242 //
    \n-
    243 // which type of vtkfile to write
    \n-
    244 //
    \n-
    245
    \n-
    247
    \n-
    \n-
    252 enum FileType {
    \n-\n-\n-
    257 };
    \n-
    \n-
    258
    \n-
    259
    \n-
    261 //
    \n-
    262 // which precision to use when writing out data
    \n-
    263 //
    \n-
    264
    \n-
    266
    \n-
    \n-
    271 enum class Precision {
    \n-
    272 int32,
    \n-
    273 uint8,
    \n-
    274 uint32,
    \n-
    275 float32,
    \n-
    276 float64
    \n-
    277 };
    \n-
    \n-
    278
    \n-
    \n-
    280 inline std::string toString(Precision p)
    \n-
    281 {
    \n-
    282 switch(p)
    \n-
    283 {
    \n-\n-
    285 return "Float32";
    \n-\n-
    287 return "Float64";
    \n-\n-
    289 return "UInt32";
    \n-
    290 case Precision::uint8:
    \n-
    291 return "UInt8";
    \n-
    292 case Precision::int32:
    \n-
    293 return "Int32";
    \n-
    294 default:
    \n-
    295 DUNE_THROW(Dune::NotImplemented, "Unknown precision type");
    \n+
    177 template< class Dof >
    \n+
    \n+\n+
    179 {
    \n+\n+
    181
    \n+\n+
    183
    \n+
    184 public:
    \n+
    185 typedef typename DofVectorProvider::DofVector DofVector;
    \n+
    186
    \n+
    187 static const bool supportsAdaptationData = true;
    \n+
    188
    \n+
    189 private:
    \n+
    190 DofVector *dofVector_;
    \n+
    191
    \n+
    192 public:
    \n+
    \n+\n+
    194 : dofVector_( NULL )
    \n+
    195 {}
    \n+
    \n+
    196
    \n+
    \n+\n+
    198 const std::string &name = "" )
    \n+
    199 : dofVector_ ( DofVectorProvider::get( dofSpace, name ) )
    \n+
    200 {}
    \n+
    \n+
    201
    \n+
    \n+
    202 explicit DofVectorPointer ( DofVector *dofVector )
    \n+
    203 : dofVector_( dofVector )
    \n+
    204 {}
    \n+
    \n+
    205
    \n+
    \n+
    206 explicit operator bool () const
    \n+
    207 {
    \n+
    208 return (bool)dofVector_;
    \n+
    209 }
    \n+
    \n+
    210
    \n+
    \n+
    211 operator DofVector * () const
    \n+
    212 {
    \n+
    213 return dofVector_;
    \n+
    214 }
    \n+
    \n+
    215
    \n+
    \n+
    216 operator Dof * () const
    \n+
    217 {
    \n+
    218 Dof *ptr = NULL;
    \n+
    219 GET_DOF_VEC( ptr, dofVector_ );
    \n+
    220 return ptr;
    \n+
    221 }
    \n+
    \n+
    222
    \n+
    \n+
    223 const DofSpace *dofSpace () const
    \n+
    224 {
    \n+
    225 return dofVector_->fe_space;
    \n+
    226 }
    \n+
    \n+
    227
    \n+
    \n+
    228 std::string name () const
    \n+
    229 {
    \n+
    230 if( dofVector_ )
    \n+
    231 return dofVector_->name;
    \n+
    232 else
    \n+
    233 return std::string();
    \n+
    234 }
    \n+
    \n+
    235
    \n+
    \n+
    236 void create ( const DofSpace *dofSpace, const std::string &name = "" )
    \n+
    237 {
    \n+
    238 release();
    \n+
    239 dofVector_ = DofVectorProvider::get( dofSpace, name );
    \n+
    240 }
    \n+
    \n+
    241
    \n+
    242 template< int dim >
    \n+
    \n+
    243 void read ( const std::string &filename, const MeshPointer< dim > &meshPointer )
    \n+
    244 {
    \n+
    245 release();
    \n+
    246 dofVector_ = DofVectorProvider::read( filename, meshPointer, NULL );
    \n+
    247 }
    \n+
    \n+
    248
    \n+
    \n+
    249 bool write ( const std::string &filename ) const
    \n+
    250 {
    \n+
    251 return DofVectorProvider::write( dofVector_, filename );
    \n+
    252 }
    \n+
    \n+
    253
    \n+
    \n+
    254 void release ()
    \n+
    255 {
    \n+
    256 if( dofVector_ )
    \n+
    257 {
    \n+
    258 DofVectorProvider::free( dofVector_ );
    \n+
    259 dofVector_ = NULL;
    \n+
    260 }
    \n+
    261 }
    \n+
    \n+
    262
    \n+
    263 template< class Functor >
    \n+
    \n+
    264 void forEach ( Functor &functor ) const
    \n+
    265 {
    \n+
    266 Dof *array = (Dof *)(*this);
    \n+
    267 FOR_ALL_DOFS( dofSpace()->admin, functor( array[ dof ] ) );
    \n+
    268 }
    \n+
    \n+
    269
    \n+
    \n+
    270 void initialize ( const Dof &value )
    \n+
    271 {
    \n+
    272 Dof *array = (Dof *)(*this);
    \n+
    273 FOR_ALL_DOFS( dofSpace()->admin, array[ dof ] = value );
    \n+
    274 }
    \n+
    \n+
    275
    \n+
    276 template< class AdaptationData >
    \n+
    \n+
    277 AdaptationData *getAdaptationData () const
    \n+
    278 {
    \n+
    279 assert( dofVector_ );
    \n+
    280 assert( dofVector_->user_data );
    \n+
    281 return static_cast< AdaptationData * >( dofVector_->user_data );
    \n+
    282 }
    \n+
    \n+
    283
    \n+
    284 template< class AdaptationData >
    \n+
    \n+
    285 void setAdaptationData ( AdaptationData *adaptationData )
    \n+
    286 {
    \n+
    287 assert( dofVector_ );
    \n+
    288 dofVector_->user_data = adaptationData;
    \n+
    289 }
    \n+
    \n+
    290
    \n+
    291 template< class Interpolation >
    \n+
    \n+\n+
    293 {
    \n+
    294 assert( dofVector_ );
    \n+
    295 dofVector_->refine_interpol = &refineInterpolate< Interpolation >;
    \n
    296 }
    \n-
    297 }
    \n
    \n-
    298
    \n-
    \n-
    300 inline std::size_t typeSize(Precision p)
    \n-
    301 {
    \n-
    302 switch(p)
    \n-
    303 {
    \n-\n-
    305 return sizeof(float);
    \n-\n-
    307 return sizeof(double);
    \n-\n-
    309 return sizeof(std::uint32_t);
    \n-
    310 case Precision::uint8:
    \n-
    311 return sizeof(std::uint8_t);
    \n-
    312 case Precision::int32:
    \n-
    313 return sizeof(std::int32_t);
    \n-
    314 default:
    \n-
    315 DUNE_THROW(Dune::NotImplemented, "Unknown precision type");
    \n-
    316 }
    \n-
    317 }
    \n-
    \n-
    318
    \n-
    320
    \n-
    \n-\n-
    328 {
    \n-
    329
    \n-
    330 public:
    \n-
    331
    \n-
    \n-
    333 enum class Type {
    \n-
    336 scalar,
    \n-
    338 vector,
    \n-
    340 tensor
    \n-
    341 };
    \n-
    \n-
    342
    \n-
    \n-
    344 FieldInfo(std::string name, Type type, std::size_t size, Precision prec = Precision::float32)
    \n-
    345 : _name(name)
    \n-
    346 , _type(type)
    \n-
    347 , _size(size)
    \n-
    348 , _prec(prec)
    \n-
    349 {}
    \n-
    \n-
    350
    \n-
    \n-
    352 std::string name() const
    \n-
    353 {
    \n-
    354 return _name;
    \n-
    355 }
    \n-
    \n-
    356
    \n-
    \n-
    358 Type type() const
    \n-
    359 {
    \n-
    360 return _type;
    \n-
    361 }
    \n-
    \n-
    362
    \n-
    \n-
    364 std::size_t size() const
    \n-
    365 {
    \n-
    366 return _size;
    \n-
    367 }
    \n-
    \n-
    368
    \n-
    \n-\n-
    371 {
    \n-
    372 return _prec;
    \n-
    373 }
    \n-
    \n-
    374
    \n-
    375 private:
    \n-
    376
    \n-
    377 std::string _name;
    \n-
    378 Type _type;
    \n-
    379 std::size_t _size;
    \n-
    380 Precision _prec;
    \n-
    381
    \n-
    382 };
    \n-
    \n-
    383
    \n-
    384
    \n-
    385 } // namespace VTK
    \n-
    386
    \n-
    388
    \n-
    389} // namespace Dune
    \n-
    390
    \n-
    391#endif // DUNE_GRID_IO_FILE_VTK_COMMON_HH
    \n+
    297
    \n+
    298 template< class Restriction >
    \n+
    \n+\n+
    300 {
    \n+
    301 assert( dofVector_ );
    \n+
    302 dofVector_->coarse_restrict = &coarsenRestrict< Restriction >;
    \n+
    303 }
    \n+
    \n+
    304
    \n+
    305 private:
    \n+
    306 template< class Interpolation >
    \n+
    307 static void refineInterpolate ( DofVector *dofVector, RC_LIST_EL *list, int n )
    \n+
    308 {
    \n+
    309 const This dofVectorPointer( dofVector );
    \n+
    310 typename Interpolation::Patch patch( list, n );
    \n+
    311 Interpolation::interpolateVector( dofVectorPointer, patch );
    \n+
    312 }
    \n+
    313
    \n+
    314 template< class Restriction >
    \n+
    315 static void coarsenRestrict ( DofVector *dofVector, RC_LIST_EL *list, int n )
    \n+
    316 {
    \n+
    317 const This dofVectorPointer( dofVector );
    \n+
    318 typename Restriction::Patch patch( list, n );
    \n+
    319 Restriction::restrictVector( dofVectorPointer, patch );
    \n+
    320 }
    \n+
    321 };
    \n+
    \n+
    322
    \n+
    323
    \n+
    324
    \n+
    325 // Auxiliary Functions
    \n+
    326 // --------------------
    \n+
    327
    \n+
    \n+
    328 inline void abs ( const DofVectorPointer< int > &dofVector )
    \n+
    329 {
    \n+
    330 assert( !dofVector == false );
    \n+
    331 int *array = (int *)dofVector;
    \n+
    332 FOR_ALL_DOFS( dofVector.dofSpace()->admin,
    \n+
    333 array[ dof ] = std::abs( array[ dof ] ) );
    \n+
    334 }
    \n+
    \n+
    335
    \n+
    336
    \n+
    \n+
    337 inline int max ( const DofVectorPointer< int > &dofVector )
    \n+
    338 {
    \n+
    339 assert( !dofVector == false );
    \n+
    340 int *array = (int *)dofVector;
    \n+
    341 int result = std::numeric_limits< int >::min();
    \n+
    342 FOR_ALL_DOFS( dofVector.dofSpace()->admin,
    \n+
    343 result = std::max( result, array[ dof ] ) );
    \n+
    344 return result;
    \n+
    345 }
    \n+
    \n+
    346
    \n+
    347
    \n+
    \n+
    348 inline int min ( const DofVectorPointer< int > &dofVector )
    \n+
    349 {
    \n+
    350 assert( !dofVector == false );
    \n+
    351 int *array = (int *)dofVector;
    \n+
    352 int result = std::numeric_limits< int >::max();
    \n+
    353 FOR_ALL_DOFS( dofVector.dofSpace()->admin,
    \n+
    354 result = std::min( result, array[ dof ] ) );
    \n+
    355 return result;
    \n+
    356 }
    \n+
    \n+
    357
    \n+
    358 } // namespace Alberta
    \n+
    359
    \n+
    360} // namespace Dune
    \n+
    361
    \n+
    362#endif // #if HAVE_ALBERTA
    \n+
    363
    \n+
    364#endif // #ifndef DUNE_ALBERTA_DOFVECTOR_HH
    \n+\n+
    #define ALBERTA
    Definition albertaheader.hh:29
    \n+
    provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
    \n+
    provides a wrapper for ALBERTA's el_info structure
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-\n-\n-\n-\n-\n-
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n-
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n-
    @ appendedraw
    Output is to the file is appended raw binary.
    Definition common.hh:49
    \n-
    @ appendedbase64
    Output is to the file is appended base64 binary.
    Definition common.hh:51
    \n-
    @ base64
    Output to the file is inline base64 binary.
    Definition common.hh:47
    \n-
    int renumber(const Dune::GeometryType &t, int i)
    renumber VTK <-> Dune
    Definition common.hh:186
    \n-
    FileType
    which type of VTK file to write
    Definition common.hh:252
    \n-
    @ polyData
    for .vtp files (PolyData)
    Definition common.hh:254
    \n-
    @ unstructuredGrid
    for .vtu files (UnstructuredGrid)
    Definition common.hh:256
    \n-
    std::string toString(Precision p)
    map precision to VTK type name
    Definition common.hh:280
    \n-
    DataMode
    Whether to produce conforming or non-conforming output.
    Definition common.hh:67
    \n-
    @ conforming
    Output conforming data.
    Definition common.hh:73
    \n-
    @ nonconforming
    Output non-conforming data.
    Definition common.hh:81
    \n-
    std::size_t typeSize(Precision p)
    map precision to byte size
    Definition common.hh:300
    \n-
    GeometryType geometryType(const Dune::GeometryType &t)
    mapping from GeometryType to VTKGeometryType
    Definition common.hh:151
    \n-
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n-
    GeometryType
    Type representing VTK's entity geometry types.
    Definition common.hh:132
    \n-
    @ line
    Definition common.hh:134
    \n-
    @ pyramid
    Definition common.hh:141
    \n-
    @ polyhedron
    Definition common.hh:142
    \n-
    @ quadrilateral
    Definition common.hh:137
    \n-
    @ vertex
    Definition common.hh:133
    \n-
    @ tetrahedron
    Definition common.hh:138
    \n-
    @ prism
    Definition common.hh:140
    \n-
    @ hexahedron
    Definition common.hh:139
    \n-
    @ triangle
    Definition common.hh:135
    \n-
    @ polygon
    Definition common.hh:136
    \n-
    determine a type to safely put another type into a stream
    Definition common.hh:95
    \n-
    T Type
    type to convert T to before putting it into a stream with <<
    Definition common.hh:97
    \n-
    unsigned Type
    Definition common.hh:102
    \n-
    int Type
    Definition common.hh:107
    \n-
    std::conditional< std::numeric_limits< char >::is_signed, int, unsigned >::type Type
    Definition common.hh:114
    \n-
    Descriptor struct for VTK fields.
    Definition common.hh:328
    \n-
    std::size_t size() const
    The number of components in the data field.
    Definition common.hh:364
    \n-
    Precision precision() const
    The precision used for the output of the data field.
    Definition common.hh:370
    \n-
    Type
    VTK data type.
    Definition common.hh:333
    \n-
    @ tensor
    tensor field (always 3x3)
    \n-
    @ vector
    vector-valued field (always 3D, will be padded if necessary)
    \n-\n-
    FieldInfo(std::string name, Type type, std::size_t size, Precision prec=Precision::float32)
    Create a FieldInfo instance with the given name, type and size.
    Definition common.hh:344
    \n-
    Type type() const
    The type of the data field.
    Definition common.hh:358
    \n-
    std::string name() const
    The name of the data field.
    Definition common.hh:352
    \n+
    ALBERTA MESH Mesh
    Definition misc.hh:53
    \n+
    void abs(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:328
    \n+
    ALBERTA REAL Real
    Definition misc.hh:48
    \n+
    ALBERTA FE_SPACE DofSpace
    Definition misc.hh:65
    \n+
    int min(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:348
    \n+
    int max(const DofVectorPointer< int > &dofVector)
    Definition dofvector.hh:337
    \n+
    ALBERTA REAL_D GlobalVector
    Definition misc.hh:50
    \n+
    Definition meshpointer.hh:40
    \n+
    Definition dofvector.hh:35
    \n+
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:42
    \n+
    ALBERTA DOF_INT_VEC DofVector
    Definition dofvector.hh:40
    \n+
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:57
    \n+
    static void free(DofVector *dofVector)
    Definition dofvector.hh:47
    \n+
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:52
    \n+
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:84
    \n+
    static void free(DofVector *dofVector)
    Definition dofvector.hh:74
    \n+
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:69
    \n+
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:79
    \n+
    ALBERTA DOF_SCHAR_VEC DofVector
    Definition dofvector.hh:67
    \n+
    static void free(DofVector *dofVector)
    Definition dofvector.hh:101
    \n+
    ALBERTA DOF_UCHAR_VEC DofVector
    Definition dofvector.hh:94
    \n+
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:106
    \n+
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:96
    \n+
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:111
    \n+
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:123
    \n+
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:133
    \n+
    static void free(DofVector *dofVector)
    Definition dofvector.hh:128
    \n+
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:138
    \n+
    ALBERTA DOF_REAL_VEC DofVector
    Definition dofvector.hh:121
    \n+
    ALBERTA DOF_REAL_D_VEC DofVector
    Definition dofvector.hh:148
    \n+
    static void free(DofVector *dofVector)
    Definition dofvector.hh:155
    \n+
    static bool write(const DofVector *dofVector, const std::string &filename)
    Definition dofvector.hh:165
    \n+
    static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace *dofSpace)
    Definition dofvector.hh:160
    \n+
    static DofVector * get(const DofSpace *dofSpace, const std::string &name)
    Definition dofvector.hh:150
    \n+
    Definition dofvector.hh:179
    \n+
    DofVectorProvider::DofVector DofVector
    Definition dofvector.hh:185
    \n+
    void setupInterpolation()
    Definition dofvector.hh:292
    \n+
    void initialize(const Dof &value)
    Definition dofvector.hh:270
    \n+
    void read(const std::string &filename, const MeshPointer< dim > &meshPointer)
    Definition dofvector.hh:243
    \n+
    void create(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:236
    \n+
    void release()
    Definition dofvector.hh:254
    \n+
    AdaptationData * getAdaptationData() const
    Definition dofvector.hh:277
    \n+
    void setupRestriction()
    Definition dofvector.hh:299
    \n+
    DofVectorPointer()
    Definition dofvector.hh:193
    \n+
    void setAdaptationData(AdaptationData *adaptationData)
    Definition dofvector.hh:285
    \n+
    bool write(const std::string &filename) const
    Definition dofvector.hh:249
    \n+
    DofVectorPointer(DofVector *dofVector)
    Definition dofvector.hh:202
    \n+
    const DofSpace * dofSpace() const
    Definition dofvector.hh:223
    \n+
    static const bool supportsAdaptationData
    Definition dofvector.hh:187
    \n+
    std::string name() const
    Definition dofvector.hh:228
    \n+
    void forEach(Functor &functor) const
    Definition dofvector.hh:264
    \n+
    DofVectorPointer(const DofSpace *dofSpace, const std::string &name="")
    Definition dofvector.hh:197
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,453 +1,563 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bi_\bo\n- * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-common.hh\n+ * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n+dofvector.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_COMMON_HH\n-7#define DUNE_GRID_IO_FILE_VTK_COMMON_HH\n-8\n+5#ifndef DUNE_ALBERTA_DOFVECTOR_HH\n+6#define DUNE_ALBERTA_DOFVECTOR_HH\n+7\n+8#include \n 9#include \n-10#include \n-11#include \n-12#include \n-13\n-14#include \n-15#include \n-16#include \n-17\n-25namespace _\bD_\bu_\bn_\be\n-26{\n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bm_\bi_\bs_\bc_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+14\n+15#if HAVE_ALBERTA\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 namespace Alberta\n+21 {\n+22\n+23 // External Forward Declarations\n+24 // -----------------------------\n+25\n+26 template< int dim >\n+27 class MeshPointer;\n+28\n 29\n-30 namespace VTK {\n-31\n-33 //\n-34 // VTKOptions\n-35 //\n+30\n+31 // DofVectorProvider\n+32 // -----------------\n+33\n+34 template< class Dof >\n+_\b3_\b5 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n 36\n-38\n-_\b4_\b3 enum _\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be {\n-_\b4_\b5 _\ba_\bs_\bc_\bi_\bi,\n-_\b4_\b7 _\bb_\ba_\bs_\be_\b6_\b4,\n-_\b4_\b9 _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw,\n-51 _\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n-52 // //! Output to the file is compressed inline binary.\n-53 // binarycompressed,\n-54 // //! Output is compressed and appended to the file.\n-55 // compressedappended\n-_\b5_\b6 };\n-58\n-_\b6_\b7 enum _\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be {\n-69\n-_\b7_\b3 _\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg,\n-75\n-81 _\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-_\b8_\b2 };\n+37 template<>\n+_\b3_\b8 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< int >\n+39 {\n+_\b4_\b0 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_INT_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+41\n+_\b4_\b2 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n+43 {\n+44 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_int_vec( name.c_str(), dofSpace );\n+45 }\n+46\n+_\b4_\b7 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n+48 {\n+49 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_int_vec( dofVector );\n+50 }\n+51\n+_\b5_\b2 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+*dofSpace )\n+53 {\n+54 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_int_vec_xdr( filename.c_str(), mesh, dofSpace );\n+55 }\n+56\n+_\b5_\b7 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n+)\n+58 {\n+59 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_int_vec_xdr( dofVector, filename.c_str() );\n+60 return (success == 0);\n+61 }\n+62 };\n+63\n+64 template<>\n+_\b6_\b5 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< signed char >\n+66 {\n+_\b6_\b7 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_SCHAR_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+68\n+_\b6_\b9 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n+70 {\n+71 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_schar_vec( name.c_str(), dofSpace );\n+72 }\n+73\n+_\b7_\b4 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n+75 {\n+76 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_schar_vec( dofVector );\n+77 }\n+78\n+_\b7_\b9 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+*dofSpace )\n+80 {\n+81 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_schar_vec_xdr( filename.c_str(), mesh, dofSpace );\n+82 }\n 83\n-85 //\n-86 // PrintType\n-87 //\n-88\n+_\b8_\b4 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n+)\n+85 {\n+86 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_schar_vec_xdr( dofVector, filename.c_str()\n+);\n+87 return (success == 0);\n+88 }\n+89 };\n 90\n-94 template\n-_\b9_\b5 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n-_\b9_\b7 typedef T _\bT_\by_\bp_\be;\n-98 };\n-99\n-100 template<>\n-_\b1_\b0_\b1 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n-_\b1_\b0_\b2 typedef unsigned _\bT_\by_\bp_\be;\n-103 };\n-104\n-105 template<>\n-_\b1_\b0_\b6 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n-_\b1_\b0_\b7 typedef int _\bT_\by_\bp_\be;\n-108 };\n-109\n-110 template<>\n-_\b1_\b1_\b1 struct _\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be {\n-112 typedef std::conditional::is_signed,\n-113 int, unsigned>::type\n-_\b1_\b1_\b4 _\bT_\by_\bp_\be;\n-115 };\n-116\n-118 //\n-119 // VTK::GeometryType related stuff\n-120 //\n-121\n-123\n-_\b1_\b3_\b2 enum _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be {\n-_\b1_\b3_\b3 _\bv_\be_\br_\bt_\be_\bx = 1,\n-_\b1_\b3_\b4 _\bl_\bi_\bn_\be = 3,\n-_\b1_\b3_\b5 _\bt_\br_\bi_\ba_\bn_\bg_\bl_\be = 5,\n-_\b1_\b3_\b6 _\bp_\bo_\bl_\by_\bg_\bo_\bn = 7,\n-_\b1_\b3_\b7 _\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl = 9,\n-_\b1_\b3_\b8 _\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn = 10,\n-_\b1_\b3_\b9 _\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn = 12,\n-_\b1_\b4_\b0 _\bp_\br_\bi_\bs_\bm = 13,\n-_\b1_\b4_\b1 _\bp_\by_\br_\ba_\bm_\bi_\bd = 14,\n-142 _\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn = 42\n-_\b1_\b4_\b3 };\n+91 template<>\n+_\b9_\b2 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< unsigned char >\n+93 {\n+_\b9_\b4 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_UCHAR_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+95\n+_\b9_\b6 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n+97 {\n+98 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_uchar_vec( name.c_str(), dofSpace );\n+99 }\n+100\n+_\b1_\b0_\b1 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n+102 {\n+103 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_uchar_vec( dofVector );\n+104 }\n+105\n+_\b1_\b0_\b6 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+*dofSpace )\n+107 {\n+108 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_uchar_vec_xdr( filename.c_str(), mesh, dofSpace );\n+109 }\n+110\n+_\b1_\b1_\b1 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n+)\n+112 {\n+113 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_uchar_vec_xdr( dofVector, filename.c_str()\n+);\n+114 return (success == 0);\n+115 }\n+116 };\n+117\n+118 template<>\n+_\b1_\b1_\b9 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bR_\be_\ba_\bl >\n+120 {\n+_\b1_\b2_\b1 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_REAL_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+122\n+_\b1_\b2_\b3 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n+124 {\n+125 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_real_vec( name.c_str(), dofSpace );\n+126 }\n+127\n+_\b1_\b2_\b8 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n+129 {\n+130 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_real_vec( dofVector );\n+131 }\n+132\n+_\b1_\b3_\b3 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+*dofSpace )\n+134 {\n+135 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_real_vec_xdr( filename.c_str(), mesh, dofSpace );\n+136 }\n+137\n+_\b1_\b3_\b8 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n+)\n+139 {\n+140 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_real_vec_xdr( dofVector, filename.c_str()\n+);\n+141 return (success == 0);\n+142 }\n+143 };\n 144\n-146\n-_\b1_\b5_\b1 inline _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be(const Dune::GeometryType& t)\n-152 {\n-153 if (t.isVertex()) return _\bv_\be_\br_\bt_\be_\bx;\n-154 if (t.isLine()) return _\bl_\bi_\bn_\be;\n-155 if (t.isTriangle()) return _\bt_\br_\bi_\ba_\bn_\bg_\bl_\be;\n-156 if (t.isQuadrilateral()) return _\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl;\n-157 if (t.isTetrahedron()) return _\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn;\n-158 if (t.isPyramid()) return _\bp_\by_\br_\ba_\bm_\bi_\bd;\n-159 if (t.isPrism()) return _\bp_\br_\bi_\bs_\bm;\n-160 if (t.isHexahedron()) return _\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn;\n-161\n-162 if (t.isNone() )\n-163 {\n-164 if( t.dim() == 2 ) return _\bp_\bo_\bl_\by_\bg_\bo_\bn;\n-165 if( t.dim() == 3 ) return _\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn;\n-166 }\n-167\n-168 DUNE_THROW(IOError,\"VTKWriter: unsupported GeometryType \" << t);\n+145 template<>\n+_\b1_\b4_\b6 struct _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br< _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br >\n+147 {\n+_\b1_\b4_\b8 typedef _\bA_\bL_\bB_\bE_\bR_\bT_\bA DOF_REAL_D_VEC _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+149\n+_\b1_\b5_\b0 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\bg_\be_\bt ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *dofSpace, const std::string &name )\n+151 {\n+152 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA get_dof_real_d_vec( name.c_str(), dofSpace );\n+153 }\n+154\n+_\b1_\b5_\b5 static void _\bf_\br_\be_\be ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n+156 {\n+157 _\bA_\bL_\bB_\bE_\bR_\bT_\bA free_dof_real_d_vec( dofVector );\n+158 }\n+159\n+_\b1_\b6_\b0 static _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *_\br_\be_\ba_\bd ( const std::string &filename, _\bM_\be_\bs_\bh *mesh, _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+*dofSpace )\n+161 {\n+162 return _\bA_\bL_\bB_\bE_\bR_\bT_\bA read_dof_real_d_vec_xdr( filename.c_str(), mesh, dofSpace );\n+163 }\n+164\n+_\b1_\b6_\b5 static bool _\bw_\br_\bi_\bt_\be ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, const std::string &filename\n+)\n+166 {\n+167 int success = _\bA_\bL_\bB_\bE_\bR_\bT_\bA write_dof_real_d_vec_xdr( dofVector, filename.c_str()\n+);\n+168 return (success == 0);\n 169 }\n-170\n-172 //\n-173 // Functions for transforming the index of a corner inside an entity\n-174 // between Dune and VTK\n-175 //\n+170 };\n+171\n+172\n+173\n+174 // DofVectorPointer\n+175 // ----------------\n 176\n-178\n-_\b1_\b8_\b6 inline int _\br_\be_\bn_\bu_\bm_\bb_\be_\br(const Dune::GeometryType &t, int i)\n-187 {\n-188 static const int quadRenumbering[4] = {0,1,3,2};\n-189 static const int cubeRenumbering[8] = {0,1,3,2,4,5,7,6};\n-190 static const int prismRenumbering[6] = {0,2,1,3,5,4};\n-191 static const int pyramidRenumbering[5] = {0,1,3,2,4};\n-192\n-193 if (t.isQuadrilateral()) return quadRenumbering[i];\n-194 if (t.isPyramid()) return pyramidRenumbering[i];\n-195 if (t.isPrism()) return prismRenumbering[i];\n-196 if (t.isHexahedron()) return cubeRenumbering[i];\n-197\n-198 return i;\n-199 }\n-200\n-202\n-216 template\n-_\b2_\b1_\b7 int _\br_\be_\bn_\bu_\bm_\bb_\be_\br(const T& t, int i)\n-218 {\n-219 return _\br_\be_\bn_\bu_\bm_\bb_\be_\br(t.type(), i);\n-220 }\n-221\n-223 //\n-224 // Determine Endianness\n-225 //\n-226\n-228\n-_\b2_\b3_\b2 inline std::string _\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg()\n-233 {\n-234 short i = 1;\n-235 if (reinterpret_cast(&i)[1] == 1)\n-236 return \"BigEndian\";\n-237 else\n-238 return \"LittleEndian\";\n-239 }\n-240\n-242 //\n-243 // which type of vtkfile to write\n-244 //\n-245\n-247\n-_\b2_\b5_\b2 enum _\bF_\bi_\bl_\be_\bT_\by_\bp_\be {\n-_\b2_\b5_\b4 _\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba,\n-256 _\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n-_\b2_\b5_\b7 };\n-258\n-259\n-261 //\n-262 // which precision to use when writing out data\n-263 //\n-264\n-266\n-_\b2_\b7_\b1 enum class _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn {\n-272 _\bi_\bn_\bt_\b3_\b2,\n-273 _\bu_\bi_\bn_\bt_\b8,\n-274 _\bu_\bi_\bn_\bt_\b3_\b2,\n-275 _\bf_\bl_\bo_\ba_\bt_\b3_\b2,\n-276 _\bf_\bl_\bo_\ba_\bt_\b6_\b4\n-277 };\n-278\n-_\b2_\b8_\b0 inline std::string _\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg(_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n-281 {\n-282 switch(p)\n-283 {\n-284 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2:\n-285 return \"Float32\";\n-286 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4:\n-287 return \"Float64\";\n-288 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2:\n-289 return \"UInt32\";\n-290 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8:\n-291 return \"UInt8\";\n-292 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2:\n-293 return \"Int32\";\n-294 default:\n-295 DUNE_THROW(Dune::NotImplemented, \"Unknown precision type\");\n+177 template< class Dof >\n+_\b1_\b7_\b8 class _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n+179 {\n+180 typedef _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bD_\bo_\bf_\b _\b> _\bT_\bh_\bi_\bs;\n+181\n+182 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bD_\bo_\bf_\b _\b> _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n+183\n+184 public:\n+_\b1_\b8_\b5 typedef typename DofVectorProvider::DofVector _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br;\n+186\n+_\b1_\b8_\b7 static const bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba = true;\n+188\n+189 private:\n+190 _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector_;\n+191\n+192 public:\n+_\b1_\b9_\b3 _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br ()\n+194 : dofVector_( NULL )\n+195 {}\n+196\n+_\b1_\b9_\b7 explicit _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be,\n+198 const std::string &_\bn_\ba_\bm_\be = \"\" )\n+199 : dofVector_ ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br::get( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be, _\bn_\ba_\bm_\be ) )\n+200 {}\n+201\n+_\b2_\b0_\b2 explicit _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector )\n+203 : dofVector_( dofVector )\n+204 {}\n+205\n+_\b2_\b0_\b6 explicit operator bool () const\n+207 {\n+208 return (bool)dofVector_;\n+209 }\n+210\n+_\b2_\b1_\b1 operator _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br * () const\n+212 {\n+213 return dofVector_;\n+214 }\n+215\n+_\b2_\b1_\b6 operator Dof * () const\n+217 {\n+218 Dof *ptr = NULL;\n+219 GET_DOF_VEC( ptr, dofVector_ );\n+220 return ptr;\n+221 }\n+222\n+_\b2_\b2_\b3 const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be () const\n+224 {\n+225 return dofVector_->fe_space;\n+226 }\n+227\n+_\b2_\b2_\b8 std::string _\bn_\ba_\bm_\be () const\n+229 {\n+230 if( dofVector_ )\n+231 return dofVector_->name;\n+232 else\n+233 return std::string();\n+234 }\n+235\n+_\b2_\b3_\b6 void _\bc_\br_\be_\ba_\bt_\be ( const _\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be *_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be, const std::string &_\bn_\ba_\bm_\be = \"\" )\n+237 {\n+238 _\br_\be_\bl_\be_\ba_\bs_\be();\n+239 dofVector_ = DofVectorProvider::get( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be, _\bn_\ba_\bm_\be );\n+240 }\n+241\n+242 template< int dim >\n+_\b2_\b4_\b3 void _\br_\be_\ba_\bd ( const std::string &filename, const _\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bd_\bi_\bm_\b _\b>\n+&meshPointer )\n+244 {\n+245 _\br_\be_\bl_\be_\ba_\bs_\be();\n+246 dofVector_ = DofVectorProvider::read( filename, meshPointer, NULL );\n+247 }\n+248\n+_\b2_\b4_\b9 bool _\bw_\br_\bi_\bt_\be ( const std::string &filename ) const\n+250 {\n+251 return DofVectorProvider::write( dofVector_, filename );\n+252 }\n+253\n+_\b2_\b5_\b4 void _\br_\be_\bl_\be_\ba_\bs_\be ()\n+255 {\n+256 if( dofVector_ )\n+257 {\n+258 DofVectorProvider::free( dofVector_ );\n+259 dofVector_ = NULL;\n+260 }\n+261 }\n+262\n+263 template< class Functor >\n+_\b2_\b6_\b4 void _\bf_\bo_\br_\bE_\ba_\bc_\bh ( Functor &functor ) const\n+265 {\n+266 Dof *array = (Dof *)(*this);\n+267 FOR_ALL_DOFS( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin, functor( array[ dof ] ) );\n+268 }\n+269\n+_\b2_\b7_\b0 void _\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be ( const Dof &value )\n+271 {\n+272 Dof *array = (Dof *)(*this);\n+273 FOR_ALL_DOFS( _\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin, array[ dof ] = value );\n+274 }\n+275\n+276 template< class AdaptationData >\n+_\b2_\b7_\b7 AdaptationData *_\bg_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba () const\n+278 {\n+279 assert( dofVector_ );\n+280 assert( dofVector_->user_data );\n+281 return static_cast< AdaptationData * >( dofVector_->user_data );\n+282 }\n+283\n+284 template< class AdaptationData >\n+_\b2_\b8_\b5 void _\bs_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba ( AdaptationData *adaptationData )\n+286 {\n+287 assert( dofVector_ );\n+288 dofVector_->user_data = adaptationData;\n+289 }\n+290\n+291 template< class Interpolation >\n+_\b2_\b9_\b2 void _\bs_\be_\bt_\bu_\bp_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n+293 {\n+294 assert( dofVector_ );\n+295 dofVector_->refine_interpol = &refineInterpolate< Interpolation >;\n 296 }\n-297 }\n-298\n-_\b3_\b0_\b0 inline std::size_t _\bt_\by_\bp_\be_\bS_\bi_\bz_\be(_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn p)\n-301 {\n-302 switch(p)\n-303 {\n-304 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2:\n-305 return sizeof(float);\n-306 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4:\n-307 return sizeof(double);\n-308 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2:\n-309 return sizeof(std::uint32_t);\n-310 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8:\n-311 return sizeof(std::uint8_t);\n-312 case _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2:\n-313 return sizeof(std::int32_t);\n-314 default:\n-315 DUNE_THROW(Dune::NotImplemented, \"Unknown precision type\");\n-316 }\n-317 }\n-318\n-320\n-_\b3_\b2_\b7 class _\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-328 {\n-329\n-330 public:\n-331\n-_\b3_\b3_\b3 enum class _\bT_\by_\bp_\be {\n-336 _\bs_\bc_\ba_\bl_\ba_\br,\n-338 _\bv_\be_\bc_\bt_\bo_\br,\n-340 _\bt_\be_\bn_\bs_\bo_\br\n-341 };\n-342\n-_\b3_\b4_\b4 _\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo(std::string _\bn_\ba_\bm_\be, _\bT_\by_\bp_\be _\bt_\by_\bp_\be, std::size_t _\bs_\bi_\bz_\be, _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec =\n-_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-345 : _name(_\bn_\ba_\bm_\be)\n-346 , _type(_\bt_\by_\bp_\be)\n-347 , _size(_\bs_\bi_\bz_\be)\n-348 , _prec(prec)\n-349 {}\n-350\n-_\b3_\b5_\b2 std::string _\bn_\ba_\bm_\be() const\n-353 {\n-354 return _name;\n-355 }\n-356\n-_\b3_\b5_\b8 _\bT_\by_\bp_\be _\bt_\by_\bp_\be() const\n-359 {\n-360 return _type;\n-361 }\n-362\n-_\b3_\b6_\b4 std::size_t _\bs_\bi_\bz_\be() const\n-365 {\n-366 return _size;\n-367 }\n-368\n-_\b3_\b7_\b0 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const\n-371 {\n-372 return _prec;\n-373 }\n-374\n-375 private:\n-376\n-377 std::string _name;\n-378 _\bT_\by_\bp_\be _type;\n-379 std::size_t _size;\n-380 _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _prec;\n-381\n-382 };\n-383\n-384\n-385 } // namespace VTK\n-386\n-388\n-389} // namespace Dune\n-390\n-391#endif // DUNE_GRID_IO_FILE_VTK_COMMON_HH\n+297\n+298 template< class Restriction >\n+_\b2_\b9_\b9 void _\bs_\be_\bt_\bu_\bp_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bi_\bo_\bn ()\n+300 {\n+301 assert( dofVector_ );\n+302 dofVector_->coarse_restrict = &coarsenRestrict< Restriction >;\n+303 }\n+304\n+305 private:\n+306 template< class Interpolation >\n+307 static void refineInterpolate ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, RC_LIST_EL *list, int\n+n )\n+308 {\n+309 const This dofVectorPointer( dofVector );\n+310 typename Interpolation::Patch patch( list, n );\n+311 Interpolation::interpolateVector( dofVectorPointer, patch );\n+312 }\n+313\n+314 template< class Restriction >\n+315 static void coarsenRestrict ( _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br *dofVector, RC_LIST_EL *list, int n\n+)\n+316 {\n+317 const This dofVectorPointer( dofVector );\n+318 typename Restriction::Patch patch( list, n );\n+319 Restriction::restrictVector( dofVectorPointer, patch );\n+320 }\n+321 };\n+322\n+323\n+324\n+325 // Auxiliary Functions\n+326 // --------------------\n+327\n+_\b3_\b2_\b8 inline void _\ba_\bb_\bs ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b> &dofVector )\n+329 {\n+330 assert( !dofVector == false );\n+331 int *array = (int *)dofVector;\n+332 FOR_ALL_DOFS( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin,\n+333 array[ dof ] = std::abs( array[ dof ] ) );\n+334 }\n+335\n+336\n+_\b3_\b3_\b7 inline int _\bm_\ba_\bx ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b> &dofVector )\n+338 {\n+339 assert( !dofVector == false );\n+340 int *array = (int *)dofVector;\n+341 int result = std::numeric_limits< int >::min();\n+342 FOR_ALL_DOFS( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin,\n+343 result = std::max( result, array[ dof ] ) );\n+344 return result;\n+345 }\n+346\n+347\n+_\b3_\b4_\b8 inline int _\bm_\bi_\bn ( const _\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b> &dofVector )\n+349 {\n+350 assert( !dofVector == false );\n+351 int *array = (int *)dofVector;\n+352 int result = std::numeric_limits< int >::max();\n+353 FOR_ALL_DOFS( dofVector._\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be()->admin,\n+354 result = std::min( result, array[ dof ] ) );\n+355 return result;\n+356 }\n+357\n+358 } // namespace Alberta\n+359\n+360} // namespace Dune\n+361\n+362#endif // #if HAVE_ALBERTA\n+363\n+364#endif // #ifndef DUNE_ALBERTA_DOFVECTOR_HH\n+_\bm_\bi_\bs_\bc_\b._\bh_\bh\n+_\bA_\bL_\bB_\bE_\bR_\bT_\bA\n+#define ALBERTA\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn albertaheader.hh:29\n+_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n+provides a wrapper for ALBERTA's refinement patches and the corners for\n+geometryInFather\n+_\be_\bl_\be_\bm_\be_\bn_\bt_\bi_\bn_\bf_\bo_\b._\bh_\bh\n+provides a wrapper for ALBERTA's el_info structure\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\b3_\b2\n-@ int32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b3_\b2\n-@ uint32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bu_\bi_\bn_\bt_\b8\n-@ uint8\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n-@ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b6_\b4\n-@ float64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n-OutputType\n-How the bulk data should be stored in the file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n-@ ascii\n-Output to the file is in ascii.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\br_\ba_\bw\n-@ appendedraw\n-Output is to the file is appended raw binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bp_\bp_\be_\bn_\bd_\be_\bd_\bb_\ba_\bs_\be_\b6_\b4\n-@ appendedbase64\n-Output is to the file is appended base64 binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bb_\ba_\bs_\be_\b6_\b4\n-@ base64\n-Output to the file is inline base64 binary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\br_\be_\bn_\bu_\bm_\bb_\be_\br\n-int renumber(const Dune::GeometryType &t, int i)\n-renumber VTK <-> Dune\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\bl_\be_\bT_\by_\bp_\be\n-FileType\n-which type of VTK file to write\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bD_\ba_\bt_\ba\n-@ polyData\n-for .vtp files (PolyData)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bu_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bu_\br_\be_\bd_\bG_\br_\bi_\bd\n-@ unstructuredGrid\n-for .vtu files (UnstructuredGrid)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\bo_\bS_\bt_\br_\bi_\bn_\bg\n-std::string toString(Precision p)\n-map precision to VTK type name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:280\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bD_\ba_\bt_\ba_\bM_\bo_\bd_\be\n-DataMode\n-Whether to produce conforming or non-conforming output.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-@ conforming\n-Output conforming data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bn_\bo_\bn_\bc_\bo_\bn_\bf_\bo_\br_\bm_\bi_\bn_\bg\n-@ nonconforming\n-Output non-conforming data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\by_\bp_\be_\bS_\bi_\bz_\be\n-std::size_t typeSize(Precision p)\n-map precision to byte size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:300\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType geometryType(const Dune::GeometryType &t)\n-mapping from GeometryType to VTKGeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n-std::string getEndiannessString()\n-determine endianness of this C++ implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be\n-GeometryType\n-Type representing VTK's entity geometry types.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bl_\bi_\bn_\be\n-@ line\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\by_\br_\ba_\bm_\bi_\bd\n-@ pyramid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bh_\be_\bd_\br_\bo_\bn\n-@ polyhedron\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bq_\bu_\ba_\bd_\br_\bi_\bl_\ba_\bt_\be_\br_\ba_\bl\n-@ quadrilateral\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bv_\be_\br_\bt_\be_\bx\n-@ vertex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\be_\bt_\br_\ba_\bh_\be_\bd_\br_\bo_\bn\n-@ tetrahedron\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\br_\bi_\bs_\bm\n-@ prism\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bh_\be_\bx_\ba_\bh_\be_\bd_\br_\bo_\bn\n-@ hexahedron\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bt_\br_\bi_\ba_\bn_\bg_\bl_\be\n-@ triangle\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bp_\bo_\bl_\by_\bg_\bo_\bn\n-@ polygon\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be\n-determine a type to safely put another type into a stream\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b:_\b:_\bT_\by_\bp_\be\n-T Type\n-type to convert T to before putting it into a stream with <<\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n-unsigned Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n-int Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\by_\bp_\be_\b<_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n-std::conditional< std::numeric_limits< char >::is_signed, int, unsigned >::type\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-Descriptor struct for VTK fields.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:328\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-The number of components in the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:364\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision precision() const\n-The precision used for the output of the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-VTK data type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:333\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-@ tensor\n-tensor field (always 3x3)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bv_\be_\bc_\bt_\bo_\br\n-@ vector\n-vector-valued field (always 3D, will be padded if necessary)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bT_\by_\bp_\be_\b:_\b:_\bs_\bc_\ba_\bl_\ba_\br\n-@ scalar\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo\n-FieldInfo(std::string name, Type type, std::size_t size, Precision\n-prec=Precision::float32)\n-Create a FieldInfo instance with the given name, type and size.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:344\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bt_\by_\bp_\be\n-Type type() const\n-The type of the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:358\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bI_\bn_\bf_\bo_\b:_\b:_\bn_\ba_\bm_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh\n+ALBERTA MESH Mesh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\ba_\bb_\bs\n+void abs(const DofVectorPointer< int > &dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:328\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bR_\be_\ba_\bl\n+ALBERTA REAL Real\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+ALBERTA FE_SPACE DofSpace\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\bi_\bn\n+int min(const DofVectorPointer< int > &dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bm_\ba_\bx\n+int max(const DofVectorPointer< int > &dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:337\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA REAL_D GlobalVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn misc.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bM_\be_\bs_\bh_\bP_\bo_\bi_\bn_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meshpointer.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bg_\be_\bt\n+static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA DOF_INT_VEC DofVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n+static bool write(const DofVector *dofVector, const std::string &filename)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n+static void free(DofVector *dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bi_\bn_\bt_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n+static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n+*dofSpace)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n+static bool write(const DofVector *dofVector, const std::string &filename)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n+static void free(DofVector *dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bg_\be_\bt\n+static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n+static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n+*dofSpace)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA DOF_SCHAR_VEC DofVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n+static void free(DofVector *dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA DOF_UCHAR_VEC DofVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n+static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n+*dofSpace)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bg_\be_\bt\n+static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bc_\bh_\ba_\br_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n+static bool write(const DofVector *dofVector, const std::string &filename)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bg_\be_\bt\n+static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n+static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n+*dofSpace)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n+static void free(DofVector *dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n+static bool write(const DofVector *dofVector, const std::string &filename)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bR_\be_\ba_\bl_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA DOF_REAL_VEC DofVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n+ALBERTA DOF_REAL_D_VEC DofVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bf_\br_\be_\be\n+static void free(DofVector *dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bw_\br_\bi_\bt_\be\n+static bool write(const DofVector *dofVector, const std::string &filename)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\br_\be_\ba_\bd\n+static DofVector * read(const std::string &filename, Mesh *mesh, DofSpace\n+*dofSpace)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bG_\bl_\bo_\bb_\ba_\bl_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bg_\be_\bt\n+static DofVector * get(const DofSpace *dofSpace, const std::string &name)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br\n+DofVectorProvider::DofVector DofVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bu_\bp_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+void setupInterpolation()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n+void initialize(const Dof &value)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:270\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\ba_\bd\n+void read(const std::string &filename, const MeshPointer< dim > &meshPointer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+void create(const DofSpace *dofSpace, const std::string &name=\"\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+void release()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba\n+AdaptationData * getAdaptationData() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:277\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bu_\bp_\bR_\be_\bs_\bt_\br_\bi_\bc_\bt_\bi_\bo_\bn\n+void setupRestriction()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:299\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n+DofVectorPointer()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\be_\bt_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba\n+void setAdaptationData(AdaptationData *adaptationData)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+bool write(const std::string &filename) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n+DofVectorPointer(DofVector *dofVector)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bd_\bo_\bf_\bS_\bp_\ba_\bc_\be\n+const DofSpace * dofSpace() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs_\bA_\bd_\ba_\bp_\bt_\ba_\bt_\bi_\bo_\bn_\bD_\ba_\bt_\ba\n+static const bool supportsAdaptationData\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n std::string name() const\n-The name of the data field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:352\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:228\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bf_\bo_\br_\bE_\ba_\bc_\bh\n+void forEach(Functor &functor) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br_\b:_\b:_\bD_\bo_\bf_\bV_\be_\bc_\bt_\bo_\br_\bP_\bo_\bi_\bn_\bt_\be_\br\n+DofVectorPointer(const DofSpace *dofSpace, const std::string &name=\"\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dofvector.hh:197\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00923_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00806_source.html", "comments": ["Files 78% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: function.hh Source File\n+dune-grid: skeletonfunction.hh Source File\n \n \n \n \n \n \n \n@@ -74,273 +74,185 @@\n \n \n
    \n
    \n-
    function.hh
    \n+
    skeletonfunction.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTION_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_FUNCTION_HH
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
    \n
    8
    \n-
    9#include <string>
    \n-
    10
    \n-
    11#include <dune/common/exceptions.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#include <dune/geometry/multilineargeometry.hh>
    \n-
    17
    \n-\n-\n+
    9#include <memory>
    \n+
    10#include <string>
    \n+
    11#include <vector>
    \n+
    12
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14
    \n+\n+\n+\n+
    18
    \n+
    19namespace Dune {
    \n
    20
    \n-
    26namespace Dune
    \n-
    27{
    \n+
    23
    \n+
    29 namespace VTK {
    \n
    30
    \n-
    32 //
    \n-
    33 // Base VTKFunction
    \n-
    34 //
    \n+
    32 //
    \n+
    33 // Prototype for VTKFunktions on the skeleton
    \n+
    34 //
    \n
    35
    \n-
    40 template< class GridView >
    \n-
    \n-\n-
    42 {
    \n-
    43 public:
    \n-
    44 typedef typename GridView::ctype ctype;
    \n-
    45 constexpr static int dim = GridView::dimension;
    \n-
    46 typedef typename GridView::template Codim< 0 >::Entity Entity;
    \n-
    47
    \n-
    50 virtual int ncomps () const = 0;
    \n-
    51
    \n-
    53
    \n-
    60 virtual double evaluate (int comp, const Entity& e,
    \n-
    61 const Dune::FieldVector<ctype,dim>& xi) const = 0;
    \n-
    62
    \n-
    64 virtual std::string name () const = 0;
    \n-
    65
    \n-
    \n-
    67 virtual VTK::Precision precision() const
    \n-
    68 { return VTK::Precision::float32; }
    \n+
    36 template<typename GV, typename RF>
    \n+
    \n+\n+
    38 typedef GV GridView;
    \n+
    39 typedef typename GV::Intersection Cell;
    \n+
    40
    \n+
    41 typedef typename GV::ctype DomainField;
    \n+
    42 static const unsigned dimDomain = GV::dimension-1;
    \n+
    43 typedef FieldVector<DomainField, dimDomain> Domain;
    \n+
    44
    \n+
    45 typedef RF RangeField;
    \n+
    46 typedef std::vector<RangeField> Range;
    \n+
    47 };
    \n+
    \n+
    48
    \n+
    50 template <typename GV, typename RF>
    \n+
    \n+\n+
    52 public:
    \n+\n+
    54
    \n+
    56 unsigned dimRange() const;
    \n+
    57
    \n+
    59
    \n+
    65 void evaluate(const typename Traits::Cell& c,
    \n+
    66 const typename Traits::Domain& xl,
    \n+
    67 typename Traits::Range& result) const;
    \n+
    68 };
    \n
    \n
    69
    \n-
    71 virtual ~VTKFunction () {}
    \n-
    72 };
    \n-
    \n-
    73
    \n-
    75 //
    \n-
    76 // P0VTKFunction
    \n-
    77 //
    \n-
    78
    \n-
    80
    \n-
    94 template<typename GV, typename V>
    \n-
    \n-\n-
    96 : public VTKFunction< GV >
    \n-
    97 {
    \n-
    99 typedef VTKFunction< GV > Base;
    \n-\n-
    102
    \n-
    104 const V& v;
    \n-
    106 std::string s;
    \n-
    108 int ncomps_;
    \n-
    111 int mycomp_;
    \n-
    113 VTK::Precision prec_;
    \n-
    115 Mapper mapper;
    \n-
    116
    \n-
    117 public:
    \n-
    118 typedef typename Base::Entity Entity;
    \n-
    119 typedef typename Base::ctype ctype;
    \n-
    120 using Base::dim;
    \n-
    121
    \n-
    \n-
    123 int ncomps () const override
    \n-
    124 {
    \n-
    125 return 1;
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    \n-
    129 double evaluate (int, const Entity& e,
    \n-
    130 const Dune::FieldVector<ctype,dim>&) const override
    \n-
    131 {
    \n-
    132 return v[mapper.index(e)*ncomps_+mycomp_];
    \n-
    133 }
    \n-
    \n-
    134
    \n-
    \n-
    136 std::string name () const override
    \n-
    137 {
    \n-
    138 return s;
    \n-
    139 }
    \n-
    \n-
    140
    \n-
    \n-
    142 VTK::Precision precision() const override
    \n-
    143 {
    \n-
    144 return prec_;
    \n-
    145 }
    \n-
    \n-
    146
    \n-
    148
    \n-
    \n-
    165 P0VTKFunction(const GV &gv, const V &v_, const std::string &s_,
    \n-
    166 int ncomps=1, int mycomp=0, VTK::Precision prec = VTK::Precision::float32)
    \n-
    167 : v( v_ ),
    \n-
    168 s( s_ ),
    \n-
    169 ncomps_(ncomps),
    \n-
    170 mycomp_(mycomp),
    \n-
    171 prec_(prec),
    \n-
    172 mapper( gv, mcmgElementLayout() )
    \n-
    173 {
    \n-
    174 if (v.size()!=(unsigned int)(mapper.size()*ncomps_))
    \n-
    175 DUNE_THROW(IOError, "P0VTKFunction: size mismatch");
    \n-
    176 }
    \n-
    \n-
    177
    \n-
    179 virtual ~P0VTKFunction() {}
    \n-
    180 };
    \n-
    \n-
    181
    \n-
    183 //
    \n-
    184 // P1VTKFunction
    \n-
    185 //
    \n-
    186
    \n-
    188
    \n-
    202 template<typename GV, typename V>
    \n-
    \n-\n-
    204 : public VTKFunction< GV >
    \n-
    205 {
    \n-
    207 typedef VTKFunction< GV > Base;
    \n-\n-
    210
    \n-
    212 const V& v;
    \n-
    214 std::string s;
    \n-
    216 int ncomps_;
    \n-
    219 int mycomp_;
    \n-
    221 VTK::Precision prec_;
    \n-
    223 Mapper mapper;
    \n-
    224
    \n-
    225 public:
    \n-
    226 typedef typename Base::Entity Entity;
    \n-
    227 typedef typename Base::ctype ctype;
    \n-
    228 using Base::dim;
    \n-
    229
    \n-
    \n-
    231 int ncomps () const override
    \n-
    232 {
    \n-
    233 return 1;
    \n-
    234 }
    \n-
    \n-
    235
    \n-
    \n-
    237 double evaluate ([[maybe_unused]] int comp, const Entity& e,
    \n-
    238 const Dune::FieldVector<ctype,dim>& xi) const override
    \n-
    239 {
    \n-
    240 const unsigned int myDim = Entity::mydimension;
    \n-
    241 const unsigned int nVertices = e.subEntities(dim);
    \n-
    242
    \n-
    243 std::vector<FieldVector<ctype,1> > cornerValues(nVertices);
    \n-
    244 for (unsigned i=0; i<nVertices; ++i)
    \n-
    245 cornerValues[i] = v[mapper.subIndex(e,i,myDim)*ncomps_+mycomp_];
    \n-
    246
    \n-
    247 // (Ab)use the MultiLinearGeometry class to do multi-linear interpolation between scalars
    \n-
    248 const MultiLinearGeometry<ctype,dim,1> interpolation(e.type(), cornerValues);
    \n-
    249 return interpolation.global(xi);
    \n-
    250 }
    \n-
    \n-
    251
    \n-
    \n-
    253 std::string name () const override
    \n-
    254 {
    \n-
    255 return s;
    \n-
    256 }
    \n-
    \n-
    257
    \n-
    \n-
    259 VTK::Precision precision() const override
    \n-
    260 {
    \n-
    261 return prec_;
    \n-
    262 }
    \n-
    \n-
    263
    \n-
    265
    \n-
    \n-
    282 P1VTKFunction(const GV& gv, const V &v_, const std::string &s_,
    \n-
    283 int ncomps=1, int mycomp=0, VTK::Precision prec = VTK::Precision::float32)
    \n-
    284 : v( v_ ),
    \n-
    285 s( s_ ),
    \n-
    286 ncomps_(ncomps),
    \n-
    287 mycomp_(mycomp),
    \n-
    288 prec_(prec),
    \n-
    289 mapper( gv, mcmgVertexLayout() )
    \n-
    290 {
    \n-
    291 if (v.size()!=(unsigned int)(mapper.size()*ncomps_))
    \n-
    292 DUNE_THROW(IOError,"P1VTKFunction: size mismatch");
    \n-
    293 }
    \n-
    \n-
    294
    \n-
    296 virtual ~P1VTKFunction() {}
    \n-
    297 };
    \n-
    \n-
    298
    \n-
    300
    \n-
    301} // namespace Dune
    \n-
    302
    \n-
    303#endif // DUNE_GRID_IO_FILE_VTK_FUNCTION_HH
    \n-
    Mapper for multiple codim and multiple geometry types.
    \n-
    Common stuff for the VTKWriter.
    \n-
    static constexpr int dimension
    The dimension of the grid.
    Definition common/gridview.hh:148
    \n-
    Grid::ctype ctype
    type used for coordinates in grid
    Definition common/gridview.hh:145
    \n-
    MCMGLayout mcmgElementLayout()
    layout for elements (codim-0 entities)
    Definition mcmgmapper.hh:97
    \n-
    MCMGLayout mcmgVertexLayout()
    layout for vertices (dim-0 entities)
    Definition mcmgmapper.hh:107
    \n+
    71 //
    \n+
    72 // Class for writing SkeletonFunctions
    \n+
    73 //
    \n+
    74
    \n+
    76
    \n+
    80 template<typename Func>
    \n+
    \n+\n+
    82 : public FunctionWriterBase<typename Func::Traits::Cell>
    \n+
    83 {
    \n+
    84 typedef typename Func::Traits::RangeField RF;
    \n+
    85
    \n+
    86 std::shared_ptr<const Func> func;
    \n+
    87 std::string name_;
    \n+
    88 unsigned dimR;
    \n+
    89 VTK::Precision precision_;
    \n+
    90 std::shared_ptr<DataArrayWriter> arraywriter;
    \n+
    91
    \n+
    92 public:
    \n+
    \n+
    93 SkeletonFunctionWriter(const std::shared_ptr<const Func>& func_,
    \n+
    94 const std::string& name, unsigned dimR_,
    \n+\n+
    96 : func(func_), name_(name), dimR(dimR_), precision_(prec)
    \n+
    97 { }
    \n+
    \n+
    98
    \n+
    \n+
    99 SkeletonFunctionWriter(const std::shared_ptr<const Func>& func_,
    \n+
    100 const std::string& name,
    \n+\n+
    102 : func(func_), name_(name), dimR(func->dimRange()), precision_(prec)
    \n+
    103 { }
    \n+
    \n+
    104
    \n+
    106 virtual std::string name() const { return name_; }
    \n+
    107
    \n+
    109 virtual unsigned ncomps() const { return dimR; }
    \n+
    110
    \n+
    \n+
    112 virtual void addArray(PVTUWriter& writer) {
    \n+
    113 writer.addArray(name(), ncomps(), precision_);
    \n+
    114 }
    \n+
    \n+
    115
    \n+
    \n+
    117 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n+
    118 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n+
    119 nitems, precision_));
    \n+
    120 return !arraywriter->writeIsNoop();
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    \n+
    124 virtual void write(const typename Func::Traits::Cell& cell,
    \n+
    125 const typename Func::Traits::Domain& xl) {
    \n+
    126 typename Func::Traits::Range result;
    \n+
    127 func->evaluate(cell, xl, result);
    \n+
    128 for(unsigned d = 0; d < result.size() && d < dimR; ++d)
    \n+
    129 arraywriter->write(result[d]);
    \n+
    130 for(unsigned d = result.size(); d < dimR; ++d)
    \n+
    131 arraywriter->write(0);
    \n+
    132 }
    \n+
    \n+
    133
    \n+
    \n+
    135 virtual void endWrite() {
    \n+
    136 arraywriter.reset();
    \n+
    137 }
    \n+
    \n+
    138 };
    \n+
    \n+
    139
    \n+
    140 } // namespace VTK
    \n+
    141
    \n+
    143
    \n+
    144} // namespace Dune
    \n+
    145
    \n+
    146#endif // DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
    \n+\n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n \n-
    static constexpr int mydimension
    Dimensionality of the reference element of the entity.
    Definition common/entity.hh:112
    \n-
    A struct that collects all associated types of one implementation from the Traits class.
    Definition common/gridview.hh:118
    \n-
    Implementation class for a multiple codim and multiple geometry type mapper.
    Definition mcmgmapper.hh:129
    \n-
    size_type size() const
    Return total number of entities in the entity set managed by the mapper.
    Definition mcmgmapper.hh:204
    \n-
    Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
    Map subentity of codim 0 entity to starting index in array for dof block.
    Definition mcmgmapper.hh:185
    \n-
    Index index(const EntityType &e) const
    Map entity to starting index in array for dof block.
    Definition mcmgmapper.hh:171
    \n-
    A base class for grid functions with any return type and dimension.
    Definition function.hh:42
    \n-
    virtual double evaluate(int comp, const Entity &e, const Dune::FieldVector< ctype, dim > &xi) const =0
    evaluate single component comp in the entity e at local coordinates xi
    \n-
    GridView::ctype ctype
    Definition function.hh:44
    \n-
    GridView::template Codim< 0 >::Entity Entity
    Definition function.hh:46
    \n-
    static constexpr int dim
    Definition function.hh:45
    \n-
    virtual std::string name() const =0
    get name
    \n-
    virtual VTK::Precision precision() const
    get output precision for the field
    Definition function.hh:67
    \n-
    virtual int ncomps() const =0
    \n-
    virtual ~VTKFunction()
    virtual destructor
    Definition function.hh:71
    \n-
    Take a vector and interpret it as cell data for the VTKWriter.
    Definition function.hh:97
    \n-
    std::string name() const override
    get name
    Definition function.hh:136
    \n-
    Base::ctype ctype
    Definition function.hh:119
    \n-
    double evaluate(int, const Entity &e, const Dune::FieldVector< ctype, dim > &) const override
    evaluate
    Definition function.hh:129
    \n-
    P0VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1, int mycomp=0, VTK::Precision prec=VTK::Precision::float32)
    construct from a vector and a name
    Definition function.hh:165
    \n-
    VTK::Precision precision() const override
    get output precision for the field
    Definition function.hh:142
    \n-
    Base::Entity Entity
    Definition function.hh:118
    \n-
    virtual ~P0VTKFunction()
    destructor
    Definition function.hh:179
    \n-
    int ncomps() const override
    return number of components
    Definition function.hh:123
    \n-
    Take a vector and interpret it as point data for the VTKWriter.
    Definition function.hh:205
    \n-
    std::string name() const override
    get name
    Definition function.hh:253
    \n-
    virtual ~P1VTKFunction()
    destructor
    Definition function.hh:296
    \n-
    Base::Entity Entity
    Definition function.hh:226
    \n-
    Base::ctype ctype
    Definition function.hh:227
    \n-
    VTK::Precision precision() const override
    get output precision for the field
    Definition function.hh:259
    \n-
    double evaluate(int comp, const Entity &e, const Dune::FieldVector< ctype, dim > &xi) const override
    evaluate
    Definition function.hh:237
    \n-
    P1VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1, int mycomp=0, VTK::Precision prec=VTK::Precision::float32)
    construct from a vector and a name
    Definition function.hh:282
    \n-
    int ncomps() const override
    return number of components
    Definition function.hh:231
    \n+
    Base class for function writers.
    Definition functionwriter.hh:34
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n+
    void addArray(const std::string &name, unsigned ncomps, Precision prec)
    Add an array to the output file.
    Definition pvtuwriter.hh:207
    \n+
    Definition skeletonfunction.hh:37
    \n+
    RF RangeField
    Definition skeletonfunction.hh:45
    \n+
    FieldVector< DomainField, dimDomain > Domain
    Definition skeletonfunction.hh:43
    \n+
    GV GridView
    Definition skeletonfunction.hh:38
    \n+
    std::vector< RangeField > Range
    Definition skeletonfunction.hh:46
    \n+
    GV::Intersection Cell
    Definition skeletonfunction.hh:39
    \n+
    GV::ctype DomainField
    Definition skeletonfunction.hh:41
    \n+
    static const unsigned dimDomain
    Definition skeletonfunction.hh:42
    \n+
    A prototype for VTKFunctions on the skeleton.
    Definition skeletonfunction.hh:51
    \n+
    unsigned dimRange() const
    get dimension of the Range
    \n+
    SkeletonFunctionTraits< GV, RF > Traits
    Definition skeletonfunction.hh:53
    \n+
    void evaluate(const typename Traits::Cell &c, const typename Traits::Domain &xl, typename Traits::Range &result) const
    evaluate at local point xl in Cell c, store in result
    \n+
    function writer for skeleton functions
    Definition skeletonfunction.hh:83
    \n+
    virtual std::string name() const
    return name
    Definition skeletonfunction.hh:106
    \n+
    SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::string &name, VTK::Precision prec=VTK::Precision::float32)
    Definition skeletonfunction.hh:99
    \n+
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition skeletonfunction.hh:112
    \n+
    virtual void write(const typename Func::Traits::Cell &cell, const typename Func::Traits::Domain &xl)
    write at the given position
    Definition skeletonfunction.hh:124
    \n+
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition skeletonfunction.hh:117
    \n+
    SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::string &name, unsigned dimR_, VTK::Precision prec=VTK::Precision::float32)
    Definition skeletonfunction.hh:93
    \n+
    virtual void endWrite()
    signal end of writing
    Definition skeletonfunction.hh:135
    \n+
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition skeletonfunction.hh:109
    \n+
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n+
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,352 +3,232 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bv_\bt_\bk\n-function.hh\n+skeletonfunction.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_FUNCTION_HH\n-7#define DUNE_GRID_IO_FILE_VTK_FUNCTION_HH\n+6#ifndef DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH\n+7#define DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH\n 8\n-9#include \n-10\n-11#include \n-12#include \n-13\n-14#include \n-15#include \n-16#include \n-17\n-18#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+9#include \n+10#include \n+11#include \n+12\n+13#include \n+14\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n+18\n+19namespace _\bD_\bu_\bn_\be {\n 20\n-26namespace _\bD_\bu_\bn_\be\n-27{\n+23\n+29 namespace VTK {\n 30\n 32 //\n-33 // Base VTKFunction\n+33 // Prototype for VTKFunktions on the skeleton\n 34 //\n 35\n-40 template< class GridView >\n-_\b4_\b1 class _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-42 {\n-43 public:\n-_\b4_\b4 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-_\b4_\b5 constexpr static int _\bd_\bi_\bm = _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-_\b4_\b6 typedef typename _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bt_\be_\bm_\bp_\bl_\ba_\bt_\be Codim< 0 >::Entity _\bE_\bn_\bt_\bi_\bt_\by;\n-47\n-_\b5_\b0 virtual int _\bn_\bc_\bo_\bm_\bp_\bs () const = 0;\n-51\n-53\n-_\b6_\b0 virtual double _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be (int comp, const _\bE_\bn_\bt_\bi_\bt_\by& e,\n-61 const Dune::FieldVector& xi) const = 0;\n-62\n-_\b6_\b4 virtual std::string _\bn_\ba_\bm_\be () const = 0;\n-65\n-_\b6_\b7 virtual _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const\n-68 { return _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2; }\n+36 template\n+_\b3_\b7 struct _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs {\n+_\b3_\b8 typedef GV _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n+_\b3_\b9 typedef typename GV::Intersection _\bC_\be_\bl_\bl;\n+40\n+_\b4_\b1 typedef typename GV::ctype _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n+_\b4_\b2 static const unsigned _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = GV::dimension-1;\n+_\b4_\b3 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn;\n+44\n+_\b4_\b5 typedef RF _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b4_\b6 typedef std::vector _\bR_\ba_\bn_\bg_\be;\n+47 };\n+48\n+50 template \n+_\b5_\b1 class _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be {\n+52 public:\n+_\b5_\b3 typedef _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bG_\bV_\b,_\b _\bR_\bF_\b> _\bT_\br_\ba_\bi_\bt_\bs;\n+54\n+_\b5_\b6 unsigned _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be() const;\n+57\n+59\n+_\b6_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\be_\bl_\bl& c,\n+66 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn& xl,\n+67 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be& result) const;\n+68 };\n 69\n-_\b7_\b1 virtual _\b~_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn () {}\n-72 };\n-73\n-75 //\n-76 // P0VTKFunction\n-77 //\n-78\n-80\n-94 template\n-_\b9_\b5 class _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-96 : public _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< GV >\n-97 {\n-99 typedef _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b> _\bB_\ba_\bs_\be;\n-101 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\bV_\b> _\bM_\ba_\bp_\bp_\be_\br;\n-102\n-104 const V& v;\n-106 std::string s;\n-108 int ncomps_;\n-111 int mycomp_;\n-113 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_;\n-115 _\bM_\ba_\bp_\bp_\be_\br mapper;\n-116\n-117 public:\n-_\b1_\b1_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b1_\b1_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-120 using _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm;\n-121\n-_\b1_\b2_\b3 int _\bn_\bc_\bo_\bm_\bp_\bs () const override\n-124 {\n-125 return 1;\n-126 }\n-127\n-_\b1_\b2_\b9 double _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be (int, const _\bE_\bn_\bt_\bi_\bt_\by& e,\n-130 const Dune::FieldVector&) const override\n-131 {\n-132 return v[mapper._\bi_\bn_\bd_\be_\bx(e)*ncomps_+mycomp_];\n-133 }\n-134\n-_\b1_\b3_\b6 std::string _\bn_\ba_\bm_\be () const override\n-137 {\n-138 return s;\n-139 }\n-140\n-_\b1_\b4_\b2 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const override\n-143 {\n-144 return prec_;\n-145 }\n-146\n-148\n-_\b1_\b6_\b5 _\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const GV &gv, const V &v_, const std::string &s_,\n-166 int _\bn_\bc_\bo_\bm_\bp_\bs=1, int mycomp=0, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-167 : v( v_ ),\n-168 s( s_ ),\n-169 ncomps_(_\bn_\bc_\bo_\bm_\bp_\bs),\n-170 mycomp_(mycomp),\n-171 prec_(prec),\n-172 mapper( gv, _\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt() )\n-173 {\n-174 if (v.size()!=(unsigned int)(mapper._\bs_\bi_\bz_\be()*ncomps_))\n-175 DUNE_THROW(IOError, \"P0VTKFunction: size mismatch\");\n-176 }\n-177\n-_\b1_\b7_\b9 virtual _\b~_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn() {}\n-180 };\n-181\n-183 //\n-184 // P1VTKFunction\n-185 //\n-186\n-188\n-202 template\n-_\b2_\b0_\b3 class _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-204 : public _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn< GV >\n-205 {\n-207 typedef _\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b<_\b _\bG_\bV_\b _\b> _\bB_\ba_\bs_\be;\n-209 typedef _\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b<_\bG_\bV_\b> _\bM_\ba_\bp_\bp_\be_\br;\n-210\n-212 const V& v;\n-214 std::string s;\n-216 int ncomps_;\n-219 int mycomp_;\n-221 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec_;\n-223 _\bM_\ba_\bp_\bp_\be_\br mapper;\n-224\n-225 public:\n-_\b2_\b2_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n-_\b2_\b2_\b7 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bt_\by_\bp_\be _\bc_\bt_\by_\bp_\be;\n-228 using _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm;\n-229\n-_\b2_\b3_\b1 int _\bn_\bc_\bo_\bm_\bp_\bs () const override\n-232 {\n-233 return 1;\n-234 }\n-235\n-_\b2_\b3_\b7 double _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ([[maybe_unused]] int comp, const _\bE_\bn_\bt_\bi_\bt_\by& e,\n-238 const Dune::FieldVector& xi) const override\n-239 {\n-240 const unsigned int myDim = _\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn;\n-241 const unsigned int nVertices = e.subEntities(_\bd_\bi_\bm);\n-242\n-243 std::vector > cornerValues(nVertices);\n-244 for (unsigned i=0; i interpolation(e.type(),\n-cornerValues);\n-249 return interpolation.global(xi);\n-250 }\n-251\n-_\b2_\b5_\b3 std::string _\bn_\ba_\bm_\be () const override\n-254 {\n-255 return s;\n-256 }\n-257\n-_\b2_\b5_\b9 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn() const override\n-260 {\n-261 return prec_;\n-262 }\n-263\n-265\n-_\b2_\b8_\b2 _\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const GV& gv, const V &v_, const std::string &s_,\n-283 int _\bn_\bc_\bo_\bm_\bp_\bs=1, int mycomp=0, _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-284 : v( v_ ),\n-285 s( s_ ),\n-286 ncomps_(_\bn_\bc_\bo_\bm_\bp_\bs),\n-287 mycomp_(mycomp),\n-288 prec_(prec),\n-289 mapper( gv, _\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt() )\n-290 {\n-291 if (v.size()!=(unsigned int)(mapper._\bs_\bi_\bz_\be()*ncomps_))\n-292 DUNE_THROW(IOError,\"P1VTKFunction: size mismatch\");\n-293 }\n-294\n-_\b2_\b9_\b6 virtual _\b~_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn() {}\n-297 };\n-298\n-300\n-301} // namespace Dune\n-302\n-303#endif // DUNE_GRID_IO_FILE_VTK_FUNCTION_HH\n-_\bm_\bc_\bm_\bg_\bm_\ba_\bp_\bp_\be_\br_\b._\bh_\bh\n-Mapper for multiple codim and multiple geometry types.\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-The dimension of the grid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Grid::ctype ctype\n-type used for coordinates in grid\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bE_\bl_\be_\bm_\be_\bn_\bt_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgElementLayout()\n-layout for elements (codim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bm_\bc_\bm_\bg_\bV_\be_\br_\bt_\be_\bx_\bL_\ba_\by_\bo_\bu_\bt\n-MCMGLayout mcmgVertexLayout()\n-layout for vertices (dim-0 entities)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:107\n+71 //\n+72 // Class for writing SkeletonFunctions\n+73 //\n+74\n+76\n+80 template\n+_\b8_\b1 class _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+82 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+83 {\n+84 typedef typename Func::Traits::RangeField RF;\n+85\n+86 std::shared_ptr func;\n+87 std::string name_;\n+88 unsigned dimR;\n+89 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn precision_;\n+90 std::shared_ptr arraywriter;\n+91\n+92 public:\n+_\b9_\b3 _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br(const std::shared_ptr& func_,\n+94 const std::string& _\bn_\ba_\bm_\be, unsigned dimR_,\n+95 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+96 : func(func_), name_(_\bn_\ba_\bm_\be), dimR(dimR_), precision_(prec)\n+97 { }\n+98\n+_\b9_\b9 _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br(const std::shared_ptr& func_,\n+100 const std::string& _\bn_\ba_\bm_\be,\n+101 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n+102 : func(func_), name_(_\bn_\ba_\bm_\be), dimR(func->dimRange()), precision_(prec)\n+103 { }\n+104\n+_\b1_\b0_\b6 virtual std::string _\bn_\ba_\bm_\be() const { return name_; }\n+107\n+_\b1_\b0_\b9 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return dimR; }\n+110\n+_\b1_\b1_\b2 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n+113 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), precision_);\n+114 }\n+115\n+_\b1_\b1_\b7 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n+118 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n+119 nitems, precision_));\n+120 return !arraywriter->writeIsNoop();\n+121 }\n+122\n+_\b1_\b2_\b4 virtual void _\bw_\br_\bi_\bt_\be(const typename Func::Traits::Cell& cell,\n+125 const typename Func::Traits::Domain& xl) {\n+126 typename Func::Traits::Range result;\n+127 func->evaluate(cell, xl, result);\n+128 for(unsigned d = 0; d < result.size() && d < dimR; ++d)\n+129 arraywriter->write(result[d]);\n+130 for(unsigned d = result.size(); d < dimR; ++d)\n+131 arraywriter->write(0);\n+132 }\n+133\n+_\b1_\b3_\b5 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n+136 arraywriter.reset();\n+137 }\n+138 };\n+139\n+140 } // namespace VTK\n+141\n+143\n+144} // namespace Dune\n+145\n+146#endif // DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH\n+_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n Precision\n which precision to use when writing out data to vtk files\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n @ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int mydimension\n-Dimensionality of the reference element of the entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/entity.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b:_\b:_\bC_\bo_\bd_\bi_\bm\n-A struct that collects all associated types of one implementation from the\n-Traits class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/gridview.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br\n-Implementation class for a multiple codim and multiple geometry type mapper.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size() const\n-Return total number of entities in the entity set managed by the mapper.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:204\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bs_\bu_\bb_\bI_\bn_\bd_\be_\bx\n-Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i,\n-unsigned int codim) const\n-Map subentity of codim 0 entity to starting index in array for dof block.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bC_\bo_\bd_\bi_\bm_\bM_\bu_\bl_\bt_\bi_\bp_\bl_\be_\bG_\be_\bo_\bm_\bT_\by_\bp_\be_\bM_\ba_\bp_\bp_\be_\br_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-Index index(const EntityType &e) const\n-Map entity to starting index in array for dof block.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mcmgmapper.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-A base class for grid functions with any return type and dimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-virtual double evaluate(int comp, const Entity &e, const Dune::FieldVector<\n-ctype, dim > &xi) const =0\n-evaluate single component comp in the entity e at local coordinates xi\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n-GridView::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-GridView::template Codim< 0 >::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm\n-static constexpr int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const =0\n-get name\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-virtual VTK::Precision precision() const\n-get output precision for the field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual int ncomps() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-virtual ~VTKFunction()\n-virtual destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Take a vector and interpret it as cell data for the VTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n-std::string name() const override\n-get name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Base::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-double evaluate(int, const Entity &e, const Dune::FieldVector< ctype, dim > &)\n-const override\n-evaluate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-P0VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1,\n-int mycomp=0, VTK::Precision prec=VTK::Precision::float32)\n-construct from a vector and a name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-VTK::Precision precision() const override\n-get output precision for the field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Base::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-virtual ~P0VTKFunction()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-int ncomps() const override\n-return number of components\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-Take a vector and interpret it as point data for the VTKWriter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\ba_\bm_\be\n-std::string name() const override\n-get name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-virtual ~P1VTKFunction()\n-destructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:296\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n-Base::Entity Entity\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bc_\bt_\by_\bp_\be\n-Base::ctype ctype\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:227\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-VTK::Precision precision() const override\n-get output precision for the field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:259\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-double evaluate(int comp, const Entity &e, const Dune::FieldVector< ctype, dim\n-> &xi) const override\n-evaluate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:237\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-P1VTKFunction(const GV &gv, const V &v_, const std::string &s_, int ncomps=1,\n-int mycomp=0, VTK::Precision prec=VTK::Precision::float32)\n-construct from a vector and a name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:282\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-int ncomps() const override\n-return number of components\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n+Base class for function writers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+void addArray(const std::string &name, unsigned ncomps, Precision prec)\n+Add an array to the output file.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 skeletonfunction.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n+FieldVector< DomainField, dimDomain > Domain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n+GV GridView\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n+std::vector< RangeField > Range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\be_\bl_\bl\n+GV::Intersection Cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n+GV::ctype DomainField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n+static const unsigned dimDomain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+A prototype for VTKFunctions on the skeleton.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+unsigned dimRange() const\n+get dimension of the Range\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+SkeletonFunctionTraits< GV, RF > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const typename Traits::Cell &c, const typename Traits::Domain\n+&xl, typename Traits::Range &result) const\n+evaluate at local point xl in Cell c, store in result\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+function writer for skeleton functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n+virtual std::string name() const\n+return name\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::\n+string &name, VTK::Precision prec=VTK::Precision::float32)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n+virtual void addArray(PVTUWriter &writer)\n+add this field to the given parallel writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n+virtual void write(const typename Func::Traits::Cell &cell, const typename\n+Func::Traits::Domain &xl)\n+write at the given position\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n+virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n+start writing with the given writer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n+SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::\n+string &name, unsigned dimR_, VTK::Precision prec=VTK::Precision::float32)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n+virtual void endWrite()\n+signal end of writing\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n+virtual unsigned ncomps() const\n+return number of components of the vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n+Dump a .vtu/.vtp files contents to a stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n+DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n+unsigned nitems, Precision prec)\n+acquire a DataArrayWriter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-grid-doc/doxygen/a00935_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00812_source.html", "comments": ["Files 76% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: skeletonfunction.hh Source File\n+dune-grid: pointiterator.hh Source File\n \n \n \n \n \n \n \n@@ -74,185 +74,147 @@\n \n \n
    \n
    \n-
    skeletonfunction.hh
    \n+
    pointiterator.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
    \n+
    6#ifndef DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH
    \n+
    7#define DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH
    \n
    8
    \n-
    9#include <memory>
    \n-
    10#include <string>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fvector.hh>
    \n+
    9#include <iterator>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/iteratorfacades.hh>
    \n+
    13#include <dune/common/typetraits.hh>
    \n
    14
    \n-\n-\n-\n-
    18
    \n-
    19namespace Dune {
    \n-
    20
    \n-
    23
    \n-
    29 namespace VTK {
    \n-
    30
    \n-
    32 //
    \n-
    33 // Prototype for VTKFunktions on the skeleton
    \n-
    34 //
    \n-
    35
    \n-
    36 template<typename GV, typename RF>
    \n-
    \n-\n-
    38 typedef GV GridView;
    \n-
    39 typedef typename GV::Intersection Cell;
    \n-
    40
    \n-
    41 typedef typename GV::ctype DomainField;
    \n-
    42 static const unsigned dimDomain = GV::dimension-1;
    \n-
    43 typedef FieldVector<DomainField, dimDomain> Domain;
    \n-
    44
    \n-
    45 typedef RF RangeField;
    \n-
    46 typedef std::vector<RangeField> Range;
    \n-
    47 };
    \n-
    \n-
    48
    \n-
    50 template <typename GV, typename RF>
    \n-
    \n-\n-
    52 public:
    \n-\n-
    54
    \n-
    56 unsigned dimRange() const;
    \n-
    57
    \n-
    59
    \n-
    65 void evaluate(const typename Traits::Cell& c,
    \n-
    66 const typename Traits::Domain& xl,
    \n-
    67 typename Traits::Range& result) const;
    \n-
    68 };
    \n-
    \n+\n+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    22
    \n+
    23 namespace VTK {
    \n+
    24
    \n+
    26
    \n+
    49 template<typename CellIterator, typename IS>
    \n+
    \n+\n+
    51 : public ForwardIteratorFacade
    \n+
    52 < PointIterator<CellIterator, IS>,
    \n+
    53 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n+
    54 CellIterator>::value_type>::type>,
    \n+
    55 const Corner<typename std::remove_const<typename std::iterator_traits<
    \n+
    56 CellIterator>::value_type>::type>&,
    \n+
    57 typename std::iterator_traits<CellIterator>::difference_type>
    \n+
    58 {
    \n+
    59 public:
    \n+
    60 typedef VTK::Corner<typename std::remove_const<typename std::iterator_traits<
    \n+
    61 CellIterator>::value_type>::type> Corner;
    \n+
    62
    \n+
    63 // reiterate the facades typedefs here
    \n+\n+
    65 typedef const Corner Value;
    \n+
    66 typedef Value& Reference;
    \n+
    67 typedef typename std::iterator_traits<CellIterator>::difference_type
    \n+\n
    69
    \n-
    71 //
    \n-
    72 // Class for writing SkeletonFunctions
    \n-
    73 //
    \n-
    74
    \n+
    70 static const unsigned mydim = std::iterator_traits<CellIterator>::
    \n+
    71 value_type::mydimension;
    \n+
    72
    \n+
    73 private:
    \n+
    74 typedef ForwardIteratorFacade<DerivedType, Value, Reference,
    \n+
    75 DifferenceType> Facade;
    \n
    76
    \n-
    80 template<typename Func>
    \n-
    \n-\n-
    82 : public FunctionWriterBase<typename Func::Traits::Cell>
    \n-
    83 {
    \n-
    84 typedef typename Func::Traits::RangeField RF;
    \n-
    85
    \n-
    86 std::shared_ptr<const Func> func;
    \n-
    87 std::string name_;
    \n-
    88 unsigned dimR;
    \n-
    89 VTK::Precision precision_;
    \n-
    90 std::shared_ptr<DataArrayWriter> arraywriter;
    \n-
    91
    \n-
    92 public:
    \n-
    \n-
    93 SkeletonFunctionWriter(const std::shared_ptr<const Func>& func_,
    \n-
    94 const std::string& name, unsigned dimR_,
    \n-\n-
    96 : func(func_), name_(name), dimR(dimR_), precision_(prec)
    \n-
    97 { }
    \n+\n+
    78 const IS* is;
    \n+
    79 std::vector<bool> seen;
    \n+
    80
    \n+
    81 public:
    \n+
    \n+\n+
    83 return *cornerit;
    \n+
    84 }
    \n
    \n+
    85
    \n+
    \n+
    86 bool isDereferencable() const {
    \n+
    87 return cornerit.isDereferencable();
    \n+
    88 }
    \n+
    \n+
    89
    \n+
    \n+
    90 bool equals(const DerivedType& other) const {
    \n+
    91 return cornerit == other.cornerit;
    \n+
    92 }
    \n+
    \n+
    93
    \n+
    \n+
    94 void increment() {
    \n+
    95 for(++cornerit; isDereferencable(); ++cornerit) {
    \n+
    96 typename IS::IndexType index =
    \n+
    97 is->subIndex(cornerit->cell(), cornerit->duneIndex(), mydim);
    \n
    98
    \n-
    \n-
    99 SkeletonFunctionWriter(const std::shared_ptr<const Func>& func_,
    \n-
    100 const std::string& name,
    \n-\n-
    102 : func(func_), name_(name), dimR(func->dimRange()), precision_(prec)
    \n-
    103 { }
    \n+
    99 if(!seen[index]) {
    \n+
    100 seen[index] = true;
    \n+
    101 break;
    \n+
    102 }
    \n+
    103 }
    \n+
    104 }
    \n
    \n-
    104
    \n-
    106 virtual std::string name() const { return name_; }
    \n+
    105
    \n
    107
    \n-
    109 virtual unsigned ncomps() const { return dimR; }
    \n-
    110
    \n
    \n-
    112 virtual void addArray(PVTUWriter& writer) {
    \n-
    113 writer.addArray(name(), ncomps(), precision_);
    \n-
    114 }
    \n-
    \n-
    115
    \n-
    \n-
    117 virtual bool beginWrite(VTUWriter& writer, std::size_t nitems) {
    \n-
    118 arraywriter.reset(writer.makeArrayWriter(name(), ncomps(),
    \n-
    119 nitems, precision_));
    \n-
    120 return !arraywriter->writeIsNoop();
    \n-
    121 }
    \n-
    \n-
    122
    \n-
    \n-
    124 virtual void write(const typename Func::Traits::Cell& cell,
    \n-
    125 const typename Func::Traits::Domain& xl) {
    \n-
    126 typename Func::Traits::Range result;
    \n-
    127 func->evaluate(cell, xl, result);
    \n-
    128 for(unsigned d = 0; d < result.size() && d < dimR; ++d)
    \n-
    129 arraywriter->write(result[d]);
    \n-
    130 for(unsigned d = result.size(); d < dimR; ++d)
    \n-
    131 arraywriter->write(0);
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    \n-
    135 virtual void endWrite() {
    \n-
    136 arraywriter.reset();
    \n-
    137 }
    \n-
    \n-
    138 };
    \n-
    \n-
    139
    \n-
    140 } // namespace VTK
    \n-
    141
    \n-
    143
    \n-
    144} // namespace Dune
    \n-
    145
    \n-
    146#endif // DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
    \n-\n-\n-\n+
    112 PointIterator(const CellIterator& cellit, const CellIterator& cellend,
    \n+
    113 const IS& is_)
    \n+
    114 : cornerit(cellit, cellend), is(&is_), seen(is->size(mydim), false)
    \n+
    115 { }
    \n+
    \n+
    117
    \n+
    \n+
    120 PointIterator(const CellIterator& cellend_)
    \n+
    121 : cornerit(cellend_), is(0)
    \n+
    122 { }
    \n+
    \n+
    123 };
    \n+
    \n+
    124
    \n+
    125 } // namespace VTK
    \n+
    126
    \n+
    128
    \n+
    129} // namespace Dune
    \n+
    130
    \n+
    131#endif // DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH
    \n+\n+\n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    Precision
    which precision to use when writing out data to vtk files
    Definition common.hh:271
    \n-\n-
    Base class for function writers.
    Definition functionwriter.hh:34
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition pvtuwriter.hh:62
    \n-
    void addArray(const std::string &name, unsigned ncomps, Precision prec)
    Add an array to the output file.
    Definition pvtuwriter.hh:207
    \n-
    Definition skeletonfunction.hh:37
    \n-
    RF RangeField
    Definition skeletonfunction.hh:45
    \n-
    FieldVector< DomainField, dimDomain > Domain
    Definition skeletonfunction.hh:43
    \n-
    GV GridView
    Definition skeletonfunction.hh:38
    \n-
    std::vector< RangeField > Range
    Definition skeletonfunction.hh:46
    \n-
    GV::Intersection Cell
    Definition skeletonfunction.hh:39
    \n-
    GV::ctype DomainField
    Definition skeletonfunction.hh:41
    \n-
    static const unsigned dimDomain
    Definition skeletonfunction.hh:42
    \n-
    A prototype for VTKFunctions on the skeleton.
    Definition skeletonfunction.hh:51
    \n-
    unsigned dimRange() const
    get dimension of the Range
    \n-
    SkeletonFunctionTraits< GV, RF > Traits
    Definition skeletonfunction.hh:53
    \n-
    void evaluate(const typename Traits::Cell &c, const typename Traits::Domain &xl, typename Traits::Range &result) const
    evaluate at local point xl in Cell c, store in result
    \n-
    function writer for skeleton functions
    Definition skeletonfunction.hh:83
    \n-
    virtual std::string name() const
    return name
    Definition skeletonfunction.hh:106
    \n-
    SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::string &name, VTK::Precision prec=VTK::Precision::float32)
    Definition skeletonfunction.hh:99
    \n-
    virtual void addArray(PVTUWriter &writer)
    add this field to the given parallel writer
    Definition skeletonfunction.hh:112
    \n-
    virtual void write(const typename Func::Traits::Cell &cell, const typename Func::Traits::Domain &xl)
    write at the given position
    Definition skeletonfunction.hh:124
    \n-
    virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)
    start writing with the given writer
    Definition skeletonfunction.hh:117
    \n-
    SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::string &name, unsigned dimR_, VTK::Precision prec=VTK::Precision::float32)
    Definition skeletonfunction.hh:93
    \n-
    virtual void endWrite()
    signal end of writing
    Definition skeletonfunction.hh:135
    \n-
    virtual unsigned ncomps() const
    return number of components of the vector
    Definition skeletonfunction.hh:109
    \n-
    Dump a .vtu/.vtp files contents to a stream.
    Definition vtuwriter.hh:98
    \n-
    DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
    acquire a DataArrayWriter
    Definition vtuwriter.hh:380
    \n+
    simple class representing a corner of a cell
    Definition corner.hh:25
    \n+
    iterate over the corners of some cell range
    Definition corneriterator.hh:39
    \n+
    bool isDereferencable() const
    Definition corneriterator.hh:69
    \n+
    iterate over the points of some corner range
    Definition pointiterator.hh:58
    \n+
    PointIterator(const CellIterator &cellit, const CellIterator &cellend, const IS &is_)
    construct a CornerIterator
    Definition pointiterator.hh:112
    \n+
    void increment()
    Definition pointiterator.hh:94
    \n+
    VTK::Corner< typename std::remove_const< typename std::iterator_traits< CellIterator >::value_type >::type > Corner
    Definition pointiterator.hh:61
    \n+
    Reference dereference() const
    Definition pointiterator.hh:82
    \n+
    std::iterator_traits< CellIterator >::difference_type DifferenceType
    Definition pointiterator.hh:68
    \n+
    static const unsigned mydim
    Definition pointiterator.hh:70
    \n+
    PointIterator(const CellIterator &cellend_)
    construct a CornerIterator
    Definition pointiterator.hh:120
    \n+
    bool equals(const DerivedType &other) const
    Definition pointiterator.hh:90
    \n+
    PointIterator< CellIterator, IS > DerivedType
    Definition pointiterator.hh:64
    \n+
    const Corner Value
    Definition pointiterator.hh:65
    \n+
    Value & Reference
    Definition pointiterator.hh:66
    \n+
    bool isDereferencable() const
    Definition pointiterator.hh:86
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,232 +3,167 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n * _\bi_\bo\n * _\bf_\bi_\bl_\be\n * _\bv_\bt_\bk\n-skeletonfunction.hh\n+pointiterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n 5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH\n-7#define DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH\n+6#ifndef DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH\n+7#define DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH\n 8\n-9#include \n-10#include \n-11#include \n-12\n-13#include \n+9#include \n+10#include \n+11\n+12#include \n+13#include \n 14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-18\n-19namespace _\bD_\bu_\bn_\be {\n-20\n-23\n-29 namespace VTK {\n-30\n-32 //\n-33 // Prototype for VTKFunktions on the skeleton\n-34 //\n-35\n-36 template\n-_\b3_\b7 struct _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs {\n-_\b3_\b8 typedef GV _\bG_\br_\bi_\bd_\bV_\bi_\be_\bw;\n-_\b3_\b9 typedef typename GV::Intersection _\bC_\be_\bl_\bl;\n-40\n-_\b4_\b1 typedef typename GV::ctype _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n-_\b4_\b2 static const unsigned _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = GV::dimension-1;\n-_\b4_\b3 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn;\n-44\n-_\b4_\b5 typedef RF _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b4_\b6 typedef std::vector _\bR_\ba_\bn_\bg_\be;\n-47 };\n-48\n-50 template \n-_\b5_\b1 class _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be {\n-52 public:\n-_\b5_\b3 typedef _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bG_\bV_\b,_\b _\bR_\bF_\b> _\bT_\br_\ba_\bi_\bt_\bs;\n-54\n-_\b5_\b6 unsigned _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be() const;\n-57\n-59\n-_\b6_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\be_\bl_\bl& c,\n-66 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn& xl,\n-67 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be& result) const;\n-68 };\n+15#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n+22\n+23 namespace VTK {\n+24\n+26\n+49 template\n+_\b5_\b0 class _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+51 : public ForwardIteratorFacade\n+52 < PointIterator,\n+53 const Corner::value_type>::type>,\n+55 const Corner::value_type>::type>&,\n+57 typename std::iterator_traits::difference_type>\n+58 {\n+59 public:\n+60 typedef _\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br::value_type>::type> _\bC_\bo_\br_\bn_\be_\br;\n+62\n+63 // reiterate the facades typedefs here\n+_\b6_\b4 typedef _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b,_\b _\bI_\bS_\b> _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be;\n+_\b6_\b5 typedef const _\bC_\bo_\br_\bn_\be_\br _\bV_\ba_\bl_\bu_\be;\n+_\b6_\b6 typedef _\bV_\ba_\bl_\bu_\be& _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+67 typedef typename std::iterator_traits::difference_type\n+_\b6_\b8 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be;\n 69\n-71 //\n-72 // Class for writing SkeletonFunctions\n-73 //\n-74\n+_\b7_\b0 static const unsigned _\bm_\by_\bd_\bi_\bm = std::iterator_traits::\n+71 value_type::mydimension;\n+72\n+73 private:\n+74 typedef ForwardIteratorFacade<_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be, _\bV_\ba_\bl_\bu_\be, _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be,\n+75 _\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be> Facade;\n 76\n-80 template\n-_\b8_\b1 class _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-82 : public _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-83 {\n-84 typedef typename Func::Traits::RangeField RF;\n+77 _\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bC_\be_\bl_\bl_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b> cornerit;\n+78 const IS* is;\n+79 std::vector seen;\n+80\n+81 public:\n+_\b8_\b2 _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be() const {\n+83 return *cornerit;\n+84 }\n 85\n-86 std::shared_ptr func;\n-87 std::string name_;\n-88 unsigned dimR;\n-89 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn precision_;\n-90 std::shared_ptr arraywriter;\n-91\n-92 public:\n-_\b9_\b3 _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br(const std::shared_ptr& func_,\n-94 const std::string& _\bn_\ba_\bm_\be, unsigned dimR_,\n-95 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-96 : func(func_), name_(_\bn_\ba_\bm_\be), dimR(dimR_), precision_(prec)\n-97 { }\n+_\b8_\b6 bool _\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be() const {\n+87 return cornerit._\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be();\n+88 }\n+89\n+_\b9_\b0 bool _\be_\bq_\bu_\ba_\bl_\bs(const _\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be& other) const {\n+91 return cornerit == other.cornerit;\n+92 }\n+93\n+_\b9_\b4 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt() {\n+95 for(++cornerit; _\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be(); ++cornerit) {\n+96 typename IS::IndexType index =\n+97 is->subIndex(cornerit->cell(), cornerit->duneIndex(), _\bm_\by_\bd_\bi_\bm);\n 98\n-_\b9_\b9 _\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br(const std::shared_ptr& func_,\n-100 const std::string& _\bn_\ba_\bm_\be,\n-101 _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn prec = _\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2)\n-102 : func(func_), name_(_\bn_\ba_\bm_\be), dimR(func->dimRange()), precision_(prec)\n-103 { }\n-104\n-_\b1_\b0_\b6 virtual std::string _\bn_\ba_\bm_\be() const { return name_; }\n+99 if(!seen[index]) {\n+100 seen[index] = true;\n+101 break;\n+102 }\n+103 }\n+104 }\n+105\n 107\n-_\b1_\b0_\b9 virtual unsigned _\bn_\bc_\bo_\bm_\bp_\bs() const { return dimR; }\n-110\n-_\b1_\b1_\b2 virtual void _\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer) {\n-113 writer._\ba_\bd_\bd_\bA_\br_\br_\ba_\by(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(), precision_);\n-114 }\n-115\n-_\b1_\b1_\b7 virtual bool _\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be(_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br& writer, std::size_t nitems) {\n-118 arraywriter.reset(writer._\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br(_\bn_\ba_\bm_\be(), _\bn_\bc_\bo_\bm_\bp_\bs(),\n-119 nitems, precision_));\n-120 return !arraywriter->writeIsNoop();\n-121 }\n-122\n-_\b1_\b2_\b4 virtual void _\bw_\br_\bi_\bt_\be(const typename Func::Traits::Cell& cell,\n-125 const typename Func::Traits::Domain& xl) {\n-126 typename Func::Traits::Range result;\n-127 func->evaluate(cell, xl, result);\n-128 for(unsigned d = 0; d < result.size() && d < dimR; ++d)\n-129 arraywriter->write(result[d]);\n-130 for(unsigned d = result.size(); d < dimR; ++d)\n-131 arraywriter->write(0);\n-132 }\n-133\n-_\b1_\b3_\b5 virtual void _\be_\bn_\bd_\bW_\br_\bi_\bt_\be() {\n-136 arraywriter.reset();\n-137 }\n-138 };\n-139\n-140 } // namespace VTK\n-141\n-143\n-144} // namespace Dune\n-145\n-146#endif // DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH\n-_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-_\bp_\bv_\bt_\bu_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n+_\b1_\b1_\b2 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellit, const CellIterator& cellend,\n+113 const IS& is_)\n+114 : cornerit(cellit, cellend), is(&is_), seen(is->size(_\bm_\by_\bd_\bi_\bm), false)\n+115 { }\n+117\n+_\b1_\b2_\b0 _\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br(const CellIterator& cellend_)\n+121 : cornerit(cellend_), is(0)\n+122 { }\n+123 };\n+124\n+125 } // namespace VTK\n+126\n+128\n+129} // namespace Dune\n+130\n+131#endif // DUNE_GRID_IO_FILE_VTK_POINTITERATOR_HH\n+_\bc_\bo_\br_\bn_\be_\br_\b._\bh_\bh\n+_\bc_\bo_\br_\bn_\be_\br_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-Precision\n-which precision to use when writing out data to vtk files\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b:_\b:_\bf_\bl_\bo_\ba_\bt_\b3_\b2\n-@ float32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-Base class for function writers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn functionwriter.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-void addArray(const std::string &name, unsigned ncomps, Precision prec)\n-Add an array to the output file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pvtuwriter.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\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 skeletonfunction.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn\n-FieldVector< DomainField, dimDomain > Domain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw\n-GV GridView\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n-std::vector< RangeField > Range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\be_\bl_\bl\n-GV::Intersection Cell\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n-GV::ctype DomainField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n-static const unsigned dimDomain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-A prototype for VTKFunctions on the skeleton.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-unsigned dimRange() const\n-get dimension of the Range\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-SkeletonFunctionTraits< GV, RF > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const typename Traits::Cell &c, const typename Traits::Domain\n-&xl, typename Traits::Range &result) const\n-evaluate at local point xl in Cell c, store in result\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-function writer for skeleton functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\ba_\bm_\be\n-virtual std::string name() const\n-return name\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::\n-string &name, VTK::Precision prec=VTK::Precision::float32)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\ba_\bd_\bd_\bA_\br_\br_\ba_\by\n-virtual void addArray(PVTUWriter &writer)\n-add this field to the given parallel writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bw_\br_\bi_\bt_\be\n-virtual void write(const typename Func::Traits::Cell &cell, const typename\n-Func::Traits::Domain &xl)\n-write at the given position\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bb_\be_\bg_\bi_\bn_\bW_\br_\bi_\bt_\be\n-virtual bool beginWrite(VTUWriter &writer, std::size_t nitems)\n-start writing with the given writer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br\n-SkeletonFunctionWriter(const std::shared_ptr< const Func > &func_, const std::\n-string &name, unsigned dimR_, VTK::Precision prec=VTK::Precision::float32)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\be_\bn_\bd_\bW_\br_\bi_\bt_\be\n-virtual void endWrite()\n-signal end of writing\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bS_\bk_\be_\bl_\be_\bt_\bo_\bn_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bn_\bc_\bo_\bm_\bp_\bs\n-virtual unsigned ncomps() const\n-return number of components of the vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn skeletonfunction.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br\n-Dump a .vtu/.vtp files contents to a stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bV_\bT_\bU_\bW_\br_\bi_\bt_\be_\br_\b:_\b:_\bm_\ba_\bk_\be_\bA_\br_\br_\ba_\by_\bW_\br_\bi_\bt_\be_\br\n-DataArrayWriter * makeArrayWriter(const std::string &name, unsigned ncomps,\n-unsigned nitems, Precision prec)\n-acquire a DataArrayWriter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtuwriter.hh:380\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+simple class representing a corner of a cell\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corner.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the corners of some cell range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bC_\bo_\br_\bn_\be_\br_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be\n+bool isDereferencable() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn corneriterator.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+iterate over the points of some corner range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+PointIterator(const CellIterator &cellit, const CellIterator &cellend, const IS\n+&is_)\n+construct a CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\br_\bn_\be_\br\n+VTK::Corner< typename std::remove_const< typename std::iterator_traits<\n+CellIterator >::value_type >::type > Corner\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Reference dereference() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bi_\bf_\bf_\be_\br_\be_\bn_\bc_\be_\bT_\by_\bp_\be\n+std::iterator_traits< CellIterator >::difference_type DifferenceType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bm_\by_\bd_\bi_\bm\n+static const unsigned mydim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+PointIterator(const CellIterator &cellend_)\n+construct a CornerIterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\be_\bq_\bu_\ba_\bl_\bs\n+bool equals(const DerivedType &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\be_\bd_\bT_\by_\bp_\be\n+PointIterator< CellIterator, IS > DerivedType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bV_\ba_\bl_\bu_\be\n+const Corner Value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+Value & Reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bD_\be_\br_\be_\bf_\be_\br_\be_\bn_\bc_\ba_\bb_\bl_\be\n+bool isDereferencable() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pointiterator.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-grid-doc/doxygen/a00938_source.html", "source2": "./usr/share/doc/libdune-grid-doc/doxygen/a00638_source.html", "comments": ["Files 76% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-grid: vtksequencewriterbase.hh Source File\n+dune-grid: leafiterator.hh Source File\n \n \n \n \n \n \n \n@@ -70,209 +70,150 @@\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n-
    vtksequencewriterbase.hh
    \n+
    leafiterator.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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    4// vi: set et ts=4 sw=2 sts=2:
    \n-
    5
    \n-
    6#ifndef DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH
    \n-
    7#define DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH
    \n-
    8
    \n-
    9#include <vector>
    \n-
    10#include <iostream>
    \n-
    11#include <sstream>
    \n-
    12#include <fstream>
    \n-
    13#include <iomanip>
    \n-
    14#include <memory>
    \n-
    15
    \n-\n-
    17#include <dune/common/path.hh>
    \n-
    18
    \n-\n-
    20
    \n-
    21namespace Dune {
    \n-
    22
    \n-
    32 template<class GridView>
    \n-
    \n-\n-
    34 {
    \n-
    35 std::shared_ptr<VTKWriter<GridView> > vtkWriter_;
    \n-
    36 std::vector<double> timesteps_;
    \n-
    37 std::string name_,path_,extendpath_;
    \n-
    38 int rank_;
    \n-
    39 int size_;
    \n-
    40 public:
    \n+
    5#ifndef DUNE_ALBERTA_LEAFITERATOR_HH
    \n+
    6#define DUNE_ALBERTA_LEAFITERATOR_HH
    \n+
    7
    \n+\n+
    9
    \n+\n+
    11
    \n+
    12#if HAVE_ALBERTA
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    17 // AlbertaGridLeafIterator
    \n+
    18 // -----------------------
    \n+
    19
    \n+
    20 template< int codim, PartitionIteratorType pitype, class GridImp >
    \n+
    \n+\n+
    22 : public AlbertaGridTreeIterator< codim, GridImp, true >
    \n+
    23 {
    \n+\n+\n+
    26
    \n+
    27 public:
    \n+
    28 typedef typename Base::Entity Entity;
    \n+\n+
    30
    \n+
    \n+\n+
    32 {}
    \n+
    \n+
    33
    \n+
    \n+
    35 AlbertaGridLeafIterator ( const GridImp &grid, int level )
    \n+
    36 : Base( grid, level )
    \n+
    37 {}
    \n+
    \n+
    38
    \n+
    \n+
    40 AlbertaGridLeafIterator ( const GridImp &grid,
    \n+
    41 const MarkerVector *vec,
    \n+
    42 int level )
    \n+
    43 : Base( grid, vec, level )
    \n+
    44 {}
    \n+
    \n+
    45
    \n
    \n-\n-
    48 const std::string& name,
    \n-
    49 const std::string& path,
    \n-
    50 const std::string& extendpath,
    \n-
    51 int rank,
    \n-
    52 int size)
    \n-
    53 : vtkWriter_(vtkWriter),
    \n-
    54 name_(name), path_(path),
    \n-
    55 extendpath_(extendpath),
    \n-
    56 rank_(rank),
    \n-
    57 size_(size)
    \n-
    58 {}
    \n-
    \n-
    59
    \n-
    \n-
    63 const std::shared_ptr< VTKWriter<GridView> >& vtkWriter() const
    \n-
    64 {
    \n-
    65 return vtkWriter_;
    \n-
    66 }
    \n+
    47 void increment ()
    \n+
    48 {
    \n+\n+
    50 }
    \n+
    \n+
    51 };
    \n+
    \n+
    52
    \n+
    53
    \n+
    54 template< int codim, class GridImp >
    \n+
    \n+\n+
    56 : public AlbertaGridTreeIterator< codim, GridImp, true >
    \n+
    57 {
    \n+\n+\n+
    60
    \n+
    61 public:
    \n+
    62 typedef typename Base::Entity Entity;
    \n+\n+
    64
    \n+
    \n+\n+
    66 {}
    \n
    \n
    67
    \n
    \n-
    69 void addCellData (const std::shared_ptr<const typename VTKWriter<GridView>::VTKFunction> &p)
    \n-
    70 {
    \n-
    71 vtkWriter_->addCellData(p);
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    79 template<class V >
    \n-
    \n-
    80 void addCellData (const V &v, const std::string &name, int ncomps=1)
    \n-
    81 {
    \n-
    82 vtkWriter_->addCellData(v, name, ncomps);
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    86 void addVertexData (const std::shared_ptr<const typename VTKWriter<GridView>::VTKFunction> &p)
    \n-
    87 {
    \n-
    88 vtkWriter_->addVertexData(p);
    \n-
    89 }
    \n-
    \n+
    69 AlbertaGridLeafIterator ( const GridImp &grid, int level )
    \n+
    70 : Base( grid, level )
    \n+
    71 {}
    \n+
    \n+
    72
    \n+
    \n+
    74 AlbertaGridLeafIterator ( const GridImp &grid,
    \n+
    75 const MarkerVector *,
    \n+
    76 int level )
    \n+
    77 : Base( grid, level )
    \n+
    78 {}
    \n+
    \n+
    79
    \n+
    \n+
    81 void increment ()
    \n+
    82 {
    \n+\n+
    84 }
    \n+
    \n+
    85 };
    \n+
    \n+
    86
    \n+
    87}
    \n+
    88
    \n+
    89#endif // #if HAVE_ALBERTA
    \n
    90
    \n-
    96 template<class V >
    \n-
    \n-
    97 void addVertexData (const V &v, const std::string &name, int ncomps=1)
    \n-
    98 {
    \n-
    99 vtkWriter_->addVertexData(v, name, ncomps);
    \n-
    100 }
    \n-
    \n-
    101
    \n-
    102
    \n-
    \n-
    108 void write (double time, VTK::OutputType type = VTK::ascii)
    \n-
    109 {
    \n-
    110 /* remember current time step */
    \n-
    111 unsigned int count = timesteps_.size();
    \n-
    112 timesteps_.push_back(time);
    \n-
    113
    \n-
    114 /* write VTK file */
    \n-
    115 if(size_==1)
    \n-
    116 vtkWriter_->write(concatPaths(path_,seqName(count)),type);
    \n-
    117 else
    \n-
    118 vtkWriter_->pwrite(seqName(count), path_,extendpath_,type);
    \n-
    119
    \n-
    120 /* write pvd file ... only on rank 0 */
    \n-
    121 if (rank_==0) {
    \n-
    122 std::ofstream pvdFile;
    \n-
    123 pvdFile.exceptions(std::ios_base::badbit | std::ios_base::failbit |
    \n-
    124 std::ios_base::eofbit);
    \n-
    125 std::string pvdname = name_ + ".pvd";
    \n-
    126 pvdFile.open(pvdname.c_str());
    \n-
    127 pvdFile << "<?xml version=\\"1.0\\"?> \\n"
    \n-
    128 << "<VTKFile type=\\"Collection\\" version=\\"0.1\\" byte_order=\\"" << VTK::getEndiannessString() << "\\"> \\n"
    \n-
    129 << "<Collection> \\n";
    \n-
    130 for (unsigned int i=0; i<=count; i++)
    \n-
    131 {
    \n-
    132 // filename
    \n-
    133 std::string piecepath;
    \n-
    134 std::string fullname;
    \n-
    135 if(size_==1) {
    \n-
    136 piecepath = path_;
    \n-
    137 fullname = vtkWriter_->getSerialPieceName(seqName(i), piecepath);
    \n-
    138 }
    \n-
    139 else {
    \n-
    140 piecepath = concatPaths(path_, extendpath_);
    \n-
    141 fullname = vtkWriter_->getParallelHeaderName(seqName(i), piecepath, size_);
    \n-
    142 }
    \n-
    143 pvdFile << "<DataSet timestep=\\"" << timesteps_[i]
    \n-
    144 << "\\" group=\\"\\" part=\\"0\\" name=\\"\\" file=\\""
    \n-
    145 << fullname << "\\"/> \\n";
    \n-
    146 }
    \n-
    147 pvdFile << "</Collection> \\n"
    \n-
    148 << "</VTKFile> \\n" << std::flush;
    \n-
    149 pvdFile.close();
    \n-
    150 }
    \n-
    151 }
    \n-
    \n-
    152
    \n-
    \n-
    156 void clear()
    \n-
    157 {
    \n-
    158 vtkWriter_->clear();
    \n-
    159 }
    \n-
    \n-
    160
    \n-
    \n-
    164 const std::vector<double>& getTimeSteps() const
    \n-
    165 {
    \n-
    166 return timesteps_;
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    \n-
    174 void setTimeSteps(const std::vector<double>& timesteps)
    \n-
    175 {
    \n-
    176 timesteps_ = timesteps;
    \n-
    177 }
    \n-
    \n-
    178
    \n-
    179 private:
    \n-
    180
    \n-
    181 // create sequence name
    \n-
    182 std::string seqName(unsigned int count) const
    \n-
    183 {
    \n-
    184 std::stringstream n;
    \n-
    185 n.fill('0');
    \n-
    186 n << name_ << "-" << std::setw(5) << count;
    \n-
    187 return n.str();
    \n-
    188 }
    \n-
    189 };
    \n-
    \n-
    190
    \n-
    191} // end namespace Dune
    \n-
    192
    \n-
    193#endif
    \n-
    Common stuff for the VTKWriter.
    \n-
    Provides file i/o for the visualization toolkit.
    \n+
    91#endif // #ifndef DUNE_ALBERTA_LEAFITERATOR_HH
    \n+\n+\n+
    @ Ghost_Partition
    only ghost entities
    Definition gridenums.hh:142
    \n
    Include standard header files.
    Definition agrid.hh:60
    \n-
    OutputType
    How the bulk data should be stored in the file.
    Definition common.hh:43
    \n-
    @ ascii
    Output to the file is in ascii.
    Definition common.hh:45
    \n-
    std::string getEndiannessString()
    determine endianness of this C++ implementation
    Definition common.hh:232
    \n-
    A base class for grid functions with any return type and dimension.
    Definition function.hh:42
    \n-
    Base class to write pvd-files which contains a list of all collected vtk-files.
    Definition vtksequencewriterbase.hh:34
    \n-
    void addVertexData(const V &v, const std::string &name, int ncomps=1)
    Adds a field of vertex data to the VTK file.
    Definition vtksequencewriterbase.hh:97
    \n-
    const std::vector< double > & getTimeSteps() const
    Retrieve the current list of time steps.
    Definition vtksequencewriterbase.hh:164
    \n-
    const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const
    Definition vtksequencewriterbase.hh:63
    \n-
    void write(double time, VTK::OutputType type=VTK::ascii)
    Writes VTK data for the given time,.
    Definition vtksequencewriterbase.hh:108
    \n-
    void addVertexData(const std::shared_ptr< const typename VTKWriter< GridView >::VTKFunction > &p)
    Adds a field of vertex data to the VTK file.
    Definition vtksequencewriterbase.hh:86
    \n-
    void addCellData(const V &v, const std::string &name, int ncomps=1)
    Adds a field of cell data to the VTK file.
    Definition vtksequencewriterbase.hh:80
    \n-
    VTKSequenceWriterBase(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const std::string &name, const std::string &path, const std::string &extendpath, int rank, int size)
    Set up the VTKSequenceWriterBase class.
    Definition vtksequencewriterbase.hh:47
    \n-
    void addCellData(const std::shared_ptr< const typename VTKWriter< GridView >::VTKFunction > &p)
    Adds a field of cell data to the VTK file.
    Definition vtksequencewriterbase.hh:69
    \n-
    void setTimeSteps(const std::vector< double > &timesteps)
    Set the current list of time steps.
    Definition vtksequencewriterbase.hh:174
    \n-
    void clear()
    Clears all VTK data added to the VTK writer.
    Definition vtksequencewriterbase.hh:156
    \n-
    Writer for the ouput of grid functions in the vtk format.
    Definition vtkwriter.hh:95
    \n+
    Definition treeiterator.hh:189
    \n+
    GridImp::template Codim< codim >::Entity Entity
    Definition treeiterator.hh:207
    \n+
    int level() const
    ask for level of entities
    Definition treeiterator.hh:243
    \n+
    void increment()
    increment
    Definition treeiterator.hh:411
    \n+
    const GridImp & grid() const
    obtain a reference to the grid
    Definition treeiterator.hh:253
    \n+
    Definition leafiterator.hh:23
    \n+
    Base::Entity Entity
    Definition leafiterator.hh:28
    \n+
    AlbertaGridLeafIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leafiterator.hh:35
    \n+
    Base::MarkerVector MarkerVector
    Definition leafiterator.hh:29
    \n+
    AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *vec, int level)
    Constructor making begin iterator.
    Definition leafiterator.hh:40
    \n+
    AlbertaGridLeafIterator()
    Definition leafiterator.hh:31
    \n+
    void increment()
    increment the iterator
    Definition leafiterator.hh:47
    \n+\n+
    Base::Entity Entity
    Definition leafiterator.hh:62
    \n+
    void increment()
    increment the iterator
    Definition leafiterator.hh:81
    \n+
    AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *, int level)
    Constructor making begin iterator (which is the end iterator in this case)
    Definition leafiterator.hh:74
    \n+\n+
    Base::MarkerVector MarkerVector
    Definition leafiterator.hh:63
    \n+
    AlbertaGridLeafIterator(const GridImp &grid, int level)
    Constructor making end iterator.
    Definition leafiterator.hh:69
    \n+
    marker assigning subentities to one element containing them
    Definition treeiterator.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,236 +1,176 @@\n dune-grid\u00a02.9.0\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bg_\br_\bi_\bd\n- * _\bi_\bo\n- * _\bf_\bi_\bl_\be\n- * _\bv_\bt_\bk\n-vtksequencewriterbase.hh\n+ * _\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd\n+leafiterator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\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 LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 4// vi: set et ts=4 sw=2 sts=2:\n-5\n-6#ifndef DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH\n-7#define DUNE_GRID_IO_FILE_VTK_VTKSEQUENCEWRITERBASE_HH\n-8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-17#include \n-18\n-19#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bi_\bo_\b/_\bf_\bi_\bl_\be_\b/_\bv_\bt_\bk_\b/_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be {\n-22\n-32 template\n-_\b3_\b3 class _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-34 {\n-35 std::shared_ptr > vtkWriter_;\n-36 std::vector timesteps_;\n-37 std::string name_,path_,extendpath_;\n-38 int rank_;\n-39 int size_;\n-40 public:\n-_\b4_\b7 explicit _\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be( std::shared_ptr<_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br_\b<_\bG_\br_\bi_\bd_\bV_\bi_\be_\bw_\b> >\n-_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br,\n-48 const std::string& name,\n-49 const std::string& path,\n-50 const std::string& extendpath,\n-51 int rank,\n-52 int size)\n-53 : vtkWriter_(_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br),\n-54 name_(name), path_(path),\n-55 extendpath_(extendpath),\n-56 rank_(rank),\n-57 size_(size)\n-58 {}\n-59\n-_\b6_\b3 const std::shared_ptr< VTKWriter >& _\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br() const\n-64 {\n-65 return vtkWriter_;\n-66 }\n+5#ifndef DUNE_ALBERTA_LEAFITERATOR_HH\n+6#define DUNE_ALBERTA_LEAFITERATOR_HH\n+7\n+8#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bg_\br_\bi_\bd_\b/_\ba_\bl_\bb_\be_\br_\bt_\ba_\bg_\br_\bi_\bd_\b/_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+11\n+12#if HAVE_ALBERTA\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+17 // AlbertaGridLeafIterator\n+18 // -----------------------\n+19\n+20 template< int codim, PartitionIteratorType pitype, class GridImp >\n+_\b2_\b1 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+22 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, true >\n+23 {\n+24 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bp_\bi_\bt_\by_\bp_\be_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+25 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b> _\bB_\ba_\bs_\be;\n+26\n+27 public:\n+_\b2_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b2_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n+30\n+_\b3_\b1 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+32 {}\n+33\n+_\b3_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n+36 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n+37 {}\n+38\n+_\b4_\b0 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+41 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *vec,\n+42 int _\bl_\be_\bv_\be_\bl )\n+43 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, vec, _\bl_\be_\bv_\be_\bl )\n+44 {}\n+45\n+_\b4_\b7 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+48 {\n+49 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+50 }\n+51 };\n+52\n+53\n+54 template< int codim, class GridImp >\n+_\b5_\b5 class _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn, GridImp >\n+56 : public _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br< codim, GridImp, true >\n+57 {\n+58 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b> _\bT_\bh_\bi_\bs;\n+59 typedef _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b> _\bB_\ba_\bs_\be;\n+60\n+61 public:\n+_\b6_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by _\bE_\bn_\bt_\bi_\bt_\by;\n+_\b6_\b3 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br;\n+64\n+_\b6_\b5 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ()\n+66 {}\n 67\n-_\b6_\b9 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const std::shared_ptr_\b:_\b:\n-_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn> &p)\n-70 {\n-71 vtkWriter_->addCellData(p);\n-72 }\n-73\n-79 template\n-_\b8_\b0 void _\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba (const V &v, const std::string &name, int ncomps=1)\n-81 {\n-82 vtkWriter_->addCellData(v, name, ncomps);\n-83 }\n-84\n-_\b8_\b6 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const std::shared_ptr_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn> &p)\n-87 {\n-88 vtkWriter_->addVertexData(p);\n-89 }\n+_\b6_\b9 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd, int _\bl_\be_\bv_\be_\bl )\n+70 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n+71 {}\n+72\n+_\b7_\b4 _\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( const GridImp &_\bg_\br_\bi_\bd,\n+75 const _\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br *,\n+76 int _\bl_\be_\bv_\be_\bl )\n+77 : _\bB_\ba_\bs_\be( _\bg_\br_\bi_\bd, _\bl_\be_\bv_\be_\bl )\n+78 {}\n+79\n+_\b8_\b1 void _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt ()\n+82 {\n+83 _\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt();\n+84 }\n+85 };\n+86\n+87}\n+88\n+89#endif // #if HAVE_ALBERTA\n 90\n-96 template\n-_\b9_\b7 void _\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba (const V &v, const std::string &name, int ncomps=1)\n-98 {\n-99 vtkWriter_->addVertexData(v, name, ncomps);\n-100 }\n-101\n-102\n-_\b1_\b0_\b8 void _\bw_\br_\bi_\bt_\be (double time, _\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be type = _\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi)\n-109 {\n-110 /* remember current time step */\n-111 unsigned int count = timesteps_.size();\n-112 timesteps_.push_back(time);\n-113\n-114 /* write VTK file */\n-115 if(size_==1)\n-116 vtkWriter_->write(concatPaths(path_,seqName(count)),type);\n-117 else\n-118 vtkWriter_->pwrite(seqName(count), path_,extendpath_,type);\n-119\n-120 /* write pvd file ... only on rank 0 */\n-121 if (rank_==0) {\n-122 std::ofstream pvdFile;\n-123 pvdFile.exceptions(std::ios_base::badbit | std::ios_base::failbit |\n-124 std::ios_base::eofbit);\n-125 std::string pvdname = name_ + \".pvd\";\n-126 pvdFile.open(pvdname.c_str());\n-127 pvdFile << \" \\n\"\n-128 << \" \\n\"\n-129 << \" \\n\";\n-130 for (unsigned int i=0; i<=count; i++)\n-131 {\n-132 // filename\n-133 std::string piecepath;\n-134 std::string fullname;\n-135 if(size_==1) {\n-136 piecepath = path_;\n-137 fullname = vtkWriter_->getSerialPieceName(seqName(i), piecepath);\n-138 }\n-139 else {\n-140 piecepath = concatPaths(path_, extendpath_);\n-141 fullname = vtkWriter_->getParallelHeaderName(seqName(i), piecepath, size_);\n-142 }\n-143 pvdFile << \" \\n\";\n-146 }\n-147 pvdFile << \" \\n\"\n-148 << \" \\n\" << std::flush;\n-149 pvdFile.close();\n-150 }\n-151 }\n-152\n-_\b1_\b5_\b6 void _\bc_\bl_\be_\ba_\br()\n-157 {\n-158 vtkWriter_->clear();\n-159 }\n-160\n-_\b1_\b6_\b4 const std::vector& _\bg_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs() const\n-165 {\n-166 return timesteps_;\n-167 }\n-168\n-_\b1_\b7_\b4 void _\bs_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs(const std::vector& timesteps)\n-175 {\n-176 timesteps_ = timesteps;\n-177 }\n-178\n-179 private:\n-180\n-181 // create sequence name\n-182 std::string seqName(unsigned int count) const\n-183 {\n-184 std::stringstream n;\n-185 n.fill('0');\n-186 n << name_ << \"-\" << std::setw(5) << count;\n-187 return n.str();\n-188 }\n-189 };\n-190\n-191} // end namespace Dune\n-192\n-193#endif\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-Common stuff for the VTKWriter.\n-_\bv_\bt_\bk_\bw_\br_\bi_\bt_\be_\br_\b._\bh_\bh\n-Provides file i/o for the visualization toolkit.\n+91#endif // #ifndef DUNE_ALBERTA_LEAFITERATOR_HH\n+_\be_\bn_\bt_\bi_\bt_\by_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bt_\br_\be_\be_\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn\n+@ Ghost_Partition\n+only ghost entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn gridenums.hh:142\n _\bD_\bu_\bn_\be\n Include standard header files.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn agrid.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bO_\bu_\bt_\bp_\bu_\bt_\bT_\by_\bp_\be\n-OutputType\n-How the bulk data should be stored in the file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\ba_\bs_\bc_\bi_\bi\n-@ ascii\n-Output to the file is in ascii.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\b:_\b:_\bg_\be_\bt_\bE_\bn_\bd_\bi_\ba_\bn_\bn_\be_\bs_\bs_\bS_\bt_\br_\bi_\bn_\bg\n-std::string getEndiannessString()\n-determine endianness of this C++ implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-A base class for grid functions with any return type and dimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn function.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-Base class to write pvd-files which contains a list of all collected vtk-files.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const V &v, const std::string &name, int ncomps=1)\n-Adds a field of vertex data to the VTK file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bg_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs\n-const std::vector< double > & getTimeSteps() const\n-Retrieve the current list of time steps.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bv_\bt_\bk_\bW_\br_\bi_\bt_\be_\br\n-const std::shared_ptr< VTKWriter< GridView > > & vtkWriter() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bw_\br_\bi_\bt_\be\n-void write(double time, VTK::OutputType type=VTK::ascii)\n-Writes VTK data for the given time,.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bV_\be_\br_\bt_\be_\bx_\bD_\ba_\bt_\ba\n-void addVertexData(const std::shared_ptr< const typename VTKWriter< GridView\n->::VTKFunction > &p)\n-Adds a field of vertex data to the VTK file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const V &v, const std::string &name, int ncomps=1)\n-Adds a field of cell data to the VTK file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be\n-VTKSequenceWriterBase(std::shared_ptr< VTKWriter< GridView > > vtkWriter, const\n-std::string &name, const std::string &path, const std::string &extendpath, int\n-rank, int size)\n-Set up the VTKSequenceWriterBase class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\ba_\bd_\bd_\bC_\be_\bl_\bl_\bD_\ba_\bt_\ba\n-void addCellData(const std::shared_ptr< const typename VTKWriter< GridView >::\n-VTKFunction > &p)\n-Adds a field of cell data to the VTK file.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bs_\be_\bt_\bT_\bi_\bm_\be_\bS_\bt_\be_\bp_\bs\n-void setTimeSteps(const std::vector< double > ×teps)\n-Set the current list of time steps.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bW_\br_\bi_\bt_\be_\br_\bB_\ba_\bs_\be_\b:_\b:_\bc_\bl_\be_\ba_\br\n-void clear()\n-Clears all VTK data added to the VTK writer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtksequencewriterbase.hh:156\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bT_\bK_\bW_\br_\bi_\bt_\be_\br\n-Writer for the ouput of grid functions in the vtk format.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn vtkwriter.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+GridImp::template Codim< codim >::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bl_\be_\bv_\be_\bl\n+int level() const\n+ask for level of entities\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:411\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bT_\br_\be_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bg_\br_\bi_\bd\n+const GridImp & grid() const\n+obtain a reference to the grid\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Base::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLeafIterator(const GridImp &grid, int level)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+Base::MarkerVector MarkerVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *vec, int\n+level)\n+Constructor making begin iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLeafIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment the iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bE_\bn_\bt_\bi_\bt_\by\n+Base::Entity Entity\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt\n+void increment()\n+increment the iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLeafIterator(const GridImp &grid, const MarkerVector *, int level)\n+Constructor making begin iterator (which is the end iterator in this case)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLeafIterator()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+Base::MarkerVector MarkerVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bc_\bo_\bd_\bi_\bm_\b,_\b _\bG_\bh_\bo_\bs_\bt_\b__\bP_\ba_\br_\bt_\bi_\bt_\bi_\bo_\bn_\b,_\b _\bG_\br_\bi_\bd_\bI_\bm_\bp_\b _\b>_\b:_\b:\n+_\bA_\bl_\bb_\be_\br_\bt_\ba_\bG_\br_\bi_\bd_\bL_\be_\ba_\bf_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+AlbertaGridLeafIterator(const GridImp &grid, int level)\n+Constructor making end iterator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn leafiterator.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bA_\bl_\bb_\be_\br_\bt_\ba_\bM_\ba_\br_\bk_\be_\br_\bV_\be_\bc_\bt_\bo_\br\n+marker assigning subentities to one element containing them\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn treeiterator.hh:35\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}]}]}]}]}