From 50326984bb929049e9cf421dc2e09e09149eb793 Mon Sep 17 00:00:00 2001 From: teseoch Date: Tue, 11 Aug 2026 15:44:50 -0700 Subject: [PATCH] semi implicit examples --- contact/examples/3D/semi-implicit/cube.mesh | 517 ++++++++++++++++++ .../semi-implicit/quasistatic-adaptive.json | 61 +++ .../quasistatic-semi-alhess.json | 65 +++ .../quasistatic-semi-friction.json | 62 +++ .../3D/semi-implicit/quasistatic-semi.json | 57 ++ contact/examples/3D/semi-implicit/slab.obj | 6 + .../3D/semi-implicit/transient-semi.json | 61 +++ old-tolerances/standard/homogenization.json | 31 +- .../standard/homogenization_3d.json | 66 ++- old-tolerances/standard/laplace_periodic.json | 27 +- 10 files changed, 912 insertions(+), 41 deletions(-) create mode 100644 contact/examples/3D/semi-implicit/cube.mesh create mode 100644 contact/examples/3D/semi-implicit/quasistatic-adaptive.json create mode 100644 contact/examples/3D/semi-implicit/quasistatic-semi-alhess.json create mode 100644 contact/examples/3D/semi-implicit/quasistatic-semi-friction.json create mode 100644 contact/examples/3D/semi-implicit/quasistatic-semi.json create mode 100644 contact/examples/3D/semi-implicit/slab.obj create mode 100644 contact/examples/3D/semi-implicit/transient-semi.json diff --git a/contact/examples/3D/semi-implicit/cube.mesh b/contact/examples/3D/semi-implicit/cube.mesh new file mode 100644 index 0000000..5d247fc --- /dev/null +++ b/contact/examples/3D/semi-implicit/cube.mesh @@ -0,0 +1,517 @@ +MeshVersionFormatted 1 +Dimension +3 +Vertices +125 +0 0 0 0 +0 0 0.25 0 +0 0 0.5 0 +0 0 0.75 0 +0 0 1 0 +0 0.25 0 0 +0 0.25 0.25 0 +0 0.25 0.5 0 +0 0.25 0.75 0 +0 0.25 1 0 +0 0.5 0 0 +0 0.5 0.25 0 +0 0.5 0.5 0 +0 0.5 0.75 0 +0 0.5 1 0 +0 0.75 0 0 +0 0.75 0.25 0 +0 0.75 0.5 0 +0 0.75 0.75 0 +0 0.75 1 0 +0 1 0 0 +0 1 0.25 0 +0 1 0.5 0 +0 1 0.75 0 +0 1 1 0 +0.25 0 0 0 +0.25 0 0.25 0 +0.25 0 0.5 0 +0.25 0 0.75 0 +0.25 0 1 0 +0.25 0.25 0 0 +0.25 0.25 0.25 0 +0.25 0.25 0.5 0 +0.25 0.25 0.75 0 +0.25 0.25 1 0 +0.25 0.5 0 0 +0.25 0.5 0.25 0 +0.25 0.5 0.5 0 +0.25 0.5 0.75 0 +0.25 0.5 1 0 +0.25 0.75 0 0 +0.25 0.75 0.25 0 +0.25 0.75 0.5 0 +0.25 0.75 0.75 0 +0.25 0.75 1 0 +0.25 1 0 0 +0.25 1 0.25 0 +0.25 1 0.5 0 +0.25 1 0.75 0 +0.25 1 1 0 +0.5 0 0 0 +0.5 0 0.25 0 +0.5 0 0.5 0 +0.5 0 0.75 0 +0.5 0 1 0 +0.5 0.25 0 0 +0.5 0.25 0.25 0 +0.5 0.25 0.5 0 +0.5 0.25 0.75 0 +0.5 0.25 1 0 +0.5 0.5 0 0 +0.5 0.5 0.25 0 +0.5 0.5 0.5 0 +0.5 0.5 0.75 0 +0.5 0.5 1 0 +0.5 0.75 0 0 +0.5 0.75 0.25 0 +0.5 0.75 0.5 0 +0.5 0.75 0.75 0 +0.5 0.75 1 0 +0.5 1 0 0 +0.5 1 0.25 0 +0.5 1 0.5 0 +0.5 1 0.75 0 +0.5 1 1 0 +0.75 0 0 0 +0.75 0 0.25 0 +0.75 0 0.5 0 +0.75 0 0.75 0 +0.75 0 1 0 +0.75 0.25 0 0 +0.75 0.25 0.25 0 +0.75 0.25 0.5 0 +0.75 0.25 0.75 0 +0.75 0.25 1 0 +0.75 0.5 0 0 +0.75 0.5 0.25 0 +0.75 0.5 0.5 0 +0.75 0.5 0.75 0 +0.75 0.5 1 0 +0.75 0.75 0 0 +0.75 0.75 0.25 0 +0.75 0.75 0.5 0 +0.75 0.75 0.75 0 +0.75 0.75 1 0 +0.75 1 0 0 +0.75 1 0.25 0 +0.75 1 0.5 0 +0.75 1 0.75 0 +0.75 1 1 0 +1 0 0 0 +1 0 0.25 0 +1 0 0.5 0 +1 0 0.75 0 +1 0 1 0 +1 0.25 0 0 +1 0.25 0.25 0 +1 0.25 0.5 0 +1 0.25 0.75 0 +1 0.25 1 0 +1 0.5 0 0 +1 0.5 0.25 0 +1 0.5 0.5 0 +1 0.5 0.75 0 +1 0.5 1 0 +1 0.75 0 0 +1 0.75 0.25 0 +1 0.75 0.5 0 +1 0.75 0.75 0 +1 0.75 1 0 +1 1 0 0 +1 1 0.25 0 +1 1 0.5 0 +1 1 0.75 0 +1 1 1 0 +Tetrahedra +384 +1 26 31 32 0 +1 27 26 32 0 +1 31 6 32 0 +1 6 7 32 0 +1 2 27 32 0 +1 7 2 32 0 +2 27 32 33 0 +2 28 27 33 0 +2 32 7 33 0 +2 7 8 33 0 +2 3 28 33 0 +2 8 3 33 0 +3 28 33 34 0 +3 29 28 34 0 +3 33 8 34 0 +3 8 9 34 0 +3 4 29 34 0 +3 9 4 34 0 +4 29 34 35 0 +4 30 29 35 0 +4 34 9 35 0 +4 9 10 35 0 +4 5 30 35 0 +4 10 5 35 0 +6 31 36 37 0 +6 32 31 37 0 +6 36 11 37 0 +6 11 12 37 0 +6 7 32 37 0 +6 12 7 37 0 +7 32 37 38 0 +7 33 32 38 0 +7 37 12 38 0 +7 12 13 38 0 +7 8 33 38 0 +7 13 8 38 0 +8 33 38 39 0 +8 34 33 39 0 +8 38 13 39 0 +8 13 14 39 0 +8 9 34 39 0 +8 14 9 39 0 +9 34 39 40 0 +9 35 34 40 0 +9 39 14 40 0 +9 14 15 40 0 +9 10 35 40 0 +9 15 10 40 0 +11 36 41 42 0 +11 37 36 42 0 +11 41 16 42 0 +11 16 17 42 0 +11 12 37 42 0 +11 17 12 42 0 +12 37 42 43 0 +12 38 37 43 0 +12 42 17 43 0 +12 17 18 43 0 +12 13 38 43 0 +12 18 13 43 0 +13 38 43 44 0 +13 39 38 44 0 +13 43 18 44 0 +13 18 19 44 0 +13 14 39 44 0 +13 19 14 44 0 +14 39 44 45 0 +14 40 39 45 0 +14 44 19 45 0 +14 19 20 45 0 +14 15 40 45 0 +14 20 15 45 0 +16 41 46 47 0 +16 42 41 47 0 +16 46 21 47 0 +16 21 22 47 0 +16 17 42 47 0 +16 22 17 47 0 +17 42 47 48 0 +17 43 42 48 0 +17 47 22 48 0 +17 22 23 48 0 +17 18 43 48 0 +17 23 18 48 0 +18 43 48 49 0 +18 44 43 49 0 +18 48 23 49 0 +18 23 24 49 0 +18 19 44 49 0 +18 24 19 49 0 +19 44 49 50 0 +19 45 44 50 0 +19 49 24 50 0 +19 24 25 50 0 +19 20 45 50 0 +19 25 20 50 0 +26 51 56 57 0 +26 52 51 57 0 +26 56 31 57 0 +26 31 32 57 0 +26 27 52 57 0 +26 32 27 57 0 +27 52 57 58 0 +27 53 52 58 0 +27 57 32 58 0 +27 32 33 58 0 +27 28 53 58 0 +27 33 28 58 0 +28 53 58 59 0 +28 54 53 59 0 +28 58 33 59 0 +28 33 34 59 0 +28 29 54 59 0 +28 34 29 59 0 +29 54 59 60 0 +29 55 54 60 0 +29 59 34 60 0 +29 34 35 60 0 +29 30 55 60 0 +29 35 30 60 0 +31 56 61 62 0 +31 57 56 62 0 +31 61 36 62 0 +31 36 37 62 0 +31 32 57 62 0 +31 37 32 62 0 +32 57 62 63 0 +32 58 57 63 0 +32 62 37 63 0 +32 37 38 63 0 +32 33 58 63 0 +32 38 33 63 0 +33 58 63 64 0 +33 59 58 64 0 +33 63 38 64 0 +33 38 39 64 0 +33 34 59 64 0 +33 39 34 64 0 +34 59 64 65 0 +34 60 59 65 0 +34 64 39 65 0 +34 39 40 65 0 +34 35 60 65 0 +34 40 35 65 0 +36 61 66 67 0 +36 62 61 67 0 +36 66 41 67 0 +36 41 42 67 0 +36 37 62 67 0 +36 42 37 67 0 +37 62 67 68 0 +37 63 62 68 0 +37 67 42 68 0 +37 42 43 68 0 +37 38 63 68 0 +37 43 38 68 0 +38 63 68 69 0 +38 64 63 69 0 +38 68 43 69 0 +38 43 44 69 0 +38 39 64 69 0 +38 44 39 69 0 +39 64 69 70 0 +39 65 64 70 0 +39 69 44 70 0 +39 44 45 70 0 +39 40 65 70 0 +39 45 40 70 0 +41 66 71 72 0 +41 67 66 72 0 +41 71 46 72 0 +41 46 47 72 0 +41 42 67 72 0 +41 47 42 72 0 +42 67 72 73 0 +42 68 67 73 0 +42 72 47 73 0 +42 47 48 73 0 +42 43 68 73 0 +42 48 43 73 0 +43 68 73 74 0 +43 69 68 74 0 +43 73 48 74 0 +43 48 49 74 0 +43 44 69 74 0 +43 49 44 74 0 +44 69 74 75 0 +44 70 69 75 0 +44 74 49 75 0 +44 49 50 75 0 +44 45 70 75 0 +44 50 45 75 0 +51 76 81 82 0 +51 77 76 82 0 +51 81 56 82 0 +51 56 57 82 0 +51 52 77 82 0 +51 57 52 82 0 +52 77 82 83 0 +52 78 77 83 0 +52 82 57 83 0 +52 57 58 83 0 +52 53 78 83 0 +52 58 53 83 0 +53 78 83 84 0 +53 79 78 84 0 +53 83 58 84 0 +53 58 59 84 0 +53 54 79 84 0 +53 59 54 84 0 +54 79 84 85 0 +54 80 79 85 0 +54 84 59 85 0 +54 59 60 85 0 +54 55 80 85 0 +54 60 55 85 0 +56 81 86 87 0 +56 82 81 87 0 +56 86 61 87 0 +56 61 62 87 0 +56 57 82 87 0 +56 62 57 87 0 +57 82 87 88 0 +57 83 82 88 0 +57 87 62 88 0 +57 62 63 88 0 +57 58 83 88 0 +57 63 58 88 0 +58 83 88 89 0 +58 84 83 89 0 +58 88 63 89 0 +58 63 64 89 0 +58 59 84 89 0 +58 64 59 89 0 +59 84 89 90 0 +59 85 84 90 0 +59 89 64 90 0 +59 64 65 90 0 +59 60 85 90 0 +59 65 60 90 0 +61 86 91 92 0 +61 87 86 92 0 +61 91 66 92 0 +61 66 67 92 0 +61 62 87 92 0 +61 67 62 92 0 +62 87 92 93 0 +62 88 87 93 0 +62 92 67 93 0 +62 67 68 93 0 +62 63 88 93 0 +62 68 63 93 0 +63 88 93 94 0 +63 89 88 94 0 +63 93 68 94 0 +63 68 69 94 0 +63 64 89 94 0 +63 69 64 94 0 +64 89 94 95 0 +64 90 89 95 0 +64 94 69 95 0 +64 69 70 95 0 +64 65 90 95 0 +64 70 65 95 0 +66 91 96 97 0 +66 92 91 97 0 +66 96 71 97 0 +66 71 72 97 0 +66 67 92 97 0 +66 72 67 97 0 +67 92 97 98 0 +67 93 92 98 0 +67 97 72 98 0 +67 72 73 98 0 +67 68 93 98 0 +67 73 68 98 0 +68 93 98 99 0 +68 94 93 99 0 +68 98 73 99 0 +68 73 74 99 0 +68 69 94 99 0 +68 74 69 99 0 +69 94 99 100 0 +69 95 94 100 0 +69 99 74 100 0 +69 74 75 100 0 +69 70 95 100 0 +69 75 70 100 0 +76 101 106 107 0 +76 102 101 107 0 +76 106 81 107 0 +76 81 82 107 0 +76 77 102 107 0 +76 82 77 107 0 +77 102 107 108 0 +77 103 102 108 0 +77 107 82 108 0 +77 82 83 108 0 +77 78 103 108 0 +77 83 78 108 0 +78 103 108 109 0 +78 104 103 109 0 +78 108 83 109 0 +78 83 84 109 0 +78 79 104 109 0 +78 84 79 109 0 +79 104 109 110 0 +79 105 104 110 0 +79 109 84 110 0 +79 84 85 110 0 +79 80 105 110 0 +79 85 80 110 0 +81 106 111 112 0 +81 107 106 112 0 +81 111 86 112 0 +81 86 87 112 0 +81 82 107 112 0 +81 87 82 112 0 +82 107 112 113 0 +82 108 107 113 0 +82 112 87 113 0 +82 87 88 113 0 +82 83 108 113 0 +82 88 83 113 0 +83 108 113 114 0 +83 109 108 114 0 +83 113 88 114 0 +83 88 89 114 0 +83 84 109 114 0 +83 89 84 114 0 +84 109 114 115 0 +84 110 109 115 0 +84 114 89 115 0 +84 89 90 115 0 +84 85 110 115 0 +84 90 85 115 0 +86 111 116 117 0 +86 112 111 117 0 +86 116 91 117 0 +86 91 92 117 0 +86 87 112 117 0 +86 92 87 117 0 +87 112 117 118 0 +87 113 112 118 0 +87 117 92 118 0 +87 92 93 118 0 +87 88 113 118 0 +87 93 88 118 0 +88 113 118 119 0 +88 114 113 119 0 +88 118 93 119 0 +88 93 94 119 0 +88 89 114 119 0 +88 94 89 119 0 +89 114 119 120 0 +89 115 114 120 0 +89 119 94 120 0 +89 94 95 120 0 +89 90 115 120 0 +89 95 90 120 0 +91 116 121 122 0 +91 117 116 122 0 +91 121 96 122 0 +91 96 97 122 0 +91 92 117 122 0 +91 97 92 122 0 +92 117 122 123 0 +92 118 117 123 0 +92 122 97 123 0 +92 97 98 123 0 +92 93 118 123 0 +92 98 93 123 0 +93 118 123 124 0 +93 119 118 124 0 +93 123 98 124 0 +93 98 99 124 0 +93 94 119 124 0 +93 99 94 124 0 +94 119 124 125 0 +94 120 119 125 0 +94 124 99 125 0 +94 99 100 125 0 +94 95 120 125 0 +94 100 95 125 0 +End diff --git a/contact/examples/3D/semi-implicit/quasistatic-adaptive.json b/contact/examples/3D/semi-implicit/quasistatic-adaptive.json new file mode 100644 index 0000000..e0b4395 --- /dev/null +++ b/contact/examples/3D/semi-implicit/quasistatic-adaptive.json @@ -0,0 +1,61 @@ +{ + "geometry": [ + { + "mesh": "cube.mesh", + "surface_selection": [ + { + "id": 2, + "axis": "+z", + "position": 0.99 + } + ] + }, + { + "mesh": "slab.obj", + "is_obstacle": true + } + ], + "materials": { + "type": "NeoHookean", + "E": 10000000.0, + "nu": 0.45, + "rho": 1000 + }, + "time": { + "tend": 1.0, + "dt": 0.25, + "quasistatic": true + }, + "contact": { + "enabled": true, + "dhat": 0.001 + }, + "boundary_conditions": { + "dirichlet_boundary": [ + { + "id": 2, + "value": [ + "0", + "0", + "-0.25*t" + ] + } + ] + }, + "solver": { + "contact": { + "barrier_stiffness": "adaptive" + }, + "linear": { + "solver": "Eigen::SimplicialLDLT" + } + }, + "output": { + "log": { + "level": "debug" + }, + "paraview": { + "file_name": "quasistatic-adaptive.pvd" + } + } +} diff --git a/contact/examples/3D/semi-implicit/quasistatic-semi-alhess.json b/contact/examples/3D/semi-implicit/quasistatic-semi-alhess.json new file mode 100644 index 0000000..7848ddc --- /dev/null +++ b/contact/examples/3D/semi-implicit/quasistatic-semi-alhess.json @@ -0,0 +1,65 @@ +{ + "geometry": [ + { + "mesh": "cube.mesh", + "surface_selection": [ + { + "id": 2, + "axis": "+z", + "position": 0.99 + } + ] + }, + { + "mesh": "slab.obj", + "is_obstacle": true + } + ], + "materials": { + "type": "NeoHookean", + "E": 10000000.0, + "nu": 0.45, + "rho": 1000 + }, + "time": { + "tend": 1.0, + "dt": 0.25, + "quasistatic": true + }, + "contact": { + "enabled": true, + "dhat": 0.001 + }, + "boundary_conditions": { + "dirichlet_boundary": [ + { + "id": 2, + "value": [ + "0", + "0", + "-0.25*t" + ] + } + ] + }, + "solver": { + "contact": { + "barrier_stiffness": "semi_implicit" + }, + "linear": { + "solver": "Eigen::SimplicialLDLT" + }, + "augmented_lagrangian": { + "strategy": "adaptive_inexact", + "initial_weight": "hessian_scaled" + } + }, + "output": { + "log": { + "level": "debug" + }, + "paraview": { + "file_name": "quasistatic-semi-alhess.pvd" + } + } +} diff --git a/contact/examples/3D/semi-implicit/quasistatic-semi-friction.json b/contact/examples/3D/semi-implicit/quasistatic-semi-friction.json new file mode 100644 index 0000000..43a360b --- /dev/null +++ b/contact/examples/3D/semi-implicit/quasistatic-semi-friction.json @@ -0,0 +1,62 @@ +{ + "geometry": [ + { + "mesh": "cube.mesh", + "surface_selection": [ + { + "id": 2, + "axis": "+z", + "position": 0.99 + } + ] + }, + { + "mesh": "slab.obj", + "is_obstacle": true + } + ], + "materials": { + "type": "NeoHookean", + "E": 10000000.0, + "nu": 0.45, + "rho": 1000 + }, + "time": { + "tend": 1.0, + "dt": 0.25, + "quasistatic": true + }, + "contact": { + "enabled": true, + "dhat": 0.001, + "friction_coefficient": 0.3 + }, + "boundary_conditions": { + "dirichlet_boundary": [ + { + "id": 2, + "value": [ + "0", + "0", + "-0.25*t" + ] + } + ] + }, + "solver": { + "contact": { + "barrier_stiffness": "semi_implicit" + }, + "linear": { + "solver": "Eigen::SimplicialLDLT" + } + }, + "output": { + "log": { + "level": "debug" + }, + "paraview": { + "file_name": "quasistatic-semi-friction.pvd" + } + } +} diff --git a/contact/examples/3D/semi-implicit/quasistatic-semi.json b/contact/examples/3D/semi-implicit/quasistatic-semi.json new file mode 100644 index 0000000..37076c1 --- /dev/null +++ b/contact/examples/3D/semi-implicit/quasistatic-semi.json @@ -0,0 +1,57 @@ +{ + "geometry": [ + { + "mesh": "cube.mesh", + "surface_selection": [ + { + "id": 2, + "axis": "+z", + "position": 0.99 + } + ] + }, + { + "mesh": "slab.obj", + "is_obstacle": true + } + ], + "materials": { + "type": "NeoHookean", + "E": 1e7, + "nu": 0.45, + "rho": 1000 + }, + "time": { + "tend": 1.0, + "dt": 0.25, + "quasistatic": true + }, + "contact": { + "enabled": true, + "dhat": 1e-3 + }, + "boundary_conditions": { + "dirichlet_boundary": [ + { + "id": 2, + "value": ["0", "0", "-0.25*t"] + } + ] + }, + "solver": { + "contact": { + "barrier_stiffness": "semi_implicit" + }, + "linear": { + "solver": "Eigen::SimplicialLDLT" + } + }, + "output": { + "log": { + "level": "debug" + }, + "paraview": { + "file_name": "quasistatic-semi.pvd" + } + } +} diff --git a/contact/examples/3D/semi-implicit/slab.obj b/contact/examples/3D/semi-implicit/slab.obj new file mode 100644 index 0000000..1a83a94 --- /dev/null +++ b/contact/examples/3D/semi-implicit/slab.obj @@ -0,0 +1,6 @@ +v -1 -1 -0.02 +v 2 -1 -0.02 +v 2 2 -0.02 +v -1 2 -0.02 +f 1 2 3 +f 1 3 4 diff --git a/contact/examples/3D/semi-implicit/transient-semi.json b/contact/examples/3D/semi-implicit/transient-semi.json new file mode 100644 index 0000000..09589dd --- /dev/null +++ b/contact/examples/3D/semi-implicit/transient-semi.json @@ -0,0 +1,61 @@ +{ + "geometry": [ + { + "mesh": "cube.mesh", + "surface_selection": [ + { + "id": 2, + "axis": "+z", + "position": 0.99 + } + ] + }, + { + "mesh": "slab.obj", + "is_obstacle": true + } + ], + "materials": { + "type": "NeoHookean", + "E": 10000000.0, + "nu": 0.45, + "rho": 1000 + }, + "time": { + "tend": 1.0, + "dt": 0.25, + "quasistatic": false + }, + "contact": { + "enabled": true, + "dhat": 0.001 + }, + "boundary_conditions": { + "dirichlet_boundary": [ + { + "id": 2, + "value": [ + "0", + "0", + "-0.25*t" + ] + } + ] + }, + "solver": { + "contact": { + "barrier_stiffness": "semi_implicit" + }, + "linear": { + "solver": "Eigen::SimplicialLDLT" + } + }, + "output": { + "log": { + "level": "debug" + }, + "paraview": { + "file_name": "transient-semi.pvd" + } + } +} diff --git a/old-tolerances/standard/homogenization.json b/old-tolerances/standard/homogenization.json index ee929ed..6970956 100644 --- a/old-tolerances/standard/homogenization.json +++ b/old-tolerances/standard/homogenization.json @@ -9,7 +9,10 @@ }, "geometry": [ { - "mesh": "periodic_x.obj" + "mesh": "periodic_x.obj", + "surface_selection": { + "threshold": 1e-05 + } } ], "space": { @@ -39,9 +42,25 @@ } }, "boundary_conditions": { - "periodic_boundary": { - "enabled": true, - "linear_displacement_offset": [ + "periodic": [ + { + "boundary_ids": [ + 1, + 3 + ] + }, + { + "boundary_ids": [ + 2, + 4 + ] + } + ] + }, + "constraints": { + "zero_mean": true, + "macro_displacement_gradient": { + "value": [ [ 0, 0 @@ -51,7 +70,7 @@ -0.3 ] ], - "fixed_macro_strain": [ + "fixed_components": [ 3 ] } @@ -62,4 +81,4 @@ "E": 1000.0, "nu": 0.5 } -} \ No newline at end of file +} diff --git a/old-tolerances/standard/homogenization_3d.json b/old-tolerances/standard/homogenization_3d.json index 164b5eb..7dec8b4 100644 --- a/old-tolerances/standard/homogenization_3d.json +++ b/old-tolerances/standard/homogenization_3d.json @@ -1,15 +1,18 @@ { "tests": { - "err_h1": 0.0365800269690348, - "err_h1_semi": 0.035546839952256826, - "err_l2": 0.008632528161781497, - "err_linf": 0.07348004895820204, - "err_linf_grad": 0.07348004895820204, - "err_lp": 0.037961121562742464 + "err_h1": 0.03655751653608582, + "err_h1_semi": 0.03554683992810072, + "err_l2": 0.008536637886906803, + "err_linf": 0.07307261897514009, + "err_linf_grad": 0.07307261897514009, + "err_lp": 0.0378888280835914 }, "geometry": [ { - "mesh": "unit_cell.msh" + "mesh": "unit_cell.msh", + "surface_selection": { + "threshold": 1e-05 + } } ], "space": { @@ -46,9 +49,31 @@ } }, "boundary_conditions": { - "periodic_boundary": { - "enabled": true, - "linear_displacement_offset": [ + "periodic": [ + { + "boundary_ids": [ + 1, + 3 + ] + }, + { + "boundary_ids": [ + 2, + 4 + ] + }, + { + "boundary_ids": [ + 5, + 6 + ] + } + ] + }, + "constraints": { + "zero_mean": true, + "macro_displacement_gradient": { + "value": [ [ 0, 0, @@ -65,24 +90,7 @@ 0 ] ], - "correspondence": [ - [ - 1, - 0, - 0 - ], - [ - 0, - 1, - 0 - ], - [ - 0, - 0, - 1 - ] - ], - "fixed_macro_strain": [ + "fixed_components": [ 4 ] } @@ -93,4 +101,4 @@ "E": 1000.0, "nu": 0.3 } -} \ No newline at end of file +} diff --git a/old-tolerances/standard/laplace_periodic.json b/old-tolerances/standard/laplace_periodic.json index ffe6aee..6595a87 100644 --- a/old-tolerances/standard/laplace_periodic.json +++ b/old-tolerances/standard/laplace_periodic.json @@ -1,11 +1,24 @@ { "boundary_conditions": { - "periodic_boundary": { - "enabled": true, - "force_zero_mean": true - }, + "periodic": [ + { + "boundary_ids": [ + 1, + 3 + ] + }, + { + "boundary_ids": [ + 2, + 4 + ] + } + ], "rhs": "8*pi^2*cos(2*pi*y)*sin(2*pi*x)" }, + "constraints": { + "zero_mean": true + }, "common": "common.json", "geometry": { "advanced": { @@ -13,7 +26,9 @@ }, "mesh": "../contact/meshes/2D/simple/square.obj", "n_refs": 4, - "surface_selection": 1 + "surface_selection": { + "threshold": 1e-05 + } }, "materials": { "type": "Laplacian" @@ -58,4 +73,4 @@ "margin": 1e-05, "time_steps": "static" } -} \ No newline at end of file +}