forked from mumax/plus
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcpp_class_diagram.drawio
More file actions
701 lines (701 loc) · 72.6 KB
/
cpp_class_diagram.drawio
File metadata and controls
701 lines (701 loc) · 72.6 KB
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
<mxfile host="65bd71144e" modified="2021-02-02T09:38:00.167Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.52.1 Chrome/83.0.4103.122 Electron/9.3.5 Safari/537.36" etag="iw_gahxsCKqOd3nuQHCW" version="13.10.0" type="embed">
<diagram id="3Fg5za8XqQxQwpxaVsY4" name="Mumax C++">
<mxGraphModel dx="1527" dy="3972" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="4681" pageHeight="3300" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="core.World" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="651" y="-1240" width="190" height="210" as="geometry"/>
</mxCell>
<mxCell id="3" value="+ cellsize_: real3 + mastergrid_: Grid + timesolver_: std::unique_ptr<TimeSolver>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="2" vertex="1">
<mxGeometry y="30" width="190" height="70" as="geometry"/>
</mxCell>
<mxCell id="4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="2" vertex="1">
<mxGeometry y="100" width="190" height="8" as="geometry"/>
</mxCell>
<mxCell id="5" value="+ cellsize(): real3 + cellVolume(): real + mastergrid(): Grid + inMastergrid(Grid): bool + time(): real + timesolver(): TimeSolver&" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="2" vertex="1">
<mxGeometry y="108" width="190" height="102" as="geometry"/>
</mxCell>
<mxCell id="11" value="physics.MumaxWorld" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="531" y="-850" width="400" height="250" as="geometry"/>
</mxCell>
<mxCell id="12" value="public: + biasMagneticField: real3 private: + ferromagnets_: std::map<std::string, std::unique_ptr<Ferromagnet*>>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="11" vertex="1">
<mxGeometry y="26" width="400" height="64" as="geometry"/>
</mxCell>
<mxCell id="13" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="11" vertex="1">
<mxGeometry y="90" width="400" height="8" as="geometry"/>
</mxCell>
<mxCell id="14" value="public: + addFerromagnet(Grid, std::string: type): Ferromagnet* + addFerromagnet(Grid, GpuBuffer<bool>, std::string): Ferromagnet* + getFerromagnet(std::string): Ferromagnet* + ferromagnets(): std::map<std::string, Ferromagnet*> private: + resolveTimeSolverEquations(): void " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="11" vertex="1">
<mxGeometry y="98" width="400" height="152" as="geometry"/>
</mxCell>
<mxCell id="16" value="timesolver.TimeSolver" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1041" y="-160" width="290" height="480" as="geometry"/>
</mxCell>
<mxCell id="17" value="private: + maxError: real + time_: real + timestep_: real + fixedTimeStep_: bool + eqs_: std::vector<DynamicEquation> + stepper_: std::unique_ptr<Stepper> " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="16" vertex="1">
<mxGeometry y="26" width="290" height="104" as="geometry"/>
</mxCell>
<mxCell id="18" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="16" vertex="1">
<mxGeometry y="130" width="290" height="8" as="geometry"/>
</mxCell>
<mxCell id="19" value="public: + equations(): const std::vector<DynamicEquation>& + time(): real + timestep(): real + hasAdaptiveTimeStep(): bool + maxError(): real + setEquations(std::vector<DynamicEqaution>): void + setTime(real): void + setTimeStep(real): void + enableAdaptiveTimeStep(): void + disableAdaptiveTimeStep(): void + setMaxError(real): void + step(): void + steps(unsigned int): void + runwhile(std::function<bool(void)>): void + run(real): void + sensibleTimeStep(): real + adaptiveTimeStep(real): void " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="16" vertex="1">
<mxGeometry y="138" width="290" height="342" as="geometry"/>
</mxCell>
<mxCell id="20" value="Composition" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" parent="1" source="11" target="16" edge="1">
<mxGeometry x="-0.7822" y="-20" relative="1" as="geometry">
<mxPoint x="811" y="-880" as="sourcePoint"/>
<mxPoint x="1071" y="-760.5" as="targetPoint"/>
<Array as="points">
<mxPoint x="831" y="-880"/>
<mxPoint x="1186" y="-880"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="21" value="physics.Ferromagnet" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1331" y="-840" width="340" height="600" as="geometry"/>
</mxCell>
<mxCell id="22" value="public: + enableDemag: bool + anisU: VectorParameter + jcur: VectorParameter + biasMagneticField: VectorParameter + msat: Parameter + aex: Parameter + ku1: Parameter + ku2: Parameter + alpha: Parameter + temperature: Parameter + idmi: Parameter + xi: Parameter + pol: Parameter + randomGenerator: curandGenerator_t private: + system_: std::shared_ptr<System> + magnetization_: NormalizedVariable + strayFields_: std::map<const Ferromagnet*, StrayFields*> + name_: string " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="21" vertex="1">
<mxGeometry y="26" width="340" height="334" as="geometry"/>
</mxCell>
<mxCell id="75" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;" parent="21" target="29" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="150" y="680" as="sourcePoint"/>
<mxPoint x="150" y="-100" as="targetPoint"/>
<Array as="points">
<mxPoint x="150" y="620"/>
<mxPoint x="-80" y="620"/>
<mxPoint x="-80" y="-120"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="23" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="21" vertex="1">
<mxGeometry y="360" width="340" height="8" as="geometry"/>
</mxCell>
<mxCell id="24" value="public: + name(): std::string + system(): std::shared_ptr<const System> + world(): const World* + grid(): Grid + cellsize(): real3 + magnetization(): const Variable* + getGeometry(): const GpuBuffer<bool>& + getStrayField(const Ferromagnet*): const StrayField* + getStrayFields(): std::vector<const StrayField*> + addStrayField(const Ferromagnet*, StrayFieldExecutor::Method): void + removeStrayField(const Ferromagnet*): void + minimize(real, int): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="21" vertex="1">
<mxGeometry y="368" width="340" height="232" as="geometry"/>
</mxCell>
<mxCell id="25" value="Composition" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;exitX=0.59;exitY=-0.004;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry x="-0.9103" y="-11" relative="1" as="geometry">
<mxPoint x="770" y="-850.84" as="sourcePoint"/>
<mxPoint x="1494" y="-840" as="targetPoint"/>
<Array as="points">
<mxPoint x="770" y="-920"/>
<mxPoint x="1494" y="-920"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="26" value="core.Grid" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="891" y="-1240" width="250" height="300" as="geometry"/>
</mxCell>
<mxCell id="27" value="private: + size_: int3 + origin_: int3" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="26" vertex="1">
<mxGeometry y="26" width="250" height="54" as="geometry"/>
</mxCell>
<mxCell id="28" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="26" vertex="1">
<mxGeometry y="80" width="250" height="8" as="geometry"/>
</mxCell>
<mxCell id="29" value="public: + setSize(int3): void + setOrigin(int3): void + size(): int3 + origin(): int3 + ncells(): int + index2coord(int): int3 + coord2index(int3): int + cellInGrid(int): bool + cellInGrid(int3) bool + wrap(int3): int3 + overlaps(Grid): bool + operator==(const Grid&, const Grid&): bool + operator!=(const Grid&, const Grid&): bool " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="26" vertex="1">
<mxGeometry y="88" width="250" height="212" as="geometry"/>
</mxCell>
<mxCell id="30" value="Composition" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="2" target="26" edge="1">
<mxGeometry x="-0.9208" y="-10" relative="1" as="geometry">
<mxPoint x="731" y="-1280" as="sourcePoint"/>
<mxPoint x="891" y="-1280" as="targetPoint"/>
<Array as="points">
<mxPoint x="746" y="-1280"/>
<mxPoint x="1016" y="-1280"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="31" value="timesolver.DynamicEquation " style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1451" y="-160" width="280" height="200" as="geometry"/>
</mxCell>
<mxCell id="32" value="public + x: const Variable* + rhs: std::shared_ptr<FieldQuantity> + noiseTerm: std::shared_ptr<FieldQuantity>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="31" vertex="1">
<mxGeometry y="26" width="280" height="84" as="geometry"/>
</mxCell>
<mxCell id="33" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="31" vertex="1">
<mxGeometry y="110" width="280" height="8" as="geometry"/>
</mxCell>
<mxCell id="34" value="+ ncomp(): int + grid(): Grid + system(): std::shared_ptr<const System>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="31" vertex="1">
<mxGeometry y="118" width="280" height="82" as="geometry"/>
</mxCell>
<mxCell id="36" value="<br>" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;exitX=0.695;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="16" target="130" edge="1">
<mxGeometry x="-0.8992" y="-18" relative="1" as="geometry">
<mxPoint x="1243" y="-170" as="sourcePoint"/>
<mxPoint x="1611" y="-200" as="targetPoint"/>
<Array as="points">
<mxPoint x="1243" y="-200"/>
<mxPoint x="1840" y="-200"/>
<mxPoint x="1840" y="-130"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="142" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="36" vertex="1" connectable="0">
<mxGeometry x="0.6028" y="-6" relative="1" as="geometry">
<mxPoint x="-551.19" y="14" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="38" value="core.Variable" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1331" y="-1480" width="160" height="320" as="geometry"/>
</mxCell>
<mxCell id="39" value="protected: + field_: Field* private: + name_: std::string + unit_: std::string" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="38" vertex="1">
<mxGeometry y="26" width="160" height="84" as="geometry"/>
</mxCell>
<mxCell id="40" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="38" vertex="1">
<mxGeometry y="110" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="41" value="public: + ncomp(): int + system(): std::shared_ptr<const System> + name(): std::string + unit(): std::string + eval(): Field + field(): const Field& + set(const Field&): void + set(real): void + set(real3): void + operator=(const Field&): void + operator=(real): void + operator=(real3): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="38" vertex="1">
<mxGeometry y="118" width="160" height="202" as="geometry"/>
</mxCell>
<mxCell id="42" value="core.NormalizedVariable" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1331" y="-1120" width="160" height="160" as="geometry"/>
</mxCell>
<mxCell id="43" value="-" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="42" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry"/>
</mxCell>
<mxCell id="44" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="42" vertex="1">
<mxGeometry y="52" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="45" value="public: + set(const Field&): void + set(real): void + set(real3): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="42" vertex="1">
<mxGeometry y="60" width="160" height="100" as="geometry"/>
</mxCell>
<mxCell id="49" value="<p style="margin: 0px ; margin-top: 4px ; text-align: center"><i>&lt;&lt;Interface&gt;&gt;</i><br><b>core.FieldQuantity</b></p><hr size="1"><p style="margin: 0px ; margin-left: 4px">-</p><hr size="1"><p style="margin: 0px ; margin-left: 4px">+ ncomp(): int<br>+ system(): std::shared_ptr&lt;const System&gt;</p><p style="margin: 0px ; margin-left: 4px">+ eval(): Field</p><p style="margin: 0px ; margin-left: 4px">+ unit(): std::string</p><p style="margin: 0px ; margin-left: 4px">+ name: std::string</p><p style="margin: 0px ; margin-left: 4px">+ addToField(Field&amp;): void</p><p style="margin: 0px ; margin-left: 4px">+ average(): std::vector&lt;real&gt;</p><p style="margin: 0px ; margin-left: 4px">+ assuredZero(): bool</p><p style="margin: 0px ; margin-left: 4px">+ grid(): Grid</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1051" y="-1760" width="240" height="210" as="geometry"/>
</mxCell>
<mxCell id="58" value="core.Field" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1611" y="-1520" width="240" height="480" as="geometry"/>
</mxCell>
<mxCell id="59" value="private: + ncomp_: int + system_: std::shared_ptr<System> + buffers_: std::vector<GpuBuffer<real>> + bufferPtrs_: GpuBuffer<real*>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="58" vertex="1">
<mxGeometry y="26" width="240" height="94" as="geometry"/>
</mxCell>
<mxCell id="60" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="58" vertex="1">
<mxGeometry y="120" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="61" value="public: + eval(): Field + operator=(Field&&): Field& + operator=(const Field&): Field& + operator=(const FiledQuantity&) + operator+=(const Field&): Field& + operator -=(const Field&): Field& + operator+=(const FieldQuantity&): Field& + operator-=(const FieldQuantity&): Field& + clear(): void + empty(): bool + system(): std::shared_ptr<const System> + ncomp(): int + devptr(int): real* + cu(): CuField + getData(real*): void + setData(real*): void + setUniformComponent(int, real): void + makeZero(): void + setZeroOutsideGeometry(): void private: + updateDevicePointerBuffer() + allocate(): void + free(): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="58" vertex="1">
<mxGeometry y="128" width="240" height="352" as="geometry"/>
</mxCell>
<mxCell id="62" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="38" target="49" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1301" y="-1520" as="sourcePoint"/>
<mxPoint x="1341" y="-1530" as="targetPoint"/>
<Array as="points">
<mxPoint x="1411" y="-1510"/>
<mxPoint x="1171" y="-1510"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="63" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="42" target="41" edge="1">
<mxGeometry y="-30" width="160" relative="1" as="geometry">
<mxPoint x="1341" y="-1150" as="sourcePoint"/>
<mxPoint x="1501" y="-1150" as="targetPoint"/>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="64" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.474;exitY=-0.01;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="11" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="731" y="-853" as="sourcePoint"/>
<mxPoint x="720" y="-1030" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="66" value="Friend" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.49;entryY=0.999;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="58" target="160" edge="1">
<mxGeometry x="0.143" width="160" relative="1" as="geometry">
<mxPoint x="1731" y="-1560" as="sourcePoint"/>
<mxPoint x="2030.8846153846152" y="-1810" as="targetPoint"/>
<Array as="points">
<mxPoint x="1731" y="-1560"/>
<mxPoint x="2020" y="-1560"/>
<mxPoint x="2028" y="-1560"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="68" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.328;exitY=-0.003;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.022;entryY=0.951;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="58" target="49" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1721" y="-1560" as="sourcePoint"/>
<mxPoint x="1411" y="-1560" as="targetPoint"/>
<Array as="points">
<mxPoint x="1691" y="-1560"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="71" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.564;exitY=-0.014;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="31" target="38" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1571" y="-750" as="sourcePoint"/>
<mxPoint x="1891" y="-1630" as="targetPoint"/>
<Array as="points">
<mxPoint x="1611" y="-200"/>
<mxPoint x="1691" y="-200"/>
<mxPoint x="1691" y="-920"/>
<mxPoint x="1571" y="-920"/>
<mxPoint x="1561" y="-1160"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="72" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.93;exitY=0.01;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.025;entryY=0.573;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="31" target="49" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1721" y="-200" as="sourcePoint"/>
<mxPoint x="1912.60009765625" y="-1750" as="targetPoint"/>
<Array as="points">
<mxPoint x="1711" y="-200"/>
<mxPoint x="1730" y="-200"/>
<mxPoint x="1730" y="-840"/>
<mxPoint x="1880" y="-840"/>
<mxPoint x="1880" y="-1640"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="78" value="core.Parameter" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1971" y="-1520" width="240" height="290" as="geometry"/>
</mxCell>
<mxCell id="79" value="private: + system_: std::shared_ptr<const System> + uniformValue: real + field_: Field" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="78" vertex="1">
<mxGeometry y="26" width="240" height="94" as="geometry"/>
</mxCell>
<mxCell id="80" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="78" vertex="1">
<mxGeometry y="120" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="81" value="public: + set(real): void + set(const Field&): void + isUniform(): bool + assuredZero(): bool + ncomp() : int + system(): std::shared_ptr<const System> + eval(): Field + cu(): CuParameter" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="78" vertex="1">
<mxGeometry y="128" width="240" height="162" as="geometry"/>
</mxCell>
<mxCell id="82" value="core.CuParameter" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="2190" y="-2120" width="160" height="200" as="geometry"/>
</mxCell>
<mxCell id="83" value="public: + system: const CuSystem + uniformValue: const real private: + valuesPtr: real*" style="text;strokeColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="82" vertex="1">
<mxGeometry y="26" width="160" height="94" as="geometry"/>
</mxCell>
<mxCell id="84" value="" style="line;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;fillColor=none;" parent="82" vertex="1">
<mxGeometry y="120" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="85" value="public: + isUniform(): bool + valueAt(int): real + valueAt(int3): real" style="text;strokeColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="82" vertex="1">
<mxGeometry y="128" width="160" height="72" as="geometry"/>
</mxCell>
<mxCell id="86" value="Friend" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.862;exitY=-0.004;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.498;entryY=1.115;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="78" target="85" edge="1">
<mxGeometry x="-0.0034" y="-1" width="160" relative="1" as="geometry">
<mxPoint x="2091" y="-1560" as="sourcePoint"/>
<mxPoint x="2251" y="-1560" as="targetPoint"/>
<Array as="points">
<mxPoint x="2178" y="-1760"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="87" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="78" target="49" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2031" y="-1580" as="sourcePoint"/>
<mxPoint x="2191" y="-1580" as="targetPoint"/>
<Array as="points">
<mxPoint x="1851" y="-1600"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="88" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.708;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.668;exitY=-0.01;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="78" target="58" edge="1">
<mxGeometry x="-0.8047" relative="1" as="geometry">
<mxPoint x="2131" y="-1540" as="sourcePoint"/>
<mxPoint x="1771" y="-1550" as="targetPoint"/>
<Array as="points">
<mxPoint x="2131" y="-1540"/>
<mxPoint x="1781" y="-1540"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="Composition" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1911" y="-1540" width="80" height="20" as="geometry"/>
</mxCell>
<mxCell id="90" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" parent="1" source="38" edge="1">
<mxGeometry x="-0.9333" y="-10" relative="1" as="geometry">
<mxPoint x="1511" y="-1520" as="sourcePoint"/>
<mxPoint x="1671" y="-1520" as="targetPoint"/>
<Array as="points">
<mxPoint x="1451" y="-1540"/>
<mxPoint x="1671" y="-1540"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="91" value="core.System" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="360" y="-1200" width="240" height="240" as="geometry"/>
</mxCell>
<mxCell id="92" value="private: + world_: const World* + grid_: Grid + geometry_: GpuBuffer<bool> " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="91" vertex="1">
<mxGeometry y="26" width="240" height="84" as="geometry"/>
</mxCell>
<mxCell id="93" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;rounded=1;" parent="91" vertex="1">
<mxGeometry y="110" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="94" value="public: + world(): const World* + grid(): Grid + cellsize(): real3 + cellPosition(int3): real3 + geometry(): const GpuBuffer<bool>& + cu(): CuSystem" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=1;" parent="91" vertex="1">
<mxGeometry y="118" width="240" height="122" as="geometry"/>
</mxCell>
<mxCell id="95" value="" style="endArrow=open;endFill=1;endSize=12;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" target="2" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="440" y="-1202" as="sourcePoint"/>
<mxPoint x="670" y="-1280" as="targetPoint"/>
<Array as="points">
<mxPoint x="440" y="-1240"/>
<mxPoint x="440" y="-1280"/>
<mxPoint x="580" y="-1280"/>
<mxPoint x="690" y="-1280"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="98" value="Association" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=1;" parent="1" vertex="1">
<mxGeometry x="510" y="-1270" width="40" height="20" as="geometry"/>
</mxCell>
<mxCell id="100" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.277;entryY=-0.003;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="26" edge="1">
<mxGeometry x="-0.9286" y="-10" relative="1" as="geometry">
<mxPoint x="540" y="-1200" as="sourcePoint"/>
<mxPoint x="960" y="-1320" as="targetPoint"/>
<Array as="points">
<mxPoint x="540" y="-1200"/>
<mxPoint x="540" y="-1300"/>
<mxPoint x="960" y="-1300"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="101" value="" style="endArrow=open;endFill=1;endSize=12;html=1;exitX=0.571;exitY=0.005;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.583;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="78" target="91" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2100" y="-1570" as="sourcePoint"/>
<mxPoint x="500" y="-1780" as="targetPoint"/>
<Array as="points">
<mxPoint x="2110" y="-1780"/>
<mxPoint x="500" y="-1780"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="102" value="1..*" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" source="21" target="81" edge="1">
<mxGeometry x="-0.9332" y="-10" relative="1" as="geometry">
<mxPoint x="1570" y="-850" as="sourcePoint"/>
<mxPoint x="2070" y="-1020" as="targetPoint"/>
<Array as="points">
<mxPoint x="1559" y="-860"/>
<mxPoint x="2070" y="-860"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="103" value="" style="endArrow=open;endFill=1;endSize=12;html=1;exitX=0.002;exitY=0.873;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="22" target="94" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1300" y="-537" as="sourcePoint"/>
<mxPoint x="1390" y="-890" as="targetPoint"/>
<Array as="points">
<mxPoint x="480" y="-520"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="107" value="Association" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=1;" parent="1" vertex="1">
<mxGeometry x="780" y="-510" width="40" height="20" as="geometry"/>
</mxCell>
<mxCell id="108" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;exitX=0.581;exitY=-0.001;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.035;entryY=0.077;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="21" target="45" edge="1">
<mxGeometry x="-0.8407" y="9" relative="1" as="geometry">
<mxPoint x="1410" y="-960" as="sourcePoint"/>
<mxPoint x="1570" y="-960" as="targetPoint"/>
<mxPoint y="1" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="109" value="physics.FM_FieldQuantity" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1840" y="-800" width="240" height="270" as="geometry"/>
</mxCell>
<mxCell id="110" value="private: + ferromagnet_: const Ferromagnet* + ncomp_: int + name_: std::string + unit_: std::string + evalfunc_: FM_FieldFunc" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="109" vertex="1">
<mxGeometry y="26" width="240" height="114" as="geometry"/>
</mxCell>
<mxCell id="111" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="109" vertex="1">
<mxGeometry y="140" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="112" value="public: + clone(): FM_FieldQuantity* + ncomp(): int + system(): std::share_ptr<const System> + name(): std::string + unit(): std::string + eval(): Field + operator()(): Field" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="109" vertex="1">
<mxGeometry y="148" width="240" height="122" as="geometry"/>
</mxCell>
<mxCell id="113" value="physics.FM_ScalarQuantity" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="2160" y="-800" width="240" height="210" as="geometry"/>
</mxCell>
<mxCell id="114" value="private: + ferromagnet_: const Ferromagnet* + name_: std::string + unit_: std::string + evalfunc_: FM_ScalarFunc" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="113" vertex="1">
<mxGeometry y="26" width="240" height="94" as="geometry"/>
</mxCell>
<mxCell id="115" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="113" vertex="1">
<mxGeometry y="120" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="116" value="public: + name(): std::string + unit(): std::string + eval(): real" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="113" vertex="1">
<mxGeometry y="128" width="240" height="82" as="geometry"/>
</mxCell>
<mxCell id="119" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;entryX=0.795;entryY=-0.002;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="21" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1960" y="-800" as="sourcePoint"/>
<mxPoint x="1880" y="-890" as="targetPoint"/>
<Array as="points">
<mxPoint x="1960" y="-870"/>
<mxPoint x="1601" y="-870"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="122" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;" parent="1" source="113" edge="1">
<mxGeometry x="-0.6333" width="160" relative="1" as="geometry">
<mxPoint x="1970" y="-790" as="sourcePoint"/>
<mxPoint x="1611" y="-840" as="targetPoint"/>
<Array as="points">
<mxPoint x="2280" y="-840"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="123" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;entryX=0.908;entryY=0.996;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="49" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2000" y="-801" as="sourcePoint"/>
<mxPoint x="2131" y="-820" as="targetPoint"/>
<Array as="points">
<mxPoint x="2000" y="-950"/>
<mxPoint x="1269" y="-950"/>
<mxPoint x="1269" y="-1360"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="124" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="113" target="125" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1983.2000000000003" y="-805.0799999999999" as="sourcePoint"/>
<mxPoint x="1284.12" y="-1553.79" as="targetPoint"/>
<Array as="points">
<mxPoint x="2280" y="-940"/>
<mxPoint x="1240" y="-940"/>
<mxPoint x="1240" y="-1500"/>
<mxPoint x="1136" y="-1500"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="125" value="<p style="margin: 0px ; margin-top: 4px ; text-align: center"><i>&lt;&lt;Interface&gt;&gt;</i><br><b>core.ScalarQuantity</b></p><hr size="1"><p style="margin: 0px ; margin-left: 4px">-</p><hr size="1"><p style="margin: 0px ; margin-left: 4px">+ eval(): real<br>+ name(): std::string</p><p style="margin: 0px ; margin-left: 4px">+ unit(): std::string</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1041" y="-1480" width="190" height="140" as="geometry"/>
</mxCell>
<mxCell id="130" value="<p style="margin: 0px ; margin-top: 4px ; text-align: center"><i>&lt;&lt;Interface&gt;&gt;</i><br>timesolver.Stepper</p><hr size="1"><p style="margin: 0px ; margin-left: 4px">protected:<br style="padding: 0px ; margin: 0px">+ solver_: TimeSolver<br></p><hr size="1"><p style="margin: 0px ; margin-left: 4px">public:</p><p style="margin: 0px ; margin-left: 4px">+ step(): void<br style="padding: 0px ; margin: 0px">+ setParentTimeSolver(TimeSolver*): void<br></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1880" y="-200" width="240" height="140" as="geometry"/>
</mxCell>
<mxCell id="131" value="timesolver.RungeKuttaStepper" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1900" y="90" width="230" height="120" as="geometry"/>
</mxCell>
<mxCell id="132" value="private: + butcher_: ButcherTableau" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="131" vertex="1">
<mxGeometry y="26" width="230" height="34" as="geometry"/>
</mxCell>
<mxCell id="133" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="131" vertex="1">
<mxGeometry y="60" width="230" height="8" as="geometry"/>
</mxCell>
<mxCell id="134" value="+ nstages(): int + step(): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="131" vertex="1">
<mxGeometry y="68" width="230" height="52" as="geometry"/>
</mxCell>
<mxCell id="135" value="timesolver.RungeKuttaStageExecutor" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="2200" y="80" width="240" height="260" as="geometry"/>
</mxCell>
<mxCell id="136" value="private: + x0: Field + butcher: const ButcherTableau& + dt: const real& + x: const Variable& + noise: std::optional<Field> + k: std::vector<Field> + eq_: DynamicEquation " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="135" vertex="1">
<mxGeometry y="26" width="240" height="134" as="geometry"/>
</mxCell>
<mxCell id="137" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="135" vertex="1">
<mxGeometry y="160" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="138" value="+ setStageK(int): void + setStageX(int): void + setFinalX(): void + resetX() + getError(): real" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="135" vertex="1">
<mxGeometry y="168" width="240" height="92" as="geometry"/>
</mxCell>
<mxCell id="139" value="Friend" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.358;exitY=-0.025;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="131" target="135" edge="1">
<mxGeometry x="-0.0028" y="-10" width="160" relative="1" as="geometry">
<mxPoint x="1981" y="68" as="sourcePoint"/>
<mxPoint x="2320" y="68" as="targetPoint"/>
<Array as="points">
<mxPoint x="1982" y="60"/>
<mxPoint x="2320" y="60"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="140" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;entryX=0.532;entryY=0.999;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="130" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2008" y="90" as="sourcePoint"/>
<mxPoint x="2130" y="-10" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="143" value="1..*" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;exitX=0.845;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="16" target="31" edge="1">
<mxGeometry x="-0.9495" y="-14" relative="1" as="geometry">
<mxPoint x="1290" y="-190" as="sourcePoint"/>
<mxPoint x="1530" y="-162" as="targetPoint"/>
<Array as="points">
<mxPoint x="1286" y="-190"/>
<mxPoint x="1530" y="-190"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="144" value="timesolver.ButcherTableau" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1600" y="118" width="240" height="184" as="geometry"/>
</mxCell>
<mxCell id="145" value="public: + nodes: std::vector<real> + rkMatrix: std::vector<std::vector<real>>> + weights1: std::vector<real> + weights2: std::vector<real> + nStages: int + order1: int + order2: int " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="144" vertex="1">
<mxGeometry y="26" width="240" height="124" as="geometry"/>
</mxCell>
<mxCell id="146" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="144" vertex="1">
<mxGeometry y="150" width="240" height="8" as="geometry"/>
</mxCell>
<mxCell id="147" value="+ isConsistent(): bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="144" vertex="1">
<mxGeometry y="158" width="240" height="26" as="geometry"/>
</mxCell>
<mxCell id="148" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" source="131" target="144" edge="1">
<mxGeometry x="-0.9371" y="10" relative="1" as="geometry">
<mxPoint x="1960" y="60" as="sourcePoint"/>
<mxPoint x="1880" y="40" as="targetPoint"/>
<Array as="points">
<mxPoint x="1958" y="60"/>
<mxPoint x="1720" y="60"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="149" value="&lt;&lt;enumeration&gt;&gt;<br><b>timesolver.RKmethod</b>" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;rounded=1;" parent="1" vertex="1">
<mxGeometry x="2200" y="-200" width="140" height="120" as="geometry"/>
</mxCell>
<mxCell id="150" value="HEUN<br>BOGACKISHAMPINE<br>CASHKARP<br>FEHLBERG<br>DORMANDPRINCE" style="text;html=1;strokeColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="149" vertex="1">
<mxGeometry y="40" width="140" height="80" as="geometry"/>
</mxCell>
<mxCell id="151" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.594;entryY=0.997;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="131" target="150" edge="1">
<mxGeometry x="-0.1672" width="160" relative="1" as="geometry">
<mxPoint x="2080" y="-30" as="sourcePoint"/>
<mxPoint x="2283" y="-70" as="targetPoint"/>
<Array as="points">
<mxPoint x="2073" y="20"/>
<mxPoint x="2283" y="20"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="152" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.64;exitY=-0.008;exitDx=0;exitDy=0;entryX=0.766;entryY=1.007;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" parent="1" source="144" target="150" edge="1">
<mxGeometry x="-0.299" width="160" relative="1" as="geometry">
<mxPoint x="2082.5" y="100" as="sourcePoint"/>
<mxPoint x="2293.16" y="-70.23999999999978" as="targetPoint"/>
<Array as="points">
<mxPoint x="1754" y="40"/>
<mxPoint x="2307" y="40"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="153" value="core.CuSystem" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;sketch=0;" parent="1" vertex="1">
<mxGeometry x="1710" y="-2120" width="160" height="180" as="geometry"/>
</mxCell>
<mxCell id="154" value="public: + grid: Grid + cellsize: real3 + geometry: bool const*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="153" vertex="1">
<mxGeometry y="26" width="160" height="74" as="geometry"/>
</mxCell>
<mxCell id="155" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="153" vertex="1">
<mxGeometry y="100" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="156" value="public: + inGeometry(int3): bool + inGeometry(int): bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="153" vertex="1">
<mxGeometry y="108" width="160" height="72" as="geometry"/>
</mxCell>
<mxCell id="157" value="core.CuField" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;sketch=0;" parent="1" vertex="1">
<mxGeometry x="1950" y="-2120" width="160" height="290" as="geometry"/>
</mxCell>
<mxCell id="158" value="public: + system: const CuSystem + ncomp: const int private: + ptrs: real**" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="157" vertex="1">
<mxGeometry y="26" width="160" height="84" as="geometry"/>
</mxCell>
<mxCell id="159" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="157" vertex="1">
<mxGeometry y="110" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="160" value="public: + cellInGrid(int): bool + cellInGrid(int3): bool + cellInGeometry(int): bool + cellInGeometry(int3): bool + valueAt(int, int): real + valueAt(int3, int): real + vectorAt(int): real3 + vectorAt(int): real3 + setValueInCell(int, int, real): void + setVectorInCell(int, real3): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="157" vertex="1">
<mxGeometry y="118" width="160" height="172" as="geometry"/>
</mxCell>
<mxCell id="161" value="core.GpuBuffer<T>" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;rounded=1;sketch=0;" parent="1" vertex="1">
<mxGeometry x="1440" y="-2120" width="160" height="220" as="geometry"/>
</mxCell>
<mxCell id="162" value="private: + ptr_: T* + size_: size_t" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="161" vertex="1">
<mxGeometry y="26" width="160" height="64" as="geometry"/>
</mxCell>
<mxCell id="163" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="161" vertex="1">
<mxGeometry y="90" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="164" value="public: + size(): size_t + get(): T* + getData(): std::vector<T> + getHostCopy(): T* + recycle(): void + allocate(size_t): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="161" vertex="1">
<mxGeometry y="98" width="160" height="122" as="geometry"/>
</mxCell>
<mxCell id="170" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.583;entryY=-0.008;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="82" target="153" edge="1">
<mxGeometry x="-0.9646" y="-10" relative="1" as="geometry">
<mxPoint x="2280" y="-2180" as="sourcePoint"/>
<mxPoint x="2310" y="-2180" as="targetPoint"/>
<Array as="points">
<mxPoint x="2270" y="-2170"/>
<mxPoint x="1803" y="-2170"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="171" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.813;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.567;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="157" target="153" edge="1">
<mxGeometry x="-0.9343" y="-19" relative="1" as="geometry">
<mxPoint x="1950" y="-2150" as="sourcePoint"/>
<mxPoint x="2110" y="-2150" as="targetPoint"/>
<Array as="points">
<mxPoint x="2041" y="-2150"/>
<mxPoint x="1840" y="-2150"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="172" value="Friend" style="endArrow=open;endSize=12;dashed=1;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" source="91" target="156" edge="1">
<mxGeometry x="-0.8863" width="160" relative="1" as="geometry">
<mxPoint x="460" y="-1220" as="sourcePoint"/>
<mxPoint x="1500" y="-2181.1034314385774" as="targetPoint"/>
<Array as="points">
<mxPoint x="420" y="-1800"/>
<mxPoint x="1790" y="-1800"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="173" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=0.577;entryY=0.007;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="153" target="26" edge="1">
<mxGeometry x="-0.9767" y="10" relative="1" as="geometry">
<mxPoint x="1670" y="-2200" as="sourcePoint"/>
<mxPoint x="1007.7930529364224" y="-1810" as="targetPoint"/>
<Array as="points">
<mxPoint x="1790" y="-2160"/>
<mxPoint x="1670" y="-2160"/>
<mxPoint x="1670" y="-1840"/>
<mxPoint x="1035" y="-1840"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="174" value="" style="endArrow=open;endFill=1;endSize=12;html=1;exitX=0.625;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="135" target="144" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2350" y="50" as="sourcePoint"/>
<mxPoint x="2510" y="50" as="targetPoint"/>
<Array as="points">
<mxPoint x="2350" y="50"/>
<mxPoint x="1780" y="50"/>
<mxPoint x="1780" y="80"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="175" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" target="31" edge="1">
<mxGeometry x="-0.9371" y="10" relative="1" as="geometry">
<mxPoint x="2260" y="81" as="sourcePoint"/>
<mxPoint x="1660" y="-190" as="targetPoint"/>
<Array as="points">
<mxPoint x="2260" y="81"/>
<mxPoint x="2260" y="-20"/>
</Array>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="176" value="core.DynamicParameter<T>" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="2360" y="-1846" width="440" height="210" as="geometry"/>
</mxCell>
<mxCell id="177" value="protected: + dynamicField_: std::unique_ptr<Field> + time_dep_terms: std::vector<std::pair<std::function<T(real)>, Field>>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontStyle=1" vertex="1" parent="176">
<mxGeometry y="26" width="440" height="64" as="geometry"/>
</mxCell>
<mxCell id="178" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="176">
<mxGeometry y="90" width="440" height="8" as="geometry"/>
</mxCell>
<mxCell id="179" value="public: + addTimeDependentTerm(const std::function<T(real)>&): void + addTimeDependentTerm(const std::function<T(real)>&,const Field&): void + removeAllTimeDependentTerms(): void + isDynamic(): bool + isUniform(): bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="176">
<mxGeometry y="98" width="440" height="112" as="geometry"/>
</mxCell>
<mxCell id="180" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;" edge="1" parent="1" source="78" target="179">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2261" y="-1580" as="sourcePoint"/>
<mxPoint x="2421" y="-1580" as="targetPoint"/>
<Array as="points">
<mxPoint x="2240" y="-1610"/>
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>