...
 
Commits (4)
MeshVersionFormatted 2
Dimension
3
Vertices
6
0 0 0 1
1 0 0 2
2 0 0 3
0 2 0 4
1 2 0 5
2 2 0 6
Edges
6
1 2 11
2 3 12
3 6 13
6 5 14
5 4 15
4 1 16
Triangles
4
1 2 4 21
5 4 2 22
2 3 5 23
6 5 3 24
End
\ No newline at end of file
MeshVersionFormatted 2
Dimension
3
Vertices
6
0 0 0 1
1 0 -0.5 2
2 0 0 3
0 2 0 4
1 2 -0.5 5
2 2 0 6
Edges
6
1 2 11
2 3 12
3 6 13
6 5 14
5 4 15
4 1 16
Triangles
4
4 1 2 21
2 5 4 22
5 2 3 23
3 6 5 24
End
\ No newline at end of file
This diff is collapsed.
MeshVersionFormatted 2
Dimension
3
Vertices
186
0 0 0 1
0.2 0 0 1
0.4 0 0 1
0.6 0 0 1
0.8 0 0 1
1 0 0 1
1.2 0 0 1
1.4 0 0 1
1.6 0 0 1
1.8 0 0 1
2 0 0 1
2.2 0 0 1
2.4 0 0 1
2.6 0 0 1
2.8 0 0 1
3 0 0 1
3.2 0 0 1
3.4 0 0 1
3.6 0 0 1
3.8 0 0 1
4 0 0 1
4.2 0 0 1
4.4 0 0 1
4.6 0 0 1
4.8 0 0 1
5 0 0 1
5.2 0 0 1
5.4 0 0 1
5.6 0 0 1
5.8 0 0 1
6 0 0 1
0 0.2 0 1
0.2 0.2 0 1
0.4 0.2 0 1
0.6 0.2 0 1
0.8 0.2 0 1
1 0.2 0 1
1.2 0.2 0 1
1.4 0.2 0 1
1.6 0.2 0 1
1.8 0.2 0 1
2 0.2 0 1
2.2 0.2 0 1
2.4 0.2 0 1
2.6 0.2 0 1
2.8 0.2 0 1
3 0.2 0 1
3.2 0.2 0 1
3.4 0.2 0 1
3.6 0.2 0 1
3.8 0.2 0 1
4 0.2 0 1
4.2 0.2 0 1
4.4 0.2 0 1
4.6 0.2 0 1
4.8 0.2 0 1
5 0.2 0 1
5.2 0.2 0 1
5.4 0.2 0 1
5.6 0.2 0 1
5.8 0.2 0 1
6 0.2 0 1
0 0.4 0 1
0.2 0.4 0 1
0.4 0.4 0 1
0.6 0.4 0 1
0.8 0.4 0 1
1 0.4 0 1
1.2 0.4 0 1
1.4 0.4 0 1
1.6 0.4 0 1
1.8 0.4 0 1
2 0.4 0 1
2.2 0.4 0 1
2.4 0.4 0 1
2.6 0.4 0 1
2.8 0.4 0 1
3 0.4 0 1
3.2 0.4 0 1
3.4 0.4 0 1
3.6 0.4 0 1
3.8 0.4 0 1
4 0.4 0 1
4.2 0.4 0 1
4.4 0.4 0 1
4.6 0.4 0 1
4.8 0.4 0 1
5 0.4 0 1
5.2 0.4 0 1
5.4 0.4 0 1
5.6 0.4 0 1
5.8 0.4 0 1
6 0.4 0 1
0 0.6 0 1
0.2 0.6 0 1
0.4 0.6 0 1
0.6 0.6 0 1
0.8 0.6 0 1
1 0.6 0 1
1.2 0.6 0 1
1.4 0.6 0 1
1.6 0.6 0 1
1.8 0.6 0 1
2 0.6 0 1
2.2 0.6 0 1
2.4 0.6 0 1
2.6 0.6 0 1
2.8 0.6 0 1
3 0.6 0 1
3.2 0.6 0 1
3.4 0.6 0 1
3.6 0.6 0 1
3.8 0.6 0 1
4 0.6 0 1
4.2 0.6 0 1
4.4 0.6 0 1
4.6 0.6 0 1
4.8 0.6 0 1
5 0.6 0 1
5.2 0.6 0 1
5.4 0.6 0 1
5.6 0.6 0 1
5.8 0.6 0 1
6 0.6 0 1
0 0.8 0 1
0.2 0.8 0 1
0.4 0.8 0 1
0.6 0.8 0 1
0.8 0.8 0 1
1 0.8 0 1
1.2 0.8 0 1
1.4 0.8 0 1
1.6 0.8 0 1
1.8 0.8 0 1
2 0.8 0 1
2.2 0.8 0 1
2.4 0.8 0 1
2.6 0.8 0 1
2.8 0.8 0 1
3 0.8 0 1
3.2 0.8 0 1
3.4 0.8 0 1
3.6 0.8 0 1
3.8 0.8 0 1
4 0.8 0 1
4.2 0.8 0 1
4.4 0.8 0 1
4.6 0.8 0 1
4.8 0.8 0 1
5 0.8 0 1
5.2 0.8 0 1
5.4 0.8 0 1
5.6 0.8 0 1
5.8 0.8 0 1
6 0.8 0 1
0 1 0 1
0.2 1 0 1
0.4 1 0 1
0.6 1 0 1
0.8 1 0 1
1 1 0 1
1.2 1 0 1
1.4 1 0 1
1.6 1 0 1
1.8 1 0 1
2 1 0 1
2.2 1 0 1
2.4 1 0 1
2.6 1 0 1
2.8 1 0 1
3 1 0 1
3.2 1 0 1
3.4 1 0 1
3.6 1 0 1
3.8 1 0 1
4 1 0 1
4.2 1 0 1
4.4 1 0 1
4.6 1 0 1
4.8 1 0 1
5 1 0 1
5.2 1 0 1
5.4 1 0 1
5.6 1 0 1
5.8 1 0 1
6 1 0 1
Edges
70
1 2 1
2 3 1
3 4 1
4 5 1
5 6 1
6 7 1
7 8 1
8 9 1
9 10 1
10 11 1
11 12 1
12 13 1
13 14 1
14 15 1
15 16 1
16 17 1
17 18 1
18 19 1
19 20 1
20 21 1
21 22 1
22 23 1
23 24 1
24 25 1
25 26 1
26 27 1
27 28 1
28 29 1
29 30 1
30 31 1
31 62 2
62 93 2
93 124 2
124 155 2
155 186 2
157 156 3
158 157 3
159 158 3
160 159 3
161 160 3
162 161 3
163 162 3
164 163 3
165 164 3
166 165 3
167 166 3
168 167 3
169 168 3
170 169 3
171 170 3
172 171 3
173 172 3
174 173 3
175 174 3
176 175 3
177 176 3
178 177 3
179 178 3
180 179 3
181 180 3
182 181 3
183 182 3
184 183 3
185 184 3
186 185 3
32 1 4
63 32 4
94 63 4
125 94 4
156 125 4
Triangles
300
1 2 33 0
1 33 32 0
2 3 34 0
2 34 33 0
3 4 35 0
3 35 34 0
4 5 36 0
4 36 35 0
5 6 37 0
5 37 36 0
6 7 38 0
6 38 37 0
7 8 39 0
7 39 38 0
8 9 40 0
8 40 39 0
9 10 41 0
9 41 40 0
10 11 42 0
10 42 41 0
11 12 43 0
11 43 42 0
12 13 44 0
12 44 43 0
13 14 45 0
13 45 44 0
14 15 46 0
14 46 45 0
15 16 47 0
15 47 46 0
16 17 48 0
16 48 47 0
17 18 49 0
17 49 48 0
18 19 50 0
18 50 49 0
19 20 51 0
19 51 50 0
20 21 52 0
20 52 51 0
21 22 53 0
21 53 52 0
22 23 54 0
22 54 53 0
23 24 55 0
23 55 54 0
24 25 56 0
24 56 55 0
25 26 57 0
25 57 56 0
26 27 58 0
26 58 57 0
27 28 59 0
27 59 58 0
28 29 60 0
28 60 59 0
29 30 61 0
29 61 60 0
30 31 62 0
30 62 61 0
32 33 64 0
32 64 63 0
33 34 65 0
33 65 64 0
34 35 66 0
34 66 65 0
35 36 67 0
35 67 66 0
36 37 68 0
36 68 67 0
37 38 69 0
37 69 68 0
38 39 70 0
38 70 69 0
39 40 71 0
39 71 70 0
40 41 72 0
40 72 71 0
41 42 73 0
41 73 72 0
42 43 74 0
42 74 73 0
43 44 75 0
43 75 74 0
44 45 76 0
44 76 75 0
45 46 77 0
45 77 76 0
46 47 78 0
46 78 77 0
47 48 79 0
47 79 78 0
48 49 80 0
48 80 79 0
49 50 81 0
49 81 80 0
50 51 82 0
50 82 81 0
51 52 83 0
51 83 82 0
52 53 84 0
52 84 83 0
53 54 85 0
53 85 84 0
54 55 86 0
54 86 85 0
55 56 87 0
55 87 86 0
56 57 88 0
56 88 87 0
57 58 89 0
57 89 88 0
58 59 90 0
58 90 89 0
59 60 91 0
59 91 90 0
60 61 92 0
60 92 91 0
61 62 93 0
61 93 92 0
63 64 95 0
63 95 94 0
64 65 96 0
64 96 95 0
65 66 97 0
65 97 96 0
66 67 98 0
66 98 97 0
67 68 99 0
67 99 98 0
68 69 100 0
68 100 99 0
69 70 101 0
69 101 100 0
70 71 102 0
70 102 101 0
71 72 103 0
71 103 102 0
72 73 104 0
72 104 103 0
73 74 105 0
73 105 104 0
74 75 106 0
74 106 105 0
75 76 107 0
75 107 106 0
76 77 108 0
76 108 107 0
77 78 109 0
77 109 108 0
78 79 110 0
78 110 109 0
79 80 111 0
79 111 110 0
80 81 112 0
80 112 111 0
81 82 113 0
81 113 112 0
82 83 114 0
82 114 113 0
83 84 115 0
83 115 114 0
84 85 116 0
84 116 115 0
85 86 117 0
85 117 116 0
86 87 118 0
86 118 117 0
87 88 119 0
87 119 118 0
88 89 120 0
88 120 119 0
89 90 121 0
89 121 120 0
90 91 122 0
90 122 121 0
91 92 123 0
91 123 122 0
92 93 124 0
92 124 123 0
94 95 126 0
94 126 125 0
95 96 127 0
95 127 126 0
96 97 128 0
96 128 127 0
97 98 129 0
97 129 128 0
98 99 130 0
98 130 129 0
99 100 131 0
99 131 130 0
100 101 132 0
100 132 131 0
101 102 133 0
101 133 132 0
102 103 134 0
102 134 133 0
103 104 135 0
103 135 134 0
104 105 136 0
104 136 135 0
105 106 137 0
105 137 136 0
106 107 138 0
106 138 137 0
107 108 139 0
107 139 138 0
108 109 140 0
108 140 139 0
109 110 141 0
109 141 140 0
110 111 142 0
110 142 141 0
111 112 143 0
111 143 142 0
112 113 144 0
112 144 143 0
113 114 145 0
113 145 144 0
114 115 146 0
114 146 145 0
115 116 147 0
115 147 146 0
116 117 148 0
116 148 147 0
117 118 149 0
117 149 148 0
118 119 150 0
118 150 149 0
119 120 151 0
119 151 150 0
120 121 152 0
120 152 151 0
121 122 153 0
121 153 152 0
122 123 154 0
122 154 153 0
123 124 155 0
123 155 154 0
125 126 157 0
125 157 156 0
126 127 158 0
126 158 157 0
127 128 159 0
127 159 158 0
128 129 160 0
128 160 159 0
129 130 161 0
129 161 160 0
130 131 162 0
130 162 161 0
131 132 163 0
131 163 162 0
132 133 164 0
132 164 163 0
133 134 165 0
133 165 164 0
134 135 166 0
134 166 165 0
135 136 167 0
135 167 166 0
136 137 168 0
136 168 167 0
137 138 169 0
137 169 168 0
138 139 170 0
138 170 169 0
139 140 171 0
139 171 170 0
140 141 172 0
140 172 171 0
141 142 173 0
141 173 172 0
142 143 174 0
142 174 173 0
143 144 175 0
143 175 174 0
144 145 176 0
144 176 175 0
145 146 177 0
145 177 176 0
146 147 178 0
146 178 177 0
147 148 179 0
147 179 178 0
148 149 180 0
148 180 179 0
149 150 181 0
149 181 180 0
150 151 182 0
150 182 181 0
151 152 183 0
151 183 182 0
152 153 184 0
152 184 183 0
153 154 185 0
153 185 184 0
154 155 186 0
154 186 185 0
End
MeshVersionFormatted 2
Dimension
3
Vertices
100
0 0 0 2
1 0 0 2
1 1 0 2
0 1 0 2
0.11111111111091 0 0 2
0.22222222222171 0 0 2
0.3333333333325 0 0 2
0.44444444444329 0 0 2
0.55555555555438 0 0 2
0.66666666666579 0 0 2
0.77777777777719 0 0 2
0.8888888888886 0 0 2
1 0.11111111111091 0 2
1 0.22222222222171 0 2
1 0.3333333333325 0 2
1 0.44444444444329 0 2
1 0.55555555555438 0 2
1 0.66666666666579 0 2
1 0.77777777777719 0 2
1 0.8888888888886 0 2
0.88888888888843 1 0 2
0.77777777777793 1 0 2
0.66666666666759 1 0 2
0.55555555555725 1 0 2
0.44444444444629 1 0 2
0.33333333333472 1 0 2
0.22222222222315 1 0 2
0.11111111111157 1 0 2
0 0.88888888888843 0 2
0 0.77777777777793 0 2
0 0.66666666666759 0 2
0 0.55555555555725 0 2
0 0.44444444444629 0 2
0 0.33333333333472 0 2
0 0.22222222222315 0 2
0 0.11111111111157 0 2
0.11111111111098 0.1111111111115 0 1
0.11111111111106 0.22222222222299 0 1
0.11111111111113 0.33333333333447 0 1
0.1111111111112 0.44444444444596 0 1
0.11111111111128 0.55555555555693 0 1
0.11111111111135 0.66666666666739 0 1
0.11111111111143 0.77777777777785 0 1
0.1111111111115 0.88888888888845 0 1
0.22222222222187 0.11111111111143 0 1
0.22222222222203 0.22222222222283 0 1
0.22222222222219 0.33333333333423 0 1
0.22222222222235 0.44444444444563 0 1
0.22222222222251 0.55555555555661 0 1
0.22222222222267 0.66666666666719 0 1
0.22222222222283 0.77777777777777 0 1
0.22222222222299 0.88888888888846 0 1
0.33333333333275 0.11111111111135 0 1
0.33333333333299 0.22222222222267 0 1
0.33333333333324 0.33333333333398 0 1
0.33333333333349 0.44444444444529 0 1
0.33333333333373 0.5555555555563 0 1
0.33333333333398 0.66666666666699 0 1
0.33333333333423 0.77777777777769 0 1
0.33333333333447 0.88888888888848 0 1
0.44444444444362 0.11111111111128 0 1
0.44444444444396 0.22222222222251 0 1
0.44444444444429 0.33333333333373 0 1
0.44444444444462 0.44444444444496 0 1
0.44444444444496 0.55555555555598 0 1
0.44444444444529 0.66666666666679 0 1
0.44444444444563 0.7777777777776 0 1
0.44444444444596 0.8888888888885 0 1
0.5555555555547 0.1111111111112 0 1
0.55555555555502 0.22222222222235 0 1
0.55555555555534 0.33333333333349 0 1
0.55555555555566 0.44444444444462 0 1
0.55555555555598 0.55555555555566 0 1
0.5555555555563 0.66666666666659 0 1
0.55555555555661 0.77777777777752 0 1
0.55555555555693 0.88888888888852 0 1
0.66666666666599 0.11111111111113 0 1
0.66666666666619 0.22222222222219 0 1
0.66666666666639 0.33333333333324 0 1
0.66666666666659 0.44444444444429 0 1
0.66666666666679 0.55555555555534 0 1
0.66666666666699 0.66666666666639 0 1
0.66666666666719 0.77777777777744 0 1
0.66666666666739 0.88888888888854 0 1
0.77777777777727 0.11111111111106 0 1
0.77777777777736 0.22222222222203 0 1
0.77777777777744 0.33333333333299 0 1
0.77777777777752 0.44444444444396 0 1
0.7777777777776 0.55555555555502 0 1
0.77777777777769 0.66666666666619 0 1
0.77777777777777 0.77777777777736 0 1
0.77777777777785 0.88888888888856 0 1
0.88888888888858 0.11111111111098 0 1
0.88888888888856 0.22222222222187 0 1
0.88888888888854 0.33333333333275 0 1
0.88888888888852 0.44444444444362 0 1
0.8888888888885 0.5555555555547 0 1
0.88888888888848 0.66666666666599 0 1
0.88888888888846 0.77777777777727 0 1
0.88888888888845 0.88888888888858 0 1
Edges
36
1 5 2
5 6 2
6 7 2
7 8 2
8 9 2
9 10 2
10 11 2
11 12 2
12 2 2
2 13 2
13 14 2
14 15 2
15 16 2
16 17 2
17 18 2
18 19 2
19 20 2
20 3 2
3 21 2
21 22 2
22 23 2
23 24 2
24 25 2
25 26 2
26 27 2
27 28 2
28 4 2
4 29 2
29 30 2
30 31 2
31 32 2
32 33 2
33 34 2
34 35 2
35 36 2
36 1 2
Triangles
162
1 5 36 1
36 5 37 1
36 37 35 1
35 37 38 1
35 38 34 1
34 38 39 1
34 39 33 1
33 39 40 1
33 40 32 1
32 40 41 1
32 41 31 1
31 41 42 1
31 42 30 1
30 42 43 1
30 43 29 1
29 43 44 1
29 44 4 1
4 44 28 1
5 6 37 1
37 6 45 1
37 45 38 1
38 45 46 1
38 46 39 1
39 46 47 1
39 47 40 1
40 47 48 1
40 48 41 1
41 48 49 1
41 49 42 1
42 49 50 1
42 50 43 1
43 50 51 1
43 51 44 1
44 51 52 1
44 52 28 1
28 52 27 1
6 7 45 1
45 7 53 1
45 53 46 1
46 53 54 1
46 54 47 1
47 54 55 1
47 55 48 1
48 55 56 1
48 56 49 1
49 56 57 1
49 57 50 1
50 57 58 1
50 58 51 1
51 58 59 1
51 59 52 1
52 59 60 1
52 60 27 1
27 60 26 1
7 8 53 1
53 8 61 1
53 61 54 1
54 61 62 1
54 62 55 1
55 62 63 1
55 63 56 1
56 63 64 1
56 64 57 1
57 64 65 1
57 65 58 1
58 65 66 1
58 66 59 1
59 66 67 1
59 67 60 1
60 67 68 1
60 68 26 1
26 68 25 1
8 9 61 1
61 9 69 1
61 69 62 1
62 69 70 1
62 70 63 1
63 70 71 1
63 71 64 1
64 71 72 1
64 72 65 1
65 72 73 1
65 73 66 1
66 73 74 1
66 74 67 1
67 74 75 1
67 75 68 1
68 75 76 1
68 76 25 1
25 76 24 1
9 10 69 1
69 10 77 1
69 77 70 1
70 77 78 1
70 78 71 1
71 78 79 1
71 79 72 1
72 79 80 1
72 80 73 1
73 80 81 1
73 81 74 1
74 81 82 1
74 82 75 1
75 82 83 1
75 83 76 1
76 83 84 1
76 84 24 1
24 84 23 1
10 11 77 1
77 11 85 1
77 85 78 1
78 85 86 1
78 86 79 1
79 86 87 1
79 87 80 1
80 87 88 1
80 88 81 1
81 88 89 1
81 89 82 1
82 89 90 1
82 90 83 1
83 90 91 1
83 91 84 1
84 91 92 1
84 92 23 1
23 92 22 1
11 12 85 1
85 12 93 1
85 93 86 1
86 93 94 1
86 94 87 1
87 94 95 1
87 95 88 1
88 95 96 1
88 96 89 1
89 96 97 1
89 97 90 1
90 97 98 1
90 98 91 1
91 98 99 1
91 99 92 1
92 99 100 1
92 100 22 1
22 100 21 1
12 2 93 1
93 2 13 1
93 13 94 1
94 13 14 1
94 14 95 1
95 14 15 1
95 15 96 1
96 15 16 1
96 16 97 1
97 16 17 1
97 17 98 1
98 17 18 1
98 18 99 1
99 18 19 1
99 19 100 1
100 19 20 1
100 20 21 1
21 20 3 1
End
......@@ -39,13 +39,15 @@ namespace MoReFEM
elementary_data_type&& a_elementary_data,
const scalar_parameter& youngs_modulus,
const scalar_parameter& poisson_ratio,
const scalar_parameter& thickness)
const scalar_parameter& thickness,
const scalar_parameter& pretension)
: NonlinearLocalVariationalOperator(a_unknown_storage, a_test_unknown_storage, std::move(a_elementary_data)),
matrix_parent(),
vector_parent(),
youngs_modulus_(youngs_modulus),
poisson_ratio_(poisson_ratio),
thickness_(thickness)
thickness_(thickness),
pretension_(pretension)
{
const auto& elementary_data = GetElementaryData();
......@@ -78,7 +80,7 @@ namespace MoReFEM
{ 6, 6 }, // tangent_matrix
{ 3, 2 }, // displacement_gradient
{ 3, 2 }, // covariant_basis,
// { 3, 2 }, // contravariant_basis,
{ 3, 2 }, // contravariant_basis,
{ 2, 3 }, // transposed_covariant_basis,
{ 2, 2 }, // covariant_metric_tensor,
{ 2, 2 }, // contravariant_metric_tensor,
......@@ -86,6 +88,9 @@ namespace MoReFEM
{ 2, Nnode }, //transposed_dphi
{ Nnode_test, 2 }, // dphi_test_mult_gradient_based_block
{ Nnode_test, Nnode }, // block_contribution
{ 3, 3 }, // invert_generalized_covariant_basis
{ 3, 3 }, // test_pk_in_ref_basis
{ 3, 3 }, // test_gl_in_ref_basis
}});
vector_parent::InitLocalVectorStorage
......@@ -129,7 +134,8 @@ namespace MoReFEM
decltype(auto) youngs_modulus = GetYoungsModulus();
decltype(auto) poisson_ratio = GetPoissonRatio();
decltype(auto) thickness = GetThickness();
decltype(auto) thickness = GetThickness();
decltype(auto) pretension = GetPretension();
const auto& geom_elt = elementary_data.GetCurrentGeomElt();
......@@ -152,10 +158,13 @@ namespace MoReFEM
const double youngs_modulus_value = youngs_modulus.GetValue(quad_pt, geom_elt);
const double poisson_ratio_value = poisson_ratio.GetValue(quad_pt, geom_elt);
const double thickness_value = thickness.GetValue(quad_pt, geom_elt);
const auto pretension_value = pretension.GetValue(quad_pt, geom_elt);
ComputeContravariantBasis(quad_pt_unknown_list_data, determinant);
ComputeDisplacementGradient(quad_pt_unknown_list_data);
ComputeGreenLagrange();
ComputeGreenLagrange(pretension_value);
ComputeTangentTensor(youngs_modulus_value, poisson_ratio_value);
ComputeSecondPiolaKirchhoff();
ComputeDe();
......@@ -167,7 +176,7 @@ namespace MoReFEM
const auto& dphi_test = grad_felt_phi_test;
assert(dphi.GetM() == Nnode);
assert(dphi.GetM() == Nnode);
assert(dphi_test.GetM() == Nnode_test);
if (parent::DoAssembleIntoMatrix())
......@@ -262,7 +271,7 @@ namespace MoReFEM
}
++quad_pt_index;
} // loop over quadrature points
} // loop over quadrature points
}
......@@ -323,25 +332,32 @@ namespace MoReFEM
void NonlinearMembrane
::ComputeDisplacementGradient(const Advanced::LocalVariationalOperatorNS::InfosAtQuadPointNS::ForUnknownList& quad_pt_unknown_list_data)
::ComputeDisplacementGradient(const Advanced::LocalVariationalOperatorNS::InfosAtQuadPointNS
::ForUnknownList& quad_pt_unknown_list_data)
{
auto& displacement_gradient = GetLocalMatrix<EnumUnderlyingType(LocalMatrixIndex::displacement_gradient)>();
displacement_gradient.Zero();
auto& local_displacement = GetFormerLocalDisplacement();
const auto& dphi_geo = quad_pt_unknown_list_data.GetGradientRefGeometricPhi();
// Note #1303: First modification introduced by Antoine: replace dphi_geo by dphi.
// This test make the case with asymmetric (function P2 and test P1) fails; I don't remember if for this
// one Dominique validated it with his script.
//const auto& dphi = quad_pt_unknown_list_data.GetGradientRefGeometricPhi();
const auto& dphi = quad_pt_unknown_list_data.GetGradientRefFEltPhi();
constexpr auto Nsurface_comp = 2ul;
constexpr auto euclidean_dimension = 3ul;
const unsigned int Nshape_function = static_cast<unsigned int>(dphi_geo.GetM());
const unsigned int Nshape_function = static_cast<unsigned int>(dphi.GetM());
for (auto shape_fct_index = 0ul; shape_fct_index < Nshape_function; ++shape_fct_index)
{
const int int_shape_fct_index = static_cast<int>(shape_fct_index);
for (unsigned int component_shape_function = 0u; component_shape_function < Nsurface_comp; ++component_shape_function)
for (unsigned int component_shape_function = 0u; component_shape_function < Nsurface_comp;
++component_shape_function)
{
const int int_component_shape_function = static_cast<int>(component_shape_function);
......@@ -349,20 +365,21 @@ namespace MoReFEM
{
const int int_coord_index = static_cast<int>(coord_index);
const auto local_displacement_index =
euclidean_dimension * shape_fct_index + coord_index;
// Note #1303: Second modification introduced by Antoine. Previous version is commented below.
const auto local_displacement_index = Nshape_function * coord_index + shape_fct_index;
// const auto local_displacement_index =
// euclidean_dimension * shape_fct_index + coord_index;
assert(local_displacement_index < local_displacement.size());
displacement_gradient(int_coord_index, int_component_shape_function)
+= local_displacement[local_displacement_index]
* dphi_geo(int_shape_fct_index, int_component_shape_function);
+= local_displacement[local_displacement_index] * dphi(int_shape_fct_index, int_component_shape_function);
}
}
}
}
void NonlinearMembrane::ComputeGreenLagrange()
void NonlinearMembrane::ComputeGreenLagrange(const double pretension)
{
auto& green_lagrange = GetLocalVector<EnumUnderlyingType(LocalVectorIndex::green_lagrange)>();
const auto& displacement_gradient =
......@@ -388,6 +405,18 @@ namespace MoReFEM
disp_grad_1 * cov_basis_0 +
disp_grad_0 * disp_grad_1;
}
// PRETENSION
if (NumericNS::IsZero(pretension))
{
const auto& covariant_metric_tensor = GetLocalMatrix<EnumUnderlyingType(LocalMatrixIndex::covariant_metric_tensor)>();
green_lagrange(0) += pretension * covariant_metric_tensor(0, 0);
green_lagrange(1) += pretension * covariant_metric_tensor(1, 1);
green_lagrange(2) += 2 * pretension * covariant_metric_tensor(0, 1);
}
}
......@@ -424,6 +453,8 @@ namespace MoReFEM
tangent_tensor(1, 0) = tangent_tensor(0, 1);
tangent_tensor(2, 0) = tangent_tensor(0, 2);
tangent_tensor(2, 1) = tangent_tensor(1, 2);
// std::cout << "tt" << std::endl << tangent_tensor << std::endl;
}
......@@ -434,6 +465,8 @@ namespace MoReFEM
const auto& tangent_tensor = GetLocalMatrix<EnumUnderlyingType(LocalMatrixIndex::tangent_tensor)>();
Seldon::Mlt(tangent_tensor, green_lagrange, second_PK);
// std::cout << "pk" << std::endl << second_PK << std::endl;
}
......@@ -464,6 +497,8 @@ namespace MoReFEM
// Transposed
Wrappers::Seldon::Transpose(De_membrane, transposed_De_membrane);
// std::cout << "de" << std::endl << De_membrane << std::endl;
}
......@@ -499,12 +534,14 @@ namespace MoReFEM
tangent_matrix(2 * i, 2 * i + 1) += second_pk_2;
tangent_matrix(2 * i + 1, 2 * i) += second_pk_2;
}
// std::cout << "tm" << std::endl << tangent_matrix << std::endl;
}
if (parent::DoAssembleIntoVector())
{
rhs_part.Zero();
Seldon::Mlt(transposed_De_membrane, second_PK, rhs_part);
// std::cout << "rhs_part" << std::endl << rhs_part << std::endl;
}
}
......
......@@ -44,7 +44,7 @@ namespace MoReFEM
*/
class NonlinearMembrane final
: public NonlinearLocalVariationalOperator<LocalMatrix, LocalVector>,
public Crtp::LocalMatrixStorage<NonlinearMembrane, 15ul>,
public Crtp::LocalMatrixStorage<NonlinearMembrane, 19ul>,
public Crtp::LocalVectorStorage<NonlinearMembrane, 3ul>
{
......@@ -63,7 +63,7 @@ namespace MoReFEM
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
//! Alias to the parent that provides LocalMatrixStorage.
using matrix_parent = Crtp::LocalMatrixStorage<self, 15ul>;
using matrix_parent = Crtp::LocalMatrixStorage<self, 19ul>;
//! Alias to the parent that provides LocalVectorStorage.
using vector_parent = Crtp::LocalVectorStorage<self, 3ul>;
......@@ -93,7 +93,8 @@ namespace MoReFEM
elementary_data_type&& elementary_data,
const scalar_parameter& youngs_modulus,
const scalar_parameter& poisson_ratio,
const scalar_parameter& thickness);
const scalar_parameter& thickness,
const scalar_parameter& pretension);
//! Destructor.
~NonlinearMembrane();
......@@ -158,7 +159,7 @@ namespace MoReFEM
/*!
* \brief Compute Green-Lagrange.
*/
void ComputeGreenLagrange();
void ComputeGreenLagrange(const double pretension);
/*!
* \brief Compute locally the tangent tensor.
......@@ -200,6 +201,8 @@ namespace MoReFEM
* \return Thickness of the solid.
*/
const scalar_parameter& GetThickness() const noexcept;
const scalar_parameter& GetPretension() const noexcept;
private:
......@@ -214,6 +217,8 @@ namespace MoReFEM
//! Thickness.
const scalar_parameter& thickness_;
const scalar_parameter& pretension_;
///@}
......@@ -235,7 +240,7 @@ namespace MoReFEM
tangent_matrix,
displacement_gradient,
covariant_basis,
// contravariant_basis,
contravariant_basis,
transposed_covariant_basis,
covariant_metric_tensor,
contravariant_metric_tensor,
......@@ -243,6 +248,9 @@ namespace MoReFEM
transposed_dphi,
dphi_test_mult_gradient_based_block,
block_contribution,
invert_generalized_covariant_basis,
test_pk_in_ref_basis,
test_gl_in_ref_basis,
// block_matrix1 = 0,
// block_matrix2,
// block_matrix3,
......