-
Notifications
You must be signed in to change notification settings - Fork 2
/
active__set__impl_8h_source.html
882 lines (880 loc) · 144 KB
/
active__set__impl_8h_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ug4: ugbase/lib_algebra/active_set/active_set_impl.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">ug4
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('active__set__impl_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">active_set_impl.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="active__set__impl_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2013-2015: G-CSC, Goethe University Frankfurt</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Author: Raphael Prohl</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * </span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * This file is part of UG4.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * UG4 is free software: you can redistribute it and/or modify it under the</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * terms of the GNU Lesser General Public License version 3 (as published by the</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * Free Software Foundation) with the following additional attribution</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * requirements (according to LGPL/GPL v3 §7):</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * </span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * (1) The following notice must be displayed in the Appropriate Legal Notices</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * of covered and combined works: "Based on UG4 (www.ug4.org/license)".</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * </span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * (2) The following notice must be displayed at a prominent place in the</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * </span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * (3) The following bibliography is recommended for citation and must be</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * preserved in all covered files:</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * parallel geometric multigrid solver on hierarchically distributed grids.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * Computing and visualization in science 16, 4 (2013), 151-164"</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * flexible software system for simulating pde based models on high performance</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * computers. Computing and visualization in science 16, 4 (2013), 165-179"</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * </span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifndef ACTIVE_SET_IMPL_H_</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define ACTIVE_SET_IMPL_H_</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="active__set_8h.html">active_set.h</a>"</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="geometry__util_8h.html">lib_disc/common/geometry_util.h</a>"</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="fe__geom_8h.html">lib_disc/spatial_disc/disc_util/fe_geom.h</a>"</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">namespace </span><a class="code" href="namespaceug.html">ug</a> {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits.html"> 44</a></span> <span class="keyword">template</span> <<span class="keywordtype">int</span> dim> <span class="keyword">struct </span><a class="code" href="structug_1_1face__type__traits.html">face_type_traits</a></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits.html#a35648a25cad440a13761c97e4b0bb183"> 46</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="structug_1_1face__type__traits.html#a35648a25cad440a13761c97e4b0bb183">face_type0</a>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits.html#a95d22f47899d9d35a591b66cdff2f47b"> 47</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="structug_1_1face__type__traits.html#a95d22f47899d9d35a591b66cdff2f47b">face_type1</a>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits.html#ac6b6c0b959d9bf0fd51fbb0143fb04fc"> 48</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="structug_1_1face__type__traits.html#ac6b6c0b959d9bf0fd51fbb0143fb04fc">DimFEGeo</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_011_01_4.html"> 51</a></span> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structug_1_1face__type__traits.html">face_type_traits</a><1></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_011_01_4.html#ab4fcb6cbf41da6033bc3881195fc541a"> 53</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_reference_vertex.html">ReferenceVertex</a> <a class="code" href="structug_1_1face__type__traits_3_011_01_4.html#ab4fcb6cbf41da6033bc3881195fc541a">face_type0</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_011_01_4.html#a1235618a2a54d45efe87583494cd19bd"> 54</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_reference_vertex.html">ReferenceVertex</a> <a class="code" href="structug_1_1face__type__traits_3_011_01_4.html#a1235618a2a54d45efe87583494cd19bd">face_type1</a>;</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_011_01_4.html#af59b1296285ca56ee1ab831be9e33dce"> 55</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_dim_f_e_geometry.html">DimFEGeometry<1, 1></a> <a class="code" href="structug_1_1face__type__traits_3_011_01_4.html#af59b1296285ca56ee1ab831be9e33dce">DimFEGeo</a>;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_012_01_4.html"> 58</a></span> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structug_1_1face__type__traits.html">face_type_traits</a><2></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_012_01_4.html#a4d3e48badcc9debc32be37f862340d8f"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_reference_edge.html">ReferenceEdge</a> <a class="code" href="structug_1_1face__type__traits_3_012_01_4.html#a4d3e48badcc9debc32be37f862340d8f">face_type0</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_012_01_4.html#a5fc9dabe118da51abc79758c66ff9be9"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_reference_edge.html">ReferenceEdge</a> <a class="code" href="structug_1_1face__type__traits_3_012_01_4.html#a5fc9dabe118da51abc79758c66ff9be9">face_type1</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_012_01_4.html#af3b46c941d24740003c8491b03bdedbd"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_dim_f_e_geometry.html">DimFEGeometry<2, 1></a> <a class="code" href="structug_1_1face__type__traits_3_012_01_4.html#af3b46c941d24740003c8491b03bdedbd">DimFEGeo</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_013_01_4.html"> 65</a></span> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structug_1_1face__type__traits.html">face_type_traits</a><3></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_013_01_4.html#a18d865310c0c13fc21d2a9e0f179a63c"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_reference_triangle.html">ReferenceTriangle</a> <a class="code" href="structug_1_1face__type__traits_3_013_01_4.html#a18d865310c0c13fc21d2a9e0f179a63c">face_type0</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_013_01_4.html#a746475ee0f9ef15c6a437fe01e99f49b"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_reference_quadrilateral.html">ReferenceQuadrilateral</a> <a class="code" href="structug_1_1face__type__traits_3_013_01_4.html#a746475ee0f9ef15c6a437fe01e99f49b">face_type1</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="structug_1_1face__type__traits_3_013_01_4.html#ad2bd1fd5447cf56fbe5f46053397c136"> 69</a></span>  <span class="keyword">typedef</span> <a class="code" href="classug_1_1_dim_f_e_geometry.html">DimFEGeometry<3, 2></a> <a class="code" href="structug_1_1face__type__traits_3_013_01_4.html#ad2bd1fd5447cf56fbe5f46053397c136">DimFEGeo</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#ae1cd802b1ac8a21240cab82885bcbf62"> 73</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::prepare</a>(<a class="code" href="classug_1_1_grid_function.html">function_type</a>& u)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_vActiveSetGlob.resize(0); m_vActiveSetGlobOld.resize(0);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_spDD = u.<a class="code" href="classug_1_1_grid_function.html#a36af77b45414f3862de25200f573e911">dof_distribution</a>();</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_spDom = u.<a class="code" href="classug_1_1_grid_function.html#a323d3e25aa6922cdb86335222e145f0a">domain</a>();</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">/*template <typename TDomain, typename TAlgebra></span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">bool ActiveSet<TDomain, TAlgebra>::check_dist_to_obs(vector_type& u)</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">{</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> // STILL IN PROGRESS: u sollte hier reference-position + Startl�sung sein!</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> value_type dist;</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"></span> </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment"> bool geometry_cut_by_cons = false;</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment"></span> </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"> for(size_t i = 0; i < u.size(); i++)</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"> {</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"> UG_LOG("u(" << i << "):" << u[i] << "\n");</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> UG_LOG("m_spObs(" << i << "):" << (*m_spObs)[i] << "\n");</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment"> dist = (*m_spObs)[i] - u[i];</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment"> UG_LOG("dist:" << dist << "\n");</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"> //TODO: anstatt u muss hier die geometrische Info einflie�en!</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> for (size_t fct = 0; fct < m_nrFcts; fct++)</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> {</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> if (BlockRef(dist,fct) < 0.0) // i.e.: u < m_spObs</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> {</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> geometry_cut_by_cons = true;</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> break;</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> }</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> }</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"></span> </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment"> if (geometry_cut_by_cons)</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment"> break;</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment"></span> </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"> }</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"></span> </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"> return geometry_cut_by_cons;</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">}*/</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// builds up a vector of global (dof,fct)-pairs, which are active (wrt. an obstacle-constraint)</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TElem, <span class="keyword">typename</span> TIterator></div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#adf202c5f10e562be37856961cbeff850"> 115</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::active_index_elem</a>(TIterator iterBegin,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  TIterator iterEnd,</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classug_1_1_grid_function.html">function_type</a>& u,</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classug_1_1_grid_function.html">function_type</a>& rhs,</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classug_1_1_grid_function.html">function_type</a>& lagrangeMult)</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// check if at least an element exists, else return</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(iterBegin == iterEnd) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">int</span> elemCounter = 0;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a> = <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">function_type::dim</a>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classug_1_1_grid_function.html#a00ba1c4740f5c800706e6e8d98a32440">function_type::domain_type</a> domain_type;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#a35648a25cad440a13761c97e4b0bb183">face_type_traits<dim>::face_type0</a> face_type0;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#a95d22f47899d9d35a591b66cdff2f47b">face_type_traits<dim>::face_type1</a> face_type1;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// get position accessor</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">typename</span> domain_type::position_accessor_type& aaPos</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  = u.<a class="code" href="classug_1_1_grid_function.html#a323d3e25aa6922cdb86335222e145f0a">domain</a>()->position_accessor();</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// storage for corner coordinates</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  vector<MathVector<dim> > vCorner;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  vector<MathVector<dim> > vSideCoPos;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="classug_1_1_math_vector.html">MathVector<dim></a> normal;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// local indices and local algebra</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classug_1_1_local_indices.html">LocalIndices</a> ind, indObs;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classug_1_1_local_vector.html">LocalVector</a> locU, locLM, locObs;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="group__ugbase__common.html#gaf349a0d1e8189254086eb3267fd4f460">number</a> complementaryVal;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// TODO: it could be more efficient to store the active elements</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// and its active local indices as well</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// Loop over all elements on active subsets</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">for</span>(TIterator iter = iterBegin; iter != iterEnd; ++iter)</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  TElem* sideElem = *iter;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// reference object type</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="namespaceug.html#a1f0e19a0ec74b2ebb64238aeb498c51b">ReferenceObjectID</a> roid = sideElem->reference_object_id();</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_dim_reference_element.html">DimReferenceElement</a><<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1>& rRefElem</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  = <a class="code" href="namespaceboost.html#a954bd40dc6e30d4773594c7e980d2952">ReferenceElementProvider::get</a><<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1>(roid);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// get corners of element</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="group__lib__disc__domain.html#gaff7229b5d622bfe7df1d58134ff7cef9">CollectCornerCoordinates</a>(vCorner, *sideElem, aaPos);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// here the ordering of the corners in the reference element is exploited</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// in order to compute the outer normal later on</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">int</span> nCorner = (int)vCorner.size();</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < nCorner; ++i)</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  vSideCoPos.push_back(vCorner[rRefElem.id(<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1, 0, 0, i)]);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  </div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (nCorner == <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  ElementNormal<face_type0, dim>(normal, &vSideCoPos[0]);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"face_type0 \n"</span>);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  ElementNormal<face_type1, dim>(normal, &vSideCoPos[0]);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"face_type1 \n"</span>);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">/*for (int i = 0; i < (int)vCorner.size(); ++i)</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment"> UG_LOG("sideCoPos: " << sideCoPos[i] << "\n");</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment"> UG_LOG("normal: " << normal << "\n");*/</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  elemCounter++;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// get global indices</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  u.<a class="code" href="classug_1_1_grid_function.html#a364538c8c21214ea9491b7dc209ecf85">indices</a>(*iter, ind); (*m_spObs).indices(*iter, indObs);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// adapt local algebra</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  locU.<a class="code" href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">resize</a>(ind); locLM.<a class="code" href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">resize</a>(ind); locObs.<a class="code" href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">resize</a>(indObs);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// read local values of u and lagrangeMult</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">GetLocalVector</a>(locU, u); <a class="code" href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">GetLocalVector</a>(locLM, lagrangeMult);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">GetLocalVector</a>(locObs, *m_spObs);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// loop over DoFs in element and store all activeMultiIndex-pairs in vector</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">size_t</span> nrFctElem = ind.<a class="code" href="classug_1_1_local_indices.html#ac943b8d32979628ece8a2533d74d206c">num_fct</a>();</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="group__ugbase__common.html#gaf349a0d1e8189254086eb3267fd4f460">number</a> normOfNormal = <a class="code" href="group__vectors.html#ga017412e0fb3129d2584d77125e692faf">VecLength</a>(normal);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classug_1_1_math_vector.html">MathVector<dim></a> locUDof;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> fct = 0; fct < nrFctElem; ++fct)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">size_t</span> nrDoFsPerFctElem = ind.<a class="code" href="classug_1_1_local_indices.html#a21a08fbf627c18f958b852804981c327">num_dof</a>(fct);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> dof = 0; dof < nrDoFsPerFctElem; ++dof)</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>; ++i)</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  locUDof[i] = locU(i, dof);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// locLM corresponds to the lagrange multiplier lambda,</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// c.f. Hintermueller/Ito/Kunisch(2003)</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="group__ugbase__common.html#gaf349a0d1e8189254086eb3267fd4f460">number</a> locUNormal = <a class="code" href="group__vectors.html#gae9174d47662deb0ba119e0e21f28ec71">VecDot</a>(locUDof, normal) / normOfNormal;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  complementaryVal = locLM(fct ,dof) + locUNormal - locObs(fct, dof);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  </div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (complementaryVal <= 1e-10){</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  locLM(fct,dof) = 0.0;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// create list of active global MultiIndex-pairs. Only those pairs should be attached</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// which are not already a member of the 'activeSetGlob'-vector</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">bool</span> bAlreadyActive = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">for</span> (vector<DoFIndex>::iterator itActiveInd = m_vActiveSetGlob.begin();</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  itActiveInd < m_vActiveSetGlob.end(); ++itActiveInd)</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> ((*itActiveInd)[0] == ind.<a class="code" href="classug_1_1_local_indices.html#a3f9a311fef1fe4b2c8c62e8873cb8736">index</a>(fct, dof)</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  && (*itActiveInd)[1] == ind.<a class="code" href="classug_1_1_local_indices.html#adafdc88f908d2788b0fe9fc1ca147458">comp</a>(fct, dof))</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  bAlreadyActive = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  </div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span> (!bAlreadyActive)</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="classug_1_1_multi_index.html">DoFIndex</a> newActiveIndex(ind.<a class="code" href="classug_1_1_local_indices.html#a3f9a311fef1fe4b2c8c62e8873cb8736">index</a>(fct, dof), ind.<a class="code" href="classug_1_1_local_indices.html#adafdc88f908d2788b0fe9fc1ca147458">comp</a>(fct, dof));</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_vActiveSetGlob.push_back(newActiveIndex);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespaceug.html#a7405db84d59e2fb44d64fcaebca18454">BlockRef</a>(rhs[ind.<a class="code" href="classug_1_1_local_indices.html#a3f9a311fef1fe4b2c8c62e8873cb8736">index</a>(fct, dof)], ind.<a class="code" href="classug_1_1_local_indices.html#adafdc88f908d2788b0fe9fc1ca147458">comp</a>(fct, dof)) = locObs.value(fct,dof);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  } <span class="comment">// end(dof)</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  } <span class="comment">// end(fct)</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// send local to global lagrangeMult</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">//AddLocalVector(lagrangeMult, locLM);</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  </div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"#activeDoFFctPairs global: "</span> << m_vActiveSetGlob.size() << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  } <span class="comment">// end(elem)</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"#elems: "</span> << elemCounter << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  </div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment">// builds up a vector of global (dof,fct)-pairs, which are active (wrt. an obstacle-constraint)</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="comment">// and sets dirichlet values in rhs for active indices</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#a41fd1839ef32819c4a3aa4ce7667888e"> 253</a></span> <span class="keywordtype">bool</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::active_index</a>(<a class="code" href="classug_1_1_grid_function.html">function_type</a>& u,</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classug_1_1_grid_function.html">function_type</a>& rhs, <a class="code" href="classug_1_1_grid_function.html">function_type</a>& lagrangeMult, <a class="code" href="classug_1_1_grid_function.html">function_type</a>& gap)</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> {</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// note: the active-index search is restricted</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// to constraint of the form u * n <= consGF</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(!m_bObs)</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"No constraint set in ActiveSet \n"</span>);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  </div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (u.<a class="code" href="classug_1_1_grid_function.html#a0fa21a2e485d5321617060330ee18ec6">num_indices</a>() != rhs.<a class="code" href="classug_1_1_grid_function.html#a0fa21a2e485d5321617060330ee18ec6">num_indices</a>() || u.<a class="code" href="classug_1_1_grid_function.html#a0fa21a2e485d5321617060330ee18ec6">num_indices</a>() != lagrangeMult.<a class="code" href="classug_1_1_grid_function.html#a0fa21a2e485d5321617060330ee18ec6">num_indices</a>() )</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"GridFunctions u, rhs and lagrangeMult need to be defined "</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="stringliteral">"for the same domain and of the same size in 'ActiveSet:active_index' \n"</span>);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// remember old ActiveSet for convergence check</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">// TODO: avoid this vector copy; m_vActiveSetGlobOld really necessary?</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_vActiveSetGlobOld = m_vActiveSetGlob;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_vActiveSetGlob.resize(0);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// 1.) get all subsets on which the 'gap'-gridfunction is defined!</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// -> store them in vSubsetsOflagrangeMults</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_vActiveSubsets.resize(0);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">//TODO: it is only necessary to loop over all BoundarySubsets!</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> si = 0; si < m_spDD->num_subsets(); si++){</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> fct = 0; fct < gap.<a class="code" href="classug_1_1_do_f_distribution_info_provider.html#af758613a5610c74396c305fb1c12931a">num_fct</a>(); fct++)</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (gap.<a class="code" href="classug_1_1_do_f_distribution_info_provider.html#a4f7a31d60bad0e3b5f373151a89958c9">is_def_in_subset</a>(fct, si))</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_vActiveSubsets.push_back(si);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// 'break' is necessary to ensure that 'si' is</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// only added once when several fcts of</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// 'gap' are defined in subset 'si'!</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  </div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (m_vActiveSubsets.size() == 0)</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"No subsets chosen as possible active subsets. \n"</span>);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"#sizeOfvActiveSubsets: "</span> << m_vActiveSubsets.size() << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  </div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// 2.) loop over all elements of the possible active subsets</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span> (vector<int>::iterator activeSI = m_vActiveSubsets.begin();</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  activeSI != m_vActiveSubsets.end(); ++activeSI)</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">//UG_LOG("activeSI: " << *activeSI << "\n");</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> subsetDim = <a class="code" href="namespaceug.html#ab93a82b9ef6d00b7a3544d771d4c5c96">DimensionOfSubset</a>(*m_spDD->subset_handler(), *activeSI);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">//UG_LOG("subsetDim: " << subsetDim << "\n");</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// 3.) get localU out of u for each element and</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// 4.) store the active global (dof,fct)-pair in m_vActiveSetGlob</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">switch</span>(subsetDim)</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  active_index_elem<RegularEdge></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  (m_spDD->template begin<RegularEdge>(*activeSI),</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_spDD->template end<RegularEdge>(*activeSI), u, rhs, lagrangeMult);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  active_index_elem<Triangle></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  (m_spDD->template begin<Triangle>(*activeSI),</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_spDD->template end<Triangle>(*activeSI), u, rhs, lagrangeMult);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  active_index_elem<Quadrilateral></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  (m_spDD->template begin<Quadrilateral>(*activeSI),</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_spDD->template end<Quadrilateral>(*activeSI), u, rhs, lagrangeMult);</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"ActiveSet::active_index:"</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="stringliteral">"SubsetDimension "</span><< subsetDim <<<span class="stringliteral">" (subset="</span><< *activeSI <<<span class="stringliteral">") not supported."</span>);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  </div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">if</span> (m_vActiveSetGlob.size() > 0) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  </div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="comment">// sets a Dirichlet row for all active Indices</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#adf69c2970f95254fce1d5331a0f13ade"> 330</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::</a></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <a class="code" href="classug_1_1_active_set.html">set_dirichlet_rows</a>(<a class="code" href="classug_1_1_active_set.html#a3b801c631b987d6557c21dad6c8d074e">matrix_type</a>& mat)</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">for</span> (vector<DoFIndex>::iterator itActiveInd = m_vActiveSetGlob.begin();</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  itActiveInd < m_vActiveSetGlob.end(); ++itActiveInd){</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="group__lib__algebra.html#gaa8517cb090f40832480c0dd692b0471b">SetDirichletRow</a>(mat, *itActiveInd);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> }</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  </div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">// computes the lagrange multiplier for a given discretization</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#ab9f3d3ff7347503ade03870a7cfaa767"> 341</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::lagrange_multiplier</a>(<a class="code" href="classug_1_1_grid_function.html">function_type</a>& lagrangeMult,</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_grid_function.html">function_type</a>& u)</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> {</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// check that lagrange multiplier disc is set</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span> (m_spLagMultDisc.invalid())</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"No discretization set to compute the lagrange multiplier (in "</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="stringliteral">"ActiveSet:lagrange_multiplier) \n"</span>);</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  </div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(m_vActiveSetGlob.size() != 0.0)</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"activeDoFs in ActiveSet:lagrange_multiplier "</span> << m_vActiveSetGlob.size() << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="comment">//TODO: pass localActiveElemAndIndex here!!!</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  m_spLagMultDisc->lagrange_multiplier(lagrangeMult, u, m_vActiveSetGlob, m_vActiveSubsets);</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  </div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TElem, <span class="keyword">typename</span> TIterator></div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#adca075ecb90b067ab202bfb5910295f1"> 359</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::lagrange_mat_inv_elem</a>(TIterator iterBegin,</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  TIterator iterEnd, <a class="code" href="classug_1_1_active_set.html#a3b801c631b987d6557c21dad6c8d074e">matrix_type</a>& lagrangeMatInv)</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> {</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#a35648a25cad440a13761c97e4b0bb183">face_type_traits<dim>::face_type0</a> face_type0;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#a95d22f47899d9d35a591b66cdff2f47b">face_type_traits<dim>::face_type1</a> face_type1;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#ac6b6c0b959d9bf0fd51fbb0143fb04fc">face_type_traits<dim>::DimFEGeo</a> sideGeo;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">typename</span> TDomain::position_accessor_type& aaPos = m_spDom->position_accessor();</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  </div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">// some storage</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="classug_1_1_math_vector.html">MathVector<dim></a> normal;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  vector<MathVector<dim> > vCorner;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  vector<MathVector<dim> > vSideCoPos;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  </div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">// local indices and local algebra</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="classug_1_1_local_indices.html">LocalIndices</a> ind; <a class="code" href="classug_1_1_local_matrix.html">LocalMatrix</a> loclagrangeMatInv;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  </div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// Loop over all elements on active subsets</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">for</span>(TIterator iter = iterBegin; iter != iterEnd; ++iter)</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  TElem* elem = *iter;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  </div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// get global indices</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_spDD->indices(elem, ind);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  </div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  loclagrangeMatInv.<a class="code" href="classug_1_1_local_matrix.html#a9dc073bd67d38e997a89f1a0b7a6f10c">resize</a>(ind, ind);</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  loclagrangeMatInv = 0.0;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  </div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// reference object type and geometry</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="namespaceug.html#a1f0e19a0ec74b2ebb64238aeb498c51b">ReferenceObjectID</a> sideRoid = elem->reference_object_id();</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  sideGeo geo(sideRoid, 3, <a class="code" href="classug_1_1_l_f_e_i_d.html">LFEID</a>(LFEID::LAGRANGE, <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>, 1));</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// prepare geometry for type and order</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">try</span>{</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  geo.update_local(sideRoid, <a class="code" href="classug_1_1_l_f_e_i_d.html">LFEID</a>(LFEID::LAGRANGE, <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>, 1), 1);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="group__ugbase__common.html#ga10f56dc5558c42d0e0ab5bb875c73ac7">UG_CATCH_THROW</a>(<span class="stringliteral">"ActiveSet::lagrange_mat_inv_elem:"</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="stringliteral">" Cannot update local values of finite element geometry."</span>);</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  </div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// get corners of element</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="group__lib__disc__domain.html#gaff7229b5d622bfe7df1d58134ff7cef9">CollectCornerCoordinates</a>(vCorner, *elem, aaPos);</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  </div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_dim_reference_element.html">DimReferenceElement</a><<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1>& rRefElem</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  = <a class="code" href="namespaceboost.html#a954bd40dc6e30d4773594c7e980d2952">ReferenceElementProvider::get</a><<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1>(sideRoid);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  </div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordtype">int</span> nCorner = (int)vCorner.size();</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < nCorner; ++i)</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  vSideCoPos.push_back(vCorner[rRefElem.id(<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1, 0, 0, i)]);</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  </div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (nCorner == <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>)</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  ElementNormal<face_type0, dim>(normal, &vSideCoPos[0]);</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  ElementNormal<face_type1, dim>(normal, &vSideCoPos[0]);</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  </div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"normal in lagrange_mat_inv_elem: "</span> << normal << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="comment">//number normOfNormal = VecLength(normal);</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  </div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">try</span>{</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  geo.update(elem, &vSideCoPos[0], <a class="code" href="classug_1_1_l_f_e_i_d.html">LFEID</a>(LFEID::LAGRANGE, <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>, 1), 1);</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  }</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <a class="code" href="group__ugbase__common.html#ga10f56dc5558c42d0e0ab5bb875c73ac7">UG_CATCH_THROW</a>(<span class="stringliteral">"ActiveSet::lagrange_mat_inv_elem:"</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="stringliteral">" Cannot update finite element geometry."</span>);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  </div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ip = 0; ip < geo.num_ip(); ++ip)</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> sh = 0; sh < geo.num_sh(); ++sh)</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < (size_t) <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>; ++i)</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  loclagrangeMatInv(i, sh, i, sh) += 1.0/(geo.weight(ip) * geo.shape(ip, sh));</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// * normal[i] / normOfNormal;</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  </div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <a class="code" href="namespaceug.html#aeec47dde9a615119a17816e9cf7ef30b">AddLocalMatrixToGlobal</a>(lagrangeMatInv, loclagrangeMatInv);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> }</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  </div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#a3d0a9af746851019460e4a1288cd4dc9"> 432</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::lagrange_mat_inv</a>(<a class="code" href="classug_1_1_active_set.html#a3b801c631b987d6557c21dad6c8d074e">matrix_type</a>& lagrangeMatInv)</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">for</span> (vector<int>::iterator activeSI = m_vActiveSubsets.begin();</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  activeSI != m_vActiveSubsets.end(); ++activeSI)</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  {</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"activeSI: "</span> << *activeSI << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> subsetDim = <a class="code" href="namespaceug.html#ab93a82b9ef6d00b7a3544d771d4c5c96">DimensionOfSubset</a>(*m_spDD->subset_handler(), *activeSI);</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"subsetDim: "</span> << subsetDim << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">switch</span>(subsetDim)</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  lagrange_mat_inv_elem<RegularEdge></div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  (m_spDD->template begin<RegularEdge>(*activeSI), m_spDD->template end<RegularEdge>(*activeSI), lagrangeMatInv);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  lagrange_mat_inv_elem<Triangle></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  (m_spDD->template begin<Triangle>(*activeSI), m_spDD->template end<Triangle>(*activeSI), lagrangeMatInv);</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  lagrange_mat_inv_elem<Quadrilateral></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  (m_spDD->template begin<Quadrilateral>(*activeSI), m_spDD->template end<Quadrilateral>(*activeSI), lagrangeMatInv);</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"ActiveSet::lagrange_mat_inv:"</span></div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="stringliteral">"SubsetDimension "</span><<subsetDim<<<span class="stringliteral">" (subset="</span><<*activeSI<<<span class="stringliteral">") not supported."</span>);</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> }</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  </div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#aa924e8e82bcf1003395c607254246dbb"> 463</a></span> <span class="keywordtype">void</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::residual_lagrange_mult</a>(<a class="code" href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">vector_type</a>& lagMult,</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_active_set.html#a3b801c631b987d6557c21dad6c8d074e">matrix_type</a>& mat,</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">vector_type</a>& u,</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">vector_type</a>& rhs)</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> {</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// only if some indices are active the lagrange multiplier is computed</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span>(m_vActiveSetGlob.size() != 0.0)</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (u.size() != lagMult.size())</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"Temporarily u and lagMult need to be "</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="stringliteral">"of same size in ActiveSet:residual_lagrange_mult \n"</span>);</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  </div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">/*matrix_type lagrangeMatInv;</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment"> //SmartPtr<AssembledLinearOperator<algebra_type> > splagrangeMatInv;</span></div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment"> ass_lagrangeMatInv(lagrangeMatInv);*/</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  </div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="class_smart_ptr.html">SmartPtr<vector_type></a> spMat_u = u.clone_without_values();</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  (*spMat_u).resize(u.size());</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  </div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor"> #ifdef UG_PARALLEL</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="namespaceug.html#a9037415f607d9d75b865aa1c67ea0b2e">MatMultDirect</a>(*spMat_u, 1.0, mat, u);</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  spMat_u->set_storage_type(u.get_storage_mask());</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="blas__mat__interface_8h.html#af5b1a9db83d85959216ccb9d1b7ef8ad">MatMult</a>(*spMat_u, 1.0, mat, u);</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  </div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">//SmartPtr<vector_type> spRes = u.clone_without_values();</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">//(*spRes).resize(u.size());</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  </div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// loop MultiIndex-pairs in activeSet-vector</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">for</span> (vector<DoFIndex>::iterator itActiveInd = m_vActiveSetGlob.begin();</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  itActiveInd < m_vActiveSetGlob.end(); ++itActiveInd)</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// compute lagrange multiplier for active multiIndices</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// lagMult = rhs - Mat * u;</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="namespaceug.html#a28505c00901b4dfa87cb8e43a738078f">DoFRef</a>(lagMult, *itActiveInd) = <a class="code" href="namespaceug.html#a28505c00901b4dfa87cb8e43a738078f">DoFRef</a>(rhs, *itActiveInd) - <a class="code" href="namespaceug.html#a28505c00901b4dfa87cb8e43a738078f">DoFRef</a>((*spMat_u), *itActiveInd);</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  </div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">/*#ifdef UG_PARALLEL</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="comment"> MatMultDirect(lagMult, 1.0, lagrangeMatInv, *spRes);</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="comment"> #else</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="comment"> MatMult(lagMult, 1.0, lagrangeMatInv, *spRes);</span></div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="comment"> #endif*/</span></div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  </div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"new lagMult-values computed \n"</span>);</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment">//UG_LOG("rhs updated \n");</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">else</span>{</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"no active index in residual_lagrange_mult \n"</span>);</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> }</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  </div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  </div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TElem, <span class="keyword">typename</span> TIterator></div>
<div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#a7d2b13f9c048b47c7e22ecc2e6eb4b4f"> 518</a></span> <span class="keywordtype">bool</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::check_conv_elem</a>(TIterator iterBegin,</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  TIterator iterEnd, <a class="code" href="classug_1_1_grid_function.html">function_type</a>& u, <span class="keyword">const</span> <a class="code" href="classug_1_1_grid_function.html">function_type</a>& lambda)</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> {</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a> = <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">function_type::dim</a>;</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classug_1_1_grid_function.html#a00ba1c4740f5c800706e6e8d98a32440">function_type::domain_type</a> domain_type;</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#a35648a25cad440a13761c97e4b0bb183">face_type_traits<dim>::face_type0</a> face_type0;</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structug_1_1face__type__traits.html#a95d22f47899d9d35a591b66cdff2f47b">face_type_traits<dim>::face_type1</a> face_type1;</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  </div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="comment">// get position accessor</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">typename</span> domain_type::position_accessor_type& aaPos</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  = u.<a class="code" href="classug_1_1_grid_function.html#a323d3e25aa6922cdb86335222e145f0a">domain</a>()->position_accessor();</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  </div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">// storage for corner coordinates</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  vector<MathVector<dim> > vCorner;</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  vector<MathVector<dim> > vSideCoPos;</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <a class="code" href="classug_1_1_math_vector.html">MathVector<dim></a> normal;</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  </div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">// local indices and local algebra</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="classug_1_1_local_indices.html">LocalIndices</a> ind, indObs;</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="classug_1_1_local_vector.html">LocalVector</a> locU, locObs, locLambda;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  </div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">// Loop over all elements on active subsets</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">for</span>(TIterator iter = iterBegin; iter != iterEnd; ++iter)</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  {</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  TElem* elem = *iter;</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  </div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// reference object type</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="namespaceug.html#a1f0e19a0ec74b2ebb64238aeb498c51b">ReferenceObjectID</a> roid = elem->reference_object_id();</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  </div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_dim_reference_element.html">DimReferenceElement</a><<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1>& rRefElem</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  = <a class="code" href="namespaceboost.html#a954bd40dc6e30d4773594c7e980d2952">ReferenceElementProvider::get</a><<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1>(roid);</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  </div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="comment">// get corners of element</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="group__lib__disc__domain.html#gaff7229b5d622bfe7df1d58134ff7cef9">CollectCornerCoordinates</a>(vCorner, *elem, aaPos);</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  </div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// here the ordering of the corners in the reference element is exploited</span></div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="comment">// in order to compute the outer normal later on</span></div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordtype">int</span> nCorner = (int)vCorner.size();</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < nCorner; ++i)</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  vSideCoPos.push_back(vCorner[rRefElem.id(<a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>-1, 0, 0, i)]);</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  </div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span> (nCorner == <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>)</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  ElementNormal<face_type0, dim>(normal, &vSideCoPos[0]);</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  ElementNormal<face_type1, dim>(normal, &vSideCoPos[0]);</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  </div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="comment">// get global indices</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  u.<a class="code" href="classug_1_1_grid_function.html#a364538c8c21214ea9491b7dc209ecf85">indices</a>(*iter, ind); (*m_spObs).indices(*iter, indObs);</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  </div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// adapt local algebra</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  locU.<a class="code" href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">resize</a>(ind); locObs.<a class="code" href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">resize</a>(indObs); locLambda.<a class="code" href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">resize</a>(ind);</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  </div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="comment">// read local values of u and lagrangeMult</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <a class="code" href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">GetLocalVector</a>(locU, u); <a class="code" href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">GetLocalVector</a>(locObs, *m_spObs);</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <a class="code" href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">GetLocalVector</a>(locLambda, lambda);</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  </div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordtype">size_t</span> nrFctElem = ind.<a class="code" href="classug_1_1_local_indices.html#ac943b8d32979628ece8a2533d74d206c">num_fct</a>();</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <a class="code" href="group__ugbase__common.html#gaf349a0d1e8189254086eb3267fd4f460">number</a> gapValue, locUNormal, kktcond;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <a class="code" href="group__ugbase__common.html#gaf349a0d1e8189254086eb3267fd4f460">number</a> normOfNormal = <a class="code" href="group__vectors.html#ga017412e0fb3129d2584d77125e692faf">VecLength</a>(normal);</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <a class="code" href="classug_1_1_math_vector.html">MathVector<dim></a> locUDof;</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  </div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> fct = 0; fct < nrFctElem; ++fct)</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordtype">size_t</span> nrDoFsPerFctElem = ind.<a class="code" href="classug_1_1_local_indices.html#a21a08fbf627c18f958b852804981c327">num_dof</a>(fct);</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> dof = 0; dof < nrDoFsPerFctElem; ++dof)</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  {</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < <a class="codeRef" href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a>; ++i)</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  locUDof[i] = locU(i, dof);</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  locUNormal = <a class="code" href="group__vectors.html#gae9174d47662deb0ba119e0e21f28ec71">VecDot</a>(locUDof, normal) / normOfNormal;</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  </div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  gapValue = locUNormal - locObs(fct, dof);</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span> (gapValue > 1e-06){</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">// i.e.: m_spObs < u</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="comment">// constraint is violated</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  </div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  kktcond = gapValue * locLambda(fct, dof);</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">if</span> (kktcond > 1e-06 || kktcond < -1e-06)</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  </div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  } <span class="comment">// end(dof)</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  } <span class="comment">// end(fct)</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  } <span class="comment">// end(elem)</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  </div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> }</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  </div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#a4fd84fa9b5e1b775978b81a148f76ba7"> 607</a></span> <span class="keywordtype">bool</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::check_conv</a>(<a class="code" href="classug_1_1_grid_function.html">function_type</a>& u, <span class="keyword">const</span> <a class="code" href="classug_1_1_grid_function.html">function_type</a>& lambda,</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> step)</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> {</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="comment">// ensure that at least one activeSet-iteration is performed</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">if</span> (step <= 1)</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  </div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="comment">// NOW TWO CHECKS WILL BE PERFORMED TO ENSURE CONVERGENCE:</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="comment">// 1. Did some multiIndices change from 'active' to 'inactive' or vice versa</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// in the last iteration-step?</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">// 2. Is the constraint violated for any DoFIndex?</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  </div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(m_vActiveSetGlob.size() << <span class="stringliteral">" indices are active at the begin "</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="stringliteral">"of step "</span> << step << <span class="stringliteral">" ! \n"</span>);</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  </div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// check if activeSet has changed</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">if</span> (m_vActiveSetGlob == m_vActiveSetGlobOld)</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="comment">// check if constraint is fulfilled</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordtype">bool</span> bConstraintViolated = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">for</span> (vector<int>::iterator activeSI = m_vActiveSubsets.begin();</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  activeSI != m_vActiveSubsets.end(); ++activeSI)</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  {</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> subsetDim = <a class="code" href="namespaceug.html#ab93a82b9ef6d00b7a3544d771d4c5c96">DimensionOfSubset</a>(*m_spDD->subset_handler(), *activeSI);</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">switch</span>(subsetDim)</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">if</span> (!check_conv_elem<RegularEdge></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  (m_spDD->template begin<RegularEdge>(*activeSI), m_spDD->template end<RegularEdge>(*activeSI),</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  u, lambda))</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  {bConstraintViolated = <span class="keyword">true</span>;}</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  </div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">if</span> (!check_conv_elem<Triangle></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  (m_spDD->template begin<Triangle>(*activeSI),</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  m_spDD->template end<Triangle>(*activeSI), u, lambda))</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  {bConstraintViolated = <span class="keyword">true</span>;}</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  </div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">if</span> (!check_conv_elem<Quadrilateral></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  (m_spDD->template begin<Quadrilateral>(*activeSI),</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  m_spDD->template end<Quadrilateral>(*activeSI), u, lambda))</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  {bConstraintViolated = <span class="keyword">true</span>;}</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  </div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"ActiveSet::check_conv:"</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="stringliteral">"SubsetDimension "</span><< subsetDim <<<span class="stringliteral">" (subset="</span><< *activeSI <<<span class="stringliteral">") not supported."</span>);</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  }</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  </div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">if</span> (bConstraintViolated)</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  }</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  </div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="comment">// activeSet remains unchanged & constraint is fulfilled for all indices</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  }</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">else</span>{</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  }</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> }</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  </div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  </div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="keyword">template</span> <<span class="keyword">typename</span> TDomain, <span class="keyword">typename</span> TAlgebra></div>
<div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classug_1_1_active_set.html#a9ea1eb1852e297a95344064cc63a4551"> 673</a></span> <span class="keywordtype">bool</span> <a class="code" href="classug_1_1_active_set.html">ActiveSet<TDomain, TAlgebra>::check_inequ</a>(<span class="keyword">const</span> <a class="code" href="classug_1_1_active_set.html#a3b801c631b987d6557c21dad6c8d074e">matrix_type</a>& mat,</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">vector_type</a>& u,</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">vector_type</a>& lambda,</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keyword">const</span> <a class="code" href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">vector_type</a>& rhs)</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> {</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span> (u.size() != lambda.size())</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <a class="code" href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a>(<span class="stringliteral">"Temporarily u and lambda need to be "</span></div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="stringliteral">"of same size in ActiveSet:check_inequ \n"</span>);</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  </div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="class_smart_ptr.html">SmartPtr<vector_type></a> spMat_u = u.clone_without_values();</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="class_smart_ptr.html">SmartPtr<vector_type></a> spRes = u.clone_without_values();</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  (*spMat_u).resize(u.size()); (*spRes).resize(u.size());</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  </div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor"> #ifdef UG_PARALLEL</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <a class="code" href="namespaceug.html#a9037415f607d9d75b865aa1c67ea0b2e">MatMultDirect</a>(*spMat_u, 1.0, mat, u);</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  spMat_u->set_storage_type(u.get_storage_mask());</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  spRes->set_storage_type(u.get_storage_mask());</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <a class="code" href="blas__mat__interface_8h.html#af5b1a9db83d85959216ccb9d1b7ef8ad">MatMult</a>(*spMat_u, 1.0, mat, u);</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  </div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < u.size(); ++i)</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="comment">//if (lambda[i] < -1e-06)</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="comment">// return false;</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  </div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  (*spRes)[i] = (*spMat_u)[i] - rhs[i]; <span class="comment">//+ lambda[i] - rhs[i]; //</span></div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <a class="code" href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a>(<span class="stringliteral">"lambda["</span><< i << <span class="stringliteral">"]: "</span> << lambda[i] <<<span class="stringliteral">", res["</span> << i << <span class="stringliteral">"]: "</span> << (*spRes)[i] << <span class="stringliteral">"\n"</span>);</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="comment">//if ((*spRes)[i] > 1e-06)</span></div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="comment">// return false;</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  </div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> }</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  </div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> }; <span class="comment">// namespace ug</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  </div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor">#endif </span><span class="comment">/* ACTIVE_SET_IMPL_H_ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aactive__set_8h_html"><div class="ttname"><a href="active__set_8h.html">active_set.h</a></div></div>
<div class="ttc" id="ablas__mat__interface_8h_html_af5b1a9db83d85959216ccb9d1b7ef8ad"><div class="ttname"><a href="blas__mat__interface_8h.html#af5b1a9db83d85959216ccb9d1b7ef8ad">MatMult</a></div><div class="ttdeci">bool MatMult(vector_t &dest, const matrix_t &A1, const vector_t &w1)</div><div class="ttdoc">calculates dest = A1 * w1;</div></div>
<div class="ttc" id="aclass_smart_ptr_html"><div class="ttname"><a href="class_smart_ptr.html">SmartPtr< vector_type ></a></div></div>
<div class="ttc" id="aclassug_1_1_active_set_html"><div class="ttname"><a href="classug_1_1_active_set.html">ug::ActiveSet</a></div><div class="ttdoc">Active Set method.</div><div class="ttdef"><b>Definition:</b> active_set.h:100</div></div>
<div class="ttc" id="aclassug_1_1_active_set_html_a3b801c631b987d6557c21dad6c8d074e"><div class="ttname"><a href="classug_1_1_active_set.html#a3b801c631b987d6557c21dad6c8d074e">ug::ActiveSet::matrix_type</a></div><div class="ttdeci">algebra_type::matrix_type matrix_type</div><div class="ttdoc">Type of algebra matrix.</div><div class="ttdef"><b>Definition:</b> active_set.h:106</div></div>
<div class="ttc" id="aclassug_1_1_active_set_html_a9004ef6b25260540e71c5da6adb8b0bf"><div class="ttname"><a href="classug_1_1_active_set.html#a9004ef6b25260540e71c5da6adb8b0bf">ug::ActiveSet::vector_type</a></div><div class="ttdeci">algebra_type::vector_type vector_type</div><div class="ttdoc">Type of algebra vector.</div><div class="ttdef"><b>Definition:</b> active_set.h:109</div></div>
<div class="ttc" id="aclassug_1_1_dim_f_e_geometry_html"><div class="ttname"><a href="classug_1_1_dim_f_e_geometry.html">ug::DimFEGeometry</a></div><div class="ttdef"><b>Definition:</b> fe_geom.h:183</div></div>
<div class="ttc" id="aclassug_1_1_dim_reference_element_html"><div class="ttname"><a href="classug_1_1_dim_reference_element.html">ug::DimReferenceElement</a></div><div class="ttdoc">dimension dependent base class for reference elements</div><div class="ttdef"><b>Definition:</b> reference_element.h:183</div></div>
<div class="ttc" id="aclassug_1_1_do_f_distribution_info_provider_html_a4f7a31d60bad0e3b5f373151a89958c9"><div class="ttname"><a href="classug_1_1_do_f_distribution_info_provider.html#a4f7a31d60bad0e3b5f373151a89958c9">ug::DoFDistributionInfoProvider::is_def_in_subset</a></div><div class="ttdeci">bool is_def_in_subset(size_t fct, int si) const</div><div class="ttdoc">returns if a function is defined on a subset</div><div class="ttdef"><b>Definition:</b> dof_distribution_info.h:217</div></div>
<div class="ttc" id="aclassug_1_1_do_f_distribution_info_provider_html_af758613a5610c74396c305fb1c12931a"><div class="ttname"><a href="classug_1_1_do_f_distribution_info_provider.html#af758613a5610c74396c305fb1c12931a">ug::DoFDistributionInfoProvider::num_fct</a></div><div class="ttdeci">size_t num_fct() const</div><div class="ttdoc">number of discrete functions on subset si</div><div class="ttdef"><b>Definition:</b> dof_distribution_info.h:176</div></div>
<div class="ttc" id="aclassug_1_1_grid_function_html"><div class="ttname"><a href="classug_1_1_grid_function.html">ug::GridFunction</a></div><div class="ttdoc">represents numerical solutions on a grid using an algebraic vector</div><div class="ttdef"><b>Definition:</b> grid_function.h:121</div></div>
<div class="ttc" id="aclassug_1_1_grid_function_html_a00ba1c4740f5c800706e6e8d98a32440"><div class="ttname"><a href="classug_1_1_grid_function.html#a00ba1c4740f5c800706e6e8d98a32440">ug::GridFunction::domain_type</a></div><div class="ttdeci">TDomain domain_type</div><div class="ttdoc">Domain.</div><div class="ttdef"><b>Definition:</b> grid_function.h:130</div></div>
<div class="ttc" id="aclassug_1_1_grid_function_html_a0fa21a2e485d5321617060330ee18ec6"><div class="ttname"><a href="classug_1_1_grid_function.html#a0fa21a2e485d5321617060330ee18ec6">ug::GridFunction::num_indices</a></div><div class="ttdeci">size_t num_indices() const</div><div class="ttdoc">return the number of indices distributed (proc local)</div><div class="ttdef"><b>Definition:</b> grid_function.h:303</div></div>
<div class="ttc" id="aclassug_1_1_grid_function_html_a323d3e25aa6922cdb86335222e145f0a"><div class="ttname"><a href="classug_1_1_grid_function.html#a323d3e25aa6922cdb86335222e145f0a">ug::GridFunction::domain</a></div><div class="ttdeci">SmartPtr< TDomain > domain()</div><div class="ttdoc">returns domain</div><div class="ttdef"><b>Definition:</b> grid_function.h:342</div></div>
<div class="ttc" id="aclassug_1_1_grid_function_html_a364538c8c21214ea9491b7dc209ecf85"><div class="ttname"><a href="classug_1_1_grid_function.html#a364538c8c21214ea9491b7dc209ecf85">ug::GridFunction::indices</a></div><div class="ttdeci">void indices(TElem *elem, LocalIndices &ind, bool bHang=false) const</div><div class="ttdoc">get all indices of the element</div><div class="ttdef"><b>Definition:</b> grid_function.h:317</div></div>
<div class="ttc" id="aclassug_1_1_grid_function_html_a36af77b45414f3862de25200f573e911"><div class="ttname"><a href="classug_1_1_grid_function.html#a36af77b45414f3862de25200f573e911">ug::GridFunction::dof_distribution</a></div><div class="ttdeci">SmartPtr< DoFDistribution > dof_distribution()</div><div class="ttdef"><b>Definition:</b> grid_function.h:236</div></div>
<div class="ttc" id="aclassug_1_1_l_f_e_i_d_html"><div class="ttname"><a href="classug_1_1_l_f_e_i_d.html">ug::LFEID</a></div><div class="ttdoc">Identifier for Local Finite Elements.</div><div class="ttdef"><b>Definition:</b> local_finite_element_id.h:98</div></div>
<div class="ttc" id="aclassug_1_1_local_indices_html"><div class="ttname"><a href="classug_1_1_local_indices.html">ug::LocalIndices</a></div><div class="ttdef"><b>Definition:</b> local_algebra.h:50</div></div>
<div class="ttc" id="aclassug_1_1_local_indices_html_a21a08fbf627c18f958b852804981c327"><div class="ttname"><a href="classug_1_1_local_indices.html#a21a08fbf627c18f958b852804981c327">ug::LocalIndices::num_dof</a></div><div class="ttdeci">size_t num_dof(size_t fct) const</div><div class="ttdoc">number of dofs for accessible function</div><div class="ttdef"><b>Definition:</b> local_algebra.h:117</div></div>
<div class="ttc" id="aclassug_1_1_local_indices_html_a3f9a311fef1fe4b2c8c62e8873cb8736"><div class="ttname"><a href="classug_1_1_local_indices.html#a3f9a311fef1fe4b2c8c62e8873cb8736">ug::LocalIndices::index</a></div><div class="ttdeci">index_type index(size_t fct, size_t dof) const</div><div class="ttdoc">global algebra index for (fct, dof)</div><div class="ttdef"><b>Definition:</b> local_algebra.h:139</div></div>
<div class="ttc" id="aclassug_1_1_local_indices_html_ac943b8d32979628ece8a2533d74d206c"><div class="ttname"><a href="classug_1_1_local_indices.html#ac943b8d32979628ece8a2533d74d206c">ug::LocalIndices::num_fct</a></div><div class="ttdeci">size_t num_fct() const</div><div class="ttdoc">number of functions</div><div class="ttdef"><b>Definition:</b> local_algebra.h:114</div></div>
<div class="ttc" id="aclassug_1_1_local_indices_html_adafdc88f908d2788b0fe9fc1ca147458"><div class="ttname"><a href="classug_1_1_local_indices.html#adafdc88f908d2788b0fe9fc1ca147458">ug::LocalIndices::comp</a></div><div class="ttdeci">comp_type comp(size_t fct, size_t dof) const</div><div class="ttdoc">algebra comp for (fct, dof)</div><div class="ttdef"><b>Definition:</b> local_algebra.h:153</div></div>
<div class="ttc" id="aclassug_1_1_local_matrix_html"><div class="ttname"><a href="classug_1_1_local_matrix.html">ug::LocalMatrix</a></div><div class="ttdef"><b>Definition:</b> local_algebra.h:422</div></div>
<div class="ttc" id="aclassug_1_1_local_matrix_html_a9dc073bd67d38e997a89f1a0b7a6f10c"><div class="ttname"><a href="classug_1_1_local_matrix.html#a9dc073bd67d38e997a89f1a0b7a6f10c">ug::LocalMatrix::resize</a></div><div class="ttdeci">void resize(const LocalIndices &ind)</div><div class="ttdoc">resize for same ind in row and column</div><div class="ttdef"><b>Definition:</b> local_algebra.h:445</div></div>
<div class="ttc" id="aclassug_1_1_local_vector_html"><div class="ttname"><a href="classug_1_1_local_vector.html">ug::LocalVector</a></div><div class="ttdef"><b>Definition:</b> local_algebra.h:198</div></div>
<div class="ttc" id="aclassug_1_1_local_vector_html_abce2dcf8ef3003c039fd57a6778fefb7"><div class="ttname"><a href="classug_1_1_local_vector.html#abce2dcf8ef3003c039fd57a6778fefb7">ug::LocalVector::resize</a></div><div class="ttdeci">void resize(const LocalIndices &ind)</div><div class="ttdoc">resize for current local indices</div><div class="ttdef"><b>Definition:</b> local_algebra.h:214</div></div>
<div class="ttc" id="aclassug_1_1_math_vector_html"><div class="ttname"><a href="classug_1_1_math_vector.html">ug::MathVector< dim ></a></div></div>
<div class="ttc" id="aclassug_1_1_multi_index_html"><div class="ttname"><a href="classug_1_1_multi_index.html">ug::MultiIndex</a></div><div class="ttdef"><b>Definition:</b> multi_index.h:50</div></div>
<div class="ttc" id="aclassug_1_1_reference_edge_html"><div class="ttname"><a href="classug_1_1_reference_edge.html">ug::ReferenceEdge</a></div><div class="ttdef"><b>Definition:</b> reference_element.h:345</div></div>
<div class="ttc" id="aclassug_1_1_reference_quadrilateral_html"><div class="ttname"><a href="classug_1_1_reference_quadrilateral.html">ug::ReferenceQuadrilateral</a></div><div class="ttdef"><b>Definition:</b> reference_element.h:445</div></div>
<div class="ttc" id="aclassug_1_1_reference_triangle_html"><div class="ttname"><a href="classug_1_1_reference_triangle.html">ug::ReferenceTriangle</a></div><div class="ttdef"><b>Definition:</b> reference_element.h:394</div></div>
<div class="ttc" id="aclassug_1_1_reference_vertex_html"><div class="ttname"><a href="classug_1_1_reference_vertex.html">ug::ReferenceVertex</a></div><div class="ttdef"><b>Definition:</b> reference_element.h:303</div></div>
<div class="ttc" id="afe__geom_8h_html"><div class="ttname"><a href="fe__geom_8h.html">fe_geom.h</a></div></div>
<div class="ttc" id="ageometry__util_8h_html"><div class="ttname"><a href="geometry__util_8h.html">geometry_util.h</a></div></div>
<div class="ttc" id="agroup__lib__algebra_html_gaa8517cb090f40832480c0dd692b0471b"><div class="ttname"><a href="group__lib__algebra.html#gaa8517cb090f40832480c0dd692b0471b">ug::SetDirichletRow</a></div><div class="ttdeci">void SetDirichletRow(TSparseMatrix &A, size_t i, size_t alpha)</div><div class="ttdef"><b>Definition:</b> sparsematrix_util.h:796</div></div>
<div class="ttc" id="agroup__lib__disc__domain_html_gaff7229b5d622bfe7df1d58134ff7cef9"><div class="ttname"><a href="group__lib__disc__domain.html#gaff7229b5d622bfe7df1d58134ff7cef9">ug::CollectCornerCoordinates</a></div><div class="ttdeci">void CollectCornerCoordinates(std::vector< typename TAAPos::ValueType > &vCornerCoordsOut, const TElem &elem, const TAAPos &aaPos, bool clearContainer=true)</div><div class="ttdoc">returns the corner coordinates of a geometric object</div><div class="ttdef"><b>Definition:</b> domain_util_impl.h:75</div></div>
<div class="ttc" id="agroup__small__strain__mechanics_html_ga425548c7b0fe054612f37d1f3a4826b6"><div class="ttname"><a href="../plugins/group__small__strain__mechanics.html#ga425548c7b0fe054612f37d1f3a4826b6">dim</a></div><div class="ttdeci">static const int dim</div></div>
<div class="ttc" id="agroup__ugbase__common_html_ga10f56dc5558c42d0e0ab5bb875c73ac7"><div class="ttname"><a href="group__ugbase__common.html#ga10f56dc5558c42d0e0ab5bb875c73ac7">UG_CATCH_THROW</a></div><div class="ttdeci">#define UG_CATCH_THROW(msg)</div><div class="ttdef"><b>Definition:</b> error.h:64</div></div>
<div class="ttc" id="agroup__ugbase__common_html_ga43687df88af405f6ac7058dd3639993d"><div class="ttname"><a href="group__ugbase__common.html#ga43687df88af405f6ac7058dd3639993d">UG_THROW</a></div><div class="ttdeci">#define UG_THROW(msg)</div><div class="ttdef"><b>Definition:</b> error.h:57</div></div>
<div class="ttc" id="agroup__ugbase__common_html_ga849480b16e1d7c49266a92cd5db63942"><div class="ttname"><a href="group__ugbase__common.html#ga849480b16e1d7c49266a92cd5db63942">UG_LOG</a></div><div class="ttdeci">#define UG_LOG(msg)</div><div class="ttdef"><b>Definition:</b> log.h:367</div></div>
<div class="ttc" id="agroup__ugbase__common_html_gaf349a0d1e8189254086eb3267fd4f460"><div class="ttname"><a href="group__ugbase__common.html#gaf349a0d1e8189254086eb3267fd4f460">number</a></div><div class="ttdeci">double number</div><div class="ttdef"><b>Definition:</b> types.h:124</div></div>
<div class="ttc" id="agroup__vectors_html_ga017412e0fb3129d2584d77125e692faf"><div class="ttname"><a href="group__vectors.html#ga017412e0fb3129d2584d77125e692faf">ug::VecLength</a></div><div class="ttdeci">vector_t::value_type VecLength(const vector_t &v)</div><div class="ttdoc">returns the length of v. Slower than VecLengthSq.</div><div class="ttdef"><b>Definition:</b> math_vector_functions_common_impl.hpp:341</div></div>
<div class="ttc" id="agroup__vectors_html_gae9174d47662deb0ba119e0e21f28ec71"><div class="ttname"><a href="group__vectors.html#gae9174d47662deb0ba119e0e21f28ec71">ug::VecDot</a></div><div class="ttdeci">vector_t::value_type VecDot(const vector_t &v1, const vector_t &v2)</div><div class="ttdoc">returns the dot-product of two vector_ts</div><div class="ttdef"><b>Definition:</b> math_vector_functions_common_impl.hpp:385</div></div>
<div class="ttc" id="anamespaceboost_html_a954bd40dc6e30d4773594c7e980d2952"><div class="ttname"><a href="namespaceboost.html#a954bd40dc6e30d4773594c7e980d2952">boost::get</a></div><div class="ttdeci">SM_edge_weight_map< typename T::value_type, ug::BidirectionalMatrix< T > > get(edge_weight_t, ug::BidirectionalMatrix< T > const &g)</div><div class="ttdef"><b>Definition:</b> bidirectional_boost.h:157</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> smart_pointer.h:814</div></div>
<div class="ttc" id="anamespaceug_html"><div class="ttname"><a href="namespaceug.html">ug</a></div><div class="ttdoc">the ug namespace</div></div>
<div class="ttc" id="anamespaceug_html_a1f0e19a0ec74b2ebb64238aeb498c51b"><div class="ttname"><a href="namespaceug.html#a1f0e19a0ec74b2ebb64238aeb498c51b">ug::ReferenceObjectID</a></div><div class="ttdeci">ReferenceObjectID</div><div class="ttdoc">these ids are used to identify the shape of a geometric object.</div><div class="ttdef"><b>Definition:</b> grid_base_objects.h:74</div></div>
<div class="ttc" id="anamespaceug_html_a28505c00901b4dfa87cb8e43a738078f"><div class="ttname"><a href="namespaceug.html#a28505c00901b4dfa87cb8e43a738078f">ug::DoFRef</a></div><div class="ttdeci">number & DoFRef(TMatrix &mat, const DoFIndex &iInd, const DoFIndex &jInd)</div><div class="ttdef"><b>Definition:</b> multi_index.h:276</div></div>
<div class="ttc" id="anamespaceug_html_a7405db84d59e2fb44d64fcaebca18454"><div class="ttname"><a href="namespaceug.html#a7405db84d59e2fb44d64fcaebca18454">ug::BlockRef</a></div><div class="ttdeci">double & BlockRef(T &vec, size_t i)</div><div class="ttdef"><b>Definition:</b> blocks.h:66</div></div>
<div class="ttc" id="anamespaceug_html_a9037415f607d9d75b865aa1c67ea0b2e"><div class="ttname"><a href="namespaceug.html#a9037415f607d9d75b865aa1c67ea0b2e">ug::MatMultDirect</a></div><div class="ttdeci">bool MatMultDirect(ParallelVector< vector_type > &dest, const number &beta1, const ParallelMatrix< matrix_type > &A1, const ParallelVector< vector_type > &w1)</div><div class="ttdef"><b>Definition:</b> parallel_matrix_impl.h:224</div></div>
<div class="ttc" id="anamespaceug_html_aaefcef3316801b7bb518861b629e35d7"><div class="ttname"><a href="namespaceug.html#aaefcef3316801b7bb518861b629e35d7">ug::GetLocalVector</a></div><div class="ttdeci">void GetLocalVector(LocalVector &lvec, const TVector &vec)</div><div class="ttdef"><b>Definition:</b> local_algebra.h:739</div></div>
<div class="ttc" id="anamespaceug_html_ab93a82b9ef6d00b7a3544d771d4c5c96"><div class="ttname"><a href="namespaceug.html#ab93a82b9ef6d00b7a3544d771d4c5c96">ug::DimensionOfSubset</a></div><div class="ttdeci">int DimensionOfSubset(const ISubsetHandler &sh, int si)</div><div class="ttdoc">returns the current dimension of the subset</div><div class="ttdef"><b>Definition:</b> subset_dim_util.cpp:89</div></div>
<div class="ttc" id="anamespaceug_html_aeec47dde9a615119a17816e9cf7ef30b"><div class="ttname"><a href="namespaceug.html#aeec47dde9a615119a17816e9cf7ef30b">ug::AddLocalMatrixToGlobal</a></div><div class="ttdeci">void AddLocalMatrixToGlobal(TMatrix &mat, const LocalMatrix &lmat)</div><div class="ttdef"><b>Definition:</b> local_algebra.h:767</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_011_01_4_html_a1235618a2a54d45efe87583494cd19bd"><div class="ttname"><a href="structug_1_1face__type__traits_3_011_01_4.html#a1235618a2a54d45efe87583494cd19bd">ug::face_type_traits< 1 >::face_type1</a></div><div class="ttdeci">ReferenceVertex face_type1</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:54</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_011_01_4_html_ab4fcb6cbf41da6033bc3881195fc541a"><div class="ttname"><a href="structug_1_1face__type__traits_3_011_01_4.html#ab4fcb6cbf41da6033bc3881195fc541a">ug::face_type_traits< 1 >::face_type0</a></div><div class="ttdeci">ReferenceVertex face_type0</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:53</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_011_01_4_html_af59b1296285ca56ee1ab831be9e33dce"><div class="ttname"><a href="structug_1_1face__type__traits_3_011_01_4.html#af59b1296285ca56ee1ab831be9e33dce">ug::face_type_traits< 1 >::DimFEGeo</a></div><div class="ttdeci">DimFEGeometry< 1, 1 > DimFEGeo</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:55</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_012_01_4_html_a4d3e48badcc9debc32be37f862340d8f"><div class="ttname"><a href="structug_1_1face__type__traits_3_012_01_4.html#a4d3e48badcc9debc32be37f862340d8f">ug::face_type_traits< 2 >::face_type0</a></div><div class="ttdeci">ReferenceEdge face_type0</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:60</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_012_01_4_html_a5fc9dabe118da51abc79758c66ff9be9"><div class="ttname"><a href="structug_1_1face__type__traits_3_012_01_4.html#a5fc9dabe118da51abc79758c66ff9be9">ug::face_type_traits< 2 >::face_type1</a></div><div class="ttdeci">ReferenceEdge face_type1</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:61</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_012_01_4_html_af3b46c941d24740003c8491b03bdedbd"><div class="ttname"><a href="structug_1_1face__type__traits_3_012_01_4.html#af3b46c941d24740003c8491b03bdedbd">ug::face_type_traits< 2 >::DimFEGeo</a></div><div class="ttdeci">DimFEGeometry< 2, 1 > DimFEGeo</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:62</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_013_01_4_html_a18d865310c0c13fc21d2a9e0f179a63c"><div class="ttname"><a href="structug_1_1face__type__traits_3_013_01_4.html#a18d865310c0c13fc21d2a9e0f179a63c">ug::face_type_traits< 3 >::face_type0</a></div><div class="ttdeci">ReferenceTriangle face_type0</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:67</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_013_01_4_html_a746475ee0f9ef15c6a437fe01e99f49b"><div class="ttname"><a href="structug_1_1face__type__traits_3_013_01_4.html#a746475ee0f9ef15c6a437fe01e99f49b">ug::face_type_traits< 3 >::face_type1</a></div><div class="ttdeci">ReferenceQuadrilateral face_type1</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:68</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_3_013_01_4_html_ad2bd1fd5447cf56fbe5f46053397c136"><div class="ttname"><a href="structug_1_1face__type__traits_3_013_01_4.html#ad2bd1fd5447cf56fbe5f46053397c136">ug::face_type_traits< 3 >::DimFEGeo</a></div><div class="ttdeci">DimFEGeometry< 3, 2 > DimFEGeo</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:69</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_html"><div class="ttname"><a href="structug_1_1face__type__traits.html">ug::face_type_traits</a></div><div class="ttdef"><b>Definition:</b> active_set_impl.h:45</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_html_a35648a25cad440a13761c97e4b0bb183"><div class="ttname"><a href="structug_1_1face__type__traits.html#a35648a25cad440a13761c97e4b0bb183">ug::face_type_traits::face_type0</a></div><div class="ttdeci">void face_type0</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:46</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_html_a95d22f47899d9d35a591b66cdff2f47b"><div class="ttname"><a href="structug_1_1face__type__traits.html#a95d22f47899d9d35a591b66cdff2f47b">ug::face_type_traits::face_type1</a></div><div class="ttdeci">void face_type1</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:47</div></div>
<div class="ttc" id="astructug_1_1face__type__traits_html_ac6b6c0b959d9bf0fd51fbb0143fb04fc"><div class="ttname"><a href="structug_1_1face__type__traits.html#ac6b6c0b959d9bf0fd51fbb0143fb04fc">ug::face_type_traits::DimFEGeo</a></div><div class="ttdeci">void DimFEGeo</div><div class="ttdef"><b>Definition:</b> active_set_impl.h:48</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_80abd05104fe5ed4636c8ba64911e654.html">ugbase</a></li><li class="navelem"><a class="el" href="dir_2e5eee3e6a2607df2611cb3dc665a6d5.html">lib_algebra</a></li><li class="navelem"><a class="el" href="dir_7c96bd2845f61b11b267b29fee69af21.html">active_set</a></li><li class="navelem"><a class="el" href="active__set__impl_8h.html">active_set_impl.h</a></li>
<li class="footer">Generated on Mon Nov 25 2024 01:15:14 for ug4 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
</ul>
</div>
</body>
</html>