~/f/dealii/RPMS.2017 ~/f/dealii ~/f/dealii RPMS.2017/deal_II-openmpi4-devel-9.5.1-0.0.x86_64.rpm RPMS/deal_II-openmpi4-devel-9.5.1-0.0.x86_64.rpm differ: byte 225, line 1 Comparing deal_II-openmpi4-devel-9.5.1-0.0.x86_64.rpm to deal_II-openmpi4-devel-9.5.1-0.0.x86_64.rpm comparing the rpm tags of deal_II-openmpi4-devel --- old-rpm-tags +++ new-rpm-tags @@ -10125 +10125 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/DEALGlossary.html c2afb605a421679a4ea841545cf2b286f52cf778e5df341083824ab0635eff1c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/DEALGlossary.html 8a49ef8a7b956cf763d9d503aaa9b36fa6026f1f0e67e66e007df420766a2939 2 @@ -10128,3 +10128,3 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/Tutorial.html 5981bc17594d634d5c998b9f9b3c307ffb0ca69ae02e2a31812b14438922439a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/_formulas.tex 9702dd3bd33ef6bccab8cd94a1ac922dd9b4c71114694b4a8de6a3cc2eabe4ae 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/_formulas_dark.tex 91cce4ff6be8910fa07745c06e3263b2389705c297b233352fee71dd08b9b5ea 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/Tutorial.html 686d7c6e24f551f4b8fff6d0a54638fbf071428874fd7c3324c1130a29cc5acb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/_formulas.tex c7fe65427ecfc7ee1966d36ea1c8059d746279efd33a0f8206afea768ab625d8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/_formulas_dark.tex f65073c8125709c360fd001c9140e61d1c0ea88742c38e53961edb3369cd03c8 2 @@ -10297 +10297 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_6_1_and_6_2.html 53db53bece7471547af09b61dc04e95a5a8f858bae382f23c4273b46971dd471 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_6_1_and_6_2.html 00a90296bfa47441d5053629d678ee0b434f3faa6a8020dea6d92373e0243364 2 @@ -10299 +10299 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_6_2_and_6_3.html 016f674fa8b87a2a1dcf1f689a328a3f94909adbd12ee7309a21ba8150748732 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_6_2_and_6_3.html 1ac612f4b09451f76edb3712b790e31563d22664065135fe5ea2c6765fc0ae47 2 @@ -10302,2 +10302,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_7_0_and_7_1.html 6e6fdf60ed3398db378bb9e9a5dc9a5ff4eefb09e61df6d5c5b3fb23d5df5895 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_7_1_and_7_2.html ac9fb69e9f967304ae73754b996a2039fee7d656cf03c8934b1a2e7a82f61b83 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_7_0_and_7_1.html 0e00db3140984cb4e7a7b716a28808c871b696d59e41a35cc9f577e88934fdf6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_7_1_and_7_2.html f9c8bfbb7ecdce8d500cb68ac61d976b0a4b0addbda86d24076487b38a0020e4 2 @@ -10307 +10307 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_8_1_and_8_2.html c9df07a9ca91cfd7509a01fc0e48d00c999c54d0065c516736fd83f2daf32780 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_8_1_and_8_2.html 1cfdcfcc7acb5832de926339d2abd9ed6185751598127571455272c450371248 2 @@ -10313 +10313 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_8_4_2_and_8_5_0.html 460621cca93c4de4c69b1022d037a99079c24288780209499998d3f111774e3c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_8_4_2_and_8_5_0.html 621ece18a816c1a5f9eb8f625aa55df9fd071d579a5bd2163a444bcf4e566b4a 2 @@ -10318 +10318 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_9_1_1_and_9_2_0.html 2d01761a43d5f6f6370db8b35e4e12799402814c32aa124c0a9edeac9bf79be1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/changes_between_9_1_1_and_9_2_0.html d119b01f39c6ed6f23e08dd0df0179e6173280ebd1a89564a57337202bd10a4e 2 @@ -10345 +10345 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAffineConstraints.html 4cb08f3b88fb7bf36e2082bf1f00a83e2e1f19f717e9bb027fd850e0fd6b190c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAffineConstraints.html 8a7756ec9070e7da12f20f034047bae68edf1c30b50c8aac6bee3f210baf36ff 2 @@ -10363 +10363 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAlgorithms_1_1ThetaTimestepping.html 04c7944e0f1adb2f7a425a6de1c6c5e08aa79ff6718ed0eedc9401e5df63f72d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAlgorithms_1_1ThetaTimestepping.html 576f3c8590db66b7951c9157b28bc152c22f7c87086a17f53d705d3b475adfde 2 @@ -10380 +10380 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAnisotropicPolynomials.html b9cf57f696cabb38fcf781c20371659b1e111d4c2d45840d0d4dff193edd48e2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAnisotropicPolynomials.html ee6bc3f8eb57ee1235ef804f1f2e9d29c734d13760373512418d39d3d48116cf 2 @@ -10417 +10417 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArpackSolver.html 199c65f6d699a1c2384ec6f3673b272e30c357430a90724ae9cebdd647972fe4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArpackSolver.html a4193a2b15e9a0012da2b0675e0e86daa26ec6218fdb103d1562ccbd9566ac71 2 @@ -10420 +10420 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArrayView.html abd04d002a9a591a420e5d26d5626b6aaf650a08d06942da6dc938074ac2fe41 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArrayView.html c4de72cee678cb9d3ee48d272a45bcf40c9f6310be3f0e4fc5e5644ca18a2c7b 2 @@ -10423 +10423 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAutoDerivativeFunction.html 868f29a981483d7a2425abc55d1a209724c3b259421b67df9a53e9f90bc4d6aa 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAutoDerivativeFunction.html 4f8671801c631714cc794d5ae33bf991b19cbc62b14b69feca4990d52bf48e2c 2 @@ -10426 +10426 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBarycentricPolynomial.html d07fce8002c5e787f0d2a8fa6532ae78c51a9b3fb25ce194c673014db37088a0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBarycentricPolynomial.html 145ec71a4c7985a829424d3e2f52b7b2b99be8f6a692b6ac382a1af33163e988 2 @@ -10433 +10433 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBaseQR.html 4b30d6425415d31be7fbda2a860dd37ed53b1670d20a728ae006c5b74e37c6ce 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBaseQR.html ce3c7b5c5ce5e4b12cc699aee1a590ea037aa63f93cfe075b03061379cd1245f 2 @@ -10439 +10439 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockIndices.html 7b4f5c7b7f016addc62e517453246685242899cdf1863164f31cb97eb4c5e612 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockIndices.html 28200009e6843167effa0d4b203bae1293164c5d36fb6cf1cd36780402c34a84 2 @@ -10445 +10445 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockLinearOperator.html d84d273d468970d1998aca93a18324c2c116c949af9bc9fe01ee4317b905366a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockLinearOperator.html da8bf0c014a01e67f480b681723923c4b7ae54dc85e70e22b4baf042a1821252 2 @@ -10450 +10450 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockMatrixBase.html 683a2aa7b8ef5beec4724ee3fa2292c138135c1dee6d729823bef64f96d78e7a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockMatrixBase.html f9a05f50c843e50e2986d7733dce5751116722b943e82a472f85dd9b96de8abd 2 @@ -10463 +10463 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockSparseMatrix.html 9293e59fe6cc7d23a4a7e5d4233d90b6fc7eee5150903c3aa4239c34f979cdc8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockSparseMatrix.html ad4699b3c60c05c508da0f3741d4cafb0683fb93c1784706517e37fb46a27902 2 @@ -10465 +10465 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockSparseMatrixEZ.html 1c4f0c1d792dc7e23d9ffd70f52a82efcb41191c84d8ac1380ef9c89257d609e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockSparseMatrixEZ.html dfa19685c4c4492248087490089064e73bcb42fe97d62ec1aec53a4afa2139d9 2 @@ -10475 +10475 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVector.html 66b49f8d156e45d7c4777ba63cb3901097c851d31c03843ce2f51606c3d5a24d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVector.html 601eddd7558e32c9423da6643e5ff87029b2a24b43ae2c759f5a02847ca51e0f 2 @@ -10477 +10477 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVectorBase.html 21e7b022c5826fde78edae3fc4c02e2e1874e03b8bdd2ac602e269986cd64082 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVectorBase.html 4c620024fb28f9503d0cfb376be6409efac825ff1e5e41ceb83bdffe248e2b00 2 @@ -10481 +10481 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBoundingBox.html 82f6a021ea0e1dd6149a18ea7763ac1acec45f2fba9bf4df967345195ac5b087 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBoundingBox.html a500431ea5864821f19c79dc1696225dba1e732aa6eed7a25df3577c92955388 2 @@ -10494 +10494 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionIC.html 4e920f51099519b0de45507edd6d2de1abc98c121df87e77af51611f0d18617b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionIC.html df36a54aba46f922edab321b52484591c460135578ddee0516fea722550de82f 2 @@ -10496 +10496 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionILU.html aa7909afac2f195ebf899beae8c3c04b3155500ac5cce357b3de92d452f4d591 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionILU.html dec1d68d22e5bd0a41211b98ee3e0c7faef72f1c12047e274d5c3527555f0762 2 @@ -10500 +10500 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1SparseMatrix.html 90964c56c903b8ea337cf87b37a9d0e5e5a744347943a392dcecdd64159ddb47 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1SparseMatrix.html 9b8b63d3564be85403bd6cf49c6d059418d187a3b5053351fb4843428be01fe2 2 @@ -10503 +10503 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCellAccessor.html 9e89028ad79233a943d09629a53fea22d096f525d319b61a0ad3ec24277f857a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCellAccessor.html 5128adcc69e4e7ae842ccf254f2733d9beb95300f5c066d4652dcfeafa486fdb 2 @@ -10513 +10513 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChartManifold.html edb0750d3d8fa4c10c733cdb8c329251e51cdf857d0dbb1e8736ac89ff79a8ad 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChartManifold.html 653cc9c6be5ff839722b0eb4e9cda3bbe74bd46c35b06ab23f37bb3562d1454b 2 @@ -10516 +10516 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChunkSparseMatrix.html 6d8a614b44024b1d87323ed4b403f6d63976637ab4c0583b4010623777a1b6c7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChunkSparseMatrix.html 7681d718593e81c198cbd1f410a8fbf9dc0f7f5570ffbce3ee0e6f4241bea164 2 @@ -10532 +10532 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChunkSparsityPattern.html da71d77b7403c2a1cc5badca022a20fbd30c17299208450216067c34873717bc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChunkSparsityPattern.html c5b20eb72b39aea93f1213e5f1fa3500d6c71f57a334138c90397cfb47e53529 2 @@ -10540 +10540 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classComponentMask.html 7de0278211786c3a43c6d6df3f1c952737b6d9399107e89237655c964d095672 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classComponentMask.html bffda4c0c8738e78ad81cb1204a07087efab58a80cab794852b189ae79e8e027 2 @@ -10545 +10545 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCompositionManifold.html e93682095e741624cf7a9fc0f82199d1b321649e4029b96ee6b845dfc3a492bd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCompositionManifold.html e20ab928ec5fcd9760daf4cb8f9254b53c8d9294dade014ef8a6bba3ed52e4a1 2 @@ -10556 +10556 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classConvergenceTable.html 3fac39689584e2070a6af5b1917335d4f385860fe785837757fa5e736604df48 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classConvergenceTable.html ee123c828755b69b2095c30320e41d12db293a1f5372961c1d275a69050be2ba 2 @@ -10559 +10559 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCylindricalManifold.html 73e541d3dc15af52e86928d731ab89b9af88c18e2b8645056d50bd0a12cc205c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCylindricalManifold.html 3968074e57a065b53e44f46bf13cfcb0a828373ad9f4daf632c5dcb88ae904f8 2 @@ -10588 +10588 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDataPostprocessor.html fd8bf2dd7a6fdd514c950dec7a1566701cbeb524cfbe5a236a5b5c899e498cde 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDataPostprocessor.html 7b02518e218fe72a9a324dee987e61db5c37e486840301d280bbd584f1a57385 2 @@ -10593 +10593 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDataPostprocessorTensor.html f1b2d5f8c2a20111f69b3b89a7e46d4c45d8dd289ee2dbc4ef3dffb9f92ce17e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDataPostprocessorTensor.html b359737a1c87ce772bbc03d117544c82292315eb2b45c77dd9f0c8874e8474fa 2 @@ -10596 +10596 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDataPostprocessorVector.html e3efeb7dd0598936441aa58ea010f9c1b7ca757d38fc0f510d4ea3cd587c27e2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDataPostprocessorVector.html 60ddd00a69f136cf2da90b3ddbb26a149b5a5ced68f61ecc38d0e0c7591fa411 2 @@ -10613 +10613 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1SecondDerivative.html b36662d142b284a426f88405ed4f2d1a727df681e2967134c6e1ddc3f557fcda 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1SecondDerivative.html 2678621a0fc4dbaf9bb3110d25b33060e01227b7de1f74814fc67d885155ed6e 2 @@ -10615 +10615 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1ThirdDerivative.html 0acda2652d2c745f5794259a906e71a21e3fa2acc1a0aaa5bad6352c97e0084f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1ThirdDerivative.html 187970bb379bace7134777a00ce0803679c788056689b240419c2635d826ddb5 2 @@ -10617 +10617 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeForm.html fbcaa5ed54e97a81b53e72baddc129f1f62796764aeef8f6fdf474c3ae1402e3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeForm.html 887cd5ccc8cc212fc19f11c85b7a38e59994c37eb6cf8a5338a986db6a9e8d3c 2 @@ -10623 +10623 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1CellLevelBase.html b10e651b639c64e38b1800c38c8f2d1817b37fd832ba57fdbff17f1cb62d1703 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1CellLevelBase.html 7423e0d0e71c85c600054be1f0358bf2b9b70439590f095794e74b981aa2229e 2 @@ -10626 +10626 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1EnergyFunctional.html dc9f517e681eaa9f272bb5e547311d013cb40f9af22885083e48743bd987b998 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1EnergyFunctional.html a93195f0887f9e87ac8966a9b7787a4502290129ae45216e79063cc5773418e4 2 @@ -10629 +10629 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1HelperBase.html dece1a12df3d70012362de169a0b2eae01a9b50ceeb859d66da86178a4137516 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1HelperBase.html 9f32b5d12b1331952ff7b108ec0c826f72eb4696885f9d190bb2b3906328299c 2 @@ -10632 +10632 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1PointLevelFunctionsBase.html 6e8562ead7025069fd10a9aba9f67b5378bcc984c825348e4229ae57848caa54 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1PointLevelFunctionsBase.html d07207991c3ed623a86aa467d881beab19196268e783baf06996261513f0344e 2 @@ -10635 +10635 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1ResidualLinearization.html aa57abb5dec5fec74b007d816b2607c7049004a5d3ed181f6a033ffbf1005b71 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1ResidualLinearization.html ef48435459521b39ed49039c9af355993617654c798f025661cfce7c5f49575b 2 @@ -10638 +10638 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1ScalarFunction.html 5f829c0a09268b949ee8d4bf26b197910b53d7aa8a9ca7792daea08d1d44e46c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1ScalarFunction.html 8b57d9ef39590df35e63563b906f9e418625e2fe3035919d89737e53ff8703f3 2 @@ -10641 +10641 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1VectorFunction.html 06baab8356e9e2e6f9a6bdfe38e1363aae0e4af8fc30bad8be494c24fa6d26a1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1VectorFunction.html 59d569dbe8f7fe913d56a045d7d8e79308d80460969ec50d626579431c563e60 2 @@ -10653 +10653 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDiscreteTime.html 556765d073a7a3088b56e0a32a248e026e92e07a136e9ed1db450931fbfb0d6e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDiscreteTime.html dd0ac70b9b53d0336dde080afcf12e96683e9fb0c7d373af7a820f010f038e98 2 @@ -10664 +10664 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDoFHandler.html 592598dd0433b3af4e2439d575fbcd1ada399efc15a9cc3fc679eb47c86f93d1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDoFHandler.html e93c9a08d9bbede725fd467c90b2740a1a296145ec375d85e57f36da51219c2b 2 @@ -10675 +10675 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDynamicSparsityPattern.html 1f12cc568ab1ac70d576579b103cec3d5b96ae3db44105ea8ffc68d38f6c8b0d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDynamicSparsityPattern.html 7dd4c88fa846ea5ab831d2105a15ed6a27d2ecb5c97be9e29a6524e50ac0a59f 2 @@ -10682 +10682 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenInverse.html d782a277da78defff483478e25dfbdb70257dc0a4aa37d59a056e72beb98288c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenInverse.html c7708ecba7b7d44dd12f4244b562217bd47f89aece4fb080e7d769a0ebdd9422 2 @@ -10685 +10685 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenPower.html 8950569edcb16b952c2c5a0e3480be121d1ee9e0a9b0e67f7495d589f1557ae6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenPower.html 0a96debb61fe1512695bdc1b12bd6b24ed2892b99f4503e0c9a204a22bb5207c 2 @@ -10688 +10688 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEllipticalManifold.html f5ee61cd6c0a770fe6934fb7c5ebe7957e53c4df1c26af9a5d1a34e6ce5b096f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEllipticalManifold.html b6f0ce479a3ccd1d04a29477d2bd370858166f6634e3dc198517d4dd405133d0 2 @@ -10696 +10696 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluation.html a8220c1f61aac62d4e7dcff882738e84dc8e4cf27d5e7ddb5196bba5ee796a8a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluation.html d91098bc145eba1db5ad2a1cf7e1a1d37414435b5e50b626323851d7fbfb51bb 2 @@ -10698 +10698 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess.html 034566d4378889963268c3a272feb6277c6d89bec40b6c84fbf334e460c1bc28 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess.html a15a59c6ef8bbc64d5bc8874c3e27634f9c860faee83e574ac18e8c49eb4efba 2 @@ -10700 +10700 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess_3_011_00_011_00_01Number_00_01is__face_00_01VectorizedArrayType_01_4.html fb5565907dc49434315273df0a71244d3c36f217f6fe916367c6a75f35b0a1a3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess_3_011_00_011_00_01Number_00_01is__face_00_01VectorizedArrayType_01_4.html ea7e927d6cf1f8ceacd9effb959eeea9281eb6c2e4c8e0641ce458cd85bcd848 2 @@ -10703 +10703 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess_3_01dim_00_011_00_01Number_00_01is__face_00_01VectorizedArrayType_01_4.html 09810af439e86392254c6761d9da3d5329f98c46c4bbc5c086254e4879d7c88b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess_3_01dim_00_011_00_01Number_00_01is__face_00_01VectorizedArrayType_01_4.html 753b41f267761964287a908b9f2acdb3012599eaa1e2d83274c038df1df3d922 2 @@ -10706 +10706 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess_3_01dim_00_01dim_00_01Number_00_01is__face_00_01VectorizedArrayType_01_4.html 6254359e9660df8b335529d4f9ac30a15810208abfa9a9bb30dfdf3d262b239d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationAccess_3_01dim_00_01dim_00_01Number_00_01is__face_00_01VectorizedArrayType_01_4.html 52ac3df4ee610b121f105675d1302be73b31b25b73e49db440aca0d6337232b2 2 @@ -10710 +10710 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationBase.html 8b6579555a9c6f5f6f460de98adddea31bf18968981b56c008db487627ec5313 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationBase.html 38dcf916b54259b266b4c59614a265fe8ffa2cbdf687ffa53b1ae8935ac6a294 2 @@ -10713 +10713 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationData.html beae7f98bb292f420e7bdeb2feab4050708f7772c0f6d5d9c83293a61bd7e642 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEEvaluationData.html 0c639d687a2e056958dba7b4db96e1e5126450bf1528a5854f4f0ed3e29cc4a2 2 @@ -10717 +10717 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEFaceEvaluation.html 686c4b7b7c6898bc54d66ca3c719ec35fbc4d5d6d4299a59b96530698dfa3240 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEFaceEvaluation.html ee9f31289e8b9c8eb18fceb4f2c2627d19bf132506a8b9233f7d044b8f01487c 2 @@ -10720 +10720 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEFaceValues.html 80d53e2ff6a5dd057ed532e857f201075b9580171aafda24818cb94b416ff443 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEFaceValues.html 999a0a20bf13cf656f3e78b44ce6b2c063255ed6737b30db0cf245f37583252c 2 @@ -10722 +10722 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEFaceValuesBase.html a99f966cd0a0be6440f2d480e32c1e4352da8385c375a357f558c079dbf362cd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEFaceValuesBase.html 2c21195fab00628db0f691071bc13c6eb458de00a3a651e0f0809a5e7fcceda9 2 @@ -10726 +10726 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEInterfaceValues.html c6f4cf2a7b272c1547360822225b356440003f0d9e05a3fa8cce3895b4e13d08 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEInterfaceValues.html 2c4929d7fe56bed3fdd68707a8a0ef1440bfc8ba63bfb46f1ace29639327d095 2 @@ -10732 +10732 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEInterfaceViews_1_1Scalar.html ed4a016526d8adf5b0a7c6c458bf93e7f4d4624d4663eb635690431c02c9931b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEInterfaceViews_1_1Scalar.html beda6af5032121968ebe44ca53fcd927b924bab531221b465813ebb429dda07c 2 @@ -10735 +10735 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEInterfaceViews_1_1Vector.html 27f3464be97f81e92e89cf04e30b4aa4ecfd3349356c0da78e68ce60687b806a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEInterfaceViews_1_1Vector.html 5e13c29f3de8f7158a4a3ddf30242cd2ac8cdbe2171bbf9a0fb1c37b5a9fae73 2 @@ -10740 +10740 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Fourier.html d37d060aab58084153fe0af72048c09b49dd5c29a230839c7bb1d7da5402beab 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Fourier.html 668a522d9cabcf50ae8ec53b2117fb77a80c665fca32f51ee092c63f02654a76 2 @@ -10743 +10743 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Legendre.html c200f223d6a9d25821aa84034adc9b0e8bd4002a8d318c3253b5f8a1e524448e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Legendre.html f7eec706b4b6e19df99770d5a213d04c6fb3a623b159a30c7ec94a2ea14922ec 2 @@ -10746 +10746 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESubfaceValues.html a76b7524d8119146e02e3e99bba3c75b87e45f6b5009df6de3d83a6daaa8f506 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESubfaceValues.html dce30a2901a7d1e671acbc3e77dda3cf0492067efa2439dc190a033ecc744632 2 @@ -10749 +10749 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESystem.html 3385a95a5e3f2c2fb57bdbf132466ee9a7a51b1b9ba668105f7165b4c531c44e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESystem.html 9828f56926be0043fb157cab9741dc2b79a4d88087d2bc92615611e57477b218 2 @@ -10761 +10761 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValues.html eb45312e26d984b9a1ff9545bfb5199f3cfcb157d34448e8d19af088e6ad4187 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValues.html a81685a0984c7faa4dda046a9751143dbbef29b110b57752dfd13d4a3ba988e6 2 @@ -10763 +10763 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesBase.html 7538ef082181106913997eff29e7f77c5c059a0022c2811e65a90559988844af 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesBase.html fce86f6a5677f77ac1db6193f28ad2041231ac85f61e592de5cf52ce4c23c9e2 2 @@ -10768 +10768 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Scalar.html 9525b1c5f303ea49728c5b31bce1028b84e390c1f6a52f832895f1f656fb760a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Scalar.html e3f47e33fe5c254fc6566f38560081d717dd4540ccb26bee4de717666ff69959 2 @@ -10772 +10772 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4.html ba3d3ba6fc7df0338c17633a24d3fa5b2d7ae6a5f04cdd4a57cb6393129e856d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4.html 28279a2298af15e54bb88a8130ec592ecd9ba5bf9d6ac8ea403c440feaef5158 2 @@ -10775 +10775 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4.html 49e0fcbbc896441d22bdb0edb56184f2929aae11c29b75316d87bcfc4cf918d6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4.html ee0c8c4b6712e3181eb206868f1ee3400b9b766772cf88fd5c573db529905a73 2 @@ -10777 +10777 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Vector.html 3a7eb0d1ab2bbe8dbed8dcafae6e45e2472abc38be60536c2565bb0443e94b3d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Vector.html 14ec23475abaac6e04a6d3bae520170d2b903a14d35aeced8dfc4e920e310525 2 @@ -10781 +10781 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__ABF.html 2da1707157e4d4fd876a7ee724e367f1917f419d5ad438a343020eeac6172d80 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__ABF.html 4161b072a29395dc207d9602dc3f869b52e1c6055a94fbbb5f34d4475ca7f94d 2 @@ -10787 +10787 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__BDM.html 99df2887ed8f784af3aa0e43e202e1c3dbd25de745a38bee4d3e9f2d6c6bd400 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__BDM.html 5c3dc5f7ef46e9e23043de34e09cfa3acc44f7c25469f3a72bc81669a2544086 2 @@ -10790 +10790 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__BernardiRaugel.html 39d5c43f22305f0a5422446b3281de768be8b813c1698c16058e220bb61019fd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__BernardiRaugel.html d0b8c036c3fd93d6a9cb75a00026e238c923f45eeb9e79fd71e2f1506fa95b3d 2 @@ -10793 +10793 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Bernstein.html ba7aa63e8b9543ce20f67dc024465caf74d1191c5343b7ffeffa65219ed6f662 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Bernstein.html 9ef02cc657f69183a9a876496e4515721096b7de11764e60755854e1988a20df 2 @@ -10796 +10796 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGBDM.html ac8007649b15713626bf7e0d8b12568f7b0b9cfbdbc488a797a71a5275d2360c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGBDM.html 5a6e4ca11a87476d0e9b249d9476bad2e299bd6c2f2992b2b30d0c5c917aee50 2 @@ -10799 +10799 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGNedelec.html 102b9bfd2dce6b73ac370b966fe214b801a70cf72397b82748e84cabf5df1d33 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGNedelec.html 5ebd2ddd3345a1145504e1378507ccbe9a2251f1d1fce6c5fe69a54ef11f5ce4 2 @@ -10802 +10802 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGP.html 3ce175327a666c198149eb8b84775ae794c189a6b6f6b21a3b86c828c562dc3b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGP.html 1a9d12d3f0e5b7fcca754577b0149ec33db6089b1d634826a2457d96d5f5c06a 2 @@ -10804 +10804 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGPMonomial.html 78816881680f03466aa43bf0adf1d52a9d5c3b8b28cc536b3b2d768daa4d07d1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGPMonomial.html 02bbd262c6e0c3067efde1b0273ea94d4a1a074477f07de151ffd2bb48c2ccae 2 @@ -10807 +10807 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGPNonparametric.html ff9ee231eb011e189f584e94bbc7178bbe6d8306f99e437ee6236024799a00cd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGPNonparametric.html 59cf7f0c6c1383db63d098e8e5ff8f32cfb788df0a21bcfc60222c9ad0a0883f 2 @@ -10811 +10811 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQ.html 49ce1d5fe44dfe8f09cdb0df729e37965b3d8ea2cc3d0e98e4208380f9df9863 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQ.html 5cc9c60ce4bfd719c110e750fbe921257321b1ff5d6839e9a29d0476f4076607 2 @@ -10813 +10813 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQArbitraryNodes.html 6111b34936ecb7e6a6621e7fb7b6253f88f0a246d3f48e324061aa160bc08ea1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQArbitraryNodes.html 7a5b7bdd42c6dbe36a8158231dbf03086b4504653de945a79393de54cf86041e 2 @@ -10816 +10816 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQHermite.html 6b3db8923a5c0b15215960ecf36daac0fe2b842bbe37ad58de73860676d6683e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQHermite.html 1dd2713c32bdc1167008b3aa8f854e79ec9bc5b43082d3aec3fbfee15bb296e9 2 @@ -10819 +10819 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQLegendre.html 5dcfc6fe87daf5fde0b2f08d1906d007823974995c2762be4fbc8c5c82321153 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGQLegendre.html 54295453722561f5deb3b1514285bd31686068c9dcdf2c9a70dff56164236799 2 @@ -10823 +10823 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGRaviartThomas.html 40136a68302e003a39e79e315cf49dd00b8c4523691c45d0b2bec3b76a704347 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGRaviartThomas.html beab997d261aadcead72786e4c45ebae885d529755fbfe777c41ba84277220e5 2 @@ -10826 +10826 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGVector.html c4b67787d8e00ccf2a89b87adf6237fe50afdb6b617163b1c1be2ffbb7d123d9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__DGVector.html d17be38370de96690ac1b47f666b5191696bca909f32846bf040b49176cd3751 2 @@ -10832 +10832 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Enriched.html 456ae5496a0e92811423fb4204d53efbc87a9fa3f3f18aa5cd3dc712724b02bc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Enriched.html 1d2470d74cf488671984244157b58fc70f1fe8c428ebdf94bdac3e3f42bf478e 2 @@ -10838 +10838 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceP.html 3a8e65c1306a34ce2bafff35d11965cc4f7110dff1808d552a48aef27e679c3b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceP.html f8ce6814d8093aacb2b15e33a03396cf31491c0795006d560037173ae3e54e48 2 @@ -10840 +10840 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceP_3_011_00_01spacedim_01_4.html d8f143eb8c44f077986011efb21dc9ba9af409d9e060ba1d6381e3e1a39e9f04 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceP_3_011_00_01spacedim_01_4.html b8280ba17ccf9e97b540835619b83dbcc2f3faec5dce3e6fc92c2bf339809ab2 2 @@ -10844 +10844 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceQ.html 6b7ed43544ebe7bb295dbcac45e9d362e0928c1b0a3db0c6f50dfd83395f1d36 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceQ.html 2d8a33515091adca527508d71fc37c39c68893805a415c4d68e87a86aef9267f 2 @@ -10846 +10846 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceQ_3_011_00_01spacedim_01_4.html eb0f80529814baa206fbd113297b46d01c6aa15f7f5d73384bd556c8f7ac5df6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__FaceQ_3_011_00_01spacedim_01_4.html 55c560a91c3d48a3da4a61d248846554595214a917be9373d2d5bf045be61104 2 @@ -10850 +10850 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nedelec.html 186229f9cd7d6f6ec58b911555717422e6d5ab314c4fb15c4935dfc9b9b1acc6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nedelec.html 9fccc57fb55902ae597aed040d113f61688d4d27c9dc01161bfe891ca5cba56a 2 @@ -10852 +10852 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__NedelecSZ.html 967056251309978fbc6b74160821d37912c613b79fefcdbf868728a5ef038624 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__NedelecSZ.html 2fbbc9acf8ad5572f9347cbf639ddfbf357f4fdf683e98667bacbb63095f9af5 2 @@ -10854 +10854 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__NedelecSZ_1_1InternalData.html 33001c60d9de6c5e354edd4611fd189096400090767e7497dd064aac4c7ffc8a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__NedelecSZ_1_1InternalData.html 9d8be9c4222cbf12592d732dd613b2bb9f91957c2f22241a8e3113ddc9bdbf0d 2 @@ -10859 +10859 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nothing.html ad7368388d051fa96e696a01b585c2f10db0957644b9f7630a328746f63c9ff6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nothing.html 80f9f9502366805b14501079037cd4f0e952e0cc340a1ef16edb5b96938f23ad 2 @@ -10863 +10863 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__P1NC.html 3b602f4301166538ac3906bd612ed828bc379fc86a15650ef3bee1b729bc2812 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__P1NC.html 8f081949f3c4c81f3d08295b35a89f0fc6f78f78b59d8c0e099a51e66ab4963b 2 @@ -10866 +10866 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Poly.html 7cd0bd0197a7b5eafeb0628d90cff1e46336170345f1e014b37656f51c0dc202 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Poly.html 52b237443052163d8c420747f7597db47d6489c82937b98b69ea6dd1ac2a9111 2 @@ -10868 +10868 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PolyFace.html 883bb95c4e6643d585a3f587fd3d30a7da99596fd42b350da5f9537cbd8a666b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PolyFace.html 4fe0ec3a0f9a57e13bd5ba3154aa6c6828179bc524461bffea05c1c3682e978b 2 @@ -10874 +10874 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PolyTensor.html 6a79b138d52950df00543471f3d9da112fc8e18fbd41b8c7ea5e40168ea646d7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PolyTensor.html 17d8d27526b49495b0dcace1c8d42f86b1b1457d72df6282b620e2aced2c8da0 2 @@ -10884 +10884 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PyramidDGP.html 8222382fdf5a15bae51ebc9cdd978b7aa85ea1c44af2f4aaa5fcd33f91ef787e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PyramidDGP.html 812d47249b19b29a59a17100b30d4c89112ae26c933b04e8d8eaa26020e65516 2 @@ -10887 +10887 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PyramidP.html 6f847daba20ff03d069ee0ad3340fd5b69f70199b7caa161ff6aad121da2ab57 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PyramidP.html a4751f2766abd99c18e9cc6c894a5c95d4e84260bd834b6f1ebb2b6a0274d4d4 2 @@ -10890 +10890 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PyramidPoly.html 7309cf6e246184ce62f49b28a1e752babbb3b01e97ff7d38026234d495e61a69 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__PyramidPoly.html 8a863123d9bc8b80d55dd8d3771ec6389e50d0d205924feacc778036e1d2c952 2 @@ -10893 +10893 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q.html 86947134f5aae163779bf7f4a0f1a9fa7664463710850c2f780e7ee5d6e23981 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q.html 5787ee78b0943dd51eaa7be9a82941b07e955cf1bb0726167f2eeb3dc95b1106 2 @@ -10895 +10895 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__Base.html a247ae2c3cd42477aa5c83b489a563f0378f49579965ebf52d029d54e4eaa858 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__Base.html 03edb55826232eb0658546eac79ab9f0e9c79b4df7302980d60302aede3ce90f 2 @@ -10898 +10898 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__Bubbles.html 78a5ff3af0517bf12b8e9e55ae61e974d460020669894d157da0cdbd2aa72bcf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__Bubbles.html f86839aa155291fe3dfe1cdda3bd2d3d124bb0c49c7bc6c2d96892ebe74ab52b 2 @@ -10901 +10901 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__DG0.html 58149d4355d1d9841014101cb665282626dd7783dd0236916eaeb76172119ef1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__DG0.html 8c4ce11beb09d54ac53990da166ee26a5d505c2943c8bd6b02960dc39f421934 2 @@ -10904 +10904 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__Hierarchical.html 3b9037ae8b5217a38979e98e063dd9134cdacbb54a098d9986889a7387e6f159 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__Hierarchical.html 68cb5c9e6dd26040ad3269b969895799b7120f57a50dd43768d6be5dffc4839c 2 @@ -10908 +10908 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__iso__Q1.html 0b646aefbdb55cc34bae2fc0e9c7fed748d33f8346769e5bcb0604720f46b36e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Q__iso__Q1.html 4cb57d1b8c38646eaf2409715fb0673d872953321749347b9654a9b21a74cf83 2 @@ -10911 +10911 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RT__Bubbles.html 3bc93eb17db3be6601fe2efa1885f3cfdf4bf42cd33099a87efba042f33aee78 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RT__Bubbles.html 052e9e2bb01f604abcb1f860edf9dc4bb11f2e4e472e573d9a63187e2999b6f8 2 @@ -10914 +10914 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RannacherTurek.html d12b7594ad58ff6f20d7cb3c23eec03df4eb5254e979e46af4602811f16f8de5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RannacherTurek.html eed287e4b02a75b2e98dc6da33feb74fe1215c75deacaecc020d30b84e3db633 2 @@ -10917 +10917 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RaviartThomas.html d2d9bb436385a7cc5def0b0a391de93e5732ed25756f102a9d5817a799f4dd0a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RaviartThomas.html 3cdf3053b0d3480dd2dc28bb28d372a86ef3f1425795859163f0b36bf66a6118 2 @@ -10919 +10919 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RaviartThomasNodal.html a1b53cd9769a2d7471af2dc3362f96fb4d1605ee5c70a023755eb4bdc4239d7f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__RaviartThomasNodal.html 20e241b749582217e8af9edee7fe19130a122ee1850c751cc64720367df2dc6e 2 @@ -10923 +10923 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexDGP.html 19e9084072b328db38f83e489dfefde58fbdf126f4895f7c2de0e93cbfa63020 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexDGP.html 69e197b8f3c487e022a20f14c06621882eeb4a0b760d68ccc185307b9ce4d3ce 2 @@ -10926 +10926 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexP.html 6b5328c0bc8f1ae15e016eabb8b1e1ddc61b304ae9e5a3fdaab62e120743ad62 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexP.html da05d57d0e41e0c5933d7f6e6e8c9b6d6661c5d712b76b9de76cb68334bfe951 2 @@ -10928 +10928 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexP__Bubbles.html 7508014988cdb58b3375b444d20b3680155e41a482f9db02c492b064c5ae2a34 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexP__Bubbles.html 4e16bf4d1eef288bbec5375adb0702a0046fd0458a2d43f46ecedb8341b25e90 2 @@ -10932 +10932 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexPoly.html d9ba2cec38d2f7e2487e6c40953177966b919485b34ece8375b4afe06a4dcb61 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__SimplexPoly.html 9fdf539714715762479c9c75135f6ce59ec841c08be8cfaef710b6a7aeb13465 2 @@ -10935 +10935 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__TraceQ.html fd7ce89e74ad83ddb78d9579d381bc760ab803318f28687b219ce4dcb59d3c72 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__TraceQ.html 2ef5de9cc35e8265a713cad5fc9c4cc8d68deed657a6a7881e97e0f84055642e 2 @@ -10937 +10937 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__TraceQ_3_011_00_01spacedim_01_4.html 0194292e004766af468aa698eccc9a966657eb09b6cbf77e1c85e4e82e06a9e0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__TraceQ_3_011_00_01spacedim_01_4.html 5f0b86396fa2015a495357bfd5c885c4fa4c097e73c4d1c66121d7075f743f77 2 @@ -10941 +10941 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__WedgeDGP.html 1945cbeadf6b20632fb1214050bc343e33b23f2758ececc5b1f7102cc992a4c3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__WedgeDGP.html 4fdcbc58889f56dedca9e699034dd79b8cb33fc0efd9f36eb2499d839597e574 2 @@ -10944 +10944 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__WedgeP.html b94fda4ef244418ce8c993d1f363cbd025570a220aec128adbb9f7fba5cfcec2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__WedgeP.html 0d39447313edc0b9dcdfe979e1f019dfa414ea65cea1ab4b22c0f2ce86545d85 2 @@ -10947 +10947 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__WedgePoly.html 35b80f015c5756f4e7ed0289d43db5bd9bd2b498390d233561597e1d2812d6a1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__WedgePoly.html 61bc46b85a86b25c7750cc6917bd43a4eb88f7d52d3c715364c6d3b8d6e80c51 2 @@ -10959 +10959 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFiniteElement.html f4cc18c8eabd591b744eeaf219af639cdd050e80d4473281defd470e62248d9e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFiniteElement.html 68e2f832c0c752788a5302030d50f041ba17eeb303cf1073e0d986c665a89796 2 @@ -10961 +10961 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFiniteElementData.html 5d4f259951672e14c74079a4209c49c3115285d44ce634b3c816d80bf89135dd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFiniteElementData.html a0a14bc3b62b8d6247e990c8837b666224d6903df725e97d47110f7769fc1633 2 @@ -10968 +10968 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFiniteSizeHistory.html be31bc81ea894c6d006727d1e98c3868b20750d8bcd5f53d86d934cc5171823d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFiniteSizeHistory.html 0ec6a30d52ddc66cfb307cd3545674f86f31e8fd041b4a73d2a7aca621c8d0d7 2 @@ -10970 +10970 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFlatManifold.html 78462294a1e5476bd46170447c2aa18ffdebf3cf52015654de1370a36c7ed064 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFlatManifold.html 6a9cbec60432d964c1f6064e6f7cd8962d874da09c2775a6fe611637fa7bd07a 2 @@ -10973 +10973 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFullMatrix.html 0042caf0f66502d4375f7ac23d49df5fb7b64b0e0c7727e6c86f0fed9d075c1a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFullMatrix.html 34c1dbcb2bf8620fc6b0b0280259b8fd6ff33bc9c2392f87ee249d1cd6e220d1 2 @@ -10977 +10977 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunction.html db9b7e9ed49e2604af8edf929e4eb27a57ff6d47d9bba4523ef503d7bf325e3d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunction.html 1427012fc8ae493c5414c205a100cf21a73408c6390e9116a5833e687c317ecd 2 @@ -10979 +10979 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctionDerivative.html a7858fc9cda7e75961246c652e799a44be087ad76e8509921798dac4887dc1eb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctionDerivative.html 973a4c0394537700eafe82ea72e08114cf6c21a4b3f50701bf2a16cc2ce043ff 2 @@ -10985 +10985 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctionManifold.html e61d22fbe49549e9f2cc7bef7245f2e573b5b5b744935c409653b3f5301fd4f3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctionManifold.html 84fe3a09910d7876de79045c093f70aa2ab14d5c98061bf54cdeda8430316f00 2 @@ -10988 +10988 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctionParser.html 003bef4caf95e82e93efac44f8292b1326cfdb802cb381a9e1a44688b2491cee 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctionParser.html c191abdd8fef37a6fc09b560c9b865a3b1e784772151ce386cb61c56dbf4b188 2 @@ -11004 +11004 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CoordinateRestriction.html 57ea3851a70406c24d3847f7004958d9dd3d810ed2f8a636160f6325ef8c8be8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CoordinateRestriction.html aa2caf3c4800ea80d7ae596c51d3a9706d5a4dde2a3f8fdddc25f99d1a7838eb 2 @@ -11016 +11016 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CutOffFunctionC1.html 8fddc8fd6f8576e0365351a6286aab05791e7718dbaa924687084c73bf5b7b0d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CutOffFunctionC1.html 7db5cba1126c45c5dd25df8c1dd51e986294df968de32cfa30e8a1cff9f0346a 2 @@ -11019 +11019 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CutOffFunctionCinfty.html 357b69de32e8e79eb9e00b4babd091b3a19ae1c5322da5451f960c6c27c81510 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CutOffFunctionCinfty.html ee8dca78bebf8d1950c4fb8818b4fa2d50a7e0e6294fe2dd3a20e2584a50b6a6 2 @@ -11022 +11022 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CutOffFunctionLinfty.html 316b1951df733608162e21b26d1c5e7504038575aa03757b38d812ea298c848b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1CutOffFunctionLinfty.html 4355aef6176017c737ada88a71727d332b941737409f6d652a7f784cd3a84208 2 @@ -11040 +11040 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineFunction.html fd8e9a232a9cf3d623bb2f59196770d3e204293bd31ae82e4c0995594f2ea146 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineFunction.html ba073e50be325074888a11481499117bf2e3b948c2ee524c4d84525a77cbd135 2 @@ -11043 +11043 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineSum.html b166400da5b356220e5bd797c93b5f089febbc8e4468f3c652133e5bdf06a1c1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineSum.html 2bcb0adbfce80f32331ef3136c145c5d59703708cc32e31bdba2fcc99e62b56a 2 @@ -11046 +11046 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineFunction.html 9380c46611e55d26c32803f79d8310781861171ca8cd18f50d6671419364be45 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineFunction.html de187f2d28afa6528161d2a45997b368e48c33ab9415e5c22a025326122bf4bd 2 @@ -11049 +11049 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineSum.html c64644b714e23f4ea9c279d027ff1c4ccdbbcf0a55ff83f65839ac6d58e58ef9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineSum.html b8e8be311c7a71af5263c9fc46ce1904a2ff893759c940e68a6627e090fff53b 2 @@ -11058 +11058 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1InterpolatedTensorProductGridData.html c0304dff03daf76c2cfa6adfdb23b42700348d676c43d9e8b14fdab1cfbfe3a0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1InterpolatedTensorProductGridData.html a0faa83910996cae76fa7506079d01d2782809ac055995173f23e0f50dfb3204 2 @@ -11061 +11061 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1InterpolatedUniformGridData.html d536d04b62b46257cd5f9b90fa383e4e8924b3b89789dc4ed3329170578405f0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1InterpolatedUniformGridData.html 0bba6a68bb9648cb0c295d3ad96ebbd91bb424c674a3292c7aad2429679df248 2 @@ -11070 +11070 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1LSingularityFunction.html 8508bedc15444fc65e2ca3fb82635c6992ac101117f64db2c960abf8f4bc0ca2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1LSingularityFunction.html ae0232d94e78639f06cf30b43deacdd64b9aaf072113f04abe0f75741e1b1b43 2 @@ -11076 +11076 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Monomial.html 37c2232616ee604dd83070a6f6430490dc12bdb2f31f6b9e413cdebe4980c6dc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Monomial.html 62932ac48f43810319d3ba37ef97599f4b49facf136427b850ce165f8b264468 2 @@ -11079 +11079 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1ParsedFunction.html 5437dac0a73a3b483d0f95c162b1a2ce34918e08de04af4d86e5fe6f453f00a8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1ParsedFunction.html 1cb439bfb545a6f2c21e6335933885e9f3be23b7eaa80d98a13ff6d362bbe185 2 @@ -11085 +11085 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1PointRestriction.html a4c765eb3da4591beae2034f0791ac17a85677c639dd6bd17aad1dce7835e1bf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1PointRestriction.html f3daf524a4a98318225b9135863f4b20b283f41aa96c37d1701994fe4d0f0a13 2 @@ -11091 +11091 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Polynomial.html 379f931ddf921676d868212eb096c9f00856119590cbe5869865b2f50327347e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Polynomial.html 76d3a2ad85c65829c5d3539bfc991eee78f5935be977703946c1c3e93d9be2e5 2 @@ -11097 +11097 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Ellipsoid.html f572ce0c20a073ec6927a70ee86125c2aa8d5e8575da79a794093906aa542f54 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Ellipsoid.html 50073cbd6346908ab08ff6aeb4ba54892611171a3bead9373f15e7a779879b51 2 @@ -11100 +11100 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Plane.html c24352f9f8379f9b3a9b844f5972addd1876d72cf7042a73d43568390c01a7ce 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Plane.html a293b23f40f75a453c400f57422ac049efd40a5c5c7b59f570c84b0a2e5f2a2a 2 @@ -11103 +11103 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Rectangle.html ba472ad3f124e200bb6c66125a938eb140f0134c3e931eca2aa7d3eac6952764 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Rectangle.html a5d874802041bd3b553526e651539e53b907b0140c3f797b62f97337962dedc6 2 @@ -11106 +11106 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Sphere.html 85c5e7c25273c638639dcad45b02461e2d0afa4b43a4e5839128fdc2396c9b1b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Sphere.html 12c9502adbe5e676f9c2a28af96c7f64770dbcdde9c6e59c8d4ae79816f51975 2 @@ -11109 +11109 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1ZalesakDisk.html b688b2e60c319a3147dd5f71c310fbbe98de277f44a45a4155dcfd1da822e605 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1ZalesakDisk.html b6e42f6411d2bdc838dcd30c7bf365edb3e8e723c9715e5539bd0aa5f79e643c 2 @@ -11118 +11118 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Spherical.html e67ae085d546409cab31f0ed461b6e45363a16eb53a3368eacec1d60aebfab8a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Spherical.html 324cde5863931e28795f0b9aa07a7376cde8d71480db20fc78f9dbc92ea20519 2 @@ -11127 +11127 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1StokesLSingularity.html c8e29931a3f51c26b559fd58788bfaf90ae561da89ce11bcfa8853bf613450f1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1StokesLSingularity.html cddc1af746f9a2abbe49606ac7b178321b210cd59057a93914ff22e150b590e7 2 @@ -11164 +11164 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classGridIn.html b6815633095d6b958605cce2f919da5f5af21a40b43084e2e48c4f1cc7c51aad 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classGridIn.html 5814acf48ae01f084e5ee55db675afffb1ad21e0f5a6b99a2206314a6bf1a84c 2 @@ -11204 +11204 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classHouseholder.html 76390f6d8c914ca08758bc94c8a945049c1e6772aa145e6fee00ce0b62b2e507 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classHouseholder.html 597f9b2801ff836c0d1bc83059caaf3e5b793f05398a246d4862d5a7c1034f62 2 @@ -11207 +11207 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIdentityMatrix.html 20215eea36f09cb2f0cf6f5ff922c19ebb28e90c2802dd7fa4133bac58241811 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIdentityMatrix.html 8f29c712312da541b68fbd3e7c7d19af0f5ca71fe4425f9a3e9842c2bdaab427 2 @@ -11209 +11209 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classImplicitQR.html 97b28aede7854d51410fa710c1b5495c085ba4c88d0ef50362ca5fd46c121458 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classImplicitQR.html e6497b7b42f99e96f239cb4625f39f5e7ec84fe21d41f27f58d42f28f9ec11f5 2 @@ -11212 +11212 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIndexSet.html 37e78098a4413e6b475f2f0cd9e6cf05ed2234f0c0fd90797e0a2ae93feb6190 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIndexSet.html f8a31973c86b6681f6956d7b1a86e873844e3de390a3e1816f35c7b22e5ac502 2 @@ -11222 +11222 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIntegratedLegendreSZ.html 4b3ec9ddb8a71f62d87adf421548cead1ba9132441e75b088c0422b46d644e72 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIntegratedLegendreSZ.html 76193e9d152d6ab77392292580921563284046de20792c7f87709fcbd33226da 2 @@ -11264 +11264 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator.html 78dd320bf57e1ac6086ce7d4b488072f355410feacb3cf6ce8a32958b06daea6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator.html e476a54ceefcf384df99019d664525b9f739b081e34bda0b1e94ae3c721bfda7 2 @@ -11266 +11266 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator_3_011_00_01spacedim_01_4.html 6af67401a820d8d75c5159be46d9d97a570783c93c0e1b9c202e6f497e56bdc4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator_3_011_00_01spacedim_01_4.html 0cc687143696d7eee778a876ec05330e9892e4e265d9384c2c5fb79ea25d15ef 2 @@ -11277 +11277 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLAPACKFullMatrix.html 3efde37325bbced86736b6ecc9744ba0a9fda6c22e2cffa1d2ac0be9cc7d2a73 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLAPACKFullMatrix.html c9b60679b6e0bb1e370ddbe7f9b0b4df0b7e6872e3f6b7383e20e9388f8224a4 2 @@ -11281 +11281 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1CUDAWrappers_1_1Vector.html 9ef7a8e52b7d3e49adcc7b87e08c31298b05a3966b7bfa06210a2f886ecabb2e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1CUDAWrappers_1_1Vector.html eca2a76b47d86a7b2fb662ba33f6011bd948e62ffc188810adde7b02df83fce1 2 @@ -11290 +11290 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1ReadWriteVector.html 810ac0037b17a51e5dd5a3bfccac3be3f3b7ca04488a082d833674c2ab2af422 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1ReadWriteVector.html f6d1e21c499a891b72c03fe9f0f8f9b86c354b3db4d76aeebd156a9fe87fec08 2 @@ -11307 +11307 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1BlockVector.html 4a14192a905f93b13fa00538d541bf97a72e263065700ac8501cad2fe97fa011 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1BlockVector.html 8c79bed5e3ee6b0694a43841b638b1d4c009cbd46ab32065b8bfc33558139d86 2 @@ -11310 +11310 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1Vector.html 8a782e43b6c0f3077c22be0fb1a6c61c1ba16316853f0c69e4f8b953972c7b0b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1Vector.html 38ff348f55dbcdbb9600db7d05b09d2df513713fdda2a3ddf3d71e52b37b60e5 2 @@ -11316 +11316 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearOperator.html 1f8ae628e50055f16ab9224cb2b953a791c109a8eb1033daf6126f3321c82285 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearOperator.html 6643ed4162a905b2be40f3e41f5fb380332ddc0ad7f445e4979d02d7011df03d 2 @@ -11434 +11434 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classManifold.html fb7aa289c8de01ef26b14c8a408d67e4d2942d03f8c5fb03e1d1b9c99148ca33 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classManifold.html dad41b27bf075962cc6fe15c787d445cc98ee6e4e2ed1e17d0841dbd8ca721d1 2 @@ -11437 +11437 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMapping.html db68289b886ac9b84be3c8aaedfd718b2fae83a381f0f9ebeddfb8a3adb40fa7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMapping.html 63f3dadde9f9b566e94c205ca4ad6da12dd5e312437118e5fbd321067e8e8d52 2 @@ -11439 +11439 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingC1.html efb478147dfecb6888dbdd90168429365aee665b2f18cd2af31eafdf31e6bdca 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingC1.html 380ba641c2ec85e41bd9d97b4f7b4bd83b10f7768d0623381233859a605e4169 2 @@ -11442 +11442 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingCartesian.html cc1861b919f65db6648dc357d5c9b6cac02767023e69c20e9519103781890070 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingCartesian.html 5b1f393cc8f18402c3e94d5073b131bd51ec8a3aa11bc2a095f89765c4952c67 2 @@ -11448 +11448 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFE.html d4acbc51288494f4b3d4ce8a85b360d2be6b86d67a0086f7251fa731f7689754 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFE.html ea52f5728160095f39109fb2fe563582864eb785f0b9886d0ebf0cc22f8108ad 2 @@ -11450 +11450 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFEField.html 80f91a91aaf5b8b906ceee00b5c4792b3e78640c0490d0daa56a5818a10de237 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFEField.html 9b3297cf187a50d623c04f87cb3a61ce19191773cd79570f81d97ab0d6bb62df 2 @@ -11452 +11452 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFEField_1_1InternalData.html d0ff134e480e376f272d6973305a3deb718e98a3be0f93d4e150f3f4c57464d4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFEField_1_1InternalData.html 67d3893fb7ab3738e617b934553849b6a54c5d9fe1f23e49332d7629c753346a 2 @@ -11456 +11456 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFE_1_1InternalData.html 40b43841361da085f87281e9454ba4b2241e3f0316154206437a7dc2900ca3c4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingFE_1_1InternalData.html 4408f06dac6b36f0d38afb2c02ed50362db9ac328902461b1416da169063200f 2 @@ -11460 +11460 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingManifold.html 29496bfed2e1b0ae76ba7e57b778170e52ab278092e2a50c1e05cd3f5ab9aacc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingManifold.html 02b39c9e50a3578f5f1398eed97d647e158db066ba59d64f7eb830d65cdcb0c8 2 @@ -11462 +11462 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingManifold_1_1InternalData.html 868ed1925a362a12921d76719e0b5850e54fe317bb2535aaa2213afbc43f7f52 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingManifold_1_1InternalData.html 87e88c9775d9cd77622efbbc3f9637fb5eb0eeb7753fcf84db72befa2c7765e4 2 @@ -11467 +11467 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ.html 2cca9fafa0aa88403825d3f89c2d5b32ec928593d292c12c119138aa923ac999 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ.html 5e3b2d510fda059440b6bd5b3961cb2b452c878eec99ce78a1dc30582ce21dea 2 @@ -11469 +11469 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ1.html d09549df83a13d1e5837321e295c510a5b69527dc6e7e41f1012898c1531480e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ1.html b439612386864b2ceec36d24c3933376f585fcc8b5c0ae620cc7f825f81bfb75 2 @@ -11471 +11471 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ1Eulerian.html a7c85f28782bd1742a55fdb1f3652070ee485b4299122bf5ddfec4ff89e566d9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ1Eulerian.html 1bee44062c9dece0e3d12f942e829139ed8f8d2658e5e4b65dbc4d94cfdfe3b5 2 @@ -11475 +11475 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQCache.html a0a9cd3186ac0feebac7e06267bdd7ff5167b4fe999ac1b81d3823f7afea64b3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQCache.html 6dfb1c55b354b8ce62a7acd031e0f6bb261599153d2c6da07cb9158fa4035d5f 2 @@ -11478 +11478 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQEulerian.html f6311bca11329dba9b674df021c9ae4d27b34d921c9ad256e2bbd6a875c01935 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQEulerian.html 697f615f22f5a64023417064f8376abac895d4bbfe88b71172d00de0db1e0100 2 @@ -11484 +11484 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ_1_1InternalData.html 9be567d96c5fd20c19eb1a44959f50dd552b338aa2110e9531df185a2b31bd60 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMappingQ_1_1InternalData.html 4a7020479759fb0498bb15b9beb965fcd7ececa6af7dec1216d562c61e1a95ca 2 @@ -11506 +11506 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMatrixFreeOperators_1_1LaplaceOperator.html abb76fdc61f2ad1bdcc852e078ca9163334c16732cec26af1c984510d337c186 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMatrixFreeOperators_1_1LaplaceOperator.html d22e269127a8b65d0f448c2570393b568d4f463cf3cf1c373e8d6f4e0864e81f 2 @@ -11551 +11551 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMeshWorker_1_1Assembler_1_1ResidualLocalBlocksToGlobalBlocks.html 453d89ce0a292fa943539d861f9696f608b076ea5a2f984cb915ec00cc8992cb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMeshWorker_1_1Assembler_1_1ResidualLocalBlocksToGlobalBlocks.html 9b868bde1d696f97a0acf485a40a89d7302e8e872ddb9700aa356e8b8f97449e 2 @@ -11561 +11561 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMeshWorker_1_1DoFInfoBox.html 048c8ae851a9596484eb0a5d91c82c67cd44479d77d1860223284864e28066e0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classMeshWorker_1_1DoFInfoBox.html 27283eed4ef4232e9ed2bcf03f7f7640f921d089ac2b5afafe07b8e489ef78d8 2 @@ -11606 +11606 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1DiscreteFaceQuadratureGenerator.html ab2b2b121613f454a1d02cc5d4961d656a59a31eb0e4ef40f54fe53f57894b92 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1DiscreteFaceQuadratureGenerator.html 9c7d37c4f746e224ceb935ad95acc557fcae4d2093d63143aee302d17641cab6 2 @@ -11609 +11609 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1DiscreteQuadratureGenerator.html 1b892a33aca1cef7ff16b62e098560f3c9fba705fa8e58a11b7ca266fc06e130 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1DiscreteQuadratureGenerator.html 1295bce1b73582ff331132255af6aac212bc4c7a729637d44816c3fde80c4bb9 2 @@ -11612 +11612 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEImmersedSurfaceValues.html 632875d8f9c4c97629676dc5af228acbbef709ad64fddbca8fbfc4568b2b2cd0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEImmersedSurfaceValues.html 824ec710396111fb28f4eebac5bee8dd731998b9a01154107538c2259eb9e91d 2 @@ -11615 +11615 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEInterfaceValues.html 21ef4f9a42498434a6b7acb78bd22109411097a57ec8cdb5662eb9a8b528fb7b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEInterfaceValues.html c7afffb48d7c282853df071948012efea708dbec048d087ea5ba1a08a2a0e4c9 2 @@ -11617 +11617 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEValues.html 5e6a9caef965192d8e434c9171fc4eb0c23aef44f228823833aff0c0539535da 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEValues.html 8839ad52280ba8deb1b247f026a48a781bc7f3641849c1b539c5eb0ec6a9df09 2 @@ -11619 +11619 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator.html 030b33538edad67a26ccc2ab2bd9eb6aa794b6c6510464db4cd8df5470995140 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator.html 2e814d5cce40f66e376b4de58f50d32586d2e89ae3d1fe03e914a5d5e7ca8fd6 2 @@ -11621 +11621 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator_3_011_01_4.html e26535e743e30c4b4c4639415912c9e10a9be8c74b3c4745a98096dae9903887 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator_3_011_01_4.html 73fb3a99933b6b221448c4044f77108b4366db61761c62139c7f95025e935800 2 @@ -11624 +11624 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1ImmersedSurfaceQuadrature.html 29fbfea86011922e26344e53d9e5e836675a57d188f74c306592ce8d021729a3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1ImmersedSurfaceQuadrature.html abecfe02f0d83e4562d3138e6efe9e223d281d552b0ee72af5f36a69c765b956 2 @@ -11633 +11633 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1QuadratureGenerator.html bc2744ff6fb47c6838f26abea7bb3b36696a12a5b26fb40a69b561b2b3b18a3b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1QuadratureGenerator.html 957fa0c3ad4621c864d3817d9de642b64fbaee38bf60e9930032d1c5e114c718 2 @@ -11641 +11641 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1DiscreteQuadratureGeneratorImplementation_1_1RefSpaceFEFieldFunction.html deaafcd194c88597ef6316c44f02c08e206d9765fcc602e1dfcd8d822b1f2f97 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1DiscreteQuadratureGeneratorImplementation_1_1RefSpaceFEFieldFunction.html 4ca571d144bc378e1d837fd32fea5ababa315aad6b85c1b5a49dfd4e82f55664 2 @@ -11656 +11656 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator.html bb0f9d02c09dd68ffbce0373be8416721ba3fbb66a69934ab1250431911af54b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator.html d69829970add8547f0bb1b06df7c191ecaee2a33e24a7d832bc97359239fca2a 2 @@ -11661 +11661 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator_3_011_00_01spacedim_01_4.html cb75c65769e82397acd1becf1e9b05feb89ddbc15bc6464da19c52d276eb955d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator_3_011_00_01spacedim_01_4.html b9d557d4aae75afa32b7a99358c9a9980d8f9ef716fdf906b89ce05292febca5 2 @@ -11665 +11665 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QPartitioning.html ec04db9c8ffc15b6edd00f5d00e95e78d7d1aa109d45819d15a967cba144067a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QPartitioning.html 23d55b603422b882e85e9c90cba479d678419421bdf71897529116bd48aded96 2 @@ -11667 +11667 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1RootFinder.html a4fc3e88f531e49bad1aa85de8d72e912af0f9298f658ce1c5f2174af0299c7e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1RootFinder.html d0a3d2435c0b69ef959b1909884b97b48f4ab537b373d7b450cf70b9436666ed 2 @@ -11669 +11669 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1UpThroughDimensionCreator.html 466e5d491d47c899459cc21aa44b2e0bfe2113cb9d4182b5024f6f28cb50b241 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1UpThroughDimensionCreator.html 83f7f467403ce9549f38a73a6d4b839ea8d583ad078c3f528cd04c8a3f131954 2 @@ -11671 +11671 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector.html 6dac9b80a5f1e2e1a255b1f2a8ffe88adaa4ef9a5c250e49b1bf71b0faad4199 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector.html 94b2d27c9402170a3b3af58b30974f0d982f59c2f5310e526335fbdc998fc608 2 @@ -11673 +11673 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector_1_1AdditionalData.html da1cb691c4d06513c489ffa93fff3e44261ee5ecbd373aaa3a096587270f0e9d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector_1_1AdditionalData.html 40f25b1024ef3a9017b6d4967c3c72a1b8571043c628c29526da3452b706de58 2 @@ -11675 +11675 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1ArclengthProjectionLineManifold.html 82dbe067f8b280a43729e54458b55936b22e8c6179501b3030edeb80b2d4841a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1ArclengthProjectionLineManifold.html 20ca2a916a37a8f86bb0a5fa9d26e79c45e739fdfd2a77451b5a37c460accd39 2 @@ -11678 +11678 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1DirectionalProjectionManifold.html 9a19099523375a6f33c2eee7638f1a2dbd52683abfbaea7effdb0629da05de1a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1DirectionalProjectionManifold.html 4784e252a440775cfcb0fbd5b5ec10abf67730ef847fd58ada56a36a2ab53ce3 2 @@ -11681 +11681 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NURBSPatchManifold.html d62762c5f86cde71e9409c2fd075af357bc7ae8f696843729fb447ad279a38d7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NURBSPatchManifold.html 4d8b528c6e6dbe5b2a8793c173da786ff3f1f661d3820e88bba5f2434c2f0299 2 @@ -11684 +11684 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalProjectionManifold.html 0c9ad63bc70d7fa8668108eaed74aa8e11fd4ff5a8e23030f8e64fb11576d9b5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalProjectionManifold.html fb514dfa134c09ea71fb8a52527067188dc66e19b3e3ec14ff1ed8a59702cf68 2 @@ -11687 +11687 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalToMeshProjectionManifold.html fa6316a072ca3d42e27dd9c37acd34b8e08cfe1a8f86a30f7fca099b2972cfb8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalToMeshProjectionManifold.html 94a3f247d7c0d40ef81da35dabc632a3d684b8fad94bd255e76618e6f36181dd 2 @@ -11690 +11690 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPArpackSolver.html 5ba40233aca44ed3788a15657aed24525fdd5ca0f150b10368627a9c2cfaa2ec 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPArpackSolver.html 735d8517e8823fab95a989df0edb2d358702b2fc02dd60b3d7c0a9c7f3e2c836 2 @@ -11693 +11693 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1CommunicationPattern.html ab034b8d8dd660071f01df096eafd5f3afe35396bb02d1dcad2b57778fc42a14 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1CommunicationPattern.html a4de49db6065f02fac8d69c31b530aeee9f95b96ce56741d5302cad02e22519d 2 @@ -11696 +11696 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1FullMatrix.html fc82c15c7a6a952bf0652941801e9728f565744f3e0d23d21f6d3376735011f8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1FullMatrix.html a2cde485e67130571afd0ae17b5476252f84532980a258cbfd4ce1f6e6234953 2 @@ -11699 +11699 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockSparseMatrix.html e1c31b5a31ff0d8d937af7716ceb82a0745e4ef26d4b74b0a141e8e4456cd4c5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockSparseMatrix.html df7f6bddc17a6a08e675172a938a2177f08ed176966024395e6ac33a950b6a92 2 @@ -11702 +11702 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockVector.html 41804a59e72c91b183168c27ac212ba06963482a1fa742f60753eeba4341e025 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockVector.html c7839c5cdbc5fe7f19fccbcc094819fc42b36d1219921cc431a3939aaaa68976 2 @@ -11705 +11705 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1SparseMatrix.html f8570224c638e05d62a5498f89103e0869ae8eff31ac36defa0df3f00652ef30 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1SparseMatrix.html 3561602f12a7f8c1c0da84626c52776f9b7dbe39f3288c3d4d5d8d7e6ba52f80 2 @@ -11708 +11708 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1Vector.html d8ae54384086e8e9ae435d176e26b0bfb1b77fdd4d030ade177acd4832e5a74a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1Vector.html 859366cabac3509c6eb6d58b5d6921ab87d9e4189ccef3dea93133060ebed690 2 @@ -11711 +11711 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixBase.html eb9a7577c98eb4364cecbc55313e57e2dbe88064921d95b10dff502a13c12388 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixBase.html aee32fd85cd5b4efbace50f55e0a0dec9abf31c1677bf54a92ae724e071a19c7 2 @@ -11714 +11714 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixFree.html 1cba2e044c6cf5da91c9abd156a43e11cda74235865598f5789bb1fb746b51aa 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixFree.html e8070fe059850c051885714a61713c79aba913a83b73cd7311b5d0aa74b87087 2 @@ -11721 +11721 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1NonlinearSolver.html d3050bf137bf3dc4c30fcf7f510c4506d1cf1d6a5f5ece9b585f6f7ff99e1364 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1NonlinearSolver.html 00b1e0b34d98ae0ba370b0c49bbff12c13647420eab3349fbc154f3ec0163d17 2 @@ -11809 +11809 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1SparseMatrix.html 32101a9c9b32fe02dab6b43a3eabde3596e1a92e467f1c57025249807a26bd78 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1SparseMatrix.html b587f5dc277951f6fc49c14ce7d2aec57437b1cc23aa75fbeaa0a32a5f66c304 2 @@ -11812 +11812 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1TimeStepper.html 2a0dd80fbff4396be2c71972a8c1471fb74232a643c1b4c3ddeb5ad9e4aeed4f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1TimeStepper.html 4a9033966f44b9a563341fcbd5905a02f2a255567552b652b4ff37ee4021661e 2 @@ -11816 +11816 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1VectorBase.html c451a7285662e85a00060a85f9dc75ed4feb69ca03629d0dfeacdef22b1483c8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1VectorBase.html e51c83a831f84ec5552c2a48164b4a464fe1c594bac4cc737701f663fe37d37e 2 @@ -11821 +11821 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPackagedOperation.html 73e41290df0e2b3fc7fc3d1d902fb4bcee6ca72d32a779012c8e2cc15bc86414 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPackagedOperation.html e0dd8cc40c02a5c72abf73789f5a351d75e5530d1be0afce88151a5d544d6ee0 2 @@ -11842 +11842 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1ParticleHandler.html 5ed59b79129de5c639cca8b6e3f13f855ce19d24964de07548604b70cc3a9586 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1ParticleHandler.html c942db39c0b790753b0962749f922aa7b2e1c7e45a139c4a9d597a76634266bc 2 @@ -11847 +11847 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1PropertyPool.html d68924761b2c718e254ffb40945104bc9b6f7c1d20ef411b708fcd013fd5d77f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1PropertyPool.html 9a5c3036b716331ed95c7e260faefae9d7c3f6d47749aafd0f97658e4d8ed8eb 2 @@ -11888 +11888 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPersistentTriangulation.html 59c2b70ce268faf49f27039003dd05d80bd1d9c2a3432ba95da60abc45f7570a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPersistentTriangulation.html 94adb56ef9a45557abfa65a6fc1c232f65fabe148d586f6cfca975bcb472ed9e 2 @@ -11891 +11891 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPhysics_1_1Elasticity_1_1StandardTensors.html a1f186ba42d63fb00c9f353df88ed09c7c5e894583bd2bbf3a503d18166219ef 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPhysics_1_1Elasticity_1_1StandardTensors.html c57fef91e215215909ef30f8edf5b1f9bd9f7722d0b33a90e09ddbb17242dc30 2 @@ -11893 +11893 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPoint.html d16846dd1b828fb4d515ac12322440544205f1ac6cbf16f4709aea4b5f09697b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPoint.html 26b283c91176345c0608e3f6adde62da924bb39fa2a5dec4437ffc63fffe1224 2 @@ -11898 +11898 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolarManifold.html 6b3f87243c653056e8962a558cd9517252872497eeb00eed5ca6e2c641feb82f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolarManifold.html 08884b81fe03636eeab57fad935f73e6e542a490023a3ee668acde0d9f8ee1bc 2 @@ -11913 +11913 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsBernardiRaugel.html 754af85054bb13d02767f1d1fa3682e40cb3cb64c8c3db0289d286f0c7668b05 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsBernardiRaugel.html 6b5cbb89229aa08fa0dd285c8517a6363953bc41794b7700c5e7e63642df0907 2 @@ -11916 +11916 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsBernstein.html 802076e91fab27440d27eda0603e30d6127e47570493827c535540c25f50e446 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsBernstein.html 1e6767efbaf0c5bdbe696f3de5a011827887a9a5ac3b69c6f26ae64aaa1b0be0 2 @@ -11925 +11925 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsRT__Bubbles.html 05a3d8281b16dd34deb16c5530ac17aa8ac4810394d4bce6896db0aef68ec8dc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsRT__Bubbles.html 34d15e64ae2816e49a8b339ea540c1f3a82898df06785a541476f8483fed195a 2 @@ -11934 +11934 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteInterpolation.html cbdb7d27ee99af8c60c1e95bcf20124cdfbd8bfeeef7f625663fc0da8e8e4f72 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteInterpolation.html 8ac14460c2c9503b4f63a29c23c52baeeff404d35ebf632d9dc8b969773fa6a2 2 @@ -11937 +11937 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteLikeInterpolation.html 1ac9d5d04d029254f58e21b5d2f597ce2d6ed05470dfe6840a391c9b5557f746 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteLikeInterpolation.html 8507d8a27fa436d7e8b28ed998a15c4d367c1385afb96460f0f122a1b6fc29c2 2 @@ -11940 +11940 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Hierarchical.html 4b1e2c9ac0757efde6c5ab3c2b0fce27766d6a915daf1cab20ce1338754922a9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Hierarchical.html 286521e7e73553b572466eb0ae86211cdbcc252e90f1b63ef8452f5dfcde1be2 2 @@ -11943 +11943 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1LagrangeEquidistant.html 3388dc73bf206a012ec0980b6bce1507259c7e1dc9d30eeaeb9d5567fed1e376 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1LagrangeEquidistant.html e19cba533fb5e08327d0dd52447adf53fd28fa9b95ef1f932208ab3ff72273a8 2 @@ -11946 +11946 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Legendre.html e98c5ac382bde9263461fcb11f5d9f87407925d438fe1c116adf755a688572e2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Legendre.html 5d3997ee2030e672f7261fef2477a499b6f5a974be6d771cbb368b719718116b 2 @@ -11949 +11949 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Lobatto.html 24665a171f9723f214fa321fe2fa4c3864e54a2a32c6b8336c859de2a8752884 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Lobatto.html ef340f53522952db83263e44436451e58a691e25eb11fbc8b27bb37f1ac6995f 2 @@ -11952 +11952 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Monomial.html 5780b441b94c2ebb6a4b697c5d3aa605c76b22da0fc53ebc04ec1e89c7b0d445 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Monomial.html 72741df4411b810eefe5c5e98f491d225583dd0451b0be3c29babd187e4bda9f 2 @@ -11955 +11955 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PiecewisePolynomial.html ef64b9c910509977b18b9f0abe4d738cd259341d697cba1aff9460510ab847e6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PiecewisePolynomial.html b7497e85db166e0f6c34630231c3edc746b422b5a577f1a568a59b5d7b8e2dbe 2 @@ -11958 +11958 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Polynomial.html 1afac6cad85ede044de3d5918566135f95af4f1e23b179743ae3b995dd8f0c68 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Polynomial.html 6bcfe0076a55496e2c49c8b8133043505b177219432f9b9e84ab2f578bd761aa 2 @@ -11961 +11961 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PolynomialsHermite.html 16b9b9f666862daa696e73cf84f953b00963d20c79f0e1638c0c496fbf1b0ed4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PolynomialsHermite.html c6c46a5db5edff5c66d82f53e2e75cf6dfbcae3e6d041d9e70e520f1819cb920 2 @@ -12038 +12038 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussChebyshev.html b35bfe1d462c40dbc591d75c3f67898d6ed798d80569c4b196ba0717b449bcab 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussChebyshev.html eeff7d0eae0fa4b39fd138caf9b250e21c98a8501cc446bd5a3ffb090b7b9e40 2 @@ -12041 +12041 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobatto.html 6cbe4947dc242c99940b02277ef10b1213ae38cb43fac5f0d10d7c49216400a7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobatto.html b4366dfcd6068b6e986912a48a87b66b2d871a857190645a37a6d6c7569fbbeb 2 @@ -12043 +12043 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobattoChebyshev.html c2da59e28877ac0bc6a8787147b77b1840ccdd6f186f00c9752ddb228050a431 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobattoChebyshev.html cf23180c91280443ee116f0477e76739448fee93231eb4744faaa80cb0c9cf2a 2 @@ -12047 +12047 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLog.html efafb4fbf48ee2639b9832e557d46ebc496c4450f967dea40bd9c572088c87c6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLog.html 9f888ee3e5bfeb82ec07dc0115daf4897a77827a306db589048d610d835f60e8 2 @@ -12049 +12049 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLogR.html 5f0c2d40e3b58b63b6e60f46f5a611fe077c785dc0d1c70b45285c4f46350b5a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLogR.html 9df11e160ce296151e3fd98cc1994c4c9c48370b676c447fb4d7e9275ade12ca 2 @@ -12053 +12053 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussOneOverR.html 71be7edade5f8319dd8fb90637898a7037d5eb585c537111fd846b8eda1a97ab 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussOneOverR.html be6f30b369a3c05a9086efc46c2f3862b99c5ebf0b9e00dfcc382c23f3f3df56 2 @@ -12059 +12059 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussRadauChebyshev.html 63593cd7ff8cdae3ac9f1a24f6d7bfe4c07d3cd5f0ee96fc560f9466bd151335 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussRadauChebyshev.html f05c542cb3c61d7e18c58b6321b2e94feff4e8ff4f0892b77ec41ec46f856653 2 @@ -12085 +12085 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQR.html c88b783c7c23cbf4947a88cfce95b7a87d4982152c48d4488093a94708eeebf4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQR.html b3e917932f9cd404d34e33ceda6f878541cd775c0fba4bf11b57867327082548 2 @@ -12100 +12100 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQTelles.html 2bcd79fe525c2a0b7e335047228f56b96afdba1bae93fe4c8bbe914dd6d17f44 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQTelles.html abbce14e4c0df66c524872ee573d6f333ad5ff9f5a78a31a2215fe9a1d233a26 2 @@ -12112 +12112 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQWitherdenVincentSimplex.html 53dff08df71cb2a78218d381a730147e6158e44a55d573cbf68efcc4014add2c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQWitherdenVincentSimplex.html 3b86a05c24f7713bfab2cbbd7af54e39e939140a11726f1338ede10c75b44024 2 @@ -12115 +12115 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQuadrature.html 5ee8173dec8a0f3f17cd387e908fffb09dd2df8e64aa683e9f483016b0b47254 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQuadrature.html 753b5822947f20f314243b047c8e001ba29de9b6c847f9212aec450d56182f67 2 @@ -12126 +12126 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classReferenceCell.html 9cc867f400670aa746a7f855e603b17e2416f2abba345a2664c31f907bce8aa1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classReferenceCell.html f9e0d92fede12ae90aba193978d76009d44a1ceead0c31b2e399a57aed23d1f9 2 @@ -12161 +12161 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classRol_1_1VectorAdaptor.html 19c7efe00ccefbb8a50b7547a294cbfdde4ba52023ed36eaf7e564399503df5e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classRol_1_1VectorAdaptor.html a1253ca126d0161beb33a53aedf95328a3d69bcf0be28690d766c2489e97154d 2 @@ -12164 +12164 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverArnoldi.html b6397ac1fb054eb0c757850c0555c81772fe1a90e4e1206a195ba7a985b33a23 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverArnoldi.html 9125081e63faad6c32a126d6e9e8a1bfa49151952ad7c4c95dbaead08dc3a530 2 @@ -12167 +12167 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverBase.html ded95b79dfe0a47bfad1a0cbf1cc5fe3da1f72e5903928494aaf4343fb65363b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverBase.html 0d624efa58e0a87fd724a4068dc6a911ab37d10e0dfcfc494598ff90436d3cde 2 @@ -12170 +12170 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverGeneralizedDavidson.html c19dc4e88866124b2caa1c2c0082c4a42d514ec90e07ccc924a4bac3ce22ddfd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverGeneralizedDavidson.html 28d44f3efe299041ed05935e98966bd17b4b94514b91bcb560868d3c2495786d 2 @@ -12173 +12173 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverJacobiDavidson.html dd46c46924e125c47f76b128d9a36cf165a8dff9f4dd555f4ed91b7eed4b5a23 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverJacobiDavidson.html acbf3a2c672681f0510a892d0092d373f9ccc8e69f8649562529d428a4fc2446 2 @@ -12176 +12176 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverKrylovSchur.html 1ec8c94a71da6998de9682d0b4111b8a21144e280173cde995a71785e9a2b4a1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverKrylovSchur.html 6b01e59f0f0d9cfe02c2c0a2110e35d286d734bb3feeaa082962ccc65ff8ea35 2 @@ -12179 +12179 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLAPACK.html 9b5ea7e3b1f3819cf16d5e570ef421a37b21628e3787307dded727f3075eecf6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLAPACK.html 963043c610dddaf8dfe7a136e5a78cac4eb85ee48220601c0164814a1cd62b51 2 @@ -12182 +12182 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLanczos.html 80471834d180abde42c07d1f1e5cae6ca133145f4c9972c20c70738350217760 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLanczos.html 12105aa86de3302c15230bf21104da7eb97cd2efc4efc504d23f52fab73602e3 2 @@ -12185 +12185 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverPower.html fda3fce93624d09273f41fe805e9009fe796fb4bfb973d7038da6e58c66e0169 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverPower.html 8a2819fdbc029f4ed3e3890eef29648eec065b50b4ee9876cb00d8144b1c2e7c 2 @@ -12204 +12204 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1ARKode.html bb6c4e7411ef7e3059f9eb756656e461248e85ee8bba049d0f2e778595f971f0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1ARKode.html 7cbb61b7a6120f86294db994885fbd66a34f78f02f3f9d342a2145db1b173ad8 2 @@ -12208 +12208 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1IDA.html 6586262409c9b26b0231f6f83991d1e9ab8736105a47b3b1b51939fb408e1616 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1IDA.html d8cf6daaef8f13214fd3b2aa8cdc151a06dabfd8679b9e3e468854850cee601c 2 @@ -12210 +12210 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1IDA_1_1AdditionalData.html f7bee5ea24976218ebd519df602b2b96bb1d18601f8705acff06d83874043602 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1IDA_1_1AdditionalData.html 8c22fc3ecf15a54d2f9b3c597975a4dc16c369e269b4be23570a519b19773d55 2 @@ -12212 +12212 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1KINSOL.html 53749a0ae7ae902dbfff7651733a3b454d4be56655d1f95a883402f8e0652ab4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1KINSOL.html ea524320c15dc8e44f972942d618df674ccf27e4d58f13d9a01ecf177913e8d4 2 @@ -12223 +12223 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScaLAPACKMatrix.html fc04a14fe2f0c6c98823dd54717284b9f4dc90ba53e0f65df7115a24d03e7612 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScaLAPACKMatrix.html 879916b9779d1578e86178b53dd6bda7f4fbbc43bc7a5c9c1e2c4b1c648ca938 2 @@ -12226 +12226 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScalarFunctionFromFunctionObject.html 77fe98fb59c44003a5e113109b7fbec6a4b85e3d96d5db870b3dcc2a729b5b94 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScalarFunctionFromFunctionObject.html ca6399e35143e9f87a354d63fe90a1f481857ed90f9f634dc7839e17c90775cf 2 @@ -12242 +12242 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolutionTransfer.html c1a3aaf236dad62d697987ad1388510dcb284f5439e2c6768f93e49852b8c614 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolutionTransfer.html e94d16b4d2d43bdb191001836364f17b97daca0254776b7f722f6b21aa138bdb 2 @@ -12244 +12244 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverBFGS.html f4eb63d75f46451d2d70aebe7efea72c324a48e97f871e5c1b412b3d3d527c04 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverBFGS.html 01a28167b9dbe5026ed6af9d86a2616087b64d27a9f3c541a97175054afa5e32 2 @@ -12253 +12253 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverCG.html 0b3f4351e6b54704143782edc1dbc2cedcd605385c04825c49f07b987d42f4e2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverCG.html 85993e7f5b19bb3e77eb1c50a12d1e60e466baa9af455dcd85218a45f2f43d9e 2 @@ -12262 +12262 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFGMRES.html 0698b0a40c3bae0522a1a614718edd3069c88b248de2db53090b1f4129ab6202 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFGMRES.html 469aad742c0575c9b671469fc72b8daad727103a84f6213b3c561bcd3cfccafe 2 @@ -12265 +12265 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFIRE.html 7133053c61b7a5bc9ebfe7a5a9cc081a9d12fd1774b65ae5d8842f98c858366f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFIRE.html 8ed3c7404b8cda8c50226cb180c1d83e5fa5f2637b44f42e6d102f48938fe7a5 2 @@ -12268 +12268 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFlexibleCG.html 8597bb4321ebdd0f92941ec85d6941e005480589496372378616d12e37a8ca09 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFlexibleCG.html e89dfb57ef7c32306cd81dec77d0424e2856988764ec73d9622438085d519c41 2 @@ -12271 +12271 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverGMRES.html a6174bbcd8d071a006726f3fbff4c9508759a0237ac4c558d5bc5a92f952251a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverGMRES.html ef7192dbed2c861cc334e7cd6fd20dc26fcef1a0ca289d46bc3a37e3c650c5cb 2 @@ -12277 +12277 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverMinRes.html 8d93cc711596ddc34c68d024ee53b0be8fa91cb4a149e16631bd4cf7de16a73a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverMinRes.html b354c88c23d7dd67902f4a10b90c269445b545ce2e7c5652db0bdab2a2d52bb6 2 @@ -12280 +12280 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverQMRS.html 07c85cd487d432cd3a9d95b0ab2e99623ba6e6a627ba6f179b3444bf064b5449 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverQMRS.html d3713dd4e365c6446d543d63146a777a249d91e9abfa7920324d0b3bd6f1b784 2 @@ -12286 +12286 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverRichardson.html 04ae788d9922a822503103070ab62903cc6709dd80d44da297e1d3132e105c11 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverRichardson.html ac3ada1e2f526b7a6bc1dcf9f1a3ee0ac531f0ea17293256af104167cbcd5882 2 @@ -12298 +12298 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseDirectUMFPACK.html c0b56607ed9ef0ce1c3d562766326578ffb40d57aace07a83340a77f4f937631 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseDirectUMFPACK.html 8d6cc2d73ae0061aa4d5f6a06107d1ed48d14c53859a3a73f0cace4112a5fcef 2 @@ -12302 +12302 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseILU.html ce4c1c86bb478c522a91bf7ca2a7098573c3ccab61c46b6c557b7d67882c9ae8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseILU.html a6e36f6ad03f092ef5ba2992173db1b7c21fbc6a15d4ff78aa7c31926d9704d3 2 @@ -12305 +12305 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseLUDecomposition.html f6f691923d667f71379350a6dfc4e5a72816928e74db3062b71d3a1da57fb713 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseLUDecomposition.html 12f93c6c70dceed71a1863776995085809eef2e42dc4c7faec704d091269a35e 2 @@ -12310 +12310 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMIC.html 17f9dd41212ae26448f66ec47f2ce5b3d1b39992a04f90fa048962e6fca81c9c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMIC.html 8f53e79f03154c00e7e8a278565140557e990aa5b09b0540029891619dc82e76 2 @@ -12313 +12313 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrix.html 865abf6b07d67c2789f2047f89a5dce37d363359472a8a28133f329fd8dcfb4f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrix.html 73a02cdb62d56e269ea096d57f6cac993c957d14188a8fc6d3996b550fa424ef 2 @@ -12315 +12315 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixEZ.html 7c2a65501f125efe20b8288605620daf8a388dad9ac5e9b0e67134898541bb9c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixEZ.html 0d0924549f2648e69f47d2be486388a1b7917b5ebe423608437d0459e1cd6200 2 @@ -12333 +12333 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixIterators_1_1Iterator.html 8d9191f85901d52d7b1f7a5caf5ed1089341a66d150b4a4689cb4a8b7cf59d4e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixIterators_1_1Iterator.html 770397bd19ec48abeaae10079300dde97a4498f0a2e0f331ace7492f6aa517ee 2 @@ -12341 +12341 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPattern.html 9f6b1d4ea10fc8bd8dbb1631d251d2552003dace5c8fc5a1a3927864b427b5a4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPattern.html 42e0eae0b7cdf144d65ce92edf30313354ba0be619c09f49eedc1c9171b5f8f1 2 @@ -12349 +12349 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPatternIterators_1_1Iterator.html 456a01761cb4407b688f42fae59b0c4f12af76c3b00b93fdf0ed7910f615f15b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPatternIterators_1_1Iterator.html b742e380f05ddb8d6e5ad59e5b128a099a132ca55c400b08067ca13f386e3787 2 @@ -12353 +12353 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSphericalManifold.html 5be7263b9bcdffbb3839005966492ca40b0a24036414e104e095f33b55ca5887 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSphericalManifold.html ad03f9934287e2f749f3a0304215dfdca1d283ec242f5cbbdeb6fd50bd3902b9 2 @@ -12361 +12361 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSymmetricTensor.html aa2faf774ca5b7de23b67abdeef9d69128d46526665210902e2c012f139d1003 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSymmetricTensor.html d23392198009135b5e018046ccd068eefbf86aad5a54f00025477b0b226fe744 2 @@ -12365 +12365 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableBase.html 3e9a231f8c983519b3f81f1519b954a750461c6c8d05d66c09cfac08213cd48d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableBase.html 3e104a4474d827453a551f30b49f7e59827c1361e1e4216bc97eea69851f13e6 2 @@ -12368 +12368 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableHandler.html 82bcd51c8ee4d6c0431b12a78cc5202ccd3e969558c70d0b58c4f4e7b950979f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableHandler.html 07dd10192f234a1efd2094043b69aafabbf05e0b44fbdd79501b635a4ef41735 2 @@ -12396 +12396 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensor.html baa7d90043831ba962cfe4a97ec8cf871550ef7319925056bbf68d462ea38886 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensor.html 59129fab7d9a7b80f465124bd4ca40ddfba910678f03e33cd360c33b0e034f00 2 @@ -12435 +12435 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductManifold.html 9c0b2b61b243397a85a447493ccb9387b6cec89d0d4f76336abec54bb090b62c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductManifold.html dfdd41cd5134d33a1a5a4ca6ac28c8bf692084a5a2fc1d2ccc2bb8eef439019d 2 @@ -12438 +12438 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductMatrixSymmetricSum.html a87e7acf0b7b9f088c217fe9894a4afad17808e7ad5e19f8cdc2503fc5a0c33e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductMatrixSymmetricSum.html 1adaa1e87cfa9bea075808a38577d6d7873bcc55454ed4c5f79317e047aa037c 2 @@ -12444 +12444 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductPolynomialsBubbles.html 491aeb962c9fe404c13523c671891551c07e17cedf35dbcb5da702d83a639070 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductPolynomialsBubbles.html 1ff88a1f6f5c4302e8bff8fd077356d0654aee24da21afb9356fc256714b5192 2 @@ -12520 +12520 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTorusManifold.html 57a2d8863b0f4fe69a96a2eb6a90d90c6cd158d166a1ffd5f300212af49c7d85 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTorusManifold.html 822fbbd4587937066ce6e4bd7a4c771d033b3fcf14de3e3ae835c980d18c29ae 2 @@ -12525 +12525 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTransfiniteInterpolationManifold.html bd4274c7a1e0e68cfcad52f561b7a4a7683eaf1b57bcfe5b3ad2dd6c07cafa9f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTransfiniteInterpolationManifold.html 05d81869089039d143c1697c286bef8cc79d3cc9544071a93eaaaf1d8b9823d4 2 @@ -12531 +12531 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor.html 499b7858a8d18151dae2f557839e1dac405bc062e12ef2ddb2bac818e9e2230f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor.html ec4f2567b923d7b6b6c320f9d8acd4d64b501c82e90c463435bea64c95d2873b 2 @@ -12536 +12536 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_011_00_01spacedim_01_4.html c73840247eae154fd1a3105cfb2a8e3f5bcbf4afb48d9208eb09a9e0a6edd3fc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_011_00_01spacedim_01_4.html 6bae7ec4a63e862b92d7ba854e07696fef86698db515474eb260233d48b19ca5 2 @@ -12539 +12539 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_01dim_00_01spacedim_01_4.html 47f6e0f6de88c108a490c1bb9d01a0e61088b79676eb6b001546caaf345ea77f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_01dim_00_01spacedim_01_4.html 263ff72099ea63bab15a3690028f9103d8f23cd1180351e06bd18b3bf30272dd 2 @@ -12551 +12551 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriangulation.html 08d6119f94b448b37e437e3fdcdc45d7375329d9d11374e57a41ac2ef01901df 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriangulation.html 29d10673dac999d3493dd81bfdea94f7a446f2e4aeeca9566d30dca475480aa7 2 @@ -12558 +12558 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1BlockSparseMatrix.html 3abdf441794402bcbab919ed2370301f38c01cefd4f914ebb3b868373d3e49fb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1BlockSparseMatrix.html e03c0c16f44937d2fcf3380967bce009eeb3add5c071bf91deaacb0abe8f48e7 2 @@ -12564 +12564 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1MPI_1_1BlockVector.html 2738cf9e6ecbae9176cc32fac9a94552bb2914dd0c13a97e26ae328f477f9cb1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1MPI_1_1BlockVector.html 04d797aeb70c423af627da94f49648a2b1d790b68c10a021dca4a3e5f3c9169a 2 @@ -12567 +12567 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1MPI_1_1Vector.html 8452efddc925ab3946037bd9c3693fd50ad95bedfa09fa4f7726ca450ad6b4bf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1MPI_1_1Vector.html f4ded53dbce721fed81e9362151a63457a68cd25c703cac0b5acb01200736fee 2 @@ -12570 +12570 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1NOXSolver.html 33cbbd259861d1805844792c37b565e3029382dc9e6f0db9e3da8b75d4c98fee 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1NOXSolver.html 0513017b5ab036c083dd4e7cb3d0dbfc80ee3935beafb126913bde634207cc44 2 @@ -12638 +12638 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparseMatrix.html a338a16f7cc03c0babbde4394e0d4028b3d98d630be1861068dcdf8d61f92fc6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparseMatrix.html 0faad2cb16440ee0c530a89c2d4f9285b47c2df26b6018879e025ddc55f744b9 2 @@ -12657 +12657 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparsityPattern.html 1dc9a151964217b7ca319d37ba32d0231540ca413153041ad43422917e55abb7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparsityPattern.html 5583b3dab19f516956204794c4be1347c4c3b3eb52789c13c4d7264f65fa232f 2 @@ -12706 +12706 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1Partitioner.html 52e910923a991a6fbdc33c6cd57ad5ebbd906cbf2b84aaf863e84c026dba455f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1Partitioner.html 677e61d18580714ad2b5eb25c5ec52d16a5a57bb56eb6fa87770aefad5338368 2 @@ -12709 +12709 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1ProcessGrid.html 815a883fa74ef09f3ae9bf94d275201ec62956ec264c1eea4c84ee6108446a73 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1ProcessGrid.html 19d740b1df4ab0d62b67e1311722526ad1c0bc1440d7cdb5cf6796555aa49b4d 2 @@ -12721 +12721 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classVector.html 12b67619b1c7be3446ac9899f2a285cab41f9545555343420211f8ed2df2fab8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classVector.html f09a46334c72c58f45e28ebafb9313601ba3f727ed0f912dba7cc47826d8623e 2 @@ -12790 +12790 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FECollection.html e12083f4d49f7c5b71a3fe86f4c4e24d7a51258e7086c30ee680d715dcda9337 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FECollection.html 93f162f331fee4aca2438e7c2db015f6f5fc65b74cbee7f2d1205ec2bc5897bc 2 @@ -12793 +12793 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEFaceValues.html ee224cbc3631cee02b37fddbf01ca02247df5cf74eb25205564ac9f0660a8353 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEFaceValues.html 92c13b6f85dac88c8629cca8b0b1dc03107ae7c244167afa07f0403d6afba448 2 @@ -12796 +12796 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FESubfaceValues.html 318f57cb883c33051b4d3d17119759ff5e873be41372ffa7110f5fe4e5adca62 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FESubfaceValues.html 759d2e2ac1bcc206547b2200c65bd6646f75dcee9ff6bf3590bac95f1e48152f 2 @@ -12799 +12799 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValues.html a774f7fa717c9cc4449c6bfdfb3f32cfa05e1ebd799acfd77c3074fcea2d7c91 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValues.html 8be4f331b94359cb65a15d319eba633e47c37908ed82fa6e6d375cebc58bbf66 2 @@ -12801 +12801 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValuesBase.html 1a39ceebeec383020e619f8a24e31ac3cad9f0277759186241849353b53dfdeb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValuesBase.html 7156f8b73d44119c7d6d39d7da91b35fc762f2a9f26b0d26aaef84b646fb43f1 2 @@ -12912 +12912 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MappingQImplementation_1_1InverseQuadraticApproximation.html 3c6eff67fadf39b07c91b779aa5535f5ada55a6e92d1225b5e0aa224b4b9e8e5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MappingQImplementation_1_1InverseQuadraticApproximation.html 61ef12fefbc42c0684a0409085a5b34c1b982cdfadf6c69f2b359cc01b2a87e1 2 @@ -12920 +12920 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MatrixFreeFunctions_1_1MappingDataOnTheFly.html 4bfc2496fdb91bbc8ca4595ff85a65c63eb96e0877e1f011295f1caec9343fc7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MatrixFreeFunctions_1_1MappingDataOnTheFly.html e24873cb8d2d77a4deda6fc1d7b5cb00221446181f4bdf2804f76929b2319a44 2 @@ -12985 +12985 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1DistributedTriangulationBase.html d71a3e9e9a5f7d97e8d4cd913362d705119ab791bc7c26fa30e37f732782ad71 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1DistributedTriangulationBase.html 9cdeff4b0f8182f107dce24a0bb36535a9101e4532876b3182f781462c51f4d5 2 @@ -12990 +12990 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1TriangulationBase.html e796fd10ba976fdd18d46cc872658a7146c52356e9958b98e02c6839d95decb8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1TriangulationBase.html 5b3a9981dd4d950eb00e5b41ef9aa53804a50da8feeff78a504c586a1ec45e7f 2 @@ -13003 +13003 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1distributed_1_1Triangulation.html 40033e71721ab24d86a3d3269f011d24bfd6d02a504dd27d39d469d9abbaa1e6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1distributed_1_1Triangulation.html 17821d708410f8c0d110ce48fe8b64bbd61fd4b546006e1b237bb6f0c767988f 2 @@ -13005 +13005 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1distributed_1_1Triangulation_3_011_00_01spacedim_01_4.html 92e5fc75175236f1b63d5d821562568d42c4931528bef1a80a05304bcc700812 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1distributed_1_1Triangulation_3_011_00_01spacedim_01_4.html 54eb4029307a0cfbb23a59f0707d3b1d82634a5a2001ece9d66dfd29f2cb936b 2 @@ -13012 +13012 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1fullydistributed_1_1Triangulation.html b6473dff4ac95b0451c176158d443ac344ac174b679592cfd7abd10bcfdb380d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1fullydistributed_1_1Triangulation.html fc36a77183134570d3c63f66e273deafa013ff3d7aab45c99b7f3eb2059cc921 2 @@ -13017 +13017 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1shared_1_1Triangulation.html ef66b2a094bb70977a24695110061f37210d05ceabf6ce4a0e0b35cc6ffe8b65 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1shared_1_1Triangulation.html 832578a19a4b6089ae9ed97f3ca83a11b519d07fbf58acc5f567d349377f7c58 2 @@ -13192 +13192 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/deprecated.html 60e21f26fcaaa63001ca64431bf2ebbfb869505f8eba522f926d0fd663797569 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/deprecated.html 99e4c567bd0fe1b5f49485ac6ddb5e8443d8673f4402cd6892bf6c2e2ea71863 2 @@ -13197 +13197 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/derivative__form_8h.html 3c147e1246f4d6f05f1e1bccd5bb1384d3587a94d941c2b44e8755f5025508cf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/derivative__form_8h.html c9624fa4c850b86a9485a65ac84704ab52f36ff3b63b11949be873c7997f4b0d 2 @@ -14342 +14342 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__CPP11.html 2eec39ea9fc0d49e95160fade9edc1e65616de241b01313a23daa23935efc297 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__CPP11.html 7443a36a8ed0f3cef21fcfedf25534f14a9013c5dc610b479585853a0a7da8cd 2 @@ -14345 +14345 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__Concepts.html f1337f13ac202cedc34f4ee207c68c595e50bce7716152847e9b97bee1bc53be 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__Concepts.html 4f64132370de54c7fdbcab1828988a8a093e30557790e6070fcde0c05e14c081 2 @@ -14347 +14347 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__Exceptions.html c0b4371ab888b0fd2aded819830fe9fc62fb261454bdbc2e829b39a175033e7f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__Exceptions.html 6a37c409539c050ed1ef251d1ad5054e402fd6921c88a37aa501e75b04504596 2 @@ -14359 +14359 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__LAOperators.html 82960282b349e9465ee6bc7423fec078d76eaa9e42dfd51d70b108f1798dbbdb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__LAOperators.html 45c666f8a27f554b838a020375d13e31a63e02d6dd7fe971d1690697be4076c9 2 @@ -14387 +14387 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__UpdateFlags.html 532dcba9810d7be65654067976236040c82793eb50db11aef88bf831519f4fed 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__UpdateFlags.html 0f1336d352cb4056291e7aa299c5661274ba088f8bba05bb98b30a30b33de21b 2 @@ -14392 +14392 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__auto__symb__diff.html 879bc0eeccb12b3f0cb29545f3c1cc318f0bbb813377eb27272458f814628200 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__auto__symb__diff.html 9dfbae349d23ddd82100576aa2518a0685f11e3b4a66dbc3084bd69c8d25d269 2 @@ -14394 +14394 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__constraints.html bccca9568e186566399080a60aecb8a8997e94d1eb1a8d6a802ddec487789ed2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__constraints.html ae08c58d9447df2f39ee0e1e5f8e7de4c9b32770d2444e5a3e745ca33e199e54 2 @@ -14398 +14398 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__distributed.html ee9052e26a9cd2f0cbc6a29c993cd6f99e7f7c32bf22da0da95842b4010c1077 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__distributed.html 1b0998086bf2217fdec485216bca7fb142fdb8f74aad44392b9df82e53be35d6 2 @@ -14418 +14418 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__hpcollection.html a913d7b73e858785c2be087eb0c8990c3c3ca8b1ef7a088772fa39e86e28ba2f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__hpcollection.html 3cca710732ca36f40772d1655a2b1b4f61caadae81a317f16f1a9585700cdb9a 2 @@ -14422 +14422 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__manifold.html 2ccb93866c8320120a623eeab17fc7cefef20a3272b7f87a31e3c57a3339d425 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__manifold.html 5d52d47bad3f1e9109735a6e2c3500c9c3d43623b24fbf66ca9abd77b784977b 2 @@ -14424,2 +14424,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__mapping.html 60b20d45af1549ff70e116ab8fb3b0ae962d09cb32bac85773e8fee8d64732a0 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__matrixfree.html 8cc9102456702a04cbaebfb42cd6bf2f3a348fedfc0ea76658739acbc8e3cc14 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__mapping.html e91a37369710c19f079643c471b815478cfa2f4e4145f164d42733b679bbcc50 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__matrixfree.html 6235c7e81d8b2e2348e0c0c13cf980d9c596a1623432952931fd82bc1c96e526 2 @@ -14435 +14435 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__reordering.html c5ca5efadf35712a0d830c28c101cfb9ced96e39b6910c40cc29a48bfa0d1783 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__reordering.html e919be7468b46cf592f8d80d551074ce1868fc752dd56504e36743654ae29d21 2 @@ -14440 +14440 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__threads.html fd8c87f0c4752c170e4829a6b7857fb2a86eece9d73f1697c099e8516e7a51d0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__threads.html f3009e522330ea6e4b0decdcf797f44386c1f78d93ba41599860c3a727d0b5f7 2 @@ -14444 +14444 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__vector__valued.html c12f84f192b08a115425cbd51378eac5e261a2f4be7f51f43b144eebfca1ba0a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__vector__valued.html 7018adc6ad5238298644dab06958da3b4d73a00da024d5dbfdf8fde26974d45e 2 @@ -14537 +14537 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index.html 640cfb8c69f9b44643bc62cbe74d92e1afe1f7c81521927c38fded4089287082 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index.html f455aa19a246b6548fd2596912d8a8e15aea8ac8ebc44be1f4a22324b8bf2818 2 @@ -14540 +14540 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index__set_8h.html 86541f02a374ed3313e6e1245a1bdb2e9f9fd1754bbbd20745d6e930268104f9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index__set_8h.html 7f5026ac945042ebc0576319f17d38cac68682297ef1620d1219739d33455da5 2 @@ -14874,2 +14874,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceAdaptationStrategies_1_1Coarsening.html 42131ce71ab760ba6fa0cd5cc3cebb2ee61ae16511914001aeec30177e6d020f 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceAdaptationStrategies_1_1Refinement.html 4f8942ed4aa4f659100126739d6c4875d4266cc09fbf8896f427432cc7b75cde 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceAdaptationStrategies_1_1Coarsening.html d005ad98eecd62fb740fe0eb3fa762d9423992cdc6dd8491e2be3c4e4d7773b0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceAdaptationStrategies_1_1Refinement.html 82b75346969b480692d09d313567ebfbfa4a06381d6c2724f8ef6fbb431a2567 2 @@ -14890,2 +14890,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDataComponentInterpretation.html da50f6c7e81af77237adda64dbabe7289434138ba437172f9d9278215bb64cba 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDataOutBase.html 51481dae02b3d1a8e972ab95ff064ae0e970cac18dc91061476da455b85624a1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDataComponentInterpretation.html 6cd40085419662e8bc5a683bb532c1e9a8079a731ca6e2354b14742738650f67 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDataOutBase.html c1f5c7eb55769018150787e530cd9439de7a1c5a2e3c0798f7e2716f8eefae9e 2 @@ -14895 +14895 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDerivativeApproximation.html 6f81e3d0a25dcce34c7007c21750ab97c07257fb6457e71e81e498442d268a3d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDerivativeApproximation.html ce0008995d8824ebf85ac8c992c75e1e3d2874fd9fb5d9701205c9671752f9dd 2 @@ -14901 +14901 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDifferentiation_1_1SD.html d922af5ee6e226f4971ac6340b7e3eb312592225799a472aaa6ea28589db52a8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDifferentiation_1_1SD.html 6c32a4787f5b7524c7231965875012a19972ea8ed366db9c1dbedaa7bf4d70d8 2 @@ -14906 +14906 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDoFRenumbering.html f05de1aac38dffbc6d096f878f1c418d51888c8567b438f483ca925f55a3dee6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDoFRenumbering.html e43241079147cc0abdcc7e4984134f1248f332457c245712c3723a055a542d77 2 @@ -14911 +14911 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDoFTools.html 4caa185a6c6f10ee2d7d6c53adcc951abab6c2bead7f4cde527f2282d7b03065 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceDoFTools.html 023673ea6941ca3d732bd7ea55968c5c77e29671951ada0c94f782c8ec4978a8 2 @@ -14919,2 +14919,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFESeries.html 410199cd6dabb61722f59febd6365ae7c77495980ec5e21f404c30f4b9e55a37 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFETools.html 3565f6330cc9085faf899ea77700f65a8045ca236f826249d67b17c372b26ee6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFESeries.html 491aa750f117d235ff1adddddaec526c71d487f3466e59fb1a18ad0af3fc1445 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFETools.html 8d85bfbaa2e91feb302ea1b968b85e333017cecc90e4165a02c1eb21540ca0e2 2 @@ -14927 +14927 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFunctionTools.html 46a714638b5112c9661efe897d0f8bec9045f7ea8acc16977152de2ea25fd2ac 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFunctionTools.html 8ee67ad1a3f13564b904aefa921789bc1c7161f29f02ea75eafc2dc4cce417d3 2 @@ -14932 +14932 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGeometricUtilities_1_1Coordinates.html f50f83b4e5374a6ecfa9493720567d1f980ab6a31796409e3d6f17f67c7541d4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGeometricUtilities_1_1Coordinates.html 024634e74bcad04209bfd699af17dbe5e9fc444962f25074c49557f262f87e71 2 @@ -14935 +14935 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGraphColoring.html 3ba6dd64978faf64abb8f1bb3caa76c609f36c4b8d0b0d8489c83ed177cb495f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGraphColoring.html 198473783154190ec39485d3c8dc90669e56bd57eb213b2a781fe23692f12692 2 @@ -14937 +14937 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridGenerator.html 5e852e6cb501ad72c699780d7955b69f028c678753053fe32b5c6e33ffb6d64a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridGenerator.html 3ae46252edb3ef30e3ab0369537aed06e0c43162d38d8c2a434da06444321c77 2 @@ -14940,2 +14940,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridRefinement.html f2562519bb94835d3588e4e995f44dda624c0abbf7f78cd1e76aee2e95c415ee 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridTools.html 4e77770bc682b95dc77c261e65b30604333d13ddaf729246f4baa02d68391532 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridRefinement.html c70bfd76999a2ea33ca296d170a849ae2a688efce4b0ce09d1f08817eab2fede 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridTools.html 76774cfc2445346bfe4f3aee078521d62ad7f159c8f1ae70254ac4e1b20cd89c 2 @@ -14964,8 +14964,8 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators.html 19382fce31488856bd2fc05babcb10658a15496435d983fc276bf86f5a9aa00f 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Advection.html 247d7801b898210db3e39c8adc7a09aad10babaeb0d464d3910cf28abc8e9c7a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Divergence.html ac273bd3fb8db81bcebd4242473032442e6dce278bde3fc138dbf298bb8e1be1 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Elasticity.html cffb0a1d91c487f78b2c7ef5c67e3e56904b0ba6b6fed225127fdad44fcd12d7 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1GradDiv.html 5469fd0878042911e428426cdc7dd1eaa5a58caaca114476bfe3be25b20e7c0a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1L2.html 3d64f42e4225ed05a5125c8d54659a2d7c3397c862e6d0cd34eebcf94396c70e 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Laplace.html b31608790289004712f563398bdb8b5e2d8afa3015cbaa8092aa5eb5982788e6 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Maxwell.html f79fafe243c1b69625e9b516f66d1a8c1928686ffd33fbb6f1877adef090dde7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators.html 407abe35e88d7500d6e285371c805984ef2e8fb62d7b2ccd09908bbb6b439f40 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Advection.html 4f7cb7148e4fde0b560b6ff75910c7f4cb324d5269aad709dd6267561c30afce 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Divergence.html 39f2d840493c16c84721dca50b3c7b464fa6f7ff7cd9bd47ae38583e639358ff 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Elasticity.html fc164ca780e3926c511b0f871c8868e24fe18bfc65338bca7cd17b4015efa743 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1GradDiv.html a81fa818343bd3dab379eeea88f5bdd8cc61ad57948453330b527711b97c85f4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1L2.html d3f80c8fadab799be8d06d2a476af5c453a2038186daff5fb73dff4d4410b1ac 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Laplace.html 0fbd69551f2bf0b29e7b933a0fc9348c0eb5db3c9240a6eb89123da744ac5dfa 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceLocalIntegrators_1_1Maxwell.html 306b9e910d5813d27feecd71e57c3935a4baaaa7c94ec2ac54f1149debc3ff54 2 @@ -14977 +14977 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceMatrixCreator.html dc8158e6fd4551eab108d2420cb97a8116216d549d612ce1638c7b44b267cc57 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceMatrixCreator.html 301086f46806e9150682e4aa3f4e404cdfda3f17484c859240dd278f0884bcb7 2 @@ -14991 +14991 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceNonMatching.html 296443d8a99f66aa228f6d47105f56f7efc2f69ac9330381eadb46657aa23080 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceNonMatching.html a9629c01b8523d65702c388d520c50d869e81cb0ed9f14836fba43a68764a81c 2 @@ -14995,2 +14995,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceNonMatching_1_1internal_1_1QuadratureGeneratorImplementation.html eedd7d1abfbe8848c9aceed821bd4b546f4f868b3572e5ffaa0ef808aca9c726 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceOpenCASCADE.html 4d56787e509a7bc16cceec5ac0185fb18729014d8eec0857b89672af188bfa98 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceNonMatching_1_1internal_1_1QuadratureGeneratorImplementation.html 42f94da0246ddfd45a7b1f36158e458a2a325d6c116206b810361b54e8c28c2f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceOpenCASCADE.html af1200fada2225622b94efeddb04461d3de0c729113849c91d9d61a9cd6aa3d4 2 @@ -15004 +15004 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceParticles_1_1Utilities.html 9a89bed574d00d677b2cc8c84b2fd30349c09c484f68f60defd2815e5f7519a0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceParticles_1_1Utilities.html 9a03198764d7f3623d447f7b47e009f28f5cb17f7f8a573ebab2da6b4b90a0fe 2 @@ -15012 +15012 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Elasticity_1_1Kinematics.html c4106160dc3dacd6b9211e8d008ff811c338e71ff2e7295e6ac8b89faaa76b46 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Elasticity_1_1Kinematics.html 8d714582a04702923bd03f2132c85f65718b2f2f91db71e2de2425a6f23d053f 2 @@ -15014,7 +15014,7 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Notation_1_1Kelvin.html 6403f8b0810b8db655b190bb14b4fa7ab457887a2c111b01890eab7855e65a3e 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations.html 4dfc6d0de2dcd5116f8592f367362bdf676054fb6deb28e608425a64c1194468 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Contravariant.html 58f0990a4322595830687de173febb9f1edd4f380b50f4a7c49b2db847bad4a0 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Covariant.html 974e8db2431fd8a37a4b04b39decc53e2b7a79fd49f53860ada38253edca9d35 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Piola.html 37cc2b0778cad7cb75e750863c010c7b3be91a3654a8dfaed1538ed8592b154f 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Rotations.html f892561e14102286a28514ff422b38d52c106c287635e6ec4cfdedbe98aff425 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1VectorRelations.html bd6a32db082a3effd2e34f16166ed9b46ec9042ba282d02cd3fd83c40d6e674d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Notation_1_1Kelvin.html 14940913c77ea978b512b3c4047fc0fba741256b3f22a009639e4e1e0bc67d1e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations.html ddd9a3f852056ec2555f6fe3d78f9e2ced0c90a554b2fd8d99882cbf4cacc7fc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Contravariant.html cdeaa962e4c9ce888a1511609db759fc32ffc7edfec59c141df25bf2c7d9040c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Covariant.html 296d2fc06d1272e26ba93a08703c6db21dbf79e4142f13397321ddf2d4e0afcf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Piola.html c985e9afcb3505e942c6e1c600406bea53a21d78b11204b448ff139cad87bb9e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1Transformations_1_1Rotations.html 529bf19c4b52578f8cc1c637bf643998ee87bc1957019342e3f02ae1c45f38aa 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacePhysics_1_1VectorRelations.html 5003731e875ea30075f4b9d0c83570bc3999f769306af713e1f28efe3fe9adde 2 @@ -15028,2 +15028,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSLEPcWrappers.html 40b19b38d0d8b4f8066f4f63a4149b51cd4d4a8b3f8e745b6d0de43312c207cf 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSUNDIALS.html d1bd260c68ee781af16f8933c584b4e26ca1c48506527664b8c4932d63a121b4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSLEPcWrappers.html a3f4522f7447e2cef49863e9dc5bd1a403bf029f50bb19116e68650eb633d8c3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSUNDIALS.html 97cabfd440707a6ad818dcdc031f8ed796db03dd9c2045c7b00df75d6ab5604d 2 @@ -15033,2 +15033,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSmoothnessEstimator_1_1Fourier.html a3caec8947e4abf8f6c6a2699be7aee33a725e0bab0b5d79504c0d540c06102a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSmoothnessEstimator_1_1Legendre.html 3359ae3a6d2fd75ad2469fa1dd55433d765c865ee23209d4d5fb7ed97773e452 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSmoothnessEstimator_1_1Fourier.html c4744aeaf1ed543e5d45015a882b10fc3c5f8734049b43125be385bad960fb35 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSmoothnessEstimator_1_1Legendre.html 332320c772732e0934d4275e44dd8f5b3c6b87bacf078aaedeaebd96ffa85bc4 2 @@ -15036 +15036 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSparseMatrixTools.html 0642a87ed37a10117e7c87b0e3e4d2b06502901e08e38b248f9256f5bc0909ac 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceSparseMatrixTools.html bf2a1dadb57dabd0003d38a9bed29039829e0d9ed2d897b46031d2a9fe0ef717 2 @@ -15041 +15041 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceTensorAccessors.html a94c468355d211167f4a7e7f0d128d946ff5d552f531db0d2bab2325bb1913c7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceTensorAccessors.html fb0930fa3d36ad50caf02cf3382aa3c9676291bfad62f0328b9595520b3318be 2 @@ -15064 +15064 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceUtilities_1_1LinearAlgebra.html 02bcec9678686cf249e43a776cde44c6c9e6b00d1920415a0811baa9287ac8bd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceUtilities_1_1LinearAlgebra.html 46b4fe803b6a400f2964a0bbf106dca63b14bc6eeb9b921fe94beb7824536738 2 @@ -15066 +15066 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceUtilities_1_1MPI_1_1ConsensusAlgorithms.html 50fc8ab54e043e3c0540ae056191dd2aa36f6db5044c104cdd70d5917396b631 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceUtilities_1_1MPI_1_1ConsensusAlgorithms.html f51894fb552974a709f7cba19ca77453755e88c392bcd28fe2764e72b01dea7f 2 @@ -15077 +15077 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceVectorTools.html 62290578c2b5066f4ddde6c6028211ccca4e916a4595cc105c096d20139ea20b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceVectorTools.html f693540e7bfc387cbb7bbc2fedf3f59a975024f661c750c263cba01c66e9ceff 2 @@ -15097,2 +15097,2 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacehp_1_1Refinement.html 0018c70247f992e26f1f8c60309adc6edd09bc9a7f2a9d4ccb6c6150505b51f0 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceinternal.html cb412f9f4e4b2ef4a904547a9428aaa7cae69c1009fe41d4a17ac7329f223483 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespacehp_1_1Refinement.html 2843a4a99640f260b691f4568406dc17adb4f810afce84065ad41ff05b04cc3c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceinternal.html f45075d10ce406998137d92401d8aac9ddcb905ca6f24d0f8a91684c3087076f 2 @@ -15232 +15232 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceparallel.html e6be85ed9dedf4dec24c9a3c60b8d1bc3363db44196c10283151bb640d719bee 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceparallel.html 91076a12b04e52593e0c26272abfdd75fdd984a7d6efddddefbe37a0476072ee 2 @@ -16281,9 +16281,9 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_1.html dc823f3c331f1b9b05bfba9b70029eb4f5e3be725bd187da47b2d040036d286e 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_10.html 112803fe5b161dda68310ff5df81dd61bc48e178a6a52f4d9281838be002c305 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_11.html 3eecf0b4a2008633379f7a2f61ec643ed536791576a36dfa236b8f4b5ac9139f 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_12.html 33044f093c9dbf86c090147982b53ebeaf6d76eb86725c99e597b673ba8604e7 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_12b.html 0d7c86d34f69ec8e8bb416806248bfa47253ffe1ccbf4fda2a761349b7b70444 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_13.html f0f6d6e4d6eecc24524d63f42fbd86f1eab4ac0daf47f68292ee25330b101271 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_14.html b588a06824fa602e9ae012b55db78c8d67759042106365cfeccbbdcfe1d81190 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_15.html 7e9de10e4e6334d898115d0fd8a7baba480e87548c21db617a597cc26bddd308 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_16.html 640128b9a5a96c9a151f3535e225be40f12171c8bb7388d5b896dc35b502350f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_1.html b0c32f89fae9274119ba7e7bebc11cf4caf15ab09a3af23463620d6db887275c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_10.html 79d9034206dae5b7210fcf3ee5c34f283212c385cbdb6cbb428317fbee018cbb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_11.html c8379e08120b035738b564e96e85d02c7547d864a4b79cd9fb7d6d578af2ca40 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_12.html 625ff1acfc184fbc7948ff6179137c182bf800ff7faba7ac5031d811275d89bd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_12b.html c4d091a910453131b8b665e208fc9c1be3437550ab3adcdec15cc71dd69b92b5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_13.html e81ba4c936913957ae2fbb727eeaec54b5adf1108f4b0b55bea7978e1c4801a0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_14.html 81f77428a7f67297bf7625f7a90638af3ec4eee1c4266cb5ada64975d6075b95 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_15.html ccce36289ccbbcd6b3a75524d74dec14d499b16d21a98d31ab3765823bb4614e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_16.html c522546077a8cb189010d87fea0b3f74ac6eac9772f2ba43185b5ead72207f1d 2 @@ -16292,40 +16292,40 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_18.html 27edc03dcbff9f706656d2e81a5af17d45bb60493670fff48eb33a2d3717822b 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_19.html f47fffa15e9aaea827fa396e59de0dafb95527133e9925377c29c1e7cfcc9aef 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_2.html f1b91f173fd9136c6dc05173eb0e33837e7a7034e642e02f70a9208f953d1524 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_20.html 0154e6db8cb38c1366045b6c62c68e916ef1dfee25a33e4e4bd1e113402271b5 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_21.html b7a106be3b4926cd2cadbdf03f9eeac017cbdb638b40eb6f9925226aafc6dd68 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_22.html 276ae34dd07f9e13c2bf12f7a3f899ff6b908e96d5dea233adaf221b76e4c31a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_23.html 1a55938ac6cf9b2586f9f37c8596057d0c1663d0b8fd9af82797971944258fd6 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_24.html 625b91a67b95520af5c99aee2532ac58e40362df55144b9c6864071a49b7972d 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_25.html 494f862dae975ca7c0f273b7fac941131df769c0033691c90dfaaf82e33d5a68 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_26.html a7456b2172b5b9a80c9ffb46894418a635585665d457a72694c85f41a55d9815 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_27.html 1907d2e8f45842f4b5e591693395fe74ba8963956ac6ea12eaa4c6bc42d91c93 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_28.html 313be82a21786a1747b4c97e9ea4ce37c0189b3fe8e3ea51f84ab3ff8ebb392a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_29.html 508de89d609c7ea9c875be99659bc9cb2e38700bc6a421beff1b641279749a2e 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_3.html 3d7444cda5a2850ffd810881820e63b36b2e1f14f0ca3b0c7f87dec050d71f5e 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_30.html 7e9f2e3d116b3d4fa7ace48a3b8c39c1e83ba81941e3b88a8ba1dd11955337ee 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_31.html 61eb8a914586d8ede1fc18b6c4535fb2dec6122f8b6d85af7cc6fe240a654330 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_32.html f720ef3da9d7aeee24015db59b2d570e0410aeac9d6618e7a90c0031c4f185c2 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_33.html 9a50167a941fb6fe2af2d503e7bc80a181fb8e2a4fd79473bb182d0fdcdb4bf7 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_34.html 3b31ccbd6a0ea7771a0b09f931f5dacbced8b3df74a749c94fcb03321ed753d7 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_35.html 88b745c46295e0de133f2261431bea57de28355620f0ab4629d6f7f015f60727 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_36.html d983d9975a11e6376607a19edd5f42ea59c428a59692b0ef0c940e37f6742f21 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_37.html a31102217c358ec3c466aca5a946da9b7dc3f7452f8077bb8a5675fb81b011dc 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_38.html 6366d78286a58a8ab5d079bd7258f4223fffea9100dbf5995a474ecc4cbb4b7d 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_39.html 7212b8797fe92c5ce132a5f6a9b2f2dee7a032b8f7dc60af2e4b24db62e585d4 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_4.html fd8ba5d751505cd10543aa437adf09dcb4c85a4bdff7e6173c1943eedb5f1f50 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_40.html 69e9fd10bc1d7757574620b19db80a47442249176b91adcc3c47a75ad89b3d1a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_41.html b9cbc8161d6b8f8377971ba8581f8b5474760196c9874df4b6f51c6ff62c4c16 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_42.html 339ca0ca1174dda1d7251d296037ba13c2a57ab2a68129f6c0448534bfc77ab9 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_43.html b5f8fee8e0ea1f4c17f4d7afc1f55805de1ebb3dbc387a2e658214046f58cd5a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_44.html 6bbfaa421acf49ba13fd43530ee20ce08d3509827824681d8a6838c8bdb2c55b 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_45.html f6f115bbedfb24eecf3115c8147b153830140ac5a6795b9508c24070d77acc8f 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_46.html c9045f680fb885f7824b7cb0dbee4cf3e004c6b773c167819d7a5bbb46a8b2d3 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_47.html 0a64e669be63d5b0a4e607e6df6e1ef5fa650f8f68c85847437b9bc7302a0056 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_48.html 31681aa2c8a2b8b6f765f45ce54a38959ff08ab1caaaf9870813f859e486a9b9 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_49.html 80280b755e3494188e9fc135b28c476fbf16ee26a47c9d18f013c7ff7dd81cf7 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_5.html 55375219df1ce72dc7484b576ebd611e8d22217f1e446f44df50e9123f73315c 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_50.html d2b17972ad0be316738d757d82ea85e2c167d7afe5ec04e3d5b44768bd990db5 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_51.html 086e7bc24714b2bbd8cce6028a4450ae456f203f20af2180dcf538ec49a74d9d 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_52.html c1c8b1e079f0d63a03b851725d18ca9932c2d211db8272f6db8a15a4c4f0bb57 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_53.html 0790397acc9c105ffe059cfc58e5858c320b0a5ce93bbd1d2d453598ec25651b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_18.html b7a52008633e96c2bb05096588e331a14345c10090cea4b25d9c8fcd09da42f6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_19.html 795a35799cf9e69a0c9e69725e96c60db752341154775253db0af896b7c1f6b7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_2.html a2e57e4d4703f2a235a8567684ab09c44cb61de62b52dc21c8f9472d5e27d935 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_20.html 8eee53c570d085208c041f65840efe30ebf7047d4127074045e9c68c00325385 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_21.html 3b672e392ddd0994404917726e93f61a38ff98bb7e7962cfecbbae565d90e5bb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_22.html 797c31264e62bc6bb77729ee3795fc668ac943715015ac14772bb48bceabd599 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_23.html 0ebb8c2dcfc038032370ca02b0f62992b31d650067bab542f0005dd00512a6d9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_24.html e492e9449dd08aa0210a837f1c982558eb64830ca6bc8c81324c7073aea8af64 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_25.html 9b269d8479ce8f017a3df4c51dbfbdeb28ddd2e770d2e81752ff885786d1b967 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_26.html eceaa6285e0bae3e200fd88e13fcee29905f2674d8f6eb9ebedf1e17c2cb9e6d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_27.html 97419d2a8f84b04f84ffc19228dee21ff881fb03ae3a4593ff0b9130729c6de5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_28.html 0aaeb230a203092440a8274c807a856e2be382ab4789753b5bd2cb75c6e14f48 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_29.html a92cd6235058f6168ee7f1b7fe10e88f994a5b92298ae11eb68426e4c7cafedc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_3.html 1097131f5c64c5f5e0050a6502f6fffbe05aa09f97f2854958484671dad2157c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_30.html 30afda04bb85b4842b0feb96cb5a9bc629468afeeabdc8b4cf0532cf87d23f32 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_31.html 28221ace62ec717c91cb84ec080aec433a1d8b0af7b3fe4474219400ea30b55d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_32.html 4576418b41fdbcb6a7cacdd08aaf65e14cafb620c31516be08cd97dac1de483a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_33.html 725de7882d128b7b11467deecc83362364c2cd15f027117dcac7a0bbb11a0790 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_34.html 7d6684db6027e0f53fff4662e2fec41d3e7707c0f1e6e7c8aa7371082ed762f3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_35.html 0a72c551ca43a8f903f652639f46ed9c6078c5745346dbad7bb8152ae9f163a6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_36.html aef3ee52725b5ca12295bc85c0b030af8477d57930f0e50efd086d1cb8690465 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_37.html f0037b74b5b9015b4ce85cacd6d945f48707ecf60fb36d7a1f5cf018dd590a23 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_38.html f9c424b8ebee2b99c05a58670a01eed2151ca9cb4a386b126a1fa33fe25baddc 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_39.html 2719b409b1982b71c32cb4510500b38d98fe766348056e07d607cdfa09b3e377 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_4.html e018c6cced3a15ccc59c15b323b85bc755460220efef6844ba929d7593b9f450 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_40.html 4b191c03794f6744c2921eb2176d61b61b96a4e9841d33840b1eace7c260e527 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_41.html 7e1bd74453e7c0e4663b76966aa7c56f3f0bbcdb310a5aae7620f644ce24a96f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_42.html 6b45ca9e9635a5016ea455ec25e01b9b2d0741088490e923770f5383ee5c4da2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_43.html 0d1d32dcdd3a7da145ddd1f3a7dea137142d2d426574645b905e41804f3e212d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_44.html b3cb7263b244754c5790e9ef6358720fb5088b5172fa8f9203c3b104946a85c8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_45.html 509904b7b981668f2a84321a15362fbd4ca4a90fce1c4d792e81b9e1f9e5a480 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_46.html b914a78bae236a47c5b311ad82cc5b1e94158bfe543768bc2c938648ce23ee2d 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_47.html e22e8425c422ff980df382266610689458d00c837a7d3de1c1321d0373850448 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_48.html 940c97d8068960cfda5a4c8cbe206b5218a99079de2ba5c15162e7e911e9f2a2 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_49.html d3232625b71299f4fe486bc7e290b4ba8132c2c29bec4b41f02d7e15f9de26f1 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_5.html 041bcd4249856f56a6bb0b320c989ed980fc9ed8751de2565b0d033bc54e9243 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_50.html f46f2a9520a3f608235f44d8cd964dd7ad17ff5d0c16ef6710a01b88d54e26ea 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_51.html 800dd586ef9ce4f9ffc35ac9a4b636498b9abdfc035d0ad4cec884612bd3b522 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_52.html e515a074f2e9ad5c7146059a4d98d6d4a5cf7b601542364a04dabf48befe2b88 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_53.html aa0bf178c6f47100cb3a6a10173b74409f1cdc26c6b8d3901eca3acc99a778ec 2 @@ -16333,31 +16333,31 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_55.html bafb04403ecd069b5adc09fb033af485aa0385c886cc1fce3d82cb1e6ea699f5 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_56.html 763929590edb000d40aa8fb6c114f2fd25cc705442695a17692b2a34da5580ee 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_57.html 58c49b92cc09c98cc42f3c5e5f147e3d2cb35e2a5f8893544332414fcb2b86f4 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_58.html 8326905db30a51e42beb10dd513ea08584a37a955739c3d42efe473c5634587a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_59.html 0bdf6ef98580709189bee99a27c0b47756752c4307849619d1d15e088313b2e3 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_6.html cd34f21400748bdf698f05f8eba5e11dc74843d6524d9520796d24078ed82639 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_60.html ef3b1979251f1a3dcddb5687b7b580c26e49364665ab212a1ee18a9d1168f185 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_61.html d6b869c6f6437b66bec9f6ca28fe095c614088ad7c143c67d687c4591e5abdab 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_62.html 45d1ac75aecc8e33cd51af5d0f38a1d909a0bfbcef74099139bdebb357532d92 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_63.html e23d2aad77237f1a399ec7d73bb20769aa08beff5570ad3e3412b503ba84c5ce 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_64.html e2947f8dacf18e1f7367112db4471d1a97b5a3352a8425f54369446b54bfb4ac 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_65.html 5e5cc75de7203f5c998bf84ccb27f8e6844ac57468e95819c6aa7eed505ee222 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_66.html 8f1641652497ebfb7540bfeed7f1f4a2a313561665f29ba7f8bbd2d6d7781b06 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_67.html 1b08291afe51c5f2f9144880543bfa14938035682a7cceb41ef28e4cbf5fe669 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_68.html effff79935b0558cb1e50082b84ecb6f54a55b520826dce32c26fdd6acce7adc 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_69.html ad1bfcf199d02f806cc10eac0c441a6591cb197fa0297b3463dc70b6d844eb9a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_7.html 6f003f0f240f04e2d9b148a4f7a9ed3f8b4d7a96f0916c0b10d69413b67b6adc 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_70.html b6f0091dcb5b76fc53e12f95d5a87033f687bab75afefde638ade94d061915d4 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_71.html 96b85391ea462d00a4b8db5cf06be440fd5fa2639d5ad1078afa91703b2cada7 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_72.html 00b05bde5009b6e4a0301c357bf2ee0793eaf11997ff2a49b8d50a18b46c7672 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_74.html 3a25412ed9b21d0ad3ae4563f943f532db1169de66e9e08dff347b7f829ef812 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_75.html 6240ec654290666a5faabfe952f322fc1ea989f01df05a253743b666b3623fa4 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_76.html 8c428964cd340b3a64847f48c489ee792b5e46a68b48d792b5b69f7ca629bc0a 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_77.html 755217bae65fc2f0a7872fe6b0a9c0d8c30a1fdce36aa791c3c3b3c3ea7afee2 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_78.html 7713f27a3d22cc55df6130adaf81cbdade14fa502dd93dab7540b4033ffe39fc 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_79.html 75a9c719aa7e2339c242bdd5afee73682b4ec0cc42274d25c2a2018e69352574 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_8.html 3379f5215d9ad62d8032a968f64364ca5b4c2e0dfac52a111c89e4a8eeb95958 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_81.html 3bf00236d3f212ff3be6d98359111a4921caac8dcc07da462c4b63680e98fa39 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_82.html 0baa14e66668f801fd80944300c2a0f4c07b39744f64f8bd073064f4a6df8975 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_85.html 120ca4ccf0f6c531eac51fb29ec8688f3dc0bdf75070fff96e3009c645995ce4 2 -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_9.html 7f9ef66d818a008eecfb044ec1af69a843e1859218fdb68cb69a7e4561e392da 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_55.html f03b958c85560d6fbfb77474e477bcb5410325789b39325028d4bd36f4c95626 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_56.html c7d8e2127fc46bf88b10c6f1627907c83cac5159ea5e1efed523b9d1face1169 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_57.html 5b0b3e8de9be45a8db7b8fdc633cddb88a4b1ca917e72fc8834ed526008dba71 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_58.html 27576f7969efe114c2c67da16568ce5b1f0026a147078101a65934b7d10ac66c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_59.html 8297039787f554d2d0188b1a235979ff029f93329d393cf22847db763536cb3b 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_6.html bdb5a667c66d3c7db889d3e7dba841b3e9249dc3ac9953bfb2eaec93c537e7cf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_60.html d70c334a118c74c0af3e44e4d7df58a9da3b456db1586922cdfdf16c3b99ff96 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_61.html fd94802adfe821bd37df53b9c2e02603aec80ee7d12f2eb4611317c3b7febcd8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_62.html cf5d49c9c38323b899712a44d1afe5cdb0d3542c47fea77b8758518f4f8dddbb 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_63.html 5d80928bdd0f6f26fa5e28c3fc62bfd78ec00c0529572459b863c06d26a4b297 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_64.html 395c3ab291f56f99aba97480a5b9743a485c78ece18c6cbd36b33352d808bcfa 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_65.html 1f9a334aa99df52499b5606ecaa30db01f315011b08f073725d8ccf6144958df 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_66.html 10f75d1792f3baea327877731b62ffb22351d0cb0242e3ebb4c7161290685b24 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_67.html 52401dc6f8f3d4b7b70f38f405ce43d1bd68f6719f3c260aa1a778e5b6e66ee6 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_68.html d709c10caf2ba54e9442447804cca131efb60179c70016bb0b1844242c43b732 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_69.html 707ee951d7854400c2c4c4d9098454280562db404e0aaba7d5b375c9d1c5d193 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_7.html e4f91c406c69b354f120960947513e693aece28c67e805f4d33f4e34a9871def 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_70.html 3e6f2a94a1d33e9c0b98c032b7f9d918064d2dcc271e1f7f5cf40c0717bf62d0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_71.html 3ab396fd811a6c3a8eff8f8bd0250d104f0746cb39805aebbbb71dbaf1399821 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_72.html 30b367577b275059519335bc583fd7d8fc39fd4775773941357933a171e60aae 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_74.html a0d0ca04f522421bb572d53f3b6c264dd5a2725c396336feeefc218a2e2f9567 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_75.html 95d08172fba72bd2a63a8faeef592f768ff93994a4412a2367770104f753f933 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_76.html a7d8995cb3578ea1a8c3774d9248a85d755d2faf93899981148032b09a6bab9a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_77.html 09ea852ffd74c63258efba7bd0eb1be3af5ee08f0aa8a7970b483210dd3c2f8c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_78.html ce8b1e8d44cdc655d469fdf1f8733bf9c5f0bfc776f715829759cc1b0b1b446e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_79.html 309f6a594dee25270b438460f304fee41eec3485f73881af6527adf6a94dbdbf 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_8.html 8d9f6981159a0a322fd5b703829377e1981620033c9e8f3742ab591640ee2a83 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_81.html 98951e0d4f27064ff4bf05d512972524c248907349a1454691ae99cd2589af48 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_82.html 0022ac510797b4c004173a5f0e1b9b7a1a12fb832fed18da9e51a84bb04e8630 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_85.html 28f9ceb75079c72e33adfd9b0a0f9fd95e7100045b9d9d3fc0ee13911b75e8b9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/step_9.html 0fd743ad70e0253eaef13054ff22821137c128a4682b3211a4e802b0e2f411e9 2 @@ -16417 +16417 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structCellData.html 01448bb2dab4eec8d6397e8fcddb4a05cc0730a34aebe22f2eb392b333647393 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structCellData.html 591817c3a0d60f0c69d1047f5945acac93a0c72b4c457ad8927e07f1fdab2df3 2 @@ -16422 +16422 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structColorEnriched_1_1Helper.html 4aae0d64956a34cc464a13798909dd81843c4be0ea3c0793da096bcfdb6844d0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structColorEnriched_1_1Helper.html 8e0bf8e9ad3eb304cd2e314690aa6109f7e204b165909d0f5f95764739e5f012 2 @@ -16473 +16473 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structDataPostprocessorInputs_1_1CommonInputs.html de5b68aacd06b900ee494e42469eb3ac9cb9add0250b09f4199bc5e5c8249215 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structDataPostprocessorInputs_1_1CommonInputs.html b5020a0ed1f1f5acb5373c344f82ddea36fb065189017bf4880946adb1155cc6 2 @@ -16479 +16479 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structDataPostprocessorInputs_1_1Vector.html 1ebe750809cba5a6a52b4d642f10d925614e885ec00f2275edfa6e26be494619 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structDataPostprocessorInputs_1_1Vector.html bbbd9e449f5ed0d78b8f604391f41e5306b431fcf22ae158ef27cfffe814df56 2 @@ -16633 +16633 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1Scalar_1_1OutputType.html c1a4c26a34ce26aed5715602628bb105a14dfc157e5de6247607efb5fbf414db 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1Scalar_1_1OutputType.html fc9c299df554319dd995c84251e04aab3578512a5958bb37585802f261e1e87a 2 @@ -16637 +16637 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4_1_1OutputType.html fe5a6edc900130b45850a951af55fab20c0a17ac6eb3f6c51c8f1406d6573617 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4_1_1OutputType.html 7d001cfbc5d2fc68c7309360d910e563516adc64f20c2c98cabf44fffdd438fd 2 @@ -16641 +16641 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4_1_1OutputType.html 33e5680041ee9bd456a71bb5c85235d0c177171e3b270243541bbc5ba91a8f8a 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4_1_1OutputType.html 26d6107fc7c6118b654aea1dd8685caeecf16d8ddc739fabc6bb822e193a3127 2 @@ -16645 +16645 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1Vector_1_1OutputType.html 152901536d173dea95937845dc7e7ce6aa3be217544046a0304fbb2e33996ac9 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structFEValuesViews_1_1Vector_1_1OutputType.html 372a4f38e035bd0d4a642e9577dfef81e7267f106744093f1f327748da2246d2 2 @@ -16655 +16655 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGeometryInfo.html 7f3aa1b3b7d93fb5ff850e7848e670be2b16904a85b413f6fbba83404461bb79 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGeometryInfo.html 568d96137ad3e244879cffffe227ab2654aa4809530bbc3e146d3f07aa5c3e6c 2 @@ -16673 +16673 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1EpsFlagsBase.html 62054e315ff56fe08fc63f9c3e45fc0830cfdfc4208fa25cbc59093d74378d60 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1EpsFlagsBase.html 2f4aa9e299fdb86c0151700d126c747124753c9b10b58e7e2999471da4779dc8 2 @@ -16676 +16676 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1Eps_3_011_01_4.html 19abbf46ceca77b4c959188383e7c7e464b15825fd3b6f4fd2d6c8d6893571a7 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1Eps_3_011_01_4.html bf92ffd56a65391cb18d599123379ba3ccb4a337f98e8dd1c262bb0e117c9236 2 @@ -16679 +16679 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1Eps_3_012_01_4.html 6847a450134f4d6d910e87e1ae0745168c7dd1ee3dade787700f15beb1ed892f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1Eps_3_012_01_4.html 5718b9f6a2960e7089924e8f1ad065ab7615d330199f93b89e4055e70f7a2f01 2 @@ -16682 +16682 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1Eps_3_013_01_4.html d67f064048f7661ecfd267a8fe7f29d8d5f12bad4193ca22f4931a37c11eddb8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridOutFlags_1_1Eps_3_013_01_4.html 910e0814aac1f0533ab29197256ec47d5af0cf9d68cdfbcb330f59569c9f3307 2 @@ -16703 +16703 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridTools_1_1CellDataTransferBuffer.html fc7625b5d20b418f745cc09ba9f8b1761ad45d43ebd0e477c8ffa164fce7bb1e 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structGridTools_1_1CellDataTransferBuffer.html b1f16174ee9a5923f4e89f942d97c2336a530331e90dbfa01df80fbf59249c29 2 @@ -16776 +16776 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structNonMatching_1_1AdditionalQGeneratorData.html 665c760f23ce14c027cd40d5ebcf7c7afac04470ef06141070fc546c8b3790e4 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structNonMatching_1_1AdditionalQGeneratorData.html 214ece7f7f82040e5f4e5cac26aff1a322a1f1069a48c12c825b3510d5d8f4cb 2 @@ -16780 +16780 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structNonMatching_1_1RegionUpdateFlags.html 85364b059cd1a546ebebd5a14c8f01334c5b1b069a0286ca2cbf986983e7a20c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structNonMatching_1_1RegionUpdateFlags.html f23111fa04fc5c35e5cdc082cb637d270eb7e0c59947c330cd74cb0fa164cd5d 2 @@ -16784 +16784 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1HeightDirectionData.html b88076d4a1d90ed41e627bdb495da2c2fc4f5f911c7ed35ee70b846aa4fdb525 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1HeightDirectionData.html 9693bb904f2b57489de1b1b00421fe54d987e9d91df2319407973edba9cdbc52 2 @@ -16925 +16925 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structProductType.html 778145fc78cfeb75e932b127311b2a586b3708cf032427e11126d2f510b3325f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structProductType.html 7d44d08f4099e51ebc4103ab73496db5ea59e6ef0530a0d63f208ee49ab4ba77 2 @@ -16956 +16956 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structSUNDIALS_1_1SundialsPreconditioner.html b5af640c63f2204032eaa6cfc071c49641019099b4d67019a8100387db291e15 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structSUNDIALS_1_1SundialsPreconditioner.html f1814681429b1a6750aed26a58a88402175f77f27619c5caf3bd815abf9d83a9 2 @@ -16997 +16997 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structStaticMappingQ1.html e2d398b7ed26c542fee0907e561127a0e2c66962c84cd85fa0d8a0293aa5843f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structStaticMappingQ1.html 5247047554a2b227011825b5674fae8a7fa2bc9acbac06f1126f4372be50fd74 2 @@ -17001 +17001 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structSynchronousIterators.html fb02c8b7504085be6fbf9f6d7bbd031cd9b551ce191d362b475a824206278833 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structSynchronousIterators.html 79be7602cc43321123796a775e0300ac66303cdd00b6892183b2dce0b2ae18a6 2 @@ -17078 +17078 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structTriangulation_1_1Signals.html 4986857acc143875472deb8ee6e8d1ceef886007369a5cf156a472e6aa5f69f8 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structTriangulation_1_1Signals.html 75fcec6f7c21827704453443d7434fa5e9402824cf3ae54ab2dccefa01e22218 2 @@ -17101 +17101 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structTrilinosWrappers_1_1PreconditionILU_1_1AdditionalData.html 924a30660d947bbf0f697b1fa31b1600b6ec3e62d892644eb6920b889fe1d912 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structTrilinosWrappers_1_1PreconditionILU_1_1AdditionalData.html 54354acedb09b297170ffe7878792ca1e85ea1f11e317d2822d96834c80bf92f 2 @@ -17174 +17174 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structhp_1_1StaticMappingQ1.html f4d165d5ecf49b60ff5b38bb5aa3e0aee5a682d08b8147d7187e663e671fdf78 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structhp_1_1StaticMappingQ1.html e2074d2e99a22aa9869e93a06c639ec532f938cb79699ad8c094f1573bdd50f6 2 @@ -17366 +17366 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structinternal_1_1MatrixFreeFunctions_1_1MappingInfoStorage.html 47d623c961ec39830a59a901c39162ea80723804dba7586f618f165ae92859c0 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structinternal_1_1MatrixFreeFunctions_1_1MappingInfoStorage.html 06f214b03a2c17431078aa0ecfc78d8552f775904b8ec7180ea591a5c6756279 2 @@ -17377 +17377 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structinternal_1_1MatrixFreeFunctions_1_1UnivariateShapeData.html 2ebe52444c6eece17b52e7be3a549afea09f1adb13b2b74e3ded2a1ddee33afd 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/structinternal_1_1MatrixFreeFunctions_1_1UnivariateShapeData.html b1ca67c4ab89b423ac4dfdafd52cdfcd9bc6fb2a2cf73368a83017919308687d 2 @@ -17905 +17905 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/symmetric__tensor_8h.html e6279057c76dfe8de979cff08a406a3f49b256f170c549b3a5234f03282d0a5c 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/symmetric__tensor_8h.html f54a889b8b786e280225b6d9a12207d21ef7d876b9fd7e6bca59cdead5e71dab 2 @@ -17909 +17909 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/synchronous__iterator_8h.html 6b90ef60bc12c3a0448b1ac45bb0ac184098d734d7797143ab9d0788ca3cbf4f 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/synchronous__iterator_8h.html d4d8bf691727f67d69a2db6e1b7c507f33cca24df7fb515f341a52a7aa6d97ae 2 @@ -17939 +17939 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/tensor_8h.html a6f6c47bc14547973fa7d137b8bc8f28a82d60dffb1673b7a1cd1689fbb45ae5 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/tensor_8h.html 45b1ee5362f0ca2cd0f0de8640f6d58cf7c00204b6a0464350ad23de37a91a37 2 @@ -18001 +18001 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/todo.html 9d803e6ea59742b4e2d9acb6d38ad78f5f2c1c0ab22e599ee4b1abfd9ce5d3de 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/todo.html 8a49ccd0ee2d938c2f3f963fa44fb436a3c03fb6e1d64a66523f5a0ad6c79915 2 @@ -18220 +18220 @@ -/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.tag d76913c2ac1087f4a88a32ff0bf58b4c7bb536883e267aa5b5aa72a037002fd3 2 +/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.tag 5e710acd15b8b9964a166e5f0b5e17553b9fe867640439d9ab895eec4db51dfb 2 comparing rpmtags comparing RELEASE comparing PROVIDES comparing scripts comparing filelist comparing file checksum creating rename script RPM file checksum differs. Extracting packages /usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/DEALGlossary.html differs (JavaScript source, ASCII text, with very long lines (1525)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/DEALGlossary.html 2023-11-25 15:25:50.353417508 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/DEALGlossary.html 2023-11-25 15:25:50.353417508 +0100 @@ -100,8 +100,8 @@
It is often convenient to treat a matrix or vector as a collection of individual blocks. For example, in step-20 (and other tutorial programs), we want to consider the global linear system 
-It is often convenient to treat a matrix or vector as a collection of individual blocks. For example, in step-20 (and other tutorial programs), we want to consider the global linear system

+
where 



where 



Using such a decomposition into blocks, one can then define preconditioners that are based on the individual operators that are present in a system of equations (for example the Schur complement, in the case of step-20), rather than the entire matrix. In essence, blocks are used to reflect the structure of a PDE system in linear algebra, in particular allowing for modular solvers for problems with multiple solution components. On the other hand, the matrix and right hand side vector can also treated as a unit, which is convenient for example during assembly of the linear system when one may not want to make a distinction between the individual components, or for an outer Krylov space solver that doesn't care about the block structure (e.g. if only the preconditioner needs the block structure).
Splitting matrices and vectors into blocks is supported by the BlockSparseMatrix, BlockVector, and related classes. See the overview of the various linear algebra classes in the Linear algebra classes module. The objects present two interfaces: one that makes the object look like a matrix or vector with global indexing operations, and one that makes the object look like a collection of sub-blocks that can be individually addressed. Depending on context, one may wish to use one or the other interface.
Typically, one defines the sub-structure of a matrix or vector by grouping the degrees of freedom that make up groups of physical quantities (for example all velocities) into individual blocks of the linear system. This is defined in more detail below in the glossary entry on Block (finite element).
@@ -133,7 +133,7 @@With the exception of the number of blocks, the two objects are the same for all practical purposes, however.
Global degrees of freedom: While we have defined blocks above in terms of the vector components of a vector-valued solution function (or, equivalently, in terms of the vector-valued finite element space), every shape function of a finite element is part of one block or another. Consequently, we can partition all degrees of freedom defined on a DoFHandler into individual blocks. Since by default the DoFHandler class enumerates degrees of freedom in a more or less random way, you will first want to call the DoFRenumbering::component_wise function to make sure that all degrees of freedom that correspond to a single block are enumerated consecutively.
-If you do this, you naturally partition matrices and vectors into blocks as well (see block (linear algebra)). In most cases, when you subdivide a matrix or vector into blocks, you do so by creating one block for each block defined by the finite element (i.e. in most practical cases the FESystem object). However, this needs not be so: the DoFRenumbering::component_wise function allows to group several vector components or finite element blocks into the same logical block (see, for example, the step-22 or step-31 tutorial programs, as opposed to step-20). As a consequence, using this feature, we can achieve the same result, i.e. subdividing matrices into 
If you do this, you naturally partition matrices and vectors into blocks as well (see block (linear algebra)). In most cases, when you subdivide a matrix or vector into blocks, you do so by creating one block for each block defined by the finite element (i.e. in most practical cases the FESystem object). However, this needs not be so: the DoFRenumbering::component_wise function allows to group several vector components or finite element blocks into the same logical block (see, for example, the step-22 or step-31 tutorial programs, as opposed to step-20). As a consequence, using this feature, we can achieve the same result, i.e. subdividing matrices into 
More information on this topic can be found in the documentation of FESystem, the Handling vector valued problems module and the tutorial programs referenced therein.
Selecting blocks: Many functions allow you to restrict their operation to certain vector components or blocks. For example, this is the case for the functions that interpolate boundary values: one may want to only interpolate the boundary values for the velocity block of a finite element field but not the pressure block. The way to do this is by passing a BlockMask argument to such functions, see the block mask entry of this glossary.
@@ -162,14 +162,14 @@For a dim-dimensional triangulation in dim-dimensional space, the boundary form is a vector defined on faces. It is the vector product of the image of coordinate vectors on the surface of the unit cell. It is a vector normal to the surface, pointing outwards and having the length of the surface element.
-A more general definition would be that (at least up to the length of this vector) it is exactly that vector that is necessary when considering integration by parts, i.e. equalities of the form 
dim that are embedded in a space spacedim: in that case, the boundary form is still a vector defined on the faces of the triangulation; it is orthogonal to all tangent directions of the boundary and within the tangent plane of the domain. Note that this is compatible with case dim==spacedim since there the tangent plane is the entire space 
A more general definition would be that (at least up to the length of this vector) it is exactly that vector that is necessary when considering integration by parts, i.e. equalities of the form 
dim that are embedded in a space spacedim: in that case, the boundary form is still a vector defined on the faces of the triangulation; it is orthogonal to all tangent directions of the boundary and within the tangent plane of the domain. Note that this is compatible with case dim==spacedim since there the tangent plane is the entire space 
In either case, the length of the vector equals the determinant of the transformation of reference face to the face of the current cell.
In a Triangulation object, every part of the boundary may be associated with a unique number (of type types::boundary_id) that is used to determine what kinds of boundary conditions are to be applied to a particular part of a boundary. The boundary is composed of the faces of the cells and, in 3d, the edges of these faces.
-By default, all boundary indicators of a mesh are zero, unless you are reading from a mesh file that specifically sets them to something different, or unless you use one of the mesh generation functions in namespace GridGenerator that have a colorize option. A typical piece of code that sets the boundary indicator on part of the boundary to something else would look like this, here setting the boundary indicator to 42 for all faces located at 
By default, all boundary indicators of a mesh are zero, unless you are reading from a mesh file that specifically sets them to something different, or unless you use one of the mesh generation functions in namespace GridGenerator that have a colorize option. A typical piece of code that sets the boundary indicator on part of the boundary to something else would look like this, here setting the boundary indicator to 42 for all faces located at 
When considering systems of equations in which the solution is not just a single scalar function, we say that we have a vector system with a vector-valued solution. For example, the vector solution in the elasticity equation considered in step-8 is 



When considering systems of equations in which the solution is not just a single scalar function, we say that we have a vector system with a vector-valued solution. For example, the vector solution in the elasticity equation considered in step-8 is 



In finite element programs, one frequently wants to address individual elements (components) of this vector-valued solution, or sets of components. For example, we do this extensively in step-8, and a lot of documentation is also provided in the module on Handling vector valued problems. If you are thinking only in terms of the partial differential equation (not in terms of its discretization), then the concept of components is the natural one.
On the other hand, when talking about finite elements and degrees of freedom, components are not always the correct concept because components are not always individually addressable. In particular, this is the case for non-primitive finite elements. Similarly, one may not always want to address individual components but rather sets of components — e.g. all velocity components together, and separate from the pressure in the Stokes system, without further splitting the velocities into their individual components. In either case, the correct concept to think in is that of a block. Since each component, if individually addressable, is also a block, thinking in terms of blocks is most frequently the better strategy.
For a given finite element, the number of components can be queried using the FiniteElementData::n_components() function, and you can find out which vector components are nonzero for a given finite element shape function using FiniteElement::get_nonzero_components(). The values and gradients of individual components of a shape function (if the element is primitive) can be queried using the FiniteElement::shape_value_component() and FiniteElement::shape_grad_component() functions on the reference cell. The FEValues::shape_value_component() and FEValues::shape_grad_component() functions do the same on a real cell. See also the documentation of the FiniteElement and FEValues classes.
@@ -259,7 +259,7 @@ would result in a mask [true, true, false] in 2d. Of course, in 3d, the result would be [true, true, true, false].
[true, false] because you try to select individual vector components of a finite element where each shape function has both 

[true, false] because you try to select individual vector components of a finite element where each shape function has both 

For parallel computations, deal.II uses the vector and matrix classes defined in the PETScWrappers and TrilinosWrappers namespaces. When running programs in parallel using MPI, these classes only store a certain number of rows or elements on the current processor, whereas the rest of the vector or matrix is stored on the other processors that belong to our MPI universe. This presents a certain problem when you assemble linear systems: we add elements to the matrix and right hand side vectors that may or may not be stored locally. Sometimes, we may also want to just set an element, not add to it.
@@ -301,9 +301,9 @@The term "degree of freedom" (often abbreviated as "DoF") is commonly used in the finite element community to indicate two slightly different, but related things. The first is that we'd like to represent the finite element solution as a linear combination of shape functions, in the form 












The term "degree of freedom" (often abbreviated as "DoF") is commonly used in the finite element community to indicate two slightly different, but related things. The first is that we'd like to represent the finite element solution as a linear combination of shape functions, in the form 












A distorted cell is a cell for which the mapping from the reference cell to real cell has a Jacobian whose determinant is non-positive somewhere in the cell. Typically, we only check the sign of this determinant at the vertices of the cell. The function GeometryInfo::alternating_form_at_vertices computes these determinants at the vertices.
-By way of example, if all of the determinants are of roughly equal value and on the order of 

By way of example, if all of the determinants are of roughly equal value and on the order of 

The following two images show a well-formed, a pinched, and a twisted cell for both 2d and 3d:
@@ -363,19 +363,19 @@
"Generalized support points" are, as the name suggests, a generalization of support points. The latter are used to describe that a finite element simply interpolates values at individual points (the "support points"). If we call these points 


![$\Psi_i[\cdot]$](form_146.png)
![$\Psi_i[\varphi]=\varphi(\hat{\mathbf{x}}_i)$](form_147.png)
![$\Psi_i[\varphi_j]=\delta_{ij}$](form_148.png)

(In the vector valued case, the only other piece of information besides the support points 


![$\Psi_i[\varphi]=\varphi(\hat{\mathbf{x}}_i)_{c(i)}$](form_151.png)
On the other hand, there are other kinds of elements that are not defined this way. For example, for the lowest order Raviart-Thomas element (see the FE_RaviartThomas class), the node functional evaluates not individual components of a vector-valued finite element function with dim components, but the normal component of this vector: "Generalized support points" are, as the name suggests, a generalization of support points. The latter are used to describe that a finite element simply interpolates values at individual points (the "support points"). If we call these points



![$\Psi_i[\cdot]$](form_115.png)
![$\Psi_i[\varphi]=\varphi(\hat{\mathbf{x}}_i)$](form_116.png)
![$\Psi_i[\varphi_j]=\delta_{ij}$](form_117.png)

(In the vector valued case, the only other piece of information besides the support points 


![$\Psi_i[\varphi]=\varphi(\hat{\mathbf{x}}_i)_{c(i)}$](form_120.png)
On the other hand, there are other kinds of elements that are not defined this way. For example, for the lowest order Raviart-Thomas element (see the FE_RaviartThomas class), the node functional evaluates not individual components of a vector-valued finite element function with dim components, but the normal component of this vector: ![$\Psi_i[\varphi]
=
\varphi(\hat{\mathbf{x}}_i) \cdot \mathbf{n}_i
- $](form_152.png)




In these cases, the element does not have support points because it is not purely interpolatory; however, some kind of interpolation is still involved when defining shape functions as the node functionals still require point evaluations at special points 
Finally, there are elements that still do not fit into this scheme. For example, some hierarchical basis functions (see, for example the FE_Q_Hierarchical element) are defined so that the node functionals are moments of finite element functions, ![$\Psi_i[\varphi]
+ $](form_121.png)




In these cases, the element does not have support points because it is not purely interpolatory; however, some kind of interpolation is still involved when defining shape functions as the node functionals still require point evaluations at special points 
Finally, there are elements that still do not fit into this scheme. For example, some hierarchical basis functions (see, for example the FE_Q_Hierarchical element) are defined so that the node functionals are moments of finite element functions, ![$\Psi_i[\varphi]
=
\int_{\hat{K}} \varphi(\hat{\mathbf{x}})
{\hat{x}_1}^{p_1(i)}
{\hat{x}_2}^{p_2(i)}
- $](form_155.png)




It is available from http://www.math.colostate.edu/~bangerth/publications.html, also see deal.II publications for details.
-The numerical examples shown in that paper are generated with a slightly modified version of step-27. The main difference to that tutorial program is that various operations in the program were timed for the paper to compare different options and show that 
The numerical examples shown in that paper are generated with a slightly modified version of step-27. The main difference to that tutorial program is that various operations in the program were timed for the paper to compare different options and show that 
The mass matrix is a matrix of the form
-
It frequently appears in the solution of time dependent problems where, if one uses an explicit time stepping method, it then leads to the need to solve problems of the form
-
in time step 




The presence of the matrix 


Historically, mass lumping was performed by adding the elements of a row together and setting the diagonal entries of 



-




The presence of the matrix 


Historically, mass lumping was performed by adding the elements of a row together and setting the diagonal entries of 



+
by quadrature
-
where we choose the quadrature points as the nodes at which the shape functions are defined. If we order the quadrature points in the same way as the shape functions, then
-
and consequently
-
where the sum extends over those cells on which 
Whether or not this particular choice of quadrature formula is sufficient to retain the convergence rate of the discretization is a separate question. For the usual 
where the sum extends over those cells on which 
Whether or not this particular choice of quadrature formula is sufficient to retain the convergence rate of the discretization is a separate question. For the usual 
For an example of where lumped mass matrices play a role, see step-69.
Every object that makes up a Triangulation (cells, faces, edges, etc.), is associated with a unique number (of type types::manifold_id) that is used to identify which manifold object is responsible to generate new points when the mesh is refined.
-By default, all manifold indicators of a mesh are set to numbers::flat_manifold_id. A typical piece of code that sets the manifold indicator on a object to something else would look like this, here setting the manifold indicator to 42 for all cells whose center has an 
By default, all manifold indicators of a mesh are set to numbers::flat_manifold_id. A typical piece of code that sets the manifold indicator on a object to something else would look like this, here setting the manifold indicator to 42 for all cells whose center has an 
The "mass matrix" is a matrix of the form
-
Solving the fourth-order biharmonic equation using the 
+
Solving the fourth-order biharmonic equation using the 
Keywords: FEInterfaceValues
Improved: The FEValuesViews objects that one gets when writing things like fe_values[velocities] (see Handling vector valued problems) have become a lot smarter. They now compute a significant amount of data at creation time, rather than on the fly. This means that creating such objects becomes more expensive but using them is cheaper. To offset this cost, FEValuesBase objects now create all possible FEValuesViews objects at creation time, rather than whenever you do things like fe_values[velocities], and simply return a reference to a pre-generated object. This turns an 


+
Improved: The FEValuesViews objects that one gets when writing things like fe_values[velocities] (see Handling vector valued problems) have become a lot smarter. They now compute a significant amount of data at creation time, rather than on the fly. This means that creating such objects becomes more expensive but using them is cheaper. To offset this cost, FEValuesBase objects now create all possible FEValuesViews objects at creation time, rather than whenever you do things like fe_values[velocities], and simply return a reference to a pre-generated object. This turns an 


(WB 2008/12/10)
New: The GeometryInfo::d_linear_shape_function and GeometryInfo::d_linear_shape_function_gradient functions can be used to represent the 
+
New: The GeometryInfo::d_linear_shape_function and GeometryInfo::d_linear_shape_function_gradient functions can be used to represent the 
(WB 2009/06/28)
New: There are new functions FullMatrix::cholesky and FullMatrix::outer_product. FullMatrix::cholesky finds the Cholesky decomposition of a matrix in lower triangular form. FullMatrix::outer_product calculates *this 


+
New: There are new functions FullMatrix::cholesky and FullMatrix::outer_product. FullMatrix::cholesky finds the Cholesky decomposition of a matrix in lower triangular form. FullMatrix::outer_product calculates *this 


(Jean Marie Linhart 2009/07/27)
Improved: Evaluation of Lagrangian basis functions has been made stable by exchanging polynomial evaluation from the standard form 

+
Improved: Evaluation of Lagrangian basis functions has been made stable by exchanging polynomial evaluation from the standard form 

(Martin Kronbichler 2011/07/26)
Fixed: Computing the 
+
Fixed: Computing the 
(Wolfgang Bangerth 2012/06/02)
New: There is now a new class Functions::InterpolatedTensorProductGridData that can be used to (bi-/tri-)linearly interpolate data given on a tensor product mesh of 


+
New: There is now a new class Functions::InterpolatedTensorProductGridData that can be used to (bi-/tri-)linearly interpolate data given on a tensor product mesh of 


(Wolfgang Bangerth, 2013/12/20)
Fixed: The FE_ABF class reported the maximal polynomial degree (via FiniteElement::degree) for elements of order 


+
Fixed: The FE_ABF class reported the maximal polynomial degree (via FiniteElement::degree) for elements of order 


(Wolfgang Bangerth, 2017/01/13)
Improved: GridGenerator::hyper_shell() in 3d now supports more n_cells options. While previously only 6, 12, or 96 cells were possible, the function now supports any number of the kind 



+
Improved: GridGenerator::hyper_shell() in 3d now supports more n_cells options. While previously only 6, 12, or 96 cells were possible, the function now supports any number of the kind 



(Martin Kronbichler, 2020/04/07)
Improved: The additional roots of the HermiteLikeInterpolation with degree 


+
Improved: The additional roots of the HermiteLikeInterpolation with degree 


(Martin Kronbichler, 2019/07/12)
The algorithms used in the implementation of this class are described in some detail in the hp-paper. There is also a significant amount of documentation on how to use this class in the Constraints on degrees of freedom module.
Each "line" in objects of this class corresponds to one constrained degree of freedom, with the number of the line being i, entered by using add_line() or add_lines(). The entries in this line are pairs of the form (j,aij), which are added by add_entry() or add_entries(). The organization is essentially a SparsityPattern, but with only a few lines containing nonzero elements, and therefore no data wasted on the others. For each line, which has been added by the mechanism above, an elimination of the constrained degree of freedom of the form
-![\[
x_i = \sum_j a_{ij} x_j + b_i
-\]](form_1582.png)
is performed, where bi is optional and set by set_inhomogeneity(). Thus, if a constraint is formulated for instance as a zero mean value of several degrees of freedom, one of the degrees has to be chosen to be eliminated.
Note that the constraints are linear in the xi, and that there might be a constant (non-homogeneous) term in the constraint. This is exactly the form we need for hanging node constraints, where we need to constrain one degree of freedom in terms of others. There are other conditions of this form possible, for example for implementing mean value conditions as is done in the step-11 tutorial program. The name of the class stems from the fact that these constraints can be represented in matrix form as X x = b, and this object then describes the matrix X and the vector b. The most frequent way to create/fill objects of this type is using the DoFTools::make_hanging_node_constraints() function. The use of these objects is first explained in step-6.
@@ -929,13 +929,13 @@Add an entry to a given line. In other words, this function adds a term 

Add an entry to a given line. In other words, this function adds a term 

If an entry with the same indices as the one this function call denotes already exists, then this function simply returns provided that the value of the entry is the same. Thus, it does no harm to enter a constraint twice.
| [in] | constrained_dof_index | The index ![]() |
| [in] | column | The index ![]() ![]() |
| [in] | weight | The factor ![]() ![]() |
| [in] | constrained_dof_index | The index ![]() |
| [in] | column | The index ![]() ![]() |
| [in] | weight | The factor ![]() ![]() |
Set an inhomogeneity to the constraint for a degree of freedom. In other words, it adds a constant 

Set an inhomogeneity to the constraint for a degree of freedom. In other words, it adds a constant 

| [in] | constrained_dof_index | The index ![]() |
| [in] | value | The right hand side value ![]() ![]() |
| [in] | constrained_dof_index | The index ![]() |
| [in] | value | The right hand side value ![]() ![]() |
Close the filling of entries. Since the lines of a matrix of this type are usually filled in an arbitrary order and since we do not want to use associative constrainers to store the lines, we need to sort the lines and within the lines the columns before usage of the matrix. This is done through this function.
Also, zero entries are discarded, since they are not needed.
After closing, no more entries are accepted. If the object was already closed, then this function returns immediately.
-This function also resolves chains of constraints. For example, degree of freedom 13 may be constrained to 




This function also resolves chains of constraints. For example, degree of freedom 13 may be constrained to 




Print the constraints represented by the current object to the given stream.
For each constraint of the form
-![\[
x_{42} = 0.5 x_2 + 0.25 x_{14} + 2.75
-\]](form_1592.png)
this function will write a sequence of lines that look like this:
This function takes a matrix of local contributions (local_matrix) corresponding to the degrees of freedom indices given in local_dof_indices and distributes them to the global matrix. In other words, this function implements a scatter operation. In most cases, these local contributions will be the result of an integration over a cell or face of a cell. However, as long as local_matrix and local_dof_indices have the same number of elements, this function is happy with whatever it is given.
In contrast to the similar function in the DoFAccessor class, this function also takes care of constraints, i.e. if one of the elements of local_dof_indices belongs to a constrained node, then rather than writing the corresponding element of local_matrix into global_matrix, the element is distributed to the entries in the global matrix to which this particular degree of freedom is constrained.
With this scheme, we never write into rows or columns of constrained degrees of freedom. In order to make sure that the resulting matrix can still be inverted, we need to do something with the diagonal elements corresponding to constrained nodes. Thus, if a degree of freedom in local_dof_indices is constrained, we distribute the corresponding entries in the matrix, but also add the absolute value of the diagonal entry of the local matrix to the corresponding entry in the global matrix. Assuming the discretized operator is positive definite, this guarantees that the diagonal entry is always non-zero, positive, and of the same order of magnitude as the other entries of the matrix. On the other hand, when solving a source problem 
With this scheme, we never write into rows or columns of constrained degrees of freedom. In order to make sure that the resulting matrix can still be inverted, we need to do something with the diagonal elements corresponding to constrained nodes. Thus, if a degree of freedom in local_dof_indices is constrained, we distribute the corresponding entries in the matrix, but also add the absolute value of the diagonal entry of the local matrix to the corresponding entry in the global matrix. Assuming the discretized operator is positive definite, this guarantees that the diagonal entry is always non-zero, positive, and of the same order of magnitude as the other entries of the matrix. On the other hand, when solving a source problem 
By using this function to distribute local contributions to the global object, one saves the call to the condense function after the vectors and matrices are fully assembled.
This function does almost the same as the function above but can treat general rectangular matrices. The main difference to achieve this is that the diagonal entries in constrained rows are left untouched instead of being filled with arbitrary values.
-Since the diagonal entries corresponding to eliminated degrees of freedom are not set, the result may have a zero eigenvalue, if applied to a square matrix. This has to be considered when solving the resulting problems. For solving a source problem 
Since the diagonal entries corresponding to eliminated degrees of freedom are not set, the result may have a zero eigenvalue, if applied to a square matrix. This has to be considered when solving the resulting problems. For solving a source problem 
Given a vector, set all constrained degrees of freedom to values so that the constraints are satisfied. For example, if the current object stores the constraint 




Given a vector, set all constrained degrees of freedom to values so that the constraints are satisfied. For example, if the current object stores the constraint 




vec, then the vector must not contain ghost elements. For fixed theta, the Crank-Nicolson scheme is the only second order scheme. Nevertheless, further stability may be achieved by choosing theta larger than ½, thereby introducing a first order error term. In order to avoid a loss of convergence order, the adaptive theta scheme can be used, where theta=½+c dt.
Assume that we want to solve the equation u' + F(u) = 0 with a step size k. A step of the theta scheme can be written as
-![\[
M u_{n+1} + \theta k F(u_{n+1}) = M u_n - (1-\theta)k F(u_n).
-\]](form_366.png)
Here, M is the mass matrix. We see, that the right hand side amounts to an explicit Euler step with modified step size in weak form (up to inversion of M). The left hand side corresponds to an implicit Euler step with modified step size (right hand side given). Thus, the implementation of the theta scheme will use two Operator objects, one for the explicit, one for the implicit part. Each of these will use its own TimestepData to account for the modified step sizes (and different times if the problem is not autonomous). Note that once the explicit part has been computed, the left hand side actually constitutes a linear or nonlinear system which has to be solved.
Now we need to study the application of the implicit and explicit operator. We assume that the pointer matrix points to the matrix created in the main program (the constructor did this for us). Here, we first get the time step size from the AnyData object that was provided as input. Then, if we are in the first step or if the timestep has changed, we fill the local matrix 

-![\[ m = I - \Delta t M. \]](form_368.png)
Now we need to study the application of the implicit and explicit operator. We assume that the pointer matrix points to the matrix created in the main program (the constructor did this for us). Here, we first get the time step size from the AnyData object that was provided as input. Then, if we are in the first step or if the timestep has changed, we fill the local matrix 

+![\[ m = I - \Delta t M. \]](form_353.png)
After we have worked off the notifications, we clear them, such that the matrix is only generated when necessary.
The operator computing the explicit part of the scheme. This will receive in its input data the value at the current time with name "Current time solution". It should obtain the current time and time step size from explicit_data().
-Its return value is 





Its return value is 





Definition at line 416 of file theta_timestepping.h.
@@ -1202,7 +1202,7 @@The operator solving the implicit part of the scheme. It will receive in its input data the vector "Previous time". Information on the timestep should be obtained from implicit_data().
-Its return value is the solution u of Mu-cF(u)=f, where f is the dual space vector found in the "Previous time" entry of the input data, M the mass matrix, F the operator in space and c is the adjusted time step size 
Its return value is the solution u of Mu-cF(u)=f, where f is the dual space vector found in the "Previous time" entry of the input data, M the mass matrix, F the operator in space and c is the adjusted time step size 
Definition at line 428 of file theta_timestepping.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAnisotropicPolynomials.html differs (JavaScript source, ASCII text, with very long lines (1527)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAnisotropicPolynomials.html 2023-11-25 15:25:50.833407738 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAnisotropicPolynomials.html 2023-11-25 15:25:50.833407738 +0100 @@ -153,10 +153,10 @@Anisotropic tensor product of given polynomials.
-Given one-dimensional polynomials 




dim is in fact only 2. If dim is in fact only 1, then the result is simply the same set of one-dimensional polynomials passed to the constructor.)
If the elements of each set of base polynomials are mutually orthogonal on the interval ![$[-1,1]$](form_582.png)
![$[0,1]$](form_581.png)
![$[-1,1]^d$](form_464.png)
![$[0,1]^d$](form_872.png)
The resulting dim-dimensional tensor product polynomials are ordered as follows: We iterate over the 

dim==2, the first few polynomials are thus 





Given one-dimensional polynomials 




dim is in fact only 2. If dim is in fact only 1, then the result is simply the same set of one-dimensional polynomials passed to the constructor.)
If the elements of each set of base polynomials are mutually orthogonal on the interval ![$[-1,1]$](form_582.png)
![$[0,1]$](form_581.png)
![$[-1,1]^d$](form_464.png)
![$[0,1]^d$](form_870.png)
The resulting dim-dimensional tensor product polynomials are ordered as follows: We iterate over the 

dim==2, the first few polynomials are thus 





Definition at line 322 of file tensor_product_polynomials.h.
Each tensor product polynomial 
i.
Each tensor product polynomial 
i.
Definition at line 538 of file tensor_product_polynomials.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArpackSolver.html differs (JavaScript source, ASCII text, with very long lines (1026)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArpackSolver.html 2023-11-25 15:25:50.850074067 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classArpackSolver.html 2023-11-25 15:25:50.850074067 +0100 @@ -229,14 +229,14 @@Interface for using ARPACK. ARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems. Here we interface to the routines dnaupd and dneupd of ARPACK. If the operator is specified to be symmetric we use the symmetric interface dsaupd and dseupd of ARPACK instead. The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse matrices A.
In this class we make use of the method applied to the generalized eigenspectrum problem 




In this class we make use of the method applied to the generalized eigenspectrum problem 




The ArpackSolver can be used in application codes with serial objects in the following way:
for the generalized eigenvalue problem 
size_of_spectrum tells ARPACK the number of eigenvector/eigenvalue pairs to solve for. Here, lambda is a vector that will contain the eigenvalues computed, x a vector that will contain the eigenvectors computed, and OP is an inverse operation for the matrix A. Shift and invert transformation around zero is applied.
for the generalized eigenvalue problem 
size_of_spectrum tells ARPACK the number of eigenvector/eigenvalue pairs to solve for. Here, lambda is a vector that will contain the eigenvalues computed, x a vector that will contain the eigenvectors computed, and OP is an inverse operation for the matrix A. Shift and invert transformation around zero is applied.
Through the AdditionalData the user can specify some of the parameters to be set.
For further information on how the ARPACK routines dsaupd, dseupd, dnaupd and dneupd work and also how to set the parameters appropriately please take a look into the ARPACK manual.
Solve the generalized eigensprectrum problem 
dsaupd and dseupd or dnaupd and dneupd functions of ARPACK.
Solve the generalized eigensprectrum problem 
dsaupd and dseupd or dnaupd and dneupd functions of ARPACK.
The function returns a vector of eigenvalues of length n and a vector of eigenvectors of length n in the symmetric case and of length n+1 in the non-symmetric case. In the symmetric case all eigenvectors are real. In the non-symmetric case complex eigenvalues always occur as complex conjugate pairs. Therefore the eigenvector for an eigenvalue with nonzero complex part is stored by putting the real and the imaginary parts in consecutive real-valued vectors. The eigenvector of the complex conjugate eigenvalue does not need to be stored, since it is just the complex conjugate of the stored eigenvector. Thus, if the last n-th eigenvalue has a nonzero imaginary part, Arpack needs in total n+1 real-valued vectors to store real and imaginary parts of the eigenvectors.
Return a reference to the 
Return a reference to the 
This function is marked as const because it does not change the view object. It may however return a reference to a non-const memory location depending on whether the template type of the class is const or not.
This function is only allowed to be called if the underlying data is indeed stored in CPU memory.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAutoDerivativeFunction.html differs (JavaScript source, ASCII text, with very long lines (2139)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAutoDerivativeFunction.html 2023-11-25 15:25:50.896739784 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classAutoDerivativeFunction.html 2023-11-25 15:25:50.896739784 +0100 @@ -346,27 +346,27 @@Names of difference formulas.
where each value 

where each value 

A base class for thin QR implementations. This class and classes derived from it are meant to build As a consequence, matrices which have the same number of rows as each vector (i.e. This class and classes derived from it are meant to build As a consequence, matrices which have the same number of rows as each vector (i.e. Detailed Description
class BaseQR< VectorType >






VectorType. 






VectorType. Member Typedef Documentation
@@ -377,7 +377,7 @@
Solve 
x and y should be consistent with the current size of the subspace. If transpose is true, 
Solve 
x and y should be consistent with the current size of the subspace. If transpose is true, 
Set 

Set 

Implemented in QR< VectorType >, and ImplicitQR< VectorType >.
@@ -456,7 +456,7 @@Set 

Set 

Implemented in QR< VectorType >, and ImplicitQR< VectorType >.
@@ -496,7 +496,7 @@Set 

Set 

Implemented in QR< VectorType >, and ImplicitQR< VectorType >.
@@ -537,7 +537,7 @@Set 

Set 

Implemented in QR< VectorType >, and ImplicitQR< VectorType >.
@@ -599,7 +599,7 @@Compute 

Compute 

BlockIndices represents a range of indices (such as the range 
BlockIndices represents a range of indices (such as the range 
The information that can be obtained from this class falls into two groups. First, it is possible to query the global size of the index space (through the total_size() member function), and the number of blocks and their sizes (via size() and the block_size() functions).
Secondly, this class manages the conversion of global indices to the local indices within this block, and the other way around. This is required, for example, when you address a global element in a block vector and want to know within which block this is, and which index within this block it corresponds to. It is also useful if a matrix is composed of several blocks, where you have to translate global row and column indices to local ones.
A BlockLinearOperator can be sliced to a LinearOperator at any time. This removes all information about the underlying block structure (because above std::function objects are no longer available) - the linear operator interface, however, remains intact.
std::function objects and lambda functions. This flexibility comes with a run-time penalty. Only use this object to encapsulate object with medium to large individual block sizes, and small block structure (as a rule of thumb, matrix blocks greater than 
std::function objects and lambda functions. This flexibility comes with a run-time penalty. Only use this object to encapsulate object with medium to large individual block sizes, and small block structure (as a rule of thumb, matrix blocks greater than 
Definition at line 166 of file block_linear_operator.h.
and Id_c is the projection to the subspace consisting of all vector entries associated with constrained degrees of freedom.
This LinearOperator object is used together with constrained_right_hand_side() to build up the following modified system of linear equations:
-![\[
(C^T A C + Id_c) x = C^T (b - A\,k)
-\]](form_1610.png)
with a given (unconstrained) system matrix 



with a given (unconstrained) system matrix 



A detailed explanation of this approach is given in the Constraints on degrees of freedom module.
with
This LinearOperator object is used together with constrained_right_hand_side() to build up the following modified system of linear equations:
-![\[
(C^T A C + Id_c) x = C^T (b - A\,k)
-\]](form_1610.png)
with a given (unconstrained) system matrix 



with a given (unconstrained) system matrix 



A detailed explanation of this approach is given in the Constraints on degrees of freedom module.
Addition of two linear operators first_op and second_op given by 
Addition of two linear operators first_op and second_op given by 
Definition at line 390 of file linear_operator.h.
@@ -946,8 +946,8 @@Subtraction of two linear operators first_op and second_op given by 
Subtraction of two linear operators first_op and second_op given by 
Definition at line 449 of file linear_operator.h.
@@ -1066,8 +1066,8 @@Composition of two linear operators first_op and second_op given by 
Composition of two linear operators first_op and second_op given by 
Definition at line 587 of file linear_operator.h.
@@ -1701,7 +1701,7 @@Return a LinearOperator that performs the operations associated with the Schur complement. There are two additional helper functions, condense_schur_rhs() and postprocess_schur_solution(), that are likely necessary to be used in order to perform any useful tasks in linear algebra with this operator.
We construct the definition of the Schur complement in the following way:
Consider a general system of linear equations that can be decomposed into two major sets of equations:
-
where 



where 



This is equivalent to the following two statements:
-
Assuming that 
-
+
which amount to performing block Gaussian elimination on this system of equations.
For the purpose of the current implementation, we choose to substitute (3) into (2)
-
This leads to the result
-![\[
(5) \quad (D - C\: A^{-1} \:B)y = g - C \: A^{-1} f
\quad \Rightarrow \quad Sy = g'
-\]](form_1790.png)
with 




So for any arbitrary vector 
-




So for any arbitrary vector 
+![\[
(6) \quad Sa = (D - C \: A^{-1} \: B)a
-\]](form_1797.png)
A typical set of steps needed the solve a linear system (1),(2) would be:
A_inv (using inverse_operator()).











-![\[
g' = g - C \: A^{-1} \: f
- \]](form_1799.png)

-
+![\[
y = S^{-1} g'
- \]](form_1801.png)
-![\[
x = A^{-1} (f - By)
- \]](form_1802.png)
In the above example, the preconditioner for 





A better preconditioner in such a case would be one that provides a more representative approximation for 


From another viewpoint, a similar result can be achieved by first constructing an object that represents an approximation for 



In the above example, the preconditioner for 





A better preconditioner in such a case would be one that provides a more representative approximation for 


From another viewpoint, a similar result can be achieved by first constructing an object that represents an approximation for 



Note that due to the construction of S_inv_approx and subsequently S_inv, there are a pair of nested iterative solvers which could collectively consume a lot of resources. Therefore care should be taken in the choices leading to the construction of the iterative inverse_operators. One might consider the use of a IterationNumberControl (or a similar mechanism) to limit the number of inner solver iterations. This controls the accuracy of the approximate inverse operation 



Note that due to the construction of S_inv_approx and subsequently S_inv, there are a pair of nested iterative solvers which could collectively consume a lot of resources. Therefore care should be taken in the choices leading to the construction of the iterative inverse_operators. One might consider the use of a IterationNumberControl (or a similar mechanism) to limit the number of inner solver iterations. This controls the accuracy of the approximate inverse operation 



However, if an iterative solver based on IterationNumberControl is used as a preconditioner then the preconditioning operation is not a linear operation. Here a flexible solver like SolverFGMRES (flexible GMRES) is best employed as an outer solver in order to deal with the variable behavior of the preconditioner. Otherwise the iterative solver can stagnate somewhere near the tolerance of the preconditioner or generally behave erratically. Alternatively, using a ReductionControl would ensure that the preconditioner always solves to the same tolerance, thereby rendering its behavior constant.
Further examples of this functionality can be found in the test-suite, such as tests/lac/schur_complement_01.cc . The solution of a multi- component problem (namely step-22) using the schur_complement can be found in tests/lac/schur_complement_03.cc .
Return the number of blocks in a column (i.e, the number of "block rows", or the number 

Return the number of blocks in a column (i.e, the number of "block rows", or the number 

Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Compute the matrix scalar product 
Compute the matrix scalar product 
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 396 of file block_sparse_matrix.h.
@@ -1114,7 +1114,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 440 of file block_sparse_matrix.h.
@@ -2328,7 +2328,7 @@Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Compute the matrix scalar product 
Compute the matrix scalar product 
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 371 of file block_sparse_matrix_ez.h.
@@ -832,7 +832,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 409 of file block_sparse_matrix_ez.h.
@@ -865,7 +865,7 @@Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Definition at line 391 of file block_sparse_matrix_ez.h.
@@ -898,7 +898,7 @@Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Definition at line 429 of file block_sparse_matrix_ez.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVector.html differs (JavaScript source, ASCII text, with very long lines (894)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVector.html 2023-11-25 15:25:51.076736119 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classBlockVector.html 2023-11-25 15:25:51.076736119 +0100 @@ -1848,7 +1848,7 @@Return the square of the 
Return the square of the 
Return the 
Return the 
Return the 
Return the 
Return the maximum absolute value of the elements of this vector, which is the 
Return the maximum absolute value of the elements of this vector, which is the 
Return the square of the 
Return the square of the 
Return the 
Return the 
Return the 
Return the 
Return the maximum absolute value of the elements of this vector, which is the 
Return the maximum absolute value of the elements of this vector, which is the 
A class that represents a box of arbitrary dimension spacedim and with sides parallel to the coordinate axes, that is, a region
-![\[
[x_0^L, x_0^U] \times ... \times [x_{spacedim-1}^L, x_{spacedim-1}^U],
-\]](form_354.png)
where 




where 




Geometrically, a bounding box is thus:
Bounding boxes are, for example, useful in parallel distributed meshes to give a general description of the owners of each portion of the mesh. More generally, bounding boxes are often used to roughly describe a region of space in which an object is contained; if a candidate point is not within the bounding box (a test that is cheap to execute), then it is not necessary to perform an expensive test whether the candidate point is in fact inside the object itself. Bounding boxes are therefore often used as a first, cheap rejection test before more detailed checks. As such, bounding boxes serve many of the same purposes as the convex hull, for which it is also relatively straightforward to compute whether a point is inside or outside, though not quite as cheap as for the bounding box.
-Taking the cross section of a BoundingBox<spacedim> orthogonal to a given direction gives a box in one dimension lower: BoundingBox<spacedim - 1>. In 3d, the 2 coordinates of the cross section of BoundingBox<3> can be ordered in 2 different ways. That is, if we take the cross section orthogonal to the y direction we could either order a 3d-coordinate into a 2d-coordinate as 


Taking the cross section of a BoundingBox<spacedim> orthogonal to a given direction gives a box in one dimension lower: BoundingBox<spacedim - 1>. In 3d, the 2 coordinates of the cross section of BoundingBox<3> can be ordered in 2 different ways. That is, if we take the cross section orthogonal to the y direction we could either order a 3d-coordinate into a 2d-coordinate as 


| Orthogonal to | Cross section coordinates ordered as |
|---|
Returns the indexth vertex of the box. Vertex is meant in the same way as for a cell, so that index ![$\in [0, 2^{\text{dim}} - 1]$](form_362.png)
Returns the indexth vertex of the box. Vertex is meant in the same way as for a cell, so that index ![$\in [0, 2^{\text{dim}} - 1]$](form_370.png)
Definition at line 233 of file bounding_box.cc.
@@ -819,7 +819,7 @@Apply the affine transformation that transforms this BoundingBox to a unit BoundingBox object.
-If 


point.
If 


point.
Definition at line 312 of file bounding_box.cc.
@@ -842,7 +842,7 @@Apply the affine transformation that transforms the unit BoundingBox object to this object.
-If 


point.
If 


point.
Definition at line 327 of file bounding_box.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionIC.html differs (JavaScript source, ASCII text, with very long lines (638)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionIC.html 2023-11-25 15:25:51.136734901 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionIC.html 2023-11-25 15:25:51.136734901 +0100 @@ -491,7 +491,7 @@cuSPARSE description of the lower triangular matrix 
cuSPARSE description of the lower triangular matrix 
Definition at line 176 of file cuda_precondition.h.
@@ -545,7 +545,7 @@Solve and analysis structure for the lower triangular matrix 
Solve and analysis structure for the lower triangular matrix 
Definition at line 186 of file cuda_precondition.h.
@@ -761,7 +761,7 @@Determine if level information should be generated for the lower triangular matrix 
Determine if level information should be generated for the lower triangular matrix 
Definition at line 233 of file cuda_precondition.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionILU.html differs (JavaScript source, ASCII text, with very long lines (639)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionILU.html 2023-11-25 15:25:51.153401226 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1PreconditionILU.html 2023-11-25 15:25:51.153401226 +0100 @@ -493,7 +493,7 @@cuSPARSE description of the lower triangular matrix 
cuSPARSE description of the lower triangular matrix 
Definition at line 388 of file cuda_precondition.h.
@@ -574,7 +574,7 @@Solve and analysis structure for the lower triangular matrix 
Solve and analysis structure for the lower triangular matrix 
Definition at line 403 of file cuda_precondition.h.
@@ -790,7 +790,7 @@Determine if level information should be generated for the lower triangular matrix 
Determine if level information should be generated for the lower triangular matrix 
Definition at line 450 of file cuda_precondition.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1SparseMatrix.html differs (JavaScript source, ASCII text, with very long lines (779)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1SparseMatrix.html 2023-11-25 15:25:51.173400819 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCUDAWrappers_1_1SparseMatrix.html 2023-11-25 15:25:51.173400819 +0100 @@ -802,7 +802,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 512 of file cuda_sparse_matrix.cc.
@@ -833,7 +833,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 530 of file cuda_sparse_matrix.cc.
@@ -864,7 +864,7 @@Adding matrix-vector multiplication. Add 


Adding matrix-vector multiplication. Add 


Definition at line 548 of file cuda_sparse_matrix.cc.
@@ -895,7 +895,7 @@Adding matrix-vector multiplication. Add 


Adding matrix-vector multiplication. Add 


Definition at line 566 of file cuda_sparse_matrix.cc.
@@ -917,7 +917,7 @@Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
Definition at line 584 of file cuda_sparse_matrix.cc.
@@ -949,7 +949,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
Definition at line 597 of file cuda_sparse_matrix.cc.
@@ -985,8 +985,8 @@Compute the residual of an equation 



Source 

Compute the residual of an equation 



Source 

Definition at line 611 of file cuda_sparse_matrix.cc.
@@ -1005,8 +1005,8 @@Return the 



Return the 



Definition at line 626 of file cuda_sparse_matrix.cc.
@@ -1025,8 +1025,8 @@Return the 






Definition at line 645 of file cuda_sparse_matrix.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCellAccessor.html differs (JavaScript source, ASCII text, with very long lines (755)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCellAccessor.html 2023-11-25 15:25:51.216733272 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCellAccessor.html 2023-11-25 15:25:51.216733272 +0100 @@ -4164,8 +4164,8 @@This function computes a fast approximate transformation from the real to the unit cell by inversion of an affine approximation of the 

The affine approximation of the unit to real cell mapping is found by a least squares fit of an affine function to the 
This function computes a fast approximate transformation from the real to the unit cell by inversion of an affine approximation of the 

The affine approximation of the unit to real cell mapping is found by a least squares fit of an affine function to the 
For exact transformations to the unit cell, use Mapping::transform_real_to_unit_cell().
Center of the object. The center of an object is defined to be the average of the locations of the vertices, which is also where a 
respect_manifold. Manifolds would then typically pull back the coordinates of the vertices to a reference domain (not necessarily the reference cell), compute the average there, and then push forward the coordinates of the averaged point to the physical space again; the resulting point is guaranteed to lie within the manifold, even if the manifold is curved.
Center of the object. The center of an object is defined to be the average of the locations of the vertices, which is also where a 
respect_manifold. Manifolds would then typically pull back the coordinates of the vertices to a reference domain (not necessarily the reference cell), compute the average there, and then push forward the coordinates of the averaged point to the physical space again; the resulting point is guaranteed to lie within the manifold, even if the manifold is curved.
When the object uses a different manifold description as its surrounding, like when part of the bounding objects of this TriaAccessor use a non-flat manifold description but the object itself is flat, the result given by the TriaAccessor::center() function may not be accurate enough, even when parameter respect_manifold is set to true. If you find this to be case, than you can further refine the computation of the center by setting to true the second additional parameter interpolate_from_surrounding. This computes the location of the center by a so-called transfinite interpolation from the center of all the bounding objects. For a 2d object, it puts a weight of 1/2 on each of the four surrounding lines and a weight -1/4 on the four vertices. This corresponds to a linear interpolation between the descriptions of the four faces, subtracting the contribution of the vertices that is added twice when coming through both lines adjacent to the vertex. In 3d, the weights for faces are 1/2, the weights for lines are -1/4, and the weights for vertices are 1/8. For further information, also confer to the TransfiniteInterpolationManifold class that is able to not only apply this beneficial description to a single cell but all children of a coarse cell.
Definition at line 1787 of file tria_accessor.cc.
@@ -4234,7 +4234,7 @@Return the barycenter (also called centroid) of the object. The barycenter for an object 




+
Return the barycenter (also called centroid) of the object. The barycenter for an object 




![\[
\mathbf x_K = \frac{1}{|K|} \int_K \mathbf x \; \textrm{d}x
\]](form_1482.png)
This function assumes that 


This function assumes that 


Definition at line 1597 of file tria_accessor.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChartManifold.html differs (JavaScript source, ASCII text, with very long lines (1480)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChartManifold.html 2023-11-25 15:25:51.240066129 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classChartManifold.html 2023-11-25 15:25:51.240066129 +0100 @@ -204,37 +204,37 @@This class describes mappings that can be expressed in terms of charts. Specifically, this class with its template arguments describes a chart of dimension chartdim, which is part of a Manifold<dim,spacedim> and is used in an object of type Triangulation<dim,spacedim>: It specializes a Manifold of dimension chartdim embedded in a manifold of dimension spacedim, for which you have explicit pull_back() and push_forward() transformations. Its use is explained in great detail in step-53.
-This is a helper class which is useful when you have an explicit map from an Euclidean space of dimension chartdim to an Euclidean space of dimension spacedim which represents your manifold, i.e., when your manifold 
-![\[ F: \mathcal{B} \subset
-R^{\text{chartdim}} \mapsto \mathcal{M} \subset R^{\text{spacedim}} \]](form_1416.png)
This is a helper class which is useful when you have an explicit map from an Euclidean space of dimension chartdim to an Euclidean space of dimension spacedim which represents your manifold, i.e., when your manifold 
+![\[ F: \mathcal{B} \subset
+R^{\text{chartdim}} \mapsto \mathcal{M} \subset R^{\text{spacedim}} \]](form_1419.png)
(the push_forward() function) and that admits the inverse transformation
-![\[ F^{-1}: \mathcal{M} \subset R^{\text{spacedim}} \mapsto \mathcal{B}
-\subset R^{\text{chartdim}} \]](form_1417.png)
![\[ F^{-1}: \mathcal{M} \subset R^{\text{spacedim}} \mapsto \mathcal{B}
+\subset R^{\text{chartdim}} \]](form_1420.png)
(the pull_back() function).
The get_new_point() function of the ChartManifold class is implemented by calling the pull_back() method for all surrounding_points, computing their weighted average in the chartdim Euclidean space, and calling the push_forward() method with the resulting point, i.e.,
-![\[
-\mathbf x^{\text{new}} = F(\sum_i w_i F^{-1}(\mathbf x_i)). \]](form_1418.png)
![\[
+\mathbf x^{\text{new}} = F(\sum_i w_i F^{-1}(\mathbf x_i)). \]](form_1421.png)
Derived classes are required to implement the push_forward() and the pull_back() methods. All other functions (with the exception of the push_forward_gradient() function, see below) that are required by mappings will then be provided by this class.
In order to compute vectors that are tangent to the manifold (for example, tangent to a surface embedded in higher dimensional space, or simply the three unit vectors of 





spacedim times chartdim.
In order to compute vectors that are tangent to the manifold (for example, tangent to a surface embedded in higher dimensional space, or simply the three unit vectors of 





spacedim times chartdim.
Only the ChartManifold::get_tangent_vector() function uses the gradient of the push-forward, but only a subset of all finite element codes actually require the computation of tangent vectors. Consequently, while derived classes need to implement the abstract virtual push_forward() and pull_back() functions of this class, they do not need to implement the virtual push_forward_gradient() function. Rather, that function has a default implementation (and consequently is not abstract, therefore not forcing derived classes to overload it), but the default implementation clearly can not compute anything useful and therefore simply triggers and exception.
The dimension arguments chartdim, dim and spacedim must satisfy the following relationships:
However, there is no a priori relationship between dim and chartdim. For example, if you want to describe a mapping for an edge (a 1d object) in a 2d triangulation embedded in 3d space, you could do so by parameterizing it via a line
-![\[
F: [0,1] \rightarrow {\mathbb R}^3
- \]](form_1424.png)
in which case chartdim is 1. On the other hand, there is no reason why one can't describe this as a mapping
-![\[
F: {\mathbb R}^3 \rightarrow {\mathbb R}^3
- \]](form_1425.png)
in such a way that the line ![$[0,1]\times \{0\}\times \{0\}$](form_1426.png)
chartdim is 3. This may seem cumbersome but satisfies the requirements of an invertible function 
chartdim is 2.
in such a way that the line ![$[0,1]\times \{0\}\times \{0\}$](form_1428.png)
chartdim is 3. This may seem cumbersome but satisfies the requirements of an invertible function 
chartdim is 2.
Definition at line 902 of file manifold.h.
Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -632,24 +632,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -658,11 +658,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
This operation assumes that the underlying sparsity pattern represents a symmetric object. If this is not the case, then the result of this operation will not be a symmetric matrix, since it only explicitly symmetrizes by looping over the lower left triangular part for efficiency reasons; if there are entries in the upper right triangle, then these elements are missed in the symmetrization. Symmetrization of the sparsity pattern can be obtain by ChunkSparsityPattern::symmetrize().
Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation, and for the result to actually be a norm it also needs to be either real symmetric or complex hermitian.
The underlying template types of both this matrix and the given vector should either both be real or complex-valued, but not mixed, for this function to make sense.
@@ -1513,7 +1513,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
Return the l1-norm of the matrix, that is 

Return the l1-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Return the location of entry 
Return the location of entry 
Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 



Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 



Definition at line 520 of file chunk_sparsity_pattern.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classComponentMask.html differs (JavaScript source, ASCII text, with very long lines (1097)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classComponentMask.html 2023-11-25 15:25:51.300064908 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classComponentMask.html 2023-11-25 15:25:51.300064908 +0100 @@ -137,7 +137,7 @@This class represents a mask that can be used to select individual vector components of a finite element (see also this glossary entry). It will typically have as many elements as the finite element has vector components, and one can use operator[] to query whether a particular component has been selected.
true and false entries that is generally used to enable or disable an operation for a particular vector component. By this definition, disabled vector components still exist – they are simply not touched. As a consequence, when you apply a component mask for interpolating boundary values (to choose just one example) of a problem with 

true and false entries that is generally used to enable or disable an operation for a particular vector component. By this definition, disabled vector components still exist – they are simply not touched. As a consequence, when you apply a component mask for interpolating boundary values (to choose just one example) of a problem with 

Objects of this kind are used in many places where one wants to restrict operations to a certain subset of components, e.g. in DoFTools::make_zero_boundary_values() or VectorTools::interpolate_boundary_values(). These objects can either be created by hand, or, simpler, by asking the finite element to generate a component mask from certain selected components using code such as this where we create a mask that only denotes the velocity components of a Stokes element (see Handling vector valued problems):
Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -657,11 +657,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Evaluate the convergence rates of the data column data_column_key due to the RateMode in relation to the reference column reference_column_key. Be sure that the value types of the table entries of the data column and the reference data column is a number, i.e. double, float, (unsigned) int, and so on.
As this class has no information on the space dimension upon which the reference column vs. the value column is based upon, it needs to be passed as last argument to this method. The default dimension for the reference column is 2, which is appropriate for the number of cells in 2d. If you work in 3d, set the number to 3. If the reference column is 
As this class has no information on the space dimension upon which the reference column vs. the value column is based upon, it needs to be passed as last argument to this method. The default dimension for the reference column is 2, which is appropriate for the number of cells in 2d. If you work in 3d, set the number to 3. If the reference column is 
The new rate column and the data column will be merged to a supercolumn. The tex caption of the supercolumn will be (by default) the same as the one of the data column. This may be changed by using the set_tex_supercaption (...) function of the base class TableHandler.
This method behaves in the following way:
-If RateMode is reduction_rate, then the computed output is 

If RateMode is reduction_rate_log2, then the computed output is 
This is useful, for example, if we use as reference key the number of degrees of freedom or better, the number of cells. Assuming that the error is proportional to 

![$ C (1/\sqrt[dim]{k})^r $](form_404.png)
If RateMode is reduction_rate, then the computed output is 

If RateMode is reduction_rate_log2, then the computed output is 
This is useful, for example, if we use as reference key the number of degrees of freedom or better, the number of cells. Assuming that the error is proportional to 

![$ C (1/\sqrt[dim]{k})^r $](form_379.png)
Definition at line 23 of file convergence_table.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCylindricalManifold.html differs (JavaScript source, ASCII text, with very long lines (853)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCylindricalManifold.html 2023-11-25 15:25:51.360063689 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classCylindricalManifold.html 2023-11-25 15:25:51.360063689 +0100 @@ -423,7 +423,7 @@Compute the cylindrical coordinates 



Compute the cylindrical coordinates 



Implements ChartManifold< dim, spacedim, chartdim >.
@@ -455,7 +455,7 @@Compute the Cartesian coordinates for a chart point given in cylindrical coordinates 



Compute the Cartesian coordinates for a chart point given in cylindrical coordinates 



Definition at line 1144 of file manifold_lib.cc.
@@ -485,7 +485,7 @@Compute the derivatives of the mapping from cylindrical coordinates 



Compute the derivatives of the mapping from cylindrical coordinates 



Definition at line 1164 of file manifold_lib.cc.
@@ -682,7 +682,7 @@Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -725,24 +725,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -751,11 +751,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Return the norm of the derivative object. Here, for the (symmetric) tensor of second derivatives, we choose the absolute value of the largest eigenvalue, which is the matrix norm associated to the 
Return the norm of the derivative object. Here, for the (symmetric) tensor of second derivatives, we choose the absolute value of the largest eigenvalue, which is the matrix norm associated to the 
Definition at line 492 of file derivative_approximation.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1ThirdDerivative.html differs (JavaScript source, ASCII text, with very long lines (632)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1ThirdDerivative.html 2023-11-25 15:25:51.440062061 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeApproximation_1_1internal_1_1ThirdDerivative.html 2023-11-25 15:25:51.440062061 +0100 @@ -239,7 +239,7 @@Return the norm of the derivative object. Here, for the (symmetric) tensor of second derivatives, we choose the absolute value of the largest eigenvalue, which is the matrix norm associated to the 
Return the norm of the derivative object. Here, for the (symmetric) tensor of second derivatives, we choose the absolute value of the largest eigenvalue, which is the matrix norm associated to the 
Definition at line 631 of file derivative_approximation.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeForm.html differs (JavaScript source, ASCII text, with very long lines (1196)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeForm.html 2023-11-25 15:25:51.456728389 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDerivativeForm.html 2023-11-25 15:25:51.456728389 +0100 @@ -163,24 +163,24 @@This class represents the (tangential) derivatives of a function 











-

+
i.e., one needs to be able to multiply the matrix 



Similarly, the second derivative is a bilinear map from 


i.e., one needs to be able to multiply the matrix 



Similarly, the second derivative is a bilinear map from 


In deal.II we represent these derivatives using objects of type DerivativeForm<1,dim,spacedim,Number>, DerivativeForm<2,dim,spacedim,Number> and so on.
Definition at line 58 of file derivative_form.h.
@@ -392,7 +392,7 @@Converts a DerivativeForm <order, dim, dim, Number> to Tensor<order+1, dim, Number>. In particular, if order == 1 and the derivative is the Jacobian of 

Converts a DerivativeForm <order, dim, dim, Number> to Tensor<order+1, dim, Number>. In particular, if order == 1 and the derivative is the Jacobian of 

Compute the volume element associated with the jacobian of the transformation 



Compute the volume element associated with the jacobian of the transformation 



Assuming that the current object stores the Jacobian of a mapping 








One of the uses of DerivativeForm is to apply it as a linear transformation. This function returns 



-DerivativeForm is to apply it as a linear transformation. This function returns




+![\[
\nabla \mathbf F(\mathbf x) \; \Delta \mathbf x
\approx
\mathbf F(\mathbf x + \Delta \mathbf x) - \mathbf F(\mathbf x).
-\]](form_390.png)
The transformation corresponds to
-![\[
[\text{result}]_{i_1,\dots,i_k} = i\sum_{j}
\left[\nabla \mathbf F(\mathbf x)\right]_{i_1,\dots,i_k, j}
\Delta x_j
-\]](form_391.png)
in index notation and corresponds to ![$[\Delta \mathbf x] [\nabla \mathbf F(\mathbf x)]^T$](form_392.png)
in index notation and corresponds to ![$[\Delta \mathbf x] [\nabla \mathbf F(\mathbf x)]^T$](form_398.png)
Definition at line 454 of file derivative_form.h.
@@ -642,7 +642,7 @@Similar to the previous apply_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Similar to the previous apply_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Definition at line 479 of file derivative_form.h.
@@ -681,7 +681,7 @@Similar to the previous apply_transformation(), specialized for the case dim == spacedim where we can return a rank-2 tensor instead of the more general DerivativeForm. Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Similar to the previous apply_transformation(), specialized for the case dim == spacedim where we can return a rank-2 tensor instead of the more general DerivativeForm. Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Definition at line 505 of file derivative_form.h.
@@ -759,11 +759,11 @@Similar to the previous apply_transformation(). In matrix notation, it computes 




-apply_transformation(). In matrix notation, it computes





+![\[
\mathbf u \cdot \mathbf A \mathbf v =
\text{DF2}^{-1}(\mathbf u) \cdot \text{DF1}^{-1}(\mathbf v)
-\]](form_398.png)
Definition at line 565 of file derivative_form.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1CellLevelBase.html differs (JavaScript source, ASCII text, with very long lines (1216)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1CellLevelBase.html 2023-11-25 15:25:51.476727982 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classDifferentiation_1_1AD_1_1CellLevelBase.html 2023-11-25 15:25:51.476727982 +0100 @@ -295,8 +295,8 @@The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
Compute the value of the residual vector field 
Compute the value of the residual vector field 
| [out] | residual | A Vector object with the value for each component of the vector field evaluated at the point defined by the independent variable values. |
Compute the gradient (first derivative) of the residual vector field with respect to all independent variables, i.e.
-![\[
\frac{\partial\mathbf{r}(\mathbf{X})}{\partial\mathbf{X}}
-\]](form_905.png)
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |


Definition at line 793 of file ad_helpers.cc.
@@ -486,7 +486,7 @@Register the definition of the total cell energy 
Register the definition of the total cell energy 
| [in] | energy | A recorded function that defines the total cell energy. This represents the single dependent variable from which both the residual and its linearization are to be computed. |
Evaluation of the total scalar energy functional for a chosen set of degree of freedom values, i.e.
-![\[
\Psi(\mathbf{X}) \vert_{\mathbf{X}}
-\]](form_907.png)
The values at the evaluation point 
Evaluation of the residual for a chosen set of degree of freedom values. Underlying this is the computation of the gradient (first derivative) of the scalar function 
-
+![\[
\mathbf{r}(\mathbf{X}) =
\frac{\partial\Psi(\mathbf{X})}{\partial\mathbf{X}}
\Big\vert_{\mathbf{X}}
-\]](form_908.png)
The values at the evaluation point 
Compute the linearization of the residual vector around a chosen set of degree of freedom values. Underlying this is the computation of the Hessian (second derivative) of the scalar function 
-
+![\[
\frac{\partial\mathbf{r}(\mathbf{X})}{\partial\mathbf{X}}
=
\frac{\partial^{2}\Psi(\mathbf{X})}{\partial\mathbf{X}
\otimes \partial\mathbf{X}} \Big\vert_{\mathbf{X}}
-\]](form_909.png)
The values at the evaluation point 
In the rare case that the number of independent or dependent variables has changed, this can also reconfigured by passing in the appropriate arguments to the function.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used A base helper class that facilitates the evaluation of the derivative(s) of a number of user-defined dependent variables 


A base helper class that facilitates the evaluation of the derivative(s) of a number of user-defined dependent variables 


This class is templated on the floating point type scalar_type of the number that we'd like to differentiate, as well as an enumeration indicating the ADNumberTypeCode . The ADNumberTypeCode dictates which auto-differentiation library is to be used, and what the nature of the underlying auto-differentiable number is. Refer to the Automatic and symbolic differentiation module for more details in this regard.
For all of the classes derived from this base class, there are two possible ways that the code in which they are used can be structured. The one approach is effectively a subset of the other, and which might be necessary to use depends on the nature of the chosen auto-differentiable number.
When "tapeless" numbers are employed, the most simple code structure would be of the following form:
@@ -345,8 +345,8 @@The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
In the rare case that the number of independent or dependent variables has changed, this can also reconfigured by passing in the appropriate arguments to the function.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
In the rare case that the number of independent or dependent variables has changed, this can also be reconfigured by passing in the appropriate arguments to the function.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Register the subset of independent variables 
Register the subset of independent variables 
| [in] | value | A field that defines a number of independent variables. When considering taped AD numbers with branching functions, to avoid potential issues with branch switching it may be a good idea to choose these values close or equal to those that will be later evaluated and differentiated around. |
Set the values for a subset of independent variables 
Set the values for a subset of independent variables 
| [in] | value | A field that defines the values of a number of independent variables. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
Register the definition of the cell residual vector 
Register the definition of the cell residual vector 
| [in] | residual | A vector of recorded functions that defines the residual. The components of this vector represents the dependent variables. |
Evaluation of the residual for a chosen set of degree of freedom values. This corresponds to the computation of the residual vector, i.e.
-![\[
\mathbf{r}(\mathbf{X}) \vert_{\mathbf{X}}
-\]](form_911.png)
The values at the evaluation point 
Compute the linearization of the residual vector around a chosen set of degree of freedom values. Underlying this is the computation of the gradient (first derivative) of the residual vector 
-
+![\[
\frac{\partial\mathbf{r}(\mathbf{X})}{\partial\mathbf{X}}
-\]](form_905.png)
The values at the evaluation point 
In the rare case that the number of independent or dependent variables has changed, this can also reconfigured by passing in the appropriate arguments to the function.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
Register the definition of the scalar field 
Register the definition of the scalar field 
| [in] | func | The recorded function that defines a dependent variable. |
Compute the value of the scalar field 
Compute the value of the scalar field 
Definition at line 1348 of file ad_helpers.cc.
@@ -565,9 +565,9 @@Compute the gradient (first derivative) of the scalar field with respect to all independent variables, i.e.
-![\[
\frac{\partial\Psi(\mathbf{X})}{\partial\mathbf{X}}
-\]](form_913.png)
Compute the Hessian (second derivative) of the scalar field with respect to all independent variables, i.e.
-![\[
\frac{\partial^{2}\Psi(\mathbf{X})}{\partial\mathbf{X} \otimes
\partial\mathbf{X}}
-\]](form_914.png)
Extract the function gradient for a subset of independent variables 
-
+![\[
\frac{\partial\Psi(\mathbf{X})}{\partial\mathbf{A}}
-\]](form_915.png)
Extract the function Hessian for a subset of independent variables 
-
+![\[
\frac{}{\partial\mathbf{B}} \left[
\frac{\partial\Psi(\mathbf{X})}{\partial\mathbf{A}} \right] =
\frac{\partial^{2}\Psi(\mathbf{X})}{\partial\mathbf{B} \otimes
\partial\mathbf{A}}
-\]](form_917.png)
Extract the function Hessian for a subset of independent variables 
-
+![\[
\frac{}{\partial\mathbf{B}} \left[
\frac{\partial\Psi(\mathbf{X})}{\partial\mathbf{A}} \right]
-\]](form_918.png)
This function is a specialization of the above for rank-0 tensors (scalars). This corresponds to extracting a single entry of the Hessian matrix because both extractors imply selection of just a single row or column of the matrix.
@@ -820,11 +820,11 @@Extract the function Hessian for a subset of independent variables 
-
+![\[
\frac{}{\partial\mathbf{B}} \left[
\frac{\partial\Psi(\mathbf{X})}{\partial\mathbf{A}} \right]
-\]](form_918.png)
This function is a specialization of the above for rank-4 symmetric tensors.
@@ -875,8 +875,8 @@In the rare case that the number of independent or dependent variables has changed, this can also be reconfigured by passing in the appropriate arguments to the function.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Register the subset of independent variables 
Register the subset of independent variables 
| [in] | value | A field that defines a number of independent variables. When considering taped AD numbers with branching functions, to avoid potential issues with branch switching it may be a good idea to choose these values close or equal to those that will be later evaluated and differentiated around. |
Set the values for a subset of independent variables 
Set the values for a subset of independent variables 
| [in] | value | A field that defines the values of a number of independent variables. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used The constructor for the class.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
Register the definition of the vector field 
Register the definition of the vector field 
| [in] | funcs | A vector of recorded functions that defines the dependent variables. |
Register the definition of the vector field 
Register the definition of the vector field 
| [in] | funcs | The recorded functions that define a set of dependent variables. |
Compute the value of the vector field 
Compute the value of the vector field 
| [out] | values | A Vector object with the value for each component of the vector field evaluated at the point defined by the independent variable values. The output values vector has a length corresponding to n_dependent_variables. |
Compute the Jacobian (first derivative) of the vector field with respect to all independent variables, i.e.
-![\[
\mathbf{J}(\boldsymbol{\Psi})
= \frac{\partial\boldsymbol{\Psi}(\mathbf{X})}{\partial\mathbf{X}}
-\]](form_921.png)
Extract the set of functions' values for a subset of dependent variables 
Extract the set of functions' values for a subset of dependent variables 
| [in] | values | A Vector object with the value for each component of the vector field evaluated at the point defined by the independent variable values. |
Extract the Jacobian of the subset of dependent functions 

-

+![\[
\mathbf{J}(\mathbf{g})
= \frac{\partial\mathbf{g}(\mathbf{X})}{\partial\mathbf{A}}
-\]](form_923.png)
The first index of the Jacobian matrix 
The first index of the Jacobian matrix 
| [in] | jacobian | The Jacobian of the vector function with respect to all independent variables, i.e., that returned by compute_jacobian(). |
Extract the Jacobian of the subset of dependent functions 

-

+![\[
\mathbf{J}(\mathbf{g})
= \frac{\partial\mathbf{g}(\mathbf{X})}{\partial\mathbf{A}}
-\]](form_923.png)
This function is a specialization of the above for rank-0 tensors (scalars). This corresponds to extracting a single entry of the Jacobian matrix because both extractors imply selection of just a single row or column of the matrix.
@@ -844,11 +844,11 @@Extract the Jacobian of the subset of dependent functions 

-

+![\[
\mathbf{J}(\mathbf{g})
= \frac{\partial\mathbf{g}(\mathbf{X})}{\partial\mathbf{A}}
-\]](form_923.png)
This function is a specialization of the above for rank-4 symmetric tensors.
@@ -899,8 +899,8 @@In the rare case that the number of independent or dependent variables has changed, this can also be reconfigured by passing in the appropriate arguments to the function.
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | n_independent_variables | The number of independent variables that will be used in the definition of the functions that it is desired to compute the sensitivities of. In the computation of ![]() ![]() |
| [in] | n_dependent_variables | The number of scalar functions to be defined that will have a sensitivity to the given independent variables. In the computation of ![]() ![]() |
| [in] | clear_registered_tapes | A flag that indicates the that list of registered_tapes must be cleared. If set to true then the data structure that tracks which tapes have been recorded is cleared as well. It is then expected that any preexisting tapes be re-recorded. |
Register the subset of independent variables 
Register the subset of independent variables 
| [in] | value | A field that defines a number of independent variables. When considering taped AD numbers with branching functions, to avoid potential issues with branch switching it may be a good idea to choose these values close or equal to those that will be later evaluated and differentiated around. |
Set the values for a subset of independent variables 
Set the values for a subset of independent variables 
| [in] | value | A field that defines the values of a number of independent variables. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Set the actual value of the independent variable 
Set the actual value of the independent variable 
| [in] | index | The index in the vector of independent variables. |
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
Initialize an independent variable 
| [out] | out | An auto-differentiable number that is ready for use in standard computations. The operations that are performed with it are not recorded on the tape, and so should only be used when not in recording mode. |
Register the definition of the index'th dependent variable 
Register the definition of the index'th dependent variable 
| [in] | index | The index of the entry in the global list of dependent variables that this function belongs to. |
The set of dependent variables 

The set of dependent variables 

The gradients and Hessians of these dependent variables will be computed at the values 
ad_type so that we can use them to compute function values and directional derivatives in the case that tapeless numbers are used Since time is marched forward in a discrete manner in our simulations, we need to discuss how we increment time. During time stepping we enter two separate alternating regimes in every step.







Tecplot, Paraview, and VisIt. Additionally, during the snapshot stage, the code can assess the quality of the previous step and decide whether it wants to increase or decrease the time step size. The step size for the next time step can be modified here, by calling set_desired_next_step_size().The update stage (the transition stage, the inconsistent stage): In this section of the program, the internal state of the simulation is getting updated from 








The update stage (the transition stage, the inconsistent stage): In this section of the program, the internal state of the simulation is getting updated from 








The question arises whether time should be incremented before updating state quantities. Multiple possibilities exist, depending on program and formulation requirements, and possibly the programmer's preferences:



advance_time() command that was performed previously. In the following example code, we are assuming that a and b are two state variables that need to be updated in this time step. Given a triangulation and a description of a finite element, this class enumerates degrees of freedom on all vertices, edges, faces, and cells of the triangulation. As a result, it also provides a basis for a discrete space 
Given a triangulation and a description of a finite element, this class enumerates degrees of freedom on all vertices, edges, faces, and cells of the triangulation. As a result, it also provides a basis for a discrete space 
It is first used in the step-2 tutorial program.
For each 0d, 1d, 2d, and 3d subobject, this class stores a list of the indices of degrees of freedom defined on this DoFHandler. These indices refer to the unconstrained degrees of freedom, i.e. constrained degrees of freedom are numbered in the same way as unconstrained ones, and are only later eliminated. This leads to the fact that indices in global vectors and matrices also refer to all degrees of freedom and some kind of condensation is needed to restrict the systems of equations to the unconstrained degrees of freedom only. The actual layout of storage of the indices is described in the internal::DoFHandlerImplementation::DoFLevel class documentation.
The class offers iterators to traverse all cells, in much the same way as the Triangulation class does. Using the begin() and end() functions (and companions, like begin_active()), one can obtain iterators to walk over cells, and query the degree of freedom structures as well as the triangulation data. These iterators are built on top of those of the Triangulation class, but offer the additional information on degrees of freedom functionality compared to pure triangulation iterators. The order in which dof iterators are presented by the ++ and -- operators is the same as that for the corresponding iterators traversing the triangulation on which this DoFHandler is constructed.
Like many other classes in deal.II, the DoFHandler class can stream its contents to an archive using BOOST's serialization facilities. The data so stored can later be retrieved again from the archive to restore the contents of this object. This facility is frequently used to save the state of a program to disk for possible later resurrection, often in the context of checkpoint/restart strategies for long running computations or on computers that aren't very reliable (e.g. on very large clusters where individual nodes occasionally fail and then bring down an entire MPI job).
The model for doing so is similar for the DoFHandler class as it is for the Triangulation class (see the section in the general documentation of that class). In particular, the load() function does not exactly restore the same state as was stored previously using the save() function. Rather, the function assumes that you load data into a DoFHandler object that is already associated with a triangulation that has a content that matches the one that was used when the data was saved. Likewise, the load() function assumes that the current object is already associated with a finite element object that matches the one that was associated with it when data was saved; the latter can be achieved by calling DoFHandler::distribute_dofs() using the same kind of finite element before re-loading data from the serialization archive.
Instead of only using one particular FiniteElement on all cells, this class also allows for an enumeration of degrees of freedom on different finite elements on every cells. To this end, one assigns an active_fe_index to every cell that indicates which element within a collection of finite elements (represented by an object of type hp::FECollection) is the one that lives on this cell. The class then enumerates the degree of freedom associated with these finite elements on each cell of a triangulation and, if possible, identifies degrees of freedom at the interfaces of cells if they match. If neighboring cells have degrees of freedom along the common interface that do not immediate match (for example, if you have 

Instead of only using one particular FiniteElement on all cells, this class also allows for an enumeration of degrees of freedom on different finite elements on every cells. To this end, one assigns an active_fe_index to every cell that indicates which element within a collection of finite elements (represented by an object of type hp::FECollection) is the one that lives on this cell. The class then enumerates the degree of freedom associated with these finite elements on each cell of a triangulation and, if possible, identifies degrees of freedom at the interfaces of cells if they match. If neighboring cells have degrees of freedom along the common interface that do not immediate match (for example, if you have 

The whole process of working with objects of this type is explained in step-27. Many of the algorithms this class implements are described in the hp-paper.
The typical workflow for using this class is to create a mesh, assign an active FE index to every active cell, call DoFHandler::distribute_dofs(), and then assemble a linear system and solve a problem on this finite element space.
@@ -977,7 +977,7 @@Go through the triangulation and "distribute" the degrees of freedom needed for the given finite element. "Distributing" degrees of freedom involves allocating memory to store the indices on all entities on which degrees of freedom can be located (e.g., vertices, edges, faces, etc.) and to then enumerate all degrees of freedom. In other words, while the mesh and the finite element object by themselves simply define a finite element space 
Go through the triangulation and "distribute" the degrees of freedom needed for the given finite element. "Distributing" degrees of freedom involves allocating memory to store the indices on all entities on which degrees of freedom can be located (e.g., vertices, edges, faces, etc.) and to then enumerate all degrees of freedom. In other words, while the mesh and the finite element object by themselves simply define a finite element space 
The exact order in which degrees of freedom on a mesh are ordered, i.e., the order in which basis functions of the finite element space are enumerated, is something that deal.II treats as an implementation detail. By and large, degrees of freedom are enumerated in the same order in which we traverse cells, but you should not rely on any specific numbering. In contrast, if you want a particular ordering, use the functions in namespace DoFRenumbering.
This function is first discussed in the introduction to the step-2 tutorial program.
Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 

Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 

Definition at line 567 of file dynamic_sparsity_pattern.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenInverse.html differs (JavaScript source, ASCII text, with very long lines (1094)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenInverse.html 2023-11-25 15:25:51.740055956 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenInverse.html 2023-11-25 15:25:51.743389219 +0100 @@ -190,7 +190,7 @@Inverse iteration (Wieland) for eigenvalue computations.
This class implements an adaptive version of the inverse iteration by Wieland.
-There are two choices for the stopping criterion: by default, the norm of the residual 
There are two choices for the stopping criterion: by default, the norm of the residual 
Usually, the initial guess entering this method is updated after each step, replacing it with the new approximation of the eigenvalue. Using a parameter AdditionalData::relaxation between 0 and 1, this update can be damped. With relaxation parameter 0, no update is performed. This damping allows for slower adaption of the shift value to make sure that the method converges to the eigenvalue closest to the initial guess. This can be aided by the parameter AdditionalData::start_adaption, which indicates the first iteration step in which the shift value should be adapted.
Definition at line 129 of file eigen.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenPower.html differs (JavaScript source, ASCII text, with very long lines (1094)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenPower.html 2023-11-25 15:25:51.766722080 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEigenPower.html 2023-11-25 15:25:51.766722080 +0100 @@ -189,7 +189,7 @@Power method (von Mises) for eigenvalue computations.
-This method determines the largest eigenvalue of a matrix by applying increasing powers of this matrix to a vector. If there is an eigenvalue 

This method determines the largest eigenvalue of a matrix by applying increasing powers of this matrix to a vector. If there is an eigenvalue 

A shift parameter allows to shift the spectrum, so it is possible to compute the smallest eigenvalue, too.
Convergence of this method is known to be slow.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEllipticalManifold.html differs (JavaScript source, ASCII text, with very long lines (1015)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEllipticalManifold.html 2023-11-25 15:25:51.800054734 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classEllipticalManifold.html 2023-11-25 15:25:51.800054734 +0100 @@ -221,16 +221,16 @@Elliptical manifold description derived from ChartManifold. More information on the elliptical coordinate system can be found at Wikipedia .
-This is based on the definition of elliptic coordinates 
-
+![\[
\left\lbrace\begin{aligned}
x &= x_0 + c \cosh(u) \cos(v) \\
y &= y_0 + c \sinh(u) \sin(v)
\end{aligned}\right.
-\]](form_1408.png)
in which 
The current implementation uses coordinates 



![$e\in\left]0,1\right[$](form_1412.png)
in which 
The current implementation uses coordinates 



![$e\in\left]0,1\right[$](form_1458.png)
The constructor of this class will throw an exception if both dim and spacedim are different from two.
This manifold can be used to produce hyper_shells with elliptical curvature. As an example, the test elliptical_manifold_01 produces the following triangulation:
@@ -352,7 +352,7 @@
| center | Center of the manifold. |
| major_axis_direction | Direction of the major axis of the manifold. |
| eccentricity | Eccentricity of the manifold ![]() |
| eccentricity | Eccentricity of the manifold ![]() |
Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -521,7 +521,7 @@Return the periodicity associated with the submanifold.
-For 


For 


Definition at line 1244 of file manifold_lib.cc.
@@ -777,7 +777,7 @@Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -820,24 +820,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -846,11 +846,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Constructor for the reduced functionality. This constructor is equivalent to the other one except that it makes the object use a 
Constructor for the reduced functionality. This constructor is equivalent to the other one except that it makes the object use a 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the inverse and transposed version 




Return the inverse and transposed version 




Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the inverse and transposed version 




Return the inverse and transposed version 




Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the inverse and transposed version 




Return the inverse and transposed version 




Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the inverse and transposed version 




Return the inverse and transposed version 




Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the inverse and transposed version 




Return the inverse and transposed version 




Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the inverse and transposed version 




Return the inverse and transposed version 




Return the inverse and transposed version 




Return the inverse and transposed version 




Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
Return the derivative of a finite element function at quadrature point number q_point after a call to FEEvaluation::evaluate(EvaluationFlags::gradients) the direction normal to the face: 
This call is equivalent to calling get_gradient() * normal_vector() but will use a more efficient internal representation of data.
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the curl of the vector field, 
evaluate(EvaluationFlags::gradients).
Return the inverse and transposed version 




Return the inverse and transposed version 




Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
If the shape function is vector-valued, then this returns the only non- zero component. If the shape function has more than one non-zero component (i.e. it is not primitive), then throw an exception of type ExcShapeFunctionNotPrimitive. In that case, use the shape_value_component() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated |
Compute one vector component of the value of a shape function at a quadrature point. If the finite element is scalar, then only component zero is allowed and the return value equals that of the shape_value() function. If the finite element is vector valued but all shape functions are primitive (i.e. they are non-zero in only one component), then the value returned by shape_value() equals that of this function for exactly one component. This function is therefore only of greater interest if the shape function is not primitive, but then it is necessary since the other function cannot be used.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
| component | vector component to be evaluated. |
The same holds for the arguments of this function as for the shape_value() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


If the current cell is not active (i.e., it has children), then the finite element function is, strictly speaking, defined by shape functions that live on these child cells. Rather than evaluating the shape functions on the child cells, with the quadrature points defined on the current cell, this function first interpolates the finite element function to shape functions defined on the current cell, and then evaluates this interpolated function.
This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. To get values of multi-component elements, there is another get_function_values() below, returning a vector of vectors of results.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
values[q] will contain the value of the field described by fe_function at the 
values[q] will contain the value of the field described by fe_function at the 
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_values(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3320 of file fe_values.cc.
@@ -1614,16 +1614,16 @@Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. There is a corresponding function of the same name for vector-valued finite elements.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_gradients(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3463 of file fe_values.cc.
@@ -1816,11 +1816,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_hessians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3576 of file fe_values.cc.
@@ -2019,11 +2019,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q]=trace(hessians[q]), where hessians would be the output of the get_function_hessians() function.This function does the same as the other get_function_laplacians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q][c]=trace(hessians[q][c]), where hessians would be the output of the get_function_hessians() function.update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. | [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_third_derivatives(), but applied to multi-component (vector- valued) elements. The meaning of the arguments is as explained there.
-third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3826 of file fe_values.cc.
@@ -2681,7 +2681,7 @@Mapped quadrature weight. If this object refers to a volume evaluation (i.e. the derived class is of type FEValues), then this is the Jacobi determinant times the weight of the q_pointth unit quadrature point.
For surface evaluations (i.e. classes FEFaceValues or FESubfaceValues), it is the mapped surface element times the weight of the quadrature point.
-You can think of the quantity returned by this function as the volume or surface element 
You can think of the quantity returned by this function as the volume or surface element 
update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the Jacobian of the transformation at the specified quadrature point, i.e. 
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
update_jacobians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
update_jacobian_pushed_forward_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. If the shape function is vector-valued, then this returns the only non- zero component. If the shape function has more than one non-zero component (i.e. it is not primitive), then throw an exception of type ExcShapeFunctionNotPrimitive. In that case, use the shape_value_component() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated |
Compute one vector component of the value of a shape function at a quadrature point. If the finite element is scalar, then only component zero is allowed and the return value equals that of the shape_value() function. If the finite element is vector valued but all shape functions are primitive (i.e. they are non-zero in only one component), then the value returned by shape_value() equals that of this function for exactly one component. This function is therefore only of greater interest if the shape function is not primitive, but then it is necessary since the other function cannot be used.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
| component | vector component to be evaluated. |
The same holds for the arguments of this function as for the shape_value() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


If the current cell is not active (i.e., it has children), then the finite element function is, strictly speaking, defined by shape functions that live on these child cells. Rather than evaluating the shape functions on the child cells, with the quadrature points defined on the current cell, this function first interpolates the finite element function to shape functions defined on the current cell, and then evaluates this interpolated function.
This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. To get values of multi-component elements, there is another get_function_values() below, returning a vector of vectors of results.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
values[q] will contain the value of the field described by fe_function at the 
values[q] will contain the value of the field described by fe_function at the 
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_values(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3320 of file fe_values.cc.
@@ -1293,16 +1293,16 @@Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. There is a corresponding function of the same name for vector-valued finite elements.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_gradients(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3463 of file fe_values.cc.
@@ -1495,11 +1495,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_hessians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3576 of file fe_values.cc.
@@ -1698,11 +1698,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q]=trace(hessians[q]), where hessians would be the output of the get_function_hessians() function.This function does the same as the other get_function_laplacians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q][c]=trace(hessians[q][c]), where hessians would be the output of the get_function_hessians() function.update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. | [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_third_derivatives(), but applied to multi-component (vector- valued) elements. The meaning of the arguments is as explained there.
-third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3826 of file fe_values.cc.
@@ -2360,7 +2360,7 @@Mapped quadrature weight. If this object refers to a volume evaluation (i.e. the derived class is of type FEValues), then this is the Jacobi determinant times the weight of the q_pointth unit quadrature point.
For surface evaluations (i.e. classes FEFaceValues or FESubfaceValues), it is the mapped surface element times the weight of the quadrature point.
-You can think of the quantity returned by this function as the volume or surface element 
You can think of the quantity returned by this function as the volume or surface element 
update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the Jacobian of the transformation at the specified quadrature point, i.e. 
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
update_jacobians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
update_jacobian_pushed_forward_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the third derivative of the transformation from unit to real cell, i.e. the second derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the third derivative of the transformation from unit to real cell, i.e. the second derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_2nd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. q_index and mapping_index arguments to this function are explicitly specified (rather than leaving them at their default values), then these indices will be used to select which element of the hp::QCollection and hp::MappingCollection passed to the constructor should serve as the quadrature and mapping to be used.active_fe_index values of the two adjacent cells are identical (i.e., have quadrature points at the same locations, and have the same weights). If this is so, then it does not matter which one of the two we take, and we choose one or the other.











q_index and mapping_index arguments to this function.Mapped quadrature weight. This value equals the mapped surface element times the weight of the quadrature point.
-You can think of the quantity returned by this function as the surface element 
You can think of the quantity returned by this function as the surface element 
update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump 
interface_dof_index at the quadrature point q_point of component component.
Return the jump 
interface_dof_index at the quadrature point q_point of component component.
Note that one can define the jump in different ways (the value "there" minus the value "here", or the other way around; both are used in the finite element literature). The definition here uses "value here minus value there", as seen from the first cell.
-If this is a boundary face (at_boundary() returns true), then 
If this is a boundary face (at_boundary() returns true), then 
Return the jump in the gradient 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the jump in the gradient 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the jump in the Hessian 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the jump in the Hessian 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the jump in the third derivative 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the jump in the third derivative 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the average 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the average 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the average of the gradient 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the average of the gradient 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
Return the average of the Hessian 
interface_dof_index at the quadrature point q_point of component component.
If this is a boundary face (at_boundary() returns true), then 
interface_dof_index at the quadrature point q_point of component component.
+If this is a boundary face (at_boundary() returns true), then 
Return the jump 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the jump 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the jump of the gradient 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the jump of the gradient 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the jump in the gradient 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the jump in the gradient 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the jump in the third derivative 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the jump in the third derivative 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the average value 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the average value 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the average of the gradient 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the average of the gradient 
interface_dof_index in the quadrature point q_point of the component selected by this view.
Return the average of the Hessian 
interface_dof_index at the quadrature point q_point of the component selected by this view.
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the values of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The argument here_or_there selects between the value on cell 0 (here, true) and cell 1 (there, false). You can also interpret it as "upstream" (true) and "downstream" (false) as defined by the direction of the normal vector in this quadrature point. If here_or_there is true, the values from the first cell of the interface is used.
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the values of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the gradients of the selected scalar components of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the Hessians of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the third derivatives of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
update_third_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the average of the values of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the average of the gradients of the selected scalar components of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the average of the Hessians of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump vector ![$[\mathbf{u}]=\mathbf{u_1} - \mathbf{u_2}$](form_1183.png)
interface_dof_index in the quadrature point q_point.
Return the jump vector ![$[\mathbf{u}]=\mathbf{u_1} - \mathbf{u_2}$](form_1095.png)
interface_dof_index in the quadrature point q_point.
Return the jump of the gradient (a tensor of rank 2) 
interface_dof_index in the quadrature point q_point.
Return the jump of the gradient (a tensor of rank 2) 
interface_dof_index in the quadrature point q_point.
Return the jump in the gradient 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the jump in the gradient 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the jump in the third derivative 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the jump in the third derivative 
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the average vector 
interface_dof_index in the quadrature point q_point.
Return the average vector 
interface_dof_index in the quadrature point q_point.
Return the average of the gradient (a tensor of rank 2) 
interface_dof_index in the quadrature point q_point.
Return the average of the gradient (a tensor of rank 2) 
interface_dof_index in the quadrature point q_point.
Return the average of the Hessian 
interface_dof_index at the quadrature point q_point of the component selected by this view.
interface_dof_index at the quadrature point q_point of the component selected by this view.
Return the values of the selected vector component of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The argument here_or_there selects between the value on cell 0 (here, true) and cell 1 (there, false). You can also interpret it as "upstream" (true) and "downstream" (false) as defined by the direction of the normal vector in this quadrature point. If here_or_there is true, the values from the first cell of the interface is used.
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the values of the selected vector component of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the gradients of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the Hessians of the selected vector component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the jump in the third derivatives of the selected vector component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
update_third_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the average of the values of the selected vector component of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the average of the gradients of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell interface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the average of the Hessians of the selected vector component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEInterfaceValues object was called.
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. A class to calculate expansion of a scalar FE (or a single component of vector-valued FE) field into Fourier series on a reference element. The exponential form of the Fourier series is based on completeness and Hermitian orthogonality of the set of exponential functions 
-Fourier series on a reference element. The exponential form of the Fourier series is based on completeness and Hermitian orthogonality of the set of exponential functions

+![\[
\int_0^1 \phi_k(x) \phi_l^\ast(x) dx=\delta_{kl}.
-\]](form_1148.png)
Note that 
Note that 
The arbitrary scalar FE field on the reference element can be expanded in the complete orthogonal exponential basis as
-![\[
u({\bf x})
= \sum_{\bf k} c_{\bf k} \phi_{\bf k}({\bf x}).
-\]](form_1150.png)
From the orthogonality property of the basis, it follows that
-![\[
c_{\bf k} =
\int_{[0,1]^d} u({\bf x}) \phi_{\bf k}^\ast ({\bf x}) d{\bf x}\,.
-\]](form_1151.png)
It is this complex-valued expansion coefficients, that are calculated by this class. Note that 




It is this complex-valued expansion coefficients, that are calculated by this class. Note that 




Definition at line 90 of file fe_series.h.
Angular frequencies 
Angular frequencies 
Definition at line 196 of file fe_series.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Legendre.html differs (JavaScript source, ASCII text, with very long lines (1015)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Legendre.html 2023-11-25 15:25:52.330043949 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFESeries_1_1Legendre.html 2023-11-25 15:25:52.326710681 +0100 @@ -195,39 +195,39 @@A class to calculate expansion of a scalar FE (or a single component of vector-valued FE) field into series of Legendre functions on a reference element.
Legendre functions are solutions to Legendre's differential equation
-![\[
\frac{d}{dx}\left([1-x^2] \frac{d}{dx} P_n(x)\right) +
n[n+1] P_n(x) = 0
-\]](form_1157.png)
and can be expressed using Rodrigues' formula
-![\[
P_n(x) = \frac{1}{2^n n!} \frac{d^n}{dx^n}[x^2-1]^n.
-\]](form_1158.png)
These polynomials are orthogonal with respect to the 
![$ [-1;1] $](form_1160.png)
-
![$ [-1;1] $](form_1188.png)
+![\[
\int_{-1}^1 P_m(x) P_n(x) = \frac{2}{2n + 1} \delta_{mn}
-\]](form_1161.png)
and are complete. A family of 
![$ [0;1] $](form_1162.png)
-
![$ [0;1] $](form_1190.png)
+![\[
\widetilde P_m = \sqrt{2} P_m(2x-1).
-\]](form_1163.png)
An arbitrary scalar FE field on the reference element ![$ [0;1] $](form_1162.png)
-![$ [0;1] $](form_1190.png)
+![\[
u(x)
= \sum_{m} c_m \widetilde P_{m}(x).
-\]](form_1164.png)
From the orthogonality property of the basis, it follows that
-![\[
c_m = \frac{2m+1}{2}
\int_0^1 u(x) \widetilde P_m(x) dx .
-\]](form_1165.png)
This class calculates coefficients 


This class calculates coefficients 


Definition at line 260 of file fe_series.h.
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
If the shape function is vector-valued, then this returns the only non- zero component. If the shape function has more than one non-zero component (i.e. it is not primitive), then throw an exception of type ExcShapeFunctionNotPrimitive. In that case, use the shape_value_component() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated |
Compute one vector component of the value of a shape function at a quadrature point. If the finite element is scalar, then only component zero is allowed and the return value equals that of the shape_value() function. If the finite element is vector valued but all shape functions are primitive (i.e. they are non-zero in only one component), then the value returned by shape_value() equals that of this function for exactly one component. This function is therefore only of greater interest if the shape function is not primitive, but then it is necessary since the other function cannot be used.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
| component | vector component to be evaluated. |
The same holds for the arguments of this function as for the shape_value() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


If the current cell is not active (i.e., it has children), then the finite element function is, strictly speaking, defined by shape functions that live on these child cells. Rather than evaluating the shape functions on the child cells, with the quadrature points defined on the current cell, this function first interpolates the finite element function to shape functions defined on the current cell, and then evaluates this interpolated function.
This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. To get values of multi-component elements, there is another get_function_values() below, returning a vector of vectors of results.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
values[q] will contain the value of the field described by fe_function at the 
values[q] will contain the value of the field described by fe_function at the 
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_values(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3320 of file fe_values.cc.
@@ -1651,16 +1651,16 @@Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. There is a corresponding function of the same name for vector-valued finite elements.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_gradients(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3463 of file fe_values.cc.
@@ -1853,11 +1853,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_hessians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3576 of file fe_values.cc.
@@ -2056,11 +2056,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q]=trace(hessians[q]), where hessians would be the output of the get_function_hessians() function.This function does the same as the other get_function_laplacians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q][c]=trace(hessians[q][c]), where hessians would be the output of the get_function_hessians() function.update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. | [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_third_derivatives(), but applied to multi-component (vector- valued) elements. The meaning of the arguments is as explained there.
-third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3826 of file fe_values.cc.
@@ -2718,7 +2718,7 @@Mapped quadrature weight. If this object refers to a volume evaluation (i.e. the derived class is of type FEValues), then this is the Jacobi determinant times the weight of the q_pointth unit quadrature point.
For surface evaluations (i.e. classes FEFaceValues or FESubfaceValues), it is the mapped surface element times the weight of the quadrature point.
-You can think of the quantity returned by this function as the volume or surface element 
You can think of the quantity returned by this function as the volume or surface element 
update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the Jacobian of the transformation at the specified quadrature point, i.e. 
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
update_jacobians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
update_jacobian_pushed_forward_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This class provides an interface to group several elements together into one, vector-valued element. As example, consider the Taylor-Hood element that is used for the solution of the Stokes and Navier-Stokes equations: There, the velocity (of which there are as many components as the dimension 






This class provides an interface to group several elements together into one, vector-valued element. As example, consider the Taylor-Hood element that is used for the solution of the Stokes and Navier-Stokes equations: There, the velocity (of which there are as many components as the dimension 






The creation of this element here corresponds to taking tensor-product powers of the 
Similarly, step-8 solves an elasticity equation where we need to solve for the displacement of a solid object. The displacement again has 

where now each (vector) component of the combined element corresponds to a 
The creation of this element here corresponds to taking tensor-product powers of the 
Similarly, step-8 solves an elasticity equation where we need to solve for the displacement of a solid object. The displacement again has 

where now each (vector) component of the combined element corresponds to a 
To the outside world, FESystem objects look just like a usual finite element object, they just happen to be composed of several other finite elements that are possibly of different type. These "base elements" can themselves have multiple components and, in particular, could also be vector-valued – for example, if one of the base elements is an FESystem itself (see also below). An example is given in the documentation of namespace FETools::Compositing, when using the "tensor product" strategy.
Vector valued elements are discussed in a number of tutorial programs, for example step-8, step-20, step-21, step-22, and in particular in the Handling vector valued problems module.
An FESystem, except in the most trivial case, produces a vector-valued finite element with several components. The number of components n_components() corresponds to the dimension of the solution function in the PDE system, and correspondingly also to the number of equations your PDE system has. For example, the mixed Laplace system covered in step-20 has 




An FESystem, except in the most trivial case, produces a vector-valued finite element with several components. The number of components n_components() corresponds to the dimension of the solution function in the PDE system, and correspondingly also to the number of equations your PDE system has. For example, the mixed Laplace system covered in step-20 has 




While the concept of components is important from the viewpoint of a partial differential equation, the finite element side looks a bit different Since not only FESystem, but also vector-valued elements like FE_RaviartThomas, have several components. The concept needed here is a block. Each block encompasses the set of degrees of freedom associated with a single base element of an FESystem, where base elements with multiplicities count multiple times. These blocks are usually addressed using the information in DoFHandler::block_info(). The number of blocks of a FESystem object is simply the sum of all multiplicities of base elements and is given by n_blocks().
For example, the FESystem for the Taylor-Hood element for the three-dimensional Stokes problem can be built using the code
or more concisely via
or even shorter (mimicking the mathematical notation that we are dealing with a 
or even shorter (mimicking the mathematical notation that we are dealing with a 
This example creates an FESystem sys1 with four components, three for the velocity components and one for the pressure, and also four blocks with the degrees of freedom of each of the velocity components and the pressure in a separate block each. The number of blocks is four since the first base element is repeated three times.
On the other hand, a Taylor-Hood element can also be constructed using
The FESystem sys2 created here has the same four components, but the degrees of freedom are distributed into only two blocks. The first block has all velocity degrees of freedom from U, while the second block contains the pressure degrees of freedom. Note that while U itself has 3 blocks, the FESystem sys2 does not attempt to split U into its base elements but considers it a block of its own. By blocking all velocities into one system first as in sys2, we achieve the same block structure that would be generated if instead of using a 
The FESystem sys2 created here has the same four components, but the degrees of freedom are distributed into only two blocks. The first block has all velocity degrees of freedom from U, while the second block contains the pressure degrees of freedom. Note that while U itself has 3 blocks, the FESystem sys2 does not attempt to split U into its base elements but considers it a block of its own. By blocking all velocities into one system first as in sys2, we achieve the same block structure that would be generated if instead of using a 
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
If the shape function is vector-valued, then this returns the only non- zero component. If the shape function has more than one non-zero component (i.e. it is not primitive), then throw an exception of type ExcShapeFunctionNotPrimitive. In that case, use the shape_value_component() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated |
Compute one vector component of the value of a shape function at a quadrature point. If the finite element is scalar, then only component zero is allowed and the return value equals that of the shape_value() function. If the finite element is vector valued but all shape functions are primitive (i.e. they are non-zero in only one component), then the value returned by shape_value() equals that of this function for exactly one component. This function is therefore only of greater interest if the shape function is not primitive, but then it is necessary since the other function cannot be used.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
| component | vector component to be evaluated. |
The same holds for the arguments of this function as for the shape_value() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


If the current cell is not active (i.e., it has children), then the finite element function is, strictly speaking, defined by shape functions that live on these child cells. Rather than evaluating the shape functions on the child cells, with the quadrature points defined on the current cell, this function first interpolates the finite element function to shape functions defined on the current cell, and then evaluates this interpolated function.
This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. To get values of multi-component elements, there is another get_function_values() below, returning a vector of vectors of results.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
values[q] will contain the value of the field described by fe_function at the 
values[q] will contain the value of the field described by fe_function at the 
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_values(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3320 of file fe_values.cc.
@@ -1394,16 +1394,16 @@Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. There is a corresponding function of the same name for vector-valued finite elements.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_gradients(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3463 of file fe_values.cc.
@@ -1596,11 +1596,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_hessians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3576 of file fe_values.cc.
@@ -1799,11 +1799,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q]=trace(hessians[q]), where hessians would be the output of the get_function_hessians() function.This function does the same as the other get_function_laplacians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q][c]=trace(hessians[q][c]), where hessians would be the output of the get_function_hessians() function.update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. | [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_third_derivatives(), but applied to multi-component (vector- valued) elements. The meaning of the arguments is as explained there.
-third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3826 of file fe_values.cc.
@@ -2461,7 +2461,7 @@Mapped quadrature weight. If this object refers to a volume evaluation (i.e. the derived class is of type FEValues), then this is the Jacobi determinant times the weight of the q_pointth unit quadrature point.
For surface evaluations (i.e. classes FEFaceValues or FESubfaceValues), it is the mapped surface element times the weight of the quadrature point.
-You can think of the quantity returned by this function as the volume or surface element 
You can think of the quantity returned by this function as the volume or surface element 
update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the Jacobian of the transformation at the specified quadrature point, i.e. 
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
update_jacobians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
update_jacobian_pushed_forward_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. If the shape function is vector-valued, then this returns the only non- zero component. If the shape function has more than one non-zero component (i.e. it is not primitive), then throw an exception of type ExcShapeFunctionNotPrimitive. In that case, use the shape_value_component() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated |
Compute one vector component of the value of a shape function at a quadrature point. If the finite element is scalar, then only component zero is allowed and the return value equals that of the shape_value() function. If the finite element is vector valued but all shape functions are primitive (i.e. they are non-zero in only one component), then the value returned by shape_value() equals that of this function for exactly one component. This function is therefore only of greater interest if the shape function is not primitive, but then it is necessary since the other function cannot be used.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
| component | vector component to be evaluated. |
The same holds for the arguments of this function as for the shape_value() function.
| i | Number of the shape function ![]() |
| i | Number of the shape function ![]() |
| q_point | Number of the quadrature point at which function is to be evaluated. |
Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


If the current cell is not active (i.e., it has children), then the finite element function is, strictly speaking, defined by shape functions that live on these child cells. Rather than evaluating the shape functions on the child cells, with the quadrature points defined on the current cell, this function first interpolates the finite element function to shape functions defined on the current cell, and then evaluates this interpolated function.
This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. To get values of multi-component elements, there is another get_function_values() below, returning a vector of vectors of results.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
| [out] | values | The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the solution vector. |
values[q] will contain the value of the field described by fe_function at the 
values[q] will contain the value of the field described by fe_function at the 
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_values(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3320 of file fe_values.cc.
@@ -1141,16 +1141,16 @@Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. There is a corresponding function of the same name for vector-valued finite elements.
| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | gradients | The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_gradients(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3463 of file fe_values.cc.
@@ -1311,11 +1311,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | hessians | The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_hessians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3576 of file fe_values.cc.
@@ -1482,11 +1482,11 @@| [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
| [out] | laplacians | The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). This happens to be equal to the type of the elements of the input vector. |
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q]=trace(hessians[q]), where hessians would be the output of the get_function_hessians() function.This function does the same as the other get_function_laplacians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there.
-laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q][c]=trace(hessians[q][c]), where hessians would be the output of the get_function_hessians() function.update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. | [in] | fe_function | A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell. |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
| [out] | third_derivatives | The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns ![]() ![]() fe_function argument). |
third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This function does the same as the other get_function_third_derivatives(), but applied to multi-component (vector- valued) elements. The meaning of the arguments is as explained there.
-third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 3826 of file fe_values.cc.
@@ -2022,7 +2022,7 @@Mapped quadrature weight. If this object refers to a volume evaluation (i.e. the derived class is of type FEValues), then this is the Jacobi determinant times the weight of the q_pointth unit quadrature point.
For surface evaluations (i.e. classes FEFaceValues or FESubfaceValues), it is the mapped surface element times the weight of the quadrature point.
-You can think of the quantity returned by this function as the volume or surface element 
You can think of the quantity returned by this function as the volume or surface element 
update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the Jacobian of the transformation at the specified quadrature point, i.e. 
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
update_jacobians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
update_jacobian_pushed_forward_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the third derivative of the transformation from unit to real cell, i.e. the second derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the third derivative of the transformation from unit to real cell, i.e. the second derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_2nd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the values of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_values function but it only works on the selected scalar component.
-The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1545 of file fe_values.cc.
@@ -819,7 +819,7 @@Return the gradients of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_gradients function but it only works on the selected scalar component.
-The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1600 of file fe_values.cc.
@@ -890,7 +890,7 @@Return the Hessians of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_hessians function but it only works on the selected scalar component.
-The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1654 of file fe_values.cc.
@@ -961,7 +961,7 @@Return the Laplacians of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called. The Laplacians are the trace of the Hessians.
This function is the equivalent of the FEValuesBase::get_function_laplacians function but it only works on the selected scalar component.
-The data type stored by the output vector must be what you get when you multiply the Laplacians of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Laplacians of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1708 of file fe_values.cc.
@@ -1032,7 +1032,7 @@Return the third derivatives of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_third_derivatives function but it only works on the selected scalar component.
-The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
update_third_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1762 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4.html differs (JavaScript source, ASCII text, with very long lines (902)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4.html 2023-11-25 15:25:52.553372738 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1SymmetricTensor_3_012_00_01dim_00_01spacedim_01_4.html 2023-11-25 15:25:52.553372738 +0100 @@ -154,9 +154,9 @@A class representing a view to a set of (dim*dim + dim)/2 components forming a symmetric second-order tensor from a vector-valued finite element. Views are discussed in the Handling vector valued problems module.
This class allows to query the value and divergence of (components of) shape functions and solutions representing symmetric tensors. The divergence of a symmetric tensor 



This class allows to query the value and divergence of (components of) shape functions and solutions representing symmetric tensors. The divergence of a symmetric tensor 



You get an object of this type if you apply a FEValuesExtractors::SymmetricTensor to an FEValues, FEFaceValues or FESubfaceValues object.
Definition at line 1477 of file fe_values.h.
@@ -507,7 +507,7 @@Return the values of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_values function but it only works on the selected vector components.
-The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2263 of file fe_values.cc.
@@ -593,7 +593,7 @@Return the divergence of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
There is no equivalent function such as FEValuesBase::get_function_divergences in the FEValues classes but the information can be obtained from FEValuesBase::get_function_gradients, of course.
See the general discussion of this class for a definition of the divergence.
-The data type stored by the output vector must be what you get when you multiply the divergences of shape functions (i.e., divergence_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the divergences of shape functions (i.e., divergence_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2317 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4.html differs (JavaScript source, ASCII text, with very long lines (902)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4.html 2023-11-25 15:25:52.570039063 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Tensor_3_012_00_01dim_00_01spacedim_01_4.html 2023-11-25 15:25:52.570039063 +0100 @@ -167,8 +167,8 @@A class representing a view to a set of dim*dim components forming a second-order tensor from a vector-valued finite element. Views are discussed in the Handling vector valued problems module.
This class allows to query the value, gradient and divergence of (components of) shape functions and solutions representing tensors. The divergence of a tensor 


This class allows to query the value, gradient and divergence of (components of) shape functions and solutions representing tensors. The divergence of a tensor 


You get an object of this type if you apply a FEValuesExtractors::Tensor to an FEValues, FEFaceValues or FESubfaceValues object.
Definition at line 1815 of file fe_values.h.
@@ -619,7 +619,7 @@Return the values of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_values function but it only works on the selected vector components.
-The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2373 of file fe_values.cc.
@@ -705,7 +705,7 @@Return the divergence of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
There is no equivalent function such as FEValuesBase::get_function_divergences in the FEValues classes but the information can be obtained from FEValuesBase::get_function_gradients, of course.
See the general discussion of this class for a definition of the divergence.
-The data type stored by the output vector must be what you get when you multiply the divergences of shape functions (i.e., divergence_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the divergences of shape functions (i.e., divergence_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2427 of file fe_values.cc.
@@ -776,7 +776,7 @@Return the gradient of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
See the general discussion of this class for a definition of the gradient.
-The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2482 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Vector.html differs (JavaScript source, ASCII text, with very long lines (857)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Vector.html 2023-11-25 15:25:52.593371923 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFEValuesViews_1_1Vector.html 2023-11-25 15:25:52.593371923 +0100 @@ -228,8 +228,8 @@A class representing a view to a set of spacedim components forming a vector part of a vector-valued finite element. Views are discussed in the Handling vector valued problems module.
Note that in the current context, a vector is meant in the sense physics uses it: it has spacedim components that behave in specific ways under coordinate system transformations. Examples include velocity or displacement fields. This is opposed to how mathematics uses the word "vector" (and how we use this word in other contexts in the library, for example in the Vector class), where it really stands for a collection of numbers. An example of this latter use of the word could be the set of concentrations of chemical species in a flame; however, these are really just a collection of scalar variables, since they do not change if the coordinate system is rotated, unlike the components of a velocity vector, and consequently, this class should not be used for this context.
This class allows to query the value, gradient and divergence of (components of) shape functions and solutions representing vectors. The gradient of a vector 

This class allows to query the value, gradient and divergence of (components of) shape functions and solutions representing vectors. The gradient of a vector 

You get an object of this type if you apply a FEValuesExtractors::Vector to an FEValues, FEFaceValues or FESubfaceValues object.
Definition at line 675 of file fe_values.h.
@@ -287,8 +287,8 @@An alias for the type of symmetrized gradients of the view this class represents. Here, for a set of dim components of the finite element, the symmetrized gradient is a SymmetricTensor<2,spacedim>.
The symmetric gradient of a vector field 

The symmetric gradient of a vector field 

Definition at line 705 of file fe_values.h.
@@ -827,8 +827,8 @@Return the symmetric gradient (a symmetric tensor of rank 2) of the vector component selected by this view, for the shape function and quadrature point selected by the arguments.
-The symmetric gradient is defined as ![$\frac 12 [(\nabla \phi_i(x_q)) +
-(\nabla \phi_i(x_q))^T]$](form_1300.png)

dim components selected from the FEValuesBase object, and 

The symmetric gradient is defined as ![$\frac 12 [(\nabla \phi_i(x_q)) +
+(\nabla \phi_i(x_q))^T]$](form_1245.png)

dim components selected from the FEValuesBase object, and 

update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the vector curl of the vector components selected by this view, for the shape function and quadrature point selected by the arguments. For 1d this function does not make any sense. Thus it is not implemented for spacedim=1. In 2d the curl is defined as
-
whereas in 3d it is given by
-
Return the values of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_values function but it only works on the selected vector components.
-The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the values of shape functions (i.e., value_type) times the type used to store the values of the unknowns 

fe_function argument).
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1818 of file fe_values.cc.
@@ -1089,7 +1089,7 @@Return the gradients of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_gradients function but it only works on the selected vector components.
-The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the gradients of shape functions (i.e., gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1872 of file fe_values.cc.
@@ -1159,10 +1159,10 @@Return the symmetrized gradients of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
The symmetric gradient of a vector field 

The symmetric gradient of a vector field 

The data type stored by the output vector must be what you get when you multiply the symmetric gradients of shape functions (i.e., symmetric_gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the symmetric gradients of shape functions (i.e., symmetric_gradient_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1926 of file fe_values.cc.
@@ -1233,7 +1233,7 @@Return the divergence of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
There is no equivalent function such as FEValuesBase::get_function_divergences in the FEValues classes but the information can be obtained from FEValuesBase::get_function_gradients, of course.
-The data type stored by the output vector must be what you get when you multiply the divergences of shape functions (i.e., divergence_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the divergences of shape functions (i.e., divergence_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 1982 of file fe_values.cc.
@@ -1304,7 +1304,7 @@Return the curl of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
There is no equivalent function such as FEValuesBase::get_function_curls in the FEValues classes but the information can be obtained from FEValuesBase::get_function_gradients, of course.
-The data type stored by the output vector must be what you get when you multiply the curls of shape functions (i.e., curl_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the curls of shape functions (i.e., curl_type) times the type used to store the values of the unknowns 

fe_function argument).
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2037 of file fe_values.cc.
@@ -1375,7 +1375,7 @@Return the Hessians of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_hessians function but it only works on the selected vector components.
-The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Hessians of shape functions (i.e., hessian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2091 of file fe_values.cc.
@@ -1446,7 +1446,7 @@Return the Laplacians of the selected vector components of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called. The Laplacians are the trace of the Hessians.
This function is the equivalent of the FEValuesBase::get_function_laplacians function but it only works on the selected vector components.
-The data type stored by the output vector must be what you get when you multiply the Laplacians of shape functions (i.e., laplacian_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the Laplacians of shape functions (i.e., laplacian_type) times the type used to store the values of the unknowns 

fe_function argument).
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2145 of file fe_values.cc.
@@ -1517,7 +1517,7 @@Return the third derivatives of the selected scalar component of the finite element function characterized by fe_function at the quadrature points of the cell, face or subface selected the last time the reinit function of the FEValues object was called.
This function is the equivalent of the FEValuesBase::get_function_third_derivatives function but it only works on the selected scalar component.
-The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
The data type stored by the output vector must be what you get when you multiply the third derivatives of shape functions (i.e., third_derivative_type) times the type used to store the values of the unknowns 

fe_function argument).
update_third_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Definition at line 2207 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__ABF.html differs (JavaScript source, ASCII text, with very long lines (752)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__ABF.html 2023-11-25 15:25:52.650037437 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__ABF.html 2023-11-25 15:25:52.650037437 +0100 @@ -763,11 +763,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |


@@ -516,9 +516,9 @@
| |||
|
|
|
|
|
|
Correct the shape Hessians by subtracting the terms corresponding to the Jacobian pushed forward gradient.
Before the correction, the Hessians would be given by
-![\[
D_{ijk} = \frac{d^2\phi_i}{d \hat x_J d \hat x_K} (J_{jJ})^{-1}
(J_{kK})^{-1},
-\]](form_1107.png)
where 
-
+![\[
\frac{d^2 \phi_i}{d x_j d x_k} = D_{ijk} - H_{mjk} \frac{d \phi_i}{d x_m},
-\]](form_1109.png)
where 
where 
Correct the shape third derivatives by subtracting the terms corresponding to the Jacobian pushed forward gradient and second derivative.
Before the correction, the third derivatives would be given by
-![\[
D_{ijkl} = \frac{d^3\phi_i}{d \hat x_J d \hat x_K d \hat x_L} (J_{jJ})^{-1}
(J_{kK})^{-1} (J_{lL})^{-1},
-\]](form_1111.png)
where 
-
+![\[
\frac{d^3\phi_i}{d x_j d x_k d x_l} = D_{ijkl} - H_{mjl} \frac{d^2
\phi_i}{d x_k d x_m}
- H_{mkl} \frac{d^2 \phi_i}{d x_j d x_m} - H_{mjk} \frac{d^2 \phi_i}{d x_l
d x_m}
- K_{mjkl} \frac{d \phi_i}{d x_m},
-\]](form_1112.png)
where 

where 





Reimplemented in FE_Q_Base< dim, spacedim >, FE_Q_Base< dim, dim >, FE_Q_Base< dim, spacedim >, FESystem< dim, spacedim >, FESystem< dim, dim >, and FESystem< dim, spacedim >.
@@ -4022,7 +4022,7 @@Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |


@@ -526,9 +526,9 @@
| |||
|
|
|
|
|
|
Correct the shape Hessians by subtracting the terms corresponding to the Jacobian pushed forward gradient.
Before the correction, the Hessians would be given by
-![\[
D_{ijk} = \frac{d^2\phi_i}{d \hat x_J d \hat x_K} (J_{jJ})^{-1}
(J_{kK})^{-1},
-\]](form_1107.png)
where 
-
+![\[
\frac{d^2 \phi_i}{d x_j d x_k} = D_{ijk} - H_{mjk} \frac{d \phi_i}{d x_m},
-\]](form_1109.png)
where 
where 
Correct the shape third derivatives by subtracting the terms corresponding to the Jacobian pushed forward gradient and second derivative.
Before the correction, the third derivatives would be given by
-![\[
D_{ijkl} = \frac{d^3\phi_i}{d \hat x_J d \hat x_K d \hat x_L} (J_{jJ})^{-1}
(J_{kK})^{-1} (J_{lL})^{-1},
-\]](form_1111.png)
where 
-
+![\[
\frac{d^3\phi_i}{d x_j d x_k d x_l} = D_{ijkl} - H_{mjl} \frac{d^2
\phi_i}{d x_k d x_m}
- H_{mkl} \frac{d^2 \phi_i}{d x_j d x_m} - H_{mjk} \frac{d^2 \phi_i}{d x_l
d x_m}
- K_{mjkl} \frac{d \phi_i}{d x_m},
-\]](form_1112.png)
where 

where 





Reimplemented in FE_Q_Base< dim, spacedim >, FE_Q_Base< dim, dim >, FE_Q_Base< dim, spacedim >, FESystem< dim, spacedim >, FESystem< dim, dim >, and FESystem< dim, spacedim >.
@@ -4410,7 +4410,7 @@Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |


@@ -507,9 +507,9 @@
| |||
|
|
|
|
|
|




Reimplemented in FE_Q_Base< dim, spacedim >, FE_Q_Base< dim, dim >, FE_Q_Base< dim, spacedim >, FESystem< dim, spacedim >, FESystem< dim, dim >, and FESystem< dim, spacedim >.
@@ -3474,7 +3474,7 @@Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
@@ -509,7 +509,7 @@
1d element, base and enriched shape functions. | enriched shape function corresponding to the central vertex. | |
Note that evaluation of gradients (hessians) of the enriched shape functions or the finite element field requires evaluation of gradients (gradients and hessians) of the enrichment functions:
-![\begin{align*}
U(\mathbf x)
&= \sum_i N_i(\mathbf x) U_i
+ \sum_{j,k} N_j(\mathbf x) F_k(\mathbf x) U_{jk} \\
@@ -523,10 +523,10 @@
F_k(\mathbf x) + \mathbf \nabla F_k(\mathbf x) \mathbf \nabla N_j(\mathbf x)
+ \mathbf \nabla N_j(\mathbf x) \mathbf \nabla F_k(\mathbf x) + N_j(\mathbf
x) \mathbf \nabla \mathbf \nabla F_k(\mathbf x) \right] U_{jk}
-\end{align*}](form_1093.png)
In most applications it is beneficial to introduce enrichments only in some part of the domain (e.g. around a crack tip) and use standard FE (e.g. FE_Q) elsewhere. This can be achieved by using the hp-finite element framework in deal.II that allows for the use of different elements on different cells. To make the resulting space 
In most applications it is beneficial to introduce enrichments only in some part of the domain (e.g. around a crack tip) and use standard FE (e.g. FE_Q) elsewhere. This can be achieved by using the hp-finite element framework in deal.II that allows for the use of different elements on different cells. To make the resulting space 
This constructor is equivalent to calling




Reimplemented in FE_Q_Base< dim, spacedim >, FE_Q_Base< dim, dim >, FE_Q_Base< dim, spacedim >, FESystem< dim, spacedim >, FESystem< dim, dim >, and FESystem< dim, spacedim >.
@@ -3618,7 +3618,7 @@Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Storage for all possible edge parameterization between vertices. These are required in the computation of edge- and face-based DoFs, which are cell-dependent.
-The edge parameterization of an edge, E, starting at vertex i and ending at vertex 

sigma_imj_values[q][i][j] stores the value of the edge parameterization connected by vertices 

Note that not all of the 

The edge parameterization of an edge, E, starting at vertex i and ending at vertex 

sigma_imj_values[q][i][j] stores the value of the edge parameterization connected by vertices 

Note that not all of the 

Definition at line 287 of file fe_nedelec_sz.h.
@@ -301,8 +301,8 @@Storage for gradients of all possible edge parameterizations between vertices. These are required in the computation of edge- and face-based DoFs, which are cell-dependent. Note that the components of the gradient are constant.
-The edge parameterization of an edge, 



sigma_imj_grads[i][j][d] stores the gradient of the edge parameterization connected by vertices 


The edge parameterization of an edge, 



sigma_imj_grads[i][j][d] stores the gradient of the edge parameterization connected by vertices 


Note that the gradient of the edge parameterization is constant on an edge, so we do not need to store it at every quadrature point.
Definition at line 304 of file fe_nedelec_sz.h.
@@ -365,10 +365,10 @@Storage for edge extension parameters at quadrature points. These are stored for the 12 edges such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
-The edge extension parameter of an edge, 



Note that under this definition, the values of 
edge_lambda_values[m][q] stores the edge extension parameter value at the 

The edge extension parameter of an edge, 



Note that under this definition, the values of 
edge_lambda_values[m][q] stores the edge extension parameter value at the 

Definition at line 347 of file fe_nedelec_sz.h.
@@ -388,7 +388,7 @@Storage for gradients of edge extension parameters in 2d. In this case they are constant. These are stored for the 12 edges such that the global vertex numbering* would follow the order defined by the "standard" deal.II cell.
-edge_lambda_grads_2d[m][d] stores the gradient of the edge extension parameter for component 

edge_lambda_grads_2d[m][d] stores the gradient of the edge extension parameter for component 

Definition at line 358 of file fe_nedelec_sz.h.
@@ -408,7 +408,7 @@Storage for gradients of edge extension parameters in 3d. In this case they are non-constant. These are stored for the 12 edges such that the global vertex numbering* would follow the order defined by the "standard" deal.II cell.
-edge_lambda_grads_3d[m][q][d] stores the gradient of the edge extension parameter for component 

edge_lambda_grads_3d[m][q][d] stores the gradient of the edge extension parameter for component 

Definition at line 369 of file fe_nedelec_sz.h.
@@ -428,7 +428,7 @@Storage for 2nd derivatives of edge extension parameters in 3d, which are constant across the cell. These are stored for the 12 edges such that the global vertex numbering* would follow the order defined by the "standard" deal.II cell.
-edge_lambda_gradgrads_3d[m][d1][d2] stores the 2nd derivatives of the edge extension parameters with respect to components d1 and d2 on edge 
edge_lambda_gradgrads_3d[m][d1][d2] stores the 2nd derivatives of the edge extension parameters with respect to components d1 and d2 on edge 
Definition at line 381 of file fe_nedelec_sz.h.
@@ -448,10 +448,10 @@Storage for the face extension parameters. These are stored for the 6 faces such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
-The face extension parameter of a face, F, defined by the vertices v1, v2, v3, v4 is given by 
Note that under this definition, the values of 
face_lambda_values[m][q] stores the face extension parameter value at the 

The face extension parameter of a face, F, defined by the vertices v1, v2, v3, v4 is given by 
Note that under this definition, the values of 
face_lambda_values[m][q] stores the face extension parameter value at the 

Definition at line 399 of file fe_nedelec_sz.h.
@@ -471,7 +471,7 @@Storage for gradients of face extension parameters. These are stored for the 6 faces such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
-face_lambda_grads[m][d] stores the gradient of the face extension parameters for component 

face_lambda_grads[m][d] stores the gradient of the face extension parameters for component 

Definition at line 409 of file fe_nedelec_sz.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nothing.html differs (JavaScript source, ASCII text, with very long lines (1483)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nothing.html 2023-11-25 15:25:53.916678324 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFE__Nothing.html 2023-11-25 15:25:53.916678324 +0100 @@ -465,7 +465,7 @@ class FE_Nothing< dim, spacedim >Definition of a finite element space with zero degrees of freedom and that, consequently, can only represent a single function: the zero function.
This class is useful (in the context of an hp-method) to represent empty cells in the triangulation on which no degrees of freedom should be allocated, or to describe a field that is extended by zero to a part of the domain where we don't need it. Thus a triangulation may be divided into two regions: an active region where normal elements are used, and an inactive region where FE_Nothing elements are used. The DoFHandler will therefore assign no degrees of freedom to the FE_Nothing cells, and this subregion is therefore implicitly deleted from the computation. step-10 and step-46 show use cases for this element. An interesting application for this element is also presented in the paper [Cangiani2012].
Finite elements are often best interpreted as forming a function space, i.e., a set of functions that form a vector space. One can indeed interpret FE_Nothing in this light: It corresponds to the function space 
Finite elements are often best interpreted as forming a function space, i.e., a set of functions that form a vector space. One can indeed interpret FE_Nothing in this light: It corresponds to the function space 
In situations such as those of step-46, one uses FE_Nothing on cells where one is not interested in a solution variable. For example, in fluid structure interaction problems, the fluid velocity is only defined on cells inside the fluid part of the domain. One then uses FE_Nothing on cells in the solid part of the domain to describe the finite element space for the velocity. In other words, the velocity lives everywhere conceptually, but it is identically zero in those parts of the domain where it is not of interest and doesn't use up any degrees of freedom there.
The question is what happens at the interface between areas where one is interested in the solution (and uses a "normal" finite element) and where one is not interested (and uses FE_Nothing): Should the solution at that interface be zero – i.e., we consider a "continuous" finite element field that happens to be zero in that area where FE_Nothing is used – or is there no requirement for continuity at the interface. In the deal.II language, this is encoded by what the function FiniteElement::compare_for_domination() returns: If the FE_Nothing "dominates", then the solution must be zero at the interface; if it does not, then there is no requirement and one can think of FE_Nothing as a function space that is in general discontinuous (i.e., there is no requirement for any kind of continuity at cell interfaces) but on every cell equal to zero.
@@ -633,7 +633,7 @@| [in] | type | Specifies the reference-cell type. |
| [in] | n_components | Denotes the number of vector components to give this finite element. The default is one. |
| [in] | dominate | Decides whether FE_Nothing will dominate any other FE in compare_for_domination() (with the default being false). Therefore at interfaces where, for example, a ![]() ![]() |
| [in] | dominate | Decides whether FE_Nothing will dominate any other FE in compare_for_domination() (with the default being false). Therefore at interfaces where, for example, a ![]() ![]() |




Reimplemented in FE_Q_Base< dim, spacedim >, FE_Q_Base< dim, dim >, FE_Q_Base< dim, spacedim >, FESystem< dim, spacedim >, FESystem< dim, dim >, and FESystem< dim, spacedim >.
@@ -3220,7 +3220,7 @@Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Implementation of the scalar version of the P1 nonconforming finite element, a piecewise linear element on quadrilaterals in 2d. This implementation is only for 2d cells in a 2d space (i.e., codimension 0).
-Unlike the usual continuous, 
Thus, each function in the nonconforming element space can be discontinuous, and consequently not included in 
Unlike the usual continuous, 
Thus, each function in the nonconforming element space can be discontinuous, and consequently not included in 
Since any function in the P1 nonconforming space is piecewise linear on each element, the function value at the midpoint of each edge is same as the mean value on the edge. Thus the continuity of the integral value across each edge is equivalent to the continuity of the midpoint value of each edge in this case.
Thus for the P1 nonconforming element, the function values at midpoints on edges of a cell are important. The first attempt to define (local) degrees of freedom (DoFs) on a quadrilateral is by using midpoint values of a function.
However, these 4 functionals are not linearly independent because a linear function on 2d is uniquely determined by only 3 independent values. A simple observation reads that any linear function on a quadrilateral should satisfy the 'dice rule': the sum of two function values at the midpoints of the edge pair on opposite sides of a cell is equal to the sum of those at the midpoints of the other edge pair. This is called the 'dice rule' because the number of points on opposite sides of a dice always adds up to the same number as well (in the case of dice, to seven).
-In formulas, the dice rule is written as 



In formulas, the dice rule is written as 



Conversely if 4 values at midpoints satisfying the dice rule are given, then there always exists the unique linear function which coincides with 4 midpoints values.
Due to the dice rule, three values at any three midpoints can determine the last value at the last midpoint. It means that the number of independent local functionals on a cell is 3, and this is also the dimension of the linear polynomial space on a cell in 2d.
For each vertex 




The following figures represent 

For each vertex 




The following figures represent 

shape function 
* +--------0.0--------+ +shape function
: * +--------0.0--------+ * | | * | | * | | @@ -512,7 +512,7 @@ *
shape function 
* +--------0.0--------+ +shape function
: * +--------0.0--------+ * | | * | | * | | @@ -526,7 +526,7 @@ *
shape function 
* +--------0.5--------+ +shape function
: * +--------0.5--------+ * | | * | | * | | @@ -540,7 +540,7 @@ *
shape function 
* +--------0.5--------+ +shape function
: * +--------0.5--------+ * | | * | | * | | @@ -560,8 +560,8 @@Degrees of freedom
We next have to consider the global basis functions for the element because the system of equations which we ultimately have to solve is for a global system, not local. The global basis functions associated with a node are defined by a cell-wise composition of local shape functions associated with the node on each element.
There is a theoretical result about the linear independence of the global basis functions depending on the type of the boundary condition we consider.
-When homogeneous Dirichlet boundary conditions are given, the global basis functions associated with interior nodes are linearly independent. Then, the number of DoFs is equal to the number of interior nodes, and consequently the same as the number of DoFs for the standard bilinear
-finite element. When Neumann boundary conditions are given, the global basis functions associated with all nodes (including boundary nodes) are actually not linearly independent. There exists one redundancy. Thus in this case, the number of DoFs is equal to the number of all nodes minus 1. This is, again as for the regular
+element. When homogeneous Dirichlet boundary conditions are given, the global basis functions associated with interior nodes are linearly independent. Then, the number of DoFs is equal to the number of interior nodes, and consequently the same as the number of DoFs for the standard bilinear
+finite element. When Neumann boundary conditions are given, the global basis functions associated with all nodes (including boundary nodes) are actually not linearly independent. There exists one redundancy. Thus in this case, the number of DoFs is equal to the number of all nodes minus 1. This is, again as for the regular
element. Unit support points
For a smooth function, we construct a piecewise linear function which belongs to the element space by using its nodal values as DoF values.
Note that for the P1 nonconforming element, two nodal values of a smooth function and its interpolant do not coincide in general, in contrast to ordinary Lagrange finite elements. Of course, it is meaningless to refer 'nodal value' because the element space has nonconformity. But it is also true even though the single global basis function associated with a node is considered the unique 'nodal value' at the node. For instance, consider the basis function associated with a node. Consider two lines representing the level sets for value 0.5 and 0, respectively, by connecting two midpoints. Then we cut the quad into two sub-triangles by the diagonal which is placed along those two lines. It gives another level set for value 0.25 which coincides with the cutting diagonal. Therefore these three level sets are all parallel in the quad and it gives the value 0.75 at the base node, not value 1. This is true whether the quadrilateral is a rectangle, parallelogram, or any other shape.
@@ -871,8 +871,8 @@
Return the coefficients of 4 local linear shape functions 
Return the coefficients of 4 local linear shape functions 
Definition at line 89 of file fe_p1nc.cc.
@@ -2544,7 +2544,7 @@



Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Implementation of a scalar Lagrange finite element on a pyramid that yields the finite element space of discontinuous, piecewise polynomials of degree 
Implementation of a scalar Lagrange finite element on a pyramid that yields the finite element space of discontinuous, piecewise polynomials of degree 
Also see Simplex support.
@@ -703,11 +703,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Implementation of a scalar Lagrange finite element on a pyramid that yields the finite element space of continuous, piecewise polynomials of degree 
Implementation of a scalar Lagrange finite element on a pyramid that yields the finite element space of continuous, piecewise polynomials of degree 
Also see Simplex support.
@@ -858,11 +858,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). | |
|
|
|
|
|
| ![]() | ![]() |






















































Correct the shape Hessians by subtracting the terms corresponding to the Jacobian pushed forward gradient.
Before the correction, the Hessians would be given by
-![\[
D_{ijk} = \frac{d^2\phi_i}{d \hat x_J d \hat x_K} (J_{jJ})^{-1}
(J_{kK})^{-1},
-\]](form_1107.png)
where 
-
+![\[
\frac{d^2 \phi_i}{d x_j d x_k} = D_{ijk} - H_{mjk} \frac{d \phi_i}{d x_m},
-\]](form_1109.png)
where 
where 
Correct the shape third derivatives by subtracting the terms corresponding to the Jacobian pushed forward gradient and second derivative.
Before the correction, the third derivatives would be given by
-![\[
D_{ijkl} = \frac{d^3\phi_i}{d \hat x_J d \hat x_K d \hat x_L} (J_{jJ})^{-1}
(J_{kK})^{-1} (J_{lL})^{-1},
-\]](form_1111.png)
where 
-
+![\[
\frac{d^3\phi_i}{d x_j d x_k d x_l} = D_{ijkl} - H_{mjl} \frac{d^2
\phi_i}{d x_k d x_m}
- H_{mkl} \frac{d^2 \phi_i}{d x_j d x_m} - H_{mjk} \frac{d^2 \phi_i}{d x_l
d x_m}
- K_{mjkl} \frac{d \phi_i}{d x_m},
-\]](form_1112.png)
where 

where 

Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Implementation of a scalar Lagrange finite element 
p in each coordinate direction plus some (non-normalized) bubble enrichment space spanned by the additional shape function 
p in each coordinate direction plus some (non-normalized) bubble enrichment space spanned by the additional shape function ![$\varphi_j(\mathbf x)
= 2^{p-1}\left(x_j-\frac 12\right)^{p-1}
-\left[\prod_{i=0}^{dim-1}(x_i(1-x_i))\right]$](form_1133.png)








This class is realized using tensor product polynomials based on equidistant or given support points, in the same way as one can provide support points to the FE_Q class's constructors.
For more information about the spacedim template parameter check the documentation of the FiniteElement class, or the one of Triangulation.
Due to the fact that the enrichments are small almost everywhere for large 

Due to the fact that the enrichments are small almost everywhere for large 

Therefore, this element should be used with care for 
Therefore, this element should be used with care for 
The constructor creates a TensorProductPolynomials object that includes the tensor product of LagrangeEquidistant polynomials of degree p plus the bubble enrichments. This TensorProductPolynomialsBubbles object provides all values and derivatives of the shape functions. In case a quadrature rule is given, the constructor creates a TensorProductPolynomialsBubbles object that includes the tensor product of Lagrange polynomials with the support points from points and the bubble enrichments as defined above.
Furthermore the constructor fills the interface_constrains, the prolongation (embedding) and the restriction matrices.
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). | |
|
|
|
|
|
| ![]() | ![]() |






















































Stokes/Navier Stokes systems such as the one discussed in step-22 could be solved with Q2-iso-Q1 elements for velocities instead of 


Stokes/Navier Stokes systems such as the one discussed in step-22 could be solved with Q2-iso-Q1 elements for velocities instead of 


Correct the shape Hessians by subtracting the terms corresponding to the Jacobian pushed forward gradient.
Before the correction, the Hessians would be given by
-![\[
D_{ijk} = \frac{d^2\phi_i}{d \hat x_J d \hat x_K} (J_{jJ})^{-1}
(J_{kK})^{-1},
-\]](form_1107.png)
where 
-
+![\[
\frac{d^2 \phi_i}{d x_j d x_k} = D_{ijk} - H_{mjk} \frac{d \phi_i}{d x_m},
-\]](form_1109.png)
where 
where 
Correct the shape third derivatives by subtracting the terms corresponding to the Jacobian pushed forward gradient and second derivative.
Before the correction, the third derivatives would be given by
-![\[
D_{ijkl} = \frac{d^3\phi_i}{d \hat x_J d \hat x_K d \hat x_L} (J_{jJ})^{-1}
(J_{kK})^{-1} (J_{lL})^{-1},
-\]](form_1111.png)
where 
-
+![\[
\frac{d^3\phi_i}{d x_j d x_k d x_l} = D_{ijkl} - H_{mjl} \frac{d^2
\phi_i}{d x_k d x_m}
- H_{mkl} \frac{d^2 \phi_i}{d x_j d x_m} - H_{mjk} \frac{d^2 \phi_i}{d x_l
d x_m}
- K_{mjkl} \frac{d \phi_i}{d x_m},
-\]](form_1112.png)
where 

where 

Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Left - ![]() ![]() | Left - ![]() ![]() |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Implementation of the Rannacher-Turek element. This element is used to generate a stable pair of function spaces for the Stokes equation without having to increase the polynomial degree of the velocity space as much as one would do for the stable Taylor-Hood element which uses the 
The shape functions generated by this element are in general discontinuous, and consequently the element is not 
Implementation of the Rannacher-Turek element. This element is used to generate a stable pair of function spaces for the Stokes equation without having to increase the polynomial degree of the velocity space as much as one would do for the stable Taylor-Hood element which uses the 
The shape functions generated by this element are in general discontinuous, and consequently the element is not 
The element is currently implemented only in dimension 2, for the lowest polynomial order, and without hanging nodes and restriction/prolongation.
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Implementation of Raviart-Thomas (RT) elements. The Raviart-Thomas space is designed to solve problems in which the solution only lives in the space 


Implementation of Raviart-Thomas (RT) elements. The Raviart-Thomas space is designed to solve problems in which the solution only lives in the space 


Other properties of the Raviart-Thomas element are that (i) it is not a primitive element ; (ii) the shape functions are defined so that certain integrals over the faces are either zero or one, rather than the common case of certain point values being either zero or one. (There is, however, the FE_RaviartThomasNodal element that uses point values.)
We follow the commonly used – though confusing – definition of the "degree" of RT elements. Specifically, the "degree" of the element denotes the polynomial degree of the largest complete polynomial subspace contained in the finite element space, even if the space may contain shape functions of higher polynomial degree. The lowest order element is consequently FE_RaviartThomas(0), i.e., the Raviart-Thomas element "of degree zero", even though the functions of this space are in general polynomials of degree one in each variable. This choice of "degree" implies that the approximation order of the function itself is degree+1, as with usual polynomial spaces. The numbering so chosen implies the sequence
-![\[
Q_{k+1}
\stackrel{\text{grad}}{\rightarrow}
\text{Nedelec}_k
@@ -514,7 +514,7 @@
\text{RaviartThomas}_k
\stackrel{\text{div}}{\rightarrow}
DGQ_{k}
-\]](form_1083.png)
This class is not implemented for the codimension one case (spacedim != dim).
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Implementation of a scalar discontinuous Lagrange finite element 


Implementation of a scalar discontinuous Lagrange finite element 


Also see Simplex support.
Definition at line 185 of file fe_simplex_p.h.
@@ -1052,11 +1052,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Implementation of a scalar Lagrange finite element 

Implementation of a scalar Lagrange finite element 

Also see Simplex support.
Definition at line 129 of file fe_simplex_p.h.
@@ -1052,11 +1052,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Implementation of a scalar Lagrange finite element on a wedge that yields the finite element space of discontinuous, piecewise polynomials of degree 
Implementation of a scalar Lagrange finite element on a wedge that yields the finite element space of discontinuous, piecewise polynomials of degree 
Also see Simplex support.
@@ -703,11 +703,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Implementation of a scalar Lagrange finite element on a wedge that yields the finite element space of continuous, piecewise polynomials of degree 
Implementation of a scalar Lagrange finite element on a wedge that yields the finite element space of continuous, piecewise polynomials of degree 
Also see Simplex support.
@@ -858,11 +858,11 @@Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). | ||
| 21 | 1 | 0 | 8 | 1 |
What we see is the following: there are a total of 22 degrees-of-freedom on this element with components ranging from 0 to 2. Each DoF corresponds to one of the two base elements used to build FESystem : 





What we see is the following: there are a total of 22 degrees-of-freedom on this element with components ranging from 0 to 2. Each DoF corresponds to one of the two base elements used to build FESystem : 





Finite elements are frequently defined by defining a polynomial space and a set of dual functionals. If these functionals involve point evaluations, then the element is "interpolatory" and it is possible to interpolate an arbitrary (but sufficiently smooth) function onto the finite element space by evaluating it at these points. We call these points "support points".
Most finite elements are defined by mapping from the reference cell to a concrete cell. Consequently, the support points are then defined on the reference ("unit") cell, see this glossary entry. The support points on a concrete cell can then be computed by mapping the unit support points, using the Mapping class interface and derived classes, typically via the FEValues class.
@@ -595,14 +595,14 @@In one space dimension (i.e., for dim==1 and any value of spacedim), finite element classes implementing the interface of the current base class need only set the restriction and prolongation matrices that describe the interpolation of the finite element space on one cell to that of its parent cell, and to that on its children, respectively. The constructor of the current class in one dimension presets the interface_constraints matrix (used to describe hanging node constraints at the interface between cells of different refinement levels) to have size zero because there are no hanging nodes in 1d.
In addition to the fields discussed above for 1d, a constraint matrix is needed to describe hanging node constraints if the finite element has degrees of freedom located on edges or vertices. These constraints are represented by an 

The mapping of the dofs onto the indices of the matrix on the unrefined side is as follows: let 




Similarly, 


In addition to the fields discussed above for 1d, a constraint matrix is needed to describe hanging node constraints if the finite element has degrees of freedom located on edges or vertices. These constraints are represented by an 

The mapping of the dofs onto the indices of the matrix on the unrefined side is as follows: let 




Similarly, 


Through this construction, the degrees of freedom on the child faces are constrained to the degrees of freedom on the parent face. The information so provided is typically consumed by the DoFTools::make_hanging_node_constraints() function.
-

For the interface constraints, the 3d case is similar to the 2d case. The numbering for the indices 
The numbering of the degrees of freedom on the interior of the refined faces for the index 








For the interface constraints, the 3d case is similar to the 2d case. The numbering for the indices 
The numbering of the degrees of freedom on the interior of the refined faces for the index 








The order of the twelve lines and the four child faces can be extracted from the following sketch, where the overall order of the different dof groups is depicted:
* *--15--4--16--* * | | | * 10 19 6 20 12 @@ -643,7 +643,7 @@
The matrix M may be computed with FETools::compute_node_matrix(). This function relies on the existence of generalized_support_points and FiniteElement::convert_generalized_support_point_values_to_dof_values() (see the glossary entry on generalized support points for more information). With this, one can then use the following piece of code in the constructor of a class derived from FiniteElement to compute the 
The matrix M may be computed with FETools::compute_node_matrix(). This function relies on the existence of generalized_support_points and FiniteElement::convert_generalized_support_point_values_to_dof_values() (see the glossary entry on generalized support points for more information). With this, one can then use the following piece of code in the constructor of a class derived from FiniteElement to compute the 
As in this example, prolongation is almost always implemented via embedding, i.e., the nodal values of the function on the children may be different from the nodal values of the function on the parent cell, but as a function of 
As in this example, prolongation is almost always implemented via embedding, i.e., the nodal values of the function on the children may be different from the nodal values of the function on the parent cell, but as a function of 
The opposite operation, restricting a finite element function defined on the children to the parent cell is typically implemented by interpolating the finite element function on the children to the nodal values of the parent cell. In deal.II, the restriction operation is implemented as a loop over the children of a cell that each apply a matrix to the vector of unknowns on that child cell (these matrices are stored in restriction and are accessed by get_restriction_matrix()). The operation that then needs to be implemented turns out to be surprisingly difficult to describe, but is instructive to describe because it also defines the meaning of the restriction_is_additive_flags array (accessed via the restriction_is_additive() function).
-To give a concrete example, assume we use a 
To give a concrete example, assume we use a 
Then we want the restriction operation to take the value of the zeroth DoF on child 0 as the value of the zeroth DoF on the parent, and take the value of the first DoF on child 1 as the value of the first DoF on the parent. Ideally, we would like to write this follows
-![\[
U^\text{coarse}|_\text{parent}
= \sum_{\text{child}=0}^1 R_\text{child} U^\text{fine}|_\text{child}
- \]](form_989.png)
where 

-

+![\[
R_0 = \left(\begin{matrix}1 & 0 \\ 0 & 0\end{matrix}\right),
\qquad\qquad
R_1 = \left(\begin{matrix}0 & 0 \\ 0 & 1\end{matrix}\right).
- \]](form_992.png)
However, this approach already fails if we go to a 
However, this approach already fails if we go to a 
Writing things as the sum over matrix operations as above would not easily work because we have to add nonzero values to 
Writing things as the sum over matrix operations as above would not easily work because we have to add nonzero values to 
Consequently, restriction is typically implemented as a concatenation operation. I.e., we first compute the individual restrictions from each child,
-![\[
\tilde U^\text{coarse}_\text{child}
= R_\text{child} U^\text{fine}|_\text{child},
- \]](form_994.png)
and then compute the values of 
and then compute the values of 
In other words, each nonzero element of 

-

+![\[
R_0 = \left(\begin{matrix}1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 1 & 0
\end{matrix}\right), \qquad\qquad R_1 = \left(\begin{matrix}0 & 0 & 0 \\ 0 &
1 & 0 \\ 1 & 0 & 0 \end{matrix}\right),
- \]](form_997.png)
and the compatibility condition is the 



and the compatibility condition is the 



Unfortunately, not all finite elements allow to write the restriction operation in this way. For example, for the piecewise constant FE_DGQ(0) element, the value of the finite element field on the parent cell can not be determined by interpolation from the children. Rather, the only reasonable choice is to take it as the average value between the children – so we are back to the sum operation, rather than the concatenation. Further thought shows that whether restriction should be additive or not is a property of the individual shape function, not of the finite element as a whole. Consequently, the FiniteElement::restriction_is_additive() function returns whether a particular shape function should act via concatenation (a return value of false) or via addition (return value of true), and the correct code for the overall operation is then as follows (and as, in fact, implemented in DoFAccessor::get_interpolated_dof_values()):




Reimplemented in FE_Q_Base< dim, spacedim >, FE_Q_Base< dim, dim >, FE_Q_Base< dim, spacedim >, FESystem< dim, spacedim >, FESystem< dim, dim >, and FESystem< dim, spacedim >.
@@ -2830,7 +2830,7 @@Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

| scalar | An object that represents a single scalar vector component of this finite element. |
Given a component mask (see this glossary entry), produce a block mask (see this glossary entry) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

| component_mask | The mask that selects individual components of the finite element |
Return a vector of generalized support points.
-FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
FESystem<dim>(FE_Q<dim>(1), 2), which has two copies of the 
See the glossary entry on generalized support points for more information.
For a given degree of freedom, return whether it is logically associated with a vertex, line, quad or hex.
-For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
For instance, for continuous finite elements this coincides with the lowest dimensional object the support point of the degree of freedom lies on. To give an example, for 

To make this more formal, the kind of object returned by this function represents the object so that the support of the shape function corresponding to the degree of freedom, (i.e., that part of the domain where the function "lives") is the union of all of the cells sharing this object. To return to the example above, for 
On the other hand, for discontinuous elements of type 
| [in] | cell_dof_index | The index of a shape function or degree of freedom. This index must be in the range [0,dofs_per_cell). |
Given the values of a function 
![$\Psi_i[f]$](form_1036.png)

![$\Psi_i[f]$](form_1036.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
-$](form_1038.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_146.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1040.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1042.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1043.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1047.png)

dofs_per_cell.
Given the values of a function 
![$\Psi_i[f]$](form_1031.png)

![$\Psi_i[f]$](form_1031.png)

![$ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x)
+$](form_1033.png)

In more detail, let us assume that the generalized support points (see this glossary entry ) of the current element are 
![$\Psi_i[\cdot]$](form_115.png)


![$\Psi_i[\varphi] = f_i(\varphi(\hat{\mathbf x}_i))$](form_1035.png)





The exact form of 
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)$](form_1037.png)
![$\Psi_i[\varphi] = \varphi(\hat{\mathbf x}_i)_{c(i)}$](form_1038.png)




Given all of this, what this function does is the following: If you input a list of values of a function 

![$\{\Psi[\varphi]\}_{i=0}^{N-1}$](form_1042.png)

dofs_per_cell.
| [in] | support_point_values | An array of size dofs_per_cell (which equals the number of points the get_generalized_support_points() function will return) where each element is a vector with as many entries as the element has vector components. This array should contain the values of a function at the generalized support points of the current element. |
| [in] | dofs_per_object | A vector that describes the number of degrees of freedom on geometrical objects for each dimension. This vector must have size dim+1, and entry 0 describes the number of degrees of freedom per vertex, entry 1 the number of degrees of freedom per line, etc. As an example, for the common ![]() (1,0,0). On the other hand, for a ![]() (1,2,4,8). |
| [in] | dofs_per_object | A vector that describes the number of degrees of freedom on geometrical objects for each dimension. This vector must have size dim+1, and entry 0 describes the number of degrees of freedom per vertex, entry 1 the number of degrees of freedom per line, etc. As an example, for the common ![]() (1,0,0). On the other hand, for a ![]() (1,2,4,8). |
| [in] | n_components | Number of vector components of the element. |
| [in] | degree | The maximal polynomial degree of any of the shape functions of this element in any variable on the reference element. For example, for the ![]() ![]() ![]() |
| [in] | conformity | A variable describing which Sobolev space this element conforms to. For example, the ![]() ![]() ![]() ![]() |
| [in] | degree | The maximal polynomial degree of any of the shape functions of this element in any variable on the reference element. For example, for the ![]() ![]() ![]() |
| [in] | conformity | A variable describing which Sobolev space this element conforms to. For example, the ![]() ![]() ![]() ![]() |
| [in] | block_indices | An argument that describes how the base elements of a finite element are grouped. The default value constructs a single block that consists of all dofs_per_cell degrees of freedom. This is appropriate for all "atomic" elements (including non-primitive ones) and these can therefore omit this argument. On the other hand, composed elements such as FESystem will want to pass a different value here. |
A helper class to store a finite-size collection of objects of type T. If the number of elements exceeds the specified maximum size of the container, the oldest element is removed. Additionally, random access and removal of elements is implemented. Indexing is done relative to the last added element.
In order to optimize the container for usage with memory-demanding objects (i.e. linear algebra vectors), the removal of an element does not free the memory. Instead the element is being kept in a separate cache so that subsequent addition does not require re-allocation of memory.
-The primary usage of this class is in solvers to store a history of vectors. That is, if at the iteration 



The primary usage of this class is in solvers to store a history of vectors. That is, if at the iteration 



Return a vector that, at 


Return a vector that, at 




Reimplemented from Manifold< dim, spacedim >.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFullMatrix.html differs (JavaScript source, ASCII text, with very long lines (804)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFullMatrix.html 2023-11-25 15:25:55.533312092 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFullMatrix.html 2023-11-25 15:25:55.533312092 +0100 @@ -1173,8 +1173,8 @@Return the l1-norm of the matrix, where 
Return the l1-norm of the matrix, where 
Return the 

Return the 

A=Inverse(A). A must be a square matrix. Inversion of this matrix by Gauss-Jordan algorithm with partial pivoting. This process is well-behaved for positive definite matrices, but be aware of round-off errors in the indefinite case.
In case deal.II was configured with LAPACK, the functions Xgetrf and Xgetri build an LU factorization and invert the matrix upon that factorization, providing best performance up to matrices with a few hundreds rows and columns.
-The numerical effort to invert an 

The numerical effort to invert an 

Assign the Cholesky decomposition 

*this, where 
Assign the Cholesky decomposition 

*this, where 
ExcMatrixNotPositiveDefinite will be thrown in the case that the matrix is not positive definite.
*this(i,j) = 

*this(i,j) = 

double for the second template argument of this class: it describes the scalar type to be used for each component of your return values. It defaults to double, but in the example above, it could be set to std::complex<double>. step-58 is an example of this.
| dim | The space dimension of the range space within which the domain ![]() Point<dim>. |
| dim | The space dimension of the range space within which the domain ![]() Point<dim>. |
| RangeNumberType | The scalar type of the vector space that is the range (or image) of this function. As discussed above, objects of the current type represent functions from ![]() ![]() ![]() ![]() RangeNumberType template argument. |
Names of difference formulas.
Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. The default implementation calls the get_gradient() method of the FunctionManifold::push_forward_function() member class. If you construct this object using the constructor that takes two string expression, then the default implementation of this method uses a finite difference scheme to compute the gradients(see the
AutoDerivativeFunction() class for details), and you can specify the size of the spatial step size at construction time with the h parameter.
Refer to the general documentation of this class for more information.
@@ -783,24 +783,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -809,11 +809,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


This class takes a function in dim + 1 dimensions and creates a new function in one dimension lower by restricting one of the coordinates to a given value. Mathematically this corresponds to taking a function 


This class takes a function in dim + 1 dimensions and creates a new function in one dimension lower by restricting one of the coordinates to a given value. Mathematically this corresponds to taking a function 


The dim-dimensional coordinates on the restriction are ordered starting from the restricted (dim + 1)-coordinate. In particular, this means that if the 



The dim-dimensional coordinates on the restriction are ordered starting from the restricted (dim + 1)-coordinate. In particular, this means that if the 



Definition at line 51 of file function_restriction.h.
A cut-off function for an arbitrarily-sized ball that is in the space 
The expression of the function in radial coordinates is given by 


A cut-off function for an arbitrarily-sized ball that is in the space 
The expression of the function in radial coordinates is given by 


Definition at line 1206 of file function_lib.h.
Cut-off function for an arbitrary ball. This is the traditional cut-off function in C-infinity for a ball of certain radius around center, 


Cut-off function for an arbitrary ball. This is the traditional cut-off function in C-infinity for a ball of certain radius around center, 


Definition at line 1259 of file function_lib.h.
Cut-off function in L-infinity for an arbitrary ball. This function is the characteristic function of a ball around center with a specified radius, that is,
-![\[ f = \chi(B_r(c)). \]](form_487.png)
![\[ f = \chi(B_r(c)). \]](form_477.png)
If vector valued, it can be restricted to a single component.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineFunction.html differs (JavaScript source, ASCII text, with very long lines (1279)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineFunction.html 2023-11-25 15:25:55.729974756 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineFunction.html 2023-11-25 15:25:55.729974756 +0100 @@ -211,8 +211,8 @@Given a wavenumber vector generate a cosine function. The wavenumber coefficient is given as a 


Given a wavenumber vector generate a cosine function. The wavenumber coefficient is given as a 


The class has its name from the fact that it resembles one component of a Fourier cosine decomposition.
Definition at line 712 of file function_lib.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineSum.html differs (JavaScript source, ASCII text, with very long lines (870)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineSum.html 2023-11-25 15:25:55.749974351 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierCosineSum.html 2023-11-25 15:25:55.749974351 +0100 @@ -213,8 +213,8 @@Given a sequence of wavenumber vectors and weights generate a sum of cosine functions. Each wavenumber coefficient is given as a 


Given a sequence of wavenumber vectors and weights generate a sum of cosine functions. Each wavenumber coefficient is given as a 


Definition at line 870 of file function_lib.h.
Given a wavenumber vector generate a sine function. The wavenumber coefficient is given as a 


Given a wavenumber vector generate a sine function. The wavenumber coefficient is given as a 


The class has its name from the fact that it resembles one component of a Fourier sine decomposition.
Definition at line 766 of file function_lib.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineSum.html differs (JavaScript source, ASCII text, with very long lines (870)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineSum.html 2023-11-25 15:25:55.786640269 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1FourierSineSum.html 2023-11-25 15:25:55.786640269 +0100 @@ -213,7 +213,7 @@Given a sequence of wavenumber vectors and weights generate a sum of sine functions. Each wavenumber coefficient is given as a 


Given a sequence of wavenumber vectors and weights generate a sum of sine functions. Each wavenumber coefficient is given as a 


Definition at line 816 of file function_lib.h.
A scalar function that computes its values by (bi-, tri-)linear interpolation from a set of point data that are arranged on a possibly non-uniform tensor product mesh. In other words, considering the three- dimensional case, let there be points 






A scalar function that computes its values by (bi-, tri-)linear interpolation from a set of point data that are arranged on a possibly non-uniform tensor product mesh. In other words, considering the three- dimensional case, let there be points 






This class is most often used for either evaluating coefficients or right hand sides that are provided experimentally at a number of points inside the domain, or for comparing outputs of a solution on a finite element mesh against previously obtained data defined on a grid.
-
![$[x_0,x_1]$](form_507.png)

![$[x_0,x_1]$](form_494.png)
If a point is requested outside the box defined by the end points of the coordinate arrays, then the function is assumed to simply extend by constant values beyond the last data point in each coordinate direction. (The class does not throw an error if a point lies outside the box since it frequently happens that a point lies just outside the box by an amount on the order of numerical roundoff.)
Constructor to initialize this class instance with the data given in data_values.
| coordinate_values | An array of dim arrays. Each of the inner arrays contains the coordinate values ![]() |
| coordinate_values | An array of dim arrays. Each of the inner arrays contains the coordinate values ![]() |
| data_values | A dim-dimensional table of data at each of the mesh points defined by the coordinate arrays above. The data passed in is copied into internal data structures. Note that the Table class has a number of conversion constructors that allow converting other data types into a table where you specify this argument. |
A scalar function that computes its values by (bi-, tri-)linear interpolation from a set of point data that are arranged on a uniformly spaced tensor product mesh. In other words, considering the three- dimensional case, let there be points 
![$[x_0,x_{K-1}]$](form_508.png)








A scalar function that computes its values by (bi-, tri-)linear interpolation from a set of point data that are arranged on a uniformly spaced tensor product mesh. In other words, considering the three- dimensional case, let there be points 
![$[x_0,x_{K-1}]$](form_495.png)








This class is most often used for either evaluating coefficients or right hand sides that are provided experimentally at a number of points inside the domain, or for comparing outputs of a solution on a finite element mesh against previously obtained data defined on a grid.
-

If a point is requested outside the box defined by the end points of the coordinate arrays, then the function is assumed to simply extend by constant values beyond the last data point in each coordinate direction. (The class does not throw an error if a point lies outside the box since it frequently happens that a point lies just outside the box by an amount on the order of numerical roundoff.)
A function that solves the Laplace equation (with specific boundary values but zero right hand side) and that has a singularity at the center of the L-shaped domain in 2d (i.e., at the location of the re-entrant corner of this non-convex domain).
-The function is given in polar coordinates by 


The function is given in polar coordinates by 


This function is often used to illustrate that the solutions of the Laplace equation
-![\[
-\Delta u = 0
-\]](form_474.png)
can be singular even if the boundary values are smooth. (Here, if the domain is the L-shaped domain ![$(-1,1)^2 \backslash [0,1]^2$](form_475.png)



can be singular even if the boundary values are smooth. (Here, if the domain is the L-shaped domain ![$(-1,1)^2 \backslash [0,1]^2$](form_469.png)



Definition at line 410 of file function_lib.h.
A class that represents a function object for a monomial. Monomials are polynomials with only a single term, i.e. in 1-d they have the form 



A class that represents a function object for a monomial. Monomials are polynomials with only a single term, i.e. in 1-d they have the form 



Definition at line 1320 of file function_lib.h.
Names of difference formulas.
| Enumerator | |
|---|---|
| Euler | The symmetric Euler formula of second order:
- |
| UpwindEuler | The upwind Euler formula of first order:
- |
| FourthOrder | The fourth order scheme
- |
This class creates a 1-dimensional function from a dim + 1 dimensional function by restricting dim of the coordinate values to a given point. Mathematically this corresponds to taking a function, 


This class creates a 1-dimensional function from a dim + 1 dimensional function by restricting dim of the coordinate values to a given point. Mathematically this corresponds to taking a function, 


The coordinates of the point will be expanded in the higher-dimensional functions coordinates starting from the open-direction (and wrapping around). In particular, if we restrict to a point 

The coordinates of the point will be expanded in the higher-dimensional functions coordinates starting from the open-direction (and wrapping around). In particular, if we restrict to a point 

Definition at line 110 of file function_restriction.h.
A class that represents a function object for a polynomial. A polynomial is composed by the summation of multiple monomials. If the polynomial has n monomials and the dimension is equal to dim, the polynomial can be written as 


A class that represents a function object for a polynomial. A polynomial is composed by the summation of multiple monomials. If the polynomial has n monomials and the dimension is equal to dim, the polynomial can be written as 


Definition at line 1700 of file function_lib.h.
Constructor. The coefficients and the exponents of the polynomial are passed as arguments. The Table<2, double> exponents has a number of rows equal to the number of monomials of the polynomial and a number of columns equal to dim. The i-th row of the exponents table contains the 


Constructor. The coefficients and the exponents of the polynomial are passed as arguments. The Table<2, double> exponents has a number of rows equal to the number of monomials of the polynomial and a number of columns equal to dim. The i-th row of the exponents table contains the 


Definition at line 2838 of file function_lib.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Ellipsoid.html differs (JavaScript source, ASCII text, with very long lines (870)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Ellipsoid.html 2023-11-25 15:25:55.949970279 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Ellipsoid.html 2023-11-25 15:25:55.949970279 +0100 @@ -225,11 +225,11 @@Signed-distance level set function to an ellipsoid defined by:
-![\[
\sum_{i=1}^{dim} \frac{(x_i - c_i)^2}{R_i^2} = 1
-\]](form_528.png)
Here, 

Here, 

Definition at line 145 of file function_signed_distance.h.
Evaluates the ellipsoid function:
-![\[
f(\vec{x}) = \sum_{i=1}^{dim} \frac{(x_i - c_i)^2}{R_i^2} - 1
-\]](form_534.png)
Definition at line 201 of file function_signed_distance.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Plane.html differs (JavaScript source, ASCII text, with very long lines (2228)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Plane.html 2023-11-25 15:25:55.969969872 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Plane.html 2023-11-25 15:25:55.969969872 +0100 @@ -213,7 +213,7 @@Signed level set function of a plane in 




Signed level set function of a plane in 




Definition at line 105 of file function_signed_distance.h.
Signed-distance level set function of a rectangle.
-This function is zero on the rectangle, negative "inside" and positive in the rest of 
This function is zero on the rectangle, negative "inside" and positive in the rest of 
Contour surfaces of the signed distance function of a 3D rectangle are illustrated below:
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Sphere.html differs (JavaScript source, ASCII text, with very long lines (2228))
--- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Sphere.html 2023-11-25 15:25:56.009969058 +0100
+++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1SignedDistance_1_1Sphere.html 2023-11-25 15:25:56.009969058 +0100
@@ -213,9 +213,9 @@
Signed-distance level set function of a sphere: 



This function has gradient and Hessian equal to 


Signed-distance level set function of a sphere: 



This function has gradient and Hessian equal to 


Definition at line 49 of file function_signed_distance.h.
Signed-distance level set function of Zalesak's disk proposed in [zalesak1979fully].
-It is calculated by the set difference 



It is calculated by the set difference 



Contour surfaces of the signed distance function of a 3D Zalesak's disk are illustrated below:
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Spherical.html differs (JavaScript source, ASCII text, with very long lines (1010))
--- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Spherical.html 2023-11-25 15:25:56.049968243 +0100
+++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1Spherical.html 2023-11-25 15:25:56.049968243 +0100
@@ -216,7 +216,7 @@
An abstract base class for a scalar-valued function 
An abstract base class for a scalar-valued function 
Definition at line 44 of file function_spherical.h.
@@ -560,7 +560,7 @@Return the gradient in spherical coordinates.
-The returned object should contain derivatives in the following order: 
The returned object should contain derivatives in the following order: 
Definition at line 330 of file function_spherical.cc.
@@ -600,8 +600,8 @@Return the Hessian in spherical coordinates.
-The returned object should contain derivatives in the following order: 
The returned object should contain derivatives in the following order: 
Definition at line 341 of file function_spherical.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1StokesLSingularity.html differs (JavaScript source, ASCII text, with very long lines (1470)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1StokesLSingularity.html 2023-11-25 15:25:56.073301104 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classFunctions_1_1StokesLSingularity.html 2023-11-25 15:25:56.073301104 +0100 @@ -262,7 +262,7 @@A singular solution to Stokes' equations on a 2d L-shaped domain.
-This function satisfies 





This function satisfies 





Taken from Houston, Schötzau, Wihler, proceeding ENUMATH 2003.
Definition at line 246 of file flow_function.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classGridIn.html differs (JavaScript source, ASCII text, with very long lines (1540)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classGridIn.html 2023-11-25 15:25:56.093300697 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classGridIn.html 2023-11-25 15:25:56.093300697 +0100 @@ -951,7 +951,7 @@A cell face in ExodusII can be in an arbitrary number of sidesets (i.e., it can have an arbitrary number of sideset ids) - however, a boundary cell face in deal.II has exactly one boundary id. All boundary faces that are not in a sideset are given the (default) boundary id of 







A cell face in ExodusII can be in an arbitrary number of sidesets (i.e., it can have an arbitrary number of sideset ids) - however, a boundary cell face in deal.II has exactly one boundary id. All boundary faces that are not in a sideset are given the (default) boundary id of 







Definition at line 3772 of file grid_in.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classHouseholder.html differs (JavaScript source, ASCII text, with very long lines (2195)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classHouseholder.html 2023-11-25 15:25:56.106633757 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classHouseholder.html 2023-11-25 15:25:56.106633757 +0100 @@ -136,10 +136,10 @@QR-decomposition of a full matrix.
-This class computes the QR-decomposition of given matrix by the Householder algorithm. Then, the function least_squares() can be used to compute the vector 









This class computes the QR-decomposition of given matrix by the Householder algorithm. Then, the function least_squares() can be used to compute the vector 









The class does not in fact store the 






The 


diagonal member variable.
The class does not in fact store the 






The 


diagonal member variable.
<float> and <double>; others can be generated in application programs (see the section on Template instantiations in the manual). Definition at line 80 of file householder.h.
@@ -210,7 +210,7 @@Create an object holding the QR-decomposition of the matrix 
Create an object holding the QR-decomposition of the matrix 
Compute the QR-decomposition of the given matrix 
Compute the QR-decomposition of the given matrix 
This overwrites any previously computed QR decomposition.
Implementation of a simple class representing the identity matrix of a given size, i.e. a matrix with entries 
Implementation of a simple class representing the identity matrix of a given size, i.e. a matrix with entries 
The main usefulness of this class lies in its ability to initialize other matrix, like this:
This creates a 
This creates a 
No preconditioning at all is equivalent to preconditioning with preconditioning with the identity matrix. deal.II has a specialized class for this purpose, PreconditionIdentity, than can be used in a context as shown in the documentation of that class. The present class can be used in much the same way, although without any additional benefit:
A class to obtain the triangular 







A class to obtain the triangular 







The class is designed to update a given (possibly empty) QR factorization due to the addition of a new column vector. This is equivalent to constructing an orthonormal basis by the Gram-Schmidt procedure. The class also provides update functionality when the column is removed.
The VectorType template argument may either be a parallel and serial vector, and only need to have basic operations such as additions, scalar product, etc. It also needs to have a copy-constructor.
Remove column and update QR factorization.
-Starting from the given QR decomposition ![$QR= A = [a_1\,\dots a_n], \quad a_i \in R^m$](form_1777.png)
![$\tilde Q \tilde R= \tilde A = [a_2\,\dots a_n], \quad a_i \in R^m$](form_1778.png)
Note that 


Starting from the given QR decomposition ![$QR= A = [a_1\,\dots a_n], \quad a_i \in R^m$](form_1776.png)
![$\tilde Q \tilde R= \tilde A = [a_2\,\dots a_n], \quad a_i \in R^m$](form_1777.png)
Note that 


Implements BaseQR< VectorType >.
@@ -338,7 +338,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -379,7 +379,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -419,7 +419,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -460,7 +460,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -484,7 +484,7 @@Connect a slot to implement a custom check of linear dependency during addition of a column.
-Here, u is the last column of the to-be R matrix, rho is its diagonal and col_norm_sqr is the square of the 
true if the new column is linearly independent.
Here, u is the last column of the to-be R matrix, rho is its diagonal and col_norm_sqr is the square of the 
true if the new column is linearly independent.
Apply givens rotation in the (i,k)-plane to zero out 
Apply givens rotation in the (i,k)-plane to zero out 
Solve 
x and y should be consistent with the current size of the subspace. If transpose is true, 
Solve 
x and y should be consistent with the current size of the subspace. If transpose is true, 
Compute 

Compute 

Signal used to decide if the new column is linear dependent.
-Here, u is the last column of the to-be R matrix, rho is its diagonal and col_norm_sqr is the square of the 
true if the new column is linearly independent.
Here, u is the last column of the to-be R matrix, rho is its diagonal and col_norm_sqr is the square of the 
true if the new column is linearly independent.
Definition at line 430 of file qr.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIndexSet.html differs (JavaScript source, ASCII text, with very long lines (812)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIndexSet.html 2023-11-25 15:25:56.153299474 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classIndexSet.html 2023-11-25 15:25:56.153299474 +0100 @@ -250,8 +250,8 @@A class that represents a subset of indices among a larger set. For example, it can be used to denote the set of degrees of freedom within the range 
This class can represent a collection of half-open ranges of indices as well as individual elements. For practical purposes it also stores the overall range these indices can assume. In other words, you need to specify the size of the index space 
A class that represents a subset of indices among a larger set. For example, it can be used to denote the set of degrees of freedom within the range 
This class can represent a collection of half-open ranges of indices as well as individual elements. For practical purposes it also stores the overall range these indices can assume. In other words, you need to specify the size of the index space 
There are two ways to iterate over the IndexSets: First, begin() and end() allow iteration over individual indices in the set. Second, begin_interval() and end_interval() allow iteration over the half-open ranges as described above.
The data structures used in this class along with a rationale can be found in the Distributed Computing paper.
@@ -608,7 +608,7 @@Add the half-open range 
Add the half-open range 
| [in] | begin | The first element of the range to be added. |
| [in] | end | The past-the-end element of the range to be added. |
Return whether the IndexSets are ascending with respect to MPI process number and 1:1, i.e., each index is contained in exactly one IndexSet (among those stored on the different processes), each process stores contiguous subset of indices, and the index set on process 

Return whether the IndexSets are ascending with respect to MPI process number and 1:1, i.e., each index is contained in exactly one IndexSet (among those stored on the different processes), each process stores contiguous subset of indices, and the index set on process 

Definition at line 878 of file index_set.cc.
@@ -1151,7 +1151,7 @@Remove all elements contained in other from this set. In other words, if 




Definition at line 268 of file index_set.cc.
@@ -1900,7 +1900,7 @@Create and return an index set of size 
Create and return an index set of size 
This function exists so that one can create and initialize index sets that are complete in one step, or so one can write code like
Class implementing the integrated Legendre polynomials described in the PhD thesis of Sabine Zaglmayr.
This class was written based upon the existing deal.II Legendre class as a base, but with the coefficients adjusted so that the recursive formula is for the integrated Legendre polynomials described in the PhD thesis of Sabine Zaglmayr. The polynomials can be generated recursively from:








However, it is also possible to generate them directly from the Legendre polynomials:
-

Definition at line 47 of file polynomials_integrated_legendre_sz.h.
If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator.html differs (JavaScript source, ASCII text, with very long lines (1920)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator.html 2023-11-25 15:25:56.189965397 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classKellyErrorEstimator.html 2023-11-25 15:25:56.189965397 +0100 @@ -159,7 +159,7 @@ \eta^2 = \sum_K \eta_K^2 \]" src="form_2188.png"/> - so that 

so that 

In the paper of Ainsworth 




To perform the integration, use is made of the FEFaceValues and FESubfaceValues classes. The integration is performed by looping over all cells and integrating over faces that are not yet treated. This way we avoid integration on faces twice, once for each time we visit one of the adjacent cells. In a second loop over all cells, we sum up the contributions of the faces (which are the integrated square of the jumps times some factor) of each cell and take the square root.
The integration is done using a quadrature formula on the face provided by the caller of the estimate() functions declared by this class. For linear trial functions (FE_Q(1)), QGauss with two points or even the QMidpoint rule might actually suffice. For higher order elements, it is necessary to utilize higher order quadrature formulae with fe.degree+1 Gauss points.
![\[ n_F\int_F
\left|g-a\frac{\partial u_h}{\partial n}\right|^2 ds \]](form_2200.png)
where 


where 


| Enumerator | |
|---|---|
| cell_diameter_over_24 | Kelly error estimator with the factor |
| face_diameter_over_twice_max_degree | the boundary residual estimator with the factor |
| face_diameter_over_twice_max_degree | the boundary residual estimator with the factor |
| cell_diameter | Kelly error estimator with the factor |
| Enumerator | |
|---|---|
| cell_diameter_over_24href_anchor"fielddoc"> Kelly error estimator with the factor | |
| face_diameter_over_twice_max_degree | the boundary residual estimator with the factor |
| face_diameter_over_twice_max_degree | the boundary residual estimator with the factor |
| cell_diameter | Kelly error estimator with the factor |
Compute eigenvalues and eigenvectors of a real symmetric matrix. Only eigenvalues in the interval ![$(\rm{lower\_bound}, \rm{upper\_bound}]$](form_1695.png)

![$[a,b]$](form_1697.png)














![$(\rm{lower\_bound},
\rm{upper\_bound}]$](form_1703.png)


where 



![$(\rm{lower\_bound},
-\rm{upper\_bound}]$](form_1703.png)

![$[a,b]$](form_1697.png)







![$(\rm{lower\_bound}, \rm{upper\_bound}]$](form_1695.png)
where 



![$(\rm{lower\_bound},
+\rm{upper\_bound}]$](form_1703.png)

![$[a,b]$](form_1697.png)







![$(\rm{lower\_bound}, \rm{upper\_bound}]$](form_1695.png)
Definition at line 2237 of file lapack_full_matrix.cc.
@@ -2471,7 +2471,7 @@Compute the inverse of the matrix by singular value decomposition.
Requires that state is either LAPACKSupport::matrix or LAPACKSupport::svd. In the first case, this function calls compute_svd(). After this function, the object will have the state LAPACKSupport::inverse_svd.
For a singular value decomposition, the inverse is simply computed by replacing all singular values by their reciprocal values. If the matrix does not have maximal rank, singular values 0 are not touched, thus computing the minimal norm right inverse of the matrix.
-The parameter threshold determines, when a singular value should be considered zero. It is the ratio of the smallest to the largest nonzero singular value 

The parameter threshold determines, when a singular value should be considered zero. It is the ratio of the smallest to the largest nonzero singular value 

Definition at line 1676 of file lapack_full_matrix.cc.
@@ -2543,9 +2543,9 @@After a call to compute_eigenvalues(), this function returns the 

right_eigenvectors in compute_eigenvalues() has been set to true.
After a call to compute_eigenvalues(), this function returns the 

right_eigenvectors in compute_eigenvalues() has been set to true.
Definition at line 2065 of file lapack_full_matrix.cc.
@@ -4201,7 +4201,7 @@The matrix 

The matrix 

Definition at line 986 of file lapack_full_matrix.h.
@@ -4228,7 +4228,7 @@The matrix 

The matrix 

Definition at line 992 of file lapack_full_matrix.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1CUDAWrappers_1_1Vector.html differs (JavaScript source, ASCII text, with very long lines (778)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1CUDAWrappers_1_1Vector.html 2023-11-25 15:25:56.259963970 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1CUDAWrappers_1_1Vector.html 2023-11-25 15:25:56.259963970 +0100 @@ -1161,7 +1161,7 @@Return the square of the 
Return the square of the 
Definition at line 544 of file cuda_vector.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1ReadWriteVector.html differs (JavaScript source, ASCII text, with very long lines (1069)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1ReadWriteVector.html 2023-11-25 15:25:56.286630096 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1ReadWriteVector.html 2023-11-25 15:25:56.289963360 +0100 @@ -313,7 +313,7 @@ReadWriteVector is intended to represent vectors in 

ReadWriteVector is intended to represent vectors in 

This class allows to access individual elements to be read or written. However, it does not allow global operations such as taking the norm. ReadWriteVector can be used to read and write elements in vectors derived from VectorSpaceVector such as TrilinosWrappers::MPI::Vector and PETScWrappers::MPI::Vector.
Most of the time, one will simply read from or write into a vector of the current class using the global numbers of these degrees of freedom. This is done using operator()() or operator[]() which call global_to_local() to transform the global index into a local one. In such cases, it is clear that one can only access elements of the vector that the current object indeed stores.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1BlockVector.html differs (JavaScript source, ASCII text, with very long lines (1022)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1BlockVector.html 2023-11-25 15:25:56.319962749 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1BlockVector.html 2023-11-25 15:25:56.319962749 +0100 @@ -1512,7 +1512,7 @@

Calculate the scalar product between each block of this vector and V and store the result in a full matrix matrix. This function computes the result by forming 






symmetric is true, it is assumed that inner product results in a square symmetric matrix and almost half of the scalar products can be avoided.
Calculate the scalar product between each block of this vector and V and store the result in a full matrix matrix. This function computes the result by forming 






symmetric is true, it is assumed that inner product results in a square symmetric matrix and almost half of the scalar products can be avoided.
Obviously, this function can only be used if all blocks of both vectors are of the same size.
Calculate the scalar product between each block of this vector and V using a metric tensor matrix. This function computes the result of 






symmetric is true, it is assumed that 

Calculate the scalar product between each block of this vector and V using a metric tensor matrix. This function computes the result of 






symmetric is true, it is assumed that 

Obviously, this function can only be used if all blocks of both vectors are of the same size.
Set each block of this vector as follows: 






Set each block of this vector as follows: 






Obviously, this function can only be used if all blocks of both vectors are of the same size.
Return the 
Return the 
Implements LinearAlgebra::VectorSpaceVector< Number >.
@@ -2288,7 +2288,7 @@Return the square of the 
Return the square of the 
Initialize vector with local_size locally-owned and ghost_size ghost degrees of freedoms.
The optional argument comm_sm, which consists of processes on the same shared-memory domain, allows users have read-only access to both locally-owned and ghost values of processes combined in the shared-memory communicator. See the general documentation of this class for more information about this argument.



ghost_size variable to an appropriate value provides memory space for the ghost data in a vector's memory allocation as and allows access to it via local_element(). However, the associated global indices must be handled externally in this case. 


ghost_size variable to an appropriate value provides memory space for the ghost data in a vector's memory allocation as and allows access to it via local_element(). However, the associated global indices must be handled externally in this case. Initiates communication for the compress() function with non- blocking communication. This function does not wait for the transfer to finish, in order to allow for other computations during the time it takes until all data arrives.
Before the data is actually exchanged, the function must be followed by a call to compress_finish().
In case this function is called for more than one vector before compress_finish() is invoked, it is mandatory to specify a unique communication channel to each such call, in order to avoid several messages with the same ID that will corrupt this operation. Any communication channel less than 100 is a valid value (in particular, the range 
In case this function is called for more than one vector before compress_finish() is invoked, it is mandatory to specify a unique communication channel to each such call, in order to avoid several messages with the same ID that will corrupt this operation. Any communication channel less than 100 is a valid value (in particular, the range 
Initiates communication for the update_ghost_values() function with non-blocking communication. This function does not wait for the transfer to finish, in order to allow for other computations during the time it takes until all data arrives.
Before the data is actually exchanged, the function must be followed by a call to update_ghost_values_finish().
In case this function is called for more than one vector before update_ghost_values_finish() is invoked, it is mandatory to specify a unique communication channel to each such call, in order to avoid several messages with the same ID that will corrupt this operation. Any communication channel less than 100 is a valid value (in particular, the range 
In case this function is called for more than one vector before update_ghost_values_finish() is invoked, it is mandatory to specify a unique communication channel to each such call, in order to avoid several messages with the same ID that will corrupt this operation. Any communication channel less than 100 is a valid value (in particular, the range 
Return the 
Return the 
Implements LinearAlgebra::VectorSpaceVector< Number >.
@@ -2144,7 +2144,7 @@Return the square of the 
Return the square of the 


that store the knowledge how to initialize (resize + internal data structures) an arbitrary vector of the Range and Domain space.
The primary purpose of this class is to provide syntactic sugar for complex matrix-vector operations and free the user from having to create, set up and handle intermediate storage locations by hand.
-As an example consider the operation 



op that stores the knowledge of this operation, one can write:
As an example consider the operation 



op that stores the knowledge of this operation, one can write:
std::function objects and lambda functions. This flexibility comes with a run-time penalty. Only use this object to encapsulate matrix object of medium to large size (as a rule of thumb, sparse matrices with a size 
std::function objects and lambda functions. This flexibility comes with a run-time penalty. Only use this object to encapsulate matrix object of medium to large size (as a rule of thumb, sparse matrices with a size 
For example: LinearOperator instances representing matrix inverses usually require calling some linear solver. These solvers may not have interfaces to the LinearOperator (which, for example, may represent a composite operation). The TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload therefore provides an interface extension to the LinearOperator so that it can be passed to the solver and used by the solver as if it were a Trilinos operator. This implies that all of the necessary functionality of the specific Trilinos operator has been overloaded within the Payload class. This includes operator-vector multiplication and inverse operator-vector multiplication, where the operator can be either a TrilinosWrappers::SparseMatrix or a TrilinosWrappers::PreconditionBase and the vector is a native Trilinos vector.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classManifold.html differs (JavaScript source, ASCII text, with very long lines (2267)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classManifold.html 2023-11-25 15:25:56.396627856 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classManifold.html 2023-11-25 15:25:56.396627856 +0100 @@ -202,11 +202,11 @@In the most essential use of manifolds, manifold descriptions are used to create a "point between other points". For example, when a triangulation creates a new vertex on a cell, face, or edge, it determines the new vertex' coordinates through the following function call:
Here, points is a collection of points in spacedim dimension, and a collection of corresponding weights. The points in this context will then be the vertices of the cell, face, or edge, and the weights are typically one over the number of points when a new midpoint of the cell, face, or edge is needed. Derived classes then will implement the Manifold::get_new_point() function in a way that computes the location of this new point. In the simplest case, for example in the FlatManifold class, the function simply computes the arithmetic average (with given weights) of the given points. However, other classes do something differently; for example, the SphericalManifold class, which is used to describe domains that form (part of) the sphere, will ensure that, given the two vertices of an edge at the boundary, the new returned point will lie on the grand circle that connects the two points, rather than choosing a point that is half-way between the two points in 
Here, points is a collection of points in spacedim dimension, and a collection of corresponding weights. The points in this context will then be the vertices of the cell, face, or edge, and the weights are typically one over the number of points when a new midpoint of the cell, face, or edge is needed. Derived classes then will implement the Manifold::get_new_point() function in a way that computes the location of this new point. In the simplest case, for example in the FlatManifold class, the function simply computes the arithmetic average (with given weights) of the given points. However, other classes do something differently; for example, the SphericalManifold class, which is used to describe domains that form (part of) the sphere, will ensure that, given the two vertices of an edge at the boundary, the new returned point will lie on the grand circle that connects the two points, rather than choosing a point that is half-way between the two points in 
Manifold::get_new_point() has a default implementation that can simplify this process somewhat: Internally, the function calls the Manifold::get_intermediate_point() to compute pair-wise intermediate points. Internally the Manifold::get_intermediate_point() calls the Manifold::project_to_manifold() function after computing the convex combination of the given points. This allows derived classes to only overload Manifold::project_to_manifold() for simple situations. This is often useful when describing manifolds that are embedded in higher dimensional space, e.g., the surface of a sphere. In those cases, the desired new point may be computed simply by the (weighted) average of the provided points, projected back out onto the sphere.
The second use of this class is in computing directions on domains and boundaries. For example, we may need to compute the normal vector to a face in order to impose the no-flow boundary condition 
The second use of this class is in computing directions on domains and boundaries. For example, we may need to compute the normal vector to a face in order to impose the no-flow boundary condition 
To make this possible, the Manifold class provides a member function (to be implemented by derived classes) that computes a "vector tangent to the manifold at one point, in direction of another point" via the Manifold::get_tangent_vector() function. For example, in 2d, one would use this function with the two vertices of an edge at the boundary to compute a "tangential" vector along the edge, and then get the normal vector by rotation by 90 degrees. In 3d, one would compute the two vectors "tangential" to the two edges of a boundary face adjacent to a boundary vertex, and then take the cross product of these two to obtain a vector normal to the boundary.
For reasons that are more difficult to understand, these direction vectors are normalized in a very specific way, rather than to have unit norm. See the documentation of Manifold::get_tangent_vector(), as well as below, for more information.
@@ -214,11 +214,11 @@The "real" way to understand what this class does is to see it in the framework of differential geometry. More specifically, differential geometry is fundamentally based on the assumption that two sufficiently close points are connected via a line of "shortest distance". This line is called a "geodesic", and it is selected from all other lines that connect the two points by the property that it is shortest if distances are measured in terms of the "metric" that describes a manifold. To give examples, recall that the geodesics of a flat manifold (implemented in the FlatManifold class) are simply the straight lines connecting two points, whereas for spherical manifolds (see the SphericalManifold class) geodesics between two points of same distance are the grand circles, and are in general curved lines when connecting two lines of different distance from the origin.
In the following discussion, and for the purposes of implementing the current class, the concept of "metrics" that is so fundamental to differential geometry is no longer of great importance to us. Rather, everything can simply be described by postulating the existence of geodesics connecting points on a manifold.
-Given geodesics, the operations discussed in the previous two sections can be described in a more formal way. In essence, they rely on the fact that we can assume that a geodesic is parameterized by a "time" like variable 




In this picture, computing a mid-point between points 




Likewise, the "tangential" vector described above is simply the velocity vector, 


Note that if we wanted to, we could use this to compute the length of the geodesic that connects two points 









Given geodesics, the operations discussed in the previous two sections can be described in a more formal way. In essence, they rely on the fact that we can assume that a geodesic is parameterized by a "time" like variable 




In this picture, computing a mid-point between points 




Likewise, the "tangential" vector described above is simply the velocity vector, 


Note that if we wanted to, we could use this to compute the length of the geodesic that connects two points 









Definition at line 286 of file manifold.h.
Return a vector that, at 


While tangent vectors are often normalized to unit length, the vectors returned by this function are normalized as described in the introduction of this class. Specifically, if 






The default implementation of this function approximates 


Return a vector that, at 


While tangent vectors are often normalized to unit length, the vectors returned by this function are normalized as described in the introduction of this class. Specifically, if 






The default implementation of this function approximates 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Compute information about the mapping from the reference cell to the real cell indicated by the first argument to this function. Derived classes will have to implement this function based on the kind of mapping they represent. It is called by FEValues::reinit().
-Conceptually, this function's represents the application of the mapping 
![$\mathbf\in [0,1]^d$](form_1260.png)


Conceptually, this function's represents the application of the mapping 
![$\mathbf\in [0,1]^d$](form_1282.png)






The information computed by this function is used to fill the various member variables of the output argument of this function. Which of the member variables of that structure should be filled is determined by the update flags stored in the Mapping::InternalDataBase object passed to this function.
An extensive discussion of the interaction between this function and FEValues can be found in the How Mapping, FiniteElement, and FEValues work together documentation module.
@@ -1397,37 +1397,37 @@The mapping kinds currently implemented by derived classes are:
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian:
-![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form
-![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
Gradients of scalar differentiable functions are transformed this way.
In the case when dim=spacedim the previous formula reduces to
-![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)
because we assume that the mapping 

mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform
-![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)
Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of 


Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of 


mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form
-![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
Jacobians of spacedim-vector valued differentiable functions are transformed this way.
In the case when dim=spacedim the previous formula reduces to
-![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
The mapping kinds currently implemented by derived classes are:
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian:
-![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form
-![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
Gradients of scalar differentiable functions are transformed this way.
In the case when dim=spacedim the previous formula reduces to
-![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)
because we assume that the mapping 

mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform
-![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)
Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of 


Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of 


mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form
-![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
Jacobians of spacedim-vector valued differentiable functions are transformed this way.
In the case when dim=spacedim the previous formula reduces to
-![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
mapping_contravariant_gradient: it assumes 
-
+![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 
-
+![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 
-
+![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
The mapping kinds currently implemented by derived classes are:
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form
-![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
,
where
-![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient).
In the case when dim=spacedim the previous formula reduces to
-![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of 


Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of 


The mapping kinds currently implemented by derived classes are:
mapping_contravariant_hessian: it assumes 
-
+![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 
-
+![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes 
-
+ A class providing a mapping from the reference cell to cells that are axiparallel, i.e., that have the shape of rectangles (in 2d) or boxes (in 3d) with edges parallel to the coordinate directions. The class therefore provides functionality that is equivalent to what, for example, MappingQ would provide for such cells. However, knowledge of the shape of cells allows this class to be substantially more efficient. Specifically, the mapping is meant for cells for which the mapping from the reference to the real cell is a scaling along the coordinate directions: The transformation from reference coordinates
-
+ in 2d, and
- in 3d, where in 3d, where The class is intended for efficiency, and it does not do a whole lot of error checking. If you apply this mapping to a cell that does not conform to the requirements above, you will get strange results. Definition at line 79 of file mapping_cartesian.h. The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are: The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. Computed on each cell. Definition at line 458 of file mapping_fe_field.h. Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. Computed on each cell. Definition at line 371 of file mapping_fe.h. The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ A vector of weights for use in Manifold::get_new_point(). For each point (interior to a cell), we compute the weight each vertex has for this point. If the point lies at a vertex, then this vertex has weight one and all others have weight zero. If the point lies interior to a cell, then the weight every vertex has is just the A vector of weights for use in Manifold::get_new_point(). For each point (interior to a cell), we compute the weight each vertex has for this point. If the point lies at a vertex, then this vertex has weight one and all others have weight zero. If the point lies interior to a cell, then the weight every vertex has is just the This array has size GeometryInfo<dim>::vertices_per_cell, but it can't be converted into a fixed size array because it is used as input for Manifold::get_new_point() which wants to see a std::vector<double> for the weights. Definition at line 270 of file mapping_manifold.h. Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. Computed on each cell. Definition at line 307 of file mapping_manifold.h. This class implements the functionality for polynomial mappings This class implements the functionality for polynomial mappings For a number of applications, one only knows a manifold description of a surface but not the interior of the computational domain. In such a case, a FlatManifold object will be assigned to the interior entities that describes a usual planar coordinate system where the additional points for the higher order mapping are placed exactly according to a bi-/trilinear mapping. When combined with a non-flat manifold on the boundary, for example a circle bulging into the interior of a square cell, the two manifold descriptions are in general incompatible. For example, a FlatManifold defined solely through the cell's vertices would put an interior point located at some small distance epsilon away from the boundary along a straight line and thus in general outside the concave part of a circle. If the polynomial degree of MappingQ is sufficiently high, the transformation from the reference cell to such a cell would in general contain inverted regions close to the boundary. In order to avoid this situation, this class applies an algorithm for making this transition smooth using a so-called transfinite interpolation that is essentially a linear blend between the descriptions along the surrounding entities. In the algorithm that computes additional points, the compute_mapping_support_points() method, all the entities of the cells are passed through hierarchically, starting from the lines to the quads and finally hexes. Points on objects higher up in the hierarchy are obtained from the manifold associated with that object, taking into account all the points previously computed by the manifolds associated with the lower-dimensional objects, not just the vertices. If only a line is assigned a curved boundary but the adjacent quad is on a flat manifold, the flat manifold on the quad will take the points on the deformed line into account when interpolating the position of the additional points inside the quad and thus always result in a well-defined transformation. The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+ Implementation of a The mapping implemented by this class maps the reference (unit) cell to a general grid cell with straight lines in Implementation of a The mapping implemented by this class maps the reference (unit) cell to a general grid cell with straight lines in The shape functions for this mapping are the same as for the finite element FE_Q of polynomial degree 1. Therefore, coupling these two yields an isoparametric element. The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+ This class provides a mapping that adds to the location of each cell a This class provides a mapping that adds to the location of each cell a The constructor of this class takes two arguments: a reference to the vector that defines the mapping from the reference configuration to the current configuration and a reference to the DoFHandler. The vector should then represent a (flattened out version of a) vector valued field defined at nodes defined by the DoFHandler, where the number of components of the vector field equals the number of space dimensions. Thus, the DoFHandler shall operate on a finite element that has as many components as space dimensions. As an additional requirement, we impose that it have as many degree of freedom per vertex as there are space dimensions; since this object only evaluates the finite element field at the vertices, the values of all other degrees of freedom (not associated to vertices) are ignored. These requirements are met if the finite element which the given DoFHandler operates on is constructed as a system element (FESystem) from In many cases, the shift vector will also be the solution vector of the problem under investigation. If this is not the case (i.e. the number of components of the solution variable is not equal to the space dimension, e.g. for scalar problems in The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+ Initialize the data cache by letting the function given as an argument provide the mapping support points for all cells (on all levels) of the given triangulation. The function must return a vector of Initialize the data cache by letting the function given as an argument provide the mapping support points for all cells (on all levels) of the given triangulation. The function must return a vector of The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+ Return the locations of support points for the mapping. For example, for Return the locations of support points for the mapping. For example, for The default implementation of this function is appropriate for most cases. It takes the locations of support points on the boundary of the cell from the underlying manifold. Interior support points (ie. support points in quads for 2d, in hexes for 3d) are then computed using an interpolation from the lower-dimensional entities (lines, quads) in order to make the transformation as smooth as possible without introducing additional boundary layers within the cells due to the placement of support points. The function works its way from the vertices (which it takes from the given cell) via the support points on the line (for which it calls the add_line_support_points() function) and the support points on the quad faces (in 3d, for which it calls the add_quad_support_points() function). It then adds interior support points that are either computed by interpolation from the surrounding points using weights for transfinite interpolation, or if dim<spacedim, it asks the underlying manifold for the locations of interior points. The mapping kinds currently implemented by derived classes are:
- In physics, this is usually referred to as the contravariant transformation. Mathematically, it is the push forward of a vector field.
- Gradients of scalar differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- because we assume that the mapping
- Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of differential forms from the reference cell to the physical cell. It is useful to think of
- Jacobians of spacedim-vector valued differentiable functions are transformed this way. In the case when dim=spacedim the previous formula reduces to
- Transform a tensor field from the reference cell to the physical cell. These tensors are usually the Jacobians in the reference cell of vector fields that have been pulled back from the physical cell. The mapping kinds currently implemented by derived classes are:
-
+
-
+
-
+ The mapping kinds currently implemented by derived classes are:
- , where
- Hessians of spacedim-vector valued differentiable functions are transformed this way (After subtraction of the product of the derivative with the Jacobian gradient). In the case when dim=spacedim the previous formula reduces to
- Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of Transform a field of 3-differential forms from the reference cell to the physical cell. It is useful to think of The mapping kinds currently implemented by derived classes are:
-
+
-
+ Number of shape functions. If this is a Q1 mapping, then it is simply the number of vertices per cell. However, since also derived classes use this class (e.g. the Mapping_Q() class), the number of shape functions may also be different. In general, it is In general, it is Definition at line 382 of file mapping_q.h. This class implements the operation of the action of a Laplace matrix, namely This class implements the operation of the action of a Laplace matrix, namely Note that this class only supports the non-blocked vector variant of the Base operator because only a single FEEvaluation object is used in the apply function. Definition at line 870 of file operators.h. Return the quadrature rule for the region Return the quadrature rule for the region Definition at line 1774 of file quadrature_generator.cc. Return the quadrature rule for the region Return the quadrature rule for the region Definition at line 1782 of file quadrature_generator.cc. Return the quadrature rule for the region Return the quadrature rule for the region Definition at line 1791 of file quadrature_generator.cc. Return the quadrature rule for the region Return the quadrature rule for the region Definition at line 1668 of file quadrature_generator.cc. Return the quadrature rule for the region Return the quadrature rule for the region Definition at line 1677 of file quadrature_generator.cc. Return the quadrature rule for the region Return the quadrature rule for the region Definition at line 1686 of file quadrature_generator.cc. Returns the surface gradient of the shape function with index The surface gradient is defined as the projection of the gradient to the tangent plane of the surface: The surface gradient is defined as the projection of the gradient to the tangent plane of the surface: Definition at line 138 of file fe_immersed_values.cc. If the shape function is vector-valued, then this returns the only non- zero component. If the shape function has more than one non-zero component (i.e. it is not primitive), then throw an exception of type ExcShapeFunctionNotPrimitive. In that case, use the shape_value_component() function. Compute one vector component of the value of a shape function at a quadrature point. If the finite element is scalar, then only component zero is allowed and the return value equals that of the shape_value() function. If the finite element is vector valued but all shape functions are primitive (i.e. they are non-zero in only one component), then the value returned by shape_value() equals that of this function for exactly one component. This function is therefore only of greater interest if the shape function is not primitive, but then it is necessary since the other function cannot be used. The same holds for the arguments of this function as for the shape_value() function. Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument Return the values of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument If the current cell is not active (i.e., it has children), then the finite element function is, strictly speaking, defined by shape functions that live on these child cells. Rather than evaluating the shape functions on the child cells, with the quadrature points defined on the current cell, this function first interpolates the finite element function to shape functions defined on the current cell, and then evaluates this interpolated function. This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. To get values of multi-component elements, there is another get_function_values() below, returning a vector of vectors of results. This function does the same as the other get_function_values(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there. Definition at line 2749 of file fe_values.cc. Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument Return the gradients of a finite element function at the quadrature points of the current cell, face, or subface (selected the last time the reinit() function was called). That is, if the first argument This function may only be used if the finite element in use is a scalar one, i.e. has only one vector component. There is a corresponding function of the same name for vector-valued finite elements. This function does the same as the other get_function_gradients(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there. Definition at line 2932 of file fe_values.cc. This function does the same as the other get_function_hessians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there. Definition at line 3041 of file fe_values.cc. This function does the same as the other get_function_laplacians(), but applied to multi-component (vector-valued) elements. The meaning of the arguments is as explained there. This function does the same as the other get_function_third_derivatives(), but applied to multi-component (vector- valued) elements. The meaning of the arguments is as explained there. Definition at line 3268 of file fe_values.cc. Mapped quadrature weight. If this object refers to a volume evaluation (i.e. the derived class is of type FEValues), then this is the Jacobi determinant times the weight of the For surface evaluations (i.e. classes FEFaceValues or FESubfaceValues), it is the mapped surface element times the weight of the quadrature point. You can think of the quantity returned by this function as the volume or surface element You can think of the quantity returned by this function as the volume or surface element Detailed Description










@@ -638,21 +638,21 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -719,35 +719,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -816,21 +816,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -892,40 +892,40 @@






@@ -733,21 +733,21 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -814,35 +814,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -911,21 +911,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -987,40 +987,40 @@






@@ -805,21 +805,21 @@
mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes 

mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -886,35 +886,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -983,21 +983,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -1059,40 +1059,40 @@






mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes 

-




@@ -654,21 +654,21 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -735,35 +735,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -832,21 +832,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -908,40 +908,40 @@






mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes 

-




Detailed Description




Behavior along curved boundaries and with different manifolds
@@ -835,21 +835,21 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -916,35 +916,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -1013,21 +1013,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -1089,40 +1089,40 @@






@@ -770,21 +770,21 @@
mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes Detailed Description




@@ -676,37 +676,37 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -851,35 +851,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -948,21 +948,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -1024,40 +1024,40 @@






mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
Detailed Description
-class MappingQ1Eulerian< dim, VectorType, spacedim >

Usage
dim continuous FE_Q() objects.dim>1 where the Eulerian coordinates only give a background field) or for coupled problems where more variables are computed than just the flow field), then a different DoFHandler has to be set up on the given triangulation, and the shift vector has then to be associated to it.
@@ -925,21 +925,21 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -1006,35 +1006,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -1103,21 +1103,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -1179,40 +1179,40 @@






@@ -1198,21 +1198,21 @@
mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes
-
Point<spacedim> whose length is the same as the size of the polynomial space, 


Point<spacedim> whose length is the same as the size of the polynomial space, 


@@ -1104,37 +1104,37 @@
mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -1279,35 +1279,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -1376,21 +1376,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -1452,40 +1452,40 @@






@@ -953,21 +953,21 @@
mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes
-


mapping_contravariant: maps a vector field on the reference cell to the physical cell through the Jacobian: ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})\hat{\mathbf u}(\hat{\mathbf
x}).
-\]](form_1263.png)
mapping_covariant: maps a field of one-forms on the reference cell to a field of one-forms on the physical cell. (Theoretically this would refer to a DerivativeForm<1,dim,1> but we canonically identify this type with a Tensor<1,dim>). Mathematically, it is the pull back of the differential form ![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}\hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1264.png)
![\[
\mathbf u(\mathbf x) = J(\hat{\mathbf x})^{-T}\hat{\mathbf
u}(\hat{\mathbf x})
-\]](form_1265.png)


mapping_piola: A field of dim-1-forms on the reference cell is also represented by a vector field, but again transforms differently, namely by the Piola transform ![\[
\mathbf u(\mathbf x) = \frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf u}(\hat{\mathbf x}).
-\]](form_1266.png)



+



@@ -1034,35 +1034,35 @@
mapping_covariant: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T(\mathbf x) = \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1269.png)
![\[
\mathbf T(\mathbf x) = \hat{\mathbf u}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1270.png)
@@ -1131,21 +1131,21 @@
mapping_contravariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1272.png)
mapping_covariant_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
J(\hat{\mathbf x})^{-T} \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1274.png)
mapping_piola_gradient: it assumes 

![\[
\mathbf T(\mathbf x) =
\frac{1}{\text{det}\;J(\hat{\mathbf x})}
J(\hat{\mathbf x}) \hat{\mathbf T}(\hat{\mathbf x})
J(\hat{\mathbf x})^{-1}.
-\]](form_1276.png)
mapping_covariant_gradient: maps a field of forms on the reference cell to a field of forms on the physical cell. Mathematically, it is the pull back of the differential form ![\[
\mathbf T_{ijk}(\mathbf x) = \hat{\mathbf T}_{iJK}(\hat{\mathbf x})
-J_{jJ}^{\dagger} J_{kK}^{\dagger}\]](form_1277.png)
![\[ J^{\dagger} = J(\hat{\mathbf x})(J(\hat{\mathbf x})^{T}
J(\hat{\mathbf x}))^{-1}.
-\]](form_1278.png)
![\[J^{\dagger} = J^{-1}\]](form_1279.png)
![\[J^{\dagger} = J^{-1}\]](form_1301.png)
@@ -1207,40 +1207,40 @@






mapping_contravariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_{iI}(\hat{\mathbf x}) \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1285.png)
mapping_covariant_hessian: it assumes 

![\[
\mathbf T_{ijk}(\mathbf x) =
J_iI(\hat{\mathbf x})^{-1} \hat{\mathbf T}_{IJK}(\hat{\mathbf x})
J_{jJ}(\hat{\mathbf x})^{-1} J_{kK}(\hat{\mathbf x})^{-1}.
-\]](form_1287.png)
mapping_piola_hessian: it assumes




Detailed Description
-class MatrixFreeOperators::LaplaceOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >













+













+



function_no at the quadrature point with index quadrature_point.



update_gradients | update_normal_vectors flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
-
+ i Number of the shape function 
i Number of the shape function 
q_point Number of the quadrature point at which function is to be evaluated
-
@@ -772,7 +772,7 @@
+ i Number of the shape function 
i Number of the shape function 
q_point Number of the quadrature point at which function is to be evaluated. component vector component to be evaluated.
-
+ i Number of the shape function 
i Number of the shape function 
q_point Number of the quadrature point at which function is to be evaluated. fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


-
- [in] fe_function A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell.
+ [out] values The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns 

fe_function argument). This happens to be equal to the type of the elements of the solution vector.[out] values The values of the function specified by fe_function at the quadrature points of the current cell. The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the values of shape function times the type used to store the values of the unknowns 

fe_function argument). This happens to be equal to the type of the elements of the solution vector.
+values[q] will contain the value of the field described by fe_function at the 
values[q] will contain the value of the field described by fe_function at the 
@@ -1066,7 +1066,7 @@
update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
+values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

values[q] is a vector of values of the field described by fe_function at the 
values[q] equals the number of components of the finite element, i.e. values[q](c) returns the value of the 

update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


fe_function is a vector of nodal values of a finite element function 
values) is the vector of values 


-
- [in] fe_function A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell.
+ [out] gradients The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns 

fe_function argument).[out] gradients The gradients of the function specified by fe_function at the quadrature points of the current cell. The gradients are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the gradients of shape function times the type used to store the values of the unknowns 

fe_function argument).
+gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

gradients[q] will contain the gradient of the field described by fe_function at the 
gradients[q][d] represents the derivative in coordinate direction 

@@ -1308,7 +1308,7 @@
update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
+gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


gradients[q] is a vector of gradients of the field described by fe_function at the 
gradients[q] equals the number of components of the finite element, i.e. gradients[q][c] returns the gradient of the 

gradients[q][c][d] is the derivative in coordinate direction 


update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
-
- [in] fe_function A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell.
+ [out] hessians The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns 

fe_function argument).[out] hessians The Hessians of the function specified by fe_function at the quadrature points of the current cell. The Hessians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Hessians of shape function times the type used to store the values of the unknowns 

fe_function argument).
+hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

hessians[q] will contain the Hessian of the field described by fe_function at the 
hessians[q][i][j] represents the 

@@ -1494,7 +1494,7 @@
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
+hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


hessians[q] is a vector of Hessians of the field described by fe_function at the 
hessians[q] equals the number of components of the finite element, i.e. hessians[q][c] returns the Hessian of the 

hessians[q][c][i][j] is the 


update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
-
- [in] fe_function A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell.
+ [out] laplacians The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns 

fe_function argument). This happens to be equal to the type of the elements of the input vector.[out] laplacians The Laplacians of the function specified by fe_function at the quadrature points of the current cell. The Laplacians are computed in real space (as opposed to on the unit cell). The object is assume to already have the correct size. The data type stored by this output vector must be what you get when you multiply the Laplacians of shape function times the type used to store the values of the unknowns 

fe_function argument). This happens to be equal to the type of the elements of the input vector.laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q] will contain the Laplacian of the field described by fe_function at the 
laplacians[q]=trace(hessians[q]), where hessians would be the output of the get_function_hessians() function.laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q] is a vector of Laplacians of the field described by fe_function at the 
laplacians[q] equals the number of components of the finite element, i.e. laplacians[q][c] returns the Laplacian of the 

laplacians[q][c]=trace(hessians[q][c]), where hessians would be the output of the get_function_hessians() function.
@@ -1862,11 +1862,11 @@
update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
-
- [in] fe_function A vector of values that describes (globally) the finite element function that this function should evaluate at the quadrature points of the current cell.
+ [out] third_derivatives The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns 

fe_function argument).[out] third_derivatives The third derivatives of the function specified by fe_function at the quadrature points of the current cell. The third derivatives are computed in real space (as opposed to on the unit cell). The object is assumed to already have the correct size. The data type stored by this output vector must be what you get when you multiply the third derivatives of shape function times the type used to store the values of the unknowns 

fe_function argument).
+third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

third_derivatives[q] will contain the third derivatives of the field described by fe_function at the 
third_derivatives[q][i][j][k] represents the 

@@ -1912,7 +1912,7 @@
update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
+third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


third_derivatives[q] is a vector of third derivatives of the field described by fe_function at the 
third_derivatives[q] equals the number of components of the finite element, i.e. third_derivatives[q][c] returns the third derivative of the 

third_derivatives[q][c][i][j][k] is the 


update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. q_pointth unit quadrature point.

update_JxW_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information.
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
Return the Jacobian of the transformation at the specified quadrature point, i.e. 
update_jacobians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, i.e. 
update_jacobian_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
Return the second derivative of the transformation from unit to real cell, i.e. the first derivative of the Jacobian, at the specified quadrature point, pushed forward to the real cell coordinates, i.e. 
update_jacobian_pushed_forward_grads flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See The interplay of UpdateFlags, Mapping, and FiniteElement in FEValues for more information. This class is intended to facilitate assembling interface terms on faces in immersed (in the sense of cut) finite element methods. These types of terms occur mainly in cut discontinuous Galerkin methods. This class works analogously to NonMatching::FEValues. The domain is assumed to be described by a level set function, 

-NonMatching::FEValues. The domain is assumed to be described by a level set function,


+![\[
N = \{x \in F : \psi(x) < 0 \}, \\
P = \{x \in F : \psi(x) > 0 \},
-\]](form_2062.png)
which we as before refer to as the "inside" and "outside" regions of the face.
To reduce the amount of work, the reinit() function of this class uses the MeshClassifier passed to the constructor to check how the incoming cell relates to the level set function. The immersed quadrature rules are only generated if the cell is intersected. If the cell is completely inside or outside, it returns a cached FEInterfaceValues object created with a quadrature over the reference cell: ![$[0, 1]^{dim-1}$](form_2063.png)
To reduce the amount of work, the reinit() function of this class uses the MeshClassifier passed to the constructor to check how the incoming cell relates to the level set function. The immersed quadrature rules are only generated if the cell is intersected. If the cell is completely inside or outside, it returns a cached FEInterfaceValues object created with a quadrature over the reference cell: ![$[0, 1]^{dim-1}$](form_2030.png)
Definition at line 437 of file fe_values.h.
| mapping_collection | Collection of Mappings to be used. |
| fe_collection | Collection of FiniteElements to be used. |
| q_collection | Collection of Quadrature rules over ![]() |
| q_collection | Collection of Quadrature rules over ![]() |
| q_collection_1d | Collection of 1-dimensional quadrature rules used to generate the immersed quadrature rules. See the QuadratureGenerator class. |
| mesh_classifier | Object used to determine when the immersed quadrature rules need to be generated. |
| region_update_flags | Struct storing UpdateFlags for the inside/outside region of the cell. |
Return an FEInterfaceValues object reinitialized with a quadrature for the inside region of the cell: 
Return an FEInterfaceValues object reinitialized with a quadrature for the inside region of the cell: 
Definition at line 461 of file fe_values.cc.
@@ -496,7 +496,7 @@Return an FEInterfaceValues object reinitialized with a quadrature for the outside region of the cell: 
Return an FEInterfaceValues object reinitialized with a quadrature for the outside region of the cell: 
Definition at line 473 of file fe_values.cc.
@@ -527,7 +527,7 @@Do work common to the constructors. The incoming QCollection should be quadratures integrating over ![$[0, 1]^{dim-1}$](form_2063.png)
Do work common to the constructors. The incoming QCollection should be quadratures integrating over ![$[0, 1]^{dim-1}$](form_2030.png)
Definition at line 332 of file fe_values.cc.
@@ -790,7 +790,7 @@For each element in the FECollection passed to the constructor, this object contains an FEInterfaceValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim-1}$](form_2063.png)
For each element in the FECollection passed to the constructor, this object contains an FEInterfaceValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim-1}$](form_2030.png)
When LocationToLevelSet of the cell is INSIDE (and we do not need to generate an immersed quadrature), we return the FEInterfaceValues object in this container corresponding to the cell's active_fe_index.
This container is a std::deque, which is compatible with the FEInterfaceValues class that does not have a copy-constructor.
For each element in the FECollection passed to the constructor, this object contains an FEInterfaceValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim-1}$](form_2063.png)
For each element in the FECollection passed to the constructor, this object contains an FEInterfaceValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim-1}$](form_2030.png)
When LocationToLevelSet of the cell is OUTSIDE (and we do not need to generate an immersed quadrature), we return the FEValues object in this container corresponding to the cell's active_fe_index.
This container is a std::deque, which is compatible with the FEInterfaceValues class that does not have a copy-constructor.
FEInterfaceValues object created with a quadrature rule integrating over the inside region, 
FEInterfaceValues object created with a quadrature rule integrating over the inside region, 
Definition at line 668 of file fe_values.h.
@@ -875,7 +875,7 @@FEInterfaceValues object created with a quadrature rule integrating over the outside region, 
FEInterfaceValues object created with a quadrature rule integrating over the outside region, 
Definition at line 677 of file fe_values.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEValues.html differs (JavaScript source, ASCII text, with very long lines (2374)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEValues.html 2023-11-25 15:25:56.923283807 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FEValues.html 2023-11-25 15:25:56.923283807 +0100 @@ -157,17 +157,17 @@This class is intended to facilitate assembling in immersed (in the sense of cut) finite element methods when the domain is described by a level set function, 

-

+![\[
N = \{x \in K : \psi(x) < 0 \}, \\
P = \{x \in K : \psi(x) > 0 \}, \\
S = \{x \in K : \psi(x) = 0 \}.
-\]](form_2053.png)
Thus we need quadrature rules for these 3 regions:
As in the QuadratureGenerator class, we refer to 


As in the QuadratureGenerator class, we refer to 


Of course, it is somewhat expensive to generate the immersed quadrature rules and create FEValues objects with the generated quadratures. To reduce the amount of work, the reinit() function of this class uses the MeshClassifier passed to the constructor to check how the incoming cell relates to the level set function. It only generates the immersed quadrature rules if the cell is intersected. If the cell is completely inside or outside, it returns a cached FEValues object created with a quadrature over the reference cell: ![$[0, 1]^{dim}$](form_2057.png)
Of course, it is somewhat expensive to generate the immersed quadrature rules and create FEValues objects with the generated quadratures. To reduce the amount of work, the reinit() function of this class uses the MeshClassifier passed to the constructor to check how the incoming cell relates to the level set function. It only generates the immersed quadrature rules if the cell is intersected. If the cell is completely inside or outside, it returns a cached FEValues object created with a quadrature over the reference cell: ![$[0, 1]^{dim}$](form_2028.png)
Definition at line 144 of file fe_values.h.
| mapping_collection | Collection of Mappings to be used. |
| fe_collection | Collection of FiniteElements to be used. |
| q_collection | Collection of Quadrature rules over ![]() |
| q_collection | Collection of Quadrature rules over ![]() |
| q_collection_1d | Collection of 1-dimensional quadrature rules used to generate the immersed quadrature rules. See the QuadratureGenerator class. |
| mesh_classifier | Object used to determine when the immersed quadrature rules need to be generated. |
| region_update_flags | Struct storing UpdateFlags for the inside/outside/surface region of the cell. |
Return an FEValues object reinitialized with a quadrature for the inside region of the cell: 
Return an FEValues object reinitialized with a quadrature for the inside region of the cell: 
Definition at line 241 of file fe_values.cc.
@@ -427,7 +427,7 @@Return an FEValues object reinitialized with a quadrature for the outside region of the cell: 
Return an FEValues object reinitialized with a quadrature for the outside region of the cell: 
Definition at line 253 of file fe_values.cc.
@@ -447,7 +447,7 @@Return an FEValues object reinitialized with a quadrature for the surface region of the cell: 
Return an FEValues object reinitialized with a quadrature for the surface region of the cell: 
Definition at line 265 of file fe_values.cc.
@@ -478,7 +478,7 @@Do work common to the constructors. The incoming QCollection should be quadratures integrating over ![$[0, 1]^{dim}$](form_2057.png)
Do work common to the constructors. The incoming QCollection should be quadratures integrating over ![$[0, 1]^{dim}$](form_2028.png)
Definition at line 105 of file fe_values.cc.
@@ -695,7 +695,7 @@For each element in the FECollection passed to the constructor, this object contains an FEValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim}$](form_2057.png)
For each element in the FECollection passed to the constructor, this object contains an FEValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim}$](form_2028.png)
When LocationToLevelSet of the cell is INSIDE (and we do not need to generate an immersed quadrature), we return the FEValues object in this container corresponding to the cell's active_fe_index.
This container is a std::deque, which is compatible with the FEValues class that does not have a copy-constructor.
For each element in the FECollection passed to the constructor, this object contains an FEValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim}$](form_2057.png)
For each element in the FECollection passed to the constructor, this object contains an FEValues object created with a quadrature rule over the full reference cell: ![$[0, 1]^{dim}$](form_2028.png)
When LocationToLevelSet of the cell is OUTSIDE (and we do not need to generate an immersed quadrature), we return the FEValues object in this container corresponding to the cell's active_fe_index.
This container is a std::deque, which is compatible with the FEValues class that does not have a copy-constructor.
FEValues object created with a quadrature rule integrating over the inside region, 
FEValues object created with a quadrature rule integrating over the inside region, 
Definition at line 345 of file fe_values.h.
@@ -780,7 +780,7 @@FEValues object created with a quadrature rule integrating over the outside region, 
FEValues object created with a quadrature rule integrating over the outside region, 
Definition at line 354 of file fe_values.h.
@@ -807,7 +807,7 @@FEImmersedSurfaceValues object created with a quadrature rule integrating over the surface region, 
FEImmersedSurfaceValues object created with a quadrature rule integrating over the surface region, 
Definition at line 364 of file fe_values.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator.html differs (JavaScript source, ASCII text, with very long lines (1581)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator.html 2023-11-25 15:25:56.936616868 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator.html 2023-11-25 15:25:56.936616868 +0100 @@ -132,16 +132,16 @@This class creates immersed quadrature rules over a face, 

In the same way as in the QuadratureGenerator class, this class generates quadrature rules to integrate over 3 different regions of the face, 
-

In the same way as in the QuadratureGenerator class, this class generates quadrature rules to integrate over 3 different regions of the face, 
+![\[
N = \{x \in F : \psi(x) < 0 \}, \\
P = \{x \in F : \psi(x) > 0 \}, \\
S = \{x \in F : \psi(x) = 0 \},
-\]](form_2075.png)
which are again referred to as the "inside", 


Under the hood, this class uses the QuadratureGenerator class to build these rules. This is done by restricting the dim-dimensional level set function to the face, thus creating a (dim-1)-dimensional level set function, 




which are again referred to as the "inside", 


Under the hood, this class uses the QuadratureGenerator class to build these rules. This is done by restricting the dim-dimensional level set function to the face, thus creating a (dim-1)-dimensional level set function, 




Definition at line 292 of file quadrature_generator.h.
Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1774 of file quadrature_generator.cc.
@@ -268,7 +268,7 @@Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1782 of file quadrature_generator.cc.
@@ -287,8 +287,8 @@Return the quadrature rule for the region 


Return the quadrature rule for the region 


Definition at line 1791 of file quadrature_generator.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator_3_011_01_4.html differs (JavaScript source, ASCII text, with very long lines (715)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator_3_011_01_4.html 2023-11-25 15:25:56.946616665 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1FaceQuadratureGenerator_3_011_01_4.html 2023-11-25 15:25:56.946616665 +0100 @@ -232,7 +232,7 @@Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1853 of file quadrature_generator.cc.
@@ -254,7 +254,7 @@Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1860 of file quadrature_generator.cc.
@@ -274,7 +274,7 @@Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1868 of file quadrature_generator.cc.
@@ -321,7 +321,7 @@Quadrature for the region 
Quadrature for the region 
Definition at line 455 of file quadrature_generator.h.
@@ -346,7 +346,7 @@Quadrature for the region 
Quadrature for the region 
Definition at line 462 of file quadrature_generator.h.
@@ -371,7 +371,7 @@Quadrature for the region 
Quadrature for the region 
Definition at line 469 of file quadrature_generator.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1ImmersedSurfaceQuadrature.html differs (JavaScript source, ASCII text, with very long lines (1507)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1ImmersedSurfaceQuadrature.html 2023-11-25 15:25:56.966616258 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1ImmersedSurfaceQuadrature.html 2023-11-25 15:25:56.966616258 +0100 @@ -206,41 +206,41 @@This class defines a quadrature formula to integrate over the intersection between an oriented surface, 
The spacedim template parameter of this class is the dimension that the (spacedim-1)-dimensional surface is embedded in: 



Consider first the case dim = spacedim. We typically want to compute integrals in real space. A surface, 





-
The spacedim template parameter of this class is the dimension that the (spacedim-1)-dimensional surface is embedded in: 



Consider first the case dim = spacedim. We typically want to compute integrals in real space. A surface, 





+![\[
\int_{S\cap K} f dS =
\int_{S\cap K} f |d\bar{S}| =
\int_{\hat{S}\cap\hat{K}} f \circ F_{K} \det(J) |\left( J^{-1} \right
)^T d\hat{S}|,
-\]](form_2032.png)
where 




-




+![\[
\Delta \hat{S}_q \dealcoloneq w_q \hat{n}_q \approx d\hat{S}(\hat{x}_q),
-\]](form_2035.png)
for each quadrature point. The surface integral in real space would then be approximated as
-![\[
\int_{S\cap K} f dS \approx
\sum_{q} f \left(F_{K}(\hat{x}_{q}) \right) \det(J_q)
|\left( J_q^{-1} \right)^T \hat{n}_q| w_q.
-\]](form_2036.png)
When dim = spacedim - 1, this class represents a (spacedim-2)-dimensional integral. That is, if spacedim = 3 we have a line integral immersed in a face. Let 
![$t \in [0,T]$](form_2038.png)



-
![$t \in [0,T]$](form_2049.png)



+![\[
\int_{S\cap F} f dr
= \int_{0}^T f(\bar{r}(t)) \left \|\frac{d\bar{r}}{dt} \right \| dt
= \int_{0}^T f(F_K(\hat{r}(t))) \left \| J \frac{d\hat{r}}{dt} \right \| dt
\approx \sum_{q} f \left(F_{K}(\hat{x}_{q}) \right) \|J(\hat{x}_q)
\hat{t}_q \| w_q,
-\]](form_2042.png)
where 




where 




Definition at line 107 of file immersed_surface_quadrature.h.
This class creates immersed quadrature rules over a BoundingBox, 

This class creates immersed quadrature rules over a BoundingBox, 

This class creates quadrature rules for the intersections between the box and the three different regions defined by the level set function. That is, it creates quadrature rules to integrate over the following regions
-![\[
N = \{x \in B : \psi(x) < 0 \}, \\
P = \{x \in B : \psi(x) > 0 \}, \\
S = \{x \in B : \psi(x) = 0 \}.
-\]](form_2069.png)
When working with level set functions, the most common is to describe a domain, 
-
+![\[
\Omega = \{ x \in \mathbb{R}^{dim} : \psi(x) < 0 \}.
-\]](form_2070.png)
Given this, we shall use the name convention that 



The underlying algorithm use a 1-dimensional quadrature rule as base for creating the immersed quadrature rules. Gauss-Legendre quadrature (QGauss) is recommended. The constructor takes an hp::QCollection<1>. One can select which 1d-quadrature in the collection should be used through the set_1d_quadrature() function. The number of quadrature points in the constructed quadratures will vary depending on the level set function. More quadrature points will be created if the intersection is "bad", for example, if the zero-contour has a high curvature compared to the size of the box. However, if the number of points in the 1d quadrature is 




Given this, we shall use the name convention that 



The underlying algorithm use a 1-dimensional quadrature rule as base for creating the immersed quadrature rules. Gauss-Legendre quadrature (QGauss) is recommended. The constructor takes an hp::QCollection<1>. One can select which 1d-quadrature in the collection should be used through the set_1d_quadrature() function. The number of quadrature points in the constructed quadratures will vary depending on the level set function. More quadrature points will be created if the intersection is "bad", for example, if the zero-contour has a high curvature compared to the size of the box. However, if the number of points in the 1d quadrature is 




A detailed description of the underlying algorithm can be found in "High-Order %Quadrature Methods for Implicitly Defined Surfaces and Volumes in Hyperrectangles, R. I. Saye, SIAM J. Sci. Comput., 37(2), <a href="http://www.dx.doi.org/10.1137/140966290"> @@ -254,7 +254,7 @@
Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1668 of file quadrature_generator.cc.
@@ -273,7 +273,7 @@Return the quadrature rule for the region 

Return the quadrature rule for the region 

Definition at line 1677 of file quadrature_generator.cc.
@@ -292,8 +292,8 @@Return the quadrature rule for the region 


Return the quadrature rule for the region 


Definition at line 1686 of file quadrature_generator.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1DiscreteQuadratureGeneratorImplementation_1_1RefSpaceFEFieldFunction.html differs (JavaScript source, ASCII text, with very long lines (870)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1DiscreteQuadratureGeneratorImplementation_1_1RefSpaceFEFieldFunction.html 2023-11-25 15:25:56.999948914 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1DiscreteQuadratureGeneratorImplementation_1_1RefSpaceFEFieldFunction.html 2023-11-25 15:25:56.999948914 +0100 @@ -228,10 +228,10 @@This class evaluates a function defined by a solution vector and a DoFHandler transformed to reference space. To be precise, if we let 

where 


where 


Note that this class is similar to FEFieldFunction, but that FEFieldFunction implements the following function on a given cell, 

which has the same coefficients but uses real space basis functions. Here, 
which has the same coefficients but uses real space basis functions. Here, 
Before calling the value/gradient/hessian function, the set_active_cell function must be called to specify which cell the function should be evaluated on.
Definition at line 1312 of file quadrature_generator.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator.html differs (JavaScript source, ASCII text, with very long lines (1698)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator.html 2023-11-25 15:25:57.016615239 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator.html 2023-11-25 15:25:57.016615239 +0100 @@ -149,20 +149,20 @@This class implements the Saye-algorithm cited in the documentation of the QuadratureGenerator class.
-The generate function takes a number of 

If all 
If this is not the case, the algorithm uses recursion over the spatial dimension. The spacedim template parameter denotes the dimension we started with and dim denotes on what level we are in the recursion. That is, we first construct a QPartitioning<dim - 1> and then build the higher dimensional quadratures from these. What we in the end actually want is a spacedim-dimensional partitioning of quadratures, for a single level set function, 
The algorithm is based on the implicit function theorem. Starting with a single level set function, 


The generate function takes a number of 

If all 
If this is not the case, the algorithm uses recursion over the spatial dimension. The spacedim template parameter denotes the dimension we started with and dim denotes on what level we are in the recursion. That is, we first construct a QPartitioning<dim - 1> and then build the higher dimensional quadratures from these. What we in the end actually want is a spacedim-dimensional partitioning of quadratures, for a single level set function, 
The algorithm is based on the implicit function theorem. Starting with a single level set function, 


throughout the whole box. This means that the zero-contour of the level set function can be parameterized by an implicit function
-

so that
-
over a subset, 




If a height function direction can be found, we go down in dimension by creating two new level set functions, 


over a subset, 




If a height function direction can be found, we go down in dimension by creating two new level set functions, 

When we reach the base case, 
As we go up through the dimensions and create the higher dimensional quadratures, we need to know the function value of the height functions at the lower dimensional quadrature points. Since the functions are implicit, we need to do root-finding on the level set functions to find the function values. For this we use the class UpThroughDimensionCreator, see documentation there.
-When we have 







When we have 







As we try to find a height function direction, we estimate bounds on the gradient components by approximating each component as a 1st-order Taylor-polynomial. If a direction can not be found, the box is split and we recurse on each smaller box. This makes an implicit function more likely to exist since we seek it over a smaller portion of the zero contour. It also makes the estimated bounds tighter since we extrapolate the Taylor-polynomial a shorter distance.
Since we can not split a box forever, there is an maximum number of allowed splits on the additional data struct passed to the constructor. If this is reached, the algorithm uses the midpoint method as a last resort.
@@ -346,7 +346,7 @@Gets the 

Gets the 

Definition at line 1118 of file quadrature_generator.cc.
@@ -544,7 +544,7 @@Object responsible for creating the 
Object responsible for creating the 
Definition at line 1182 of file quadrature_generator.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator_3_011_00_01spacedim_01_4.html differs (JavaScript source, ASCII text, with very long lines (1964)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator_3_011_00_01spacedim_01_4.html 2023-11-25 15:25:57.029948303 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1QGenerator_3_011_00_01spacedim_01_4.html 2023-11-25 15:25:57.029948303 +0100 @@ -150,8 +150,8 @@The 1d-base case of the recursive algorithm QGenerator<dim, spacedim>.
-Let 

![$[x_0, x_1, ..., x_n]$](form_2130.png)



![$[L, R]$](form_2101.png)
![$[x_i, x_{i+1}]$](form_2133.png)
If spacedim = 1 the points ![$[x_1, x_{n-1}]$](form_2134.png)
Let 

![$[x_0, x_1, ..., x_n]$](form_2120.png)



![$[L, R]$](form_2092.png)
![$[x_i, x_{i+1}]$](form_2123.png)
If spacedim = 1 the points ![$[x_1, x_{n-1}]$](form_2124.png)
Definition at line 1208 of file quadrature_generator.h.
Class that stores quadrature rules to integrate over 4 different regions of a single BoundingBox, 


the box, 




the box, 


-![\[
N = \{x \in B : \psi_i(x) < 0, \forall i \}, \\
P = \{x \in B : \psi_i(x) > 0, \forall i \}, \\
I = B \setminus (\overline{N} \cup \overline{P}).
-\]](form_2097.png)
Thus, all 






Note that when there is a single level set function, 


Thus, all 






Note that when there is a single level set function, 


Definition at line 753 of file quadrature_generator.h.
Quadrature for the region 

Quadrature for the region 

Definition at line 767 of file quadrature_generator.h.
@@ -189,7 +189,7 @@Quadrature for the region 

Quadrature for the region 

Definition at line 773 of file quadrature_generator.h.
@@ -227,7 +227,7 @@Quadrature for the region 

Quadrature for the region 

Definition at line 785 of file quadrature_generator.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1RootFinder.html differs (JavaScript source, ASCII text, with very long lines (1344)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1RootFinder.html 2023-11-25 15:25:57.053281161 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1RootFinder.html 2023-11-25 15:25:57.053281161 +0100 @@ -120,7 +120,7 @@A class that attempts to find multiple distinct roots of a function, 
![$[l, r]$](form_2089.png)
![$[a, b]$](form_2090.png)
![$[l, (r + l) / 2]$](form_2091.png)
![$[(r + l) / 2, r]$](form_2092.png)
A class that attempts to find multiple distinct roots of a function, 
![$[l, r]$](form_2080.png)
![$[a, b]$](form_2081.png)
![$[l, (r + l) / 2]$](form_2082.png)
![$[(r + l) / 2, r]$](form_2083.png)
The bounds on the functions values are estimated using the function taylor_estimate_function_bounds, which approximates the function as a second order Taylor-polynomial around the interval midpoint. When we have a sign change on an interval, this class uses boost::math::tools::toms748_solve for finding roots .
Definition at line 608 of file quadrature_generator.h.
@@ -175,7 +175,7 @@For each of the incoming functions, attempt to find the roots over the interval defined by interval and add these to roots. The returned roots will be sorted in ascending order: 
For each of the incoming functions, attempt to find the roots over the interval defined by interval and add these to roots. The returned roots will be sorted in ascending order: 
Definition at line 532 of file quadrature_generator.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1UpThroughDimensionCreator.html differs (JavaScript source, ASCII text, with very long lines (1787)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1UpThroughDimensionCreator.html 2023-11-25 15:25:57.066614221 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonMatching_1_1internal_1_1QuadratureGeneratorImplementation_1_1UpThroughDimensionCreator.html 2023-11-25 15:25:57.066614221 +0100 @@ -129,13 +129,13 @@This class is responsible for creating quadrature points for the 

To be precise, let ![$[L, R]$](form_2101.png)

![$I \times [L, R] \subset \mathbb{R}^{dim}$](form_2103.png)

For each lower dimensional quadrature point, 


![$[L, R]$](form_2101.png)
![$[y_0, y_1, ..., y_n]$](form_2108.png)



![$[L, R]$](form_2101.png)
In each interval, ![$[y_i, y_{i+1}]$](form_2112.png)






When 

![$y_1 \in [L, R]$](form_2117.png)


where 
This class is responsible for creating quadrature points for the 

To be precise, let ![$[L, R]$](form_2092.png)

![$I \times [L, R] \subset \mathbb{R}^{dim}$](form_2094.png)

For each lower dimensional quadrature point, 


![$[L, R]$](form_2092.png)
![$[y_0, y_1, ..., y_n]$](form_2099.png)



![$[L, R]$](form_2092.png)
In each interval, ![$[y_i, y_{i+1}]$](form_2103.png)






When 

![$y_1 \in [L, R]$](form_2108.png)


where 
Definition at line 828 of file quadrature_generator.h.
Create 

q_partitioning.
Create 

q_partitioning.
Definition at line 725 of file quadrature_generator.cc.
@@ -294,7 +294,7 @@Create a surface quadrature point from the lower-dimensional point and add it to surface_quadrature.
-This function is only called when 
![$[L, R]$](form_2101.png)
This function is only called when 
![$[L, R]$](form_2092.png)
Definition at line 781 of file quadrature_generator.cc.
@@ -403,7 +403,7 @@1d-functions, that are restrictions of each dim-dimensional level set function passed to generate() to some 
1d-functions, that are restrictions of each dim-dimensional level set function passed to generate() to some 
Definition at line 898 of file quadrature_generator.h.
@@ -457,7 +457,7 @@The roots of the functions in point_restrictions. This will be the values of the height functions, 

The roots of the functions in point_restrictions. This will be the values of the height functions, 

Definition at line 911 of file quadrature_generator.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector.html differs (JavaScript source, ASCII text, with very long lines (607)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector.html 2023-11-25 15:25:57.083280550 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classNonlinearSolverSelector.html 2023-11-25 15:25:57.083280550 +0100 @@ -538,11 +538,11 @@A function object that users may supply and that is intended to prepare the linear solver for subsequent calls to solve_jacobian_system().
The job of setup_jacobian() is to prepare the linear solver for subsequent calls to solve_with_jacobian(), in the solution of linear systems 
In the cases strategy = SolutionStrategy::newton or SolutionStrategy::linesearch, 



In the cases strategy = SolutionStrategy::newton or SolutionStrategy::linesearch, 



| current_u | Current value of ![]() |
| current_u | Current value of ![]() |
Relative 
Relative 
Definition at line 186 of file nonlinear.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1ArclengthProjectionLineManifold.html differs (JavaScript source, ASCII text, with very long lines (949)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1ArclengthProjectionLineManifold.html 2023-11-25 15:25:57.116613206 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1ArclengthProjectionLineManifold.html 2023-11-25 15:25:57.116613206 +0100 @@ -605,7 +605,7 @@Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -644,24 +644,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -670,11 +670,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Return a vector that, at 


Return a vector that, at 




Reimplemented from Manifold< dim, spacedim >.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NURBSPatchManifold.html differs (JavaScript source, ASCII text, with very long lines (897)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NURBSPatchManifold.html 2023-11-25 15:25:57.159945657 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NURBSPatchManifold.html 2023-11-25 15:25:57.156612392 +0100 @@ -452,7 +452,7 @@Given a point in the spacedim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the spacedim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function.
Refer to the general documentation of this class for more information.
@@ -666,7 +666,7 @@Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -705,24 +705,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -731,11 +731,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Return a vector that, at 


Return a vector that, at 




Reimplemented from Manifold< dim, spacedim >.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalToMeshProjectionManifold.html differs (JavaScript source, ASCII text, with very long lines (899)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalToMeshProjectionManifold.html 2023-11-25 15:25:57.203278106 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classOpenCASCADE_1_1NormalToMeshProjectionManifold.html 2023-11-25 15:25:57.203278106 +0100 @@ -534,7 +534,7 @@Return a vector that, at 


Return a vector that, at 




Reimplemented from Manifold< dim, spacedim >.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPArpackSolver.html differs (JavaScript source, ASCII text, with very long lines (1026)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPArpackSolver.html 2023-11-25 15:25:57.223277702 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPArpackSolver.html 2023-11-25 15:25:57.223277702 +0100 @@ -272,7 +272,7 @@Interface for using PARPACK. PARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems. Here we interface to the routines pdneupd, pdseupd, pdnaupd, pdsaupd of PARPACK. The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse matrices A.
In this class we make use of the method applied to the generalized eigenspectrum problem 




In this class we make use of the method applied to the generalized eigenspectrum problem 




The ArpackSolver can be used in application codes in the following way:
for the generalized eigenvalue problem 
size_of_spectrum tells PARPACK the number of eigenvector/eigenvalue pairs to solve for. Here, lambda is a vector that will contain the eigenvalues computed, x a vector of objects of type V that will contain the eigenvectors computed.
for the generalized eigenvalue problem 
size_of_spectrum tells PARPACK the number of eigenvector/eigenvalue pairs to solve for. Here, lambda is a vector that will contain the eigenvalues computed, x a vector of objects of type V that will contain the eigenvectors computed.
Currently, only three modes of (P)Arpack are implemented. In mode 3 (default), OP is an inverse operation for the matrix A - sigma * B, where sigma is a shift value, set to zero by default. Whereas in mode 2, OP is an inverse of M. Finally, mode 1 corresponds to standard eigenvalue problem without spectral transformation 
The OP can be specified by using a LinearOperator:
Solve the generalized eigensprectrum problem 
pd(n/s)eupd and pd(n/s)aupd functions of PARPACK.
Solve the generalized eigensprectrum problem 
pd(n/s)eupd and pd(n/s)aupd functions of PARPACK.
In mode=3, inverse should correspond to ![$[A-\sigma B]^{-1}$](form_1723.png)
mode=2 it should represent 
mode=1 both B and inverse are ignored.
Definition at line 770 of file parpack_solver.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1CommunicationPattern.html differs (JavaScript source, ASCII text, with very long lines (696)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1CommunicationPattern.html 2023-11-25 15:25:57.236610763 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1CommunicationPattern.html 2023-11-25 15:25:57.236610763 +0100 @@ -318,7 +318,7 @@Reinitialization that takes the number of locally-owned degrees of freedom local_size and an index set for the required ghost indices ghost_indices.
The local index range is translated to global indices in an ascending and one-to-one fashion, i.e., the indices of process 


The local index range is translated to global indices in an ascending and one-to-one fashion, i.e., the indices of process 


The export_to_ghost_array will populate an array containing values from locally-owned AND ghost indices, as for the relevant set of dofs of a usual FEM simulation.
Definition at line 46 of file petsc_communication_pattern.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1FullMatrix.html differs (JavaScript source, ASCII text, with very long lines (829)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1FullMatrix.html 2023-11-25 15:25:57.259943620 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1FullMatrix.html 2023-11-25 15:25:57.259943620 +0100 @@ -1682,8 +1682,8 @@Return the l1-norm of the matrix, that is 

Return the l1-norm of the matrix, that is 

Definition at line 417 of file petsc_matrix_base.cc.
@@ -1711,8 +1711,8 @@Return the linfty-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Definition at line 430 of file petsc_matrix_base.cc.
@@ -1768,7 +1768,7 @@Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then the given vector has to be a distributed vector as well. Conversely, if the matrix is not distributed, then neither may the vector be.
@@ -1808,7 +1808,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then both vectors have to be distributed vectors as well. Conversely, if the matrix is not distributed, then neither of the vectors may be.
@@ -2315,7 +2315,7 @@Test whether a matrix is symmetric. Default tolerance is 
Test whether a matrix is symmetric. Default tolerance is 
Definition at line 694 of file petsc_matrix_base.cc.
@@ -2344,7 +2344,7 @@Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Definition at line 704 of file petsc_matrix_base.cc.
@@ -2593,9 +2593,9 @@Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 638 of file petsc_matrix_base.cc.
@@ -2637,9 +2637,9 @@Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 646 of file petsc_matrix_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockSparseMatrix.html differs (JavaScript source, ASCII text, with very long lines (854)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockSparseMatrix.html 2023-11-25 15:25:57.289943009 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1BlockSparseMatrix.html 2023-11-25 15:25:57.289943009 +0100 @@ -906,7 +906,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 410 of file petsc_block_sparse_matrix.h.
@@ -1054,7 +1054,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 441 of file petsc_block_sparse_matrix.h.
@@ -2295,7 +2295,7 @@Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Compute the matrix scalar product 
Compute the matrix scalar product 
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Return the square of the 
Return the square of the 
Return the 
Return the 
Return the 
Return the 
Return the maximum absolute value of the elements of this vector, which is the 
Return the maximum absolute value of the elements of this vector, which is the 
Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Definition at line 815 of file petsc_parallel_sparse_matrix.cc.
@@ -961,7 +961,7 @@MPI::Vector()href_anchor"memdoc">
-Perform the matrix-matrix multiplication 


Perform the matrix-matrix multiplication 


This function calls MatrixBase::mmult() to do the actual work.
Definition at line 876 of file petsc_parallel_sparse_matrix.cc.
@@ -988,7 +988,7 @@MPI::Vector()href_anchor"memdoc">
-Perform the matrix-matrix multiplication with the transpose of this, i.e., 


Perform the matrix-matrix multiplication with the transpose of this, i.e., 


This function calls MatrixBase::Tmmult() to do the actual work.
Definition at line 887 of file petsc_parallel_sparse_matrix.cc.
@@ -2305,8 +2305,8 @@Return the l1-norm of the matrix, that is 

Return the l1-norm of the matrix, that is 

Definition at line 417 of file petsc_matrix_base.cc.
@@ -2334,8 +2334,8 @@Return the linfty-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Definition at line 430 of file petsc_matrix_base.cc.
@@ -2391,7 +2391,7 @@Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then the given vector has to be a distributed vector as well. Conversely, if the matrix is not distributed, then neither may the vector be.
@@ -2431,7 +2431,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then both vectors have to be distributed vectors as well. Conversely, if the matrix is not distributed, then neither of the vectors may be.
@@ -2938,7 +2938,7 @@Test whether a matrix is symmetric. Default tolerance is 
Test whether a matrix is symmetric. Default tolerance is 
Definition at line 694 of file petsc_matrix_base.cc.
@@ -2967,7 +2967,7 @@Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Definition at line 704 of file petsc_matrix_base.cc.
@@ -3216,9 +3216,9 @@Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 638 of file petsc_matrix_base.cc.
@@ -3260,9 +3260,9 @@Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 646 of file petsc_matrix_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1Vector.html differs (JavaScript source, ASCII text, with very long lines (1766)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1Vector.html 2023-11-25 15:25:57.376607912 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MPI_1_1Vector.html 2023-11-25 15:25:57.376607912 +0100 @@ -2103,7 +2103,7 @@Return the square of the 
Return the square of the 
Definition at line 612 of file petsc_vector_base.cc.
@@ -2159,7 +2159,7 @@

Definition at line 672 of file petsc_vector_base.cc.
@@ -2188,7 +2188,7 @@

Definition at line 685 of file petsc_vector_base.cc.
@@ -2217,7 +2217,7 @@

Definition at line 698 of file petsc_vector_base.cc.
@@ -2245,7 +2245,7 @@

Definition at line 740 of file petsc_vector_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixBase.html differs (JavaScript source, ASCII text, with very long lines (844)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixBase.html 2023-11-25 15:25:57.399940773 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixBase.html 2023-11-25 15:25:57.399940773 +0100 @@ -1431,8 +1431,8 @@Return the l1-norm of the matrix, that is 

Return the l1-norm of the matrix, that is 

Definition at line 417 of file petsc_matrix_base.cc.
@@ -1452,8 +1452,8 @@Return the linfty-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Definition at line 430 of file petsc_matrix_base.cc.
@@ -1493,7 +1493,7 @@Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then the given vector has to be a distributed vector as well. Conversely, if the matrix is not distributed, then neither may the vector be.
@@ -1525,7 +1525,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then both vectors have to be distributed vectors as well. Conversely, if the matrix is not distributed, then neither of the vectors may be.
@@ -1933,7 +1933,7 @@Test whether a matrix is symmetric. Default tolerance is 
Test whether a matrix is symmetric. Default tolerance is 
Definition at line 694 of file petsc_matrix_base.cc.
@@ -1954,7 +1954,7 @@Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Definition at line 704 of file petsc_matrix_base.cc.
@@ -2179,9 +2179,9 @@Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 638 of file petsc_matrix_base.cc.
@@ -2223,9 +2223,9 @@Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 646 of file petsc_matrix_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixFree.html differs (JavaScript source, ASCII text, with very long lines (986)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixFree.html 2023-11-25 15:25:57.429940162 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1MatrixFree.html 2023-11-25 15:25:57.429940162 +0100 @@ -2235,8 +2235,8 @@Return the l1-norm of the matrix, that is 

Return the l1-norm of the matrix, that is 

Definition at line 417 of file petsc_matrix_base.cc.
@@ -2264,8 +2264,8 @@Return the linfty-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Definition at line 430 of file petsc_matrix_base.cc.
@@ -2321,7 +2321,7 @@Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then the given vector has to be a distributed vector as well. Conversely, if the matrix is not distributed, then neither may the vector be.
@@ -2361,7 +2361,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then both vectors have to be distributed vectors as well. Conversely, if the matrix is not distributed, then neither of the vectors may be.
@@ -2712,7 +2712,7 @@Test whether a matrix is symmetric. Default tolerance is 
Test whether a matrix is symmetric. Default tolerance is 
Definition at line 694 of file petsc_matrix_base.cc.
@@ -2741,7 +2741,7 @@Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Definition at line 704 of file petsc_matrix_base.cc.
@@ -2990,9 +2990,9 @@Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 638 of file petsc_matrix_base.cc.
@@ -3034,9 +3034,9 @@Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 646 of file petsc_matrix_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1NonlinearSolver.html differs (JavaScript source, ASCII text, with very long lines (553)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1NonlinearSolver.html 2023-11-25 15:25:57.446606490 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1NonlinearSolver.html 2023-11-25 15:25:57.446606490 +0100 @@ -162,7 +162,7 @@Interface to PETSc SNES solver for nonlinear equations. The SNES solver is described in the PETSc manual.
-This class solves the nonlinear system of algebraic equations 
This class solves the nonlinear system of algebraic equations 
The interface to PETSc is realized by means of std::function callbacks like in the TrilinosWrappers::NOXSolver and SUNDIALS::KINSOL classes.
NonlinearSolver supports any vector and matrix type having constructors and methods:
In particular, the supported types are the ones that can wrap PETSc's native vector and matrix classes, that are able to modify them in place, and that can return PETSc native types when requested.
-To use the solvers the user needs to provide the implementation of 
To use the solvers the user needs to provide the implementation of 
The default linearization procedure of a solver instantiated with this class consists in using Jacobian-Free-Newton-Krylov; the action of tangent matrices inside a linear solver process are approximated via matrix-free finite-differencing of the nonlinear residual equations. For details, consult the PETSc manual.
In alternative, users can also provide the implementation of the Jacobian. This can be accomplished in two ways:
Solve the nonlinear system of equations 
Solve the nonlinear system of equations 
This function returns the number of iterations. The vector x must contain the initial guess. Upon returning, the x vector contains the solution.
Solve the nonlinear system of equations 
Solve the nonlinear system of equations 
This function returns the number of iterations. The vector x must contain the initial guess. Upon returning, the x vector contains the solution.
Here we also set the matrix to precondition the tangent system.
@@ -511,7 +511,7 @@Solve the nonlinear system of equations 
Solve the nonlinear system of equations 
This function returns the number of iterations. The vector x must contain the initial guess. Upon returning, the x vector contains the solution.
Here we also set the matrices to describe and precondition the tangent system.
@@ -531,7 +531,7 @@Callback for the computation of the nonlinear residual 
Callback for the computation of the nonlinear residual 
Definition at line 374 of file petsc_snes.h.
@@ -551,7 +551,7 @@Callback for the computation of the Jacobian 
Callback for the computation of the Jacobian 
Definition at line 386 of file petsc_snes.h.
@@ -593,7 +593,7 @@Callback to set up the Jacobian system.
-This callback gives full control to users to set up the tangent operator 
This callback gives full control to users to set up the tangent operator 
Solvers must be provided via NonlinearSolver::solve_with_jacobian.
Callback for the computation of the energy function.
-This is usually not needed, since by default SNES assumes that the objective function to be minimized is 
This is usually not needed, since by default SNES assumes that the objective function to be minimized is 
However, if the nonlinear equations are derived from energy arguments, it may be useful to use this callback to perform linesearch or to test for the reduction in a trust region step.
The value of the energy function must be returned in energy_value.
MPI::Vector()href_anchor"memdoc">
-Perform the matrix-matrix multiplication 


Perform the matrix-matrix multiplication 


This function calls MatrixBase::mmult() to do the actual work.
Definition at line 258 of file petsc_sparse_matrix.cc.
@@ -917,7 +917,7 @@MPI::Vector()href_anchor"memdoc">
-Perform the matrix-matrix multiplication with the transpose of this, i.e., 


Perform the matrix-matrix multiplication with the transpose of this, i.e., 


This function calls MatrixBase::Tmmult() to do the actual work.
Definition at line 269 of file petsc_sparse_matrix.cc.
@@ -2199,8 +2199,8 @@Return the l1-norm of the matrix, that is 

Return the l1-norm of the matrix, that is 

Definition at line 417 of file petsc_matrix_base.cc.
@@ -2228,8 +2228,8 @@Return the linfty-norm of the matrix, that is 

Return the linfty-norm of the matrix, that is 

Definition at line 430 of file petsc_matrix_base.cc.
@@ -2285,7 +2285,7 @@Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then the given vector has to be a distributed vector as well. Conversely, if the matrix is not distributed, then neither may the vector be.
@@ -2325,7 +2325,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the MatrixBase class used in deal.II (i.e. the original one, not the PETSc wrapper class) since PETSc doesn't support this operation and needs a temporary vector.
Note that if the current object represents a parallel distributed matrix (of type PETScWrappers::MPI::SparseMatrix), then both vectors have to be distributed vectors as well. Conversely, if the matrix is not distributed, then neither of the vectors may be.
@@ -2832,7 +2832,7 @@Test whether a matrix is symmetric. Default tolerance is 
Test whether a matrix is symmetric. Default tolerance is 
Definition at line 694 of file petsc_matrix_base.cc.
@@ -2861,7 +2861,7 @@Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Test whether a matrix is Hermitian, i.e. it is the complex conjugate of its transpose. Default tolerance is 
Definition at line 704 of file petsc_matrix_base.cc.
@@ -3110,9 +3110,9 @@Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication 



This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 638 of file petsc_matrix_base.cc.
@@ -3154,9 +3154,9 @@Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Base function to perform the matrix-matrix multiplication with the transpose of this, i.e., 




This function assumes that the calling matrix 


The content as well as the sparsity pattern of the matrix 
Definition at line 646 of file petsc_matrix_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1TimeStepper.html differs (JavaScript source, ASCII text, with very long lines (793)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1TimeStepper.html 2023-11-25 15:25:57.493272205 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPETScWrappers_1_1TimeStepper.html 2023-11-25 15:25:57.489938941 +0100 @@ -176,20 +176,20 @@ requires ( (concepts::is_dealii_petsc_vector_type<VectorType> || std::constructible_from< VectorType, Vec>)&&(concepts::is_dealii_petsc_matrix_type<PMatrixType> || std::constructible_from< PMatrixType, Mat>)&&(concepts::is_dealii_petsc_matrix_type<AMatrixType> || std::constructible_from<AMatrixType, Mat>))Interface to the PETSc TS solver for Ordinary Differential Equations and Differential-Algebraic Equations. The TS solver is described in the PETSc manual.
This class supports two kinds of formulations. The explicit formulation:
-![\[
\begin{cases}
\dot y = G(t,y)\, , \\
y(t_0) = y_0\, , \\
\end{cases}
-\]](form_1735.png)
and the implicit formulation:
-![\[
\begin{cases}
F(t,y,\dot y) = 0\, , \\
y(t_0) = y_0\, . \\
\end{cases}
-\]](form_1736.png)
The interface to PETSc is realized by means of std::function callbacks like in the SUNDIALS::IDA and SUNDIALS::ARKode classes.
TimeStepper supports any vector and matrix type having constructors and methods:
@@ -207,7 +207,7 @@In particular, the supported types are the ones that can wrap PETSc's native vector and matrix classes, that are able to modify them in place, and that can return PETSc native types when requested.
-To use explicit solvers (like for example explicit Runge-Kutta methods), the user only needs to provide the implementation of 

To use explicit solvers (like for example explicit Runge-Kutta methods), the user only needs to provide the implementation of 

The default linearization procedure of an implicit solver instantiated with this class consists in using Jacobian-Free-Newton-Krylov; the action of tangent matrices inside a linear solver process are approximated via matrix-free finite-differencing of the nonlinear residual equations that are ODE-solver specific. For details, consult the PETSc manual.
In alternative, users can also provide the implementations of the Jacobians. This can be accomplished in two ways:
Callback for the computation of the implicit residual 
Callback for the computation of the implicit residual 
Definition at line 453 of file petsc_ts.h.
@@ -618,9 +618,9 @@Callback for the computation of the implicit Jacobian 
All implicit solvers implementations are recast to use the above linearization. The 
Callback for the computation of the implicit Jacobian 
All implicit solvers implementations are recast to use the above linearization. The 
Definition at line 475 of file petsc_ts.h.
@@ -640,7 +640,7 @@Callback for the computation of the explicit residual 
Callback for the computation of the explicit residual 
Definition at line 486 of file petsc_ts.h.
@@ -660,8 +660,8 @@Callback for the computation of the explicit Jacobian 
Callback for the computation of the explicit Jacobian 
Definition at line 501 of file petsc_ts.h.
@@ -703,9 +703,9 @@Callback for the set up of the Jacobian system.
-This callback gives full control to users to set up the linearized equations 
All implicit solvers implementations are recast to use the above linearization. The 
This callback gives full control to users to set up the linearized equations 
All implicit solvers implementations are recast to use the above linearization. The 
Solvers must be provided via TimeStepper::solve_with_jacobian.
Return the square of the 
Return the square of the 
Definition at line 612 of file petsc_vector_base.cc.
@@ -1236,7 +1236,7 @@

Definition at line 672 of file petsc_vector_base.cc.
@@ -1257,7 +1257,7 @@

Definition at line 685 of file petsc_vector_base.cc.
@@ -1278,7 +1278,7 @@

Definition at line 698 of file petsc_vector_base.cc.
@@ -1298,7 +1298,7 @@

Definition at line 740 of file petsc_vector_base.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPackagedOperation.html differs (JavaScript source, ASCII text, with very long lines (625)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPackagedOperation.html 2023-11-25 15:25:57.529938125 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPackagedOperation.html 2023-11-25 15:25:57.529938125 +0100 @@ -187,7 +187,7 @@ or the computation of a residual 
or the computation of a residual 
Insert a particle into the collection of particles. Return an iterator to the new position of the particle. This function involves a copy of the particle and its properties. Note that this function is of 


Definition at line 579 of file particle_handler.cc.
@@ -2764,7 +2764,7 @@List from the active cells on the present MPI process to positions in either owned_particles or ghost_particles for fast 
List from the active cells on the present MPI process to positions in either owned_particles or ghost_particles for fast 
Definition at line 945 of file particle_handler.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1PropertyPool.html differs (JavaScript source, ASCII text, with very long lines (683)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1PropertyPool.html 2023-11-25 15:25:57.579937108 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classParticles_1_1PropertyPool.html 2023-11-25 15:25:57.579937108 +0100 @@ -646,7 +646,7 @@This function makes sure that all internally stored memory blocks are sorted in the same order as one would loop over the handles_to_sort container. This makes sure memory access is contiguous with actual memory location. Because the ordering is given in the input argument the complexity of this function is 

This function makes sure that all internally stored memory blocks are sorted in the same order as one would loop over the handles_to_sort container. This makes sure memory access is contiguous with actual memory location. Because the ordering is given in the input argument the complexity of this function is 

Definition at line 195 of file property_pool.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPersistentTriangulation.html differs (JavaScript source, ASCII text, with very long lines (748)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPersistentTriangulation.html 2023-11-25 15:25:57.633269358 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPersistentTriangulation.html 2023-11-25 15:25:57.633269358 +0100 @@ -1820,7 +1820,7 @@Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. Return the fourth-order referential deviatoric tensor, as constructed from the deformation gradient tensor F. Also known as the deviatoric operator, this tensor projects a second-order symmetric tensor onto a deviatoric space (for which the hydrostatic component is removed).
This referential isochoric projection tensor is defined as
-![\[
\hat{\mathcal{P}}
\dealcoloneq \frac{\partial \bar{\mathbf{C}}}{\partial \mathbf{C}}
-\]](form_2449.png)
with
-![\[
\bar{\mathbf{C}} \dealcoloneq J^{-2/\textrm{dim}} \mathbf{C}
\qquad \text{,} \qquad
\mathbf{C} = \mathbf{F}^{T}\cdot\mathbf{F}
\qquad \text{and} \qquad
J = \textrm{det}\mathbf{F}
-\]](form_2450.png)
such that, for any second-order (referential) symmetric tensor, the following holds:
-![\[
\{ \bullet \} : \hat{\mathcal{P}}
\dealcoloneq J^{-2/\textrm{dim}} \left[ \{ \bullet \} -
\frac{1}{\textrm{dim}}\left[\mathbf{C} : \{ \bullet \}\right]
\mathbf{C}^{-1} \right] = \mathtt{Dev\_P} \left( \{ \bullet \} \right)
\, .
-\]](form_2451.png)
It can therefore be readily shown that
-![\[
\mathtt{Dev\_P} \left( \{ \bullet \} \right) : \mathbf{C} = 0 \, .
-\]](form_2452.png)
-![\[
\mathbf{S}
= 2\frac{\partial \psi \left( \bar{\mathbf{C}} \right)}{\partial
\mathbf{C}} = 2\frac{\partial \psi \left( \bar{\mathbf{C}}
\right)}{\partial \bar{\mathbf{C}}} : \frac{\partial
\bar{\mathbf{C}}}{\partial \mathbf{C}} = \bar{\mathbf{S}} :
\hat{\mathcal{P}} \equiv \hat{\mathcal{P}}^{T} : \bar{\mathbf{S}} \, .
-\]](form_2453.png)


Return the transpose of the fourth-order referential deviatoric tensor, as constructed from the deformation gradient tensor F. The result performs the following operation:
-![\[
\hat{\mathcal{P}}^{T} : \{ \bullet \}
= J^{-2/\textrm{dim}} \left[ \{ \bullet \} - \frac{1}{\textrm{dim}}
\left[\mathbf{C}^{-1} : \{ \bullet \}\right] \mathbf{C} \right] =
\mathtt{Dev\_P\_T} \{ \bullet \}
-\]](form_2456.png)
Return the derivative of the volumetric Jacobian 
F. The computed result is
-
F. The computed result is
+![\[
\frac{\partial J}{\partial \mathbf{C}}
= \frac{1}{2} J \mathbf{C}^{-1}
-\]](form_2460.png)
with
-![\[
\mathbf{C} = \mathbf{F}^{T}\cdot\mathbf{F} \, .
-\]](form_2461.png)
The second-order referential/spatial symmetric identity (metric) tensor 
This is defined such that, for any rank-2 tensor or symmetric tensor, the following holds:
-![\[
\mathbf{I} \cdot \{ \bullet \} = \{ \bullet \} \cdot \mathbf{I} =
\{ \bullet \}
\qquad \text{and} \qquad
\mathbf{I} : \{ \bullet \} = \textrm{trace} \{ \bullet \} \, .
-\]](form_2435.png)
This definition aligns with the rank-2 symmetric tensor returned by unit_symmetric_tensor(). If one is to interpret the tensor as a matrix, then this simply corresponds to the identity matrix.
@@ -383,20 +383,20 @@The fourth-order referential/spatial unit symmetric tensor 
This is defined such that for a general rank-2 tensor 
-
+![\[
\mathcal{S} : \{ \hat{\bullet} \}
\dealcoloneq \dfrac{1}{2}
\left[ \{ \hat{\bullet} \} + \{ \hat{\bullet} \}^T \right] \, .
-\]](form_2438.png)
As a corollary to this, for any second-order symmetric tensor 
-
+![\[
\mathcal{S} : \{ \bullet \}
= \{ \bullet \} : \mathcal{S} = \{ \bullet \} \, .
-\]](form_2440.png)
This definition aligns with the fourth-order symmetric tensor 
The fourth-order referential/spatial tensor 
The fourth-order referential/spatial tensor 
This is defined such that, for any rank-2 tensor, the following holds:
-![\[
[\mathbf{I} \otimes \mathbf{I}] : \{ \bullet \} =
\textrm{trace}\{ \bullet \} \mathbf{I} \, .
-\]](form_2442.png)
Definition at line 119 of file standard_tensors.h.
@@ -465,28 +465,28 @@The fourth-order spatial deviatoric tensor. Also known as the deviatoric operator, this tensor projects a second-order symmetric tensor onto a deviatoric space (for which the hydrostatic component is removed).
This is defined as
-![\[
\mathcal{P}
\dealcoloneq \mathcal{S} - \frac{1}{\textrm{dim}} \mathbf{I}
\otimes \mathbf{I}
-\]](form_2445.png)
where 

For any second-order (spatial) symmetric tensor the following holds:
-![\[
\mathcal{P} : \{ \bullet \}
\dealcoloneq \{ \bullet \} - \frac{1}{\textrm{dim}}
\left[ \{ \bullet \} : \mathbf{I} \right]\mathbf{I}
= \mathcal{P}^{T} : \{ \bullet \}
= \mathtt{dev\_P} \left( \{ \bullet \} \right)
-\]](form_2446.png)
and, therefore,
-![\[
\mathtt{dev\_P} \left( \{ \bullet \} \right) : \mathbf{I}
= \mathrm{trace}(\mathtt{dev\_P} \left( \{ \bullet \} \right)) = 0 \,
.
-\]](form_2447.png)
This definition aligns with the fourth-order symmetric tensor that is returned by deviator_tensor().
Return the Euclidean distance of this point to the point p, i.e. the 
Return the Euclidean distance of this point to the point p, i.e. the 
Return an unrolled index in the range ![$[0,\text{dim}^{\text{rank}}-1]$](form_865.png)
Return an unrolled index in the range ![$[0,\text{dim}^{\text{rank}}-1]$](form_862.png)
Opposite of component_to_unrolled_index: For an index in the range ![$[0, \text{dim}^{\text{rank}}-1]$](form_866.png)
Opposite of component_to_unrolled_index: For an index in the range ![$[0, \text{dim}^{\text{rank}}-1]$](form_863.png)
Entrywise multiplication of two tensor objects of general rank.
This multiplication is also called "Hadamard-product" (c.f. https://en.wikipedia.org/wiki/Hadamard_product_(matrices)), and generates a new tensor of size <rank, dim>:
-![\[
\text{result}_{i, j}
= \text{left}_{i, j}\circ
\text{right}_{i, j}
-\]](form_860.png)
The dot product (single contraction) for tensors. This function return a tensor of rank 
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
-
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
+![\[
\text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k}
\text{left}_{i_1,\ldots,i_{r1}, k}
\text{right}_{k, j_1,\ldots,j_{r2}}
-\]](form_833.png)
operator*() performs a double contraction. The origin of the difference in how operator*() is implemented between Tensor and SymmetricTensor is that for the former, the product between two Tensor objects of same rank and dimension results in another Tensor object – that it, operator*() corresponds to the multiplicative group action within the group of tensors. On the other hand, there is no corresponding multiplicative group action with the set of symmetric tensors because, in general, the product of two symmetric tensors is a nonsymmetric tensor. As a consequence, for a mathematician, it is clear that operator*() for symmetric tensors must have a different meaning: namely the dot or scalar product that maps two symmetric tensors of rank 2 to a scalar. This corresponds to the double-dot (colon) operator whose meaning is then extended to the product of any two even-ranked symmetric tensors.rank_1==rank_2==1, then a scalar number is returned as an unwrapped number type. Return the 

rank_1==rank_2==1, then a scalar number is returned as an unwrapped number type. Return the 

Return the 

Return the 

Given a point in the spacedim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the spacedim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function.
Refer to the general documentation of this class for more information.
@@ -713,7 +713,7 @@Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -756,24 +756,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -782,11 +782,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsRT__Bubbles.html differs (JavaScript source, ASCII text, with very long lines (965)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsRT__Bubbles.html 2023-11-25 15:25:57.739933854 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomialsRT__Bubbles.html 2023-11-25 15:25:57.739933854 +0100 @@ -138,18 +138,18 @@This space is of the form Vk = RTk-1 + Bk, where Bk is defined as follows:
-
-
where 
where 
The total dimension of the space dim(Vk) = d*(k+1)^d, where d is the space dimension. This allows to associate shape functions with the Gauss-Lobatto quadrature points as shown in the figures below.
Left - ![]() ![]() | Left - ![]() ![]() |
Definition at line 91 of file polynomials_rt_bubbles.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteInterpolation.html differs (JavaScript source, ASCII text, with very long lines (541)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteInterpolation.html 2023-11-25 15:25:57.756600182 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteInterpolation.html 2023-11-25 15:25:57.756600182 +0100 @@ -1258,7 +1258,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteLikeInterpolation.html differs (JavaScript source, ASCII text, with very long lines (6544)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteLikeInterpolation.html 2023-11-25 15:25:57.773266507 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1HermiteLikeInterpolation.html 2023-11-25 15:25:57.773266507 +0100 @@ -1282,7 +1282,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Hierarchical.html differs (JavaScript source, ASCII text, with very long lines (715)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Hierarchical.html 2023-11-25 15:25:57.793266100 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Hierarchical.html 2023-11-25 15:25:57.793266100 +0100 @@ -1345,7 +1345,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1LagrangeEquidistant.html differs (JavaScript source, ASCII text, with very long lines (838)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1LagrangeEquidistant.html 2023-11-25 15:25:57.809932429 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1LagrangeEquidistant.html 2023-11-25 15:25:57.809932429 +0100 @@ -1305,7 +1305,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Legendre.html differs (JavaScript source, ASCII text, with very long lines (811)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Legendre.html 2023-11-25 15:25:57.826598757 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Legendre.html 2023-11-25 15:25:57.826598757 +0100 @@ -1248,7 +1248,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Lobatto.html differs (JavaScript source, ASCII text, with very long lines (1908)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Lobatto.html 2023-11-25 15:25:57.846598350 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Lobatto.html 2023-11-25 15:25:57.846598350 +0100 @@ -218,7 +218,7 @@Lobatto polynomials of arbitrary degree on [0,1].
These polynomials are the integrated Legendre polynomials on [0,1]. The first two polynomials are the standard linear shape functions given by 





![$[0,1]$](form_581.png)


These polynomials are the integrated Legendre polynomials on [0,1]. The first two polynomials are the standard linear shape functions given by 





![$[0,1]$](form_581.png)


Calling the constructor with a given index k will generate the polynomial with index k. But only for 
k==0 also a polynomial of degree 1 is generated.
These polynomials are used for the construction of the shape functions of Nédélec elements of arbitrary order.
@@ -1278,7 +1278,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Monomial.html differs (JavaScript source, ASCII text, with very long lines (534)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Monomial.html 2023-11-25 15:25:57.863264678 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Monomial.html 2023-11-25 15:25:57.863264678 +0100 @@ -1370,7 +1370,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PiecewisePolynomial.html differs (JavaScript source, ASCII text, with very long lines (908)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PiecewisePolynomial.html 2023-11-25 15:25:57.879931003 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PiecewisePolynomial.html 2023-11-25 15:25:57.879931003 +0100 @@ -192,7 +192,7 @@Definition of piecewise 1d polynomials for the unit interval. This space allows the description of interpolating polynomials on parts of the unit interval, similarly to the definition of finite element basis functions on subdivided elements. The primary purpose of this class is to allow constructing the shape functions of the FE_Q_iso_Q1 class that has a number of interpolation points in each coordinate direction, but instead of using them for higher-order polynomials just chooses piecewise linear shape functions – in effect, it is a 
Definition of piecewise 1d polynomials for the unit interval. This space allows the description of interpolating polynomials on parts of the unit interval, similarly to the definition of finite element basis functions on subdivided elements. The primary purpose of this class is to allow constructing the shape functions of the FE_Q_iso_Q1 class that has a number of interpolation points in each coordinate direction, but instead of using them for higher-order polynomials just chooses piecewise linear shape functions – in effect, it is a 
This class is not derived from the ScalarPolynomialsBase base class because it is not actually a polynomial – it is a piecewise polynomial. However, it is interface-compatible with the Polynomials::Polynomial class, and consequently can be used as template argument for TensorProductPolynomials.
Definition at line 64 of file polynomials_piecewise.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Polynomial.html differs (JavaScript source, ASCII text, with very long lines (761)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Polynomial.html 2023-11-25 15:25:57.896597332 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1Polynomial.html 2023-11-25 15:25:57.896597332 +0100 @@ -1282,7 +1282,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PolynomialsHermite.html differs (JavaScript source, ASCII text, with very long lines (3111)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PolynomialsHermite.html 2023-11-25 15:25:57.916596925 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classPolynomials_1_1PolynomialsHermite.html 2023-11-25 15:25:57.916596925 +0100 @@ -225,8 +225,8 @@This class implements Hermite interpolation polynomials (see [CiarletRiavart1972interpolation]) enforcing the maximum possible level of regularity 



![$x \in [0,1]$](form_667.png)
Indices 
















This class implements Hermite interpolation polynomials (see [CiarletRiavart1972interpolation]) enforcing the maximum possible level of regularity 



![$x \in [0,1]$](form_662.png)
Indices 
















Definition at line 61 of file polynomials_hermite.h.
Constructor for an individual Hermite polynomial. We write 






index 

index 

-






index 

index 

+
where 



-



+
where 


where 


| regularity | The highest derivative for which the basis is used to enforce regularity. |
This function generates a vector of Polynomial objects representing a complete basis of degree 
![$[0,1]$](form_581.png)
This function generates a vector of Polynomial objects representing a complete basis of degree 
![$[0,1]$](form_581.png)
| regularity | The generated basis can be used to strongly enforce continuity in all derivatives up to and including this order. |
The order of the highest derivative in which the Hermite basis can be used to impose continuity across element boundaries. It's related to the degree 

The order of the highest derivative in which the Hermite basis can be used to impose continuity across element boundaries. It's related to the degree 

Definition at line 132 of file polynomials_hermite.h.
@@ -1329,7 +1329,7 @@This stores whether the shape function corresponds to a non-zero value or derivative at 



This stores whether the shape function corresponds to a non-zero value or derivative at 



Definition at line 145 of file polynomials_hermite.h.
@@ -1405,7 +1405,7 @@If the polynomial is in Lagrange product form, i.e., constructed as a product 

If the polynomial is in Lagrange product form, i.e., constructed as a product 

Definition at line 314 of file polynomial.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussChebyshev.html differs (JavaScript source, ASCII text, with very long lines (1649)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussChebyshev.html 2023-11-25 15:25:57.933263253 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussChebyshev.html 2023-11-25 15:25:57.933263253 +0100 @@ -196,7 +196,7 @@Gauss-Chebyshev quadrature rules integrate the weighted product 



![$[0,1]$](form_581.png)
![$[-1,1]$](form_582.png)





![$[0,1]$](form_581.png)
![$[-1,1]$](form_582.png)


Definition at line 493 of file quadrature_lib.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobatto.html differs (JavaScript source, ASCII text, with very long lines (719)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobatto.html 2023-11-25 15:25:57.949929581 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLobatto.html 2023-11-25 15:25:57.949929581 +0100 @@ -197,7 +197,7 @@ class QGaussLobatto< dim >The Gauss-Lobatto family of quadrature rules for numerical integration.
This modification of the Gauss quadrature uses the two interval end points as well. Being exact for polynomials of degree 2n-3, this formula is suboptimal by two degrees.
The quadrature points are interval end points plus the roots of the derivative of the Legendre polynomial Pn-1 of degree n-1. The quadrature weights are 2/(n(n-1)(Pn-1(xi)2).
-




Gauss-Lobatto-Chebyshev quadrature rules integrate the weighted product 



![$[0,1]$](form_581.png)
![$[-1,1]$](form_582.png)


Gauss-Lobatto-Chebyshev quadrature rules integrate the weighted product 



![$[0,1]$](form_581.png)
![$[-1,1]$](form_582.png)


Definition at line 561 of file quadrature_lib.h.
A class for Gauss quadrature with logarithmic weighting function. This formula is used to integrate 
![$[0,1]$](form_581.png)

Numerical Recipes.
Notice that only the function 

![$[0,1]$](form_581.png)

Numerical Recipes.
Notice that only the function 

revert flag to true at construction time switches the weight from 

The weights and functions have been tabulated up to order 12.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLogR.html differs (JavaScript source, ASCII text, with very long lines (1263)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLogR.html 2023-11-25 15:25:57.999928563 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussLogR.html 2023-11-25 15:25:57.999928563 +0100 @@ -197,15 +197,15 @@A class for Gauss quadrature with arbitrary logarithmic weighting function. This formula is used to integrate 
![$[0,1]$](form_581.png)




You have to make sure that the point 

A class for Gauss quadrature with arbitrary logarithmic weighting function. This formula is used to integrate 
![$[0,1]$](form_581.png)




You have to make sure that the point 

This quadrature formula is rather expensive, since it uses internally two Gauss quadrature formulas of order n to integrate the nonsingular part of the factor, and two GaussLog quadrature formulas to integrate on the separate segments ![$[0,x_0]$](form_728.png)
![$[x_0,1]$](form_729.png)
The last argument from the constructor allows you to use this quadrature rule in one of two possible ways:
![\[ \int_0^1 g(x) dx = \int_0^1 f(x)
\ln\left(\frac{|x-x_0|}{\alpha}\right) dx = \sum_{i=0}^N w_i g(q_i) =
\sum_{i=0}^N \bar{w}_i f(q_i) \]](form_730.png)
Which one of the two sets of weights is provided, can be selected by the factor_out_singular_weight parameter. If it is false (the default), then the 



Which one of the two sets of weights is provided, can be selected by the factor_out_singular_weight parameter. If it is false (the default), then the 



Notice that this quadrature rule is worthless if you try to use it for regular functions once you factored out the singularity.
The weights and functions have been tabulated up to order 12.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussOneOverR.html differs (JavaScript source, ASCII text, with very long lines (1424)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussOneOverR.html 2023-11-25 15:25:58.016594888 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQGaussOneOverR.html 2023-11-25 15:25:58.016594888 +0100 @@ -202,9 +202,9 @@A class for Gauss quadrature with 

![$[0,1]^2$](form_735.png)




This quadrature formula is obtained from two QGauss quadrature formulas, upon transforming them into polar coordinate system centered at the singularity, and then again into another reference element. This allows for the singularity to be cancelled by part of the Jacobian of the transformation, which contains 

Upon construction it is possible to specify whether we want the singularity removed, or not. In other words, this quadrature can be used to integrate 


A class for Gauss quadrature with 

![$[0,1]^2$](form_735.png)




This quadrature formula is obtained from two QGauss quadrature formulas, upon transforming them into polar coordinate system centered at the singularity, and then again into another reference element. This allows for the singularity to be cancelled by part of the Jacobian of the transformation, which contains 

Upon construction it is possible to specify whether we want the singularity removed, or not. In other words, this quadrature can be used to integrate 


Definition at line 291 of file quadrature_lib.h.
Gauss-Radau-Chebyshev quadrature rules integrate the weighted product 



![$[0,1]$](form_581.png)
![$[-1,1]$](form_582.png)


Gauss-Radau-Chebyshev quadrature rules integrate the weighted product 



![$[0,1]$](form_581.png)
![$[-1,1]$](form_582.png)


Definition at line 516 of file quadrature_lib.h.
A class to compute and store the QR factorization of a matrix represented by a set of column vectors.
-The class is design to update a given (possibly empty) QR factorization of a matrix 

The class is design to update a given (possibly empty) QR factorization of a matrix 

The VectorType template argument may either be a parallel and serial vector, and only need to have basic operations such as additions, scalar product, etc. It also needs to have a copy-constructor.
See sections 6.5.2-6.5.3 on pp. 335-338 in
Remove first column and update QR factorization.
-Starting from the given QR decomposition ![$QR= A = [a_1\,\dots a_n], \quad a_i \in {\mathbb R}^m$](form_1770.png)
![$\tilde Q \tilde R= \tilde A = [a_2\,\dots a_n], \quad a_i \in {\mathbb
-R}^m$](form_1771.png)
The standard approach is to partition 
-QR decomposition
![$QR= A = [a_1\,\dots a_n], \quad a_i \in {\mathbb R}^m$](form_1769.png)
![$\tilde Q \tilde R= \tilde A = [a_2\,\dots a_n], \quad a_i \in {\mathbb
+R}^m$](form_1770.png)
The standard approach is to partition 
+![\[
R =
\begin{bmatrix}
r_{11} & w^T \\
0 & R_{33}
\end{bmatrix}
-\]](form_1772.png)
It then follows that
-![\[
Q^T \tilde A =
\begin{bmatrix}
0 & w^T \\
0 & R_{33}
\end{bmatrix}
-\]](form_1773.png)
is upper Hessenberg where unwanted sub-diagonal elements can be zeroed by a sequence of Givens rotations.
-Note that 


Note that 


Implements BaseQR< VectorType >.
@@ -393,7 +393,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -434,7 +434,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -474,7 +474,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -515,7 +515,7 @@Set 

Set 

Implements BaseQR< VectorType >.
@@ -655,7 +655,7 @@Solve 
x and y should be consistent with the current size of the subspace. If transpose is true, 
Solve 
x and y should be consistent with the current size of the subspace. If transpose is true, 
Compute 

Compute 

Since the library assumes ![$[0,1]$](form_581.png)
This variable change can be used to integrate singular integrals. One example is 
![$[0,1]$](form_581.png)



This variable change can be used to integrate singular integrals. One example is 
![$[0,1]$](form_581.png)



Singular quadrature formula are rather expensive, nevertheless Telles' quadrature formula are much easier to compute with respect to other singular integration techniques as Lachat-Watson.
We have implemented the case for 

The weights and functions for Gauss Legendre formula have been tabulated up to order 12.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQWitherdenVincentSimplex.html differs (JavaScript source, ASCII text, with very long lines (1196)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQWitherdenVincentSimplex.html 2023-11-25 15:25:58.076593670 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classQWitherdenVincentSimplex.html 2023-11-25 15:25:58.079926935 +0100 @@ -199,7 +199,7 @@Witherden-Vincent rules for simplex entities.
-Like QGauss, users should specify a number n_points_1d as an indication of what polynomial degree to be integrated exactly (e.g., for 


Like QGauss, users should specify a number n_points_1d as an indication of what polynomial degree to be integrated exactly (e.g., for 


The given value for n_points_1d = 1, 2, 3, 4, 5, 6, 7 (where the last two are only implemented in 2d) results in the following number of quadrature points in 2d and 3d:
At least for quadrilaterals and hexahedra (or, more precisely, since we work on reference cells: for the unit square and the unit cube), quadrature formulas are typically tensor products of one-dimensional formulas (see also the section on implementation detail below).
In order to allow for dimension independent programming, a quadrature formula of dimension zero exists. Since an integral over zero dimensions is the evaluation at a single point, any constructor of such a formula initializes to a single quadrature point with weight one. Access to the weight is possible, while access to the quadrature point is not permitted, since a Point of dimension zero contains no information. The main purpose of these formulae is their use in QProjector, which will create a useful formula of dimension one out of them.
For each quadrature formula we denote by m, the maximal degree of polynomials integrated exactly on the reference cell the quadrature formula corresponds to. This number is given in the documentation of each formula. The order of the integration error is m+1, that is, the error is the size of the cell to the m+1 by the Bramble-Hilbert Lemma. The number m is to be found in the documentation of each concrete formula. For the optimal formulae QGauss we have 

m in each space direction, but they are still only of (m+1)st order.
For each quadrature formula we denote by m, the maximal degree of polynomials integrated exactly on the reference cell the quadrature formula corresponds to. This number is given in the documentation of each formula. The order of the integration error is m+1, that is, the error is the size of the cell to the m+1 by the Bramble-Hilbert Lemma. The number m is to be found in the documentation of each concrete formula. For the optimal formulae QGauss we have 

m in each space direction, but they are still only of (m+1)st order.
At least for hypercube reference cells (i.e., squares and cubes), most integration formulae in more than one space dimension are tensor products of quadrature formulae in one space dimension, or more generally the tensor product of a formula in (dim-1) dimensions and one in one dimension. There is a special constructor to generate a quadrature formula from two others. For example, the QGauss<dim> formulae include Ndim quadrature points in dim dimensions, where 
At least for hypercube reference cells (i.e., squares and cubes), most integration formulae in more than one space dimension are tensor products of quadrature formulae in one space dimension, or more generally the tensor product of a formula in (dim-1) dimensions and one in one dimension. There is a special constructor to generate a quadrature formula from two others. For example, the QGauss<dim> formulae include Ndim quadrature points in dim dimensions, where 
Quadrature objects are used in a number of places within deal.II where integration is performed, most notably via the FEValues and related classes. Some of these classes are also used in contexts where no integrals are involved, but where functions need to be evaluated at specific points, for example to evaluate the solution at individual points or to create graphical output. Examples are the implementation of VectorTools::point_value() and the DataOut and related classes (in particular in connection with the DataPostprocessor class). In such contexts, one often creates specific "Quadrature" objects in which the "quadrature points" are simply the points (in the coordinate system of the reference cell) at which one wants to evaluate the solution. In these kinds of cases, the weights stored by the current class are not used and the name "quadrature object" is interpreted as "list of evaluation points".
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classReferenceCell.html differs (JavaScript source, ASCII text, with very long lines (847)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classReferenceCell.html 2023-11-25 15:25:58.119926120 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classReferenceCell.html 2023-11-25 15:25:58.119926120 +0100 @@ -490,7 +490,7 @@Compute the value of the 

Compute the value of the 

Definition at line 2371 of file reference_cell.h.
@@ -529,7 +529,7 @@Compute the gradient of the 

Compute the gradient of the 

Definition at line 2460 of file reference_cell.h.
@@ -570,7 +570,7 @@Return a default linear mapping matching the current reference cell. If this reference cell is a hypercube, then the returned mapping is a MappingQ1; otherwise, it is an object of type MappingFE initialized with FE_SimplexP (if the reference cell is a triangle or tetrahedron), with FE_PyramidP (if the reference cell is a pyramid), or with FE_WedgeP (if the reference cell is a wedge). In other words, the term "linear" in the name of the function has to be understood as 
Return a default linear mapping matching the current reference cell. If this reference cell is a hypercube, then the returned mapping is a MappingQ1; otherwise, it is an object of type MappingFE initialized with FE_SimplexP (if the reference cell is a triangle or tetrahedron), with FE_PyramidP (if the reference cell is a pyramid), or with FE_WedgeP (if the reference cell is a wedge). In other words, the term "linear" in the name of the function has to be understood as 
Definition at line 149 of file reference_cell.cc.
@@ -916,7 +916,7 @@Return the reference-cell type of face face_no of the current object. For example, if the current object is ReferenceCells::Tetrahedron, then face_no must be between in the interval 
face_no must be between in the interval 
Return the reference-cell type of face face_no of the current object. For example, if the current object is ReferenceCells::Tetrahedron, then face_no must be between in the interval 
face_no must be between in the interval 
Definition at line 1441 of file reference_cell.h.
@@ -1412,7 +1412,7 @@Return the 

![$[0,1]^2$](form_735.png)

Return the 

![$[0,1]^2$](form_735.png)

For ReferenceCells::Vertex, the reference cell is a zero-dimensional point in a zero-dimensional space. As a consequence, one cannot meaningfully define a volume for it. The function returns one for this case, because this makes it possible to define useful quadrature rules based on the center of a reference cell and its volume.
Definition at line 2494 of file reference_cell.h.
@@ -1441,9 +1441,9 @@Return the barycenter (i.e., the center of mass) of the reference cell that corresponds to the current object. The function is not called center() because one can define the center of an object in a number of different ways whereas the barycenter of a reference cell 
-![\[
\mathbf x_K = \frac{1}{V} \int_K \mathbf x \; dx
-\]](form_1464.png)
where 
Return true if the given point is inside the reference cell of the present space dimension up to some tolerance. This function accepts an additional parameter (which defaults to zero) which specifies by how much the point position may actually be outside the true reference cell. This is useful because in practice we may often not be able to compute the coordinates of a point in reference coordinates exactly, but only up to numerical roundoff. For example, strictly speaking one would expect that for points on the boundary of the reference cell, the function would return true if the tolerance was zero. But in practice, this may or may not actually be true; for example, the point 



Return true if the given point is inside the reference cell of the present space dimension up to some tolerance. This function accepts an additional parameter (which defaults to zero) which specifies by how much the point position may actually be outside the true reference cell. This is useful because in practice we may often not be able to compute the coordinates of a point in reference coordinates exactly, but only up to numerical roundoff. For example, strictly speaking one would expect that for points on the boundary of the reference cell, the function would return true if the tolerance was zero. But in practice, this may or may not actually be true; for example, the point 



The tolerance parameter may be less than zero, indicating that the point should be safely inside the cell.
Definition at line 2558 of file reference_cell.h.
@@ -1547,8 +1547,8 @@Return 

dim-1. Return 

dim-1. Definition at line 2667 of file reference_cell.h.
@@ -1943,7 +1943,7 @@Given a set of node indices of the form 


Given a set of node indices of the form 


The last argument, legacy_format, indicates whether to use the old, VTK legacy format (when true) or the new, VTU format (when false).
Return the 
Return the 
The returned type is of VectorAdaptor::value_type so as to maintain consistency with ROL::Vector<VectorAdaptor::value_type> and more importantly to not to create an overloaded version namely, VectorAdaptor::real_type norm() const; if real_type and value_type are not of the same type.
Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverBase.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverBase.html 2023-11-25 15:25:58.166591838 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverBase.html 2023-11-25 15:25:58.166591838 +0100 @@ -321,9 +321,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -383,9 +383,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -611,8 +611,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -666,8 +666,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -732,8 +732,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverGeneralizedDavidson.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverGeneralizedDavidson.html 2023-11-25 15:25:58.179924898 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverGeneralizedDavidson.html 2023-11-25 15:25:58.179924898 +0100 @@ -310,9 +310,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverJacobiDavidson.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverJacobiDavidson.html 2023-11-25 15:25:58.196591227 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverJacobiDavidson.html 2023-11-25 15:25:58.196591227 +0100 @@ -310,9 +310,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverKrylovSchur.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverKrylovSchur.html 2023-11-25 15:25:58.209924287 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverKrylovSchur.html 2023-11-25 15:25:58.213257555 +0100 @@ -310,9 +310,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLAPACK.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLAPACK.html 2023-11-25 15:25:58.226590616 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLAPACK.html 2023-11-25 15:25:58.226590616 +0100 @@ -310,9 +310,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLanczos.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLanczos.html 2023-11-25 15:25:58.239923676 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverLanczos.html 2023-11-25 15:25:58.243256944 +0100 @@ -310,9 +310,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverPower.html differs (JavaScript source, ASCII text, with very long lines (772)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverPower.html 2023-11-25 15:25:58.256590004 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSLEPcWrappers_1_1SolverPower.html 2023-11-25 15:25:58.256590004 +0100 @@ -310,9 +310,9 @@Same as above, but here a composite method for solving the system 

Same as above, but here a composite method for solving the system 

Definition at line 735 of file slepc_solver.h.
@@ -380,9 +380,9 @@Same as above, but here a composite method for solving the system 


Same as above, but here a composite method for solving the system 


Definition at line 773 of file slepc_solver.h.
@@ -664,8 +664,8 @@Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 260 of file slepc_solver.cc.
@@ -719,8 +719,8 @@Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, 
Definition at line 273 of file slepc_solver.cc.
@@ -785,8 +785,8 @@Same as above, but here initialize solver for the linear system 
Same as above, but here initialize solver for the linear system 
Definition at line 87 of file slepc_solver.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1ARKode.html differs (JavaScript source, ASCII text, with very long lines (1421)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1ARKode.html 2023-11-25 15:25:58.279922865 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1ARKode.html 2023-11-25 15:25:58.279922865 +0100 @@ -192,85 +192,85 @@The class ARKode is a wrapper to SUNDIALS variable-step, embedded, additive Runge-Kutta solver which is a general purpose solver for systems of ordinary differential equations characterized by the presence of both fast and slow dynamics.
Fast dynamics are treated implicitly, and slow dynamics are treated explicitly, using nested families of implicit and explicit Runge-Kutta solvers.
Citing directly from ARKode documentation:
-ARKode solves ODE initial value problems (IVPs) in 
ARKode solves ODE initial value problems (IVPs) in 
-![\[
M\dot y = f_E(t, y) + f_I (t, y), \qquad y(t_0) = y_0.
- \]](form_2623.png)
Here, 







For standard systems of ordinary differential equations and for problems arising from the spatial semi-discretization of partial differential equations using finite difference or finite volume methods, 


Here, 







For standard systems of ordinary differential equations and for problems arising from the spatial semi-discretization of partial differential equations using finite difference or finite volume methods, 


The two right-hand side functions may be described as:




ARKode may be used to solve stiff, nonstiff and multi-rate problems. Roughly speaking, stiffness is characterized by the presence of at least one rapidly damped mode, whose time constant is small compared to the time scale of the solution itself. In the implicit/explicit (ImEx) splitting above, these stiff components should be included in the right-hand side function 
For multi-rate problems, a user should provide both of the functions 

For nonstiff problems, only 

ARKode may be used to solve stiff, nonstiff and multi-rate problems. Roughly speaking, stiffness is characterized by the presence of at least one rapidly damped mode, whose time constant is small compared to the time scale of the solution itself. In the implicit/explicit (ImEx) splitting above, these stiff components should be included in the right-hand side function 
For multi-rate problems, a user should provide both of the functions 

For nonstiff problems, only 

-![\[
M\dot y = f_E(t, y), \qquad y(t_0) = y_0.
- \]](form_2633.png)
In this scenario, the ARK methods reduce to classical explicit Runge-Kutta methods (ERK). For these classes of methods, ARKode allows orders of accuracy 

Finally, for stiff (linear or nonlinear) problems the user may provide only 

In this scenario, the ARK methods reduce to classical explicit Runge-Kutta methods (ERK). For these classes of methods, ARKode allows orders of accuracy 

Finally, for stiff (linear or nonlinear) problems the user may provide only 

-![\[
M\dot y = f_I(t, y), \qquad y(t_0) = y_0.
- \]](form_2637.png)
Similarly to ERK methods, in this scenario the ARK methods reduce to classical diagonally-implicit Runge-Kutta methods (DIRK). For these classes of methods, ARKode allows orders of accuracy 

Similarly to ERK methods, in this scenario the ARK methods reduce to classical diagonally-implicit Runge-Kutta methods (DIRK). For these classes of methods, ARKode allows orders of accuracy 

For both DIRK and ARK methods, an implicit system of the form
-![\[
G(z_i) \dealcoloneq M z_i - h_n A^I_{i,i} f_I (t^I_{n,i}, z_i) - a_i = 0
- \]](form_2640.png)
must be solved for each stage 
-
+![\[
a_i \dealcoloneq
M y_{n-1} + h_n \sum_{j=1}^{i-1} [ A^E_{i,j} f_E(t^E_{n,j}, z_j)
+ A^I_{i,j} f_I (t^I_{n,j}, z_j)]
- \]](form_2642.png)
for the ARK methods, or
-![\[
a_i \dealcoloneq
M y_{n-1} + h_n \sum_{j=1}^{i-1} A^I_{i,j} f_I (t^I_{n,j}, z_j)
- \]](form_2643.png)
for the DIRK methods. Here 

If 



implicit_function_is_linear, ARKode takes some shortcuts that allow a faster solution process.
for the DIRK methods. Here 

If 



implicit_function_is_linear, ARKode takes some shortcuts that allow a faster solution process.
For systems of either type, ARKode allows a choice of solution strategy. The default solver choice is a variant of Newton's method,
-![\[
z_i^{m+1} = z_i^m +\delta^{m+1},
- \]](form_2647.png)
where 

-

+![\[
N(z_i^m) \delta^{m+1} = -G(z_i^m),
- \]](form_2649.png)
where
-![\[
N \dealcoloneq M - \gamma J, \quad J
\dealcoloneq \frac{\partial f_I}{\partial y},
\qquad \gamma\dealcoloneq h_n A^I_{i,i}.
- \]](form_2650.png)
As an alternate to Newton's method, ARKode may solve for each stage 
-ARKode may solve for each stage

+![\[
z_i^{m+1} = g(z_i^{m}), m=0,1,\ldots.
- \]](form_2652.png)
Unlike with Newton's method, this option does not require the solution of a linear system at each iteration, instead opting for solution of a low-dimensional least-squares solution to construct the nonlinear update.
-Finally, if the user specifies implicit_function_is_linear, i.e., 

implicit_function_is_linear setting is ignored.
The optimal solver (Newton vs fixed-point) is highly problem-dependent. Since fixed-point solvers do not require the solution of any linear systems, each iteration may be significantly less costly than their Newton counterparts. However, this can come at the cost of slower convergence (or even divergence) in comparison with Newton-like methods. These fixed-point solvers do allow for user specification of the Anderson-accelerated subspace size, 


This improvement may be significant even for "small" values, e.g. 

For either the Newton or fixed-point solvers, it is well-known that both the efficiency and robustness of the algorithm intimately depends on the choice of a good initial guess. In ARKode, the initial guess for either nonlinear solution method is a predicted value 



Finally, if the user specifies implicit_function_is_linear, i.e., 

implicit_function_is_linear setting is ignored.
The optimal solver (Newton vs fixed-point) is highly problem-dependent. Since fixed-point solvers do not require the solution of any linear systems, each iteration may be significantly less costly than their Newton counterparts. However, this can come at the cost of slower convergence (or even divergence) in comparison with Newton-like methods. These fixed-point solvers do allow for user specification of the Anderson-accelerated subspace size, 


This improvement may be significant even for "small" values, e.g. 

For either the Newton or fixed-point solvers, it is well-known that both the efficiency and robustness of the algorithm intimately depends on the choice of a good initial guess. In ARKode, the initial guess for either nonlinear solution method is a predicted value 



The user has to provide the implementation of at least one (or both) of the following std::functions:
To provide a simple example, consider the harmonic oscillator problem:
-![\[
\begin{split}
u'' & = -k^2 u \\
u (0) & = 0 \\
u'(0) & = k
\end{split}
- \]](form_2660.png)
We write it in terms of a first order ode:
-![\[
\begin{matrix}
y_0' & = y_1 \\
y_1' & = - k^2 y_0
\end{matrix}
- \]](form_2661.png)
That is 
-
+![\[
A \dealcoloneq
\begin{pmatrix}
0 & 1 \\
-k^2 &0
\end{pmatrix}
- \]](form_2663.png)
and 
The exact solution is 


and 
The exact solution is 


A minimal implementation, using only explicit RK methods, is given by the following code snippet:
A function object that users may supply and that is intended to compute the explicit part of the IVP right hand side. Sets 
A function object that users may supply and that is intended to compute the explicit part of the IVP right hand side. Sets 
At least one of explicit_function() or implicit_function() must be provided. According to which one is provided, explicit, implicit, or mixed RK methods are used.
A function object that users may supply and that is intended to compute the implicit part of the IVP right hand side. Sets 
A function object that users may supply and that is intended to compute the implicit part of the IVP right hand side. Sets 
At least one of explicit_function() or implicit_function() must be provided. According to which one is provided, explicit, implicit, or mixed RK methods are used.
Citing from the SUNDIALS documentation:
Consider a system of Differential-Algebraic Equations written in the general form
-![\[
\begin{cases}
F(t,y,\dot y) = 0\, , \\
y(t_0) = y_0\, , \\
\dot y (t_0) = \dot y_0\, .
\end{cases}
- \]](form_2554.png)
where 




where 




-![\[
\sum_{i=0}^q \alpha_{n,i}\,y_{n-i}=h_n\,\dot y_n\, ,
\label{eq:bdf}
- \]](form_2558.png)
where 






where 






-![\[
G(y_n)\equiv F\left(t_n,y_n,\dfrac{1}{h_n}\sum_{i=0}^q
\alpha_{n,i}\,y_{n-i}\right)=0\, .
- \]](form_2565.png)
The Newton method leads to a linear system of the form
-![\[
J[y_{n(m+1)}-y_{n(m)}]=-G(y_{n(m)})\, ,
- \]](form_2566.png)
where 



where 



-![\[
J=\dfrac{\partial G}{\partial y} = \dfrac{\partial F}{\partial y} +
\alpha \dfrac{\partial F}{\partial \dot y}\, ,
- \]](form_2568.png)
and 

and 

To provide a simple example, consider the following harmonic oscillator problem:
-![\[ \begin{split}
u'' & = -k^2 u \\
u (0) & = 0 \\
u'(0) & = k
\end{split}
- \]](form_2570.png)
We write it in terms of a first order ode:
-![\[
\begin{matrix}
y_0' & -y_1 & = 0 \\
y_1' & + k^2 y_0 & = 0
\end{matrix}
- \]](form_2571.png)
That is 
-
+![\[
\begin{pmatrix}
0 & -1 \\
k^2 &0
\end{pmatrix}
- \]](form_2573.png)
and 

The exact solution is 


The Jacobian to assemble is the following: 
and 

The exact solution is 


The Jacobian to assemble is the following: 
This is achieved by the following snippet of code:
By default, this class assumes that all components are differential, and that you want to solve a standard ode. In this case, the initial component type is set to use_y_diff, so that the y_dot at time t=initial_time is computed by solving the nonlinear problem 
y_dot.
By default, this class assumes that all components are differential, and that you want to solve a standard ode. In this case, the initial component type is set to use_y_diff, so that the y_dot at time t=initial_time is computed by solving the nonlinear problem 
y_dot.
Notice that a Newton solver is used for this computation. The Newton solver parameters can be tweaked by acting on ic_alpha and ic_max_iter.
If you reset the solver at some point, you may want to select a different computation for the initial conditions after reset. Say, for example, that you have refined a grid, and after transferring the solution to the new grid, the initial conditions are no longer consistent. Then you can choose how these are made consistent, using the same three options that you used for the initial conditions in reset_type.
Compute residual. Return 
Compute residual. Return 
Compute Jacobian. This function is called by IDA any time a Jacobian update is required. The user should compute the Jacobian (or update all the variables that allow the application of the Jacobian). This function is called by IDA once, before any call to solve_jacobian_system() or solve_with_jacobian().
The Jacobian 
-![\[
J=\dfrac{\partial G}{\partial y} = \dfrac{\partial F}{\partial y} +
\alpha \dfrac{\partial F}{\partial \dot y}.
-\]](form_2609.png)
If the user uses a matrix based computation of the Jacobian, then this is the right place where an assembly routine should be called to assemble both a matrix and a preconditioner for the Jacobian system. Subsequent calls (possibly more than one) to solve_jacobian_system() or solve_with_jacobian() can assume that this function has been called at least once.
-Notice that no assumption is made by this interface on what the user should do in this function. IDA only assumes that after a call to setup_jacobian() it is possible to call solve_jacobian_system() or solve_with_jacobian() to obtain a solution 

Notice that no assumption is made by this interface on what the user should do in this function. IDA only assumes that after a call to setup_jacobian() it is possible to call solve_jacobian_system() or solve_with_jacobian() to obtain a solution 

Solve the Jacobian linear system. This function will be called by IDA (possibly several times) after setup_jacobian() has been called at least once. IDA tries to do its best to call setup_jacobian() the minimum amount of times. If convergence can be achieved without updating the Jacobian, then IDA does not call setup_jacobian() again. If, on the contrary, internal IDA convergence tests fail, then IDA calls again setup_jacobian() with updated vectors and coefficients so that successive calls to solve_jacobian_systems() lead to better convergence in the Newton process.
The jacobian 
-![\[
J=\dfrac{\partial G}{\partial y} = \dfrac{\partial F}{\partial y} +
\alpha \dfrac{\partial F}{\partial \dot y}.
-\]](form_2609.png)
A call to this function should store in dst the result of 
src, i.e., J*dst = src. It is the users responsibility to set up proper solvers and preconditioners inside this function.
A call to this function should store in dst the result of 
src, i.e., J*dst = src. It is the users responsibility to set up proper solvers and preconditioners inside this function.
Solve the Jacobian linear system up to a specified tolerance. This function will be called by IDA (possibly several times) after setup_jacobian() has been called at least once. IDA tries to do its best to call setup_jacobian() the minimum number of times. If convergence can be achieved without updating the Jacobian, then IDA does not call setup_jacobian() again. If, on the contrary, internal IDA convergence tests fail, then IDA calls again setup_jacobian() with updated vectors and coefficients so that successive calls to solve_with_jacobian() lead to better convergence in the Newton process.
The Jacobian 
-![\[
J=\dfrac{\partial G}{\partial y} = \dfrac{\partial F}{\partial y} +
\alpha \dfrac{\partial F}{\partial \dot y}.
-\]](form_2609.png)
Arguments to the function are:
| [in] | rhs | The system right hand side to solve for. |
| [out] | dst | The solution of ![]() |
| [out] | dst | The solution of ![]() |
| [in] | tolerance | The tolerance with which to solve the linear system of equations. |
A call to this function should store in dst the result of 
src, i.e., the solution of the linear system J*dst = src. It is the user's responsibility to set up proper solvers and preconditioners either inside this function, or already within the setup_jacobian() function. (The latter is, for example, what the step-77 program does: All expensive operations happen in setup_jacobian(), given that that function is called far less often than the current one.)
A call to this function should store in dst the result of 
src, i.e., the solution of the linear system J*dst = src. It is the user's responsibility to set up proper solvers and preconditioners either inside this function, or already within the setup_jacobian() function. (The latter is, for example, what the step-77 program does: All expensive operations happen in setup_jacobian(), given that that function is called far less often than the current one.)
Type of correction for initial conditions.
-If you do not provide consistent initial conditions, (i.e., conditions for which 
ic_type parameter at construction time.
Notice that you could in principle use this capabilities to solve for steady state problems by setting y_dot to zero, and asking to compute 

If you do not provide consistent initial conditions, (i.e., conditions for which 
ic_type parameter at construction time.
Notice that you could in principle use this capabilities to solve for steady state problems by setting y_dot to zero, and asking to compute 

Definition at line 523 of file ida.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1KINSOL.html differs (JavaScript source, ASCII text, with very long lines (2207)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1KINSOL.html 2023-11-25 15:25:58.326588579 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSUNDIALS_1_1KINSOL.html 2023-11-25 15:25:58.326588579 +0100 @@ -174,48 +174,48 @@Interface to SUNDIALS' nonlinear solver (KINSOL).
-KINSOL is a solver for nonlinear algebraic systems in residual form 








KINSOL is a solver for nonlinear algebraic systems in residual form 








KINSOL's Newton solver employs the inexact Newton method. As this solver is intended mainly for large systems, the user is required to provide their own solver function.
At the highest level, KINSOL implements the following iteration scheme:








Here, 






Here, 






Unless specified otherwise by the user, KINSOL strives to update Jacobian information as infrequently as possible to balance the high costs of matrix operations against other costs. Specifically, these updates occur when:






KINSOL allows changes to the above strategy through optional solver inputs. The user can disable the initial Jacobian information evaluation or change the default value of the number of nonlinear iterations after which a Jacobian information update is enforced.
-To address the case of ill-conditioned nonlinear systems, KINSOL allows prescribing scaling factors both for the solution vector and for the residual vector. For scaling to be used, the user may supply the function get_solution_scaling(), that returns values 





To address the case of ill-conditioned nonlinear systems, KINSOL allows prescribing scaling factors both for the solution vector and for the residual vector. For scaling to be used, the user may supply the function get_solution_scaling(), that returns values 





When scaling values are provided for the solution vector, these values are automatically incorporated into the calculation of the perturbations used for the default difference quotient approximations for Jacobian information if the user does not supply a Jacobian solver through the solve_with_jacobian() function.
-Two methods of applying a computed step 







Two methods of applying a computed step 







The basic fixed-point iteration scheme implemented in KINSOL is given by:






At each stage in the iteration process, function 

For Picard iteration, as implemented in KINSOL, we consider a special form of the nonlinear function 



Then the fixed-point function 


At each stage in the iteration process, function 

For Picard iteration, as implemented in KINSOL, we consider a special form of the nonlinear function 



Then the fixed-point function 


The user has to provide the implementation of the following std::functions:
Specifying residual() allows the user to use Newton and Picard strategies (i.e., 

Specifying residual() allows the user to use Newton and Picard strategies (i.e., 

If the use of a Newton or Picard method is desired, then the user should also supply
A function object that users may supply and that is intended to prepare the linear solver for subsequent calls to solve_with_jacobian().
The job of setup_jacobian() is to prepare the linear solver for subsequent calls to solve_with_jacobian(), in the solution of linear systems 
In the cases strategy = SolutionStrategy::newton or SolutionStrategy::linesearch, 



In the cases strategy = SolutionStrategy::newton or SolutionStrategy::linesearch, 



The setup_jacobian() function may call a user-supplied function, or a function within the linear solver module, to compute Jacobian-related data that is required by the linear solver. It may also preprocess that data as needed for solve_with_jacobian(), which may involve calling a generic function (such as for LU factorization) or, more generally, build preconditioners from the assembled Jacobian. In any case, the data so generated may then be used whenever a linear system is solved.
The point of this function is that setup_jacobian() function is not called at every Newton iteration, but only as frequently as the solver determines that it is appropriate to perform the setup task. In this way, Jacobian-related data generated by setup_jacobian() is expected to be used over a number of Newton iterations. KINSOL determines itself when it is beneficial to regenerate the Jacobian and associated information (such as preconditioners computed for the Jacobian), thereby saving the effort to regenerate the Jacobian matrix and a preconditioner for it whenever possible.
| current_u | Current value of ![]() |
| current_u | Current value of ![]() |
| current_f | Current value of ![]() ![]() |
solve_with_jacobian callback described below.A function object that users may supply and that is intended to solve a linear system with the Jacobian matrix. This function will be called by KINSOL (possibly several times) after setup_jacobian() has been called at least once. KINSOL tries to do its best to call setup_jacobian() the minimum number of times. If convergence can be achieved without updating the Jacobian, then KINSOL does not call setup_jacobian() again. If, on the contrary, internal KINSOL convergence tests fail, then KINSOL calls setup_jacobian() again with updated vectors and coefficients so that successive calls to solve_jacobian_system() lead to better convergence in the Newton process.
If you do not specify a solve_jacobian_system or solve_with_jacobian function, then only a fixed point iteration strategy can be used. Notice that this may not converge, or may converge very slowly.
A call to this function should store in dst the result of 
rhs, i.e., 
setup_jacobian callback above).
A call to this function should store in dst the result of 
rhs, i.e., 
setup_jacobian callback above).
Arguments to the function are:
| [in] | ycur | The current ![]() ![]() ![]() |
| [in] | fcur | The current value of the implicit right-hand side at ycur, ![]() |
| [in] | ycur | The current ![]() ![]() ![]() |
| [in] | fcur | The current value of the implicit right-hand side at ycur, ![]() |
| [in] | rhs | The system right hand side to solve for |
| [out] | dst | The solution of ![]() |
| [out] | dst | The solution of ![]() |
A function object that users may supply and that is intended to solve a linear system with the Jacobian matrix. This function will be called by KINSOL (possibly several times) after setup_jacobian() has been called at least once. KINSOL tries to do its best to call setup_jacobian() the minimum number of times. If convergence can be achieved without updating the Jacobian, then KINSOL does not call setup_jacobian() again. If, on the contrary, internal KINSOL convergence tests fail, then KINSOL calls setup_jacobian() again with updated vectors and coefficients so that successive calls to solve_with_jacobian() lead to better convergence in the Newton process.
If you do not specify a solve_with_jacobian function, then only a fixed point iteration strategy can be used. Notice that this may not converge, or may converge very slowly.
A call to this function should store in dst the result of 
rhs, i.e., 
setup_jacobian callback above). The function attached to this callback is also provided with a tolerance to the linear solver, indicating that it is not necessary to solve the linear system with the Jacobian matrix exactly, but only to a tolerance that KINSOL will adapt over time.
A call to this function should store in dst the result of 
rhs, i.e., 
setup_jacobian callback above). The function attached to this callback is also provided with a tolerance to the linear solver, indicating that it is not necessary to solve the linear system with the Jacobian matrix exactly, but only to a tolerance that KINSOL will adapt over time.
Arguments to the function are:
| [in] | rhs | The system right hand side to solve for. |
| [out] | dst | The solution of ![]() |
| [out] | dst | The solution of ![]() |
| [in] | tolerance | The tolerance with which to solve the linear system of equations. |
A function object that users may supply and that is intended to return a vector whose components are the weights used by KINSOL to compute the vector norm of the solution. The implementation of this function is optional, and it is used only if implemented.
-The intent for this scaling factor is for problems in which the different components of a solution have vastly different numerical magnitudes – typically because they have different physical units and represent different things. For example, if one were to solve a nonlinear Stokes problem, the solution vector has components that correspond to velocities and other components that correspond to pressures. These have different physical units and depending on which units one chooses, they may have roughly comparable numerical sizes or maybe they don't. To give just one example, in simulations of flow in the Earth's interior, one has velocities on the order of maybe ten centimeters per year, and pressures up to around 100 GPa. If one expresses this in SI units, this corresponds to velocities of around 


The intent for this scaling factor is for problems in which the different components of a solution have vastly different numerical magnitudes – typically because they have different physical units and represent different things. For example, if one were to solve a nonlinear Stokes problem, the solution vector has components that correspond to velocities and other components that correspond to pressures. These have different physical units and depending on which units one chooses, they may have roughly comparable numerical sizes or maybe they don't. To give just one example, in simulations of flow in the Earth's interior, one has velocities on the order of maybe ten centimeters per year, and pressures up to around 100 GPa. If one expresses this in SI units, this corresponds to velocities of around 


If no function is provided to a KINSOL object, then this is interpreted as implicitly saying that all of these scaling factors should be considered as one.
A function object that users may supply and that is intended to return a vector whose components are the weights used by KINSOL to compute the vector norm of the function evaluation away from the solution. The implementation of this function is optional, and it is used only if implemented.
-The point of this function and the scaling vector it returns is similar to the one discussed above for get_solution_scaling, except that it is for a vector that scales the components of the function 

The point of this function and the scaling vector it returns is similar to the one discussed above for get_solution_scaling, except that it is for a vector that scales the components of the function 

Definition at line 691 of file kinsol.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScaLAPACKMatrix.html differs (JavaScript source, ASCII text, with very long lines (1291)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScaLAPACKMatrix.html 2023-11-25 15:25:58.359921237 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScaLAPACKMatrix.html 2023-11-25 15:25:58.363254500 +0100 @@ -358,15 +358,15 @@A wrapper class around ScaLAPACK parallel dense linear algebra.
-ScaLAPACK assumes that matrices are distributed according to the block-cyclic decomposition scheme. An 






In the following the block-cyclic distribution of a 


ScaLAPACK assumes that matrices are distributed according to the block-cyclic decomposition scheme. An 






In the following the block-cyclic distribution of a 


Note that the odd number of columns of the local matrices owned by the processes P2, P5 and P8 accounts for 

Note that the odd number of columns of the local matrices owned by the processes P2, P5 and P8 accounts for 

The choice of the block sizes is a compromise between a sufficiently large size for efficient local/serial BLAS, but one that is also small enough to achieve good parallel load balance.
Below we show a strong scaling example of ScaLAPACKMatrix::invert() on up to 5 nodes each composed of two Intel Xeon 2660v2 IvyBridge sockets 2.20GHz, 10 cores/socket. Calculations are performed on square processor grids 1x1, 2x2, 3x3, 4x4, 5x5, 6x6, 7x7, 8x8, 9x9, 10x10.
Constructor for a rectangular matrix with n_rows and n_cols and distributed using the grid process_grid.
The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of 

The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of 

Definition at line 81 of file scalapack.cc.
@@ -666,7 +666,7 @@Constructor for a square matrix of size size, and distributed using the process grid in process_grid.
The parameter block_size is used for the block-cyclic distribution of the matrix. An identical block size is used for the rows and columns of the matrix. In general, it is recommended to use powers of 

The parameter block_size is used for the block-cyclic distribution of the matrix. An identical block size is used for the rows and columns of the matrix. In general, it is recommended to use powers of 

Definition at line 106 of file scalapack.cc.
@@ -711,7 +711,7 @@Constructor for a general rectangular matrix that is read from the file filename and distributed using the grid process_grid.
Loads the matrix from file filename using HDF5. In case that deal.II was built without HDF5 a call to this function will cause an exception to be thrown.
The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of 

The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of 

Definition at line 122 of file scalapack.cc.
@@ -797,7 +797,7 @@Initialize the rectangular matrix with n_rows and n_cols and distributed using the grid process_grid.
The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of 

The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of 

Definition at line 217 of file scalapack.cc.
@@ -842,7 +842,7 @@Initialize the square matrix of size size and distributed using the grid process_grid.
The parameter block_size is used for the block-cyclic distribution of the matrix. An identical block size is used for the rows and columns of the matrix. In general, it is recommended to use powers of 

The parameter block_size is used for the block-cyclic distribution of the matrix. An identical block size is used for the rows and columns of the matrix. In general, it is recommended to use powers of 

Definition at line 291 of file scalapack.cc.
@@ -1105,9 +1105,9 @@Transposing assignment: 
The matrices 

The following alignment conditions have to be fulfilled: 

Transposing assignment: 
The matrices 

The following alignment conditions have to be fulfilled: 

Definition at line 981 of file scalapack.cc.
@@ -1155,13 +1155,13 @@











The matrices 

The matrices 

Definition at line 991 of file scalapack.cc.
@@ -1192,9 +1192,9 @@Matrix-addition: 
The matrices 

The following alignment conditions have to be fulfilled: 

Matrix-addition: 
The matrices 

The following alignment conditions have to be fulfilled: 

Definition at line 1047 of file scalapack.cc.
@@ -1225,9 +1225,9 @@Matrix-addition: 
The matrices 

The following alignment conditions have to be fulfilled: 

Matrix-addition: 
The matrices 

The following alignment conditions have to be fulfilled: 

Definition at line 1057 of file scalapack.cc.
@@ -1285,24 +1285,24 @@































It is assumed that 


The matrices 


It is assumed that 


The matrices 


Definition at line 1067 of file scalapack.cc.
@@ -1339,11 +1339,11 @@Matrix-matrix-multiplication.
-The optional parameter adding determines whether the result is stored in 

if (adding) 
else 
It is assumed that 


The following alignment conditions have to be fulfilled: 


The optional parameter adding determines whether the result is stored in 

if (adding) 
else 
It is assumed that 


The following alignment conditions have to be fulfilled: 


Definition at line 1184 of file scalapack.cc.
@@ -1380,11 +1380,11 @@Matrix-matrix-multiplication using transpose of 
The optional parameter adding determines whether the result is stored in 

if (adding) 
else 
It is assumed that 


The following alignment conditions have to be fulfilled: 


The optional parameter adding determines whether the result is stored in 

if (adding) 
else 
It is assumed that 


The following alignment conditions have to be fulfilled: 


Definition at line 1198 of file scalapack.cc.
@@ -1420,12 +1420,12 @@ /usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScalarFunctionFromFunctionObject.html differs (JavaScript source, ASCII text, with very long lines (4365)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScalarFunctionFromFunctionObject.html 2023-11-25 15:25:58.383254093 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classScalarFunctionFromFunctionObject.html 2023-11-25 15:25:58.383254093 +0100 @@ -257,7 +257,7 @@ We will denote this solution function described by this DoFHandler and vector object by 



We will denote this solution function described by this DoFHandler and vector object by 



then in order to evaluate the boundary conditions for this 2d problem, we would want to call VectorTools::interpolate_boundary_values() via
The question here is what to use as the Function object that can be passed as third argument. It needs to be a Function<2> object, i.e., it receives a 2d input point and is supposed to return the value at that point. What we want it to do is to just take the 

The question here is what to use as the Function object that can be passed as third argument. It needs to be a Function<2> object, i.e., it receives a 2d input point and is supposed to return the value at that point. What we want it to do is to just take the 

This class does its best to represent on the new mesh the finite element function that existed on the old mesh, but this may lead to situations where the function on the new mesh is no longer conforming at hanging nodes. To this end, consider a situation of a twice refined mesh that started with a single square cell (i.e., we now have 16 cells). Consider also that we coarsen 4 of the cells back to the first refinement level. In this case, we end up with a mesh that will look as follows if we were to use a 
This class does its best to represent on the new mesh the finite element function that existed on the old mesh, but this may lead to situations where the function on the new mesh is no longer conforming at hanging nodes. To this end, consider a situation of a twice refined mesh that started with a single square cell (i.e., we now have 16 cells). Consider also that we coarsen 4 of the cells back to the first refinement level. In this case, we end up with a mesh that will look as follows if we were to use a 
for a symmetric positive definite 
for a symmetric positive definite 
Definition at line 58 of file solver_bfgs.h.
starting from initial state x.
The function compute takes two arguments indicating the values of 




The function compute takes two arguments indicating the values of 




Connect a slot to perform a custom line-search.
-Given the value of function f, the current value of unknown x, the gradient g and the search direction p, return the size 

x, g and f accordingly.
Given the value of function f, the current value of unknown x, the gradient g and the search direction p, return the size 

x, g and f accordingly.
Solve the linear system 
Solve the linear system 
Flag to indicate whether the classical Fletcher–Reeves update formula for the parameter 

Flag to indicate whether the classical Fletcher–Reeves update formula for the parameter 

Definition at line 323 of file solver_cg.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFGMRES.html differs (JavaScript source, ASCII text, with very long lines (1094)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFGMRES.html 2023-11-25 15:25:58.449919405 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverFGMRES.html 2023-11-25 15:25:58.449919405 +0100 @@ -364,7 +364,7 @@Solve the linear system 
Solve the linear system 
FIRE (Fast Inertial Relaxation Engine) for minimization of (potentially non-linear) objective function 



FIRE (Fast Inertial Relaxation Engine) for minimization of (potentially non-linear) objective function 



FIRE is a damped dynamics method described in Structural Relaxation Made Simple by Bitzek et al. 2006, typically used to find stable equilibrium configurations of atomistic systems in computational material science. Starting from a given initial configuration of the atomistic system, the algorithm relies on inertia to obtain (nearest) configuration with least potential energy.
Notation:













Given initial values for 




















Given initial values for 




















Also see Energy-Minimization in Atomic-to-Continuum Scale-Bridging Methods by Eidel et al. 2011.
@@ -426,8 +426,8 @@Solve for x that minimizes 

Solve for x that minimizes 

This class implements a flexible variant of the conjugate gradient method, which is based on a different formula to compute 












Definition at line 354 of file solver_cg.h.
Solve the linear system 
Solve the linear system 
Flag to indicate whether the classical Fletcher–Reeves update formula for the parameter 

Flag to indicate whether the classical Fletcher–Reeves update formula for the parameter 

Definition at line 323 of file solver_cg.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverGMRES.html differs (JavaScript source, ASCII text, with very long lines (1094)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverGMRES.html 2023-11-25 15:25:58.499918386 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSolverGMRES.html 2023-11-25 15:25:58.499918386 +0100 @@ -446,7 +446,7 @@Solve the linear system 
Solve the linear system 
Solve the linear system 
Solve the linear system 
Solve the linear system 
Solve the linear system 
Solve the linear system 
Solve the linear system 
Solve 

Solve 

The solution will be returned in place of the right hand side vector.
| [in,out] | rhs_and_solution | A vector that contains the right hand side ![]() ![]() ![]() |
| [in] | transpose | If set to true, this function solves the linear ![]() ![]() |
| [in,out] | rhs_and_solution | A vector that contains the right hand side ![]() ![]() ![]() |
| [in] | transpose | If set to true, this function solves the linear ![]() ![]() |
Like the previous function, but for a complex-valued right hand side and solution vector.
-If the matrix that was previously factorized had complex-valued entries, then the rhs_and_solution vector will, upon return from this function, simply contain the solution of the linear system 

If the matrix that was previously factorized had complex-valued entries, then the rhs_and_solution vector will, upon return from this function, simply contain the solution of the linear system 

Definition at line 418 of file sparse_direct.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseILU.html differs (JavaScript source, ASCII text, with very long lines (670)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseILU.html 2023-11-25 15:25:58.596583085 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseILU.html 2023-11-25 15:25:58.596583085 +0100 @@ -2086,7 +2086,7 @@Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
This operation assumes that the underlying sparsity pattern represents a symmetric object. If this is not the case, then the result of this operation will not be a symmetric matrix, since it only explicitly symmetrizes by looping over the lower left triangular part for efficiency reasons; if there are entries in the upper right triangle, then these elements are missed in the symmetrization. Symmetrization of the sparsity pattern can be obtain by SparsityPattern::symmetrize().
Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation, and for the result to actually be a norm it also needs to be either real symmetric or complex hermitian.
The underlying template types of both this matrix and the given vector should either both be real or complex-valued, but not mixed, for this function to make sense.
Compute the matrix scalar product 
Compute the matrix scalar product 
Perform the matrix-matrix multiplication C = A * B, or, if an optional vector argument is given, C = A * diag(V) * B, where diag(V) defines a diagonal matrix with the vector entries.
This function assumes that the calling matrix A and the argument B have compatible sizes. By default, the output matrix C will be resized appropriately.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
When setting rebuild_sparsity_pattern to true (i.e., leaving it at the default value), it is important to realize that the matrix C passed as first argument still has to be initialized with a sparsity pattern (either at the time of creation of the SparseMatrix object, or via the SparseMatrix::reinit() function). This is because we could create a sparsity pattern inside the current function, and then associate C with it, but there would be no way to transfer ownership of this sparsity pattern to anyone once the current function finishes. Consequently, the function requires that C be already associated with a sparsity pattern object, and this object is then reset to fit the product of A and B.
As a consequence of this, however, it is also important to realize that the sparsity pattern of C is modified and that this would render invalid all other SparseMatrix objects that happen to also use that sparsity pattern object.
Return the 



Return the 



Return the 






Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
This operation assumes that the underlying sparsity pattern represents a symmetric object. If this is not the case, then the result of this operation will not be a symmetric matrix, since it only explicitly symmetrizes by looping over the lower left triangular part for efficiency reasons; if there are entries in the upper right triangle, then these elements are missed in the symmetrization. Symmetrization of the sparsity pattern can be obtain by SparsityPattern::symmetrize().
Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation, and for the result to actually be a norm it also needs to be either real symmetric or complex hermitian.
The underlying template types of both this matrix and the given vector should either both be real or complex-valued, but not mixed, for this function to make sense.
Compute the matrix scalar product 
Compute the matrix scalar product 
Perform the matrix-matrix multiplication C = A * B, or, if an optional vector argument is given, C = A * diag(V) * B, where diag(V) defines a diagonal matrix with the vector entries.
This function assumes that the calling matrix A and the argument B have compatible sizes. By default, the output matrix C will be resized appropriately.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
When setting rebuild_sparsity_pattern to true (i.e., leaving it at the default value), it is important to realize that the matrix C passed as first argument still has to be initialized with a sparsity pattern (either at the time of creation of the SparseMatrix object, or via the SparseMatrix::reinit() function). This is because we could create a sparsity pattern inside the current function, and then associate C with it, but there would be no way to transfer ownership of this sparsity pattern to anyone once the current function finishes. Consequently, the function requires that C be already associated with a sparsity pattern object, and this object is then reset to fit the product of A and B.
As a consequence of this, however, it is also important to realize that the sparsity pattern of C is modified and that this would render invalid all other SparseMatrix objects that happen to also use that sparsity pattern object.
Return the 



Return the 



Return the 






Implementation of the Modified Incomplete Cholesky (MIC(0)) preconditioner for symmetric matrices. This class conforms to the state and usage specification in SparseLUDecomposition.
Let a symmetric, positive-definite, sparse matrix 








Let a symmetric, positive-definite, sparse matrix 








Definition at line 46 of file sparse_mic.h.
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
This operation assumes that the underlying sparsity pattern represents a symmetric object. If this is not the case, then the result of this operation will not be a symmetric matrix, since it only explicitly symmetrizes by looping over the lower left triangular part for efficiency reasons; if there are entries in the upper right triangle, then these elements are missed in the symmetrization. Symmetrization of the sparsity pattern can be obtain by SparsityPattern::symmetrize().
Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation, and for the result to actually be a norm it also needs to be either real symmetric or complex hermitian.
The underlying template types of both this matrix and the given vector should either both be real or complex-valued, but not mixed, for this function to make sense.
Compute the matrix scalar product 
Compute the matrix scalar product 
Perform the matrix-matrix multiplication C = A * B, or, if an optional vector argument is given, C = A * diag(V) * B, where diag(V) defines a diagonal matrix with the vector entries.
This function assumes that the calling matrix A and the argument B have compatible sizes. By default, the output matrix C will be resized appropriately.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
When setting rebuild_sparsity_pattern to true (i.e., leaving it at the default value), it is important to realize that the matrix C passed as first argument still has to be initialized with a sparsity pattern (either at the time of creation of the SparseMatrix object, or via the SparseMatrix::reinit() function). This is because we could create a sparsity pattern inside the current function, and then associate C with it, but there would be no way to transfer ownership of this sparsity pattern to anyone once the current function finishes. Consequently, the function requires that C be already associated with a sparsity pattern object, and this object is then reset to fit the product of A and B.
As a consequence of this, however, it is also important to realize that the sparsity pattern of C is modified and that this would render invalid all other SparseMatrix objects that happen to also use that sparsity pattern object.
Return the 



Return the 



Return the 






Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
Symmetrize the matrix by forming the mean value between the existing matrix and its transpose, 
This operation assumes that the underlying sparsity pattern represents a symmetric object. If this is not the case, then the result of this operation will not be a symmetric matrix, since it only explicitly symmetrizes by looping over the lower left triangular part for efficiency reasons; if there are entries in the upper right triangle, then these elements are missed in the symmetrization. Symmetrization of the sparsity pattern can be obtain by SparsityPattern::symmetrize().
Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation, and for the result to actually be a norm it also needs to be either real symmetric or complex hermitian.
The underlying template types of both this matrix and the given vector should either both be real or complex-valued, but not mixed, for this function to make sense.
Compute the matrix scalar product 
Compute the matrix scalar product 
Perform the matrix-matrix multiplication C = A * B, or, if an optional vector argument is given, C = A * diag(V) * B, where diag(V) defines a diagonal matrix with the vector entries.
This function assumes that the calling matrix A and the argument B have compatible sizes. By default, the output matrix C will be resized appropriately.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
By default, i.e., if the optional argument rebuild_sparsity_pattern is true, the sparsity pattern of the matrix C will be changed to ensure that all entries that result from the product 

false as last argument. In this case, the rebuilding of the sparsity pattern is bypassed.
When setting rebuild_sparsity_pattern to true (i.e., leaving it at the default value), it is important to realize that the matrix C passed as first argument still has to be initialized with a sparsity pattern (either at the time of creation of the SparseMatrix object, or via the SparseMatrix::reinit() function). This is because we could create a sparsity pattern inside the current function, and then associate C with it, but there would be no way to transfer ownership of this sparsity pattern to anyone once the current function finishes. Consequently, the function requires that C be already associated with a sparsity pattern object, and this object is then reset to fit the product of A and B.
As a consequence of this, however, it is also important to realize that the sparsity pattern of C is modified and that this would render invalid all other SparseMatrix objects that happen to also use that sparsity pattern object.
Return the 



Return the 



Return the 






Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

vmult but takes the transposed matrix.
Matrix-vector multiplication: let 

vmult but takes the transposed matrix.
Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


vmult_add but takes the transposed matrix.
Adding Matrix-vector multiplication. Add 


vmult_add but takes the transposed matrix.
Apply SOR preconditioning matrix to src. The result of this method is 
Apply SOR preconditioning matrix to src. The result of this method is 
Apply transpose SOR preconditioning matrix to src. The result of this method is 
Apply transpose SOR preconditioning matrix to src. The result of this method is 
Add the matrix A conjugated by B, that is, 
transpose is true, compute 
Add the matrix A conjugated by B, that is, 
transpose is true, compute 
This function requires that B has a const_iterator traversing all matrix entries and that A has a function el(i,j) for access to a specific entry.
Definition at line 1461 of file sparse_matrix_ez.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixIterators_1_1Iterator.html differs (JavaScript source, ASCII text, with very long lines (1282)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixIterators_1_1Iterator.html 2023-11-25 15:25:58.733246970 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparseMatrixIterators_1_1Iterator.html 2023-11-25 15:25:58.733246970 +0100 @@ -141,7 +141,7 @@The typical use for these iterators is to iterate over the elements of a sparse matrix or over the elements of individual rows. Note that there is no guarantee that the elements of a row are actually traversed in an order in which columns monotonically increase. See the documentation of the SparsityPattern class for more information.
The first template argument denotes the underlying numeric type, the second the constness of the matrix.
Since there is a specialization of this class for Constness=false, this class is for iterators to constant matrices.




Definition at line 347 of file sparse_matrix.h.
Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 





Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 





Definition at line 674 of file sparsity_pattern.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPatternIterators_1_1Iterator.html differs (JavaScript source, ASCII text, with very long lines (1211)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPatternIterators_1_1Iterator.html 2023-11-25 15:25:58.769912893 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSparsityPatternIterators_1_1Iterator.html 2023-11-25 15:25:58.769912893 +0100 @@ -158,7 +158,7 @@An iterator class for walking over the elements of a sparsity pattern.
The typical use for these iterators is to iterate over the elements of a sparsity pattern (or, since they also serve as the basis for iterating over the elements of an associated matrix, over the elements of a sparse matrix), or over the elements of individual rows. There is no guarantee that the elements of a row are actually traversed in an order in which column numbers monotonically increase. See the documentation of the SparsityPattern class for more information.
-



Definition at line 280 of file sparsity_pattern.h.
Manifold description for a spherical space coordinate system.
You can use this Manifold object to describe any sphere, circle, hypersphere or hyperdisc in two or three dimensions. This manifold can be used as a co-dimension one manifold descriptor of a spherical surface embedded in a higher dimensional space, or as a co-dimension zero manifold descriptor for a body with positive volume, provided that the center of the spherical space is excluded from the domain. An example for the use of this function would be in the description of a hyper-shell or hyper-ball geometry, for example after creating a coarse mesh using GridGenerator::hyper_ball(). (However, it is worth mentioning that generating a good mesh for a disk or ball is complicated and requires addition steps. See the "Possibilities for extensions" section of step-6 for an extensive discussion of how one would construct such meshes and what one needs to do for it.)
The two template arguments match the meaning of the two template arguments in Triangulation<dim, spacedim>, however this Manifold can be used to describe both thin and thick objects, and the behavior is identical when dim <= spacedim, i.e., the functionality of SphericalManifold<2,3> is identical to SphericalManifold<3,3>.
-While PolarManifold reflects the usual notion of polar coordinates, it may not be suitable for domains that contain either the north or south poles. Consider for instance the pair of points 


While PolarManifold reflects the usual notion of polar coordinates, it may not be suitable for domains that contain either the north or south poles. Consider for instance the pair of points 


These two points would be connected (using a PolarManifold) by the curve
-![\begin{align*}
s: [0,1] & \rightarrow & \mathbb S^3 \\
t & \mapsto & (1,\pi/3,0) + (0,0,t\pi)
-\end{align*}](form_1388.png)
This curve is not a geodesic on the sphere, and it is not how we would connect those two points. A better curve, would be the one passing through the North pole:
-![\[
s(t) = x_1 \cos(\alpha(t)) + \kappa \times x_1 \sin(\alpha(t)) +
\kappa ( \kappa \cdot x_1) (1-\cos(\alpha(t))).
-\]](form_1389.png)
where 

![$t\in[0,1]$](form_1392.png)
where 

![$t\in[0,1]$](form_1453.png)
In particular, this class implements a Manifold that joins any two points in space by first projecting them onto the surface of a sphere with unit radius, then connecting them with a geodesic, and finally rescaling the final radius so that the resulting one is the weighted average of the starting radii. This Manifold is identical to PolarManifold in dimension two, while for dimension three it returns points that are more uniformly distributed on the sphere, and it is invariant with respect to rotations of the coordinate system, therefore avoiding the problems that PolarManifold has at the poles. Notice, in particular, that computing tangent vectors at the poles with a PolarManifold is not well defined, while it is perfectly fine with this class.
For mathematical reasons, it is impossible to construct a unique map of a sphere using only geodesic curves, and therefore, using this class with MappingManifold is discouraged. If you use this Manifold to describe the geometry of a sphere, you should use MappingQ as the underlying mapping, and not MappingManifold.
This Manifold can be used only on geometries where a ball with finite radius is removed from the center. Indeed, the center is a singular point for this manifold, and if you try to connect two points across the center, they would travel on spherical coordinates, avoiding the center.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSymmetricTensor.html differs (JavaScript source, ASCII text, with very long lines (743)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSymmetricTensor.html 2023-11-25 15:25:58.823245141 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classSymmetricTensor.html 2023-11-25 15:25:58.823245141 +0100 @@ -299,7 +299,7 @@Provide a class that stores symmetric tensors of rank 2,4,... efficiently, i.e. only store those off-diagonal elements of the full tensor that are not redundant. For example, for symmetric 






dim-1.
Provide a class that stores symmetric tensors of rank 2,4,... efficiently, i.e. only store those off-diagonal elements of the full tensor that are not redundant. For example, for symmetric 






dim-1.
Using this class for symmetric tensors of rank 2 has advantages over matrices in many cases since the dimension is known to the compiler as well as the location of the data. It is therefore possible to produce far more efficient code than for matrices with runtime-dependent dimension. It is also more efficient than using the more general Tensor class, since fewer elements are stored, and the class automatically makes sure that the tensor represents a symmetric object.
For tensors of higher rank, the savings in storage are even higher. For example for the 


While the definition of a symmetric rank-2 tensor is obvious, tensors of rank 4 are considered symmetric if they are operators mapping symmetric rank-2 tensors onto symmetric rank-2 tensors. This so-called minor symmetry of the rank 4 tensor requires that for every set of four indices This operator assigns a scalar to a tensor. To avoid confusion with what exactly it means to assign a scalar value to a tensor, zero is the only value allowed for This operator assigns a scalar to a tensor. To avoid confusion with what exactly it means to assign a scalar value to a tensor, zero is the only value allowed for 
-
d, allowing the intuitive notation 
d, allowing the intuitive notation 
Double contraction product between the present symmetric tensor and a tensor of rank 2. For example, if the present object is the symmetric rank-2 tensor 


If the present object is a rank-4 tensor such as 


Double contraction product between the present symmetric tensor and a tensor of rank 2. For example, if the present object is the symmetric rank-2 tensor 


If the present object is a rank-4 tensor such as 


Note that the multiplication operator for symmetric tensors is defined to be a double contraction over two indices, while it is defined as a single contraction over only one index for regular Tensor objects. For symmetric tensors it therefore acts in a way that is commonly denoted by a "colon multiplication" in the mathematical literature (the two dots of the colon suggesting that it is a contraction over two indices), which corresponds to a scalar product between tensors.
It is worth pointing out that this definition of operator* between symmetric tensors is different to how the (in general non-symmetric) Tensor class defines operator*, namely as the single-contraction product over the last index of the first operand and the first index of the second operand. For the double contraction of Tensor objects, you will need to use the double_contract() function.
To maintain at least a modicum of resemblance between the interfaces of Tensor and SymmetricTensor, there are also global functions double_contract() for symmetric tensors that then do the same work as this operator. However, rather than returning the result as a return value, they write it into the first argument to the function in the same way as the corresponding functions for the Tensor class do things.
@@ -1232,7 +1232,7 @@The opposite of the previous function: given an index 


The opposite of the previous function: given an index 


Return the fourth-order symmetric identity tensor 

+
Return the fourth-order symmetric identity tensor 

![\[
\mathbb S : \mathbf A = \mathbf A
\]](form_777.png)
Compute the second invariant of a tensor of rank 2. The second invariant of a tensor 

![$I_2 (\mathbf A) = II(\mathbf A) = \frac 12
\left[ (\text{tr} \mathbf A)^2 - \text{tr} (\mathbf{A}^2) \right]$](form_809.png)
For the kind of arguments to this function, i.e., a rank-2 tensor of size 1, the result is simply zero.
@@ -1956,11 +1956,11 @@Compute the second invariant of a tensor of rank 2. The second invariant of a tensor 

![$I_2 (\mathbf A) = II(\mathbf A) = \frac 12
\left[ (\text{tr} \mathbf A)^2 - \text{tr} (\mathbf{A}^2) \right]$](form_809.png)
For the kind of arguments to this function, i.e., a symmetric rank-2 tensor of size 2, the result is (counting indices starting at one) ![$I_2(\mathbf A) = II(\mathbf A) = \frac 12
\left[ (A_{11} + A_{22})^2 - (A_{11}^2+2 A_{12}^2+ A_{22}^2) \right]
- = A_{11} A_{22} - A_{12}^2$](form_810.png)




Definition at line 2917 of file symmetric_tensor.h.
@@ -1990,7 +1990,7 @@Compute the second invariant of a tensor of rank 2. The second invariant of a tensor 

![$I_2 (\mathbf A) = II(\mathbf A) = \frac 12
\left[ (\text{tr} \mathbf A)^2 - \text{tr} (\mathbf{A}^2) \right]$](form_809.png)
Definition at line 2934 of file symmetric_tensor.h.
@@ -2049,8 +2049,8 @@Return the eigenvalues of a symmetric 
For 


For 


![$\lambda_1, \lambda_2 = \frac{1}{2} \left[ \text{tr} \mathbf{T} \pm
\sqrt{(\text{tr} \mathbf{T})^2 - 4 \det \mathbf{T}} \right]$](form_813.png)

Compute the scalar product 

A*B which uses SymmetricTensor::operator*().
Compute the scalar product 

A*B which uses SymmetricTensor::operator*().
Definition at line 3737 of file symmetric_tensor.h.
@@ -2701,7 +2701,7 @@Compute the scalar product 

operator* for this operation since the product between two tensors is usually assumed to be the contraction over the last index of the first tensor and the first index of the second tensor. For example, if B is a Tensor, calling A*B (instead of scalar_product(A,B)) provides 
Compute the scalar product 

operator* for this operation since the product between two tensors is usually assumed to be the contraction over the last index of the first tensor and the first index of the second tensor. For example, if B is a Tensor, calling A*B (instead of scalar_product(A,B)) provides 
Definition at line 3759 of file symmetric_tensor.h.
@@ -2740,7 +2740,7 @@Compute the scalar product 

operator* for this operation since the product between two tensors is usually assumed to be the contraction over the last index of the first tensor and the first index of the second tensor. For example, if A is a Tensor, calling A*B (instead of scalar_product(A,B)) provides 
Compute the scalar product 

operator* for this operation since the product between two tensors is usually assumed to be the contraction over the last index of the first tensor and the first index of the second tensor. For example, if A is a Tensor, calling A*B (instead of scalar_product(A,B)) provides 
Definition at line 3786 of file symmetric_tensor.h.
@@ -3127,13 +3127,13 @@The dot product (single contraction) for tensors: Return a tensor of rank 
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
-
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
+![\[
\text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k}
\text{left}_{i_1,\ldots,i_{r1}, k}
\text{right}_{k, j_1,\ldots,j_{r2}}
-\]](form_833.png)
The dot product (single contraction) for tensors: Return a tensor of rank 
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
-
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
+![\[
\text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k}
\text{left}_{i_1,\ldots,i_{r1}, k}
\text{right}_{k, j_1,\ldots,j_{r2}}
-\]](form_833.png)
An integer denoting the number of independent components that fully describe a symmetric tensor. In 

An integer denoting the number of independent components that fully describe a symmetric tensor. In 

Definition at line 743 of file symmetric_tensor.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableBase.html differs (JavaScript source, ASCII text, with very long lines (933)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableBase.html 2023-11-25 15:25:58.843244734 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTableBase.html 2023-11-25 15:25:58.843244734 +0100 @@ -231,7 +231,7 @@In some way, this class is similar to the Tensor class, in that it templatizes on the number of dimensions. However, there are two major differences. The first is that the Tensor class stores only numeric values (as doubles), while the Table class stores arbitrary objects. The second is that the Tensor class has fixed sizes in each dimension, also given as a template argument, while this class can handle arbitrary and different sizes in each dimension.
This has two consequences. First, since the size is not known at compile time, it has to do explicit memory allocation. Second, the layout of individual elements is not known at compile time, so access is slower than for the Tensor class where the number of elements are their location is known at compile time and the compiler can optimize with this knowledge (for example when unrolling loops). On the other hand, this class is of course more flexible, for example when you want a two-dimensional table with the number of rows equal to the number of degrees of freedom on a cell, and the number of columns equal to the number of quadrature points. Both numbers may only be known at run-time, so a flexible table is needed here. Furthermore, you may want to store, say, the gradients of shape functions, so the data type is not a single scalar value, but a tensor itself.
The Table classes (derived from this class) are frequently used to store large data tables. A modest example is given in step-53 where we store a 
(latitude, longitude, depth) points) can easily run into hundreds of megabytes or more. These tables are then often provided to classes such as InterpolatedTensorProductGridData or InterpolatedUniformGridData.
The Table classes (derived from this class) are frequently used to store large data tables. A modest example is given in step-53 where we store a 
(latitude, longitude, depth) points) can easily run into hundreds of megabytes or more. These tables are then often provided to classes such as InterpolatedTensorProductGridData or InterpolatedUniformGridData.
If you need to load such tables on single-processor (or multi-threaded) jobs, then there is nothing you can do about the size of these tables: The table just has to fit into memory. But, if your program is parallelized via MPI, then a typical first implementation would create a table object on every process and fill it on every MPI process by reading the data from a file. This is inefficient from two perspectives:
Two (or more) columns may be merged into a "supercolumn" by twice (or multiple) calling add_column_to_supercolumn(), see there. Additionally there is a function to set for each column the precision of the output of numbers, and there are several functions to prescribe the format and the captions the columns are written with in tex mode.
A detailed explanation of this class is also given in the step-13 tutorial program.
This is a simple example demonstrating the usage of this class. The first column includes the numbers 


squares and roots. Additionally the first column is aligned to the right (the default was centered) and the precision of the square roots are set to be 6 (instead of 4 as default).
This is a simple example demonstrating the usage of this class. The first column includes the numbers 


squares and roots. Additionally the first column is aligned to the right (the default was centered) and the precision of the square roots are set to be 6 (instead of 4 as default).
When generating output, TableHandler expects that all columns have the exact same number of elements in it so that the result is in fact a table. This assumes that in each of the iterations (time steps, nonlinear iterations, etc) you fill every single column. On the other hand, this may not always be what you want to do. For example, it could be that the function that computes the nonlinear residual is only called every few time steps; or, a function computing statistics of the mesh is only called whenever the mesh is in fact refined. In these cases, the add_value() function will be called less often for some columns and the column would therefore have fewer elements; furthermore, these elements would not be aligned with the rows that contain the other data elements that were produced during this iteration. An entirely different scenario is that the table is filled and at a later time we use the data in there to compute the elements of other rows; the ConvergenceTable class does something like this.
To support both scenarios, the TableHandler class has a property called auto-fill mode. By default, auto-fill mode is off, but it can be enabled by calling set_auto_fill_mode(). If auto-fill mode is enabled we use the following algorithm:
add_value(key, value), we count the number of elements in the column corresponding to key. Let's call this number 



T() to this column. Here, T is the data type of the given value. For example, if T is a numeric type, then T() is the number zero; if T is std::string, then T() is the empty string "".add_value(key, value), we count the number of elements in the column corresponding to key. Let's call this number 



T() to this column. Here, T is the data type of the given value. For example, if T is a numeric type, then T() is the number zero; if T is std::string, then T() is the empty string "".Padding the column with default elements makes sure that after the addition the column has as many entries as the longest other column. In other words, if we have skipped previous invocations of add_value() for a given key, then the padding will enter default values into this column.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensor.html differs (JavaScript source, ASCII text, with very long lines (1800)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensor.html 2023-11-25 15:25:58.883243920 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensor.html 2023-11-25 15:25:58.883243920 +0100 @@ -265,13 +265,13 @@ class Tensor< rank_, dim, Number >A general tensor class with an arbitrary rank, i.e. with an arbitrary number of indices. The Tensor class provides an indexing operator and a bit of infrastructure, but most functionality is recursively handed down to tensors of rank 1 or put into external templated functions, e.g. the contract family.
The rank of a tensor specifies which types of physical quantities it can represent:


dim components and it can represent vector quantities such as velocity, displacement, electric field, etc. They can also describe the gradient of a scalar field. The notation used for rank-1 tensors is bold-faced lower-case Latin letters e.g. 



dim-1. dim components and it can represent vector quantities such as velocity, displacement, electric field, etc. They can also describe the gradient of a scalar field. The notation used for rank-1 tensors is bold-faced lower-case Latin letters e.g. 



dim-1.













rank. For rank-4 tensors, a symmetric variant called SymmetricTensor<4,dim> exists. 
rank. For rank-4 tensors, a symmetric variant called SymmetricTensor<4,dim> exists.
Using this tensor class for objects of rank 2 has advantages over matrices in many cases since the dimension is known to the compiler as well as the location of the data. It is therefore possible to produce far more efficient code than for matrices with runtime-dependent dimension. It also makes the code easier to read because of the semantic difference between a tensor (an object that relates to a coordinate system and has transformation properties with regard to coordinate rotations and transforms) and matrices (which we consider as operators on arbitrary vector spaces related to linear algebra things).
Return an unrolled index in the range ![$[0,\text{dim}^{\text{rank}}-1]$](form_865.png)
Return an unrolled index in the range ![$[0,\text{dim}^{\text{rank}}-1]$](form_862.png)
Opposite of component_to_unrolled_index: For an index in the range ![$[0, \text{dim}^{\text{rank}}-1]$](form_866.png)
Opposite of component_to_unrolled_index: For an index in the range ![$[0, \text{dim}^{\text{rank}}-1]$](form_863.png)
Entrywise multiplication of two tensor objects of general rank.
This multiplication is also called "Hadamard-product" (c.f. https://en.wikipedia.org/wiki/Hadamard_product_(matrices)), and generates a new tensor of size <rank, dim>:
-![\[
\text{result}_{i, j}
= \text{left}_{i, j}\circ
\text{right}_{i, j}
-\]](form_860.png)
The dot product (single contraction) for tensors. This function return a tensor of rank 
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
-
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
+![\[
\text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k}
\text{left}_{i_1,\ldots,i_{r1}, k}
\text{right}_{k, j_1,\ldots,j_{r2}}
-\]](form_833.png)
operator*() performs a double contraction. The origin of the difference in how operator*() is implemented between Tensor and SymmetricTensor is that for the former, the product between two Tensor objects of same rank and dimension results in another Tensor object – that it, operator*() corresponds to the multiplicative group action within the group of tensors. On the other hand, there is no corresponding multiplicative group action with the set of symmetric tensors because, in general, the product of two symmetric tensors is a nonsymmetric tensor. As a consequence, for a mathematician, it is clear that operator*() for symmetric tensors must have a different meaning: namely the dot or scalar product that maps two symmetric tensors of rank 2 to a scalar. This corresponds to the double-dot (colon) operator whose meaning is then extended to the product of any two even-ranked symmetric tensors.rank_1==rank_2==1, then a scalar number is returned as an unwrapped number type. Return the 

rank_1==rank_2==1, then a scalar number is returned as an unwrapped number type. Return the 

Return the 

Return the 

Definition at line 3061 of file tensor.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductManifold.html differs (JavaScript source, ASCII text, with very long lines (897)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductManifold.html 2023-11-25 15:25:58.906576776 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTensorProductManifold.html 2023-11-25 15:25:58.906576776 +0100 @@ -231,7 +231,7 @@Tensor product manifold of two ChartManifolds.
-This manifold will combine the ChartManifolds A and B given in the constructor to form a new ChartManifold by building the tensor product 
spacedim_A dimensions in the real space and the first chartdim_A dimensions of the chart will be given by manifold A, while the remaining coordinates are given by B. The manifold is to be used by a Triangulation<dim, space_dim_A+space_dim_B>.
This manifold will combine the ChartManifolds A and B given in the constructor to form a new ChartManifold by building the tensor product 
spacedim_A dimensions in the real space and the first chartdim_A dimensions of the chart will be given by manifold A, while the remaining coordinates are given by B. The manifold is to be used by a Triangulation<dim, space_dim_A+space_dim_B>.
An example usage would be the combination of a SphericalManifold with space dimension 2 and a FlatManifold with space dimension 1 to form a cylindrical manifold.
pull_back(), push_forward(), and push_forward_gradient() are implemented by splitting the input argument into inputs for A and B according to the given dimensions and applying the corresponding operations before concatenating the result.
dim_A and dim_B are not used.Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -674,11 +674,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
A class that represents a space of tensor product polynomials, augmented by 

![$\varphi_j(\mathbf x)
= 2^{\text{degree}-1}\left(x_j-frac 12\right)^{\text{degree}-1}
-\left[\prod_{i=0}^{dim-1}(x_i(1-x_i))\right]$](form_867.png)

degree is one, then the first factor disappears and one receives the usual bubble function centered at the mid-point of the cell.

degree is one, then the first factor disappears and one receives the usual bubble function centered at the mid-point of the cell.
This class inherits most of its functionality from TensorProductPolynomials. The bubble enrichments are added for the last index.
Definition at line 53 of file tensor_product_polynomials_bubbles.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTorusManifold.html differs (JavaScript source, ASCII text, with very long lines (881)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTorusManifold.html 2023-11-25 15:25:58.956575759 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTorusManifold.html 2023-11-25 15:25:58.956575759 +0100 @@ -230,7 +230,7 @@Manifold description for the surface of a Torus in three dimensions. The Torus is assumed to be in the x-z plane. The reference coordinate system is given by the angle 


Manifold description for the surface of a Torus in three dimensions. The Torus is assumed to be in the x-z plane. The reference coordinate system is given by the angle 


This class was developed to be used in conjunction with GridGenerator::torus.
Definition at line 787 of file manifold_lib.h.
@@ -670,7 +670,7 @@Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

Given a point in the chartdim dimensional Euclidean space, this method returns the derivatives of the function 

This function is used in the computations required by the get_tangent_vector() function. Since not all users of the Manifold class interface will require calling that function, the current function is implemented but will trigger an exception whenever called. This allows derived classes to avoid implementing the push_forward_gradient function if this functionality is not needed in the user program.
Refer to the general documentation of this class for more information.
@@ -709,24 +709,24 @@Return a vector that, at 

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
-

For the current class, we assume that this geodesic is the image under the push_forward() operation of a straight line of the pre-images of x1 and x2 (where pre-images are computed by pulling back the locations x1 and x2). In other words, if these preimages are 
+![\begin{align*}
\zeta(t) &= \xi_1 + t (\xi_2-\xi_1)
\\ &= F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]
-\end{align*}](form_1443.png)
In image space, i.e., in the space in which we operate, this leads to the curve
-![\begin{align*}
\mathbf s(t) &= F(\zeta(t))
\\ &= F(\xi_1 + t (\xi_2-\xi_1))
\\ &= F\left(F^{-1}(\mathbf x_1) + t\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right]\right).
-\end{align*}](form_1444.png)
What the current function is supposed to return is 
-
+![\begin{align*}
\mathbf s'(0) &=
\frac{d}{dt}\left. F\left(F^{-1}(\mathbf x_1)
+ t\left[F^{-1}(\mathbf x_2)
@@ -735,11 +735,11 @@
\\ &= \nabla_\xi F\left(F^{-1}(\mathbf x_1)\right)
\left[F^{-1}(\mathbf x_2)
-F^{-1}(\mathbf x_1)\right].
-\end{align*}](form_1445.png)
This formula may then have to be slightly modified by considering any periodicity that was assumed in the call to the constructor.
-Thus, the computation of tangent vectors also requires the implementation of derivatives 


Thus, the computation of tangent vectors also requires the implementation of derivatives 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
Return a vector that, at 


While tangent vectors are often normalized to unit length, the vectors returned by this function are normalized as described in the introduction of this class. Specifically, if 






The default implementation of this function approximates 


Return a vector that, at 


While tangent vectors are often normalized to unit length, the vectors returned by this function are normalized as described in the introduction of this class. Specifically, if 






The default implementation of this function approximates 


| x1 | The first point that describes the geodesic, and the one at which the "direction" is to be evaluated. |
A class that provides access to objects in a triangulation such as its vertices, sub-objects, children, geometric information, etc. This class represents objects of dimension structdim (i.e. 1 for lines, 2 for quads, 3 for hexes) in a triangulation of dimensionality dim (i.e. 1 for a triangulation of lines, 2 for a triangulation of quads, and 3 for a triangulation of hexes) that is embedded in a space of dimensionality spacedim (for spacedim==dim the triangulation represents a domain in 
spacedim>dim the triangulation is of a manifold embedded in a higher dimensional space).
A class that provides access to objects in a triangulation such as its vertices, sub-objects, children, geometric information, etc. This class represents objects of dimension structdim (i.e. 1 for lines, 2 for quads, 3 for hexes) in a triangulation of dimensionality dim (i.e. 1 for a triangulation of lines, 2 for a triangulation of quads, and 3 for a triangulation of hexes) that is embedded in a space of dimensionality spacedim (for spacedim==dim the triangulation represents a domain in 
spacedim>dim the triangulation is of a manifold embedded in a higher dimensional space).
There is a specialization of this class for the case where structdim equals zero, i.e., for vertices of a triangulation.
Definition at line 757 of file tria_accessor.h.
@@ -1715,8 +1715,8 @@This function computes a fast approximate transformation from the real to the unit cell by inversion of an affine approximation of the 

The affine approximation of the unit to real cell mapping is found by a least squares fit of an affine function to the 
This function computes a fast approximate transformation from the real to the unit cell by inversion of an affine approximation of the 

The affine approximation of the unit to real cell mapping is found by a least squares fit of an affine function to the 
For exact transformations to the unit cell, use Mapping::transform_real_to_unit_cell().
Center of the object. The center of an object is defined to be the average of the locations of the vertices, which is also where a 
respect_manifold. Manifolds would then typically pull back the coordinates of the vertices to a reference domain (not necessarily the reference cell), compute the average there, and then push forward the coordinates of the averaged point to the physical space again; the resulting point is guaranteed to lie within the manifold, even if the manifold is curved.
Center of the object. The center of an object is defined to be the average of the locations of the vertices, which is also where a 
respect_manifold. Manifolds would then typically pull back the coordinates of the vertices to a reference domain (not necessarily the reference cell), compute the average there, and then push forward the coordinates of the averaged point to the physical space again; the resulting point is guaranteed to lie within the manifold, even if the manifold is curved.
When the object uses a different manifold description as its surrounding, like when part of the bounding objects of this TriaAccessor use a non-flat manifold description but the object itself is flat, the result given by the TriaAccessor::center() function may not be accurate enough, even when parameter respect_manifold is set to true. If you find this to be case, than you can further refine the computation of the center by setting to true the second additional parameter interpolate_from_surrounding. This computes the location of the center by a so-called transfinite interpolation from the center of all the bounding objects. For a 2d object, it puts a weight of 1/2 on each of the four surrounding lines and a weight -1/4 on the four vertices. This corresponds to a linear interpolation between the descriptions of the four faces, subtracting the contribution of the vertices that is added twice when coming through both lines adjacent to the vertex. In 3d, the weights for faces are 1/2, the weights for lines are -1/4, and the weights for vertices are 1/8. For further information, also confer to the TransfiniteInterpolationManifold class that is able to not only apply this beneficial description to a single cell but all children of a coarse cell.
Definition at line 1787 of file tria_accessor.cc.
@@ -1769,7 +1769,7 @@Return the barycenter (also called centroid) of the object. The barycenter for an object 




+
Return the barycenter (also called centroid) of the object. The barycenter for an object 




![\[
\mathbf x_K = \frac{1}{|K|} \int_K \mathbf x \; \textrm{d}x
\]](form_1482.png)
This function assumes that 


This function assumes that 


Definition at line 1597 of file tria_accessor.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_011_00_01spacedim_01_4.html differs (JavaScript source, ASCII text, with very long lines (839)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_011_00_01spacedim_01_4.html 2023-11-25 15:25:59.036574133 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_011_00_01spacedim_01_4.html 2023-11-25 15:25:59.036574133 +0100 @@ -279,7 +279,7 @@This class is a specialization of TriaAccessor<structdim, dim, spacedim> for the case that structdim is zero and dim is one. This class represents vertices in a one-dimensional triangulation that is embedded in a space of dimensionality spacedim (for spacedim==dim==1 the triangulation represents a domain in 
spacedim>dim==1 the triangulation is of a manifold embedded in a higher dimensional space).
This class is a specialization of TriaAccessor<structdim, dim, spacedim> for the case that structdim is zero and dim is one. This class represents vertices in a one-dimensional triangulation that is embedded in a space of dimensionality spacedim (for spacedim==dim==1 the triangulation represents a domain in 
spacedim>dim==1 the triangulation is of a manifold embedded in a higher dimensional space).
The current specialization of the TriaAccessor<0,dim,spacedim> class for vertices of a one-dimensional triangulation exists since in the dim == 1 case vertices are also faces.
Definition at line 2328 of file tria_accessor.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_01dim_00_01spacedim_01_4.html differs (JavaScript source, ASCII text, with very long lines (903)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_01dim_00_01spacedim_01_4.html 2023-11-25 15:25:59.053240458 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriaAccessor_3_010_00_01dim_00_01spacedim_01_4.html 2023-11-25 15:25:59.053240458 +0100 @@ -229,7 +229,7 @@This class is a specialization of TriaAccessor<structdim, dim, spacedim> for the case that structdim is zero. This class represents vertices in a triangulation of dimensionality dim (i.e. 1 for a triangulation of lines, 2 for a triangulation of quads, and 3 for a triangulation of hexes) that is embedded in a space of dimensionality spacedim (for spacedim==dim the triangulation represents a domain in 
spacedim>dim the triangulation is of a manifold embedded in a higher dimensional space).
This class is a specialization of TriaAccessor<structdim, dim, spacedim> for the case that structdim is zero. This class represents vertices in a triangulation of dimensionality dim (i.e. 1 for a triangulation of lines, 2 for a triangulation of quads, and 3 for a triangulation of hexes) that is embedded in a space of dimensionality spacedim (for spacedim==dim the triangulation represents a domain in 
spacedim>dim the triangulation is of a manifold embedded in a higher dimensional space).
There is a further specialization of this class for the case that dim equals one, i.e., for vertices of a one-dimensional triangulation, since in that case vertices are also faces.
Definition at line 1910 of file tria_accessor.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriangulation.html differs (JavaScript source, ASCII text, with very long lines (729)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriangulation.html 2023-11-25 15:25:59.109905972 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTriangulation.html 2023-11-25 15:25:59.126572301 +0100 @@ -1951,7 +1951,7 @@Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 444 of file trilinos_block_sparse_matrix.h.
@@ -1082,7 +1082,7 @@Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Definition at line 457 of file trilinos_block_sparse_matrix.h.
@@ -2184,7 +2184,7 @@Adding Matrix-vector multiplication. Add 


Adding Matrix-vector multiplication. Add 


Compute the matrix scalar product 
Compute the matrix scalar product 
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Matrix-vector multiplication: let 

Matrix-vector multiplication: let 

Due to problems with deriving template arguments between the block and non-block versions of the vmult/Tvmult functions, the actual functions are implemented in derived classes, with implementations forwarding the calls to the implementations provided here under a unique name for which template arguments can be derived by the compiler.
Return the square of the 
Return the square of the 
Return the 
Return the 
Return the 
Return the 
Return the maximum absolute value of the elements of this vector, which is the 
Return the maximum absolute value of the elements of this vector, which is the 
Return a pair of indices indicating which elements of this vector are stored locally. The first number is the index of the first element stored, the second the index of the one past the last one that is stored locally. If this is a sequential vector, then the result will be the pair (0,N), otherwise it will be a pair (i,i+n), where n=local_size() and i is the first element of the vector stored on this processor, corresponding to the half open interval 

Return a pair of indices indicating which elements of this vector are stored locally. The first number is the index of the first element stored, the second the index of the one past the last one that is stored locally. If this is a sequential vector, then the result will be the pair (0,N), otherwise it will be a pair (i,i+n), where n=local_size() and i is the first element of the vector stored on this processor, corresponding to the half open interval 

Return the square of the 
Return the square of the 






A user function that applies the Jacobian 
x and writes the result in y. The Jacobian to be used (i.e., more precisely: the linearization point 
setup_jacobian function was last called.
A user function that applies the Jacobian 
x and writes the result in y. The Jacobian to be used (i.e., more precisely: the linearization point 
setup_jacobian function was last called.
NOX::LineSearch::Polynomial) is chosen, whereas for the full step case (NOX::LineSearch::FullStep) it won't be called.A user function that applies the inverse of the Jacobian ![$[\nabla_u F(u)]^{-1}$](form_2682.png)
y and writes the result in x. The parameter tolerance specifies the error reduction if an iterative solver is used in applying the inverse matrix. The Jacobian to be used (i.e., more precisely: the linearization point 
setup_jacobian function was last called.
A user function that applies the inverse of the Jacobian ![$[\nabla_u F(u)]^{-1}$](form_2682.png)
y and writes the result in x. The parameter tolerance specifies the error reduction if an iterative solver is used in applying the inverse matrix. The Jacobian to be used (i.e., more precisely: the linearization point 
setup_jacobian function was last called.
A user function that applies the inverse of the Jacobian ![$[\nabla_u F(u)]^{-1}$](form_2682.png)
y, writes the result in x and returns the number of linear iterations the linear solver needed. The parameter tolerance species the error reduction if an iterative solver is used. The Jacobian to be used (i.e., more precisely: the linearization point 
setup_jacobian function was last called.
A user function that applies the inverse of the Jacobian ![$[\nabla_u F(u)]^{-1}$](form_2682.png)
y, writes the result in x and returns the number of linear iterations the linear solver needed. The parameter tolerance species the error reduction if an iterative solver is used. The Jacobian to be used (i.e., more precisely: the linearization point 
setup_jacobian function was last called.
solve_with_jacobian is not provided. Its return value is compared again AdditionalFlags::threshold_n_linear_iterations; if it is larger, the preconditioner will be built before the next linear system is solved. The use of this approach is predicated on the idea that one can keep using a preconditioner built earlier as long as it is a good preconditioner for the matrix currently in use – where "good" is defined as leading to a number of iterations to solve linear systems less than the threshold given by the current variable.Return the square of the norm of the vector 


Return the square of the norm of the vector 


Obviously, the matrix needs to be quadratic for this operation.
The implementation of this function is not as efficient as the one in the SparseMatrix class used in deal.II (i.e. the original one, not the Trilinos wrapper class) since Trilinos doesn't support this operation and needs a temporary vector.
The vector has to be initialized with the same IndexSet the matrix was initialized with.
@@ -2434,7 +2434,7 @@Compute the matrix scalar product 
Compute the matrix scalar product 
The implementation of this function is not as efficient as the one in the SparseMatrix class used in deal.II (i.e. the original one, not the Trilinos wrapper class) since Trilinos doesn't support this operation and needs a temporary vector.
The vector u has to be initialized with the same IndexSet that was used for the row indices of the matrix and the vector v has to be initialized with the same IndexSet that was used for the column indices of the matrix.
In case of a localized Vector, this function will only work when running on one processor, since the matrix object is inherently distributed. Otherwise, an exception will be thrown.
@@ -2551,10 +2551,10 @@Return the l1-norm of the matrix, that is 


Definition at line 1911 of file trilinos_sparse_matrix.cc.
@@ -2574,8 +2574,8 @@Return the linfty-norm of the matrix, that is 


Definition at line 1920 of file trilinos_sparse_matrix.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparsityPattern.html differs (JavaScript source, ASCII text, with very long lines (752)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparsityPattern.html 2023-11-25 15:25:59.279902515 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classTrilinosWrappers_1_1SparsityPattern.html 2023-11-25 15:25:59.279902515 +0100 @@ -461,7 +461,7 @@Generate a sparsity pattern that is completely stored locally, having 

Generate a sparsity pattern that is completely stored locally, having 

It is possible to specify the number of columns entries per row using the optional n_entries_per_row argument. However, this value does not need to be accurate or even given at all, since one does usually not have this kind of information before building the sparsity pattern (the usual case when the function DoFTools::make_sparsity_pattern() is called). The entries are allocated dynamically in a similar manner as for the deal.II DynamicSparsityPattern classes. However, a good estimate will reduce the setup time of the sparsity pattern.
Definition at line 100 of file trilinos_sparsity_pattern.cc.
@@ -499,7 +499,7 @@Generate a sparsity pattern that is completely stored locally, having 

Generate a sparsity pattern that is completely stored locally, having 

The vector n_entries_per_row specifies the number of entries in each row (an information usually not available, though).
Definition at line 109 of file trilinos_sparsity_pattern.cc.
@@ -809,7 +809,7 @@Initialize a sparsity pattern that is completely stored locally, having 

Initialize a sparsity pattern that is completely stored locally, having 

The number of columns entries per row is specified as the maximum number of entries argument. This does not need to be an accurate number since the entries are allocated dynamically in a similar manner as for the deal.II DynamicSparsityPattern classes, but a good estimate will reduce the setup time of the sparsity pattern.
Definition at line 214 of file trilinos_sparsity_pattern.cc.
@@ -847,7 +847,7 @@Initialize a sparsity pattern that is completely stored locally, having 

Initialize a sparsity pattern that is completely stored locally, having 

The vector n_entries_per_row specifies the number of entries in each row.
Definition at line 227 of file trilinos_sparsity_pattern.cc.
@@ -1399,7 +1399,7 @@Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 



Compute the bandwidth of the matrix represented by this structure. The bandwidth is the maximum of 



Definition at line 896 of file trilinos_sparsity_pattern.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1Partitioner.html differs (JavaScript source, ASCII text, with very long lines (1765)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1Partitioner.html 2023-11-25 15:25:59.299902107 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classUtilities_1_1MPI_1_1Partitioner.html 2023-11-25 15:25:59.299902107 +0100 @@ -321,7 +321,7 @@Constructor that takes the number of locally-owned degrees of freedom local_size and the number of ghost degrees of freedom ghost_size.
The local index range is translated to global indices in an ascending and one-to-one fashion, i.e., the indices of process 


The local index range is translated to global indices in an ascending and one-to-one fashion, i.e., the indices of process 


ghost_size variable to an appropriate value provides memory space for the ghost data in a vector's memory allocation as and allows access to it via local_element(). However, the associated global indices must be handled externally in this case. Constructor for a process grid for a given mpi_communicator. In this case the process grid is heuristically chosen based on the dimensions and block-cyclic distribution of a target matrix provided in n_rows_matrix, n_columns_matrix, row_block_size and column_block_size.
The maximum number of MPI cores one can utilize is 



mpi_communicator. This function then creates a 2d processor grid assuming the ratio between number of process row 



For example, a square matrix 

mpi_communicator with 11 cores will result in the 
The maximum number of MPI cores one can utilize is 



mpi_communicator. This function then creates a 2d processor grid assuming the ratio between number of process row 



For example, a square matrix 

mpi_communicator with 11 cores will result in the 
Definition at line 209 of file process_grid.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classVector.html differs (JavaScript source, ASCII text, with very long lines (532)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classVector.html 2023-11-25 15:25:59.339901293 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classVector.html 2023-11-25 15:25:59.339901293 +0100 @@ -947,7 +947,7 @@Same as above, but will preserve the values of vector upon resizing. If we new size is bigger, we will have
-![\[
\mathbf V \rightarrow
\left(
\begin{array}{c}
@@ -955,10 +955,10 @@
\mathbf 0
\end{array}
\right)
-\]](form_1986.png)
whereas if the desired size is smaller, then
-![\[
\left(
\begin{array}{c}
\mathbf V_1 \\
@@ -966,7 +966,7 @@
\end{array}
\right)
\rightarrow \mathbf V_1
-\]](form_1987.png)
Return the square of the 
Return the square of the 






Return a block mask with as many elements as this object has blocks and of which exactly the one component is true that corresponds to the given argument. See the glossary for more information.
-

Given a component mask (see this glossary entry ), produce a block mask (see this glossary entry ) that represents the blocks that correspond to the components selected in the input argument. This is essentially a conversion operator from ComponentMask to BlockMask.
-

Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Definition at line 398 of file fe_values.cc.
@@ -479,7 +479,7 @@After the call, you can get an FEFaceValues object using the get_present_fe_values() function that corresponds to the present cell. For this FEFaceValues object, we use the additional arguments described below to determine which finite element, mapping, and quadrature formula to use. They are order in such a way that the arguments one may want to change most frequently come first. The rules for these arguments are as follows:
If the fe_index argument to this function is left at its default value, then we use that finite element within the hp::FECollection passed to the constructor of this class with index given by cell->active_fe_index(). Consequently, the hp::FECollection argument given to this object should really be the same as that used in the construction of the DoFHandler associated with the present cell. On the other hand, if a value is given for this argument, it overrides the choice of cell->active_fe_index(). (This may or may not be very useful: If you are using a specific finite element on the current cell, why would you want to reinit() an object of the current type with a different finite element?)
If the q_index argument is left at its default value, then we use that quadrature formula within the hp::QCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. In this case, there should be a corresponding quadrature formula for each finite element in the hp::FECollection. As a special case, if the quadrature collection contains only a single element (a frequent case if one wants to use the same quadrature object for all finite elements in an hp-discretization, even if that may not be the most efficient), then this single quadrature is used unless a different value for this argument is specified. On the other hand, if a value is given for this argument, it overrides the choice of cell->active_fe_index() or the choice for the single quadrature.
If the mapping_index argument is left at its default value, then we use that mapping object within the hp::MappingCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. As above, if the mapping collection contains only a single element (a frequent case if one wants to use a 
If the mapping_index argument is left at its default value, then we use that mapping object within the hp::MappingCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. As above, if the mapping collection contains only a single element (a frequent case if one wants to use a 
Definition at line 424 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FESubfaceValues.html differs (JavaScript source, ASCII text, with very long lines (1043)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FESubfaceValues.html 2023-11-25 15:25:59.396566807 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FESubfaceValues.html 2023-11-25 15:25:59.396566807 +0100 @@ -195,7 +195,7 @@Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Definition at line 550 of file fe_values.cc.
@@ -252,7 +252,7 @@Reinitialize the object for the given cell, face, and subface.
After the call, you can get an FESubfaceValues object using the get_present_fe_values() function that corresponds to the present cell. For this FESubfaceValues object, we use the additional arguments described below to determine which finite element, mapping, and quadrature formula to use. They are order in such a way that the arguments one may want to change most frequently come first. The rules for these arguments are as follows:
If the q_index argument is left at its default value, then we use that quadrature formula within the hp::QCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. In this case, there should be a corresponding quadrature formula for each finite element in the hp::FECollection. As a special case, if the quadrature collection contains only a single element (a frequent case if one wants to use the same quadrature object for all finite elements in an hp-discretization, even if that may not be the most efficient), then this single quadrature is used unless a different value for this argument is specified. On the other hand, if a value is given for this argument, it overrides the choice of cell->active_fe_index() or the choice for the single quadrature.
If the mapping_index argument is left at its default value, then we use that mapping object within the hp::MappingCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. As above, if the mapping collection contains only a single element (a frequent case if one wants to use a 
If the mapping_index argument is left at its default value, then we use that mapping object within the hp::MappingCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. As above, if the mapping collection contains only a single element (a frequent case if one wants to use a 
Definition at line 564 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValues.html differs (JavaScript source, ASCII text, with very long lines (1352)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValues.html 2023-11-25 15:25:59.416566400 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValues.html 2023-11-25 15:25:59.416566400 +0100 @@ -348,7 +348,7 @@Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Definition at line 281 of file fe_values.cc.
@@ -396,7 +396,7 @@After the call, you can get an FEValues object using the get_present_fe_values() function that corresponds to the present cell. For this FEValues object, we use the additional arguments described below to determine which finite element, mapping, and quadrature formula to use. They are order in such a way that the arguments one may want to change most frequently come first. The rules for these arguments are as follows:
If the fe_index argument to this function is left at its default value, then we use that finite element within the hp::FECollection passed to the constructor of this class with index given by cell->active_fe_index(). Consequently, the hp::FECollection argument given to this object should really be the same as that used in the construction of the DoFHandler associated with the present cell. On the other hand, if a value is given for this argument, it overrides the choice of cell->active_fe_index().
If the q_index argument is left at its default value, then we use that quadrature formula within the hp::QCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. In this case, there should be a corresponding quadrature formula for each finite element in the hp::FECollection. As a special case, if the quadrature collection contains only a single element (a frequent case if one wants to use the same quadrature object for all finite elements in an hp-discretization, even if that may not be the most efficient), then this single quadrature is used unless a different value for this argument is specified. On the other hand, if a value is given for this argument, it overrides the choice of cell->active_fe_index() or the choice for the single quadrature.
If the mapping_index argument is left at its default value, then we use that mapping object within the hp::MappingCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. As above, if the mapping collection contains only a single element (a frequent case if one wants to use a 
If the mapping_index argument is left at its default value, then we use that mapping object within the hp::MappingCollection passed to the constructor of this class with index given by cell->active_fe_index(), i.e. the same index as that of the finite element. As above, if the mapping collection contains only a single element (a frequent case if one wants to use a 
Definition at line 294 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValuesBase.html differs (JavaScript source, ASCII text, with very long lines (1015)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValuesBase.html 2023-11-25 15:25:59.433232728 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classhp_1_1FEValuesBase.html 2023-11-25 15:25:59.436565993 +0100 @@ -380,7 +380,7 @@Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Definition at line 107 of file fe_values.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MappingQImplementation_1_1InverseQuadraticApproximation.html differs (JavaScript source, ASCII text, with very long lines (683)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MappingQImplementation_1_1InverseQuadraticApproximation.html 2023-11-25 15:25:59.446565789 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classinternal_1_1MappingQImplementation_1_1InverseQuadraticApproximation.html 2023-11-25 15:25:59.446565789 +0100 @@ -174,7 +174,7 @@| real_support_points | The position of the mapping support points in real space, queried by MappingQ::compute_mapping_support_points(). |
| unit_support_points | The location of the support points in reference coordinates ![]() |
| unit_support_points | The location of the support points in reference coordinates ![]() |
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Constructor. This constructor is equivalent to the other one except that it makes the object use a 
Definition at line 210 of file mapping_data_on_the_fly.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1DistributedTriangulationBase.html differs (JavaScript source, ASCII text, with very long lines (994)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1DistributedTriangulationBase.html 2023-11-25 15:25:59.519897631 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/classparallel_1_1DistributedTriangulationBase.html 2023-11-25 15:25:59.519897631 +0100 @@ -2022,7 +2022,7 @@When vertices have been moved locally, for example using code like
then this function can be used to update the location of vertices between MPI processes.
-All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



vertex_locally_moved argument may not contain vertices that aren't at least on ghost cells.Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. When vertices have been moved locally, for example using code like
then this function can be used to update the location of vertices between MPI processes.
-All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



vertex_locally_moved argument may not contain vertices that aren't at least on ghost cells.Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. Return a permutation vector for the order the coarse cells are handed off to p4est. For example the value of the 

Return a permutation vector for the order the coarse cells are handed off to p4est. For example the value of the 

When vertices have been moved locally, for example using code like
then this function can be used to update the location of vertices between MPI processes.
-All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



vertex_locally_moved argument may not contain vertices that aren't at least on ghost cells.Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. When vertices have been moved locally, for example using code like
then this function can be used to update the location of vertices between MPI processes.
-All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



vertex_locally_moved argument may not contain vertices that aren't at least on ghost cells.Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. When vertices have been moved locally, for example using code like
then this function can be used to update the location of vertices between MPI processes.
-All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



vertex_locally_moved argument may not contain vertices that aren't at least on ghost cells.Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. When vertices have been moved locally, for example using code like
then this function can be used to update the location of vertices between MPI processes.
-All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



All the vertices that have been moved and might be in the ghost layer of a process have to be reported in the vertex_locally_moved argument. This ensures that that part of the information that has to be send between processes is actually sent. Additionally, it is quite important that vertices on the boundary between processes are reported on exactly one process (e.g. the one with the highest id). Otherwise we could expect undesirable results if multiple processes move a vertex differently. A typical strategy is to let processor 



vertex_locally_moved argument may not contain vertices that aren't at least on ghost cells.Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
Refine all cells times times. In other words, in each one of the times iterations, loop over all cells and refine each cell uniformly into 
times times: call set_all_refine_flags() followed by execute_coarsening_and_refinement(). The end result is that the number of cells increases by a factor of 
The execute_coarsening_and_refinement() function called in this loop may throw an exception if it creates cells that are distorted (see its documentation for an explanation). This exception will be propagated through this function if that happens, and you may not get the actual number of refinement steps in that case.
times > 1) . See the section on signals in the general documentation of this class. Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
Iterator to the first quad, used or not, on the given level. If a level has no quads, a past-the-end iterator is returned. If quads are no cells, i.e. for 
level argument needs to correspond to a level of the triangulation, i.e., should be less than the value returned by n_levels(). On the other hand, for parallel computations using a parallel::distributed::Triangulation object, it is often convenient to write loops over the cells of all levels of the global mesh, even if the local portion of the triangulation does not actually have cells at one of the higher levels. In those cases, the level argument is accepted if it is less than what the n_global_levels() function returns. If the given level is between the values returned by n_levels() and n_global_levels(), then no cells exist in the local portion of the triangulation at this level, and the function simply returns what end() would return. selected_dofs has to have a length equal to all global degrees of freedom. Consequently, this does not scale to very large problems, and this is also why the function is deprecated. If you need the functionality of this function for parallel triangulations, then you need to use the other DoFTools::extract_boundary_dofs() function that returns its information via an IndexSet object. std::map instead. std::map instead. std::map instead. solve_with_jacobian callback described below. weight signal instead which omits the base weight. You can invoke the old behavior by connecting a function to the signal that returns the base weight as follows. This function should be added in addition to the one that actually computes the weight. weight signal instead which omits the base weight. You can invoke the old behavior by connecting a function to the signal that returns the base weight as follows. This function should be added in addition to the one that actually computes the weight. One of the uses of DerivativeForm is to apply it as a linear transformation. This function returns 



-DerivativeForm is to apply it as a linear transformation. This function returns




+![\[
\nabla \mathbf F(\mathbf x) \; \Delta \mathbf x
\approx
\mathbf F(\mathbf x + \Delta \mathbf x) - \mathbf F(\mathbf x).
-\]](form_390.png)
The transformation corresponds to
-![\[
[\text{result}]_{i_1,\dots,i_k} = i\sum_{j}
\left[\nabla \mathbf F(\mathbf x)\right]_{i_1,\dots,i_k, j}
\Delta x_j
-\]](form_391.png)
in index notation and corresponds to ![$[\Delta \mathbf x] [\nabla \mathbf F(\mathbf x)]^T$](form_392.png)
in index notation and corresponds to ![$[\Delta \mathbf x] [\nabla \mathbf F(\mathbf x)]^T$](form_398.png)
Definition at line 454 of file derivative_form.h.
@@ -205,7 +205,7 @@Similar to the previous apply_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Similar to the previous apply_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Definition at line 479 of file derivative_form.h.
@@ -244,7 +244,7 @@Similar to the previous apply_transformation(), specialized for the case dim == spacedim where we can return a rank-2 tensor instead of the more general DerivativeForm. Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Similar to the previous apply_transformation(), specialized for the case dim == spacedim where we can return a rank-2 tensor instead of the more general DerivativeForm. Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to 
Definition at line 505 of file derivative_form.h.
@@ -322,11 +322,11 @@Similar to the previous apply_transformation(). In matrix notation, it computes 




-apply_transformation(). In matrix notation, it computes





+![\[
\mathbf u \cdot \mathbf A \mathbf v =
\text{DF2}^{-1}(\mathbf u) \cdot \text{DF1}^{-1}(\mathbf v)
-\]](form_398.png)
Definition at line 565 of file derivative_form.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__CPP11.html differs (JavaScript source, ASCII text, with very long lines (1210)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__CPP11.html 2023-11-25 15:25:59.876557037 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__CPP11.html 2023-11-25 15:25:59.876557037 +0100 @@ -175,7 +175,7 @@ The macro DEAL_II_CONSTEXPR expands to constexpr if the compiler supports enough constexpr features (such as loops). If the compiler does not then this macro expands to nothing.
Functions declared as constexpr can be evaluated at compile time. Hence code like
assuming A is declared with the constexpr specifier, will typically result in compile-time constants. This example shows the performance gains of using constexpr because here we performed an operation with 
assuming A is declared with the constexpr specifier, will typically result in compile-time constants. This example shows the performance gains of using constexpr because here we performed an operation with 
where these two member functions perform one step (or the transpose of such a step) of the smoothing scheme. In other words, the operations performed by these functions are 

where these two member functions perform one step (or the transpose of such a step) of the smoothing scheme. In other words, the operations performed by these functions are 

Thus, such an object can be used as a matrix object in all iterative solver classes, either as a matrix object, or as preconditioner.
-The big advantage of the LinearOperator class is that it provides syntactic sugar for complex matrix-vector operations. As an example consider the operation 



op that performs above computation when applied on a vector, one can write:
The big advantage of the LinearOperator class is that it provides syntactic sugar for complex matrix-vector operations. As an example consider the operation 



op that performs above computation when applied on a vector, one can write:
that avoids any intermediate storage. As a second example (involving a LinearOperator object) consider the computation of a residual 
that avoids any intermediate storage. As a second example (involving a LinearOperator object) consider the computation of a residual 
Addition of two linear operators first_op and second_op given by 
Addition of two linear operators first_op and second_op given by 
Definition at line 390 of file linear_operator.h.
@@ -655,8 +655,8 @@Subtraction of two linear operators first_op and second_op given by 
Subtraction of two linear operators first_op and second_op given by 
Definition at line 449 of file linear_operator.h.
@@ -756,8 +756,8 @@Composition of two linear operators first_op and second_op given by 
Composition of two linear operators first_op and second_op given by 
Definition at line 587 of file linear_operator.h.
@@ -1710,7 +1710,7 @@Return a LinearOperator that performs the operations associated with the Schur complement. There are two additional helper functions, condense_schur_rhs() and postprocess_schur_solution(), that are likely necessary to be used in order to perform any useful tasks in linear algebra with this operator.
We construct the definition of the Schur complement in the following way:
Consider a general system of linear equations that can be decomposed into two major sets of equations:
-
where 



where 



This is equivalent to the following two statements:
-
Assuming that 
-
+
which amount to performing block Gaussian elimination on this system of equations.
For the purpose of the current implementation, we choose to substitute (3) into (2)
-
This leads to the result
-![\[
(5) \quad (D - C\: A^{-1} \:B)y = g - C \: A^{-1} f
\quad \Rightarrow \quad Sy = g'
-\]](form_1790.png)
with 




So for any arbitrary vector 
-




So for any arbitrary vector 
+![\[
(6) \quad Sa = (D - C \: A^{-1} \: B)a
-\]](form_1797.png)
A typical set of steps needed the solve a linear system (1),(2) would be:
A_inv (using inverse_operator()).











-![\[
g' = g - C \: A^{-1} \: f
- \]](form_1799.png)

-
+![\[
y = S^{-1} g'
- \]](form_1801.png)
-![\[
x = A^{-1} (f - By)
- \]](form_1802.png)
In the above example, the preconditioner for 





A better preconditioner in such a case would be one that provides a more representative approximation for 


From another viewpoint, a similar result can be achieved by first constructing an object that represents an approximation for 



In the above example, the preconditioner for 





A better preconditioner in such a case would be one that provides a more representative approximation for 


From another viewpoint, a similar result can be achieved by first constructing an object that represents an approximation for 



Note that due to the construction of S_inv_approx and subsequently S_inv, there are a pair of nested iterative solvers which could collectively consume a lot of resources. Therefore care should be taken in the choices leading to the construction of the iterative inverse_operators. One might consider the use of a IterationNumberControl (or a similar mechanism) to limit the number of inner solver iterations. This controls the accuracy of the approximate inverse operation 



Note that due to the construction of S_inv_approx and subsequently S_inv, there are a pair of nested iterative solvers which could collectively consume a lot of resources. Therefore care should be taken in the choices leading to the construction of the iterative inverse_operators. One might consider the use of a IterationNumberControl (or a similar mechanism) to limit the number of inner solver iterations. This controls the accuracy of the approximate inverse operation 



However, if an iterative solver based on IterationNumberControl is used as a preconditioner then the preconditioning operation is not a linear operation. Here a flexible solver like SolverFGMRES (flexible GMRES) is best employed as an outer solver in order to deal with the variable behavior of the preconditioner. Otherwise the iterative solver can stagnate somewhere near the tolerance of the preconditioner or generally behave erratically. Alternatively, using a ReductionControl would ensure that the preconditioner always solves to the same tolerance, thereby rendering its behavior constant.
Further examples of this functionality can be found in the test-suite, such as tests/lac/schur_complement_01.cc . The solution of a multi- component problem (namely step-22) using the schur_complement can be found in tests/lac/schur_complement_03.cc .
For the system of equations
-
this operation performs the pre-processing (condensation) step on the RHS subvector g so that the Schur complement can be used to solve this system of equations. More specifically, it produces an object that represents the condensed form of the subvector g, namely
-![\[
g' = g - C \: A^{-1} \: f
-\]](form_1809.png)
For the system of equations
-![\begin{eqnarray*}
Ax + By &=& f \\
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__UpdateFlags.html differs (JavaScript source, ASCII text, with very long lines (1793))
--- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__UpdateFlags.html 2023-11-25 15:26:00.036553783 +0100
+++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__UpdateFlags.html 2023-11-25 15:26:00.036553783 +0100
@@ -123,7 +123,7 @@
w_q,
\]](form_272.png)






In order to evaluate such an expression in an application code, we have to access three different kinds of objects: a quadrature object that describes locations 


On the other hand, these three kinds of objects almost always appear together, and it is in fact very rare for deal.II application codes to do anything with quadrature, finite element, or mapping objects besides using them together. For this reason, deal.II uses the FEValues abstraction combining information on the shape functions, the geometry of the actual mesh cell and a quadrature rule on a reference cell. Upon construction it takes one object of each of the three mentioned categories. Later, it can be "re-initialized" for a concrete grid cell and then provides mapped quadrature points and weights, mapped shape function values and derivatives as well as some properties of the transformation from the reference cell to the actual mesh cell.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__auto__symb__diff.html differs (JavaScript source, ASCII text, with very long lines (4820)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__auto__symb__diff.html 2023-11-25 15:26:00.049886843 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__auto__symb__diff.html 2023-11-25 15:26:00.049886843 +0100 @@ -101,7 +101,7 @@A module dedicated to the implementation of functions and classes that relate to automatic and symbolic differentiation.
-Below we provide a very brief introduction as to what automatic and symbolic differentiation are, what variations of these computational/numerical schemes exist, and how they are integrated within deal.II's framework. The purpose of all of these schemes is to automatically compute the derivative of functions, or approximations of it, in cases where one does not want to compute them by hand. Common examples are situations in the finite element context is where one wants to solve a nonlinear problem that is given by requiring that some residual 








Below we provide a very brief introduction as to what automatic and symbolic differentiation are, what variations of these computational/numerical schemes exist, and how they are integrated within deal.II's framework. The purpose of all of these schemes is to automatically compute the derivative of functions, or approximations of it, in cases where one does not want to compute them by hand. Common examples are situations in the finite element context is where one wants to solve a nonlinear problem that is given by requiring that some residual 








Automatic differentiation (commonly also referred to as algorithmic differentiation), is a numerical method that can be used to "automatically" compute the first, and perhaps higher-order, derivatives of function(s) with respect to one or more input variables. Although this comes at a certain computational cost, the benefits to using such a tool may be significant. When used correctly the derivatives of often complicated functions can be computed to a very high accuracy. Although the exact accuracy achievable by these frameworks largely depends on their underlying mathematical formulation, some implementations compute with a precision on the order of machine accuracy. Note that this is different to classical numerical differentiation (using, for example, a finite difference approximation of a function by evaluating it at different points), which has an accuracy that depends on both the perturbation size as well as the chosen finite-difference scheme; the error of these methods is measurably larger than well-formulated automatic differentiation approaches.
@@ -149,38 +149,38 @@As a point of interest, the optimal Jacobian accumulation, which performs a minimal set of computations, lies somewhere between these two limiting cases. Its computation for a general composite function remains an open problem in graph theory.
-With the aid of the diagram below (it and some of the listed details courtesy of this Wikipedia article), let us think about the representation of the calculation of the function 
Specifically, we will briefly describe what forward and reverse auto-differentiation are. Note that in the diagram, along the edges of the graph in text are the directional derivative of function 


Consider first that any composite function 
-Wikipedia article), let us think about the representation of the calculation of the function

Specifically, we will briefly describe what forward and reverse auto-differentiation are. Note that in the diagram, along the edges of the graph in text are the directional derivative of function 


Consider first that any composite function 
+![\[
f (\mathbf{x})
= f_{0} \circ f_{1} \circ f_{2} \circ \ldots \circ f_{n} (\mathbf{x})
\quad .
-\]](form_13.png)
As was previously mentioned, if each of the primitive operations 


-


+![\[
\dfrac{d f (\mathbf{x})}{d \mathbf{x}}
= \dfrac{d f_{0}}{d f_{1}} \dfrac{d f_{1}}{d f_{2}} \dfrac{d f_{2}}{d f_{3}} \ldots \dfrac{d f_{n} (\mathbf{x})}{d \mathbf{x}}
\quad .
-\]](form_17.png)
In forward-mode, the chain-rule is computed naturally from the "inside out". The independent variables are therefore fixed, and each sub-function 
-
+![\[
\dfrac{d f (\mathbf{x})}{d \mathbf{x}}
= \dfrac{d f_{0}}{d f_{1}} \left( \dfrac{d f_{1}}{d f_{2}} \left(\dfrac{d f_{2}}{d f_{3}} \left(\ldots \left( \dfrac{d f_{n} (\mathbf{x})}{d \mathbf{x}} \right)\right)\right)\right)
\quad .
-\]](form_19.png)
The computational complexity of a forward-sweep is proportional to that of the input function. However, for each directional derivative that is to be computed one sweep of the computational graph is required.
In reverse-mode, the chain-rule is computed somewhat unnaturally from the "outside in". The values of the dependent variables first get computed and fixed, and then the preceding differential operations are evaluated and multiplied in succession with the previous results from left to right. Again, if we encapsulate and fix the order of operations using parentheses, this implies that the reverse calculation is performed by
-![\[
\dfrac{d f (\mathbf{x})}{d \mathbf{x}}
= \left( \left( \left( \left( \left( \dfrac{d f_{0}}{d f_{1}} \right) \dfrac{d f_{1}}{d f_{2}} \right) \dfrac{d f_{2}}{d f_{3}} \right) \ldots \right) \dfrac{d f_{n} (\mathbf{x})}{d \mathbf{x}} \right)
\quad .
-\]](form_20.png)
The intermediate values 
The intermediate values 
Overall, the efficiency of each mode is determined by the number of independent (input) variables and dependent (output) variables. If the outputs greatly exceed the inputs in number, then forward-mode can be shown to be more efficient than reverse-mode. The converse is true when the number of input variables greatly exceeds that of the output variables. This point may be used to help inform which number type is most suitable for which set of operations are to be performed using automatic differentiation. For example, in many applications for which second derivatives are to be computed it is appropriate to combine both reverse- and forward-modes. The former would then typically be used to calculate the first derivatives, and the latter the second derivatives.
Symbolic differentiation is, in terms of its design and usage, quite different to automatic differentiation. Underlying any symbolic library is a computer algebra system (CAS) that implements a language and collection of algorithms to manipulate symbolic (or "string-like") expressions. This is most similar, from a philosophical point of view, to how algebraic operations would be performed by hand.
-To help better distinguish between symbolic differentiation and numerical methods like automatic differentiation, let's consider a very simple example. Suppose that the function ![$f(x,y) = [2x+1]^{y}$](form_22.png)


![$\dfrac{d f(x,y)}{d x} = 2y[2x+1]^{y-1}$](form_25.png)
![$\dfrac{d f(x,y)}{d y} = [2x+1]^{y} \ln(2x+1)$](form_26.png)
x and y, defining the symbolic expression f = pow(2x+1, y) and computing the derivatives diff(f, x) and diff(f, y). At this point there is no assumption of what x and y represent; they may later be interpreted as plain (scalar) numbers, complex numbers, or something else for which the power and natural logarithm functions are well defined. Obviously this means that there is also no assumption about which point to evaluate either the expression or its derivatives. One could readily take the expression for 





x and y, such as 
![$\dfrac{d f(x, y)}{d x} \rightarrow \dfrac{\partial f(x, y(x))}{\partial x} = 2y(x) [2x+1]^{y(x)-1} = 4x[2x+1]^{2x-1}$](form_33.png)
![$\dfrac{d f(x, y)}{d y} \rightarrow \dfrac{\partial f(x, y(x))}{\partial y} = [2x+1]^{y(x)} \ln(2x+1) = [2x+1]^{2x} \ln(2x+1)$](form_34.png)


To help better distinguish between symbolic differentiation and numerical methods like automatic differentiation, let's consider a very simple example. Suppose that the function ![$f(x,y) = [2x+1]^{y}$](form_19.png)


![$\dfrac{d f(x,y)}{d x} = 2y[2x+1]^{y-1}$](form_22.png)
![$\dfrac{d f(x,y)}{d y} = [2x+1]^{y} \ln(2x+1)$](form_23.png)
x and y, defining the symbolic expression f = pow(2x+1, y) and computing the derivatives diff(f, x) and diff(f, y). At this point there is no assumption of what x and y represent; they may later be interpreted as plain (scalar) numbers, complex numbers, or something else for which the power and natural logarithm functions are well defined. Obviously this means that there is also no assumption about which point to evaluate either the expression or its derivatives. One could readily take the expression for 





x and y, such as 
![$\dfrac{d f(x, y)}{d x} \rightarrow \dfrac{\partial f(x, y(x))}{\partial x} = 2y(x) [2x+1]^{y(x)-1} = 4x[2x+1]^{2x-1}$](form_30.png)
![$\dfrac{d f(x, y)}{d y} \rightarrow \dfrac{\partial f(x, y(x))}{\partial y} = [2x+1]^{y(x)} \ln(2x+1) = [2x+1]^{2x} \ln(2x+1)$](form_31.png)


Due to the sophisticated CAS that forms the foundation of symbolic operations, the types of manipulations are not necessarily restricted to differentiation alone, but rather may span a spectrum of manipulations relevant to discrete differential calculus, topics in pure mathematics, and more. The documentation for the SymPy library gives plenty of examples that highlight what a fully-fledged CAS is capable of. Through the Differentiation::SD::Expression class, and the associated functions in the Differentiation::SD namespace, we provide a wrapper to the high-performance SymEngine symbolic manipulation library that has enriched operator overloading and a consistent interface that makes it easy and "natural" to use. In fact, this class can be used as a "drop-in" replacement for arithmetic types in many situations, transforming the operations from being numeric to symbolic in nature; this is made especially easy when classes are templated on the underlying number type. Being focused on numerical simulation of PDEs, the functionality of the CAS that is exposed within deal.II focuses on symbolic expression creation, manipulation, and differentiation.
The convenience wrappers to SymEngine functionality are primarily focused on manipulations that solely involve dictionary-based (i.e., something reminiscent of "string-based") operations. Although SymEngine performs these operations in an efficient manner, they are still known to be computationally expensive, especially when the operations are performed on large expressions. It should therefore be expected that the performance of the parts of code that perform differentiation, symbolic substitution, etc., may be a limiting factor when using this in production code. deal.II therefore provides an interface to accelerate the evaluation of lengthy symbolic expression through the BatchOptimizer class (itself often leveraging functionality provided by SymEngine). In particular, the BatchOptimizer simultaneously optimizes a collection of symbolic expressions using methods such as common subexpression elimination (CSE), as well as by generating high performance code-paths to evaluate these expressions through the use of a custom-generated std::function or by compiling the expression using the LLVM JIT compiler. The usage of the Differentiation::SD::BatchOptimizer class is exemplified in step-71.
As a final note, it is important to recognize the remaining major deficiencies in deal.II's current implementation of the interface to the supported symbolic library. The level of functionality currently implemented effectively limits the use of symbolic algebra to the traditional use case (i.e. scalar and tensor algebra, as might be useful to define constitutive relations or complex functions for application as boundary conditions or source terms). In fact, step-71 demonstrates how it can be used to implement challenging constitutive models. In the future we will also implement classes to assist in performing assembly operations in the same spirit as that which has been done in the Differentiation::AD namespace.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__constraints.html differs (JavaScript source, ASCII text, with very long lines (1590)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__constraints.html 2023-11-25 15:26:00.083219500 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__constraints.html 2023-11-25 15:26:00.083219500 +0100 @@ -209,18 +209,18 @@
























In all of these examples, constraints on degrees of freedom are linear and possibly inhomogeneous. In other words, they always have the form 
In all of these examples, constraints on degrees of freedom are linear and possibly inhomogeneous. In other words, they always have the form 
When building the global system matrix and the right hand sides, one can build them without taking care of the constraints, i.e. by simply looping over cells and adding the local contributions to the global matrix and right hand side objects. In order to do actual calculations, you have to 'condense' the linear system: eliminate constrained degrees of freedom and distribute the appropriate values to the unconstrained dofs. This changes the sparsity pattern of the sparse matrices used in finite element calculations and is thus a quite expensive operation. The general scheme of things is then that you build your system, you eliminate (condense) away constrained nodes using the AffineConstraints::condense() functions, then you solve the remaining system, and finally you compute the values of constrained nodes from the values of the unconstrained ones using the AffineConstraints::distribute() function. Note that the AffineConstraints::condense() function is applied to matrix and right hand side of the linear system, while the AffineConstraints::distribute() function is applied to the solution vector.
This scheme of first building a linear system and then eliminating constrained degrees of freedom is inefficient, and a bottleneck if there are many constraints and matrices are full, i.e. especially for 3d and/or higher order or hp-finite elements. Furthermore, it is impossible to implement for parallel computations where a process may not have access to elements of the matrix. We therefore offer a second way of building linear systems, using the AffineConstraints::add_entries_local_to_global() and AffineConstraints::distribute_local_to_global() functions discussed below. The resulting linear systems are equivalent to those one gets after calling the AffineConstraints::condense() functions.
@@ -271,23 +271,23 @@Of course, both approaches lead to the same final answer but in different ways. Using the first approach (i.e., when using use_inhomogeneities_for_rhs = false in AffineConstraints::distribute_local_to_global()), the linear system we build has zero entries in the right hand side in all those places where a degree of freedom is constrained, and some positive value on the matrix diagonal of these lines. Consequently, the solution vector of the linear system will have a zero value for inhomogeneously constrained degrees of freedom and we need to call AffineConstraints::distribute() to give these degrees of freedom their correct nonzero values.
On the other hand, in the second approach, the matrix diagonal element and corresponding right hand side entry for inhomogeneously constrained degrees of freedom are so that the solution of the linear system already has the correct value (e.g., if the constraint is that 




On the other hand, in the second approach, the matrix diagonal element and corresponding right hand side entry for inhomogeneously constrained degrees of freedom are so that the solution of the linear system already has the correct value (e.g., if the constraint is that 




There remains the question of which of the approaches to take and why we need to set to zero the values of the solution vector in the first approach. The answer to both questions has to do with how iterative solvers solve the linear system. To this end, consider that we typically stop iterations when the residual has dropped below a certain fraction of the norm of the right hand side, or, alternatively, a certain fraction of the norm of the initial residual. Now consider this:
In addition to these considerations, consider the case where we have inhomogeneous constraints of the kind 




In addition to these considerations, consider the case where we have inhomogeneous constraints of the kind 




There are situations where degrees of freedom are constrained in more than one way, and sometimes in conflicting ways. Consider, for example the following situation:
Here, degree of freedom 





Here, degree of freedom 





So, which one will win? Or maybe: which one should win? There is no good answer to this question:






That said, what should you do if you know what you want is this:
Sometimes it is either not desirable, or not possible to directly condense, or eliminate constraints from a system of linear equations. In particular if there is no underlying matrix object that could be condensed (or taken care of constraints during assembly). This is usually the case if the system is described by a LinearOperator.
In this case we can solve the modified system
-![\[
(C^T A C + Id_c) \tilde x = C^T (b - A\,k)
-\]](form_71.png)
instead [1] (M. S. Shephard. Linear multipoint constraints applied via transformation as part of a direct stiffness assembly process. International Journal for Numerical Methods in Engineering 20(11):2107-2112, 1985).
-Here, 





-





+![\[
x \leftarrow C\,x+k.
-\]](form_77.png)
And finally, 
The corresponding solution of 

And finally, 
The corresponding solution of 

The whole system can be set up and solved with the following snippet of code:
Compute which entries of a matrix built on the given dof_handler may possibly be nonzero, and create a sparsity pattern object that represents these nonzero locations.
This function computes the possible positions of non-zero entries in the global system matrix by simulating which entries one would write to during the actual assembly of a matrix. For this, the function assumes that each finite element basis function is non-zero on a cell only if its degree of freedom is associated with the interior, a face, an edge or a vertex of this cell. As a result, a matrix entry 





This function computes the possible positions of non-zero entries in the global system matrix by simulating which entries one would write to during the actual assembly of a matrix. For this, the function assumes that each finite element basis function is non-zero on a cell only if its degree of freedom is associated with the interior, a face, an edge or a vertex of this cell. As a result, a matrix entry 





This algorithm makes no distinction between shape functions on each cell, i.e., it simply couples all degrees of freedom on a cell with all other degrees of freedom on a cell. This is often the case, and always a safe assumption. However, if you know something about the structure of your operator and that it does not couple certain shape functions with certain test functions, then you can get a sparser sparsity pattern by calling a variant of the current function described below that allows to specify which vector components couple with which other vector components.
The method described above lives on the assumption that coupling between degrees of freedom only happens if shape functions overlap on at least one cell. This is the case with most usual finite element formulations involving conforming elements. However, for formulations such as the Discontinuous Galerkin finite element method, the bilinear form contains terms on interfaces between cells that couple shape functions that live on one cell with shape functions that live on a neighboring cell. The current function would not see these couplings, and would consequently not allocate entries in the sparsity pattern. You would then get into trouble during matrix assembly because you try to write into matrix entries for which no space has been allocated in the sparsity pattern. This can be avoided by calling the DoFTools::make_flux_sparsity_pattern() function instead, which takes into account coupling between degrees of freedom on neighboring cells.
There are other situations where bilinear forms contain non-local terms, for example in treating integral equations. These require different methods for building the sparsity patterns that depend on the exact formulation of the problem. You will have to do this yourself then.
@@ -448,13 +448,13 @@This function is a simple variation on the previous make_sparsity_pattern() function (see there for a description of all of the common arguments), but it provides functionality for vector finite elements that allows to be more specific about which variables couple in which equation.
For example, if you wanted to solve the Stokes equations,
-
in two space dimensions, using stable Q2/Q1 mixed elements (using the FESystem class), then you don't want all degrees of freedom to couple in each equation. More specifically, in the first equation, only 





in two space dimensions, using stable Q2/Q1 mixed elements (using the FESystem class), then you don't want all degrees of freedom to couple in each equation. More specifically, in the first equation, only 





-![\[
\left[
\begin{array}{ccc}
1 & 0 & 1 \\
@@ -462,7 +462,7 @@
1 & 1 & 0
\end{array}
\right]
-\]](form_1007.png)
where "1" indicates that two variables (i.e., vector components of the FESystem) couple in the respective equation, and a "0" means no coupling. These zeros imply that upon discretization via a standard finite element formulation, we will not write entries into the matrix that, for example, couple pressure test functions with pressure shape functions (and similar for the other zeros above). It is then a waste to allocate memory for these entries in the matrix and the sparsity pattern, and you can avoid this by creating a mask such as the one above that describes this to the (current) function that computes the sparsity pattern. As stated above, the mask shown above refers to components of the composed FESystem, rather than to degrees of freedom or shape functions.
This function is designed to accept a coupling pattern, like the one shown above, through the couplings parameter, which contains values of type Coupling. It builds the matrix structure just like the previous function, but does not create matrix elements if not specified by the coupling pattern. If the couplings are symmetric, then so will be the resulting sparsity pattern.
and Id_c is the projection to the subspace consisting of all vector entries associated with constrained degrees of freedom.
This LinearOperator object is used together with constrained_right_hand_side() to build up the following modified system of linear equations:
-![\[
(C^T A C + Id_c) x = C^T (b - A\,k)
-\]](form_1610.png)
with a given (unconstrained) system matrix 



with a given (unconstrained) system matrix 



A detailed explanation of this approach is given in the Constraints on degrees of freedom module.
with
This LinearOperator object is used together with constrained_right_hand_side() to build up the following modified system of linear equations:
-![\[
(C^T A C + Id_c) x = C^T (b - A\,k)
-\]](form_1610.png)
with a given (unconstrained) system matrix 



with a given (unconstrained) system matrix 



A detailed explanation of this approach is given in the Constraints on degrees of freedom module.
This function is an updated version of the project_boundary_values_curl_conforming function. The intention is to fix a problem when using the previous function in conjunction with non- rectangular geometries (i.e. elements with non-rectangular faces). The L2-projection method used has been taken from the paper "Electromagnetic scattering simulation using an H (curl) conforming hp-finite element method in three dimensions" by PD Ledger, K Morgan and O Hassan ( Int. J. Num. Meth. Fluids, Volume 53, Issue 8, pages 1267-1296).
-This function will compute constraints that correspond to Dirichlet boundary conditions of the form 


This function will compute constraints that correspond to Dirichlet boundary conditions of the form 


To compute the constraints we use a projection method based upon the paper mentioned above. In 2d this is done in a single stage for the edge- based shape functions, regardless of the order of the finite element. In 3d this is done in two stages, edges first and then faces.
-For each cell, each edge, 




with 


Once all edge constraints, 
For each face on the cell, 




and 
The resulting constraints are then given in the solutions 

For each cell, each edge, 




with 


Once all edge constraints, 
For each face on the cell, 




and 
The resulting constraints are then given in the solutions 

If the AffineConstraints constraints contained values or other constraints before, the new ones are added or the old ones overwritten, if a node of the boundary part to be used was already in the list of constraints. This is handled by using inhomogeneous constraints. Please note that when combining adaptive meshes and this kind of constraints, the Dirichlet conditions should be set first, and then completed by hanging node constraints, in order to make sure that the discretization remains consistent. See the discussion on conflicting constraints in the module on Constraints on degrees of freedom.
This function is explicitly for use with FE_Nedelec elements, or with FESystem elements which contain FE_Nedelec elements. It will throw an exception if called with any other finite element. The user must ensure that FESystem elements are correctly setup when using this function as this check not possible in this case.
-The second argument of this function denotes the first vector component of the finite element which corresponds to the vector function that you wish to constrain. For example, if we are solving Maxwell's equations in 3d and have components 

first_vector_component would be 3. The boundary_function must return 6 components in this example, with the first 3 corresponding to 

dim components that are ordered in the same way as we usually order the coordinate directions, i.e. 


The second argument of this function denotes the first vector component of the finite element which corresponds to the vector function that you wish to constrain. For example, if we are solving Maxwell's equations in 3d and have components 

first_vector_component would be 3. The boundary_function must return 6 components in this example, with the first 3 corresponding to 

dim components that are ordered in the same way as we usually order the coordinate directions, i.e. 


The parameter boundary_component corresponds to the number boundary_id of the face. numbers::internal_face_boundary_id is an illegal value, since it is reserved for interior faces.
The last argument is denoted to compute the normal vector 
The last argument is denoted to compute the normal vector 
Compute constraints that correspond to boundary conditions of the form 



boundary_function and the resulting constraints are added to constraints for faces with boundary indicator boundary_component.
Compute constraints that correspond to boundary conditions of the form 



boundary_function and the resulting constraints are added to constraints for faces with boundary indicator boundary_component.
This function is explicitly written to use with the FE_RaviartThomas elements. Thus it throws an exception, if it is called with other finite elements.
If the AffineConstraints object constraints contained values or other constraints before, the new ones are added or the old ones overwritten, if a node of the boundary part to be used was already in the list of constraints. This is handled by using inhomogeneous constraints. Please note that when combining adaptive meshes and this kind of constraints, the Dirichlet conditions should be set first, and then completed by hanging node constraints, in order to make sure that the discretization remains consistent. See the discussion on conflicting constraints in the module on Constraints on degrees of freedom.
The only thing to pay attention to is for which degrees of freedom the sparsity needs to store entries. These are, in essence, the ones we could possibly store values to in the matrix upon assembly. It is clear that these are certainly the locally active degrees of freedom (which live on the cells we locally own) but through constraints, it may also be possible to write to entries that are located on ghost cells. Consequently, you need to pass the index set that results from DoFTools::extract_locally_relevant_dofs() upon initializing the sparsity pattern.
When creating the sparsity pattern as well as when assembling the linear system, we need to know about constraints on degrees of freedom, for example resulting from hanging nodes or boundary conditions. Like the DynamicSparsityPattern class, the AffineConstraints container can also take an IndexSet upon construction that indicates for which of the possibly very large number of degrees of freedom it should actually store constraints. Unlike for the sparsity pattern, these are now only those degrees of freedom which we work on locally when assembling, namely those returned by DoFTools::extract_locally_active_dofs() (a superset of the locally owned ones).
-There are, however, situations where more complicated constraints appear in finite element programs. An example is in 
There are, however, situations where more complicated constraints appear in finite element programs. An example is in 
In general, your program will continue to do something if you happen to not store all necessary constraints on each processor: you will just generate wrong matrix entries, but the program will not abort. This is opposed to the situation of the sparsity pattern: there, if the IndexSet passed to the DynamicSparsityPattern indicates that it should store too few rows of the matrix, the program will either abort when you attempt to write into matrix entries that do not exist or the matrix class will silently allocate more memory to accommodate them. As a consequence, it is useful to err on the side of caution when indicating which constraints to store and use the result of DoFTools::extract_locally_relevant_dofs() rather than DoFTools::extract_locally_active_dofs() . This is also affordable since the set of locally relevant degrees of freedom is only marginally larger than the set of locally active degrees of freedom. We choose this strategy in step-32, step-40, and step-55.
Like everything else, you can only do postprocessing on cells a local processor owns. The DataOut and KellyErrorEstimator classes do this automatically: they only operate on locally owned cells without the need to do anything in particular. At least for large computations, there is also no way to merge the results of all these local computations on a single machine, i.e. each processor has to be self-sufficient. For example, each processor has to generate its own parallel output files that have to be visualized by a program that can deal with multiple input files rather than merging the results of calling DataOut to a single processor before generating a single output file. The latter can be achieved, for example, using the DataOutBase::write_vtu() and DataOutBase::write_pvtu_record() functions.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__hpcollection.html differs (JavaScript source, ASCII text, with very long lines (1032)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__hpcollection.html 2023-11-25 15:26:00.109885621 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__hpcollection.html 2023-11-25 15:26:00.109885621 +0100 @@ -116,7 +116,7 @@ * fe_collection.push_back (FE_Q<dim>(degree)); *This way, one can add elements of polynomial degree 1 through 4 to the collection. It is not necessary to retain the added object: the collection makes a copy of it, it does not only store a pointer to the given finite element object. This same observation also holds for the other collection classes.
It is customary that within an hp-finite element program, one keeps collections of finite elements and quadrature formulas with the same number of elements, each element of the one collection matching the element in the other. This is not necessary, but it often makes coding a lot simpler. If a collection of mappings is used, the same holds for hp::MappingCollection objects as well.
-Whenever p-adaptivity is considered in an hp-finite element program, a hierarchy of finite elements needs to be established to determine succeeding finite elements for refinement and preceding ones for coarsening. Typically, this hierarchy considers how finite element spaces are nested: for example, a 


Whenever p-adaptivity is considered in an hp-finite element program, a hierarchy of finite elements needs to be established to determine succeeding finite elements for refinement and preceding ones for coarsening. Typically, this hierarchy considers how finite element spaces are nested: for example, a 


By default, we assume that finite elements are stored in an ascending order based on their polynomial degree. If the order of elements differs, a corresponding hierarchy needs to be supplied to the collection via the hp::FECollection::set_hierarchy() member function.
So why does this matter? After all, the last two meshes describe the exact same domain and we know that upon mesh refinement we obtain the correct solution regardless of the choice of cells, as long as the diameter of the largest cell goes to zero.
-There are two answers to this question. First, the numerical effort of solving a partial differential equation to a certain accuracy typically depends on the quality of cells since the constant 

There are two answers to this question. First, the numerical effort of solving a partial differential equation to a certain accuracy typically depends on the quality of cells since the constant 

In a realistic application, it happens regularly that different manifold descriptions need to be combined. The simplest case is when a curved description is only available for the boundary but not for the interior of the computational domain. The manifold description for a ball also falls into this category, as it needs to combine a spherical manifold at the circular part with a straight-sided description in the center of the domain where the spherical manifold is not valid.
-In general, the process of blending different manifold descriptions in deal.II is achieved by the so-called transfinite interpolation. Its formula in 2D is, for example, described on Wikipedia. Given a point 
-Wikipedia. Given a point

+![\begin{align*}
\mathbf S(u,v) &= (1-v)\mathbf c_0(u)+v \mathbf c_1(u) + (1-u)\mathbf c_2(v) + u \mathbf c_3(v) \\
&\quad - \left[(1-u)(1-v) \mathbf x_0 + u(1-v) \mathbf x_1 + (1-u)v \mathbf x_2 + uv \mathbf x_3 \right]
- \end{align*}](form_102.png)
where 

If we want to find the center of the cell according to the manifold (that is also used when the grid is refined), the chart is the unit cell 









In three spatial dimensions, the weights are 



In the MappingQGeneric class, a generalization of this concept to the support points of a polynomial representation of curved cells, the nodes of the Gauss-Lobatto quadrature, is implemented by evaluating the boundary curves in the respective Gauss-Lobatto points 


where 

If we want to find the center of the cell according to the manifold (that is also used when the grid is refined), the chart is the unit cell 









In three spatial dimensions, the weights are 



In the MappingQGeneric class, a generalization of this concept to the support points of a polynomial representation of curved cells, the nodes of the Gauss-Lobatto quadrature, is implemented by evaluating the boundary curves in the respective Gauss-Lobatto points 


In the literature, other boundary descriptions are also used. Before version 9.0 deal.II used something called Laplace smoothing where the weights that are applied to the nodes on the circumference to get the position of the interior nodes are determined by solving a Laplace equation on the unit element. However, this led to boundary layers close to the curved description, i.e., singularities in the higher derivatives of the mapping from unit to real cell.
If the transition from a curved boundary description to a straight description in the interior is done wrong, it is typically impossible to achieve high order convergence rates. For example, the Laplace smoothing inside a single cell leads to a singularity in the fourth derivative of the mapping from the reference to the real cell, limiting the convergence rate to 3 in the cells at the boundary (and 3.5 if global L2 errors were measured in 2D). Other more crude strategies, like completely ignoring the presence of two different manifolds and simply computing the additional points of a high-order mapping in a straight coordinate system, could lead to even worse convergence rates. The current implementation in deal.II, on the other hand, has been extensively verified in this respect and should behave optimally.
A bad strategy for blending a curved boundary representation with flat interior representations obviously also reflects mesh quality. For example, the above case with only 3 circumferential cells leads to the following mesh with Laplace manifold smoothing rather than the interpolation from the boundary as is implemented in deal.II:
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__mapping.html differs (JavaScript source, ASCII text, with very long lines (569)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__mapping.html 2023-11-25 15:26:00.139885011 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__mapping.html 2023-11-25 15:26:00.139885011 +0100 @@ -165,7 +165,7 @@A class that implements a polynomial mapping 

A class that implements a polynomial mapping 

Definition at line 702 of file mapping_q.h.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__matrixfree.html differs (JavaScript source, ASCII text, with very long lines (2603)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__matrixfree.html 2023-11-25 15:26:00.153218075 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/group__matrixfree.html 2023-11-25 15:26:00.153218075 +0100 @@ -140,7 +140,7 @@







To summarize, matrix-free computations are the way to go for higher order elements (where higher order means everything except linear shape functions) and use in explicit time stepping (step-48) or iterative solvers where also preconditioning can be done in a matrix-free way, as demonstrated in the step-37 and step-59 tutorial programs.
The motivation for the FEEvaluationAccess classes is to allow for specializations of the value and gradient access of interpolated solution fields depending on the number of components. Whereas the base class FEEvaluationBase returns the gradient as a Tensor<1,n_components,Tensor<1,dim,VectorizedArray<Number>>>, with the outer tensor going over the components and the inner tensor going through the dim components of the gradient. For a scalar field, i.e., n_components=1, we can skip the outer tensor and simply use Tensor<1,dim,VectorizedArray<Number>> as the gradient type. Likewise, for a system with n_components=dim, the appropriate format for the gradient is Tensor<2,dim,VectorizedArray<Number>>.
Face integrals, like for inhomogeneous Neumann conditions in continuous FEM or for the large class of discontinuous Galerkin schemes, require the evaluation of quantities on the quadrature point of a face, besides the cell integrals. The facilities for face evaluation are mostly shared with FEEvaluation, in the sense that FEFaceEvaluation also inherits from FEEvaluationAccess. All data fields regarding the degrees of freedom and shape functions can be reused, the latter because all information consists of 1D shape data anyway. With respect to the mapping data, however, a specialization is used because the data is of structdim=dim-1. As a consequence, the FEEvaluationAccess and FEEvaluationBase are given a template argument is_face to hold pointers to the cell and face mapping information, respectively. Besides access to the function values with FEEvaluationAccess::get_value() or gradients with FEEvaluationAccess::get_gradient(), the face evaluator also enables the access to the normal vector by FEEvaluationAccess::normal_vector() and a specialized field FEEvaluationAccess::get_normal_derivative(), which returns the derivative of the solution field normal to the face. This quantity is computed as the gradient (in real space) multiplied by the normal vector. The combination of the gradient and normal vector is typical of many (simple) second-order elliptic equations, such as the discretization of the Laplacian with the interior penalty method. If the gradient alone is not needed, the combined operation significantly reduces the data access, because only dim data entries for normal * Jacobian per quadrature point are necessary, as opposed to dim^2 fields for the Jacobian and dim fields for the normal when accessing them individually.
An important optimization for the computation of face integrals is to think about the amount of vector data that must be accessed to evaluate the integrals on a face. Think for example of the case of FE_DGQ, i.e., Lagrange polynomials that have some of their nodes on the element boundary. For evaluation of the function values, only 

if statement (conditional jump) that is easily predictable for a modern CPU as the decision is always the same inside an integration loop. (One only pays by somewhat increased compile times because the compiler needs to generate code for all paths, though).
An important optimization for the computation of face integrals is to think about the amount of vector data that must be accessed to evaluate the integrals on a face. Think for example of the case of FE_DGQ, i.e., Lagrange polynomials that have some of their nodes on the element boundary. For evaluation of the function values, only 

if statement (conditional jump) that is easily predictable for a modern CPU as the decision is always the same inside an integration loop. (One only pays by somewhat increased compile times because the compiler needs to generate code for all paths, though).
The tasks performed by FEEvaluation and FEFaceEvaluation can be split into the three categories: index access into vectors, evaluation and integration on the unit cell, and operation on quadrature points including the geometry evaluation. This split is reflected by the major data fields contained by MatrixFree, using internal::MatrixFreeFunctions::DoFInfo, internal::MatrixFreeFunctions::ShapeInfo, and internal::MatrixFreeFunctions::MappingInfo for each these three categories, respectively. Their design principles and internal layout is described in the following subsections.
The main interface all these data structure adhere to is that integration tasks are broken down into a range of cells or faces that one can index into by a single integer index. The information about an integer range for the cell integrals, inner face integrals, and boundary integrals is provided by the class internal::MatrixFreeFunctions::TaskInfo, using the data fields cell_partition_data, face_partition_data, and boundary_partition_data. This class also contains information about subranges of indices for scheduling tasks in parallel using threads, and a grouping of the index range within {cell,face,boundary}_partition_data for interleaving cell and face integrals such that the access to vector entries for cell and face integrals re-uses data already in caches.
From the examples above, it is obvious that if we encounter a cell that cannot be added to the cells which have already been entered, we can not usually point to a cell that is the culprit and that must be entered in a different orientation. Furthermore, even if we knew which cell, there might be large number of cells that would then cease to fit into the grid and which we would have to find a different orientation as well (in the second example above, if we rotated cell 1, then we would have to rotate the cells 1 through N-1 as well).
A brute force approach to this problem is the following: if cell N can't be added, then try to rotate cell N-1. If we can't rotate cell N-1 any more, then try to rotate cell N-2 and try to add cell N with all orientations of cell N-1. And so on. Algorithmically, we can visualize this by a tree structure, where node N has as many children as there are possible orientations of node N+1 (in two space dimensions, there are four orientations in which each cell can be constructed from its four vertices; for example, if the vertex indices are (0 1 3 2), then the four possibilities would be (0 1 3 2), (1 3 2 0), (3 2 0 1), and (2 0 1 3)). When adding one cell after the other, we traverse this tree in a depth-first (pre-order) fashion. When we encounter that one path from the root (cell 0) to a leaf (the last cell) is not allowed (i.e. that the orientations of the cells which are encoded in the path through the tree does not lead to a valid triangulation), we have to track back and try another path through the tree.
In practice, of course, we do not follow each path to a final node and then find out whether a path leads to a valid triangulation, but rather use an inductive argument: if for all previously added cells the triangulation is a valid one, then we can find out whether a path through the tree can yield a valid triangulation by checking whether entering the present cell would introduce any faces that have a nonunique direction; if that is so, then we can stop following all paths below this point and track back immediately.
-Nevertheless, it is already obvious that the tree has 


Nevertheless, it is already obvious that the tree has 


In fact, the two examples above show that the exponential estimate is not a pessimistic one: we indeed have to track back to one of the very first cells there to find a way to add all cells in a consistent fashion.
This discouraging situation is greatly improved by the fact that we have an alternative algorithm for 2d that is always linear in runtime (discovered and implemented by Michael Anderson of TICAM, University of Texas, in 2003), and that for 3d we can find an algorithm that in practice is usually only roughly linear in time and memory. We will describe these algorithms in the following. A full description and theoretical analysis is given in [AABB17] .
In many cases, function has no state, and so we can split this loop into several sub-ranges as explained above. Consequently, deal.II has a set of functions parallel::transform that look like the one above but that do their work in parallel (there are several versions with one, two, and more input iterators for function objects that take one, two, or more arguments). The only difference in calling these functions is that they take an additional last argument that denotes the minimum size of sub-ranges of [begin_in_1,end_in_1); it should be big enough so that we don't spend more time on scheduling sub-ranges to processors but small enough that processors can be efficiently load balanced. A rule of thumb appears to be that a sub-range is too small if it takes less than 2000 instructions to execute it.
An example of how to use these functions are vector operations like the addition in 
An example of how to use these functions are vector operations like the addition in 
In this example, we used a lambda expression to construct, on the fly, a function object that takes two arguments and returns the sum of the two. This is exactly what we needed when we want to add the individual elements of vectors 


In this example, we used a lambda expression to construct, on the fly, a function object that takes two arguments and returns the sum of the two. This is exactly what we needed when we want to add the individual elements of vectors 


Here, we call the vmult_on_subrange function on sub-ranges of at least 200 elements each, so that the initial setup cost can amortize.
A related operation is when the loops over elements each produce a result that must then be accumulated (other reduction operations than addition of numbers would work as well). An example is to form the matrix norm 

A related operation is when the loops over elements each produce a result that must then be accumulated (other reduction operations than addition of numbers would work as well). An example is to form the matrix norm 

The last issue that is worth addressing is that the way we wrote the MyClass::assemble_on_one_cell function above, we create and destroy an FEValues object every time the function is called, i.e. once for each cell in the triangulation. That's an immensely expensive operation because the FEValues class tries to do a lot of work in its constructor in an attempt to reduce the number of operations we have to do on each cell (i.e. it increases the constant in the 


The last issue that is worth addressing is that the way we wrote the MyClass::assemble_on_one_cell function above, we create and destroy an FEValues object every time the function is called, i.e. once for each cell in the triangulation. That's an immensely expensive operation because the FEValues class tries to do a lot of work in its constructor in an attempt to reduce the number of operations we have to do on each cell (i.e. it increases the constant in the 


The way to avoid this is to put the FEValues object into a second structure that will hold scratch data, and initialize it in the constructor:
indeed has four components. We note that we could change the ordering of the solution components 


Next, we need to think about test functions 


+
indeed has four components. We note that we could change the ordering of the solution components 


Next, we need to think about test functions 


These views can then be asked for information about these individual components. For example, when you write fe_values[pressure].value(i,q) you get the value of the pressure component of the 


pressure represents a scalar component, the results of the operator fe_values[pressure].value(i,q) is a scalar number. On the other hand, the call fe_values[velocities].value(i,q) would produce the value of a whole set of dim components, which would be of type Tensor<1,dim>.
These views can then be asked for information about these individual components. For example, when you write fe_values[pressure].value(i,q) you get the value of the pressure component of the 


pressure represents a scalar component, the results of the operator fe_values[pressure].value(i,q) is a scalar number. On the other hand, the call fe_values[velocities].value(i,q) would produce the value of a whole set of dim components, which would be of type Tensor<1,dim>.
So if, again, this is not the code we use in step-8, what do we do there? The answer rests on the finite element we use. In step-8, we use the following element:
In other words, the finite element we use consists of dim copies of the same scalar element. This is what we call a primitive element: an element that may be vector-valued but where each shape function has exactly one non-zero component. In other words: if the 


primitive element: an element that may be vector-valued but where each shape function has exactly one non-zero component. In other words: if the









In a similar vein, if only one component of a shape function is nonzero, then only one row of its gradient 


If we use this sort of knowledge, then we can in a first step avoid computing gradient tensors if we can determine up front that their scalar product will be nonzero, in a second step avoid building the entire tensors and only get its nonzero components, and in a final step simplify the scalar product by only considering that index 
If we use this sort of knowledge, then we can in a first step avoid computing gradient tensors if we can determine up front that their scalar product will be nonzero, in a second step avoid building the entire tensors and only get its nonzero components, and in a final step simplify the scalar product by only considering that index 
The vehicle for all this is the ability to determine which vector component is going to be nonzero. This information is provided by the FiniteElement::system_to_component_index function. What can be done with it, using the example above, is explained in detail in step-8.
Using techniques as shown above, it isn't particularly complicated to assemble the linear system, i.e. matrix and right hand side, for a vector-valued problem. However, then it also has to be solved. This is more complicated. Naively, one could just consider the matrix as a whole. For most problems, this matrix is not going to be definite (except for special cases like the elasticity equations covered in step-8 and step-17). It will, often, also not be symmetric. This rather general class of matrices presents problems for iterative solvers: the lack of structural properties prevents the use of most efficient methods and preconditioners. While it can be done, the solution process will therefore most often be slower than necessary.
@@ -614,7 +614,7 @@ \right), \end{eqnarray*}" src="form_337.png"/> - where 


where 


By default, this is not what happens, however. Rather, deal.II assigns numbers to degrees of freedom in a rather random manner. Consequently, if you form a vector out of the values of degrees of freedom will not be neatly ordered in a vector like

This has the advantage that the matrices 

How a solver like this is implemented is explained in more detail in step-20, step-31, and a few other tutorial programs. What we would like to point out here is that we now need a way to extract certain parts of a matrix or vector: if we are to multiply, say, the 

This has the advantage that the matrices 

How a solver like this is implemented is explained in more detail in step-20, step-31, and a few other tutorial programs. What we would like to point out here is that we now need a way to extract certain parts of a matrix or vector: if we are to multiply, say, the 

This is where the BlockVector, BlockSparseMatrix, and similar classes come in. For all practical purposes, then can be used as regular vectors or sparse matrices, i.e. they offer element access, provide the usual vector operations and implement, for example, matrix-vector multiplications. In other words, assembling matrices and right hand sides works in exactly the same way as for the non-block versions. That said, internally they store the elements of vectors and matrices in "blocks"; for example, instead of using one large array, the BlockVector class stores it as a set of arrays each of which we call a block. The advantage is that, while the whole thing can be used as a vector, one can also access an individual block which then, again, is a vector with all the vector operations.
To show how to do this, let us consider the second equation 
What's happening here is that we allocate a temporary vector with as many elements as the first block of the solution vector, i.e. the velocity component 









What's happening here is that we allocate a temporary vector with as many elements as the first block of the solution vector, i.e. the velocity component 









Once one has computed a solution, it is often necessary to evaluate it at quadrature points, for example to evaluate nonlinear residuals for the next Newton iteration, to evaluate the finite element residual for error estimators, or to compute the right hand side for the next time step in a time dependent problem.
The way this is done us to again use an FEValues object to evaluate the shape functions at quadrature points, and with those also the values of a finite element function. For the example of the mixed Laplace problem above, consider the following code after solving:
DoFHandler: DoFHandler objects are the confluence of triangulations and finite elements: the finite element class describes how many degrees of freedom it needs per vertex, line, or cell, and the DoFHandler class allocates this space so that each vertex, line, or cell of the triangulation has the correct number of them. It also gives them a global numbering.
-A different viewpoint is this: While the mesh and finite element describe abstract properties of the finite dimensional space 


A different viewpoint is this: While the mesh and finite element describe abstract properties of the finite dimensional space 


Just as with triangulation objects, most operations on DoFHandlers are done by looping over all cells and doing something on each or a subset of them. The interfaces of the two classes are therefore rather similar: they allow to get iterators to the first and last cell (or face, or line, etc) and offer information through these iterators. The information that can be gotten from these iterators is the geometric and topological information that can already be gotten from the triangulation iterators (they are in fact derived classes) as well as things like the global numbers of the degrees of freedom on the present cell. On can also ask an iterator to extract the values corresponding to the degrees of freedom on the present cell from a data vector that stores values for all degrees of freedom associated with a triangulation.
It is worth noting that, just as triangulations, DoFHandler classes do not know anything about the mapping from the unit cell to its individual cells. It is also ignorant of the shape functions that correspond to the degrees of freedom it manages: all it knows is that there are, for example, 2 degrees of freedom for each vertex and 4 per cell interior. Nothing about their specifics is relevant to the DoFHandler class with the exception of the fact that they exist.
The DoFHandler class and its associates are described in the Degrees of Freedom module. In addition, there are specialized versions that can handle multilevel and hp-discretizations. These are described in the Multilevel support and hp-finite element support modules. Finite element methods frequently imply constraints on degrees of freedom, such as for hanging nodes or nodes at which boundary conditions apply; dealing with such constraints is described in the Constraints on degrees of freedom module.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index__set_8h.html differs (JavaScript source, ASCII text, with very long lines (420)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index__set_8h.html 2023-11-25 15:26:00.229883182 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/index__set_8h.html 2023-11-25 15:26:00.229883182 +0100 @@ -145,7 +145,7 @@Create and return an index set of size 
Create and return an index set of size 
This function exists so that one can create and initialize index sets that are complete in one step, or so one can write code like
Check if data on all children match, and return value of the first child.
-![\[
d_{K_p} = d_{K_c}
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2055.png)
Return sum of data on all children.
-![\[
d_{K_p} = \sum d_{K_c}
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2058.png)
This strategy preserves the 
This strategy preserves the 
Return 
Return 
-![\[
d_{K_p}^2 = \sum d_{K_c}^2
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2060.png)
This strategy preserves the 
This strategy preserves the 
Return mean value of data on all children.
-![\[
d_{K_p} = \sum d_{K_c} / n_\text{children}
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2061.png)
Return maximum value of data on all children.
-![\[
d_{K_p} = \max \left( d_{K_c} \right)
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2064.png)
Return a vector containing copies of data of the parent cell for each child.
-![\[
d_{K_c} = d_{K_p}
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2051.png)
Return a vector which contains data of the parent cell being equally divided among all children.
-![\[
d_{K_c} = d_{K_p} / n_\text{children}
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2052.png)
This strategy preserves the 
This strategy preserves the 
Return a vector which contains squared data of the parent cell being equally divided among the squares of all children.
-![\[
d_{K_c}^2 = d_{K_p}^2 / n_\text{children}
\qquad
\forall K_c \text{ children of } K_p
-\]](form_2054.png)
This strategy preserves the 
This strategy preserves the 
The members of this enum are used to describe the logical interpretation of what the various components of a vector-valued data set mean. For example, if one has a finite element for the Stokes equations in 2d, representing components 


The members of this enum are used to describe the logical interpretation of what the various components of a vector-valued data set mean. For example, if one has a finite element for the Stokes equations in 2d, representing components 


By passing a set of enums of the current kind to the DataOut_DoFData::add_data_vector functions, this can be achieved.
See the step-22 tutorial program for an example on how this information can be used in practice.
This namespace provides functions that compute a cell-wise approximation of the norm of a derivative of a finite element field by taking difference quotients between neighboring cells. This is a rather simple but efficient form to get an error indicator, since it can be computed with relatively little numerical effort and yet gives a reasonable approximation.
-The way the difference quotients are computed on cell 














Thus, if the matrix 


Thus, if the matrix 


approximate_gradient function of this class is the 
The computation of this quantity must fail if a cell has only neighbors for which the direction vectors 

approximate_gradient function of this class is the 
The computation of this quantity must fail if a cell has only neighbors for which the direction vectors 

As can easily be verified, this can only happen on very coarse grids, when some cells and all their neighbors have not been refined even once. You should therefore only call the functions of this class if all cells are at least once refined. In practice this is not much of a restriction.
Similar to the reasoning above, approximations to higher derivatives can be computed in a similar fashion. For example, the tensor of second derivatives is approximated by the formula 



The returned value on each cell is the spectral norm of the approximated tensor of second derivatives, i.e. the largest eigenvalue by absolute value. This equals the largest curvature of the finite element field at each cell, and the spectral norm is the matrix norm associated to the 



The returned value on each cell is the spectral norm of the approximated tensor of second derivatives, i.e. the largest eigenvalue by absolute value. This equals the largest curvature of the finite element field at each cell, and the spectral norm is the matrix norm associated to the 
Even higher than the second derivative can be obtained along the same lines as exposed above.
If you would like to base a refinement criterion upon these approximation of the derivatives, you will have to scale the results of this class by an appropriate power of the mesh width. For example, since 



If you would like to base a refinement criterion upon these approximation of the derivatives, you will have to scale the results of this class by an appropriate power of the mesh width. For example, since 



Likewise, for the second derivative, one should choose a power of the mesh size 
The formulae for the computation of approximations to the gradient and to the tensor of second derivatives shown above are very much alike. The basic difference is that in one case the finite difference quotient is a scalar, while in the other case it is a vector. For higher derivatives, this would be a tensor of even higher rank. We then have to form the outer product of this difference quotient with the distance vector 

Gradient and SecondDerivative) and the main algorithm is simply passed one or the other data types and asks them to perform the order dependent operations. The main framework that is independent of this, such as finding all active neighbors, or setting up the matrix 
approximate.
The formulae for the computation of approximations to the gradient and to the tensor of second derivatives shown above are very much alike. The basic difference is that in one case the finite difference quotient is a scalar, while in the other case it is a vector. For higher derivatives, this would be a tensor of even higher rank. We then have to form the outer product of this difference quotient with the distance vector 

Gradient and SecondDerivative) and the main algorithm is simply passed one or the other data types and asks them to perform the order dependent operations. The main framework that is independent of this, such as finding all active neighbors, or setting up the matrix 
approximate.
Due to this way of operation, the class may be easily extended for higher order derivatives than are presently implemented. Basically, only an additional class along the lines of the derivative descriptor classes Gradient and SecondDerivative has to be implemented, with the respective alias and functions replaced by the appropriate analogues for the derivative that is to be approximated.
This function is the analogue to the one above, computing finite difference approximations of the tensor of second derivatives. Pass it the DoF handler object that describes the finite element field, a nodal value vector, and receive the cell-wise spectral norm of the approximated tensor of second derivatives. The spectral norm is the matrix norm associated to the 
This function is the analogue to the one above, computing finite difference approximations of the tensor of second derivatives. Pass it the DoF handler object that describes the finite element field, a nodal value vector, and receive the cell-wise spectral norm of the approximated tensor of second derivatives. The spectral norm is the matrix norm associated to the 
The last parameter denotes the solution component, for which the gradient is to be computed. It defaults to the first component. For scalar elements, this is the only valid choice; for vector-valued ones, any component between zero and the number of vector components can be given here.
In a parallel computation the solution vector needs to contain the locally relevant unknowns.
Return a symbolic number that represents the Euler constant 
exponent.
Return a symbolic number that represents the Euler constant 
exponent.
Mimics the function std::exp(exponent) using the standard math library.
Definition at line 60 of file symengine_math.cc.
@@ -2894,7 +2894,7 @@Return an Expression representing a scalar symbolic variable with the identifier specified by symbol.
For example, if the symbol is the string "x" then the scalar symbolic variable that is returned represents the scalar 
For example, if the symbol is the string "x" then the scalar symbolic variable that is returned represents the scalar 
| [in] | symbol | An identifier (or name) for the returned symbolic variable. |
Return an Expression representing a scalar symbolic function with the identifier specified by symbol. The function's symbolic dependencies are specified by the input arguments.
For example, if the symbol is the string "f", and the arguments to the function that is generated are the symbolic variable x and the symbolic expression y+z, then the generic symbolic function that is returned represents 
For example, if the symbol is the string "f", and the arguments to the function that is generated are the symbolic variable x and the symbolic expression y+z, then the generic symbolic function that is returned represents 
| [in] | symbol | An identifier (or name) for the returned symbolic function. |
Return an Expression representing a scalar symbolic function with the identifier specified by symbol. The function's symbolic dependencies are specified by the keys to the input arguments map; the values stored in the map are ignored.
For example, if the symbol is the string "f", and the arguments to the function that is generated are the symbolic variable x and the symbolic expression y+z, then the generic symbolic function that is returned represents 
For example, if the symbol is the string "f", and the arguments to the function that is generated are the symbolic variable x and the symbolic expression y+z, then the generic symbolic function that is returned represents 
| [in] | symbol | An identifier (or name) for the returned symbolic function. |


Definition at line 70 of file symengine_scalar_operations.cc.
@@ -4270,7 +4270,7 @@Return a substitution map that has any explicit interdependencies between the entries of the input substitution_map resolved.
The force_cyclic_dependency_resolution flag exists to ensure, if desired, that no cyclic dependencies can exist in the returned map. If a cyclic dependency exists in the input substitution map, substitution_map, then with this flag set to true the dependency cycle is broken by a dictionary-ordered substitution. For example, if the substitution map contains two entries map["a"] -> "b" and map["b"] -> "a", then the result of calling this function would be a map with the elements map["a"] -> "a" and map["b"] -> "a".
If one symbol is an explicit function of another, and it is desired that all their values are completely resolved, then it may be necessary to perform substitution a number of times before the result is finalized. This function performs substitution sweeps for a set of symbolic variables until all explicit relationships between the symbols in the map have been resolved. Whether each entry returns a symbolic or real value depends on the nature of the values stored in the substitution map. If the values associated with a key are also symbolic then the returned result may still be symbolic in nature. The terminal result of using the input substitution map, symbol_values, is then guaranteed to be rendered by a single substitution of the returned dependency-resolved map.
Example: If map["a"] -> 1 and map["b"] -> "a"+ 2, then the function 

![$f = [3+a]_{a=1} = 4$](form_938.png)
map["a"] -> 1 and map["b"] -> 1 + 2 = 3 and thus, using only one substitution, that 
Example: If map["a"] -> 1 and map["b"] -> "a"+ 2, then the function 

![$f = [3+a]_{a=1} = 4$](form_929.png)
map["a"] -> 1 and map["b"] -> 1 + 2 = 3 and thus, using only one substitution, that 
Examples:
If map["a"] == 1 and map["b"] == "a" + 2, then the function 

If map["a"] == 1 and map["b"] == "a" + 2, then the function 

map["a"] == "b"+2 and map["b"] == 1, then the function 
![$f\vert_{a=b+2, b} = [b+2+b]_{b=1} = 4$](form_942.png)
map["a"] == "b"+2 and map["b"] == 1, then the function 
![$f\vert_{a=b+2, b} = [b+2+b]_{b=1} = 4$](form_933.png)
Return a vector of Expressions representing a vectorial symbolic variable with the identifier specified by symbol.
For example, if the symbol is the string "v" then the vectorial symbolic variable that is returned represents the vector 

symbol, and has a suffix that indicates its component index.
For example, if the symbol is the string "v" then the vectorial symbolic variable that is returned represents the vector 

symbol, and has a suffix that indicates its component index.
| dim | The dimension of the returned tensor. |
Return a tensor of Expressions representing a tensorial symbolic variable with the identifier specified by symbol.
For example, if the symbol is the string "T" then the tensorial symbolic variable that is returned represents the vector 

symbol, and has a suffix that indicates its component indices.
For example, if the symbol is the string "T" then the tensorial symbolic variable that is returned represents the vector 

symbol, and has a suffix that indicates its component indices.
| rank | The rank of the returned tensor. |
























Using the constraint information usually leads to reductions in bandwidth of 10 or 20 per cent, but may for some very unstructured grids also lead to an increase. You have to weigh the decrease in your case with the time spent to use the constraint information, which usually is several times longer than the ‘pure’ renumbering algorithm.
In almost all cases, the renumbering scheme finds a corner to start with. Since there is more than one corner in most grids and since even an interior degree of freedom may be a better starting point, giving the starting point by the user may be a viable way if you have a simple scheme to derive a suitable point (e.g. by successively taking the third child of the cell top left of the coarsest level, taking its third vertex and the dof index thereof, if you want the top left corner vertex). If you do not know beforehand what your grid will look like (e.g. when using adaptive algorithms), searching a best starting point may be difficult, however, and in many cases will not justify the effort.
For finite elements composed of several base elements using the FESystem class, or for elements which provide several components themselves, it may be of interest to sort the DoF indices by component. This will then bring out the block matrix structure, since otherwise the degrees of freedom are numbered cell-wise without taking into account that they may belong to different components. For example, one may want to sort degree of freedom for a Stokes discretization so that we first get all velocities and then all the pressures so that the resulting matrix naturally decomposes into a 
For finite elements composed of several base elements using the FESystem class, or for elements which provide several components themselves, it may be of interest to sort the DoF indices by component. This will then bring out the block matrix structure, since otherwise the degrees of freedom are numbered cell-wise without taking into account that they may belong to different components. For example, one may want to sort degree of freedom for a Stokes discretization so that we first get all velocities and then all the pressures so that the resulting matrix naturally decomposes into a 
This kind of numbering may be obtained by calling the component_wise() function of this class. Since it does not touch the order of indices within each component, it may be worthwhile to first renumber using the Cuthill- McKee or a similar algorithm and afterwards renumbering component-wise. This will bring out the matrix structure and additionally have a good numbering within each block.
The component_wise() function allows not only to honor enumeration based on vector components, but also allows to group together vector components into "blocks" using a defaulted argument to the various DoFRenumbering::component_wise() functions (see GlossComponent vs GlossBlock for a description of the difference). The blocks designated through this argument may, but do not have to be, equal to the blocks that the finite element reports. For example, a typical Stokes element would be
This element has dim+1 vector components and equally many blocks. However, one may want to consider the velocities as one logical block so that all velocity degrees of freedom are enumerated the same way, independent of whether they are 

This element has dim+1 vector components and equally many blocks. However, one may want to consider the velocities as one logical block so that all velocity degrees of freedom are enumerated the same way, independent of whether they are 

On the other hand, if you really want to use block structure reported by the finite element itself (a case that is often the case if you have finite elements that have multiple vector components, e.g. the FE_RaviartThomas or FE_Nedelec elements) then you can use the DoFRenumbering::block_wise instead of the DoFRenumbering::component_wise functions.
Given an ordered vector of cells, the function cell_wise() sorts the degrees of freedom such that degrees on earlier cells of this vector will occur before degrees on later cells.
@@ -245,7 +245,7 @@The MatrixFree class provides optimized algorithms for interleaving operations on vectors before and after the access of the vector data in the respective loops. The algorithm matrix_free_data_locality() makes sure that all unknowns with a short distance between the first and last access are grouped together, in order to increase the spatial data locality.
As a benchmark of comparison, let us consider what the different sparsity patterns produced by the various algorithms when using the 


The goal of reordering strategies is to improve the preconditioner. In step-22 we use a SparseILU to preconditioner for the velocity-velocity block at the top left. The quality of the preconditioner can then be measured by the number of CG iterations required to solve a linear system with this block. For some of the reordering strategies below we record this number for adaptive refinement cycle 3, with 93176 degrees of freedom; because we solve several linear systems with the same matrix in the Schur complement, the average number of iterations is reported. The lower the number the better the preconditioner and consequently the better the renumbering of degrees of freedom is suited for this task. We also state the run-time of the program, in part determined by the number of iterations needed, for the first 4 cycles on one of our machines. Note that the reported times correspond to the run time of the entire program, not just the affected solver; if a program runs twice as fast with one particular ordering than with another one, then this means that the actual solver is actually several times faster.
const std::vector< unsigned int > &href_anchor"paramname">target_component = std::vector<unsigned int>()href_anchor"memdoc">
-Sort the degrees of freedom by vector component. The numbering within each component is not touched, so a degree of freedom with index Sort the degrees of freedom by vector component. The numbering within each component is not touched, so a degree of freedom with index You can specify that the components are ordered in a different way than suggested by the FESystem object you use. To this end, set up the vector If one of the base finite elements from which the global finite element under consideration here, is a non-primitive one, i.e. its shape functions have more than one non-zero component, then it is not possible to associate these degrees of freedom with a single vector component. In this case, they are associated with the first vector component to which they belong. For finite elements with only one component, or a single non-primitive base element, this function is the identity operation. @@ -575,7 +575,7 @@ |
Sort the degrees of freedom by vector block. The numbering within each block is not touched, so a degree of freedom with index 







Sort the degrees of freedom by vector block. The numbering within each block is not touched, so a degree of freedom with index 







Definition at line 999 of file dof_renumbering.cc.
@@ -679,7 +679,7 @@For meshes based on parallel::shared::Triangulation, the situation is more complex. Here, the set of locally owned cells is determined by a partitioning algorithm (selected by passing an object of type parallel::shared::Triangulation::Settings to the constructor of the triangulation), and in general these partitioning algorithms may assign cells to subdomains based on decisions that may have nothing to do with the Z order. (Though it is possible to select these flags in a way so that partitioning uses the Z order.) As a consequence, the cells of one subdomain are not contiguous in Z order, and if one renumbered degrees of freedom based on the Z order of cells, one would generally end up with DoF indices that on each processor do not form a contiguous range. This is often inconvenient (for example, because PETSc cannot store vectors and matrices for which the locally owned set of indices is not contiguous), and consequently this function uses the following algorithm for parallel::shared::Triangulation objects:









(As a side note, for corner cases: The question what a degree of freedom on the boundary is, is not so easy. It should really be a degree of freedom of which the respective basis function has nonzero values on the boundary. At least for Lagrange elements this definition is equal to the statement that the off-point, or what deal.II calls support_point, of the shape function, i.e. the point where the function assumes its nominal value (for Lagrange elements this is the point where it has the function value 1), is located on the boundary. We do not check this directly, the criterion is rather defined through the information the finite element class gives: the FiniteElement class defines the numbers of basis functions per vertex, per line, and so on and the basis functions are numbered after this information; a basis function is to be considered to be on the face of a cell (and thus on the boundary if the cell is at the boundary) according to it belonging to a vertex, line, etc but not to the interior of the cell. The finite element uses the same cell-wise numbering so that we can say that if a degree of freedom was numbered as one of the dofs on lines, we assume that it is located on the line. Where the off-point actually is, is a secret of the finite element (well, you can ask it, but we don't do it here) and not relevant in this context.)
In some cases, one wants to only work with DoFs that sit on the boundary. One application is, for example, if rather than interpolating non- homogeneous boundary values, one would like to project them. For this, we need two things: a way to identify nodes that are located on (parts of) the boundary, and a way to build matrices out of only degrees of freedom that are on the boundary (i.e. much smaller matrices, in which we do not even build the large zero block that stems from the fact that most degrees of freedom have no support on the boundary of the domain). The first of these tasks is done by the map_dof_to_boundary_indices() function (described above).
-The second part requires us first to build a sparsity pattern for the couplings between boundary nodes, and then to actually build the components of this matrix. While actually computing the entries of these small boundary matrices is discussed in the MatrixCreator namespace, the creation of the sparsity pattern is done by the create_boundary_sparsity_pattern() function. For its work, it needs to have a numbering of all those degrees of freedom that are on those parts of the boundary that we are interested in. You can get this from the map_dof_to_boundary_indices() function. It then builds the sparsity pattern corresponding to integrals like 




The second part requires us first to build a sparsity pattern for the couplings between boundary nodes, and then to actually build the components of this matrix. While actually computing the entries of these small boundary matrices is discussed in the MatrixCreator namespace, the creation of the sparsity pattern is done by the create_boundary_sparsity_pattern() function. For its work, it needs to have a numbering of all those degrees of freedom that are on those parts of the boundary that we are interested in. You can get this from the map_dof_to_boundary_indices() function. It then builds the sparsity pattern corresponding to integrals like 




Otherwise, if face_1 and face_2 are not active faces, this function loops recursively over the children of face_1 and face_2. If only one of the two faces is active, then we recursively iterate over the children of the non-active ones and make sure that the solution function on the refined side equals that on the non-refined face in much the same way as we enforce hanging node constraints at places where differently refined cells come together. (However, unlike hanging nodes, we do not enforce the requirement that there be only a difference of one refinement level between the two sides of the domain you would like to be periodic).
This routine only constrains DoFs that are not already constrained. If this routine encounters a DoF that already is constrained (for instance by Dirichlet boundary conditions), the old setting of the constraint (dofs the entry is constrained to, inhomogeneities) is kept and nothing happens.
The flags in the component_mask (see GlossComponentMask) denote which components of the finite element space shall be constrained with periodic boundary conditions. If it is left as specified by the default value all components are constrained. If it is different from the default value, it is assumed that the number of entries equals the number of components of the finite element. This can be used to enforce periodicity in only one variable in a system of equations.
face_orientation, face_flip and face_rotation describe an orientation that should be applied to face_1 prior to matching and constraining DoFs. This has nothing to do with the actual orientation of the given faces in their respective cells (which for boundary faces is always the default) but instead how you want to see periodicity to be enforced. For example, by using these flags, you can enforce a condition of the kind 
face_orientation, face_flip and face_rotation describe an orientation that should be applied to face_1 prior to matching and constraining DoFs. This has nothing to do with the actual orientation of the given faces in their respective cells (which for boundary faces is always the default) but instead how you want to see periodicity to be enforced. For example, by using these flags, you can enforce a condition of the kind 
In 2d: face_orientation must always be true, face_rotation is always false, and face_flip has the meaning of line_flip; this implies e.g. for Q1:
Optionally a matrix matrix along with a std::vector first_vector_components can be specified that describes how DoFs on face_1 should be modified prior to constraining to the DoFs of face_2. Here, two declarations are possible: If the std::vector first_vector_components is non empty the matrix is interpreted as a dim 
dim rotation matrix that is applied to all vector valued blocks listed in first_vector_components of the FESystem. If first_vector_components is empty the matrix is interpreted as an interpolation matrix with size no_face_dofs 
This function makes sure that identity constraints don't create cycles in constraints.
periodicity_factor can be used to implement Bloch periodic conditions (a.k.a. phase shift periodic conditions) of the form 


face_2 is equal to the solution at face_1 times periodicity_factor. For example, if the solution at face_1 is 

face_2, then the solution at face_2 should be 

periodicity_factor can be used to implement Bloch periodic conditions (a.k.a. phase shift periodic conditions) of the form 


face_2 is equal to the solution at face_1 times periodicity_factor. For example, if the solution at face_1 is 

face_2, then the solution at face_2 should be 

Detailed information can be found in the see Glossary entry on periodic boundary conditions.
Definition at line 2292 of file dof_tools_constraints.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFESeries.html differs (JavaScript source, ASCII text, with very long lines (867)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFESeries.html 2023-11-25 15:26:00.419879313 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFESeries.html 2023-11-25 15:26:00.419879313 +0100 @@ -177,7 +177,7 @@Linear regression least-square fit of 


Linear regression least-square fit of 


Definition at line 30 of file fe_series.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFETools.html differs (JavaScript source, ASCII text, with very long lines (2085)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFETools.html 2023-11-25 15:26:00.439878906 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceFETools.html 2023-11-25 15:26:00.439878906 +0100 @@ -186,7 +186,7 @@This namespace offers interpolations and extrapolations of discrete functions of one FiniteElement fe1 to another FiniteElement fe2.
It also provides the local interpolation matrices that interpolate on each cell. Furthermore it provides the difference matrix 


It also provides the local interpolation matrices that interpolate on each cell. Furthermore it provides the difference matrix 


For more information about the spacedim template parameter check the documentation of FiniteElement or the one of Triangulation.
Compute the identity matrix minus the back interpolation matrix. The difference_matrix will be of size (fe1.n_dofs_per_cell(), fe1.n_dofs_per_cell()) after this function. Previous content of the argument will be overwritten.
This function computes the matrix that transforms a fe1 function 


fe1 space to the fe2 space. This matrix hence is useful to evaluate error-representations where 
This function computes the matrix that transforms a fe1 function 


fe1 space to the fe2 space. This matrix hence is useful to evaluate error-representations where 
Compute the local 
Compute the local 
This is a rather specialized function used during the construction of finite element objects. It is used to build the basis of shape functions for an element, given a set of polynomials and interpolation points. The function is only implemented for finite elements with exactly dim vector components. In particular, this applies to classes derived from the FE_PolyTensor class.
Specifically, the purpose of this function is as follows: FE_PolyTensor receives, from its derived classes, an argument that describes a polynomial space. This space may be parameterized in terms of monomials, or in some other way, but is in general not in the form that we use for finite elements where we typically want to use a basis that is derived from some kind of node functional (e.g., the interpolation at specific points). Concretely, assume that the basis used by the polynomial space is 


![$\Psi_i[\varphi_j] = \delta_{ij}$](form_1207.png)



-FE_PolyTensor receives, from its derived classes, an argument that describes a polynomial space. This space may be parameterized in terms of monomials, or in some other way, but is in general not in the form that we use for finite elements where we typically want to use a basis that is derived from some kind of node functional (e.g., the interpolation at specific points). Concretely, assume that the basis used by the polynomial space is



![$\Psi_i[\varphi_j] = \delta_{ij}$](form_1213.png)



+![\begin{align*}
\Psi_i [\varphi_j] = \sum_{k=1}^N c_{jk} \Psi_i[\tilde\varphi_k],
-\end{align*}](form_1209.png)
and we know that the left hand side equals 

-

+
where 

![$X_{ik} = \Psi_i[\tilde\varphi_k]$](form_1212.png)

Until the finite element receives this matrix 


This function therefore computes this matrix 


![$\Psi_i[\tilde\varphi_j] = f_j(\tilde\varphi_j(\mathbf x_i))$](form_1217.png)

where 

![$X_{ik} = \Psi_i[\tilde\varphi_k]$](form_1218.png)

Until the finite element receives this matrix 


This function therefore computes this matrix 


![$\Psi_i[\tilde\varphi_j] = f_j(\tilde\varphi_j(\mathbf x_i))$](form_1223.png)

dim vector components.



Compute 
dof1-function 

fe1 to fe2. The result 
z1_difference.
Compute 
dof1-function 

fe1 to fe2. The result 
z1_difference.
Note, that this function does not work for continuous elements at hanging nodes. For that case use the interpolation_difference function, below, that takes an additional AffineConstraints object.
Compute 
dof1-function 

fe1 to fe2. The result 
z1_difference. constraints1 and constraints2 are the hanging node constraints corresponding to dof1 and dof2, respectively. These objects are particular important when continuous elements on grids with hanging nodes (locally refined grids) are involved.
Compute 
dof1-function 

fe1 to fe2. The result 
z1_difference. constraints1 and constraints2 are the hanging node constraints corresponding to dof1 and dof2, respectively. These objects are particular important when continuous elements on grids with hanging nodes (locally refined grids) are involved.
For parallel computations, supply z1 with ghost elements and z1_difference without ghost elements.


The global projection can be computed by local matrices if the finite element spaces are discontinuous. With continuous elements, this is impossible, since a global mass matrix must be inverted.
dof2. If such a non-active cell has at least one active child, then we call the children of this cell a "patch". We then interpolate from the children of this patch to the patch, using the finite element space associated with dof2 and immediately interpolate back to the children. In essence, this information throws away all information in the solution vector that lives on a scale smaller than the patch cell.The name of the function originates from the fact that it can be used to construct a representation of a function of higher polynomial degree on a once coarser mesh. For example, if you imagine that you start with a 
dof2 is associated with a 






The name of the function originates from the fact that it can be used to construct a representation of a function of higher polynomial degree on a once coarser mesh. For example, if you imagine that you start with a 
dof2 is associated with a 






extrapolate function with an additional AffineConstraints argument, see below.Estimate bounds on the value and bounds on each gradient component of a Function, 
Each lower and upper bound is returned as a std::pair<double, double>, such that the first entry is the lower bound, 

![$f(x) \in [L, U]$](form_536.png)
Estimate bounds on the value and bounds on each gradient component of a Function, 
Each lower and upper bound is returned as a std::pair<double, double>, such that the first entry is the lower bound, 

![$f(x) \in [L, U]$](form_538.png)
The function value, gradient, and Hessian are computed at the box center. The bounds on the value of the function are then estimated as
-![$f(x) \in [f(x_c) - F, f(x_c) + F]$](form_537.png)

Here, 

![$\partial_i f \in [\partial_i f(x_c) - G_i, \partial_i f(x_c) + G_i]$](form_540.png)

![$f(x) \in [f(x_c) - F, f(x_c) + F]$](form_539.png)

Here, 

![$\partial_i f \in [\partial_i f(x_c) - G_i, \partial_i f(x_c) + G_i]$](form_542.png)

If the function has more than 1 component the component parameter can be used to specify which function component the bounds should be computed for.
Definition at line 26 of file function_tools.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGeometricUtilities_1_1Coordinates.html differs (JavaScript source, ASCII text, with very long lines (669)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGeometricUtilities_1_1Coordinates.html 2023-11-25 15:26:00.463211767 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGeometricUtilities_1_1Coordinates.html 2023-11-25 15:26:00.463211767 +0100 @@ -128,13 +128,13 @@Return spherical coordinates of a Cartesian point point. The returned array is filled with radius, azimuth angle 
![$ \in [0,\pi]$](form_543.png)
Return spherical coordinates of a Cartesian point point. The returned array is filled with radius, azimuth angle 
![$ \in [0,\pi]$](form_545.png)
In 3d the transformation is given by
-
The use of this function is demonstrated in step-75.
@@ -158,13 +158,13 @@Return the Cartesian coordinates of a spherical point defined by scoord which is filled with radius 

![$\phi \in [0,\pi]$](form_547.png)
Return the Cartesian coordinates of a spherical point defined by scoord which is filled with radius 

![$\phi \in [0,\pi]$](form_549.png)
In 3d the transformation is given by
-
Definition at line 77 of file geometric_utilities.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGraphColoring.html differs (JavaScript source, ASCII text, with very long lines (1206)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGraphColoring.html 2023-11-25 15:26:00.473211563 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGraphColoring.html 2023-11-25 15:26:00.473211563 +0100 @@ -141,9 +141,9 @@Create a partitioning of the given range of iterators so that iterators that point to conflicting objects will be placed into different partitions, where the question whether two objects conflict is determined by a user-provided function.
This function can also be considered as a graph coloring: each object pointed to by an iterator is considered to be a node and there is an edge between each two nodes that conflict. The graph coloring algorithm then assigns a color to each node in such a way that two nodes connected by an edge do not have the same color.
A typical use case for this function is in assembling a matrix in parallel. There, one would like to assemble local contributions on different cells at the same time (an operation that is purely local and so requires no synchronization) but then we need to add these local contributions to the global matrix. In general, the contributions from different cells may be to the same matrix entries if the cells share degrees of freedom and, consequently, can not happen at the same time unless we want to risk a race condition (see http://en.wikipedia.org/wiki/Race_condition). Thus, we call these two cells in conflict, and we can only allow operations in parallel from cells that do not conflict. In other words, two cells are in conflict if the set of matrix entries (for example characterized by the rows) have a nonempty intersection.
-In this generality, computing the graph of conflicts would require calling a function that determines whether two iterators (or the two objects they represent) conflict, and calling it for every pair of iterators, i.e., 
In this generality, computing the graph of conflicts would require calling a function that determines whether two iterators (or the two objects they represent) conflict, and calling it for every pair of iterators, i.e., 
In other situations, the conflict indicator sets may represent something different altogether – it is up to the caller of this function to describe what it means for two iterators to conflict. Given this, computing conflict graph edges can be done significantly more cheaply than with 
In other situations, the conflict indicator sets may represent something different altogether – it is up to the caller of this function to describe what it means for two iterators to conflict. Given this, computing conflict graph edges can be done significantly more cheaply than with 
In any case, the result of the function will be so that iterators whose conflict indicator sets have overlap will not be assigned to the same color.
Initialize the given triangulation with a hypercube (line in 1d, square in 2d, etc) consisting of exactly one cell. The hypercube volume is the tensor product interval ![$[left,right]^{\text{dim}}$](form_1318.png)
Initialize the given triangulation with a hypercube (line in 1d, square in 2d, etc) consisting of exactly one cell. The hypercube volume is the tensor product interval ![$[left,right]^{\text{dim}}$](form_1319.png)
If the argument colorize is false, then all boundary indicators are set to zero (the default boundary indicator) for 2d and 3d. If it is true, the boundary is colorized as in hyper_rectangle(). In 1d the indicators are always colorized, see hyper_rectangle().
@@ -339,7 +339,7 @@
Create a 


Create a 


The vertices argument contains a vector with all d+1 vertices defining the corners of the simplex. They must be given in an order such that the vectors from the first vertex to each of the others form a right-handed system.
The meshes generated in two and three dimensions are:
Generate a grid consisting of a channel with a cylinder. This is a common benchmark for Navier-Stokes solvers. The geometry consists of a channel of size ![$[0, 2.2] \times [0, 0.41] \times [0, 0.41] $](form_1321.png)




Generate a grid consisting of a channel with a cylinder. This is a common benchmark for Navier-Stokes solvers. The geometry consists of a channel of size ![$[0, 2.2] \times [0, 0.41] \times [0, 0.41] $](form_1320.png)




n_shells is greater than zero, then there are that many shells centered around the cylinder,
The resulting Triangulation uses three manifolds: a PolarManifold (in 2d) or CylindricalManifold (in 3d) with manifold id 



The picture below shows part of the 2d grid (using all default arguments to this function) after two global refinements. The cells with manifold id 

The resulting Triangulation uses three manifolds: a PolarManifold (in 2d) or CylindricalManifold (in 3d) with manifold id 



The picture below shows part of the 2d grid (using all default arguments to this function) after two global refinements. The cells with manifold id 

| tria | Triangulation to be created. Must be empty upon calling this function. |
| shell_region_width | Width of the layer of shells around the cylinder. This value should be between ![]() ![]() ![]() |
| shell_region_width | Width of the layer of shells around the cylinder. This value should be between ![]() ![]() ![]() |
| n_shells | Number of shells to use in the shell layer. |
| skewness | Parameter controlling how close the shells are to the cylinder: see the mathematical definition given in GridGenerator::concentric_hyper_shells. |
| colorize | If true, then assign different boundary ids to different parts of the boundary. For more information on boundary indicators see this glossary entry. The left boundary (at ![]() ![]() ![]() ![]() ![]() ![]() |
| colorize | If true, then assign different boundary ids to different parts of the boundary. For more information on boundary indicators see this glossary entry. The left boundary (at ![]() ![]() ![]() ![]() ![]() ![]() |
This function is declared to exist for triangulations of all space dimensions, but throws an error if called in 1d.
By default, the manifold_id is set to 0 on the boundary faces, 1 on the boundary cells, and numbers::flat_manifold_id on the central cell and on internal faces.
A SphericalManifold is attached by default to the boundary faces for correct placement of boundary vertices upon refinement and to be able to use higher order mappings. However, it turns out that this strategy may not be the optimal one to create a good a mesh for a hyperball. The "Possibilities for extensions" section of step-6 has an extensive discussion of how one would construct better meshes and what one needs to do for it. Setting the argument attach_spherical_manifold_on_boundary_cells to true attaches a SphericalManifold manifold also to the cells adjacent to the boundary, and not only to the boundary faces.


Create a dim dimensional cylinder where the 
dim - 1) dimensional disk of given radius, extruded along the axis of the cylinder (which is the first coordinate direction). Consequently, in three dimensions, the cylinder extends from x=-half_length to x=+half_length and its projection into the yz-plane is a circle of radius radius. In two dimensions, the cylinder is a rectangle from x=-half_length to x=+half_length and from y=-radius to y=radius.
Create a dim dimensional cylinder where the 
dim - 1) dimensional disk of given radius, extruded along the axis of the cylinder (which is the first coordinate direction). Consequently, in three dimensions, the cylinder extends from x=-half_length to x=+half_length and its projection into the yz-plane is a circle of radius radius. In two dimensions, the cylinder is a rectangle from x=-half_length to x=+half_length and from y=-radius to y=radius.
The boundaries are colored according to the following scheme: 0 for the hull of the cylinder, 1 for the left hand face and 2 for the right hand face (see the glossary entry on colorization).
The manifold id for the hull of the cylinder is set to zero, and a CylindricalManifold is attached to it.
Create a dim dimensional cylinder where the 
dim - 1) dimensional disk of given radius, extruded along the axis of the cylinder (which is the first coordinate direction). Consequently, in three dimensions, the cylinder extends from x=-half_length to x=+half_length and its projection into the yz-plane is a circle of radius radius. In two dimensions, the cylinder is a rectangle from x=-half_length to x=+half_length and from y=-radius to y=radius. This function is only implemented for dim==3.
Create a dim dimensional cylinder where the 
dim - 1) dimensional disk of given radius, extruded along the axis of the cylinder (which is the first coordinate direction). Consequently, in three dimensions, the cylinder extends from x=-half_length to x=+half_length and its projection into the yz-plane is a circle of radius radius. In two dimensions, the cylinder is a rectangle from x=-half_length to x=+half_length and from y=-radius to y=radius. This function is only implemented for dim==3.
The boundaries are colored according to the following scheme: 0 for the hull of the cylinder, 1 for the left hand face and 2 for the right hand face (see the glossary entry on colorization).
The manifold id for the hull of the cylinder is set to zero, and a CylindricalManifold is attached to it.
Definition at line 267 of file grid_generator_pipe_junction.cc.
@@ -1799,7 +1799,7 @@| tria | A Triangulation object which has to be empty. |
| sizes | A vector of integers of dimension GeometryInfo<dim>::faces_per_cell with the following meaning: the legs of the cross are stacked on the faces of the center cell, in the usual order of deal.II cells, namely first ![]() ![]() ![]() sizes name the number of cells stacked on this face. All numbers may be zero, thus L- and T-shaped domains are specializations of this domain. |
| sizes | A vector of integers of dimension GeometryInfo<dim>::faces_per_cell with the following meaning: the legs of the cross are stacked on the faces of the center cell, in the usual order of deal.II cells, namely first ![]() ![]() ![]() sizes name the number of cells stacked on this face. All numbers may be zero, thus L- and T-shaped domains are specializations of this domain. |
| colorize_cells | If colorization is enabled, then the material id of a cells corresponds to the leg it is in. The id of the center cell is zero, and then the legs are numbered starting at one (see the glossary entry on colorization). |






The versions with 24, 48, and 
The 3d grids with 12 and 96 cells are plotted below:
@@ -2260,7 +2260,7 @@Produce a domain that is the space between two cylinders in 3d, with given length, inner and outer radius and a given number of elements. The cylinder shell is built around the 


length.
Produce a domain that is the space between two cylinders in 3d, with given length, inner and outer radius and a given number of elements. The cylinder shell is built around the 


length.
If n_radial_cells is zero (as is the default), then it is computed adaptively such that the resulting elements have the least aspect ratio. The same holds for n_axial_cells.
All manifold ids are set to zero, and a CylindricalManifold is attached to the triangulation.
@@ -2315,9 +2315,9 @@Produce the volume or surface mesh of a torus. The axis of the torus is the 


Produce the volume or surface mesh of a torus. The axis of the torus is the 


If dim is 3, the mesh will be the volume of the torus, using a mesh equivalent to the circle in the poloidal coordinates with 5 cells on the cross section. This function attaches a TorusManifold to all boundary faces which are marked with a manifold id of 1, a CylindricalManifold to the interior cells and all their faces which are marked with a manifold id of 2 (representing a flat state within the poloidal coordinates), and a TransfiniteInterpolationManifold to the cells between the TorusManifold on the surface and the ToroidalManifold in the center, with cells marked with manifold id 0.
An example for the case if dim is 3 with a cut through the domain at 


An example for the case if dim is 3 with a cut through the domain at 


r.







This function produces a square in the xy-plane with a cylindrical hole in the middle. The square and the circle are centered at the origin. In 3d, this geometry is extruded in 
![$[0,L]$](form_1361.png)
The inner boundary has a manifold id of 



This function produces a square in the xy-plane with a cylindrical hole in the middle. The square and the circle are centered at the origin. In 3d, this geometry is extruded in 
![$[0,L]$](form_1355.png)
The inner boundary has a manifold id of 



Produce a grid consisting of concentric shells. The primary difference between this function and GridGenerator::hyper_shell() is that this function permits unevenly spaced (in the radial direction) coarse level cells.
-The parameters center, inner_radius, and outer_radius behave in the same way as the first three arguments to GridGenerator::hyper_shell. n_shells gives the total number of shells to use (i.e., the number of cells in the radial direction). The outer radius of the 
The parameters center, inner_radius, and outer_radius behave in the same way as the first three arguments to GridGenerator::hyper_shell. n_shells gives the total number of shells to use (i.e., the number of cells in the radial direction). The outer radius of the 
-
As an example, with no coarsening, setting top_fraction_of_cells to 1/3 will result in approximately doubling the number of cells in two dimensions. That is because each of these 1/3 of cells will be replaced by its four children, resulting in 

As an example, with no coarsening, setting top_fraction_of_cells to 1/3 will result in approximately doubling the number of cells in two dimensions. That is because each of these 1/3 of cells will be replaced by its four children, resulting in 

This function flags cells of a triangulation for refinement with the aim to reach a grid that is optimal with respect to an objective function that tries to balance reducing the error and increasing the numerical cost when the mesh is refined. Specifically, this function makes the assumption that if you refine a cell 


order is the third argument of this function. This makes the assumption that the error is only a local property on a mesh and can be reduced by local refinement – an assumption that is true for the interpolation operator, but not for the usual Galerkin projection, although it is approximately true for elliptic problems where the Greens function decays quickly and the error here is not too much affected by a too coarse mesh somewhere else.
With this, we can define the objective function this function tries to optimize. Let us assume that the mesh currently has 


-


order is the third argument of this function. This makes the assumption that the error is only a local property on a mesh and can be reduced by local refinement – an assumption that is true for the interpolation operator, but not for the usual Galerkin projection, although it is approximately true for elliptic problems where the Greens function decays quickly and the error here is not too much affected by a too coarse mesh somewhere else.
With this, we can define the objective function this function tries to optimize. Let us assume that the mesh currently has 


+![\[
N(m) = (N_0-m) + 2^d m = N_0 + (2^d-1)m
-\]](form_1368.png)
cells ( 



-



+![\[
\eta^\text{exp}(m)
=
\sum_{K, K\; \text{will not be refined}} \eta_K
+
\sum_{K, K\; \text{will be refined}} 2^{-\text{order}}\eta_K
-\]](form_1371.png)
where the first sum extends over 




This function then tries to find that number 
-




This function then tries to find that number 
+![\[
J(m) = N(m)^{\text{order}/d} \eta^\text{exp}(m)
-\]](form_1374.png)
is minimal.
The rationale for this function is two-fold. First, compared to the refine_and_coarsen_fixed_fraction() and refine_and_coarsen_fixed_number() functions, this function has the property that if all refinement indicators are the same (i.e., we have achieved a mesh where the error per cell is equilibrated), then the entire mesh is refined. This is based on the observation that a mesh with equilibrated error indicators is the optimal mesh (i.e., has the least overall error) among all meshes with the same number of cells. (For proofs of this, see R. Becker, M. Braack, R. Rannacher: "Numerical simulation of laminar flames at low Mach number with adaptive finite elements", Combustion Theory and Modelling, Vol. 3, Nr. 3, p. 503-534 1999; and W. Bangerth, R. Rannacher: "Adaptive Finite Element Methods for Differential Equations", Birkhauser, 2003.)
-Second, the function uses the observation that ideally, the error behaves like 



Second, the function uses the observation that ideally, the error behaves like 



Definition at line 448 of file grid_refinement.cc.
/usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridTools.html differs (JavaScript source, ASCII text, with very long lines (1031)) --- old//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridTools.html 2023-11-25 15:26:00.573209526 +0100 +++ new//usr/share/doc/packages/dealii-openmpi4/doxygen/deal.II/namespaceGridTools.html 2023-11-25 15:26:00.573209526 +0100 @@ -508,8 +508,8 @@Compute the volume (i.e. the dim-dimensional measure) of the triangulation. We compute the measure using the integral 

Compute the volume (i.e. the dim-dimensional measure) of the triangulation. We compute the measure using the integral 

If the triangulation is a dim-dimensional one embedded in a higher dimensional space of dimension spacedim, then the value returned is the dim-dimensional measure. For example, for a two-dimensional triangulation in three-dimensional space, the value returned is the area of the surface so described. (This obviously makes sense since the spacedim-dimensional measure of a dim-dimensional triangulation would always be zero if dim < spacedim).
This function also works for objects of type parallel::distributed::Triangulation, in which case the function is a collective operation.
Compute the volume (i.e. the dim-dimensional measure) of the triangulation. We compute the measure using the integral 

Compute the volume (i.e. the dim-dimensional measure) of the triangulation. We compute the measure using the integral 

If the triangulation is a dim-dimensional one embedded in a higher dimensional space of dimension spacedim, then the value returned is the dim-dimensional measure. For example, for a two-dimensional triangulation in three-dimensional space, the value returned is the area of the surface so described. (This obviously makes sense since the spacedim-dimensional measure of a dim-dimensional triangulation would always be zero if dim < spacedim.
This function also works for objects of type parallel::distributed::Triangulation, in which case the function is a collective operation.
This function computes an affine approximation of the map from the unit coordinates to the real coordinates of the form 

spacedim dimensions. The result is returned as a pair with the matrix A as the first argument and the vector b describing distance of the plane to the origin.
This function computes an affine approximation of the map from the unit coordinates to the real coordinates of the form 

spacedim dimensions. The result is returned as a pair with the matrix A as the first argument and the vector b describing distance of the plane to the origin.
For any valid mesh cell whose geometry is not degenerate, this operation results in a unique affine mapping, even in cases where the actual transformation by a bi-/trilinear or higher order mapping might be singular. The result is exact in case the transformation from the unit to the real cell is indeed affine, such as in one dimension or for Cartesian and affine (parallelogram) meshes in 2d/3d.
This approximation is underlying the function TriaAccessor::real_to_unit_cell_affine_approximation() function.
For exact transformations to the unit cell, use Mapping::transform_real_to_unit_cell().
@@ -747,7 +747,7 @@Computes an aspect ratio measure for all locally-owned active cells and fills a vector with one entry per cell, given a triangulation and mapping. The size of the vector that is returned equals the number of active cells. The vector contains zero for non locally-owned cells. The aspect ratio of a cell is defined as the ratio of the maximum to minimum singular value of the Jacobian, taking the maximum over all quadrature points of a quadrature rule specified via quadrature. For example, for the special case of rectangular elements in 2d with dimensions 





Computes an aspect ratio measure for all locally-owned active cells and fills a vector with one entry per cell, given a triangulation and mapping. The size of the vector that is returned equals the number of active cells. The vector contains zero for non locally-owned cells. The aspect ratio of a cell is defined as the ratio of the maximum to minimum singular value of the Jacobian, taking the maximum over all quadrature points of a quadrature rule specified via quadrature. For example, for the special case of rectangular elements in 2d with dimensions 





Remove vertices that are duplicated, due to the input of a structured grid, for example. If these vertices are not removed, the faces bounded by these vertices become part of the boundary, even if they are in the interior of the mesh.
-This function is called by some GridIn::read_* functions. Only the vertices with indices in considered_vertices are tested for equality. This speeds up the algorithm, which is, for worst-case hyper cube geometries 

considered_vertices with all vertices.
This function is called by some GridIn::read_* functions. Only the vertices with indices in considered_vertices are tested for equality. This speeds up the algorithm, which is, for worst-case hyper cube geometries 

considered_vertices with all vertices.
Two vertices are considered equal if their difference in each coordinate direction is less than tol. This implies that nothing happens if the tolerance is set to zero.
Definition at line 761 of file grid_tools.cc.
@@ -1122,7 +1122,7 @@Transform the vertices of the given triangulation by applying the function object provided as first argument to all its vertices.
-The transformation given as argument is used to transform each vertex. Its respective type has to offer a function-like syntax, i.e. the predicate is either an object of a type that has an operator(), or it is a pointer to a non-member function, or it is a lambda function object. In either case, argument and return value have to be of type Point<spacedim>. An example – a simple transformation that moves the object two units to the right in the 
The transformation given as argument is used to transform each vertex. Its respective type has to offer a function-like syntax, i.e. the predicate is either an object of a type that has an operator(), or it is a pointer to a non-member function, or it is a lambda function object. In either case, argument and return value have to be of type Point<spacedim>. An example – a simple transformation that moves the object two units to the right in the 
Transform the given triangulation smoothly to a different domain where, typically, each of the vertices at the boundary of the triangulation is mapped to the corresponding points in the new_points map.
The unknown displacement field 

-

+![\[ \min\, \int \frac{1}{2}
c(\mathbf x)
\mathbf \nabla u_d(\mathbf x) \cdot
\mathbf \nabla u_d(\mathbf x)
\,\rm d x
-\]](form_1460.png)
subject to prescribed constraints. The minimizer is obtained by solving the Laplace equation of the dim components of a displacement field that maps the current domain into one described by new_points . Linear finite elements with four Gaussian quadrature points in each direction are used. The difference between the vertex positions specified in new_points and their current value in tria therefore represents the prescribed values of this displacement field at the boundary of the domain, or more precisely at all of those locations for which new_points provides values (which may be at part of the boundary, or even in the interior of the domain). The function then evaluates this displacement field at each unconstrained vertex and uses it to place the mapped vertex where the displacement field locates it. Because the solution of the Laplace equation is smooth, this guarantees a smooth mapping from the old domain to the new one.
This function does the same as the previous one, i.e. it partitions a triangulation using a partitioning algorithm into a number of subdomains identified by the cell->subdomain_id() flag.
The difference to the previous function is the second argument, a sparsity pattern that represents the connectivity pattern between cells.
-While the function above builds it directly from the triangulation by considering which cells neighbor each other, this function can take a more refined connectivity graph. The sparsity pattern needs to be of size 




While the function above builds it directly from the triangulation by considering which cells neighbor each other, this function can take a more refined connectivity graph. The sparsity pattern needs to be of size 




This function is mainly useful in cases where connections between cells exist that are not present in the triangulation alone (otherwise the previous function would be the simpler one to use). Such connections may include that certain parts of the boundary of a domain are coupled through symmetric boundary conditions or integrals (e.g. friction contact between the two sides of a crack in the domain), or if a numerical scheme is used that not only connects immediate neighbors but a larger neighborhood of cells (e.g. when solving integral equations).
In addition, this function may be useful in cases where the default sparsity pattern is not entirely sufficient. This can happen because the default is to just consider face neighbors, not neighboring cells that are connected by edges or vertices. While the latter couple when using continuous finite elements, they are typically still closely connected in the neighborship graph, and partitioning algorithm will not usually cut important connections in this case. However, if there are vertices in the mesh where many cells (many more than the common 4 or 6 in 2d and 3d, respectively) come together, then there will be a significant number of cells that are connected across a vertex, but several degrees removed in the connectivity graph built only using face neighbors. In a case like this, partitioning algorithm may sometimes make bad decisions and you may want to build your own connectivity graph.
weight signal has been attached to the triangulation, then this will be used and passed to the partitioner. An orthogonal equality test for faces.
face1 and face2 are considered equal, if a one to one matching between its vertices can be achieved via an orthogonal equality relation.
Here, two vertices v_1 and v_2 are considered equal, if 
direction. If the parameter matrix is a reference to a spacedim x spacedim matrix, 
matrix, otherwise 
Here, two vertices v_1 and v_2 are considered equal, if 
direction. If the parameter matrix is a reference to a spacedim x spacedim matrix, 
matrix, otherwise 
If the matching was successful, the relative orientation of face1 with respect to face2 is returned in the bitset orientation, where
This function tries to match all faces belonging to the first boundary with faces belonging to the second boundary with the help of orthogonal_equality().
The bitset that is returned inside of PeriodicFacePair encodes the relative orientation of the first face with respect to the second face, see the documentation of orthogonal_equality() for further details.
The direction refers to the space direction in which periodicity is enforced. When matching periodic faces this vector component is ignored.
The offset is a vector tangential to the faces that is added to the location of vertices of the 'first' boundary when attempting to match them to the corresponding vertices of the 'second' boundary. This can be used to implement conditions such as 
Optionally, a 
matrix can be specified that describes how vector valued DoFs of the first face should be modified prior to constraining to the DoFs of the second face. The matrix is used in two places. First, matrix will be supplied to orthogonal_equality() and used for matching faces: Two vertices 


direction. (For more details see DoFTools::make_periodicity_constraints(), the glossary glossary entry on periodic conditions and step-45). Second, matrix will be stored in the PeriodicFacePair collection matched_pairs for further use.
The offset is a vector tangential to the faces that is added to the location of vertices of the 'first' boundary when attempting to match them to the corresponding vertices of the 'second' boundary. This can be used to implement conditions such as 
Optionally, a 
matrix can be specified that describes how vector valued DoFs of the first face should be modified prior to constraining to the DoFs of the second face. The matrix is used in two places. First, matrix will be supplied to orthogonal_equality() and used for matching faces: Two vertices 


direction. (For more details see DoFTools::make_periodicity_constraints(), the glossary glossary entry on periodic conditions and step-45). Second, matrix will be stored in the PeriodicFacePair collection matched_pairs for further use.